Point cloud encoding and decoding method, encoder, decoder and computer storage medium

By constructing separate context models for identification and coordinate information of a single child node, the spatial correlation of point clouds is utilized, improving encoding and decoding efficiency in point cloud technologies.

CN116097651BActive Publication Date: 2024-12-27GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202080103910.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-11-25
Publication Date
2024-12-27
Estimated Expiration
2040-11-25

AI Technical Summary

Technical Problem

Current point cloud encoding and decoding technologies fail to fully utilize the spatial correlation of point clouds, leading to reduced encoding and decoding efficiency due to the limited utilization of spatial correlation in context-based adaptive binary arithmetic coding (CABAC).

Method used

Construct separate context models for the identification information and coordinate information of a single child node, determining the number of occupied child nodes and entropy encoding the identification information using a first context model, and encoding the coordinate information of the occupied child node using a second context model when only one child node is occupied.

Benefits of technology

Improves the encoding and decoding efficiency of point clouds by fully utilizing the spatial correlation, enhancing the utilization of context models for entropy encoding and decoding.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116097651B_ABST
    Figure CN116097651B_ABST
Patent Text Reader

Abstract

The embodiment of the present application discloses a point cloud encoding and decoding method, an encoder, a decoder and a computer storage medium, the method comprising: determining the number of occupied child nodes of a current node; determining the value of identification information of a single child node according to the number of occupied child nodes, performing entropy encoding on the value of the identification information using a first context model, and writing the result into a bitstream; if the value of the identification information indicates that the child nodes divided from the current node include only one occupied child node, determining the coordinate information of the occupied child node, performing entropy encoding on the coordinate information of the occupied child node using a second context model, and writing the result into a bitstream.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The embodiments of the present application relate to the field of coding and decoding technology, and in particular to a point cloud coding and decoding method, an encoder, a decoder, and a computer storage medium. Background Art

[0002] In the geometry-based point cloud compression (G-PCC) encoder framework, the geometric information of the point cloud and the attribute information corresponding to each point cloud are encoded separately. After the geometric encoding is completed, the geometric information will be reconstructed, and the encoding of the attribute information will depend on the reconstructed geometric information. Among them, the attribute information encoding is mainly for the encoding of color information, so as to transform the color information from the spatial domain to the frequency domain, obtain high-frequency coefficients and low-frequency coefficients, and finally quantize and entropy encode the coefficients to generate a binary code stream.

[0003] However, in the current related technology, a context model is constructed based on the placeholder bits of the six neighboring nodes of the current node for context-based adaptive binary arithmetic coding (CABAC). However, in this process, the encoding and decoding efficiency of the point cloud is reduced due to the failure to fully utilize the spatial correlation. Summary of the invention

[0004] The embodiments of the present application provide a point cloud encoding and decoding method, an encoder, a decoder, and a computer storage medium, which can fully utilize the spatial correlation of the point cloud, thereby improving the encoding and decoding efficiency.

[0005] The technical solution of the embodiment of the present application can be implemented as follows:

[0006] In a first aspect, an embodiment of the present application provides a point cloud encoding method, which is applied to an encoder, and the method includes:

[0007] Determine the number of occupied child nodes of the current node;

[0008] Determine a value of identification information of a single child node according to the number of occupied child nodes, perform entropy coding on the value of the identification information using a first context model, and write the entropy coding into a bitstream;

[0009] If the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, the coordinate information of the occupied sub-node is determined, the coordinate information of the occupied sub-node is entropy encoded using the second context model, and written into the bitstream.

[0010] In a second aspect, an embodiment of the present application provides a point cloud decoding method, which is applied to a decoder, and the method includes:

[0011] Parsing the bitstream using the first context model to obtain the value of identification information of a single child node of the current node;

[0012] If the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, parsing the bitstream using the second context model to obtain coordinate information of the occupied sub-node;

[0013] Based on the coordinate information of the occupied sub-nodes, placeholder bit information of the sub-nodes divided from the current node is determined.

[0014] In a third aspect, an embodiment of the present application provides an encoder, the encoder comprising a first determining unit and an encoding unit; wherein,

[0015] A first determining unit, configured to determine the number of occupied child nodes of the current node;

[0016] an encoding unit, configured to determine a value of identification information of a single child node according to the number of occupied child nodes, perform entropy encoding on the value of the identification information using a first context model, and write the entropy encoding into a bitstream;

[0017] The encoding unit is also configured to determine the coordinate information of the occupied sub-node if the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, perform entropy encoding on the coordinate information of the occupied sub-node using the second context model, and write the information into the bitstream.

[0018] In a fourth aspect, an embodiment of the present application provides an encoder, the encoder comprising a first memory and a first processor; wherein:

[0019] A first memory, for storing a computer program that can be run on the first processor;

[0020] The first processor is configured to execute the method according to the first aspect when running the computer program.

[0021] In a fifth aspect, an embodiment of the present application provides a decoder, the decoder comprising a second determination unit and a decoding unit; wherein:

[0022] A decoding unit, configured to parse the code stream using the first context model to obtain a value of identification information of a single child node of the current node;

[0023] The decoding unit is further configured to parse the bitstream using the second context model to obtain the coordinate information of the occupied subnode if the value of the identification information indicates that the subnodes divided from the current node include only one occupied subnode;

[0024] The second determining unit is configured to determine the placeholder bit information of the sub-nodes divided by the current node based on the coordinate information of the occupied sub-nodes.

[0025] In a sixth aspect, an embodiment of the present application provides a decoder, the decoder comprising a second memory and a second processor; wherein:

[0026] A second memory for storing a computer program that can be run on a second processor;

[0027] The second processor is used to execute the method described in the second aspect when running the computer program.

[0028] In a seventh aspect, an embodiment of the present application provides a computer storage medium storing a computer program, wherein the computer program implements the method described in the first aspect when executed by a first processor, or implements the method described in the second aspect when executed by a second processor.

[0029] The embodiment of the present application provides a point cloud encoding and decoding method, an encoder, a decoder, and a computer storage medium. On the encoder side, by determining the number of occupied child nodes of the current node; determining the value of identification information of a single child node according to the number of occupied child nodes, entropy encoding the value of the identification information using a first context model, and writing it into a bitstream; if the value of the identification information indicates that the child nodes divided from the current node include only one occupied child node, then determining the coordinate information of the occupied child node, entropy encoding the coordinate information of the occupied child node using a second context model, and writing it into a bitstream. On the decoder side, by parsing the bitstream using the first context model, obtaining the value of identification information of a single child node of the current node; if the value of the identification information indicates that the child nodes divided from the current node include only one occupied child node, then parsing the bitstream using the second context model, obtaining the coordinate information of the occupied child node; based on the coordinate information of the occupied child node, determining the placeholder bit information of the child nodes divided from the current node. In this way, since context models are constructed for the identification information and coordinate information of a single sub-node respectively, entropy encoding and decoding of the identification information and coordinate information based on the context model can make full use of the spatial correlation of the point cloud, thereby improving the encoding and decoding efficiency of the point cloud. BRIEF DESCRIPTION OF THE DRAWINGS

[0030] Figure 1AA schematic diagram of the framework composition of a G-PCC encoder provided for related technology;

[0031] Figure 1B A schematic diagram of the framework composition of a G-PCC decoder provided for related technology;

[0032] Figure 2 A schematic diagram of the structure of a neighbor configuration number provided for related technologies;

[0033] Figure 3 A structural diagram of the number of subnodes occupied provided for related technologies;

[0034] Figure 4 A schematic diagram of a point cloud encoding method provided in an embodiment of the present application;

[0035] Figure 5 A schematic diagram of the position structure of a current node and encoded sub-nodes provided in an embodiment of the present application;

[0036] Figure 6 A schematic diagram of a process for predicting coordinate information based on multiple encoded sub-nodes provided in an embodiment of the present application;

[0037] Figure 7 Another schematic diagram of the position structure of the current node and the encoded sub-nodes provided in an embodiment of the present application;

[0038] Figure 8 A schematic diagram of another process for predicting coordinate information based on multiple encoded sub-nodes provided in an embodiment of the present application;

[0039] Fig. 9 A schematic diagram of the position structure of another current node and encoded sub-nodes provided in an embodiment of the present application;

[0040] Fig.10 A schematic diagram of another process for predicting coordinate information based on multiple encoded sub-nodes provided in an embodiment of the present application;

[0041] Fig.11 A schematic diagram of a process for predicting identification information based on multiple encoded sub-nodes provided in an embodiment of the present application;

[0042] Fig.12 A schematic diagram of another process for predicting identification information based on multiple encoded sub-nodes provided in an embodiment of the present application;

[0043] Fig.13 A schematic diagram of the position structure of another current node and encoded sub-nodes provided in an embodiment of the present application;

[0044] Fig.14A detailed flowchart of a point cloud encoding method provided in an embodiment of the present application;

[0045] Fig.15 A schematic diagram of a flow chart of a point cloud decoding method provided in an embodiment of the present application;

[0046] Fig.16 A detailed flowchart of a point cloud decoding method provided in an embodiment of the present application;

[0047] Fig.17 A schematic diagram of the structure of an encoder provided in an embodiment of the present application;

[0048] Fig.18 A schematic diagram of a specific hardware structure of an encoder provided in an embodiment of the present application;

[0049] Fig.19 A schematic diagram of the structure of a decoder provided in an embodiment of the present application;

[0050] Fig. 20 A schematic diagram of the specific hardware structure of a decoder provided in an embodiment of the present application. DETAILED DESCRIPTION

[0051] In order to enable a more detailed understanding of the features and technical contents of the embodiments of the present application, the implementation of the embodiments of the present application is described in detail below in conjunction with the accompanying drawings. The attached drawings are for reference only and are not used to limit the embodiments of the present application.

[0052] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as those commonly understood by those skilled in the art to which this application belongs. The terms used herein are only for the purpose of describing the embodiments of this application and are not intended to limit this application.

[0053] In the following description, reference is made to “some embodiments”, which describe a subset of all possible embodiments, but it will be understood that “some embodiments” may be the same subset or different subsets of all possible embodiments and may be combined with each other without conflict.

[0054] It should be pointed out that the terms "first\second\third" involved in the embodiments of the present application are merely to distinguish similar objects and do not represent a specific ordering of the objects. It can be understood that "first\second\third" can be interchanged in a specific order or sequence where permitted, so that the embodiments of the present application described here can be implemented in an order other than that illustrated or described here.

[0055] Before further describing the embodiments of the present application in detail, the nouns and terms involved in the embodiments of the present application are explained. The nouns and terms involved in the embodiments of the present application are subject to the following interpretations.

[0056] 1) Point Cloud Compression (PCC)

[0057] 2) Geometry-based Point Cloud Compression (G-PCC)

[0058] 3) Slice

[0059] 4) Bounding box

[0060] 5) Octree

[0061] 6) Intra prediction

[0062] 7) Triangle Soup (Triangle Soup, Trisoup)

[0063] 8) Context-based Adaptive BinaryArithmetic Coding (CABAC)

[0064] 9) Block

[0065] 10) Vertex

[0066] 11) Red-Green-Blue (RGB)

[0067] 12) Luminance-Chrominance (YUV)

[0068] 13) Level of Detail (LOD)

[0069] 14) Region Adaptive Hierarchal Transform (RAHT)

[0070] 15) Look Up Table (LUT)

[0071] 16) Moving Picture Experts Group (MPEG)

[0072] 17) International Standardization Organization (ISO)

[0073] 18) International Electrotechnical Commission (IEC)

[0074] 19) Number of occupied neighbors (No)

[0075] Here, point cloud is a three-dimensional representation of the surface of an object. Point cloud (data) of the surface of an object can be collected through acquisition equipment such as photoelectric radar, lidar, laser scanner, and multi-view camera.

[0076] Point Cloud refers to a collection of massive three-dimensional points. The points in the point cloud may include the location information of the points and the attribute information of the points. For example, the location information of the points may be the three-dimensional coordinate information of the points. The location information of the points may also be referred to as the geometric information of the points. For example, the attribute information of the points may include color information and / or reflectivity, etc. For example, the color information may be information on any color space. For example, the color information may be RGB information. Among them, R represents red (Red, R), G represents green (Green, G), and B represents blue (Blue, B). For another example, the color information may be brightness and chromaticity (YcbCr, YUV) information. Among them, Y represents brightness (Luma), Cb (U) represents blue color difference, and Cr (V) represents red color difference.

[0077] For a point cloud obtained according to the principle of laser measurement, the points in the point cloud may include the three-dimensional coordinate information of the points and the laser reflection intensity (reflectance) of the points. For another example, for a point cloud obtained according to the principle of photogrammetry, the points in the point cloud may include the three-dimensional coordinate information of the points and the color information of the points. For another example, a point cloud obtained by combining the principles of laser measurement and photogrammetry may include the three-dimensional coordinate information of the points, the laser reflection intensity (reflectance) of the points, and the color information of the points.

[0078] Point clouds can be divided into the following categories according to the way they are obtained:

[0079] The first type of static point cloud: the object is stationary, and the device that obtains the point cloud is also stationary;

[0080] The second type of dynamic point cloud: the object is moving, but the device that obtains the point cloud is stationary;

[0081] The third type of dynamic point cloud acquisition: the device that acquires the point cloud is moving.

[0082] For example, point clouds can be divided into two categories according to their usage:

[0083] Category 1: Machine perception point cloud, which can be used in autonomous navigation systems, real-time inspection systems, geographic information systems, visual sorting robots, disaster relief robots, etc.

[0084] Category 2: Point cloud perceived by the human eye, which can be used in point cloud application scenarios such as digital cultural heritage, free viewpoint broadcasting, 3D immersive communication, and 3D immersive interaction.

[0085] Since point clouds are a collection of massive points, storing point clouds not only consumes a lot of memory, but is also not conducive to transmission. There is also not enough bandwidth to support direct transmission of point clouds at the network layer without compression. Therefore, point clouds need to be compressed.

[0086] Up to now, the point cloud coding framework that can compress point clouds can be the geometry-based point cloud compression (G-PCC) codec framework or the video-based point cloud compression (V-PCC) codec framework provided by the Moving Picture Experts Group (MPEG), or the AVS-PCC codec framework provided by the Audio Video Standard (AVS). The G-PCC codec framework can be used to compress the first type of static point clouds and the third type of dynamically acquired point clouds, and the V-PCC codec framework can be used to compress the second type of dynamic point clouds. The G-PCC codec framework is also called the point cloud codec TMC13, and the V-PCC codec framework is also called the point cloud codec TMC2.

[0087] It can be understood that in the point cloud G-PCC encoder framework, the input point cloud is divided into slices and then the slices are independently encoded.

[0088] like Figure 1AIn the framework of the G-PCC encoder shown, after the input point cloud is sliced, the slices are encoded independently. In the slice, 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 encoder first encodes the geometric information. The encoder performs coordinate transformation on the geometric information so that the point cloud is all contained in a bounding box; then quantization is performed. This step of quantization mainly plays a scaling role. Due to the 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 encoding of geometric information is divided into two frameworks based on the octree and the triangle face set.

[0089] In the octree-based geometric information coding framework, the bounding box is divided into 8 sub-cubes, and the placeholder bits of the sub-cubes are recorded (where 1 is non-empty and 0 is empty). The non-empty sub-cubes are divided into 8 equal parts, and the division is usually stopped when the leaf node obtained is a 1×1×1 unit cube. In this process, the spatial correlation between the node and the surrounding nodes is used to perform intra-frame prediction on the placeholder bits, and finally arithmetic coding (CABAC) is performed to generate a binary geometric bit stream, namely, a geometric code stream.

[0090] In the geometric information coding framework based on triangle face sets, octree division must also be performed first, but the difference is that the geometric information coding based on octree does not need to divide the point cloud into unit cubes with a side length of 1×1×1 step by step, but stops dividing when the side length of the block is W. Based on the surface formed by the distribution of the point cloud in each block, at most twelve vertices generated by the surface and the twelve edges of the block are obtained. Finally, the vertex coordinates of each block are encoded in turn to generate a binary geometric bit stream, that is, a geometric code stream.

[0091] After completing the geometric information encoding, the G-PCC encoder reconstructs the geometric information and uses the reconstructed geometric information to encode the attribute information of the point cloud. At present, the attribute encoding of the point cloud mainly encodes the color information of the point in the point cloud. First, the encoder 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 encoder can convert the color information from the RGB color space to the YUV color space. Then, the point cloud is recolored using the reconstructed geometric information so that the unencoded attribute information corresponds to the reconstructed geometric information. In color information encoding, there are two main transformation methods. One method is a distance-based lifting transformation that relies on LOD partitioning, and the other method is to directly perform RAHT transformation. Both methods transform the color information from the spatial domain to the frequency domain to obtain high-frequency coefficients and low-frequency coefficients. Finally, the coefficients are quantized and arithmetically encoded to generate a binary attribute bit stream, that is, an attribute code stream.

[0092] based on Figure 1A The framework of the G-PCC encoder shown in FIG. 1 can perform entropy coding based on the geometric information of the point cloud neighbor nodes. Here, a context model is constructed based on the placeholder bits of the six neighbor nodes of the current node for CABAC.

[0093] In a specific example, the specific implementation on the G-PCC encoder side is described as follows:

[0094] (1) Obtain the occupancy bits of the six neighboring nodes of the current node. The occupancy bits indicate whether there is any point occupancy in the neighboring node. If there is any point occupancy in the neighboring node, the occupancy bit is 1, otherwise the occupancy bit is 0. The neighboring configuration number (NC) can be calculated based on the occupancy bits of the neighboring nodes. The value of NC can range from 0 to 63, that is, from 000000 to 111111 in binary, such as Figure 2 As shown, it shows a schematic diagram of the structure of a neighbor configuration number provided by the related technology. Figure 2 In the figure, the black-filled node represents the current node, which has 6 neighbor nodes. If the neighbor node on the right is a little occupied, the neighbor configuration number is 1; if the neighbor node on the left is a little occupied, the neighbor configuration number is 2; if the neighbor node on the upper side is a little occupied, the neighbor configuration number is 4; if the neighbor node on the lower side is a little occupied, the neighbor configuration number is 8; if the neighbor node on the back side is a little occupied, the neighbor configuration number is 16; if the neighbor node on the front side is a little occupied, the neighbor configuration number is 32.

[0095] (2) Get the occupied bits of the 8 child nodes of the current node. If there is a point occupied in the child node, the occupied bit is 1; otherwise, if there is no point occupied in the child node, the occupied bit is 0. The number of occupied child nodes (N) is calculated based on the occupied bits of the child nodes. oc ). Among them, N oc The value of can be 1 to 8, such as Figure 3 As shown, it shows a schematic diagram of the structure of the number of sub-nodes occupied by the relevant technology. A current node can be divided into 8 sub-nodes. Figure 3 In, N oc =1, that is, among the 8 child nodes of the current node, only one child node (indicated by black filling, this child node is referred to as a single child node) has a point occupied.

[0096] (3) When NC==0 (the number of neighbor configurations is 0, that is, none of the 6 neighbor nodes is occupied), if the flag is assigned a value of 1, then N oc If flag is equal to 1 (i.e. only 1 of the 8 child nodes is occupied); if flag is assigned a value of 0, then N oc If the flag is not equal to 1 (that is, more than one of the eight child nodes is occupied), the flag is adaptively binary arithmetic encoded and written into the bitstream.

[0097] (4) When NC==0 and flag==1 (no neighbor node among the 6 neighbor nodes is occupied, and only one child node among the 8 child nodes is occupied), the coordinate information of the only occupied child node within the current node is calculated based on the occupied bits of the 8 child nodes of the current node (i.e., XYZ coordinate values, which can be 0, 1, or Figure 3 For example, the XYZ coordinate value is (1, 0, 0), and the XYZ coordinate values ​​are respectively coded with equal probability using static binary arithmetic and written into the bitstream.

[0098] (5) When NC==0 and flag==0 (no neighbor node among the 6 neighbor nodes is occupied, and more than one child node among the 8 child nodes is occupied) or when NC>0 (one of the 6 neighbor nodes is occupied), CABAC is performed on the occupied bits of the 8 child nodes of the current node and written into the bitstream.

[0099] like Figure 1BIn the framework of the G-PCC decoder shown, after obtaining the binary code stream, the geometric bit stream and attribute bit stream in the binary code stream are decoded independently. When decoding the geometric bit stream, the geometric information of the point cloud is obtained through arithmetic decoding-octree synthesis-surface fitting-reconstruction of geometry-inverse coordinate transformation; when decoding the attribute bit stream, the attribute information of the point cloud is obtained through arithmetic decoding-inverse quantization-LOD-based inverse lifting or RAHT-based inverse transformation-inverse color conversion, and the three-dimensional image model of the point cloud data to be encoded is restored based on the geometric information and attribute information.

[0100] Among them, based on Figure 1B The framework of the G-PCC decoder shown can also perform entropy decoding based on the geometric information of the point cloud neighbor nodes. Here, the context model is still constructed based on the placeholder bits of the six neighbor nodes of the current node for CABAC decoding.

[0101] In a specific example, the specific implementation on the G-PCC decoder side is described as follows:

[0102] (1) Obtain the occupied bits of the six neighboring nodes of the current node. That is, if there is an occupied point in the neighboring node, the occupied bit is 1, otherwise it is 0, and NC is calculated based on this.

[0103] (2) When NC == 0 (the number of neighbor configurations is 0, that is, none of the 6 neighbor nodes is occupied), adaptive binary arithmetic decoding is used to obtain the flag.

[0104] (3) When NC==0 and flag==1 (no neighbor node among the 6 neighbor nodes is occupied, and only one child node among the 8 child nodes is occupied), the XYZ coordinate value of the only occupied child node in the current node is obtained by using equal probability static binary arithmetic decoding, and the occupant bits of the 8 child nodes are restored.

[0105] (4) When NC==0 and flag==0 (no neighbor node among the 6 neighbor nodes is occupied, and more than one child node among the 8 child nodes is occupied) or when NC>0 (one of the 6 neighbor nodes is occupied), CABAC is used to decode and obtain the occupancy bits of the 8 child nodes of the current node.

[0106] Taking the geometric syntax of an octree node as an example, Table 1 gives an example of a syntax element and a semantic description provided by the related art. The specific description is as follows.

[0107] Table 1

[0108]

[0109]

[0110] In the G-PCC Draft International Standards (DIS), the syntax is described as "The variable OccupancyIdxMaybePresent specifies when single_occupancy_flagis present in the octree node syntax".

[0111] In an embodiment of the present application, the identification information OccupancyIdxMaybePresent indicates whether there is a bit field corresponding to the syntax element single_child_flag in the code stream. A specific implementation is that the identification information OccupancyIdxMaybePresent indicates whether there is a bit field corresponding to the syntax element single_child_flag in the data unit corresponding to the octree node of the code stream. When the value of the identification information OccupancyIdxMaybePresent is equal to 1, there is a bit field corresponding to the syntax element single_child_flag in the code stream. Here, a method for determining the value of the identification information OccupancyIdxMaybePresent is shown in the following pseudo code:

[0112] numPlanarAxes=IsPlanar[0]+IsPlanar[1]+IsPlanar[2];

[0113] numNonPlanarAxes=IsNotPlanar[0]+IsNotPlanar[1]+IsNotPlanar[2];

[0114] OccupancyIdxMaybePresent=numPlanarAxes<3||(!NeighPattern&&!numNonPlanarAxes);

[0115] Among them, for IsPlanar[k], k takes values ​​of 0, 1, and 2, which represent the directions of the x, y, and z coordinate axes, respectively. Specifically, IsPlanar[k] is 1, which means that when the plane coding mode conditions are qualified, and the sub-node positions divided by the current node form a plane perpendicular to the coordinate axis, the plane coding mode is adopted; IsPlanar[k] is 0, which means other situations, including: when the plane coding mode conditions are qualified, the sub-node positions divided by the current node occupy two planes perpendicular to the coordinate axis, or the plane coding mode conditions are unqualified. Here, numPlanarAxes indicates the number of coordinate axis directions using the plane coding mode when the plane coding mode conditions are qualified.

[0116] For IsNotPlanar[k], k takes values ​​of 0, 1, and 2, which represent the x, y, and z coordinate axis directions, respectively. Specifically, IsNotPlanar[k] is 1, indicating that when the plane coding mode conditions are qualified, and the child node positions of the current node occupy two planes perpendicular to the coordinate axis, the plane coding mode is not adopted; IsNotPlanar[k] is 0, indicating other situations, including: when the plane coding mode conditions are qualified, the child node positions of the current node form a plane perpendicular to the coordinate axis, or the plane coding mode conditions are unqualified. Here, numNonPlanarAxes indicates the number of coordinate axis directions in which the plane coding mode is not adopted when the plane coding mode conditions are qualified.

[0117] In addition, numPlanarAxes<3 means that when the plane coding mode condition is qualified, not all x, y, and z coordinate axis directions use the plane coding mode; (!NeighPattern&&!numNonPlanarAxes) means that the number of neighbor configurations is 0, that is, no neighbor node is occupied among the 6 neighbor nodes, and when the plane coding mode condition is qualified in the x, y, and z coordinate axis directions, the sub-node positions divided by the current node form a plane perpendicular to the coordinate axis, or the plane coding mode condition is unqualified. Here, "numPlanarAxes<3" and "(!NeighPattern&&!numNonPlanarAxes)" are ORed to determine the value of the identification information OccupancyIdxMaybePresent.

[0118] Exemplarily, the encoder uses the above method to determine the value of the identification information OccupancyIdxMaybePresent. When the encoder determines that the value of OccupancyIdxMaybePresent is equal to 1, the encoder uses the entropy coding method corresponding to ae(v) to write the value of single_child_flag into the data unit in the bitstream; when the encoder determines that the value of OccupancyIdxMaybePresent is equal to 0, the encoder does not write the value of single_child_flag into the data unit in the bitstream. Wherein, ae(v) indicates that the syntax unit is encoded using a context-adaptive arithmetic entropy coding method, and the data unit here can be a data unit corresponding to an octree node, for example, a geometric information data unit of an octree node. The encoder decodes the point cloud bitstream according to single_child_flag, for example, encodes the geometric information of the octree node; for example, encodes the attribute information of the point cloud data.

[0119] Exemplarily, the decoder uses the above method to determine the value of the identification information OccupancyIdxMaybePresent. When the decoder determines that the value of OccupancyIdxMaybePresent is equal to 1, the decoder uses the entropy decoding method corresponding to ae(v) to parse the bit field corresponding to single_child_flag from the data unit of the code stream to determine the value of single_child_flag; when the decoder determines that the value of OccupancyIdxMaybePresent is equal to 0, the decoder determines that there is no bit field corresponding to single_child_flag in the data unit of the code stream. In this case, the decoder does not need to parse the value of single_child_flag of the code stream. Optionally, the decoder sets the value of single_child_flag to a default value of 0. Wherein, ae(v) indicates that the bit field corresponding to the syntax unit in the code stream is parsed using a context-adaptive arithmetic entropy decoding method; the data unit here may be a data unit corresponding to an octree node, for example, a geometric information data unit of an octree node. The decoder decodes the point cloud code stream according to single_child_flag, for example, decodes the geometric information of the octree node; for example, decodes the attribute information of the point cloud data.

[0120] In addition, for the syntax element single_child_flag, when the value of single_child_flag is equal to 1, it means that the current node only includes one child node; when the value of single_child_flag is equal to 0, it means that the current node may include multiple child nodes. In addition, when there is no child node occupied in the current node, the value of single_child_flag will be inferred to be 0. In other words, flag 1 means N oc When it is equal to 1 (that is, only one of the 8 child nodes is occupied), flag is 0, which means N oc The case where the value is not equal to 1 (that is, more than one of the 8 child nodes is occupied).

[0121] For the syntax element occupancy_idx[i], occupancy_idx[i] represents the i-th bit of the octree child node traversal order index of the single child node in the current node. Among them, the 0th bit represents the coordinate value of the single child node in the z direction in the current node (0 or 1), the 1st bit represents the coordinate value of the single child node in the y direction in the current node (0 or 1), and the 2nd bit represents the coordinate value of the single child node in the x direction in the current node (0 or 1).

[0122] However, in the current related technology, only when NC==0 and N oc = = 1 (no neighbor node among the 6 neighbor nodes is occupied, and only one child node among the 8 child nodes is occupied), the XYZ coordinate value of the only occupied child node in the current node is encoded and decoded (the values ​​can be 0, 1, or Figure 3 For example, the method of XYZ coordinate value (1, 0, 0) is referred to as "single child node coordinate value encoding and decoding method". Since this method does not fully utilize the spatial correlation, the encoding and decoding efficiency is reduced.

[0123] An embodiment of the present application provides a point cloud encoding method, the basic idea of ​​which is: determining the number of occupied child nodes of the current node; determining the value of the identification information of a single child node according to the number of occupied child nodes, entropy encoding the value of the identification information using a first context model, and writing it into a bitstream; if the value of the identification information indicates that the child nodes divided by the current node include only one occupied child node, then determining the coordinate information of the occupied child node, entropy encoding the coordinate information of the occupied child node using a second context model, and writing it into a bitstream. In this way, since context models are constructed for the identification information and coordinate information of a single child node respectively, entropy encoding the identification information and coordinate information based on the context model can make full use of the spatial correlation of the point cloud, thereby improving the encoding and decoding efficiency of the point cloud.

[0124] The embodiments of the present application will be described in detail below with reference to the accompanying drawings.

[0125] In one embodiment of the present application, the point cloud encoding method provided in the embodiment of the present application is applied to a video encoding device, namely a G-PCC encoder, which may also be referred to as an encoder. The function implemented by the method can be implemented by calling a computer program by a first processor in the encoder, and of course the computer program can be stored in a first memory. It can be seen that the encoder includes at least a first processor and a first memory.

[0126] See also Figure 4 , which shows a schematic diagram of a process of a point cloud encoding method provided by an embodiment of the present application. Figure 4 As shown, the method may include:

[0127] S401: Determine the number of occupied child nodes of the current node.

[0128] It should be noted that in a point cloud, a point can be all points in the point cloud or some points in the point cloud, and these points are relatively concentrated in space.

[0129] It should also be noted that based on Figure 1A The framework of the G-PCC encoder is shown. The method of the embodiment of the present application is mainly applied to the "context modeling" part, which optimizes the geometric information entropy coding based on point cloud neighbor nodes in the current related technology to improve the utilization of spatial correlation.

[0130] In the embodiment of the present application, the number of occupied child nodes (Number of occupied child nodes, N oc ) is used to indicate whether any of the multiple child nodes of the current node is occupied. Here, in some embodiments, determining the number of occupied child nodes of the current node may include:

[0131] Obtaining placeholder bit information of child nodes divided from the current node;

[0132] The number of occupied subnodes is determined according to the occupied bit information of the subnodes.

[0133] Here, the sub-nodes divided from the current node usually include 8 sub-nodes, that is, the current node can be divided into 8 sub-nodes, as shown in the following figure: Figure 3 shown.

[0134] It should also be noted that the placeholder bit information of the child node is determined according to whether there is a point occupied in the child node. In a specific embodiment, the obtaining of the placeholder bit information of the child node divided by the current node may include:

[0135] If there is a point occupied in the child node, determining that the occupied bit information of the child node is equal to a first value;

[0136] If there is no point occupied in the child node, it is determined that the placeholder bit information of the child node is equal to the second value.

[0137] In the embodiment of the present application, the first value may be 1 and the second value may be 0; or, the first value may be 0 and the second value may be 1. In a specific example, the first value may be set to 1 and the second value may be set to 0, but this is not specifically limited.

[0138] That is to say, taking the first value as 1 and the second value as 0 as an example, if a certain child node is occupied, then the placeholder bit information of the child node is equal to 1; if a certain child node is not occupied, then the placeholder bit information of the child node is equal to 0. In this way, the number of occupied child nodes can be calculated for the placeholder bit information of the 8 child nodes of the current node. For example, if only one of the 8 child nodes is occupied, then the calculated number of occupied child nodes is equal to 1; conversely, if more than one of the 8 child nodes is occupied, then the calculated number of occupied child nodes is not equal to 1.

[0139] In other words, the number of occupied child nodes can reflect whether there are any child nodes occupied in the current node. In some embodiments, the method may further include:

[0140] If the number of occupied child nodes is equal to the first threshold, it is determined that the child nodes divided by the current node include only one occupied child node;

[0141] If the number of occupied sub-nodes is not equal to the first threshold, it is determined that the sub-nodes divided by the current node include at least two occupied sub-nodes.

[0142] In the embodiment of the present application, the value range of the number of occupied subnodes is 1 to 8, and the first threshold value can be set to 1. That is, if the number of occupied subnodes is equal to 1, it can be indicated that only one subnode in the current node is occupied, that is, the subnodes divided from the current node include only one occupied subnode; if the number of occupied subnodes is not equal to 1, it can be indicated that more than one subnode in the current node is occupied, that is, the subnodes divided from the current node include at least two occupied subnodes.

[0143] S402: Determine a value of identification information of a single child node according to the number of occupied child nodes, perform entropy coding on the value of the identification information using a first context model, and write the entropy coding into a bitstream.

[0144] It should be noted that after the value of the identification information is determined according to the number of occupied sub-nodes, on the one hand, the value of the identification information can be entropy encoded using the first context model; on the other hand, when the value of the identification information indicates that the sub-nodes divided by the current node include only one occupied sub-node, the coordinate information of the occupied sub-node can be entropy encoded using the second context model.

[0145] It should also be noted that the determination of identification information (such as a flag) is mainly related to the number of occupied child nodes. In a specific embodiment, the determination of the value of the identification information according to the number of occupied child nodes may include:

[0146] If the number of occupied child nodes is equal to 1, determining that the value of the identification information is a first identification value;

[0147] If the number of occupied child nodes is not equal to 1, the value of the identification information is determined to be a second identification value.

[0148] In another specific embodiment, determining the value of the identification information according to the number of occupied child nodes includes:

[0149] If the sub-nodes divided from the current node include only one occupied sub-node, determining the value of the identification information to be the first identification value;

[0150] If the sub-nodes divided from the current node include at least two occupied sub-nodes, it is determined that the value of the identification information is the second identification value.

[0151] In the embodiment of the present application, the first identification value may be 1, and the second identification value may be 0; or, the first identification value may be 0, and the second identification value may be 1. In a specific example, the first identification value may be set to 1, and the second identification value may be set to 0, but this is not specifically limited.

[0152] It should be noted that the value of the identification information can also be the number of occupied child nodes. For example, if there is no occupied child node among the child nodes divided by the current node, the value of the identification information is equal to 0; if there is only one occupied child node among the child nodes divided by the current node, the value of the identification information is equal to 1; if there are at least two occupied child nodes among the child nodes divided by the current node, the value of the identification information is greater than or equal to 2.

[0153] In this way, after the value of the identification information is determined, the value of the identification information can be entropy encoded using the first context model and written into the bitstream.

[0154] S403: If the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, determine the coordinate information of the occupied sub-node, perform entropy encoding on the coordinate information of the occupied sub-node using the second context model, and write the information into the bitstream.

[0155] It should be noted that when the value of the identification information indicates that the sub-nodes divided by the current node include only one occupied sub-node, it is necessary to determine the coordinate information of the occupied sub-node. Specifically, in some embodiments, determining the coordinate information of the occupied sub-node may include:

[0156] Obtaining placeholder bit information of child nodes divided from the current node;

[0157] The coordinate information of the occupied subnode is calculated based on the placeholder bit information of the subnode.

[0158] That is, after obtaining the placeholder bit information of the 8 subnodes divided by the current node, the coordinate information of the occupied subnode can be calculated based on the placeholder bit information of the 8 subnodes. Then, the coordinate information of the occupied subnode is entropy encoded using the second context model and written into the bitstream.

[0159] It should also be noted that, due to the difference in the number of neighbor configurations, the entropy encoding method used for the coordinate information of the occupied child node may be different. Therefore, the embodiment of the present application also needs to determine the number of neighbor configurations of the current node. In some embodiments, the method may also include:

[0160] Determine the number of neighbor configurations of the current node;

[0161] If the neighbor configuration number indicates that a neighbor node in the current node is occupied, then when the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, the step of entropy encoding the coordinate information of the occupied sub-node using the second context model is executed.

[0162] Furthermore, after determining the number of neighbor configurations of the current node, the method may further include:

[0163] If the neighbor configuration number indicates that no neighbor node in the current node is occupied, then when the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, the step of performing equal-probability static binary arithmetic coding on the coordinate information of the occupied sub-node is performed.

[0164] In an embodiment of the present application, a neighbor configuration number (NC) is used to indicate whether any neighbor node among multiple neighbor nodes of the current node is occupied. Specifically, in some embodiments, determining the neighbor configuration number of the current node may include:

[0165] Obtaining placeholder bit information of neighboring nodes of the current node;

[0166] The neighbor configuration number is determined according to the placeholder bit information of the neighbor node.

[0167] Here, the neighbor nodes may include at least one of the following: the neighbor node connected to the left side of the current node, the neighbor node connected to the right side of the current node, the neighbor node connected to the upper side of the current node, the neighbor node connected to the lower side of the current node, the neighbor node connected to the rear side of the current node, and the neighbor node connected to the front side of the current node. That is to say, the neighbor nodes of the current node usually include 6, as follows: Figure 2 shown.

[0168] It should also be noted that the placeholder bit information of the neighboring node is determined according to whether there is a point occupied in the neighboring node. In a specific embodiment, the obtaining of the placeholder bit information of the neighboring node of the current node may include:

[0169] If there is a point occupancy in the neighboring node, determining that the occupied bit information of the neighboring node is equal to a first value;

[0170] If there is no point occupancy in the neighboring node, it is determined that the occupied bit information of the neighboring node is equal to the second value.

[0171] In the embodiment of the present application, the first value may be 1 and the second value may be 0; or, the first value may be 0 and the second value may be 1. In a specific example, the first value may be set to 1 and the second value may be set to 0, but this is not specifically limited.

[0172] That is to say, taking the first value as 1 and the second value as 0 as an example, if a certain neighbor node is occupied, then the placeholder bit information of the neighbor node is equal to 1; if a certain neighbor node is not occupied, then the placeholder bit information of the neighbor node is equal to 0. In this way, the number of neighbor configurations can be calculated for the placeholder bit information of the 6 neighbor nodes of the current node. For example, if no neighbor node among the 6 neighbor nodes is occupied, it is represented by 000000 in binary, and the calculated number of neighbor configurations is equal to 0; conversely, if one of the 6 neighbor nodes is occupied, it is represented by 000001~111111 in binary, and the calculated number of neighbor configurations is 1~63, that is, the number of neighbor configurations at this time is greater than 0.

[0173] In other words, the number of neighbor configurations can reflect whether any neighbor node in the current node is occupied. In some embodiments, the method may further include:

[0174] If the number of neighbor configurations is greater than a second threshold, determining that a neighbor node in the current node is occupied;

[0175] If the number of neighbor configurations is equal to the second threshold, it is determined that no neighbor node in the current node is occupied.

[0176] In the embodiment of the present application, the value range of the neighbor configuration number is 0 to 63, and the second threshold value can be set to 0. That is, if the neighbor configuration number is greater than 0, it can be indicated that a neighbor node is occupied in the current node; if the neighbor configuration number is equal to 0, it can be indicated that no neighbor node is occupied in the current node.

[0177] It should also be understood that before step S402, the method may further include: determining a first context model and a second context model. Here, the first context model may be used to predict the identification information, and the second context model may be used to predict the coordinate information.

[0178] In a specific embodiment, determining the first context model and the second context model may include:

[0179] Determine the value of the single child node enable variable;

[0180] When the value of the single child node enable variable indicates that the current node is in a single child node enable state, the first context model and the second context model are determined.

[0181] It should be noted that the embodiment of the present application introduces a new variable, namely, a single child node enable variable (which can be represented by ctxSingleChildEnabled). Among them, when the value of the single child node enable variable indicates that the current node is in a single child node enabled state, it is necessary to determine the first context model and the second context model at this time, so as to subsequently use the first context model and the second context model for entropy coding.

[0182] It should also be noted that the single child node enabled variable and the number of nodes (denoted by N all ) and the number of single child nodes (denoted by N singe Specifically, in some embodiments, determining the value of a single child node enabling variable may include:

[0183] Determine the number of nodes and the number of single child nodes;

[0184] Performing a division operation on the number of the single sub-nodes and the number of the nodes to obtain a first ratio value;

[0185] comparing the first ratio value with a preset threshold;

[0186] If the first ratio value is greater than the preset threshold, determining that the value of the single sub-node enabling variable is a third value;

[0187] If the first ratio value is less than or equal to the preset threshold, the value of the single sub-node enabling variable is determined to be a fourth value.

[0188] In the embodiment of the present application, the third value may be 1 and the fourth value may be 0; or, the third value may be 0 and the fourth value may be 1. In a specific example, the third value may be set to 1 and the fourth value may be set to 0, but this is not specifically limited.

[0189] It should be noted that the preset threshold represents a preset empirical value, which can be used as a measure for determining the value of a single child node enabling variable. Here, the value range of the preset threshold is within [0, 1], and is specifically adjusted according to actual conditions. In the embodiment of the present application, the preset threshold can be set to 0.5, but this is not specifically limited here.

[0190] It should also be noted that the single child node enable variable can be represented by ctxSingleChildEnabled. The determination of the single child node enable variable can be implemented according to the following formula, as shown below:

[0191]

[0192] Among them, N singe ÷N allIndicates the first ratio value. At this time, if the first ratio value is greater than 0.5, the value of ctxSingleChildEnabled is 1; otherwise, if the first ratio value is less than or equal to 0.5, the value of ctxSingleChildEnabled is 0.

[0193] Furthermore, in some embodiments, the method may also include:

[0194] If the value of the single child node enable variable is 1, it is determined that the current node is in a single child node enable state;

[0195] If the value of the single child node enable variable is 0, it is determined that the current node is in a single child node disabled state.

[0196] That is to say, if ctxSingleChildEnabled=1, the current node is in a single child node enabled state, and the point cloud encoding method described in the embodiment of the present application can be executed at this time; if ctxSingleChildEnabled=0, the current node is in a single child node disabled state, and the point cloud encoding method of the related technology can be executed at this time, that is, CABAC is performed on the placeholder bits of the 8 child nodes of the current node and written into the bit stream.

[0197] It should also be noted that N in the embodiments of the present application is singe and N all In some embodiments, the method may further include:

[0198] Perform octree partitioning on the input point cloud to obtain an octree of K layers, where K is an integer greater than 0;

[0199] When entering the i-th layer of the octree, the initial value of the number of nodes is set to 0, the initial value of the number of single child nodes is set to 0, and the initial value of the single child node enable variable is set to 0; wherein i is an integer greater than or equal to 0 and less than K.

[0200] Furthermore, the determining the number of nodes and the number of single sub-nodes may include:

[0201] Based on the encoded nodes in the i-th layer, obtaining the number of nodes;

[0202] Determine the encoded nodes including only one occupied child node from the encoded nodes, and obtain the number of single child nodes.

[0203] It should be noted that the number of nodes and the number of single child nodes are both coded nodes in the i-th layer. For the number of single child nodes, determining the coded nodes including only one occupied child node from the coded nodes to obtain the number of single child nodes may include:

[0204] In the encoded node, determining whether the sub-nodes divided from the encoded node include only one occupied sub-node;

[0205] If the judgment result is yes, then the number of the single child node is increased by 1 to update the number of the single child node;

[0206] If the judgment result is no, the number of the single child node is maintained unchanged.

[0207] In other words, after the input point cloud is divided into octrees, a K-layer octree can be obtained. When entering the i-th layer of the octree, the number of nodes (N all ), the number of single child nodes (N singe ) and the value of the single child node enable variable (ctxSingleChildEnabled), that is, the value N all =0,N singe = 0, ctxSingleChildEnabled = 0. Then for the i-th layer, after the j-th node in the i-th layer has completed the point cloud encoding, N can be updated all =N all +1, that is, the number of nodes represents the number of encoded nodes. If the sub-nodes of the j-th node division include only one occupied sub-node (that is, N oc =1), then update N singe =N singe +1, that is, the number of single child nodes indicates the number of coded nodes that are determined to include only one occupied child node in the coded nodes. When j is less than N, j=j+1 is updated, and the step of reading the jth node of the i-th layer is continued until all nodes in the i-th layer have been processed, j is an integer greater than or equal to 0 and less than N, and N is the total number of nodes in the i-th layer; then the i+1th layer of the octree is entered until all K layers of the octree have been processed.

[0208] In this way, after determining N singe and N all Afterwards, the value of the single child node enabling variable (ctxSingleChildEnabled) can be calculated in combination with formula (1) to determine whether the first context model and the second context model need to be used for entropy coding in the future.

[0209] Specifically, in the embodiment of the present application, if the neighbor configuration number indicates that the current node has a neighbor node occupied, then NC>0; if the value of the single child node enable variable indicates that the current node is in a single child node enabled state, then ctxSingleChildEnabled=1. In other words, the embodiment of the present application proposes a new geometric information entropy coding based on point cloud neighbor nodes to expand the use of single child node coordinate value coding to N oc = = 1 (only 1 child node among 8 child nodes is occupied) but NC>0 (one neighbor node among 6 neighbor nodes is occupied), and the context modeling method is adopted. In other words, when the neighbor configuration number indicates that a neighbor node in the current node is occupied (i.e. NC>0) and ctxSingleChildEnabled=1, it is necessary to construct a context model, that is, determine the first context model and the second context model, so as to use the first context model and the second context model for entropy coding.

[0210] The determination of the first context model and the second context model will be described in detail below.

[0211] In some embodiments, when the value of the single child node enable variable indicates that the current node is in a single child node enable state, the method may further include:

[0212] Determine the prediction identification information of the current node, and determine the index sequence value of the first context model according to the prediction identification information;

[0213] The first context model is determined according to the index sequence number value of the first context model.

[0214] In a specific embodiment, determining the first context model according to the index sequence value of the first context model may include:

[0215] Constructing at least one first candidate context model; wherein different first candidate context models correspond to different index numbers;

[0216] According to the index number value of the first context model, a first candidate context model corresponding to the index number value is selected from the at least one first candidate context model, and the selected first candidate context model is determined as the first context model.

[0217] It should be noted that the embodiment of the present application can pre-construct at least one first candidate context model, and different first candidate context models correspond to different index numbers. In this way, after determining the index number value of the first context model according to the predicted identification information of the current node, the first candidate context model corresponding to the index number value can be selected from the at least one first candidate context model to determine it as the first context model.

[0218] In some embodiments, when the value of the single child node enable variable indicates that the current node is in a single child node enable state, the method may further include:

[0219] Determine the predicted coordinate information of the current node, and determine the index sequence value of the second context model according to the predicted coordinate information;

[0220] The second context model is determined according to the index sequence number value of the second context model.

[0221] In a specific embodiment, determining the second context model according to the index sequence value of the second context model may include:

[0222] Constructing at least one second candidate context model; wherein different second candidate context models correspond to different index numbers;

[0223] According to the index number value of the second context model, a second candidate context model corresponding to the index number value is selected from the at least one second candidate context model, and the selected second candidate context model is determined as the second context model.

[0224] It should be noted that the embodiment of the present application can pre-construct at least one second candidate context model, and different second candidate context models also correspond to different index numbers. In this way, after determining the index number value of the second context model according to the predicted coordinate information of the current node, the second candidate context model corresponding to the index number value can be selected from the at least one second candidate context model to determine it as the second context model.

[0225] Wherein, with respect to determining the index number value of the second context model, in some embodiments, determining the predicted coordinate information of the current node, and determining the index number value of the second context model according to the predicted coordinate information may include:

[0226] Obtaining placeholder bit information of an encoded sub-node adjacent to the current node;

[0227] Determine predicted coordinate values ​​in three coordinate directions according to the placeholder bit information of the encoded sub-nodes adjacent to the current node;

[0228] Determine the index sequence value of the second context model according to the predicted coordinate values ​​of the three coordinate directions.

[0229] It should be noted that the predicted coordinate information may include predicted coordinate values ​​in a first coordinate direction, predicted coordinate values ​​in a second coordinate direction, and predicted coordinate values ​​in a third coordinate direction. The first coordinate direction may be an x-axis coordinate direction, the second coordinate direction may be a y-axis coordinate direction, and the third coordinate direction may be a z-axis coordinate direction.

[0230] Thus, in the embodiment of the present application, the index number value of the second context model can also be divided into: the index number value of the second context model in the first coordinate direction, the index number value of the second context model in the second coordinate direction, and the index number value of the second context model in the third coordinate direction. Therefore, in some embodiments, determining the index number value of the second context model according to the predicted coordinate values ​​in the three coordinate directions may include:

[0231] According to the predicted coordinate values ​​of the three coordinate directions, obtaining a first-first predicted value and a first-second predicted value in the first coordinate direction, a second-first predicted value and a second-second predicted value in the second coordinate direction, and a third-first predicted value and a third-second predicted value in the third coordinate direction;

[0232] Determine an index sequence value of the second context model in the first coordinate direction according to the first-first prediction value and the first-second prediction value in the first coordinate direction;

[0233] Determine the index number value of the second context model in the second coordinate direction according to the second first prediction value and the second second prediction value in the second coordinate direction;

[0234] Determine the index sequence value of the second context model in the third coordinate direction according to the third-first prediction value and the third-second prediction value in the third coordinate direction.

[0235] It should be noted that, first, the first predicted value in the first coordinate direction, the second predicted value in the second coordinate direction, and the third predicted value in the third coordinate direction need to be determined based on the placeholder bit information of the encoded sub-nodes adjacent to the current node. Specifically, in some embodiments, determining the predicted coordinate values ​​in the three coordinate directions based on the placeholder bit information of the encoded sub-nodes adjacent to the current node may include:

[0236] Determine the placeholder bit information of M coded subnodes connected to the current node in a first coordinate direction from the placeholder bit information of the coded subnodes adjacent to the current node, and determine a first predicted coordinate value in the first coordinate direction according to the placeholder bit information of the M coded subnodes connected to the current node in the first coordinate direction;

[0237] Determine the placeholder bit information of M coded subnodes connected to the current node in a second coordinate direction from the placeholder bit information of the coded subnodes adjacent to the current node, and determine a second-first predicted coordinate value in the second coordinate direction according to the placeholder bit information of the M coded subnodes connected to the current node in the second coordinate direction;

[0238] Determine the placeholder bit information of M encoded sub-nodes connected to the current node in a third coordinate direction from the placeholder bit information of the encoded sub-nodes adjacent to the current node, and determine the third-first predicted coordinate value of the third coordinate direction according to the placeholder bit information of the M encoded sub-nodes connected to the current node in the third coordinate direction; wherein M is an integer greater than 0.

[0239] In a specific implementation manner, determining the first predicted coordinate value in the first coordinate direction according to the placeholder bit information of the M encoded sub-nodes connected to the current node in the first coordinate direction may include:

[0240] Determine a first direction value according to the occupied bit information of the M encoded sub-nodes connected to the current node in the first coordinate direction; wherein the first direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the first coordinate direction;

[0241] A first predicted value of the first coordinate direction is determined according to a comparison result between the first direction value and a preset direction value.

[0242] In another specific implementation, determining the second-first predicted coordinate value in the second coordinate direction according to the placeholder bit information of the M encoded sub-nodes connected to the current node in the second coordinate direction may include:

[0243] Determine a second direction value according to the occupied bit information of the M encoded sub-nodes connected to the current node in the second coordinate direction; wherein the second direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the second coordinate direction;

[0244] According to the comparison result between the second direction value and the preset direction value, a second-first prediction value of the second coordinate direction is determined.

[0245] In yet another specific implementation, determining the third-first predicted coordinate value in the third coordinate direction according to the placeholder bit information of the M encoded sub-nodes connected to the current node in the third coordinate direction may include:

[0246] Determine a third direction value according to the occupied bit information of the M encoded sub-nodes connected to the current node in the third coordinate direction; wherein the third direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the third coordinate direction;

[0247] According to the comparison result between the third direction value and the preset direction value, a third first prediction value of the third coordinate direction is determined.

[0248] For example, assuming that M is equal to 4, Figure 5 As shown, the current node is indicated by black filling, and the first direction value (with O ncx The second direction value (indicated by 0) is the placeholder bit information of the four encoded child nodes connected to the current node in the negative direction of the x-axis, that is, whether there is a point occupied in the four child nodes; ncy The third direction value (indicated by 0) is the placeholder bit information of the four encoded child nodes connected to the current node in the negative direction of the y-axis, that is, whether there is a point occupied in the four child nodes; ncz (represents) is the placeholder bit information of the four encoded child nodes connected to the current node in the negative direction of the z-axis, that is, whether any of the four child nodes is occupied.

[0249] Here, if any of the four encoded child nodes in the negative direction of the x-axis is occupied, the value is assigned to O. ncx =1; otherwise, the value is O ncx = 0. If any of the four encoded child nodes in the negative direction of the y-axis is occupied, the value is assigned to 0 ncy =1; otherwise, the value is O ncy = 0. If any of the four encoded child nodes in the negative direction of the z-axis is occupied, the value is assigned to 0 ncz =1; otherwise, the value is O ncz =0.

[0250] So, according to O ncx , O ncy and O ncz To predict the predicted coordinate values ​​in three coordinate directions (x-axis direction, y-axis direction and z-axis direction), two context models can be constructed respectively, as shown below:

[0251] For the syntax element occupancy_idx[2]:

[0252]

[0253] For the syntax element occupancy_idx[1]:

[0254]

[0255] For the syntax element occupancyidx[0]:

[0256]

[0257] See also Figure 6 , which shows a schematic diagram of a process for predicting coordinate information based on multiple encoded sub-nodes provided by an embodiment of the present application. Figure 6 As shown, the process may include:

[0258] S601: Obtaining placeholder bit information of 12 encoded child nodes connected to the current node;

[0259] S602: Confirmation ncx , O ncy and O ncz ;

[0260] S603: Determination O ncx = = 0;

[0261] S604: If the judgment result is no, then X 0 =0;

[0262] S605: If the judgment result is yes, then X 0 =1;

[0263] S606: Determination O ncy = = 0;

[0264] S607: If the judgment result is no, then Y 0 =0;

[0265] S608: If the judgment result is yes, then Y 0 =1;

[0266] S609: Determination O ncz = = 0;

[0267] S610: If the judgment result is no, then Z 0 =0;

[0268] S611: If the judgment result is yes, then Z 0 =1.

[0269] It should be noted that, for S603, the determination of ncxIs it equal to 0? If the judgment result is no, then execute S604; if the judgment result is yes, then execute S605. For S606, judge whether 0 ncy Is it equal to 0? If the judgment result is no, then execute S607; if the judgment result is yes, then execute S608. For S609, judge whether 0 ncz Is it equal to 0? If the judgment result is no, execute S610; if the judgment result is yes, execute S611.

[0270] It should also be noted that the embodiment of the present application also needs to determine the first second prediction value in the first coordinate direction, the second second prediction value in the second coordinate direction, and the third second prediction value in the third coordinate direction according to the placeholder bit information of the encoded sub-node adjacent to the current node. Specifically, in some embodiments, determining the predicted coordinate values ​​in the three coordinate directions according to the placeholder bit information of the encoded sub-node adjacent to the current node may include:

[0271] According to the placeholder bit information of the encoded sub-nodes adjacent to the current node, determine the number of first sub-nodes occupied by points whose first direction coordinate values ​​are fifth values ​​and the number of second sub-nodes occupied by points whose first direction coordinate values ​​are sixth values ​​in the encoded sub-nodes on a plane perpendicular to the first coordinate direction, determine the number of third sub-nodes occupied by points whose second direction coordinate values ​​are fifth values ​​and the number of fourth sub-nodes occupied by points whose second direction coordinate values ​​are sixth values ​​in the encoded sub-nodes on a plane perpendicular to the second coordinate direction, and determine the number of fifth sub-nodes occupied by points whose third direction coordinate values ​​are fifth values ​​and the number of sixth sub-nodes occupied by points whose third direction coordinate values ​​are sixth values ​​in the encoded sub-nodes on a plane perpendicular to the third coordinate direction;

[0272] Determine first and second prediction values ​​of the first coordinate direction based on a comparison result of the first subnode quantity and the second subnode quantity;

[0273] Determine a second predicted value of the second coordinate direction based on a comparison result of the third subnode quantity and the fourth subnode quantity;

[0274] Based on the comparison result of the fifth sub-node quantity and the sixth sub-node quantity, a third second prediction value of the third coordinate direction is determined.

[0275] In the embodiment of the present application, the fifth value may be 1 and the sixth value may be 0; or, the fifth value may be 0 and the sixth value may be 1. In a specific example, the fifth value may be set to 1 and the sixth value may be set to 0, but this is not specifically limited.

[0276] In a specific implementation, assuming that the first coordinate direction is the x-axis coordinate direction, taking the fifth value as 1 and the sixth value as 0 as an example, for the first and second prediction values, the number of first child nodes (N) is defined. x=1 The number of subnodes occupied by the point among the 8 subnodes with the x-axis coordinate value of 1 in the yz plane of the two encoded neighboring nodes perpendicular to the x-axis coordinate direction can be 0 to 8. The number of the second subnodes (N x=0 (denoted by) is the number of subnodes occupied by a point among the eight subnodes with x-axis coordinate values ​​of 0 in the two encoded neighboring nodes on the yz plane perpendicular to the x-axis coordinate direction, and can be a value from 0 to 8. Then, through N x=1 and N x=0 The predicted coordinate value X of a single child node in the current node in the x-axis direction can be predicted 1 , based on which three context models can be constructed, as shown below:

[0277] For the syntax element occupancy_idx[2]:

[0278]

[0279] For example, Figure 7 As shown, the neighbor nodes No. 1, No. 3 and No. 5 of the current node (indicated by black filling) are shown here. According to the neighbor nodes No. 3 and No. 5, we can get N x=1 =3, that is, 3 of the 8 child nodes with x-axis coordinate value 1 are occupied (indicated by gray filling); N x=0 =1, that is, one of the eight child nodes with x-axis coordinate value 0 is occupied (indicated by white filling); since 3>1, that is, N x=1 >N x=0 , then predict X 1 The coordinate value is 1.

[0280] Assuming that the second coordinate direction is the y-axis coordinate direction, taking the fifth value as 1 and the sixth value as 0 as an example, for the second prediction value, define the number of third child nodes (using N y=1 The fourth subnode number (N) is defined as the number of subnodes occupied by a point among the eight subnodes with a y-axis coordinate value of 1 in the two encoded neighbor nodes on the xz plane perpendicular to the y-axis coordinate direction, and the value can be 0 to 8. y=0 (denoted by) is the number of subnodes occupied by a point among the eight subnodes with a y-axis coordinate value of 0 in the two encoded neighboring nodes on the xz plane perpendicular to the y-axis coordinate direction, and can be a value from 0 to 8. Then, through N y=1 and N y=0Predict the y-axis coordinate value Y of a single child node in the current node 1 , based on which three context models can be constructed, as shown below:

[0281] For the syntax element occupancy_idx[1]:

[0282]

[0283] Assuming that the third coordinate direction is the z-axis coordinate direction, taking the fifth value as 1 and the sixth value as 0 as an example, for the third second prediction value, define the number of the fifth child nodes (using N z=1 The number of child nodes occupied by the point among the 8 child nodes with a coordinate value of 1 in the z-axis direction of the two encoded neighbor nodes on the xy plane perpendicular to the z-axis coordinate direction can be 0 to 8. The number of sixth child nodes (N z=0 (denoted by) is the number of subnodes occupied by a point among the eight subnodes with a coordinate value of 0 in the z-axis direction of the two encoded neighboring nodes on the xy plane perpendicular to the z-axis direction, and can be a value from 0 to 8. Then, through N z=1 and N z=0 Predict the coordinate value Z of a single child node in the current node in the z-axis direction 1 , based on which three context models can be constructed, as shown below:

[0284] For the syntax element occupancy_idx[0]:

[0285]

[0286] See also Figure 8 , which shows another schematic diagram of a process for predicting coordinate information based on multiple encoded sub-nodes provided by an embodiment of the present application. Figure 8 As shown, the process may include:

[0287] S801: Obtain the placeholder bit information of the child nodes of the three encoded neighboring nodes of the current node;

[0288] S802: Determine the number of neighbor child nodes N that are occupied by points in the x-axis, y-axis, and z-axis directions respectively x=1 、N x=0 、N y=1 、N y=0 、N z=1 and N z=0 ;

[0289] S803: Determine whether N x=1 >N x=0 ;

[0290] S804: If the judgment result is yes, then X1 =1;

[0291] S805: If the judgment result is no, then determine whether N x=1 <N x=0 ;

[0292] S806: If the judgment result is yes, then X 1 =0;

[0293] S807: If the judgment result is no, then X 1 = No prediction;

[0294] S808: Determine whether N y=1 >N y=0 ;

[0295] S809: If the judgment result is yes, then Y 1 =1;

[0296] S810: If the judgment result is no, then determine whether N y=1 <N y=0 ;

[0297] S811: If the judgment result is yes, then Y 1 =0;

[0298] S812: If the judgment result is no, then Y 1 = No prediction;

[0299] S813: Determine whether N z=1 >N z=0 ;

[0300] S814: If the judgment result is yes, then Z 1 =1;

[0301] S815: If the judgment result is no, then determine whether N z=1 <N z=0 ;

[0302] S816: If the judgment result is yes, then Z 1 =0;

[0303] S817: If the judgment result is no, then Z 1 =Not predicted.

[0304] It should be noted that the predicted coordinate value X 1 For S803, it is determined that N x=1 Is it greater than N? x=0 If the judgment result is yes, execute S804; if the judgment result is no, execute S805 and continue to judge N x=1 Is it less than N? x=0,If the judgment result is yes, execute S806; if the judgment result is no, execute S807.

[0305] Predicted coordinate value Y 1 For S808, it is determined that N y=1 Is it greater than N? y=0 If the judgment result is yes, execute S809; if the judgment result is no, execute S810 and continue to judge N y=1 Is it less than N? y=0 If the judgment result is yes, execute S811; if the judgment result is no, execute S812.

[0306] Predicted coordinate value Z 1 For S813, it is determined that N z=1 Is it greater than N? z=0 If the judgment result is yes, execute S814; if the judgment result is no, execute S815 and continue to judge N z=1 Is it less than N? z=0 If the judgment result is yes, execute S816; if the judgment result is no, execute S817.

[0307] In another specific implementation, assuming that the first coordinate direction is the x-axis coordinate direction, taking the fifth value as 1 and the sixth value as 0 as an example, for the first and second prediction values, the number of first child nodes (N) is defined. x=1 The number of subnodes occupied by the point among the 8 subnodes with the x-axis coordinate value of 1 in the yz plane of the two encoded neighboring nodes perpendicular to the x-axis coordinate direction can be 0 to 8. The number of the second subnodes (N x=0 (denoted by) is the number of subnodes occupied by a point among the eight subnodes with x-axis coordinate values ​​of 0 in the two encoded neighboring nodes on the yz plane perpendicular to the x-axis coordinate direction, and can be a value from 0 to 8. Then, through N x=1 and N x=0 The predicted coordinate value X of a single child node in the current node in the x-axis direction can be predicted 1 , based on which three context models can be constructed, as shown below:

[0308] For the syntax element occupancy_idx[2]:

[0309]

[0310] For example, Fig. 9 As shown, the neighbor nodes No. 1, No. 3 and No. 5 of the current node (indicated by black filling) are shown here. According to the neighbor nodes No. 3 and No. 5, we can get N x=1=3, that is, 3 of the 8 child nodes with x-axis coordinate value 1 are occupied (indicated by gray filling); N x=0 = 0, that is, there is no child node among the 8 child nodes with x-axis coordinate value 0; since 3>0, that is, N x=1 >0 and N x=0 = 0, then we can predict X 1 The coordinate value is 1.

[0311] Assuming that the second coordinate direction is the y-axis coordinate direction, taking the fifth value as 1 and the sixth value as 0 as an example, for the second prediction value, define the number of third child nodes (using N y=1 The fourth subnode number (N) is defined as the number of subnodes occupied by a point among the eight subnodes with a y-axis coordinate value of 1 in the two encoded neighbor nodes on the xz plane perpendicular to the y-axis coordinate direction, and the value can be 0 to 8. y=0 (denoted by) is the number of subnodes occupied by a point among the eight subnodes with a y-axis coordinate value of 0 in the two encoded neighboring nodes on the xz plane perpendicular to the y-axis coordinate direction, and can be a value from 0 to 8. Then, through N y=1 and N y=0 Predict the y-axis coordinate value Y of a single child node in the current node 1 , based on which three context models can be constructed, as shown below:

[0312] For the syntax element occupancy_idx[1]:

[0313]

[0314] Assuming that the third coordinate direction is the z-axis coordinate direction, taking the fifth value as 1 and the sixth value as 0 as an example, for the third second prediction value, define the number of the fifth child nodes (using N z=1 The number of child nodes occupied by the point among the 8 child nodes with a coordinate value of 1 in the z-axis direction of the two encoded neighbor nodes on the xy plane perpendicular to the z-axis coordinate direction can be 0 to 8. The number of sixth child nodes (N z=0 (denoted by) is the number of subnodes occupied by a point among the eight subnodes with a coordinate value of 0 in the z-axis direction of the two encoded neighboring nodes on the xy plane perpendicular to the z-axis direction, and can be a value from 0 to 8. Then, through N z=1 and N z=0 Predict the coordinate value Z of a single child node in the current node in the z-axis direction 1 , based on which three context models can be constructed, as shown below:

[0315] For the syntax element occupancy_idx[0]:

[0316]

[0317] See also Fig.10 , which shows another schematic diagram of a process for predicting coordinate information based on multiple encoded sub-nodes provided by an embodiment of the present application. Fig.10 As shown, the process may include:

[0318] S1001: Obtaining placeholder bit information of child nodes of three encoded neighboring nodes of the current node;

[0319] S1002: Determine the number of neighbor child nodes N that are occupied by points in the x-axis, y-axis, and z-axis directions respectively x=1 、N x=0 、N y=1 、N y=0 、N z=1 and N z=0 ;

[0320] S1003: Determine whether N x=1 >0 and N x=0 =0;

[0321] S1004: If the judgment result is yes, then X 1 =1;

[0322] S1005: If the judgment result is no, then determine whether N x=0 >0 and N x=1 =0;

[0323] S1006: If the judgment result is yes, then X 1 =0;

[0324] S1007: If the judgment result is no, then X 1 = No prediction;

[0325] S1008: Determine whether N y=1 >0 and N y=0 =0;

[0326] S1009: If the judgment result is yes, then Y 1 =1;

[0327] S1010: If the judgment result is no, then determine whether N y=0 >0 and N y=1 =0;

[0328] S1011: If the judgment result is yes, then Y 1 =0;

[0329] S1012: If the judgment result is no, then Y 1 = No prediction;

[0330] S1013: Determine whether N z=1 >0 and N z=0 =0;

[0331] S1014: If the judgment result is yes, then Z 1 =1;

[0332] S1015: If the judgment result is no, then determine whether N z=0 >0 and N z=1 =0;

[0333] S1016: If the judgment result is yes, then Z 1 =0;

[0334] S1017: If the judgment result is no, then Z 1 =Not predicted.

[0335] It should be noted that the predicted coordinate value X 1 For S1003, if the judgment result is yes, then execute S1004; if the judgment result is no, then execute S1005 to continue to determine whether N x=0 >0 and N x=1 =0, if the judgment result is yes, execute S1006; if the judgment result is no, execute S1007.

[0336] Predicted coordinate value Y 1 For S1008, if the judgment result is yes, then execute S1009; if the judgment result is no, then execute S1010 to continue to determine whether N y=0 >0 and N y=1 =0, if the judgment result is yes, execute S1011; if the judgment result is no, execute S1012.

[0337] Predicted coordinate value Z 1 For S1013, if the judgment result is yes, then execute S1014; if the judgment result is no, then execute S1015 to continue to determine whether N z=0 >0 and N z=1 =0, if the judgment result is yes, execute S1016; if the judgment result is no, execute S1017.

[0338] In this way, after obtaining the first-first prediction value and the first-second prediction value in the first coordinate direction, the index number value of the second context model in the first coordinate direction can be determined accordingly; after obtaining the second-first prediction value and the second-second prediction value in the second coordinate direction, the index number value of the second context model in the second coordinate direction can be determined accordingly; after obtaining the third-first prediction value and the third-second prediction value in the third coordinate direction, the index number value of the second context model in the third coordinate direction can be determined accordingly; thereby determining the index number value of the second context model, and then selecting the second candidate context model corresponding to the index number value from multiple second candidate context models such as formula (2) to formula (10) to determine it as the second context model.

[0339] In addition, with respect to determining the index sequence number value of the first context model, in some embodiments, determining the predicted identification information of the current node, and determining the index sequence number value of the first context model according to the predicted identification information may include:

[0340] determining a first direction value, a second direction value, and a third direction value;

[0341] Adding the first direction value, the second direction value and the third direction value to determine a sum value;

[0342] Determining a predicted value of the identification information according to the sum value;

[0343] According to the predicted value, an index sequence value of the first context model is determined.

[0344] It should be noted that the first direction value (O ncx ) indicates whether there is a point occupied in the M encoded child nodes connected to the current node in the first coordinate direction, and the second direction value (O ncy ) indicates whether there is a point occupied in the M encoded child nodes connected to the current node in the second coordinate direction, and the third direction value (O ncz ) indicates whether there is a point occupancy among the M encoded child nodes connected to the current node in the third coordinate direction, where M is an integer greater than 0.

[0345] It should also be noted that the sum value is expressed in N onc It means that we can define N onc =O ncx +O ncy +O ncz , which is the number of cases where there are points occupied in the 4 encoded child nodes in 3 directions, and can take values ​​from 0 to 3.

[0346] In a specific implementation, by N oncFor the prediction of identification information (such as flag), two context models can be constructed, as shown below:

[0347] For the syntax element single_child_flag:

[0348]

[0349] See also Fig.11 , which shows a schematic diagram of a process for predicting identification information based on multiple encoded sub-nodes provided by an embodiment of the present application.

[0350] like Fig.11 As shown, the process may include:

[0351] S1101: Obtaining placeholder bit information of 12 encoded child nodes connected to the current node;

[0352] S1102: Confirm O ncx , O ncy and O ncz ;

[0353] S1103: For O ncx , O ncy and O ncz Perform sum calculation to determine N onc ;

[0354] S1104: Determine N onc Is it less than 2?

[0355] S1105: If the judgment result is no, flag=1;

[0356] S1106: If the judgment result is yes, flag=0.

[0357] It should be noted that the prediction of the flag information (flag) is used to determine whether N onc <2, if the judgment result is no, execute S1105; if the judgment result is yes, execute S1106.

[0358] In another specific implementation, by N onc For the prediction of identification information (such as flag), two context models can be constructed, as shown below:

[0359] For the syntax element single_child_flag:

[0360]

[0361] See also Fig.12, which shows another schematic diagram of a process for predicting identification information based on multiple encoded sub-nodes provided by an embodiment of the present application. Fig.12 As shown, the process may include:

[0362] S1201: Obtaining placeholder bit information of 12 encoded child nodes connected to the current node;

[0363] S1202: Confirmation O ncx , O ncy and O ncz ;

[0364] S1203: To O ncx , O ncy and O ncz Perform sum calculation to determine N onc ;

[0365] S1204: Determine N onc Is it less than 2?

[0366] S1205: If the judgment result is no, flag = 0;

[0367] S1206: If the judgment result is yes, flag=1.

[0368] It should be noted that the prediction of the flag information (flag) is used to determine whether N onc <2, if the judgment result is no, execute S1205; if the judgment result is yes, execute S1206.

[0369] That is to say, after getting O ncx , O ncy and O ncz After that, N can be calculated onc , then according to N onc The predicted value of the identification information can be determined, and then the index number value of the first context model can be determined. Then, the first candidate context model corresponding to the index number value is selected from the two first candidate context models shown in formula (11) or formula (12) to determine it as the first context model.

[0370] In an embodiment of the present application, the context model used to predict the identification information (flag) may have a total of 2 context models. During the encoding process, based on the placeholder bit information of the neighbor sub-nodes of the current node, a unique context index number for predicting the identification information can be obtained, and one of the two context models is selected according to the index number for subsequent CABAC of the identification information. Context models for predicting coordinate information are constructed for the three coordinate directions (x / y / z coordinate directions), and there are a total of 2×3=6 context models in each coordinate direction, so there are a total of 18 context models in the three coordinate directions. During the encoding process, based on the placeholder bit information of the neighbor sub-nodes of the current node, a unique context index number can be obtained, and one of the 18 context models is selected according to the index number for subsequent CABAC of the predicted coordinate values.

[0371] In addition, in another possible implementation, for the construction of the first candidate context model and the second candidate context model, as shown in FIG. Figure 2 As shown, the occupancy bit information (occupancy bit) of the 6 neighboring nodes of the current node is obtained, that is, if there is a point occupancy in the neighboring node, the occupancy bit information is 1, otherwise the occupancy bit information is 0. In this way, the neighbor configuration number (NC) can be calculated, and the value range of NC can be 0 to 63, that is, 000000 to 111111 in binary. In this way, a context model with a maximum of 64 context numbers can be constructed according to NC, and n context models can be arbitrarily merged, that is, x number of context models can be constructed, where x can be 1 to 64.

[0372] In another possible implementation, for the construction of the first candidate context model and the second candidate context model, as shown in FIG. Fig.13 As shown in the figure, the occupancy bit information of the 24 encoded child nodes of the three neighboring nodes of the current node is obtained. That is, if there is a point occupied in the child node, the occupancy bit information is 1, otherwise the occupancy bit information is 0. In this way, the neighboring configuration number by childlevel (NC c ), NC c The value range of NC can be 0 to 224, that is, "24 zeros" to "24 ones" in binary. c A maximum of 224 context models can be constructed, and n context models can be arbitrarily merged, that is, x number of contexts can be constructed, where x can take a value from 1 to 224.

[0373] In short, the context models constructed above can be used to encode coordinate information and identification information. In one sentence, using the placeholder information of the 6 neighboring nodes and 24 encoded child nodes of the current node, a context model can be constructed to perform CABAC on the coordinate information and required identification information (flag) of a single child node in the current node.

[0374] This embodiment provides a point cloud encoding method, which determines the number of occupied child nodes of the current node; determines the value of the identification information of a single child node according to the number of occupied child nodes, uses a first context model to entropy encode the value of the identification information, and writes it into a bitstream; if the value of the identification information indicates that the child nodes divided by the current node only include one occupied child node, then determines the coordinate information of the occupied child node, uses a second context model to entropy encode the coordinate information of the occupied child node, and writes it into a bitstream. In this way, by using the occupied bits of the neighboring nodes of the current node and its child nodes to construct context models for the identification information and coordinate information of a single child node, respectively, entropy encoding the identification information and coordinate information based on the context model can make full use of the spatial correlation of the point cloud, thereby improving the encoding efficiency of the point cloud.

[0375] In another embodiment of the present application, see Fig.14 , which shows a detailed flow chart of a point cloud encoding method provided by an embodiment of the present application. Fig.14 As shown, the detailed process may include:

[0376] S1401: Enter the i-th layer of the octree;

[0377] Here, i is an integer greater than or equal to 0 and less than K, and K represents the number of layers of the octree. It should be noted that the detailed process first enters the 0th layer of the octree.

[0378] S1402: Set N all =0,N singe =0,ctxSingleChildEnabled=0;

[0379] S1403: Read the jth node;

[0380] Here, j is an integer greater than or equal to 0 and less than N, and N is the total number of nodes in the i-th layer.

[0381] S1404: Calculate the neighbor configuration number NC according to the occupied bit information of the six neighbor nodes of the current node;

[0382] S1405: Calculate the number of occupied child nodes N according to the placeholder bit information of the eight child nodes divided from the current node. oc ;

[0383] S1406: Determine whether ctxSingleChildEnabled==1;

[0384] S1407: Determine the predicted value (X) of the first set of coordinate information 0 , Y 0 , Z 0 );

[0385] S1408: Determine the predicted value (X) of the second set of coordinate information 1 , Y 1 , Z 1 );

[0386] S1409: Determine the predicted value of the identification information;

[0387] It should be noted that, for step S1406, if the judgment result is yes, then S1407 to S1408 are executed, and then S1409 is executed; if the judgment result is no, then S1409 is directly executed.

[0388] S1410: Determine whether NC==0;

[0389] S1411: If the judgment result is no, then determine whether ctxSingleChildEnabled==1;

[0390] S1412: If the judgment result is yes, then determine whether N oc ==1;

[0391] S1413: If the judgment result is no, then determine flag=0;

[0392] S1414: If the judgment result is yes, then determine flag=1;

[0393] It should be noted that, for step S1412, it is determined that N oc Is it equal to 1? If the judgment result is no, then S1413 is executed; if the judgment result is yes, then S1414 is directly executed. After S1413 and S1414, S1415 is executed.

[0394] S1415: Perform CABAC on the flag based on the context model of the predicted flag;

[0395] S1416: Determine whether flag == 1;

[0396] S1417: If the judgment result is yes, the coordinate information X, Y, and Z of the only occupied child node are calculated according to the placeholder bit information of the eight child nodes of the current node;

[0397] S1418: Perform CABAC on the coordinate information X, Y, and Z based on the context model of the predicted coordinate information;

[0398] It should be noted that, for step S1416, it is determined whether flag is equal to 1. If the determination result is yes, S1417 to S1418 are executed; if the determination result is no, S1426 is executed.

[0399] It should also be noted that, for step S1410, if the judgment result is no, then S1411 is executed; if the judgment result is yes, then S1419 is executed. For step S1411, if the judgment result is yes, then S1412 is executed; if the judgment result is no, then S1426 is executed.

[0400] S1419: If the result of the judgment is yes, then judge whether N oc ==1;

[0401] S1420: If the judgment result is no, then determine flag=0;

[0402] S1421: If the judgment result is yes, then determine flag=1;

[0403] S1422: Perform CABAC on the flag based on the context model of the predicted flag;

[0404] It should be noted that, for step S1419, the determination of N oc Is it equal to 1? If the judgment result is no, then S1420 is executed; if the judgment result is yes, then S1421 is directly executed. After S1420 and S1421, S1422 is executed.

[0405] S1423: Determine whether flag == 1;

[0406] S1424: If the judgment result is yes, the coordinate information X, Y, and Z of the only occupied child node are calculated according to the placeholder bit information of the eight child nodes of the current node;

[0407] S1425: Performing equal-probability static arithmetic coding on the coordinate information X, Y, and Z;

[0408] S1426: If the judgment result is no, CABAC based on the NC context is performed on the placeholder bit information of the eight child nodes of the current node;

[0409] S1427:N all =N all +1;

[0410] It should be noted that, for S1411, S1416 and S1423, if the judgment result is no, S1426 will be executed. After S1426, S1418 and S1425, S1427 will be executed.

[0411] S1428: Determine whether N oc ==1;

[0412] S1429: If the judgment result is yes, then N singe =N singe +1;

[0413] S1430: Determine whether N singe / N all >0.5;

[0414] S1431: If the judgment result is no, ctxSingleChildEnabled = 0;

[0415] S1432: If the judgment result is yes, ctxSingleChildEnabled=1;

[0416] S1433: Determine whether all nodes in the current j-th layer have been processed;

[0417] S1434: If the judgment result is no, then j=j+1, and the process returns to S1403;

[0418] S1435: If the judgment result is yes, then determine whether all layers of the octree have been processed;

[0419] S1436: If the judgment result is no, then i=i+1, and the process returns to S1401;

[0420] S1437: If the judgment result is yes, the process ends.

[0421] It should be noted that, first, enter the i-th layer of the octree (the minimum value of i is 0), assign the number of nodes N all =0, the number of single child nodes is N singe =0, single child node enable variable ctxSingleChildEnabled=0.

[0422] Next, read the jth node (the minimum value of j is 0), and calculate NC based on the placeholder bit information (or placeholder bit pattern) of the 6 neighboring nodes of the current node. Then calculate N based on the placeholder bit information of the 8 child nodes divided by the current node. oc .

[0423] Again, when ctxSingleChildEnabled==1, the occupancy bit information of the four encoded child nodes connected to the current node in the negative direction of the x, y, and z coordinate axes is used to obtain O ncx , O ncy and O ncz , and then calculate N onc =O ncx +O ncy +O ncz , and finally predict the flag and the first set of coordinate information X 0 , Y 0 and Z 0 According to the child node occupancy bit information of the three encoded neighboring nodes of the current node, N is calculated. x=1 and N x=0 , N y=1 and N y=0 , N z=1 and N z=0 , respectively predict the second set of coordinate information X 1 , Y 1 and Z 1 When ctxSingleChildEnabled==0, only the flag can be predicted based on the placeholder bit information of the four encoded child nodes connected to the current node in the negative direction of the x, y, and z coordinate axes.

[0424] When NC==0 (the number of neighbor configurations is 0, that is, none of the 6 neighbor nodes is occupied), the flag is assigned a value of 1, representing N oc When it is equal to 1 (i.e. only 1 of the 8 child nodes is occupied), the flag is assigned to 0, which means N oc The case where the bit position is not equal to 1 (that is, more than one of the eight child nodes is occupied). Since the predicted flag has been obtained, the flag can be adaptively binary-coded based on the context "predicted flag" and written into the bitstream. When the flag is equal to 1, the coordinate information (X / Y / Z coordinate value) of a single child node is calculated based on the occupied bit information of the eight child nodes of the current node, and the X / Y / Z coordinate values ​​are statically binary-coded with equal probability and written into the bitstream.

[0425] When NC>0 (one of the 6 neighbor nodes is occupied) and ctxSingleChildEnabled==1, the flag is assigned to 1, indicating that N oc When it is equal to 1 (i.e. only 1 of the 8 child nodes is occupied), the flag is assigned to 0, which means N ocIf the flag is not equal to 1 (that is, more than one of the 8 child nodes is occupied), the flag is adaptively coded based on the context "predicted flag" and written into the bitstream. When the flag is equal to 1, the coordinate information (X / Y / Z coordinate value) of a single child node is calculated based on the occupied bit information of the 8 child nodes of the current node, and the X / Y / Z coordinate values ​​are adaptively coded based on the context "predicted coordinate information" and written into the bitstream.

[0426] When flag==0 (more than one of the eight child nodes is occupied) or NC>0 (one of the six neighbor nodes is occupied) and ctxSingleChildEnabled==0, CABAC is performed on the placeholder bit information of the eight child nodes of the current node and written into the bitstream.

[0427] Finally, update N all =N all +1, when N oc =1, update N singe =N singe +1. Calculate ctxSingleChildEnabled as follows:

[0428]

[0429] If all nodes in the current i-th layer have been processed, then i=i+1, and the process returns to step S1401 to process the next layer of the octree; otherwise, j=j+1, and the process returns to step S1403 to process the next node in the i-th layer. If all layers have been processed, the process can be terminated.

[0430] In short, the protection point of the technical solution of this application is to build a context model of "prediction flag" and "prediction coordinate information" for the encoding of a single child node, and improve the compression efficiency through CABAC. And the proportion of nodes with a single child node in all nodes is used to control whether the point cloud encoding method is enabled.

[0431] That is to say, the technical solution of the present application makes more full use of the spatial correlation of the point cloud, so that the coding efficiency of G-PCC is further improved. As shown in Table 2 below, BD-Rate under lossy compression conditions of geometric information shows that compared with the related art, while obtaining the same coding quality, the encoding bit rate of the embodiment of the present application is saved (BD-Rate is a negative value) or increased (BD-Rate is a positive value) by a percentage of the encoding bit rate of the related art. As shown in Table 3 below, Bpip Ratio under lossless compression conditions of geometric information shows that when there is no loss in point cloud quality, the encoding bit rate of the embodiment of the present application accounts for the percentage of the encoding bit rate of the related art. Here, the lower the value, the greater the bit rate saved by the embodiment of the present application.

[0432] Table 2

[0433]

[0434] Table 3

[0435]

[0436] The present embodiment provides a point cloud encoding method. The specific implementation of the aforementioned embodiment is elaborated in detail through the above embodiment. It can be seen that since context models are constructed for the identification information and coordinate information of a single sub-node respectively, entropy encoding of the identification information and coordinate information is performed based on the context model. This can make full use of the spatial correlation of the point cloud, thereby improving the encoding efficiency of the point cloud.

[0437] In another embodiment of the present application, the point cloud decoding method provided in the embodiment of the present application is applied to a video decoding device, namely a G-PCC decoder, which can also be referred to as a decoder. The function implemented by the method can be implemented by calling a computer program by a second processor in the decoder. Of course, the computer program can be stored in a second memory. It can be seen that the decoder includes at least a second processor and a second memory.

[0438] See also Fig.15 , which shows a schematic diagram of a process of a point cloud decoding method provided by an embodiment of the present application. Fig.15 As shown, the method may include:

[0439] S1501: parse a bitstream using a first context model to obtain a value of identification information of a single child node of the current node.

[0440] It should be noted that in a point cloud, a point can be all points in the point cloud or some points in the point cloud, and these points are relatively concentrated in space.

[0441] It should also be noted that based on Figure 1BThe framework of the G-PCC decoder shown in the figure, the method of the embodiment of the present application is mainly applied to the "context modeling" part, which optimizes the geometric information entropy decoding based on point cloud neighbor nodes in the current related technology to improve the utilization of spatial correlation.

[0442] In an embodiment of the present application, after decoding and obtaining the value of the identification information (such as a flag), the number of occupied sub-nodes in the sub-nodes divided by the current node can be determined. In some embodiments, the method may also include:

[0443] If the value of the identification information is equal to the first identification value, it is determined that the sub-nodes divided from the current node include only one occupied sub-node;

[0444] If the value of the identification information is equal to the second identification value, it is determined that the sub-nodes divided from the current node include at least two occupied sub-nodes.

[0445] In the embodiment of the present application, the first identification value may be 1, and the second identification value may be 0; or, the first identification value may be 0, and the second identification value may be 1. In a specific example, the first identification value may be set to 1, and the second identification value may be set to 0, but this is not specifically limited.

[0446] It should be noted that the value of the identification information can also be the number of occupied child nodes. For example, if the value of the identification information is equal to 0, then there is no occupied child node in the child nodes divided by the current node; if the value of the identification information is equal to 1, then the child nodes divided by the current node include only one occupied child node; if the value of the identification information is greater than or equal to 2, then the child nodes divided by the current node include at least two occupied child nodes.

[0447] S1502: If the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, parse the bitstream using the second context model to obtain coordinate information of the occupied sub-node.

[0448] It should be noted that when the value of the identification information indicates that the sub-nodes divided by the current node include only one occupied sub-node, it is necessary to parse the code stream to obtain the coordinate information of the occupied sub-node. However, due to the difference in the number of neighbor configurations, the entropy encoding method used for the coordinate information of the occupied sub-node may be different, and the entropy decoding method used for the coordinate information of the occupied sub-node may also be different. Therefore, the embodiment of the present application also needs to determine the number of neighbor configurations of the current node. In some embodiments, the method may also include:

[0449] Determine the number of neighbor configurations of the current node;

[0450] If the neighbor configuration number indicates that a neighbor node in the current node is occupied, then when the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, the step of parsing the code stream using the second context model to obtain the coordinate information of the occupied sub-node is performed.

[0451] Furthermore, after determining the number of neighbor configurations of the current node, the method may further include:

[0452] If the neighbor configuration number indicates that no neighbor node in the current node is occupied, then when the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, the step of using equal-probability static binary arithmetic parsing code stream to obtain the coordinate information of the occupied sub-node is executed.

[0453] In the embodiment of the present application, the neighbor configuration number (NC) is used to indicate whether any neighbor node among the multiple neighbor nodes of the current node is occupied. Specifically, the determination of the neighbor configuration number of the current node may include:

[0454] Obtaining placeholder bit information of neighboring nodes of the current node;

[0455] The neighbor configuration number is determined according to the placeholder bit information of the neighbor node.

[0456] Here, the neighbor nodes may include at least one of the following: the neighbor node connected to the left side of the current node, the neighbor node connected to the right side of the current node, the neighbor node connected to the upper side of the current node, the neighbor node connected to the lower side of the current node, the neighbor node connected to the rear side of the current node, and the neighbor node connected to the front side of the current node. That is to say, the neighbor nodes of the current node usually include 6, as follows: Figure 2 shown.

[0457] It should also be noted that the placeholder bit information of the neighboring node is determined according to whether there is a point occupied in the neighboring node. In a specific embodiment, the obtaining of the placeholder bit information of the neighboring node of the current node may include:

[0458] If there is a point occupancy in the neighboring node, determining that the occupied bit information of the neighboring node is equal to a first value;

[0459] If there is no point occupancy in the neighboring node, it is determined that the occupied bit information of the neighboring node is equal to the second value.

[0460] In the embodiment of the present application, the first value may be 1 and the second value may be 0; or, the first value may be 0 and the second value may be 1. In a specific example, the first value may be set to 1 and the second value may be set to 0, but this is not specifically limited.

[0461] That is to say, taking the first value as 1 and the second value as 0 as an example, if a certain neighbor node has a point occupied, then the placeholder bit information of the neighbor node is equal to 1; if a certain neighbor node has no point occupied, then the placeholder bit information of the neighbor node is equal to 0. In this way, the number of neighbor configurations can be calculated based on the placeholder bit information of the 6 neighbor nodes of the current node.

[0462] In addition, according to the number of neighbor configurations, it can be reflected whether there are any neighbor nodes occupied in the current node. In some embodiments, the method may also include:

[0463] If the number of neighbor configurations is greater than a second threshold, determining that a neighbor node in the current node is occupied;

[0464] If the number of neighbor configurations is equal to the second threshold, it is determined that no neighbor node in the current node is occupied.

[0465] In the embodiment of the present application, the value range of the neighbor configuration number is 0 to 63, and the second threshold value can be set to 0. That is, if the neighbor configuration number is greater than 0, it can be indicated that a neighbor node is occupied in the current node; if the neighbor configuration number is equal to 0, it can be indicated that no neighbor node is occupied in the current node.

[0466] It should also be understood that before step S1501, the method may further include: determining a first context model and a second context model. Here, the first context model may be used to predict the identification information, and the second context model may be used to predict the coordinate information.

[0467] In a specific embodiment, determining the first context model and the second context model may include:

[0468] Determine the value of the single child node enable variable;

[0469] When the value of the single child node enable variable indicates that the current node is in a single child node enable state, the first context model and the second context model are determined.

[0470] It should be noted that the present embodiment introduces a new variable, namely, a single child node enable variable (which can be represented by ctxSingleChildEnabled). The single child node enable variable is related to the number of nodes (denoted by N). all ) and the number of single child nodes (denoted by N singeSpecifically, in some embodiments, determining the value of a single child node enabling variable may include:

[0471] Determine the number of nodes and the number of single child nodes;

[0472] Performing a division operation on the number of the single sub-nodes and the number of the nodes to obtain a first ratio value;

[0473] comparing the first ratio value with a preset threshold;

[0474] If the first ratio value is greater than the preset threshold, determining that the value of the single sub-node enabling variable is a third value;

[0475] If the first ratio value is less than or equal to the preset threshold, the value of the single sub-node enabling variable is determined to be a fourth value.

[0476] In the embodiment of the present application, the third value may be 1 and the fourth value may be 0; or, the third value may be 0 and the fourth value may be 1. In a specific example, the third value may be set to 1 and the fourth value may be set to 0, but this is not specifically limited.

[0477] It should be noted that the preset threshold represents a preset empirical value, which can be used as a measure for determining the value of a single child node enabling variable. Here, the value range of the preset threshold is within [0, 1], and is specifically adjusted according to actual conditions. In the embodiment of the present application, the preset threshold can be set to 0.5, but this is not specifically limited here.

[0478] It should also be noted that the single child node enable variable can be represented by ctxSingleChildEnabled. The determination of the single child node enable variable can be implemented according to the above formula (1).

[0479] Furthermore, in some embodiments, the method may also include:

[0480] If the value of the single child node enable variable is 1, it is determined that the current node is in a single child node enable state;

[0481] If the value of the single child node enable variable is 0, it is determined that the current node is in a single child node disabled state.

[0482] That is to say, if ctxSingleChildEnabled=1, then the current node is in a single child node enabled state, and the point cloud decoding method described in the embodiment of the present application can be executed at this time; if ctxSingleChildEnabled=0, then the current node is in a single child node disabled state, and the point cloud decoding method of the related technology can be executed at this time, that is, CABAC decoding based on the NC context obtains the placeholder bit information of the 8 child nodes of the current node.

[0483] It can be understood that in the embodiment of the present application, N singe and N all Specifically, in some embodiments, the method may further include:

[0484] Perform octree partitioning on the input point cloud to obtain an octree of K layers, where K is an integer greater than 0;

[0485] When entering the i-th layer of the octree, the initial value of the number of nodes is set to 0, the initial value of the number of single child nodes is set to 0, and the initial value of the single child node enable variable is set to 0; wherein i is an integer greater than or equal to 0 and less than K.

[0486] Furthermore, the determining the number of nodes and the number of single sub-nodes may include:

[0487] Based on the decoded nodes in the i-th layer, obtaining the number of nodes;

[0488] Determine a decoded node including only one occupied child node from the decoded nodes, and obtain the number of single child nodes.

[0489] It should be noted that the number of nodes and the number of single child nodes are both decoded nodes in the i-th layer. For the number of single child nodes, the process of determining a decoded node including only one occupied child node from the decoded nodes to obtain the number of single child nodes includes:

[0490] In the decoded node, determining whether the child nodes divided by the decoded node include only one occupied child node;

[0491] If the judgment result is yes, then the number of the single child node is increased by 1 to update the number of the single child node;

[0492] If the judgment result is no, the number of the single child node is maintained unchanged.

[0493] In other words, after the input point cloud is divided into octrees, a K-layer octree can be obtained. When entering the i-th layer of the octree, the number of nodes (N all ), the number of single child nodes (Nsinge ) and the value of the single child node enable variable (ctxSingleChildEnabled), that is, the value N all =0,N singe = 0, ctxSingleChildEnabled = 0. Then for the i-th layer, after the j-th node in the i-th layer has completed the point cloud decoding, N can be updated all =N all +1, that is, the number of nodes represents the number of decoded nodes. If the child nodes divided by the jth node include only one occupied child node (that is, N oc =1), then update N singe =N singe +1, that is, the number of single child nodes indicates the number of decoded nodes that are determined to include only one occupied child node in the decoded nodes. When j is less than N, update j=j+1, and continue to execute the step of reading the jth node of the i-th layer until all nodes in the i-th layer have been processed, j is an integer greater than or equal to 0 and less than N, and N is the total number of nodes in the i-th layer; then enter the i+1th layer of the octree until all K layers of the octree have been processed.

[0494] In this way, after determining N singe and N all Afterwards, the value of the single child node enabling variable (ctxSingleChildEnabled) can be calculated in combination with formula (1) to determine whether the first context model and the second context model need to be used for entropy decoding in the future.

[0495] Specifically, in the embodiment of the present application, if the neighbor configuration number indicates that a neighbor node is occupied in the current node, then NC>0; if the value of the single child node enable variable indicates that the current node is in a single child node enabled state, then ctxSingleChildEnabled = 1. That is, when the neighbor configuration number indicates that a neighbor node is occupied in the current node (i.e., NC>0) and ctxSingleChildEnabled = 1, it is necessary to construct a context model, i.e., determine the first context model and the second context model, so as to perform entropy decoding using the first context model and the second context model.

[0496] In some embodiments, when the value of the single child node enable variable indicates that the current node is in a single child node enable state, the method may further include:

[0497] Determine the prediction identification information of the current node, and determine the index sequence value of the first context model according to the prediction identification information;

[0498] The first context model is determined according to the index sequence number value of the first context model.

[0499] In a specific embodiment, determining the first context model according to the index sequence value of the first context model may include:

[0500] Constructing at least one first candidate context model; wherein different first candidate context models correspond to different index numbers;

[0501] According to the index number value of the first context model, a first candidate context model corresponding to the index number value is selected from the at least one first candidate context model, and the selected first candidate context model is determined as the first context model.

[0502] In some embodiments, when the value of the single child node enable variable indicates that the current node is in a single child node enable state, the method may further include:

[0503] Determine the predicted coordinate information of the current node, and determine the index sequence value of the second context model according to the predicted coordinate information;

[0504] The second context model is determined according to the index sequence number value of the second context model.

[0505] In a specific embodiment, determining the second context model according to the index sequence value of the second context model may include:

[0506] Constructing at least one second candidate context model; wherein different second candidate context models correspond to different index numbers;

[0507] According to the index number value of the second context model, a second candidate context model corresponding to the index number value is selected from the at least one second candidate context model, and the selected second candidate context model is determined as the second context model.

[0508] Wherein, with respect to determining the index number value of the second context model, in some embodiments, determining the predicted coordinate information of the current node, and determining the index number value of the second context model according to the predicted coordinate information may include:

[0509] Obtaining placeholder bit information of decoded child nodes adjacent to the current node;

[0510] Determine predicted coordinate values ​​in three coordinate directions according to the placeholder bit information of the decoded child nodes adjacent to the current node;

[0511] Determine the index sequence value of the second context model according to the predicted coordinate values ​​of the three coordinate directions.

[0512] It should be noted that the predicted coordinate information may include predicted coordinate values ​​in a first coordinate direction, predicted coordinate values ​​in a second coordinate direction, and predicted coordinate values ​​in a third coordinate direction. The first coordinate direction may be an x-axis coordinate direction, the second coordinate direction may be a y-axis coordinate direction, and the third coordinate direction may be a z-axis coordinate direction.

[0513] Thus, in the embodiment of the present application, the index number value of the second context model can also be divided into: the index number value of the second context model in the first coordinate direction, the index number value of the second context model in the second coordinate direction, and the index number value of the second context model in the third coordinate direction. Therefore, in some embodiments, determining the index number value of the second context model according to the predicted coordinate values ​​in the three coordinate directions may include:

[0514] According to the predicted coordinate values ​​of the three coordinate directions, obtaining a first-first predicted value and a first-second predicted value in the first coordinate direction, a second-first predicted value and a second-second predicted value in the second coordinate direction, and a third-first predicted value and a third-second predicted value in the third coordinate direction;

[0515] Determine an index sequence value of the second context model in the first coordinate direction according to the first-first prediction value and the first-second prediction value in the first coordinate direction;

[0516] Determine the index number value of the second context model in the second coordinate direction according to the second first prediction value and the second second prediction value in the second coordinate direction;

[0517] Determine the index sequence value of the second context model in the third coordinate direction according to the third-first prediction value and the third-second prediction value in the third coordinate direction.

[0518] It should be noted that, first, the first predicted value in the first coordinate direction, the second predicted value in the second coordinate direction, and the third predicted value in the third coordinate direction need to be determined based on the placeholder bit information of the decoded child nodes adjacent to the current node. Specifically, in some embodiments, determining the predicted coordinate values ​​in the three coordinate directions based on the placeholder bit information of the decoded child nodes adjacent to the current node may include:

[0519] Determine the placeholder bit information of M decoded child nodes connected to the current node in a first coordinate direction from the placeholder bit information of the decoded child nodes adjacent to the current node, and determine a first predicted coordinate value in the first coordinate direction according to the placeholder bit information of the M decoded child nodes connected to the current node in the first coordinate direction;

[0520] Determine the placeholder bit information of M decoded child nodes connected to the current node in a second coordinate direction from the placeholder bit information of the decoded child nodes adjacent to the current node, and determine a second-first predicted coordinate value in the second coordinate direction according to the placeholder bit information of the M decoded child nodes connected to the current node in the second coordinate direction;

[0521] Determine the placeholder bit information of M decoded child nodes connected to the current node in a third coordinate direction from the placeholder bit information of the decoded child nodes adjacent to the current node, and determine the third predicted coordinate value of the third coordinate direction according to the placeholder bit information of the M decoded child nodes connected to the current node in the third coordinate direction; wherein M is an integer greater than 0.

[0522] In a specific implementation, determining the first predicted coordinate value in the first coordinate direction according to the placeholder bit information of the M decoded subnodes connected to the current node in the first coordinate direction may include:

[0523] Determine a first direction value according to the occupied bit information of the M decoded child nodes connected to the current node in the first coordinate direction; wherein the first direction value indicates whether there is a point occupied in the M decoded child nodes connected to the current node in the first coordinate direction;

[0524] A first predicted value of the first coordinate direction is determined according to a comparison result between the first direction value and a preset direction value.

[0525] In another specific implementation, determining the second-first predicted coordinate value in the second coordinate direction according to the placeholder bit information of the M decoded subnodes connected to the current node in the second coordinate direction may include:

[0526] Determine a second direction value according to the occupied bit information of the M decoded sub-nodes connected to the current node in the second coordinate direction; wherein the second direction value indicates whether there is a point occupied in the M decoded sub-nodes connected to the current node in the second coordinate direction;

[0527] According to the comparison result between the second direction value and the preset direction value, a second-first prediction value of the second coordinate direction is determined.

[0528] In yet another specific implementation, determining the third-first predicted coordinate value in the third coordinate direction according to the placeholder bit information of the M decoded subnodes connected to the current node in the third coordinate direction may include:

[0529] Determine a third direction value according to the occupied bit information of the M decoded child nodes connected to the current node in the third coordinate direction; wherein the third direction value indicates whether there is a point occupied in the M decoded child nodes connected to the current node in the third coordinate direction;

[0530] According to the comparison result between the third direction value and the preset direction value, a third first prediction value of the third coordinate direction is determined.

[0531] For example, assuming that M is equal to 4, Figure 5 As shown, the first direction value can be defined (with O ncx The second direction value (indicated by 0) is the placeholder bit information of the four decoded child nodes connected to the current node in the negative direction of the x-axis, that is, whether there is a point occupied in the four child nodes; ncy The third direction value (indicated by 0) is the placeholder bit information of the four decoded child nodes connected to the current node in the negative direction of the y-axis, that is, whether there is a point occupied in the four child nodes; ncz (represents) is the placeholder bit information of the four decoded child nodes connected to the current node in the negative direction of the z-axis, that is, whether any of the four child nodes is occupied.

[0532] So, according to O ncx , O ncy and O ncz By predicting the predicted coordinate values ​​in three coordinate directions (x-axis coordinate direction, y-axis coordinate direction and z-axis coordinate direction), two context models can be constructed respectively, as shown in the above formulas (2), (3) and (4).

[0533] It should also be noted that the embodiment of the present application also needs to determine the first second prediction value of the first coordinate direction, the second second prediction value of the second coordinate direction, and the third second prediction value of the third coordinate direction according to the placeholder bit information of the decoded child node adjacent to the current node. Specifically, in some embodiments, determining the predicted coordinate values ​​of the three coordinate directions according to the placeholder bit information of the decoded child node adjacent to the current node may include:

[0534] According to the placeholder bit information of the decoded sub-nodes adjacent to the current node, determine the number of first sub-nodes occupied by the decoded sub-nodes on the plane perpendicular to the first coordinate direction and the number of second sub-nodes occupied by the decoded sub-nodes whose first direction coordinate values ​​are the fifth value, and the number of third sub-nodes occupied by the decoded sub-nodes on the plane perpendicular to the second coordinate direction and the number of fourth sub-nodes occupied by the decoded sub-nodes whose second direction coordinate values ​​are the sixth value, and determine the number of fifth sub-nodes occupied by the decoded sub-nodes on the plane perpendicular to the third coordinate direction and the number of sixth sub-nodes occupied by the decoded sub-nodes whose third direction coordinate values ​​are the sixth value;

[0535] Determine first and second prediction values ​​of a first coordinate direction based on a comparison result of the first number of subnodes and the second number of subnodes;

[0536] Determine a second predicted value in the second coordinate direction based on a comparison result of the third subnode quantity and the fourth subnode quantity;

[0537] Based on the comparison result of the fifth sub-node quantity and the sixth sub-node quantity, a third second prediction value of the third coordinate direction is determined.

[0538] In the embodiment of the present application, the fifth value may be 1 and the sixth value may be 0; or, the fifth value may be 0 and the sixth value may be 1. In a specific example, the fifth value may be set to 1 and the sixth value may be set to 0, but this is not specifically limited.

[0539] For example, taking the fifth value as 1 and the sixth value as 0, for the first and second prediction values, the number of first child nodes (N) is defined. x=1 The number of subnodes occupied by the point among the 8 subnodes with the x-axis coordinate value of 1 in the yz plane of the two decoded neighbor nodes perpendicular to the x-axis coordinate direction can be 0 to 8. The number of the second subnodes (N x=0 (denoted by) is the number of subnodes occupied by a point among the eight subnodes with x-axis coordinate values ​​of 0 in the two decoded neighbor nodes on the yz plane perpendicular to the x-axis coordinate direction, and can be 0 to 8. Then, N x=1 and N x=0 The predicted coordinate value X of a single child node in the current node in the x-axis direction can be predicted 1 , three context models can be constructed, as shown in the above formula (5) or formula (8).

[0540] For the second prediction value, define the third number of child nodes (N y=1The fourth subnode number (N) is defined as the number of subnodes occupied by a point among the eight subnodes with a y-axis coordinate value of 1 in the two decoded neighbor nodes on the xz plane perpendicular to the y-axis coordinate direction, and the value can be 0 to 8. y=0 (denoted by) is the number of subnodes occupied by a point among the eight subnodes with a y-axis coordinate value of 0 in the two decoded neighbor nodes on the xz plane perpendicular to the y-axis coordinate direction, and can be a value from 0 to 8. Then, through N y=1 and N y=0 Predict the y-axis coordinate value Y of a single child node in the current node 1 , three context models can be constructed, as shown in the above formula (6) or formula (9).

[0541] For the third and second prediction values, define the fifth number of child nodes (N z=1 The number of child nodes that are occupied by a point among the 8 child nodes whose z-axis coordinate value is 1 among the two decoded neighbor nodes on the xy plane perpendicular to the z-axis coordinate direction can be 0 to 8. The number of sixth child nodes (N z=0 (denoted by) is the number of subnodes occupied by a point among the eight subnodes with a coordinate value of 0 in the z-axis direction of the two decoded neighbor nodes on the xy plane perpendicular to the z-axis direction, and can be a value from 0 to 8. Then, through N z=1 and N z=0 Predict the coordinate value Z of a single child node in the current node in the z-axis direction 1 , three context models can be constructed, as shown in the above formula (7) or formula (10).

[0542] In addition, with respect to determining the index sequence number value of the first context model, in some embodiments, determining the predicted identification information of the current node, and determining the index sequence number value of the first context model according to the predicted identification information may include:

[0543] determining a first direction value, a second direction value, and a third direction value;

[0544] Adding the first direction value, the second direction value and the third direction value to determine a sum value;

[0545] Determining a predicted identification value of the identification information according to the sum value;

[0546] Determine an index sequence number value of the first context model according to the prediction identification value.

[0547] It should be noted that the first direction value (O ncx ) indicates whether there is a point occupied in the M decoded child nodes connected to the current node in the first coordinate direction, and the second direction value (O ncy) indicates whether there is a point occupied in the M decoded child nodes connected to the current node in the second coordinate direction, and the third direction value (O ncz ) indicates whether there is a point occupancy among the M decoded child nodes connected to the current node in the third coordinate direction, where M is an integer greater than 0.

[0548] It should also be noted that the sum value is expressed in N onc It means that we can define N onc =O ncx +O ncy +O ncz , which is the number of cases where there are points occupied in the 4 encoded child nodes in 3 directions, and can take values ​​from 0 to 3.

[0549] In a specific implementation, by N onc For the prediction of identification information (such as flag), two context models can be constructed, as shown in the above formula (11) or formula (12).

[0550] In an embodiment of the present application, the context model used to predict the identification information (flag) may have a total of 2 context models. During the decoding process, based on the placeholder bit information of the neighbor sub-nodes of the current node, a unique context index number for predicting the identification information can be obtained, and one of the two context models is selected according to the index number for subsequent CABAC of the identification information. Context models for predicting coordinate information are constructed for the three coordinate directions (x / y / z coordinate directions), and there are a total of 2×3=6 context models in each coordinate direction, so there are a total of 18 context models in the three coordinate directions. During the decoding process, based on the placeholder bit information of the neighbor sub-nodes of the current node, a unique context index number can be obtained, and one of the 18 context models is selected according to the index number for subsequent CABAC of the predicted coordinate values.

[0551] In addition, in another possible implementation, for the construction of the first candidate context model and the second candidate context model, as shown in FIG. Figure 2 As shown, the occupancy bit information (occupancy bit) of the 6 neighboring nodes of the current node is obtained, that is, if there is a point occupancy in the neighboring node, the occupancy bit information is 1, otherwise the occupancy bit information is 0. In this way, the neighbor configuration number (NC) can be calculated, and the value range of NC can be 0 to 63, that is, 000000 to 111111 in binary. In this way, a context model with a maximum of 64 context numbers can be constructed according to NC, and n context models can be arbitrarily merged, that is, x number of context models can be constructed, where x can be 1 to 64.

[0552] In another possible implementation, for the construction of the first candidate context model and the second candidate context model, as shown in FIG. Fig.13 As shown in the figure, the occupancy bit information of the 24 decoded child nodes of the three neighboring nodes of the current node is obtained. That is, if there is a point occupied in the child node, the occupancy bit information is 1, otherwise the occupancy bit information is 0. In this way, the neighboring configuration number by childlevel (NC c ), NC c The value range of NC can be 0 to 224, that is, "24 zeros" to "24 ones" in binary. c A maximum of 224 context models can be constructed, and n context models can be arbitrarily merged, that is, x number of contexts can be constructed, where x can take a value from 1 to 224.

[0553] In short, the context models constructed above can be used to decode and obtain coordinate information and identification information. In one sentence, the context model can be constructed by using the occupant bit information of the 6 neighbor nodes and 24 decoded child nodes of the current node, and the required identification information (flag) can be obtained through decoding, as well as the coordinate information of the occupied child nodes in the current node.

[0554] S1503: Determine the placeholder bit information of the sub-nodes divided by the current node based on the coordinate information of the occupied sub-nodes.

[0555] It should be noted that, based on the coordinate information of the occupied sub-nodes, the placeholder bit information of the sub-nodes divided by the current node can be determined. In some embodiments, after determining the placeholder bit information of the sub-nodes divided by the current node, the method may further include:

[0556] If the placeholder bit information of the child node is equal to the first value, it is determined that there is a point occupancy in the child node;

[0557] If the placeholder bit information of the subnode is equal to the second value, it is determined that there is no point occupied in the subnode.

[0558] It should also be noted that, based on the coordinate information of the occupied sub-nodes, the placeholder bit information of the sub-nodes divided by the current node can be determined. In some embodiments, after determining the placeholder bit information of the sub-nodes divided by the current node, the method may further include: determining the number of sub-nodes occupied (N) according to the placeholder bit information of the sub-nodes oc ).

[0559] In the embodiment of the present application, the first value may be 1 and the second value may be 0; or, the first value may be 0 and the second value may be 1. In a specific example, the first value may be set to 1 and the second value may be set to 0, but this is not specifically limited.

[0560] That is to say, taking the first value as 1 and the second value as 0 as an example, if the placeholder bit information of a child node is equal to 1, then there is a point occupied in the child node; if the placeholder bit information of a child node is equal to 0, then there is no point occupied in the child node.

[0561] In this way, after the coordinate information of the occupied sub-node is obtained through decoding, the placeholder bit information of the sub-node divided by the current node can be restored according to the coordinate information of the occupied sub-node.

[0562] This embodiment provides a point cloud decoding method, which uses a first context model to parse a bitstream to obtain the value of the identification information of a single child node of the current node; if the value of the identification information indicates that the child nodes divided from the current node include only one occupied child node, the second context model is used to parse the bitstream to obtain the coordinate information of the occupied child node; based on the coordinate information of the occupied child node, the placeholder bit information of the child nodes divided from the current node is determined. In this way, since context models are constructed for the identification information and coordinate information of a single child node respectively, entropy decoding of the identification information and coordinate information based on the context model can make full use of the spatial correlation of the point cloud, thereby improving the decoding efficiency of the point cloud.

[0563] In another embodiment of the present application, see Fig.16 , which shows a detailed flow chart of a point cloud decoding method provided by an embodiment of the present application. Fig.16 As shown, the detailed process may include:

[0564] S1601: Enter the i-th layer of the octree;

[0565] Here, i is an integer greater than or equal to 0 and less than K, and K represents the number of layers of the octree. It should be noted that the detailed process first enters the 0th layer of the octree.

[0566] S1602: Set N all =0,N singe =0,ctxSingleChildEnabled=0;

[0567] S1603: Read the jth node;

[0568] Here, j is an integer greater than or equal to 0 and less than N, and N is the total number of nodes in the i-th layer.

[0569] S1604: Calculate the neighbor configuration number NC according to the occupied bit information of the six neighbor nodes of the current node;

[0570] S1605: Determine whether ctxSingleChildEnabled==1;

[0571] S1606: Determine the predicted value (X) of the first set of coordinate information 0 , Y 0 , Z 0 );

[0572] S1607: Determine the predicted value (X) of the second set of coordinate information 1 , Y 1 , Z 1 );

[0573] S1608: Determine a predicted value of the identification information;

[0574] It should be noted that, for step S1605, if the judgment result is yes, then S1606 to S1607 are executed, and then S1608 is executed; if the judgment result is no, then S1608 will be directly executed.

[0575] S1609: Determine whether NC==0;

[0576] S1610: If the judgment result is no, then determine whether ctxSingleChildEnabled==1;

[0577] S1611: If the judgment result is yes, use the first context model to perform CABAC decoding to obtain a flag;

[0578] S1612: Determine whether flag == 1;

[0579] S1613: If the judgment result is yes, CABAC decoding is performed using the second context model to obtain coordinate information X, Y, and Z of the only occupied child node;

[0580] S1614: Restoring the placeholder bit information of the eight sub-nodes divided from the current node;

[0581] In an embodiment of the present application, the first context model is used to predict identification information (such as flag); the second context model is used to predict coordinate information (such as X / Y / Z coordinate values).

[0582] It should be noted that, for step S1612, if the judgment result is yes, S1613 to S1614 are executed; if the judgment result is no, S1619 is executed.

[0583] It should also be noted that, for step S1609, if the judgment result is no, then S1610 is executed; if the judgment result is yes, then S1615 is executed.

[0584] S1615: If the judgment result is yes, CABAC decoding is performed using the first context model to obtain a flag;

[0585] S1616: Determine whether flag == 1;

[0586] S1617: If the judgment result is yes, then use equal probability static arithmetic decoding to obtain the coordinate information X, Y, Z of the only occupied child node;

[0587] S1618: Restoring the placeholder bit information of the eight sub-nodes divided from the current node;

[0588] S1619: If the judgment result is no, obtain the placeholder bit information of the 8 sub-nodes divided by the current node by using CABAC decoding based on the NC context;

[0589] S1620:N all =N all +1;

[0590] It should be noted that, for S1610, S1612 and S1616, if the judgment result is no, S1619 will be executed. After S1619, S1614 and S1618, S1620 will be executed.

[0591] S1621: Determine whether N oc ==1;

[0592] S1622: If the judgment result is yes, then N singe =N singe +1;

[0593] S1623: Determine whether N singe / N all >0.5;

[0594] It should be noted that, for S1621, if the judgment result is yes, S1622 is executed first, and then S1623 is executed; if the judgment result is no, S1623 is directly executed.

[0595] S1624: If the judgment result is no, ctxSingleChildEnabled = 0;

[0596] S1625: If the judgment result is yes, ctxSingleChildEnabled=1;

[0597] S1626: Determine whether all nodes in the current j-th layer have been processed;

[0598] S1627: If the judgment result is no, j=j+1, and the process returns to S1603;

[0599] S1628: If the judgment result is yes, determine whether all layers of the octree have been processed;

[0600] S1629: If the judgment result is no, then i=i+1, and the process returns to S1601;

[0601] S1630: If the judgment result is yes, the process ends.

[0602] It should be noted that, first, enter the i-th layer of the octree (the minimum value of i is 0), initialize the number of nodes N all =0, the number of single child nodes is N singe =0, and assign the single child node enable variable ctxSingleChildEnabled=0.

[0603] Secondly, read the jth node (the minimum value of j is 0), and calculate NC based on the occupied bit information of the 6 neighboring nodes of the current node.

[0604] Again, when ctxSingleChildEnabled==1, the occupancy bit information of the four decoded child nodes connected to the current node in the negative direction of the x, y, and z coordinate axes is used to obtain O ncx , O ncy and O ncz , and then calculate N onc =O ncx +O ncy +O ncz , and finally predict the flag and the first set of coordinate information X 0 , Y 0 and Z 0 According to the child node occupancy bit information of the three decoded neighbor nodes of the current node, N is calculated. x=1 and N x=0 , N y=1 and N y=0 , N z=1 and N z=0 , respectively predict the second value coordinate information X 1 , Y 1 and Z 1 When ctxSingleChildEnabled==0, only the flag can be predicted based on the placeholder bit information of the four encoded child nodes connected to the current node in the negative direction of the x, y, and z coordinate axes.

[0605] When NC==0 (the number of neighbor configurations is 0, that is, no neighbor node is occupied among the 6 neighbor nodes), since the predicted flag has been obtained, the adaptive binary arithmetic decoding based on the context "predicted flag" can be used to obtain the flag. When the flag is equal to 1, the coordinate information (X / Y / Z coordinate values) of a single child node in the current node is obtained by using equal probability static binary arithmetic decoding, and the occupied bit information of the 8 child nodes is restored.

[0606] When NC>0 (one of the 6 neighbor nodes is occupied) and ctxSingleChildEnabled==1, adaptive binary arithmetic decoding based on the context "prediction flag" is used to obtain flag. When flag==1, adaptive binary arithmetic decoding based on the context "prediction coordinate information" is used to obtain the coordinate information (X / Y / Z coordinate value) of a single child node in the current node, and restore the occupancy bit information of the 8 child nodes.

[0607] When flag==0 (more than one of the eight child nodes is occupied) or NC>0 (one of the six neighbor nodes is occupied) and ctxSingleChildEnabled==0, CABAC is used to decode and obtain the placeholder bit information of the eight child nodes of the current node.

[0608] Finally, update N all =N all +1. Based on the placeholder information of the 8 child nodes of the current node, N is calculated. oc , when N oc =1, update N singe =N singe +1. Here, the calculation of ctxSingleChildEnabled is specifically as shown in the above formula (13).

[0609] If all nodes in the current i-th layer have been processed, then i=i+1, and the process returns to step S1601 to process the next layer of the octree; otherwise, j=j+1, and the process returns to step S1603 to process the next node in the i-th layer. If all layers have been processed, the process can be terminated.

[0610] In short, the protection point of the technical solution of this application is to build a context model of "prediction flag" and "prediction coordinate information" for decoding a single child node, and improve the compression efficiency through CABAC. And the proportion of nodes with a single child node in all nodes is used to control whether the point cloud decoding method is enabled.

[0611] The present embodiment provides a point cloud decoding method. The specific implementation of the aforementioned embodiment is elaborated in detail through the above embodiment. It can be seen that since context models are constructed respectively for the identification information and coordinate information of a single sub-node, entropy decoding of the identification information and coordinate information is performed based on the context model. This can make full use of the spatial correlation of the point cloud, thereby improving the decoding efficiency of the point cloud.

[0612] In another embodiment of the present application, based on the same inventive concept as the above embodiment, see Fig.17 , which shows a schematic diagram of the structure of an encoder 170 provided in an embodiment of the present application. Fig.17 As shown, the encoder 170 may include: a first determining unit 1701 and an encoding unit 1702; wherein,

[0613] The first determining unit 1701 is configured to determine the number of occupied child nodes of the current node;

[0614] The encoding unit 1702 is configured to determine a value of identification information of a single child node according to the number of occupied child nodes, perform entropy encoding on the value of the identification information using a first context model, and write the entropy encoding into a bitstream;

[0615] The encoding unit 1702 is also configured to determine the coordinate information of the occupied child node if the value of the identification information indicates that the child nodes divided by the current node include only one occupied child node, use the second context model to entropy encode the coordinate information of the occupied child node, and write it into the bitstream.

[0616] In some embodiments, the first determining unit 1701 is further configured to determine the number of neighbor configurations of the current node;

[0617] The encoding unit 1702 is also configured to execute the step of entropy encoding the coordinate information of the occupied sub-node using the second context model if the neighbor configuration number indicates that a neighbor node in the current node is occupied and when the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node.

[0618] In some embodiments, the first determination unit 1701 is further configured to determine the value of a single child node enable variable; and when the value of the single child node enable variable indicates that the current node is in a single child node enabled state, determine the first context model and the second context model.

[0619] In some embodiments, the first determination unit 1701 is specifically configured to obtain placeholder bit information of neighboring nodes of the current node; and determine the neighbor configuration number according to the placeholder bit information of the neighboring nodes.

[0620] In some embodiments, the first determination unit 1701 is further configured to determine that the placeholder bit information of the neighboring node is equal to a first value if there is a point occupied in the neighboring node; if there is no point occupied in the neighboring node, determine that the placeholder bit information of the neighboring node is equal to a second value.

[0621] In some embodiments, the neighbor nodes include at least one of the following: a neighbor node connected to the left side of the current node, a neighbor node connected to the right side of the current node, a neighbor node connected to the upper side of the current node, a neighbor node connected to the lower side of the current node, a neighbor node connected to the rear side of the current node, and a neighbor node connected to the front side of the current node.

[0622] In some embodiments, the first determination unit 1701 is specifically configured to obtain the placeholder bit information of the sub-nodes divided from the current node; and determine the number of occupied sub-nodes according to the placeholder bit information of the sub-nodes.

[0623] In some embodiments, the first determination unit 1701 is further configured to determine that the placeholder bit information of the subnode is equal to a first value if there is a point occupied in the subnode; if there is no point occupied in the subnode, determine that the placeholder bit information of the subnode is equal to a second value.

[0624] In some embodiments, the first value is 1 and the second value is 0; or, the first value is 0 and the second value is 1.

[0625] In some embodiments, see Fig.17 , the encoder 170 may further include a first calculation unit 1703 and a first comparison unit 1704; wherein,

[0626] The first determining unit 1701 is further configured to determine the number of nodes and the number of single sub-nodes;

[0627] The first calculation unit 1703 is configured to perform a division operation on the number of single subnodes and the number of nodes to obtain a first ratio value;

[0628] The first comparison unit 1704 is configured to compare the first ratio value with a preset threshold; and if the first ratio value is greater than the preset threshold, determine that the value of the single child node enable variable is a third value; if the first ratio value is less than or equal to the preset threshold, determine that the value of the single child node enable variable is a fourth value.

[0629] In some embodiments, the third value is 1, and the fourth value is 0; or, the third value is 0, and the fourth value is 1.

[0630] In some embodiments, see Fig.17 The encoder 170 may also include a first setting unit 1705, configured to perform octree division on the input point cloud to obtain an octree of K layers, where K is an integer greater than 0; and when entering the i-th layer of the octree, setting the initial value of the number of nodes to 0, the initial value of the number of single child nodes to 0, and the initial value of the single child node enable variable to 0; wherein i is an integer greater than or equal to 0 and less than K.

[0631] In some embodiments, the first determination unit 1701 is further configured to obtain the number of nodes based on the encoded nodes in the i-th layer; and determine the encoded nodes that only include one occupied child node from the encoded nodes to obtain the number of single child nodes.

[0632] In some embodiments, see Fig.17 The encoder 170 may also include a first judgment unit 1706, configured to judge whether the sub-nodes divided from the encoded node include only one occupied sub-node in the encoded node; if the judgment result is yes, then add 1 to the number of the single sub-nodes to update the number of the single sub-nodes; if the judgment result is no, then maintain the number of the single sub-nodes unchanged.

[0633] In some embodiments, the first determination unit 1701 is specifically configured to determine the prediction identification information of the current node when the value of the single sub-node enable variable indicates that the current node is in a single sub-node enabled state, and determine the index serial number value of the first context model based on the prediction identification information; and determine the first context model based on the index serial number value of the first context model.

[0634] In some embodiments, see Fig.17 , the encoder 170 may further include a first construction unit 1707, configured to construct at least one first candidate context model; wherein different first candidate context models correspond to different index numbers;

[0635] The first determination unit 1701 is further configured to select, according to the index number value of the first context model, a first candidate context model corresponding to the index number value from the at least one first candidate context model, and determine the selected first candidate context model as the first context model.

[0636] In some embodiments, the first determination unit 1701 is specifically configured to determine the predicted coordinate information of the current node when the value of the single child node enable variable indicates that the current node is in a single child node enabled state, and determine the index number value of the second context model based on the predicted coordinate information; and determine the second context model based on the index number value of the second context model.

[0637] In some embodiments, the first construction unit 1707 is further configured to construct at least one second candidate context model; wherein different second candidate context models correspond to different index numbers;

[0638] The first determination unit 1701 is further configured to select, according to the index number value of the second context model, a second candidate context model corresponding to the index number value from the at least one second candidate context model, and determine the selected second candidate context model as the second context model.

[0639] In some embodiments, the first determination unit 1701 is also configured to obtain the placeholder bit information of the encoded sub-nodes adjacent to the current node; determine the predicted coordinate values ​​in three coordinate directions based on the placeholder bit information of the encoded sub-nodes adjacent to the current node; and determine the index sequence value of the second context model based on the predicted coordinate values ​​in the three coordinate directions.

[0640] In some embodiments, the first determination unit 1701 is further configured to determine the placeholder bit information of the M encoded sub-nodes connected to the current node in the first coordinate direction from the placeholder bit information of the encoded sub-nodes adjacent to the current node, and determine the first predicted coordinate value in the first coordinate direction according to the placeholder bit information of the M encoded sub-nodes connected to the current node in the first coordinate direction; determine the placeholder bit information of the M encoded sub-nodes connected to the current node in the second coordinate direction from the placeholder bit information of the encoded sub-nodes adjacent to the current node, and determine the second predicted coordinate value in the second coordinate direction according to the placeholder bit information of the M encoded sub-nodes connected to the current node in the second coordinate direction; determine the placeholder bit information of the M encoded sub-nodes connected to the current node in the third coordinate direction from the placeholder bit information of the encoded sub-nodes adjacent to the current node, and determine the third predicted coordinate value in the third coordinate direction according to the placeholder bit information of the M encoded sub-nodes connected to the current node in the third coordinate direction; wherein M is an integer greater than 0.

[0641] In some embodiments, the first determination unit 1701 is further configured to determine a first direction value according to the occupied bit information of the M encoded sub-nodes connected to the current node in the first coordinate direction; wherein the first direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the first coordinate direction;

[0642] The first comparison unit 1704 is further configured to determine a first predicted value of the first coordinate direction according to a comparison result between the first direction value and a preset direction value.

[0643] In some embodiments, the first determining unit 1701 is further configured to determine a second direction value according to the occupied bit information of the M encoded sub-nodes connected to the current node in the second coordinate direction; wherein the second direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the second coordinate direction;

[0644] The first comparison unit 1704 is further configured to determine a second-first prediction value of the second coordinate direction according to a comparison result between the second direction value and a preset direction value.

[0645] In some embodiments, the first determining unit 1701 is further configured to determine a third direction value according to the occupied bit information of the M encoded sub-nodes connected to the current node in the third coordinate direction; wherein the third direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the third coordinate direction;

[0646] The first comparison unit 1704 is further configured to determine a third first prediction value of the third coordinate direction according to a comparison result between the third direction value and a preset direction value.

[0647] In some embodiments, the first determination unit 1701 is further configured to determine, based on the placeholder bit information of the encoded subnodes adjacent to the current node, the number of first subnodes occupied by points whose first direction coordinate values ​​are fifth values ​​and the number of second subnodes occupied by points whose first direction coordinate values ​​are sixth values ​​in the encoded subnodes on a plane perpendicular to the first coordinate direction, as well as the number of third subnodes occupied by points whose second direction coordinate values ​​are fifth values ​​and the number of fourth subnodes occupied by points whose second direction coordinate values ​​are sixth values ​​in the encoded subnodes on a plane perpendicular to the second coordinate direction, and the number of fifth subnodes occupied by points whose third direction coordinate values ​​are fifth values ​​and the number of sixth subnodes occupied by points whose third direction coordinate values ​​are sixth values ​​in the encoded subnodes on a plane perpendicular to the third coordinate direction;

[0648] The first comparison unit 1704 is also configured to determine the first second prediction value of the first coordinate direction based on the comparison result of the first sub-node number and the second sub-node number; and determine the second second prediction value of the second coordinate direction based on the comparison result of the third sub-node number and the fourth sub-node number; and determine the third second prediction value of the third coordinate direction based on the comparison result of the fifth sub-node number and the sixth sub-node number.

[0649] In some embodiments, the fifth value is 1 and the sixth value is 0; or, the fifth value is 0 and the sixth value is 1.

[0650] In some embodiments, the first determination unit 1701 is further configured to obtain, based on the predicted coordinate values ​​of the three coordinate directions, a first-first prediction value and a first-second prediction value of the first coordinate direction, a second-first prediction value and a second-second prediction value of the second coordinate direction, and a third-first prediction value and a third-second prediction value of the third coordinate direction; and to determine, based on the first-first prediction value and the first-second prediction value of the first coordinate direction, an index number value of the second context model of the first coordinate direction; to determine, based on the second-first prediction value and the second-second prediction value of the second coordinate direction, an index number value of the second context model of the second coordinate direction; and to determine, based on the third-first prediction value and the third-second prediction value of the third coordinate direction, an index number value of the second context model of the third coordinate direction.

[0651] In some embodiments, the first determination unit 1701 is further configured to determine a first direction value, a second direction value, and a third direction value; wherein the first direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the first coordinate direction, the second direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the second coordinate direction, and the third direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the third coordinate direction, and M is an integer greater than 0;

[0652] The first calculation unit 1703 is further configured to perform an addition calculation on the first direction value, the second direction value and the third direction value to determine a sum value;

[0653] The first determination unit 1701 is further configured to determine a predicted value of the identification information according to the sum value; and determine an index sequence value of the first context model according to the predicted value.

[0654] In some embodiments, the first determination unit 1701 is further configured to determine that a neighbor node in the current node is occupied if the neighbor configuration number is greater than 0; and to determine that no neighbor node in the current node is occupied if the neighbor configuration number is equal to 0.

[0655] In some embodiments, the first determination unit 1701 is further configured to, if the number of occupied sub-nodes is equal to 1, determine that the sub-nodes divided from the current node include only one occupied sub-node; if the number of occupied sub-nodes is not equal to 1, determine that the sub-nodes divided from the current node include at least two occupied sub-nodes.

[0656] In some embodiments, the first determination unit 1701 is further configured to determine that the value of the identification information is a first identification value if the number of occupied subnodes is equal to 1; if the number of occupied subnodes is not equal to 1, determine that the value of the identification information is a second identification value.

[0657] In some embodiments, the first determination unit 1701 is further configured to determine that the value of the identification information is a first identification value if the sub-nodes divided from the current node include only one occupied sub-node; and to determine that the value of the identification information is a second identification value if the sub-nodes divided from the current node include at least two occupied sub-nodes.

[0658] In some embodiments, the first identification value is 1 and the second identification value is 0; or, the first identification value is 0 and the second identification value is 1.

[0659] In some embodiments, the first determining unit 1701 is further configured to obtain the placeholder bit information of the sub-nodes divided from the current node; and calculate the coordinate information of the occupied sub-nodes according to the placeholder bit information of the sub-nodes.

[0660] It is understandable that in the embodiments of the present application, a "unit" may be a part of a circuit, a part of a processor, a part of a program or software, etc., and of course, it may be a module, or it may be non-modular. Moreover, the components in the present embodiment may be integrated into a processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit. The above-mentioned integrated unit may be implemented in the form of hardware or in the form of a software functional module.

[0661] If the integrated unit is implemented in the form of a software function module and is not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this embodiment is essentially or the part that contributes to the prior art or the whole or part of the technical solution can be embodied in the form of a software product. The computer software product is stored in a storage medium, including several instructions for a computer device (which can be a personal computer, server, or network device, etc.) or a processor to perform all or part of the steps of the method described in this embodiment. The aforementioned storage medium includes: U disk, mobile hard disk, read only memory (ROM), random access memory (RAM), disk or optical disk, etc., various media that can store program codes.

[0662] Therefore, an embodiment of the present application provides a computer storage medium, which is applied to the encoder 170, and the computer storage medium stores a point cloud encoding program. When the point cloud encoding program is executed by the first processor, the method described in any one of the aforementioned embodiments is implemented.

[0663] Based on the above-mentioned composition of the encoder 170 and the computer storage medium, see Fig.18 , which shows a schematic diagram of the specific hardware structure of the encoder 170 provided in the embodiment of the present application. Fig.18 As shown, it may include: a first communication interface 1801, a first memory 1802 and a first processor 1803; each component is coupled together through a first bus system 1804. It is understandable that the first bus system 1804 is used to realize the connection and communication between these components. In addition to the data bus, the first bus system 1804 also includes a power bus, a control bus and a status signal bus. However, for the sake of clarity, Fig.18 In the figure, various buses are labeled as the first bus system 1804. Among them,

[0664] The first communication interface 1801 is used for receiving and sending signals during the process of sending and receiving information with other external network elements;

[0665] A first memory 1802, used for storing a computer program that can be run on the first processor 1803;

[0666] The first processor 1803 is configured to, when running the computer program, execute:

[0667] Determine the number of occupied child nodes of the current node;

[0668] Determine a value of identification information of a single child node according to the number of occupied child nodes, perform entropy coding on the value of the identification information using a first context model, and write the entropy coding into a bitstream;

[0669] If the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, the coordinate information of the occupied sub-node is determined, the coordinate information of the occupied sub-node is entropy encoded using the second context model, and written into the bitstream.

[0670] It can be understood that the first memory 1802 in the embodiment of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. By way of example but not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link dynamic random access memory (SLDRAM) and direct memory bus random access memory (DRRAM). The first memory 1802 of the system and method described in the present application is intended to include, but is not limited to, these and any other suitable types of memory.

[0671] The first processor 1803 may be an integrated circuit chip with signal processing capabilities. In the implementation process, each step of the above method can be completed by the hardware integrated logic circuit or software instructions in the first processor 1803. The above-mentioned first processor 1803 can be a general-purpose processor, a digital signal processor (Digital Signal Processor, DSP), an application-specific integrated circuit (Application Specific Integrated Circuit, ASIC), a field programmable gate array (Field Programmable Gate Array, FPGA) or other programmable logic devices, discrete gates or transistor logic devices, discrete hardware components. The methods, steps and logic block diagrams disclosed in the embodiments of the present application can be implemented or executed. The general-purpose processor can be a microprocessor or the processor can also be any conventional processor, etc. The steps of the method disclosed in the embodiments of the present application can be directly embodied as a hardware decoding processor to execute, or the hardware and software modules in the decoding processor are combined and executed. The software module can be located in a mature storage medium in the field such as a random access memory, a flash memory, a read-only memory, a programmable read-only memory or an electrically erasable programmable memory, a register, etc. The storage medium is located in the first memory 1802, and the first processor 1803 reads the information in the first memory 1802 and completes the steps of the above method in combination with its hardware.

[0672] It is to be understood that these embodiments described in the present application can be implemented with hardware, software, firmware, middleware, microcode or a combination thereof. For hardware implementation, the processing unit can be implemented in one or more application specific integrated circuits (Application Specific Integrated Circuits, ASIC), digital signal processors (Digital Signal Processing, DSP), digital signal processing equipment (DSP Device, DSPD), programmable logic devices (Programmable Logic Device, PLD), field programmable gate arrays (Field-Programmable Gate Array, FPGA), general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units or combinations thereof for performing functions described in the present application. For software implementation, the technology described in the present application can be implemented by a module (such as a process, function, etc.) that performs functions described in the present application. The software code can be stored in a memory and executed by a processor. The memory can be implemented in a processor or outside a processor.

[0673] Optionally, as another embodiment, the first processor 1803 is further configured to execute any one of the methods described in the foregoing embodiments when running the computer program.

[0674] This embodiment provides an encoder, which may include a first determining unit and encoding unit. In this way, since context models are constructed for the identification information and coordinate information of a single subnode respectively, entropy encoding of the identification information and coordinate information is performed based on the context model, which can make full use of the spatial correlation of the point cloud, thereby improving the encoding efficiency of the point cloud.

[0675] In another embodiment of the present application, based on the same inventive concept as the above embodiment, see Fig.19 , which shows a schematic diagram of the structure of a decoder 190 provided in an embodiment of the present application. Fig.19 As shown, the decoder 190 may include: a second determining unit 1901 and a decoding unit 1902; wherein,

[0676] The decoding unit 1902 is configured to parse the code stream using the first context model to obtain the value of the identification information of a single child node of the current node;

[0677] The decoding unit 1902 is further configured to parse the bitstream using the second context model to obtain coordinate information of the occupied subnode if the value of the identification information indicates that the subnodes divided from the current node include only one occupied subnode;

[0678] The second determining unit 1901 is configured to determine the placeholder bit information of the sub-nodes divided by the current node based on the coordinate information of the occupied sub-nodes.

[0679] In some embodiments, the second determining unit 1901 is further configured to determine the number of neighbor configurations of the current node;

[0680] The decoding unit 1902 is also configured to, if the neighbor configuration number indicates that a neighbor node in the current node is occupied, then when the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, execute the step of parsing the code stream using the second context model to obtain the coordinate information of the occupied sub-node.

[0681] In some embodiments, the second determination unit 1901 is further configured to determine the value of a single child node enable variable; and when the value of the single child node enable variable indicates that the current node is in a single child node enabled state, determine the first context model and the second context model.

[0682] In some embodiments, the second determination unit 1901 is specifically configured to obtain placeholder bit information of neighboring nodes of the current node; and determine the neighbor configuration number according to the placeholder bit information of the neighboring nodes.

[0683] In some embodiments, the second determination unit 1901 is further configured to determine that the placeholder bit information of the neighboring node is equal to the first value if there is a point occupied in the neighboring node; if there is no point occupied in the neighboring node, determine that the placeholder bit information of the neighboring node is equal to the second value.

[0684] In some embodiments, the first value is 1 and the second value is 0; or, the first value is 0 and the second value is 1.

[0685] In some embodiments, the neighbor nodes include at least one of the following: a neighbor node connected to the left side of the current node, a neighbor node connected to the right side of the current node, a neighbor node connected to the upper side of the current node, a neighbor node connected to the lower side of the current node, a neighbor node connected to the rear side of the current node, and a neighbor node connected to the front side of the current node.

[0686] In some embodiments, see Fig.19 , the decoder 190 may further include a second calculation unit 1903 and a second comparison unit 1904; wherein,

[0687] The second determining unit 1901 is further configured to determine the number of nodes and the number of single sub-nodes;

[0688] The second calculation unit 1903 is configured to perform a division operation on the number of single subnodes and the number of nodes to obtain a first ratio value;

[0689] The second comparison unit 1904 is configured to compare the first ratio value with a preset threshold; and if the first ratio value is greater than the preset threshold, determine that the value of the single child node enable variable is a third value; if the first ratio value is less than or equal to the preset threshold, determine that the value of the single child node enable variable is a fourth value.

[0690] In some embodiments, the third value is 1, and the fourth value is 0; or, the third value is 0, and the fourth value is 1.

[0691] In some embodiments, see Fig.19The decoder 190 may further include a second setting unit 1905, configured to perform octree division on the input point cloud to obtain an octree of K layers, where K is an integer greater than 0; and when entering the i-th layer of the octree, setting the initial value of the number of nodes to 0, the initial value of the number of single child nodes to 0, and the initial value of the single child node enable variable to 0; wherein i is an integer greater than or equal to 0 and less than K.

[0692] In some embodiments, the second determination unit 1901 is further configured to obtain the number of nodes based on the decoded nodes in the i-th layer; and determine the decoded nodes that only include one occupied child node from the decoded nodes to obtain the number of single child nodes.

[0693] In some embodiments, see Fig.19 The decoder 190 may further include a second judgment unit 1906, configured to judge, in a decoded node, whether the sub-nodes divided from the decoded node include only one occupied sub-node; if the judgment result is yes, then add 1 to the number of the single sub-nodes to update the number of the single sub-nodes; if the judgment result is no, then maintain the number of the single sub-nodes unchanged.

[0694] In some embodiments, the second determination unit 1901 is specifically configured to determine the prediction identification information of the current node when the value of the single sub-node enable variable indicates that the current node is in a single sub-node enabled state, and determine the index serial number value of the first context model based on the prediction identification information; and determine the first context model based on the index serial number value of the first context model.

[0695] In some embodiments, see Fig.19 , the decoder 190 may further include a second construction unit 1907, configured to construct at least one first candidate context model; wherein different first candidate context models correspond to different index numbers;

[0696] The second determination unit 1901 is further configured to select, according to the index number value of the first context model, a first candidate context model corresponding to the index number value from the at least one first candidate context model, and determine the selected first candidate context model as the first context model.

[0697] In some embodiments, the second determination unit 1901 is specifically configured to determine the predicted coordinate information of the current node when the value of the single child node enable variable indicates that the current node is in a single child node enabled state, and determine the index sequence number value of the second context model based on the predicted coordinate information; and determine the second context model based on the index sequence number value of the second context model.

[0698] In some embodiments, the second construction unit 1907 is further configured to construct at least one second candidate context model; wherein different second candidate context models correspond to different index numbers;

[0699] The second determination unit 1901 is further configured to select, according to the index number value of the second context model, a second candidate context model corresponding to the index number value from the at least one second candidate context model, and determine the selected second candidate context model as the second context model.

[0700] In some embodiments, the second determination unit 1901 is further configured to obtain the placeholder bit information of the decoded child nodes adjacent to the current node; determine the predicted coordinate values ​​in three coordinate directions based on the decoded child nodes adjacent to the current node; and determine the index sequence number value of the second context model based on the predicted coordinate values ​​in the three coordinate directions.

[0701] In some embodiments, the second determination unit 1901 is further configured to determine the placeholder bit information of the M decoded child nodes connected to the current node in the first coordinate direction from the placeholder bit information of the decoded child nodes adjacent to the current node, and determine the first predicted coordinate value in the first coordinate direction according to the placeholder bit information of the M decoded child nodes connected to the current node in the first coordinate direction; determine the placeholder bit information of the M decoded child nodes connected to the current node in the second coordinate direction from the placeholder bit information of the decoded child nodes adjacent to the current node, and determine the second predicted coordinate value in the second coordinate direction according to the placeholder bit information of the M decoded child nodes connected to the current node in the second coordinate direction; determine the placeholder bit information of the M decoded child nodes connected to the current node in the third coordinate direction from the placeholder bit information of the decoded child nodes adjacent to the current node, and determine the third predicted coordinate value in the third coordinate direction according to the placeholder bit information of the M decoded child nodes connected to the current node in the third coordinate direction; wherein M is an integer greater than 0.

[0702] In some embodiments, the second determination unit 1901 is further configured to determine a first direction value according to the occupied bit information of the M decoded sub-nodes connected to the current node in the first coordinate direction; wherein the first direction value indicates whether there is a point occupied in the M decoded sub-nodes connected to the current node in the first coordinate direction;

[0703] The second comparison unit 1904 is further configured to determine a first predicted value of the first coordinate direction according to a comparison result between the first direction value and a preset direction value.

[0704] In some embodiments, the second determination unit 1901 is further configured to determine a second direction value according to the occupied bit information of the M decoded sub-nodes connected to the current node in the second coordinate direction; wherein the second direction value indicates whether there is a point occupied in the M decoded sub-nodes connected to the current node in the second coordinate direction;

[0705] The second comparison unit 1904 is further configured to determine a second-first prediction value of the second coordinate direction according to a comparison result between the second direction value and a preset direction value.

[0706] In some embodiments, the second determination unit 1901 is further configured to determine a third direction value according to the occupied bit information of the M decoded sub-nodes connected to the current node in the third coordinate direction; wherein the third direction value indicates whether there is a point occupied in the M decoded sub-nodes connected to the current node in the third coordinate direction;

[0707] The second comparison unit 1904 is further configured to determine a third first prediction value of the third coordinate direction according to a comparison result between the third direction value and the preset direction value.

[0708] In some embodiments, the second determination unit 1901 is further configured to determine, based on the placeholder bit information of the decoded subnodes adjacent to the current node, the number of first subnodes occupied by points whose first direction coordinate values ​​are the fifth value and the number of second subnodes occupied by points whose first direction coordinate values ​​are the sixth value in the decoded subnodes on the plane perpendicular to the first coordinate direction, as well as the number of third subnodes occupied by points whose second direction coordinate values ​​are the fifth value and the number of fourth subnodes occupied by points whose second direction coordinate values ​​are the sixth value in the decoded subnodes on the plane perpendicular to the second coordinate direction, and the number of fifth subnodes occupied by points whose third direction coordinate values ​​are the fifth value and the number of sixth subnodes occupied by points whose third direction coordinate values ​​are the sixth value in the decoded subnodes on the plane perpendicular to the third coordinate direction;

[0709] The second comparison unit 1904 is further configured to determine the first second prediction value of the first coordinate direction based on the comparison result of the first sub-node number and the second sub-node number; and determine the second second prediction value of the second coordinate direction based on the comparison result of the third sub-node number and the fourth sub-node number; and determine the third second prediction value of the third coordinate direction based on the comparison result of the fifth sub-node number and the sixth sub-node number.

[0710] In some embodiments, the fifth value is 1 and the sixth value is 0; or, the fifth value is 0 and the sixth value is 1.

[0711] In some embodiments, the second determination unit 1901 is further configured to obtain, based on the predicted coordinate values ​​of the three coordinate directions, a first-first prediction value and a first-second prediction value of the first coordinate direction, a second-first prediction value and a second-second prediction value of the second coordinate direction, and a third-first prediction value and a third-second prediction value of the third coordinate direction; and to determine, based on the first-first prediction value and the first-second prediction value of the first coordinate direction, an index number value of the second context model of the first coordinate direction; to determine, based on the second-first prediction value and the second-second prediction value of the second coordinate direction, an index number value of the second context model of the second coordinate direction; and to determine, based on the third-first prediction value and the third-second prediction value of the third coordinate direction, an index number value of the second context model of the third coordinate direction.

[0712] In some embodiments, the second determination unit 1901 is further configured to determine a first direction value, a second direction value, and a third direction value; wherein the first direction value indicates whether there is a point occupied in the M decoded sub-nodes connected to the current node in the first coordinate direction, the second direction value indicates whether there is a point occupied in the M decoded sub-nodes connected to the current node in the second coordinate direction, and the third direction value indicates whether there is a point occupied in the M decoded sub-nodes connected to the current node in the third coordinate direction, and M is an integer greater than 0;

[0713] The second calculation unit 1903 is further configured to perform an addition calculation on the first direction value, the second direction value and the third direction value to determine a sum value;

[0714] The second determination unit 1901 is further configured to determine a predicted identification value of the identification information according to the sum value; and determine an index sequence value of the first context model according to the predicted identification value.

[0715] In some embodiments, the second determination unit 1901 is further configured to determine that a neighbor node in the current node is occupied if the neighbor configuration number is greater than 0; and to determine that no neighbor node in the current node is occupied if the neighbor configuration number is equal to 0.

[0716] In some embodiments, the second determination unit 1901 is further configured to determine that the sub-nodes divided from the current node include only one occupied sub-node if the value of the identification information is equal to the first identification value; and to determine that the sub-nodes divided from the current node include at least two occupied sub-nodes if the value of the identification information is equal to the second identification value.

[0717] In some embodiments, the first identification value is 1 and the second identification value is 0; or, the first identification value is 0 and the second identification value is 1.

[0718] It can be understood that in this embodiment, a "unit" can be a part of a circuit, a part of a processor, a part of a program or software, etc., and of course it can also be a module, or it can be non-modular. Moreover, the components in this embodiment can be integrated into a processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The above-mentioned integrated unit can be implemented in the form of hardware or in the form of a software functional module.

[0719] If the integrated unit is implemented in the form of a software function module and is not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, this embodiment provides a computer storage medium, which is applied to the decoder 190, and the computer storage medium stores a point cloud decoding program. When the point cloud decoding program is executed by the second processor, the method described in any of the above embodiments is implemented.

[0720] Based on the above-mentioned components of the decoder 190 and the computer storage medium, see Fig. 20 , which shows a schematic diagram of the specific hardware structure of the decoder 190 provided in the embodiment of the present application. Fig. 20 As shown, it may include: a second communication interface 2001, a second memory 2002, and a second processor 2003; each component is coupled together via a second bus system 2004. It is understood that the second bus system 2004 is used to realize the connection and communication between these components. In addition to the data bus, the second bus system 2004 also includes a power bus, a control bus, and a status signal bus. However, for the sake of clarity, Fig. 20 In the figure, various buses are marked as the second bus system 2004. Among them,

[0721] The second communication interface 2001 is used for receiving and sending signals during the process of sending and receiving information with other external network elements;

[0722] The second memory 2002 is used to store a computer program that can be run on the second processor 2003;

[0723] The second processor 2003 is configured to, when running the computer program, execute:

[0724] Parsing the bitstream using the first context model to obtain the value of identification information of a single child node of the current node;

[0725] If the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, parsing the bitstream using the second context model to obtain coordinate information of the occupied sub-node;

[0726] Based on the coordinate information of the occupied sub-nodes, placeholder bit information of the sub-nodes divided from the current node is determined.

[0727] Optionally, as another embodiment, the second processor 2003 is further configured to execute any one of the methods described in the foregoing embodiments when running the computer program.

[0728] It can be understood that the hardware functions of the second memory 2002 and the first memory 1802 are similar, and the hardware functions of the second processor 2003 and the first processor 1803 are similar; they will not be described in detail here.

[0729] This embodiment provides a decoder, which may include a second determination unit and a decoding unit. In this way, since context models are constructed for the identification information and coordinate information of a single subnode respectively, entropy decoding of the identification information and coordinate information based on the context model can make full use of the spatial correlation of the point cloud, thereby improving the decoding efficiency of the point cloud.

[0730] It should be noted that, in this application, the terms "include", "comprises" or any other variants thereof are intended to cover non-exclusive inclusion, so that a process, method, article or device including a series of elements includes not only those elements, but also other elements not explicitly listed, or also includes elements inherent to such process, method, article or device. In the absence of further restrictions, an element defined by the sentence "includes a ..." does not exclude the existence of other identical elements in the process, method, article or device including the element.

[0731] The serial numbers of the above-mentioned embodiments of the present application are for description only and do not represent the advantages or disadvantages of the embodiments.

[0732] The methods disclosed in several method embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments.

[0733] The features disclosed in several product embodiments provided in this application can be arbitrarily combined without conflict to obtain new product embodiments.

[0734] The features disclosed in several method or device embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments or device embodiments.

[0735] The above is only a specific implementation of the present application, but the protection scope of the present application is not limited thereto. Any person skilled in the art who is familiar with the present technical field can easily think of changes or substitutions within the technical scope disclosed in the present application, which should be included in the protection scope of the present application. Therefore, the protection scope of the present application should be based on the protection scope of the claims.

[0736] Industrial Applicability

[0737] In an embodiment of the present application, on the encoder side, the number of occupied child nodes of the current node is determined; the value of identification information of a single child node is determined according to the number of occupied child nodes, the value of the identification information is entropy encoded using a first context model, and written into a bitstream; if the value of the identification information indicates that the child nodes divided from the current node include only one occupied child node, the coordinate information of the occupied child node is determined, the coordinate information of the occupied child node is entropy encoded using a second context model, and written into a bitstream. On the decoder side, the value of identification information of a single child node of the current node is obtained by parsing the bitstream using the first context model; if the value of the identification information indicates that the child nodes divided from the current node include only one occupied child node, the coordinate information of the occupied child node is obtained by parsing the bitstream using the second context model; based on the coordinate information of the occupied child node, the placeholder bit information of the child nodes divided from the current node is determined. In this way, since context models are constructed for the identification information and coordinate information of a single sub-node respectively, entropy encoding and decoding of the identification information and coordinate information based on the context model can make full use of the spatial correlation of the point cloud, thereby improving the encoding and decoding efficiency of the point cloud.

Claims

1. A point cloud encoding method, applied to an encoder, the method comprising: Determine the number of occupied child nodes of the current node; Determine a value of identification information of a single child node according to the number of occupied child nodes, perform entropy coding on the value of the identification information using a first context model, and write the entropy coding into a bitstream; If the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, determining the coordinate information of the occupied sub-node, performing entropy coding on the coordinate information of the occupied sub-node using the second context model, and writing the entropy coding into the bitstream; The method further comprises: Determine the value of the single child node enable variable; When the value of the single child node enable variable indicates that the current node is in a single child node enable state, the first context model and the second context model are determined.

2. The method according to claim 1, wherein: The method further comprises: Determine the number of neighbor configurations of the current node; If the neighbor configuration number indicates that a neighbor node in the current node is occupied, then when the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, the step of entropy encoding the coordinate information of the occupied sub-node using the second context model is executed.

3. The method according to claim 2, wherein: The determining the number of neighbor configurations of the current node includes: Obtaining placeholder bit information of neighboring nodes of the current node; The neighbor configuration number is determined according to the placeholder bit information of the neighbor node.

4. The method according to claim 3, wherein: The obtaining of the placeholder bit information of the neighboring nodes of the current node includes: If there is a point occupancy in the neighboring node, determining that the occupied bit information of the neighboring node is equal to a first value; If there is no point occupancy in the neighboring node, it is determined that the occupied bit information of the neighboring node is equal to the second value.

5. The method according to claim 3 or 4, wherein: The neighbor nodes include at least one of the following: a neighbor node connected to the left side of the current node, a neighbor node connected to the right side of the current node, a neighbor node connected to the upper side of the current node, a neighbor node connected to the lower side of the current node, a neighbor node connected to the rear side of the current node, and a neighbor node connected to the front side of the current node.

6. The method according to claim 1, wherein: Determining the number of occupied child nodes of the current node includes: Obtaining placeholder bit information of child nodes divided from the current node; The number of occupied subnodes is determined according to the occupied bit information of the subnodes.

7. The method according to claim 6, wherein: The obtaining of the placeholder bit information of the child nodes divided from the current node includes: If there is a point occupied in the child node, determining that the occupied bit information of the child node is equal to a first value; If there is no point occupied in the child node, it is determined that the placeholder bit information of the child node is equal to the second value.

8. The method according to claim 4 or 7, wherein: The first value is 1, and the second value is 0; or, the first value is 0, and the second value is 1.

9. The method according to claim 1, wherein: Determining the value of the single child node enabling variable includes: Determine the number of nodes and the number of single child nodes; Performing a division operation on the number of the single sub-nodes and the number of the nodes to obtain a first ratio value; comparing the first ratio value with a preset threshold; If the first ratio value is greater than the preset threshold, determining that the value of the single sub-node enabling variable is a third value; If the first ratio value is less than or equal to the preset threshold, the value of the single sub-node enabling variable is determined to be a fourth value.

10. The method according to claim 9, wherein: The third value is 1, and the fourth value is 0; or, the third value is 0, and the fourth value is 1.

11. The method according to claim 9, wherein: The method further comprises: Perform octree division on the input point cloud to obtain an octree of K layers, where K is an integer greater than 0; When entering the i-th layer of the octree, the initial value of the number of nodes is set to 0, the initial value of the number of single child nodes is set to 0, and the initial value of the single child node enable variable is set to 0; wherein i is an integer greater than or equal to 0 and less than K.

12. The method according to claim 11, wherein: The determining the number of nodes and the number of single sub-nodes includes: Based on the encoded nodes in the i-th layer, obtaining the number of nodes; Determine the encoded nodes including only one occupied child node from the encoded nodes, and obtain the number of single child nodes.

13. The method according to claim 12, wherein: The step of determining, from the encoded nodes, the encoded nodes that include only one occupied child node, and obtaining the number of the single child nodes comprises: In the encoded node, determining whether the sub-nodes divided from the encoded node include only one occupied sub-node; If the judgment result is yes, then the number of the single child node is increased by 1 to update the number of the single child node; If the judgment result is no, the number of the single child node is maintained unchanged.

14. The method according to claim 1, wherein: When the value of the single child node enable variable indicates that the current node is in a single child node enable state, determining the first context model includes: Determine the prediction identification information of the current node, and determine the index sequence value of the first context model according to the prediction identification information; The first context model is determined according to the index sequence number value of the first context model.

15. The method according to claim 14, wherein: The determining the first context model according to the index sequence number value of the first context model includes: Constructing at least one first candidate context model; wherein different first candidate context models correspond to different index numbers; According to the index number value of the first context model, a first candidate context model corresponding to the index number value is selected from the at least one first candidate context model, and the selected first candidate context model is determined as the first context model.

16. The method according to claim 1, wherein: When the value of the single child node enable variable indicates that the current node is in a single child node enable state, determining the second context model includes: Determine the predicted coordinate information of the current node, and determine the index sequence value of the second context model according to the predicted coordinate information; The second context model is determined according to the index sequence number value of the second context model.

17. The method according to claim 16, wherein: The determining the second context model according to the index sequence number value of the second context model includes: Constructing at least one second candidate context model; wherein different second candidate context models correspond to different index numbers; According to the index number value of the second context model, a second candidate context model corresponding to the index number value is selected from the at least one second candidate context model, and the selected second candidate context model is determined as the second context model.

18. The method according to claim 16, wherein: The determining the predicted coordinate information of the current node, and determining the index sequence value of the second context model according to the predicted coordinate information, includes: Obtaining placeholder bit information of an encoded sub-node adjacent to the current node; Determine predicted coordinate values ​​in three coordinate directions according to the placeholder bit information of the encoded sub-nodes adjacent to the current node; Determine the index sequence value of the second context model according to the predicted coordinate values ​​of the three coordinate directions.

19. The method according to claim 18, wherein: The step of determining predicted coordinate values ​​in three coordinate directions according to the placeholder bit information of the encoded sub-nodes adjacent to the current node includes: Determine the placeholder bit information of M coded subnodes connected to the current node in a first coordinate direction from the placeholder bit information of the coded subnodes adjacent to the current node, and determine a first predicted coordinate value in the first coordinate direction according to the placeholder bit information of the M coded subnodes connected to the current node in the first coordinate direction; Determine the placeholder bit information of M coded subnodes connected to the current node in a second coordinate direction from the placeholder bit information of the coded subnodes adjacent to the current node, and determine a second-first predicted coordinate value in the second coordinate direction according to the placeholder bit information of the M coded subnodes connected to the current node in the second coordinate direction; Determine the placeholder bit information of M encoded sub-nodes connected to the current node in a third coordinate direction from the placeholder bit information of the encoded sub-nodes adjacent to the current node, and determine the third-first predicted coordinate value of the third coordinate direction according to the placeholder bit information of the M encoded sub-nodes connected to the current node in the third coordinate direction; wherein M is an integer greater than 0.

20. The method according to claim 19, wherein: The determining a first predicted coordinate value in the first coordinate direction according to the placeholder bit information of the M encoded sub-nodes connected to the current node in the first coordinate direction includes: Determine a first direction value according to the occupied bit information of the M encoded sub-nodes connected to the current node in the first coordinate direction; wherein the first direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the first coordinate direction; A first predicted value of the first coordinate direction is determined according to a comparison result between the first direction value and a preset direction value.

21. The method according to claim 19, wherein: The determining, according to the placeholder bit information of the M encoded sub-nodes connected to the current node in the second coordinate direction, a second-first predicted coordinate value in the second coordinate direction includes: Determine a second direction value according to the occupied bit information of the M encoded sub-nodes connected to the current node in the second coordinate direction; wherein the second direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the second coordinate direction; According to the comparison result between the second direction value and the preset direction value, a second-first prediction value of the second coordinate direction is determined.

22. The method according to claim 19, wherein: The determining, according to the placeholder bit information of the M encoded sub-nodes connected to the current node in the third coordinate direction, a third-first predicted coordinate value in the third coordinate direction comprises: Determine a third direction value according to the occupied bit information of the M encoded sub-nodes connected to the current node in the third coordinate direction; wherein the third direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the third coordinate direction; According to the comparison result between the third direction value and the preset direction value, a third first prediction value of the third coordinate direction is determined.

23. The method according to claim 18, wherein: The step of determining predicted coordinate values ​​in three coordinate directions according to the placeholder bit information of the encoded sub-nodes adjacent to the current node includes: According to the placeholder bit information of the encoded sub-nodes adjacent to the current node, determine the number of first sub-nodes occupied by points whose first direction coordinate values ​​are fifth values ​​and the number of second sub-nodes occupied by points whose first direction coordinate values ​​are sixth values ​​in the encoded sub-nodes on a plane perpendicular to the first coordinate direction, determine the number of third sub-nodes occupied by points whose second direction coordinate values ​​are fifth values ​​and the number of fourth sub-nodes occupied by points whose second direction coordinate values ​​are sixth values ​​in the encoded sub-nodes on a plane perpendicular to the second coordinate direction, and determine the number of fifth sub-nodes occupied by points whose third direction coordinate values ​​are fifth values ​​and the number of sixth sub-nodes occupied by points whose third direction coordinate values ​​are sixth values ​​in the encoded sub-nodes on a plane perpendicular to the third coordinate direction; Determine first and second prediction values ​​of the first coordinate direction based on a comparison result of the first subnode quantity and the second subnode quantity; Determine a second predicted value of the second coordinate direction based on a comparison result of the third subnode quantity and the fourth subnode quantity; Based on the comparison result of the fifth sub-node quantity and the sixth sub-node quantity, a third second prediction value of the third coordinate direction is determined.

24. The method according to claim 23, wherein: The fifth value is 1, and the sixth value is 0; or, the fifth value is 0, and the sixth value is 1.

25. The method of claim 18, wherein: The step of determining the index sequence value of the second context model according to the predicted coordinate values ​​in the three coordinate directions includes: According to the predicted coordinate values ​​of the three coordinate directions, a first-first predicted value and a first-second predicted value in the first coordinate direction, a second-first predicted value and a second-second predicted value in the second coordinate direction, and a third-first predicted value and a third-second predicted value in the third coordinate direction are obtained; Determine an index sequence value of the second context model in the first coordinate direction according to the first-first prediction value and the first-second prediction value in the first coordinate direction; Determine the index number value of the second context model in the second coordinate direction according to the second first prediction value and the second second prediction value in the second coordinate direction; Determine the index sequence value of the second context model in the third coordinate direction according to the third-first prediction value and the third-second prediction value in the third coordinate direction.

26. The method of claim 14, wherein: The determining the prediction identification information of the current node, and determining the index sequence value of the first context model according to the prediction identification information, includes: Determine a first direction value, a second direction value, and a third direction value; wherein the first direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the first coordinate direction, the second direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the second coordinate direction, and the third direction value indicates whether there is a point occupied in the M encoded sub-nodes connected to the current node in the third coordinate direction, and M is an integer greater than 0; Adding the first direction value, the second direction value and the third direction value to determine a sum value; Determining a predicted value of the identification information according to the sum value; According to the predicted value, an index sequence value of the first context model is determined.

27. The method according to claim 2, wherein: The method further comprises: If the neighbor configuration number is greater than 0, it is determined that a neighbor node in the current node is occupied; If the neighbor configuration number is equal to 0, it is determined that no neighbor node in the current node is occupied.

28. The method of claim 1, wherein: The method further comprises: If the number of occupied child nodes is equal to 1, it is determined that the child nodes divided by the current node include only one occupied child node; If the number of occupied child nodes is not equal to 1, it is determined that the child nodes divided from the current node include at least two occupied child nodes.

29. The method of claim 1, wherein: The determining the value of the identification information according to the number of occupied child nodes includes: If the number of occupied child nodes is equal to 1, determining that the value of the identification information is a first identification value; If the number of occupied child nodes is not equal to 1, the value of the identification information is determined to be a second identification value.

30. The method of claim 28, wherein: The determining the value of the identification information according to the number of occupied child nodes includes: If the sub-nodes divided from the current node include only one occupied sub-node, determining that the value of the identification information is a first identification value; If the sub-nodes divided from the current node include at least two occupied sub-nodes, it is determined that the value of the identification information is a second identification value.

31. The method according to claim 29 or 30, wherein: The first identification value is 1, and the second identification value is 0; or, the first identification value is 0, and the second identification value is 1.

32. The method according to any one of claims 1 to 4, wherein: The determining the coordinate information of the occupied sub-node includes: Obtaining placeholder bit information of child nodes divided from the current node; The coordinate information of the occupied subnode is calculated based on the placeholder bit information of the subnode.

33. A point cloud decoding method, applied to a decoder, the method comprising: Parsing the bitstream using the first context model to obtain the value of identification information of a single child node of the current node; If the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, parsing the bitstream using the second context model to obtain coordinate information of the occupied sub-node; Determine the placeholder bit information of the sub-nodes divided by the current node based on the coordinate information of the occupied sub-nodes; The method further comprises: Determine the value of the single child node enable variable; When the value of the single child node enable variable indicates that the current node is in a single child node enable state, the first context model and the second context model are determined.

34. The method of claim 33, wherein: The method further comprises: Determine the number of neighbor configurations of the current node; If the neighbor configuration number indicates that a neighbor node in the current node is occupied, then when the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, the step of parsing the code stream using the second context model to obtain the coordinate information of the occupied sub-node is performed.

35. The method of claim 34, wherein: The determining the number of neighbor configurations of the current node includes: Obtaining placeholder bit information of neighboring nodes of the current node; The neighbor configuration number is determined according to the placeholder bit information of the neighbor node.

36. The method of claim 35, wherein: The obtaining of the placeholder bit information of the neighboring node of the current node includes: If there is a point occupancy in the neighboring node, determining that the occupied bit information of the neighboring node is equal to a first value; If there is no point occupancy in the neighboring node, it is determined that the occupied bit information of the neighboring node is equal to the second value.

37. The method of claim 36, wherein: The first value is 1, and the second value is 0; or, the first value is 0, and the second value is 1.

38. The method according to claim 35 or 36, wherein: The neighbor nodes include at least one of the following: a neighbor node connected to the left side of the current node, a neighbor node connected to the right side of the current node, a neighbor node connected to the upper side of the current node, a neighbor node connected to the lower side of the current node, a neighbor node connected to the rear side of the current node, and a neighbor node connected to the front side of the current node.

39. The method of claim 33, wherein: Determining the value of the single child node enabling variable includes: Determine the number of nodes and the number of single child nodes; Performing a division operation on the number of the single sub-nodes and the number of the nodes to obtain a first ratio value; comparing the first ratio value with a preset threshold; If the first ratio value is greater than the preset threshold, determining that the value of the single sub-node enabling variable is a third value; If the first ratio value is less than or equal to the preset threshold, the value of the single sub-node enabling variable is determined to be a fourth value.

40. The method of claim 39, wherein: The third value is 1, and the fourth value is 0; or, the third value is 0, and the fourth value is 1.

41. The method of claim 39, wherein: The method further comprises: Perform octree division on the input point cloud to obtain an octree of K layers, where K is an integer greater than 0; When entering the i-th layer of the octree, the initial value of the number of nodes is set to 0, the initial value of the number of single child nodes is set to 0, and the initial value of the single child node enable variable is set to 0; wherein i is an integer greater than or equal to 0 and less than K.

42. The method according to claim 41, wherein: The determining the number of nodes and the number of single sub-nodes includes: Based on the decoded nodes in the i-th layer, obtaining the number of nodes; Determine a decoded node including only one occupied child node from the decoded nodes, and obtain the number of single child nodes.

43. The method of claim 42, wherein: The step of determining, from the decoded nodes, decoded nodes that include only one occupied child node, and obtaining the number of single child nodes comprises: In the decoded node, determining whether the child nodes divided by the decoded node include only one occupied child node; If the judgment result is yes, then the number of the single child node is increased by 1 to update the number of the single child node; If the judgment result is no, the number of the single child node is maintained unchanged.

44. The method of claim 33, wherein: When the value of the single child node enable variable indicates that the current node is in a single child node enable state, determining the first context model includes: Determine the prediction identification information of the current node, and determine the index sequence value of the first context model according to the prediction identification information; The first context model is determined according to the index sequence number value of the first context model.

45. The method of claim 44, wherein: The determining the first context model according to the index sequence number value of the first context model includes: Constructing at least one first candidate context model; wherein different first candidate context models correspond to different index numbers; According to the index number value of the first context model, a first candidate context model corresponding to the index number value is selected from the at least one first candidate context model, and the selected first candidate context model is determined as the first context model.

46. ​​The method of claim 33, wherein: When the value of the single child node enable variable indicates that the current node is in a single child node enable state, determining the second context model includes: Determine the predicted coordinate information of the current node, and determine the index sequence value of the second context model according to the predicted coordinate information; The second context model is determined according to the index sequence number value of the second context model.

47. The method of claim 46, wherein: The determining the second context model according to the index sequence number value of the second context model includes: Constructing at least one second candidate context model; wherein different second candidate context models correspond to different index numbers; According to the index number value of the second context model, a second candidate context model corresponding to the index number value is selected from the at least one second candidate context model, and the selected second candidate context model is determined as the second context model.

48. The method of claim 46, wherein: The determining the predicted coordinate information of the current node, and determining the index sequence value of the second context model according to the predicted coordinate information, includes: Obtaining placeholder bit information of decoded child nodes adjacent to the current node; Determine predicted coordinate values ​​in three coordinate directions according to the placeholder bit information of the decoded child nodes adjacent to the current node; Determine the index sequence value of the second context model according to the predicted coordinate values ​​of the three coordinate directions.

49. The method of claim 48, wherein: The step of determining predicted coordinate values ​​in three coordinate directions according to the placeholder bit information of the decoded child nodes adjacent to the current node includes: Determine the placeholder bit information of M decoded child nodes connected to the current node in a first coordinate direction from the placeholder bit information of the decoded child nodes adjacent to the current node, and determine a first predicted coordinate value in the first coordinate direction according to the placeholder bit information of the M decoded child nodes connected to the current node in the first coordinate direction; Determine the placeholder bit information of M decoded child nodes connected to the current node in a second coordinate direction from the placeholder bit information of the decoded child nodes adjacent to the current node, and determine a second-first predicted coordinate value in the second coordinate direction according to the placeholder bit information of the M decoded child nodes connected to the current node in the second coordinate direction; Determine the placeholder bit information of M decoded child nodes connected to the current node in a third coordinate direction from the placeholder bit information of the decoded child nodes adjacent to the current node, and determine the third predicted coordinate value of the third coordinate direction according to the placeholder bit information of the M decoded child nodes connected to the current node in the third coordinate direction; wherein M is an integer greater than 0.

50. The method of claim 49, wherein: The determining a first predicted coordinate value in the first coordinate direction according to the placeholder bit information of the M decoded sub-nodes connected to the current node in the first coordinate direction includes: Determine a first direction value according to the occupied bit information of the M decoded child nodes connected to the current node in the first coordinate direction; wherein the first direction value indicates whether there is a point occupied in the M decoded child nodes connected to the current node in the first coordinate direction; A first predicted value of the first coordinate direction is determined according to a comparison result between the first direction value and a preset direction value.

51. The method of claim 49, wherein: The determining a second-first predicted coordinate value in the second coordinate direction according to the placeholder bit information of the M decoded subnodes connected to the current node in the second coordinate direction includes: Determine a second direction value according to the occupied bit information of the M decoded sub-nodes connected to the current node in the second coordinate direction; wherein the second direction value indicates whether there is a point occupied in the M decoded sub-nodes connected to the current node in the second coordinate direction; According to the comparison result between the second direction value and the preset direction value, a second-first prediction value of the second coordinate direction is determined.

52. The method of claim 49, wherein: The determining, according to the placeholder bit information of the M decoded sub-nodes connected to the current node in the third coordinate direction, a third-first predicted coordinate value in the third coordinate direction comprises: Determine a third direction value according to the occupied bit information of the M decoded sub-nodes connected to the current node in the third coordinate direction; wherein the third direction value indicates whether there is a point occupied in the M decoded sub-nodes connected to the current node in the third coordinate direction; According to the comparison result between the third direction value and the preset direction value, a third first prediction value of the third coordinate direction is determined.

53. The method of claim 48, wherein: The step of determining predicted coordinate values ​​in three coordinate directions according to the placeholder bit information of the decoded child nodes adjacent to the current node includes: According to the placeholder bit information of the decoded sub-nodes adjacent to the current node, determine the number of first sub-nodes occupied by the decoded sub-nodes on the plane perpendicular to the first coordinate direction and the number of second sub-nodes occupied by the decoded sub-nodes whose first direction coordinate values ​​are the fifth value, and the number of third sub-nodes occupied by the decoded sub-nodes on the plane perpendicular to the second coordinate direction and the number of fourth sub-nodes occupied by the decoded sub-nodes whose second direction coordinate values ​​are the sixth value, and determine the number of fifth sub-nodes occupied by the decoded sub-nodes on the plane perpendicular to the third coordinate direction and the number of sixth sub-nodes occupied by the decoded sub-nodes whose third direction coordinate values ​​are the sixth value; Determine first and second prediction values ​​of the first coordinate direction based on a comparison result of the first subnode quantity and the second subnode quantity; Determine a second predicted value of the second coordinate direction based on a comparison result of the third subnode quantity and the fourth subnode quantity; Based on the comparison result of the fifth sub-node quantity and the sixth sub-node quantity, a third second prediction value of the third coordinate direction is determined.

54. The method of claim 53, wherein: The fifth value is 1, and the sixth value is 0; or, the fifth value is 0, and the sixth value is 1.

55. The method of claim 48, wherein: The step of determining the index sequence value of the second context model according to the predicted coordinate values ​​in the three coordinate directions includes: According to the predicted coordinate values ​​of the three coordinate directions, a first-first predicted value and a first-second predicted value in the first coordinate direction, a second-first predicted value and a second-second predicted value in the second coordinate direction, and a third-first predicted value and a third-second predicted value in the third coordinate direction are obtained; Determine an index sequence value of the second context model in the first coordinate direction according to the first-first prediction value and the first-second prediction value in the first coordinate direction; Determine the index number value of the second context model in the second coordinate direction according to the second first prediction value and the second second prediction value in the second coordinate direction; Determine the index sequence value of the second context model in the third coordinate direction according to the third-first prediction value and the third-second prediction value in the third coordinate direction.

56. The method of claim 44, wherein: The determining the prediction identification information of the current node, and determining the index sequence value of the first context model according to the prediction identification information, includes: Determine a first direction value, a second direction value, and a third direction value; wherein the first direction value indicates whether a point is occupied in the M decoded child nodes connected to the current node in the first coordinate direction, the second direction value indicates whether a point is occupied in the M decoded child nodes connected to the current node in the second coordinate direction, and the third direction value indicates whether a point is occupied in the M decoded child nodes connected to the current node in the third coordinate direction, and M is an integer greater than 0; Adding the first direction value, the second direction value and the third direction value to determine a sum value; Determining a predicted identification value of the identification information according to the sum value; Determine an index sequence number value of the first context model according to the prediction identification value.

57. The method according to any one of claims 34 to 37, wherein: The method further comprises: If the neighbor configuration number is greater than 0, it is determined that a neighbor node in the current node is occupied; If the neighbor configuration number is equal to 0, it is determined that no neighbor node in the current node is occupied.

58. The method according to any one of claims 33 to 37, wherein: The method further comprises: If the value of the identification information is equal to the first identification value, it is determined that the sub-nodes divided from the current node include only one occupied sub-node; If the value of the identification information is equal to the second identification value, it is determined that the sub-nodes divided from the current node include at least two occupied sub-nodes.

59. The method of claim 58, wherein: The first identification value is 1, and the second identification value is 0; or, the first identification value is 0, and the second identification value is 1.

60. An encoder, comprising a first determining unit and an encoding unit; wherein: The first determining unit is configured to determine the number of occupied child nodes of the current node; The first determining unit is further configured to determine a value of a single child node enabling variable; and when the value of the single child node enabling variable indicates that the current node is in a single child node enabling state, determine a first context model and a second context model; The encoding unit is configured to determine a value of identification information of a single child node according to the number of occupied child nodes, perform entropy encoding on the value of the identification information using the first context model, and write the entropy encoding into a bitstream; The encoding unit is further configured to determine the coordinate information of the occupied sub-node if the value of the identification information indicates that the sub-nodes divided from the current node include only one occupied sub-node, perform entropy encoding on the coordinate information of the occupied sub-node using the second context model, and write the information into the bitstream.

61. An encoder, comprising a first memory and a first processor; wherein: The first memory is used to store a computer program that can be run on the first processor; The first processor is configured to execute the method according to any one of claims 1 to 32 when running the computer program.

62. A decoder, comprising a second determining unit and a decoding unit; wherein: The decoding unit is configured to parse the bitstream using the first context model to obtain the value of the identification information of a single child node of the current node; The decoding unit is further configured to parse the bitstream using the second context model to obtain coordinate information of the occupied subnode if the value of the identification information indicates that the subnodes divided from the current node include only one occupied subnode; The second determining unit is configured to determine the placeholder bit information of the sub-nodes divided by the current node based on the coordinate information of the occupied sub-nodes; The second determination unit is further configured to determine a value of a single child node enable variable; and when the value of the single child node enable variable indicates that the current node is in a single child node enabled state, determine the first context model and the second context model.

63. A decoder, comprising a second memory and a second processor; wherein: The second memory is used to store a computer program that can be run on the second processor; The second processor is configured to execute the method according to any one of claims 33 to 59 when running the computer program.

64. A computer storage medium, wherein: The computer storage medium stores a computer program, which implements the method according to any one of claims 1 to 32 when executed by a first processor, or implements the method according to any one of claims 33 to 59 when executed by a second processor.