WO2022126326A1 - 点云编解码方法、编码器、解码器以及计算机存储介质 - Google Patents

点云编解码方法、编码器、解码器以及计算机存储介质 Download PDF

Info

Publication number
WO2022126326A1
WO2022126326A1 PCT/CN2020/136202 CN2020136202W WO2022126326A1 WO 2022126326 A1 WO2022126326 A1 WO 2022126326A1 CN 2020136202 W CN2020136202 W CN 2020136202W WO 2022126326 A1 WO2022126326 A1 WO 2022126326A1
Authority
WO
WIPO (PCT)
Prior art keywords
value
node
nodes
neighbor
context model
Prior art date
Application number
PCT/CN2020/136202
Other languages
English (en)
French (fr)
Inventor
万帅
王哲诚
Original Assignee
Oppo广东移动通信有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oppo广东移动通信有限公司 filed Critical Oppo广东移动通信有限公司
Priority to PCT/CN2020/136202 priority Critical patent/WO2022126326A1/zh
Priority to CN202311843610.3A priority patent/CN117793350A/zh
Priority to CN202080107662.2A priority patent/CN116530021A/zh
Publication of WO2022126326A1 publication Critical patent/WO2022126326A1/zh
Priority to US18/329,927 priority patent/US20230316586A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Definitions

  • the embodiments of the present application relate to the technical field of encoding and decoding, and in particular, to a point cloud encoding and decoding method, an encoder, a decoder, and a computer storage medium.
  • the geometric information of the point cloud and the attribute information corresponding to each point cloud are encoded separately.
  • the geometric information will be reconstructed, and the encoding of the attribute information will depend on the reconstructed geometric information.
  • the attribute information coding is mainly aimed at the coding of color information, so as to transform the color information from the spatial domain to the frequency domain to obtain high-frequency coefficients and low-frequency coefficients.
  • the coefficients are quantized and entropy encoded to generate a binary code stream.
  • 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 make full use of the spatial correlation of point clouds, thereby improving encoding and decoding efficiency.
  • an embodiment of the present application provides a point cloud encoding method, which is applied to an encoder, and the method includes:
  • the relevant information of the current node is entropy encoded using the context model, and written into the code stream; wherein the relevant information includes at least one of: identification information of a single child node and coordinate information of the single child node.
  • an embodiment of the present application provides a point cloud decoding method, which is applied to a decoder, and the method includes:
  • the code stream is parsed by using the context model, and the relevant information of the current node is obtained; wherein, the relevant information includes at least one of: identification information of a single child node and coordinate information of the single child node.
  • an embodiment of the present application provides an encoder, the encoder includes a first acquiring unit, a first determining unit, and an encoding unit; wherein,
  • the first obtaining unit is configured to obtain the occupancy bit information of the neighbor nodes of the current node
  • the first determining unit is configured to determine a context model according to the occupancy bit information of the neighbor node
  • the encoding unit is configured to perform entropy encoding on the relevant information of the current node by using the context model, and write the relevant information into a code stream; wherein, the relevant information includes at least one of: identification information of a single child node and the Coordinate information of a single child node.
  • an embodiment of the present application provides an encoder, where the encoder includes a first memory and a first processor; wherein,
  • a first memory for storing a computer program executable on the first processor
  • the first processor is configured to execute the method according to the first aspect when running the computer program.
  • an embodiment of the present application provides a decoder, the decoder includes a second obtaining unit, a second determining unit, and a decoding unit; wherein,
  • the second obtaining unit is configured to obtain the occupancy bit information of the neighbor nodes of the current node
  • the second determining unit is configured to determine a context model according to the occupancy bit information of the neighbor node
  • the decoding unit is configured to use the context model to parse the code stream and obtain the relevant information of the current node; wherein the relevant information includes at least one of: identification information of a single child node and coordinates of the single child node information.
  • an embodiment of the present application provides a decoder, the decoder includes a second memory and a second processor; wherein,
  • a second memory for storing a computer program executable on the second processor
  • the second processor is configured to execute the method according to the second aspect when running the computer program.
  • an embodiment of the present application provides a computer storage medium, where the computer storage medium stores a computer program, and when the computer program is executed by the first processor, the method described in the first aspect is implemented, or the computer program is executed by the second processor.
  • the processor implements the method as described in the second aspect when executed.
  • the embodiments of the present application provide a point cloud encoding and decoding method, an encoder, a decoder, and a computer storage medium.
  • the occupancy bit information of the neighbor nodes of the current node is obtained; according to the occupancy bits of the neighbor nodes information to determine a context model; use the context model to entropy encode the relevant information of the current node, and write it into a code stream; wherein, the relevant information includes at least one of: the identification information of a single child node and the single Coordinate information of child nodes.
  • the decoder side obtain the occupancy bit information of the neighbor node of the current node; determine a context model according to the occupancy bit information of the neighbor node; use the context model to parse the code stream, and obtain the relevant information of the current node;
  • the related information includes at least one of: identification information of a single child node and coordinate information of the single child node.
  • 1A is a schematic diagram of the frame composition of a G-PCC encoder provided by the related art
  • 1B is a schematic diagram of the framework composition of a G-PCC decoder provided by the related art
  • FIG. 2 is a schematic structural diagram of a neighbor configuration number provided by the related art
  • FIG. 3 is a schematic structural diagram of the occupied number of a child node provided by the related art
  • FIG. 4 is a schematic flowchart of a point cloud encoding method provided by an embodiment of the present application.
  • FIG. 5 is a schematic flowchart of predicting identification information according to neighbor nodes according to an embodiment of the present application
  • FIG. 6 is a schematic diagram of the location structure of a current node and 26 neighbor nodes according to an embodiment of the present application
  • FIG. 7 is a schematic flowchart of predicting coordinate information according to neighbor nodes according to an embodiment of the present application.
  • FIG. 8 is another schematic flowchart of predicting coordinate information according to neighbor nodes according to an embodiment of the present application.
  • FIG. 9 is a detailed schematic flowchart of a point cloud encoding method provided by an embodiment of the present application.
  • FIG. 10 is a schematic flowchart of a point cloud decoding method provided by an embodiment of the present application.
  • FIG. 11 is a detailed schematic flowchart of a point cloud decoding method provided by an embodiment of the present application.
  • FIG. 12 is a schematic diagram of the composition and structure of an encoder according to an embodiment of the application.
  • FIG. 13 is a schematic diagram of a specific hardware structure of an encoder provided by an embodiment of the application.
  • FIG. 14 is a schematic diagram of the composition and structure of a decoder provided by an embodiment of the present application.
  • FIG. 15 is a schematic diagram of a specific hardware structure of a decoder provided by an embodiment of the present application.
  • first ⁇ second ⁇ third involved in the embodiments of the present application is only to distinguish similar objects, and does not represent a specific ordering of objects. It is understandable that “first ⁇ second ⁇ third” "Where permitted, the specific order or sequence may be interchanged to enable the embodiments of the application described herein to be practiced in sequences other than those illustrated or described herein.
  • CABAC Context-based Adaptive Binary Arithmetic Coding
  • the point cloud is the three-dimensional representation of the surface of the object
  • the point cloud (data) on the surface of the object can be collected through acquisition equipment such as photoelectric radar, lidar, laser scanner, and multi-view camera.
  • a point cloud refers to a collection of massive three-dimensional points, and the points in the point cloud can include the location information of the point and the attribute information of the point.
  • the position information of the point may be three-dimensional coordinate information of the point.
  • the position information of the point may also be referred to as the geometric information of the point.
  • the attribute information of the points may include color information and/or reflectivity, among others.
  • the color information may be information in any color space.
  • 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).
  • the color information may be luminance chrominance (YcbCr, YUV) information. Among them, Y represents brightness (Luma), Cb (U) represents blue color difference, and Cr (V) represents red color difference.
  • the points in the point cloud may include the three-dimensional coordinate information of the point and the laser reflection intensity (reflectance) of the point.
  • the points in the point cloud may include three-dimensional coordinate information of the point and color information of the point.
  • a point cloud is obtained by combining the principles of laser measurement and photogrammetry, and the points in the point cloud may include three-dimensional coordinate information of the point, laser reflection intensity (reflectance) of the point, and color information of the point.
  • Point clouds can be divided into:
  • the first type of static point cloud that is, the object is static, and the device that obtains the point cloud is also static;
  • the second type of dynamic point cloud the object is moving, but the device that obtains the point cloud is stationary;
  • the third type of dynamic point cloud acquisition the device that acquires the point cloud is moving.
  • point clouds are divided into two categories according to their use:
  • Category 1 Machine perception point cloud, which can be used in scenarios such as autonomous navigation systems, real-time inspection systems, geographic information systems, visual sorting robots, and rescue and relief robots;
  • Category 2 Human eye perception point cloud, which can be used in point cloud application scenarios such as digital cultural heritage, free viewpoint broadcasting, 3D immersive communication, and 3D immersive interaction.
  • the point cloud is a collection of massive points, storing the point cloud will not only consume a lot of memory, but also is not conducive to transmission, and there is no such a large bandwidth to support the direct transmission of the point cloud at the network layer without compression. cloud for compression.
  • the point cloud coding framework that can compress the point cloud can be the Geometry Point Cloud Compression (G-PCC) codec framework provided by the Moving Picture Experts Group (MPEG). Or a video-based point cloud compression (Video Point Cloud Compression, V-PCC) codec framework, or the AVS-PCC codec framework provided by the Audio Video Standard (AVS).
  • G-PCC codec framework can be used to compress the first type of static point cloud and the third type of dynamically acquired point cloud, and the V-PCC codec framework can be used to compress the second type of dynamic point cloud.
  • the G-PCC codec framework is also called point cloud codec TMC13, and the V-PCC codec framework is also called point cloud codec TMC2.
  • the slices are independently encoded.
  • the slices are independently encoded.
  • 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 geometry information.
  • the encoder performs coordinate transformation on the geometric information, so that all point clouds are contained in a bounding box; then quantization is performed. This step of quantization mainly plays the role of scaling. Due to the rounding of quantization, the geometric information of some points is the same. According to the parameter To decide whether to remove duplicate points, the process of quantifying and removing duplicate points is also called the voxelization process.
  • octree-based division is performed on the bounding box. According to the different depth of octree division, the encoding of geometric information is divided into two frameworks based on octree and triangular patch set.
  • the bounding box is divided into 8 sub-cubes, and the occupancy bits of the sub-cubes are recorded (where 1 is non-empty, 0 is empty), and for non-empty sub-cubes
  • the occupancy bits of the sub-cubes are recorded (where 1 is non-empty, 0 is empty), and for non-empty sub-cubes
  • the spatial correlation between nodes and surrounding nodes is used to perform intra-frame prediction on the occupied bits, and finally arithmetic coding (CABAC) is performed to generate a binary geometric bit stream, that is, a geometric code stream.
  • CABAC arithmetic coding
  • the octree division is also performed first, but the difference lies in the octree-based geometric information coding.
  • This method does not need to divide the point cloud into the edge length of 1 ⁇ 1 ⁇ 1 unit cube, but stop dividing when the side length of the block is W.
  • Based on the surface formed by the distribution of point clouds in each block we can obtain at most ten points generated by the surface and the twelve edges of the block. two vertexes. Finally, the vertex coordinates of each block are encoded in turn to generate a binary geometric bit stream, that is, a geometric code stream.
  • the G-PCC encoder After the G-PCC encoder completes the geometric information encoding, it reconstructs the geometric information, and uses the reconstructed geometric information to encode the attribute information of the point cloud.
  • the attribute encoding of point cloud mainly encodes the color information of the point in the point cloud.
  • the encoder can perform color space conversion on the color information of the points. For example, when the color information of the points in the input point cloud is represented using 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 with the reconstructed geometric information so that the unencoded attribute information corresponds to the reconstructed geometric information.
  • color information coding there are mainly two transformation methods, one is the distance-based lifting transformation that relies on the LOD division, and the other is the direct RAHT transformation, both of which will transform the color information from the spatial domain.
  • the frequency domain high-frequency coefficients and low-frequency coefficients are obtained, and finally the coefficients are quantized and arithmetically encoded to generate a binary attribute bit stream, that is, an attribute code stream.
  • entropy encoding can be performed based on the geometric information of the neighbor nodes of the point cloud.
  • a context model is constructed according to the occupancy bits of the 6 neighbor nodes of the current node for performing CABAC.
  • NC The neighbor configuration number
  • the value of NC may be 0 to 63, that is, 000000 to 111111 in binary, as shown in FIG. 2 , which shows a schematic structural diagram of a neighbor configuration number provided by the related art.
  • the black-filled node represents the current node, which has 6 neighbor nodes.
  • the number of neighbor configurations is 1; if the neighbor node on the left is somewhat occupied, then the neighbor configuration The number is 2; if the neighbor node on the upper side is a little occupied, the number of neighbor configurations is 4; if the neighbor node on the lower side is a little occupied, the number of neighbor configurations is 8; if the neighbor node on the back side is occupied, the number of neighbor configurations is 16; If the neighbor nodes on the front side are somewhat occupied, the number of neighbor configurations is 32.
  • N oc The Number of occupied child nodes (N oc ) is calculated according to the occupied bits of the child nodes.
  • the value of N oc may be 1 to 8, as shown in FIG. 3 , which shows a schematic structural diagram of the occupied number of child nodes provided by the related art.
  • the geometric bit stream and the attribute bit stream in the binary code stream are independently decoded.
  • the geometric information of the point cloud is obtained through arithmetic decoding-octree synthesis-surface fitting-reconstruction geometry-inverse coordinate transformation;
  • the attribute bit stream through arithmetic decoding-inverse coordinate transformation Quantization-LOD-based inverse promotion or RAHT-based inverse transformation-inverse color conversion to obtain the attribute information of the point cloud, and restore the 3D image model of the point cloud data to be encoded based on the geometric information and attribute information.
  • entropy decoding can also be performed based on the geometric information of the neighbor nodes of the point cloud.
  • the context model is still constructed according to the occupancy bits of the 6 neighbor nodes of the current node for CABAC decoding.
  • Table 1 presents a syntax element and an example of semantic description provided by the related art. Its specific description is as follows.
  • the identification information OccupancyIdxMaybePresent indicates whether there is a bit field corresponding to the syntax element single_child_flag in the code stream.
  • 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.
  • the value of the identification information OccupancyIdx MaybePresent is equal to 1, there is a bit field corresponding to the syntax element single_child_flag in the code stream.
  • a method for determining the value of the identification information OccupancyIdx MaybePresent is shown in the following pseudo code:
  • OccupancyIdxMaybePresent numPlanarAxes ⁇ 3
  • IsPlanar[k] k is 0, 1, and 2, which represent the directions of the x, y, and z coordinate axes, respectively.
  • IsPlanar[k] 1
  • IsPlanar[k] 0
  • Indicates other situations including: when the plane coding mode condition is qualified, the position of the child node divided by the current node occupies two planes perpendicular to the coordinate axis, or the plane coding mode condition is unqualified.
  • numPlanarAxes indicates the number of objects in the coordinate axis direction of the plane encoding mode when the condition of the plane encoding mode is qualified.
  • IsNotPlanar[k] k is 0, 1, and 2, which represent the directions of the x, y, and z coordinate axes, respectively. Specifically, if IsNotPlanar[k] is 1, it means that when the condition of the plane coding mode is qualified, and the position of the child node of the current node occupies two planes perpendicular to the coordinate axis, the plane coding mode is not used; IsNotPlanar[k] is 0 indicates other conditions, including: when the plane coding mode condition is qualified, the position of the child node of the current node forms a plane perpendicular to the coordinate axis, or the plane coding mode condition is unqualified.
  • numNonPlanarAxes indicates the number of objects in the coordinate axis direction for which the plane encoding mode is not used when the plane encoding mode condition is satisfied.
  • numPlanarAxes ⁇ 3 indicates that when the plane coding mode conditions are qualified, not all x, y, and z coordinate axis directions adopt the plane coding mode; (!NeighPattern&&!numNonPlanarAxes) indicates that the number of neighbor configurations is 0, that is, 6 neighbor nodes When no neighbor node is occupied, and the plane coding mode conditions in the x, y, and z coordinate axes are qualified, the position of the sub-nodes divided by the current node forms a plane perpendicular to the coordinate axis, or the plane coding mode conditions are unqualified.
  • "numPlanarAxes ⁇ 3" and "(!NeighPattern&&!numNonPlanarAxes)" are ORed to determine the value of the identification information OccupancyIdx MaybePresent.
  • the encoder uses the above method to determine the value of the identification information OccupancyIdxMaybePresent.
  • the encoder determines that the value of OccupancyIdx MaybePresent is equal to 1, it uses the entropy encoding method corresponding to ae(v) to write the value of single_child_flag into the data unit in the code stream; when the encoder determines that the value of OccupancyIdxMaybePresent is equal to 0, the encoding The controller does not write the value of single_child_flag into the data unit in the code stream.
  • ae(v) indicates that the syntax unit is encoded using the context-adaptive arithmetic entropy coding method
  • the data unit here may be the data unit corresponding to the octree node, for example, the geometric information data unit of the octree node.
  • the encoder decodes the point cloud code stream according to the single_child_flag, for example, encoding the geometric information of the octree nodes; for example, encoding the attribute information of the point cloud data.
  • the decoder uses the above method to determine the value of the identification information OccupancyIdxMaybePresent.
  • the decoder determines that the value of OccupancyIdx MaybePresent is equal to 1, it 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 the value of OccupancyIdx MaybePresent When it is equal to 0, the decoder determines that the bit field corresponding to single_child_flag does not exist in the data unit of the code stream.
  • the decoder does not need to parse the value of single_child_flag in the code stream.
  • the decoder uses the value of single_child_flag. Set to the default value of 0.
  • ae(v) represents using the context-adaptive arithmetic entropy decoding method to parse the bit field corresponding to the syntax unit in the code stream; the data unit here may be the data unit corresponding to the octree node, for example, the octet The geometric information data unit of the tree node.
  • the decoder decodes the point cloud code stream according to the single_child_flag, for example, decoding the geometric information of the octree node; for example, decoding the attribute information of the point cloud data.
  • single_child_flag when the value of single_child_flag is equal to 1, it indicates that the current node includes only one child node to be occupied; when the value of single_child_flag is equal to 0, it indicates that the current node can include multiple child nodes to be occupied. In addition, when no child node is occupied in the current node, the value of single_child_flag will be inferred to be 0 at this time.
  • N oc N oc is 1 (that is, only 1 child node is occupied among the 8 child nodes), and if the flag is 0, it represents the case where N oc is not equal to 1 (that is, there is more than 1 child node among the 8 child nodes). occupied).
  • occupancy_idx[i] represents the i-th bit of the traversal order index of a single child node in the current node in the octree child node traversal order.
  • the 0th bit represents the coordinate value (0 or 1) of a single child node in the z direction of the current node
  • the first bit represents the coordinate value (0 or 1) of a single child node in the y direction in the current node
  • the second bit represents the x-coordinate value (0 or 1) of a single child node in the current node.
  • An embodiment of the present application provides a point cloud encoding method.
  • the basic idea of the method is to: obtain occupancy bit information of neighbor nodes of the current node; determine a context model according to the occupancy bit information of the neighbor nodes; use the The context model performs entropy encoding on the relevant information of the current node, and writes it into the code stream; wherein the relevant information includes at least one of: identification information of a single child node and coordinate information of the single child node.
  • the context model is constructed by using the occupancy bit information of the neighbor nodes, the identification information and coordinate information of a single child node are entropy-coded based on the constructed context model, which can make full use of the spatial correlation of the point cloud, thereby improving the Encoding and decoding efficiency of point clouds.
  • the point cloud encoding method provided by the embodiment of the present application is applied to a video encoding device, that is, a G-PCC encoder, which may also be referred to as an encoder for short.
  • the functions implemented by the method can be implemented by the first processor in the encoder calling a computer program.
  • the computer program can be stored in the first memory.
  • the encoder includes at least a first processor and a first memory.
  • FIG. 4 it shows a schematic flowchart of a point cloud encoding method provided by an embodiment of the present application. As shown in Figure 4, the method may include:
  • S401 Acquire occupancy bit information of neighbor nodes of the current node.
  • a point 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.
  • the current node may also be referred to as the current point or the current block, and specifically refers to the point or block currently to be encoded in the point cloud.
  • the method in the embodiment of the present application is mainly applied to the “context modeling” part, aiming at the geometric information based on the point cloud neighbor nodes in the current related art.
  • Entropy coding is optimized to improve the utilization of spatial correlation.
  • the occupancy bit information of a neighbor node is determined according to whether or not a point is occupied in the neighbor node.
  • the obtaining occupancy bit information of neighbor nodes of the current node may include:
  • the neighbor node includes at least one of the following: a neighbor node coplanar with the current node, a neighbor node collinear with the current node, and a neighbor node co-located with the current node .
  • the neighbor node of the current node is determined from the at least one point.
  • the number of neighbor nodes of the current node is 26 in total. Among them, the number of neighbor nodes that are coplanar with the current node is 6, the number of neighbor nodes that are collinear with the current node is 12, and the number of neighbor nodes that are co-located with the current node is 8.
  • 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.
  • the first value may be set to 1, and the second value may be set to 0, but there is no specific limitation.
  • the occupancy bit information of the neighbor node is equal to 1; if there is no point occupation in a neighbor node, then the The occupancy bit information of the neighbor node is equal to 0. Conversely, if the occupancy bit information of a neighbor node is equal to 1, it means that the neighbor node has a point occupied; if the occupancy bit information of a neighbor node is equal to 0, it means that the neighbor node has no point occupied.
  • S403 Use the context model to perform entropy coding on the relevant information of the current node, and write it into a code stream.
  • the related information may include at least one of: identification information of a single child node and coordinate information of a single child node.
  • the context model may include a first context model and a second context model. The first context model is used to predict the identification information of a single child node, and the second context model is used to predict the coordinate information of the single child node.
  • the context model is determined according to the occupancy bit information of the neighbor node , which can include:
  • the first context model is determined according to the predicted identification information of the current node.
  • the index number value of the first context model can be determined according to the prediction identification information of the current node, and then the first context model can be determined according to the index number value of the first context model. Therefore, in some embodiments, the determining the first context model according to the prediction identification information of the current node may include:
  • the first context model is determined according to the index number value of the first context model.
  • the method may further include: constructing at least one first candidate context model; wherein different first candidate context models correspond to different index numbers.
  • the determining the first context model according to the index number value of the first context model may include:
  • 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 The first context model.
  • At least one first candidate context model may be pre-built in this embodiment of the present application, and different first candidate context models output different identification information, and different first candidate context models correspond to different index numbers.
  • different index numbers can be determined according to different identification information.
  • the first candidate context model corresponding to the index sequence number value may be selected from the at least one first candidate context model to determine the value of the first context model. is the first context model.
  • performing entropy encoding on the relevant information of the current node by using the context model, and writing the code stream may include:
  • the identification information of the single child node is entropy encoded by using the first context model, and written into the code stream.
  • the number of occupied child nodes (Number of occupied child nodes, N oc ) is used to indicate whether any child nodes of the multiple child nodes of the current node are occupied.
  • the determining the occupied number of child nodes of the current node may include:
  • the occupied number of the child node is determined according to the occupied bit information of the child node.
  • the sub-nodes divided by the current node usually include 8 sub-nodes, that is, the current node is divided into 8 sub-nodes, as shown in FIG. 3 .
  • the occupancy bit information of the child node is determined according to whether a point is occupied in the child node.
  • the obtaining the occupancy bit information of the child nodes divided by the current node may include:
  • 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.
  • the first value may be set to 1, and the second value may be set to 0, but there is no specific limitation.
  • the occupancy bit information of the child node is equal to 1; if there is no point occupied in a child node, then the The placeholder information of the child node is equal to 0.
  • the occupied number of child nodes can be calculated. For example, if only one child node is occupied among 8 child nodes, the calculated number of child nodes occupied is equal to 1; on the contrary, if more than one child node is occupied among the 8 child nodes, the calculated child node is occupied by The occupancy number is not equal to 1.
  • the method may also include:
  • occupied number of child nodes is equal to 1, it is determined that only one occupied child node is included in the child nodes divided by the current node;
  • the number of occupied child nodes is not equal to 1, it is determined that the child nodes divided by the current node include at least two occupied child nodes.
  • the occupied number of child nodes ranges from 1 to 8. That is to say, if the occupied number of child nodes is equal to 1, it can indicate that only one child node in the current node is occupied, that is, only one occupied child node is included in the child nodes divided by the current node. At this time, the occupied child node That is, the single child node described in the embodiment of the present application; if the number of occupied child nodes is not equal to 1, it can indicate that more than one child node in the current node is occupied, that is, the child nodes divided by the current node include at least two Occupy child nodes.
  • the determination of the identification information (eg, flag bit, flag) of a single child node is mainly related to the occupied number of child nodes. Therefore, in a specific embodiment, the determining the identification information of the single child node according to the occupied number of the child nodes may include:
  • the occupied number of the child node is equal to 1, it is determined that the value of the identification information of the single child node is the first identification value
  • the occupied number of the child node is not equal to 1, it is determined that the value of the identification information of the single child node is the second identification value.
  • the determining the identification information of the single child node according to the occupied number of child nodes may include:
  • the value of the identification information of the single child node is a second identification value.
  • 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.
  • the first identification value may be set to 1, and the second identification value may be set to 0, but it is not specifically limited.
  • the value of the identification information may also be the number of occupied child nodes. For example, if there is no occupied child node in the child nodes divided by the current node, the value of the identification information is equal to 0; if the child nodes divided by the current node include only one occupied child node, then the value of the identification information is equal to 1; If the child nodes divided by the current node include at least two occupied child nodes, the value of the identification information is greater than or equal to 2.
  • the value of the identification information can be entropy encoded by using the first context model, and written into the code stream.
  • the context is determined according to the occupancy bit information of the neighbor node Models, which can include:
  • the second context model is determined according to the predicted coordinate information of the current node.
  • the index number value of the second context model can be determined according to the predicted coordinate information of the current node, and then the second context model can be determined according to the index number value of the second context model. Therefore, in some embodiments, the determining the second context model according to the predicted coordinate information of the current node may include:
  • the second context model is determined according to the index number value of the second context model.
  • the method may further include: constructing at least one second candidate context model; wherein different second candidate context models correspond to different index numbers.
  • the determining of the second context model according to the index number value of the second context model may include:
  • 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 The second context model.
  • At least one second candidate context model can be pre-built in this embodiment of the present application, and different second candidate context models output different coordinate information, and different second candidate context models also correspond to different index numbers.
  • different index numbers can also be determined according to different identification information.
  • the second candidate context model corresponding to the index sequence number value may be selected from the at least one second candidate context model to determine it. is the second context model.
  • performing entropy encoding on the relevant information of the current node by using the context model, and writing the code stream may include:
  • the identification information of the single child node indicates that only one child node is occupied in the child nodes divided by the current node, determine the coordinate information of the single child node; and use the second context model to analyze the single child node.
  • the coordinate information of the node is entropy encoded and written into the code stream.
  • the value of the identification information indicates that only one child node is occupied in the child nodes divided by the current node, it is necessary to determine the coordinate information of the only occupied child node (may be referred to as "single child node") at this time. , in order to entropy encode the coordinate information of a single child node and write it into the code stream.
  • the method may further include: determining the neighbor configuration number of the current node.
  • the entropy coding method used for the coordinate information of a single child node can be further determined.
  • the coordinate information of the node is encoded by entropy, or the coordinate information of a single sub-node is encoded by an isoprobability static binary arithmetic encoding.
  • the performing entropy encoding on the relevant information of the current node by using the context model, and writing into the code stream may include:
  • the neighbor configuration number indicates that a neighbor node is occupied in the current node
  • the identification information of the single child node indicates that only one child node is occupied among the child nodes divided by the current node
  • the method may also include:
  • the neighbor configuration number indicates that no neighbor node is occupied in the current node
  • the identification information of the single child node indicates that only one occupied child node is included in the child nodes divided by the current node
  • determine the coordinate information of a single child node determines the coordinate information of a single child node; and perform isoprobability static binary arithmetic coding on the coordinate information of the single child node, and write the code stream.
  • the Neighbouring configuration number is used to indicate whether any neighbor nodes that are coplanar with the current node are occupied or not.
  • the determining the number of neighbor configurations of the current node includes:
  • the neighbor configuration number is determined according to the occupancy bit information of the neighbor node that is coplanar with the current node.
  • the neighbor nodes coplanar with the current node may 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 current node A neighbor node connected to the upper side of the node, a neighbor node connected to the lower side of the current node, a neighbor node connected to the back side of the current node, and a neighbor node connected to the front side of the current node. That is to say, there are usually 6 neighbor nodes coplanar with the current node, as shown in FIG. 2 .
  • the occupancy bit information of the neighbor node is determined according to whether there is a point occupied in the neighbor node.
  • the obtaining the occupancy bit information of the neighbor nodes of the current node may include:
  • 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.
  • the first value may be set to 1, and the second value may be set to 0, but there is no specific limitation.
  • the occupancy bit information of the neighbor node is equal to 1; if there is no point occupied in a neighbor node, the occupancy bit information of the neighbor node is equal to 0.
  • the number of neighbor configurations can be calculated. For example, if none of the 6 neighbor nodes is occupied, it is represented as 000000 in binary, and the calculated neighbor configuration number is equal to 0; otherwise, if any of the 6 neighbor nodes is occupied, it is represented as 000001 in binary. ⁇ 111111, the number of neighbor configurations calculated at this time is 1 to 63, that is, the number of neighbor configurations at this time is greater than 0.
  • the method may also include:
  • the neighbor configuration number is greater than 0, it is determined that a neighbor node is occupied in the current node
  • the neighbor configuration number is equal to 0, it is determined that no neighbor node is occupied in the current node.
  • the value range of the neighbor configuration number is 0-63. That is to say, if the number of neighbor configurations is greater than 0, it means that there are neighbor nodes in the current node that are occupied; if the number of neighbor configurations is equal to 0, it means that no neighbor nodes in the current node are occupied.
  • the determining the coordinate information of the single child node may include:
  • the coordinate information of a single child node can be obtained by calculating according to the occupancy bit information of the 8 child nodes. Then, when the neighbor configuration number indicates that there are neighbor nodes in the current node occupied and the identification information of a single child node indicates that only one child node is occupied in the child nodes divided by the current node, the second context model can be used at this time.
  • the coordinate information of a single child node is entropy encoded and written into the code stream.
  • the method may further include:
  • the determining the context model according to the occupancy bit information of the neighbor node may include:
  • the context model is determined according to the occupancy bit information of the neighbor node.
  • this embodiment of the present application introduces a new variable, that is, a single child node enable variable (which can be represented by ctxSingleChildEnabled).
  • a single child node enable variable which can be represented by ctxSingleChildEnabled.
  • the context model such as the first context model and the second context model, so that the first context model and the second context model can be used subsequently.
  • the second context model performs entropy coding on the relevant information of the current node.
  • the single child node enable variable is related to the number of nodes (represented by N all ) and the number of single child nodes (represented by N singe ).
  • the determining the value of the single child node enable variable may include:
  • the value of the single child node enable variable is determined according to the comparison result between the first proportional value and the first threshold.
  • the determining the value of the single child node enable variable according to the comparison result between the first proportional value and the first threshold value may include:
  • the value of the single child node enable variable is a fourth value.
  • 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.
  • the third value may be set to 1, and the fourth value may be set to 0, but it is not specifically limited.
  • the first threshold may be used as a measurement index for judging the value of the enable variable of a single child node.
  • the first threshold may represent a preset fixed value (for example, obtained from an empirical value), or a value determined by an adaptive algorithm, or even a code stream written by an encoder to make The value that can be obtained by parsing the code stream in the decoder.
  • the value range of the first threshold is within [0, 1], and the specific adjustment is made according to the actual situation.
  • the first threshold may be set to 0.8, but it is not specifically limited.
  • a single child node enable variable can be represented by ctxSingleChildEnabled.
  • the determination of the enable variable of a single child node can be realized according to the following formula, as shown in the following:
  • N singe ⁇ N all represents the first proportional value.
  • the first scale value is greater than 0.8, then the value of ctxSingleChildEnabled is 1; otherwise, if the first scale value is less than or equal to 0.8, then the value of ctxSingleChildEnabled is 0.
  • the method may also include:
  • the method may also include:
  • the initial value of the number of nodes is set to 0, the initial value of the number of single child nodes is 0, and the initial value of the single child node enable variable is 0;
  • i is an integer greater than or equal to 0 and less than K.
  • K represents the number of layers of the octree
  • K is an integer greater than 0.
  • the determining the number of nodes and the number of single child nodes may include:
  • the coded node including only one occupied child node is determined from the coded nodes, and the single child node number is obtained.
  • both the number of nodes and the number of single child nodes are the encoded nodes in the i-th layer.
  • the determining from the encoded nodes an encoded node that includes only one occupied child node, and obtaining the number of single child nodes may include:
  • the coded node determine whether the sub-nodes divided by the coded node include only one occupied sub-node
  • an octree of K layers can be obtained.
  • N all the number of single child nodes
  • the value of the single child node enable variable (ctxSingleChildEnabled) can be calculated in combination with formula (1), so as to determine whether entropy coding needs to be performed using the context model subsequently.
  • the occupancy bit information of the neighbor node can be used to construct the context model, and then CABAC is used to construct a single child node
  • the coordinate information encoding can further improve the encoding efficiency.
  • adjacent_child_contextualization_enabled_flag 1 indicates that the adjacent children of neighboring octree nodes are used for bit-wise occupancy contextualization
  • the context model is determined according to the occupancy bit information of the neighbor node , which can include:
  • the first context model is determined according to the predicted identification information of the current node.
  • the determination of the first context model is related to the prediction identification information of the current node, and the prediction identification information of the current node is determined by the occupancy bit information of the neighbor nodes.
  • the determining the prediction identification information of the current node according to the occupancy bit information of the neighbor node may include:
  • the occupancy bit information of the neighbor node determine the number of first nodes occupied by a point in the neighbor nodes coplanar with the current node;
  • the prediction identification information of the current node is determined.
  • the first number of nodes here refers to the number of nodes occupied by a point in the neighbor nodes coplanar with the current node.
  • there are a total of 6 neighbor nodes coplanar with the current node which are: the neighbor node connected to the left side of the current node, the neighbor node connected to the right side of the current node, and the current node.
  • the first number of nodes may be represented by N on , where N on represents the number of neighbor nodes occupied by a point among the 6 neighbor nodes coplanar with the current node, and N on may be 0 to 6.
  • the determining the prediction identification information of the current node according to the number of the first nodes may include:
  • the predicted identification information of the current node is determined according to the comparison result of the first node number and the second threshold.
  • the determining the prediction identification information of the current node according to the comparison result between the number of the first nodes and the second threshold may include:
  • the prediction identification information of the current node is equal to a sixth value.
  • 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.
  • the fifth value may be set to 1, and the sixth value may be set to 0, but there is no specific limitation. .
  • the second threshold may be used as a measurement index for judging the value of the prediction identification information of the current node.
  • the second threshold may represent a preset fixed value, or a value determined by an adaptive algorithm, or even a code stream written by an encoder so that the decoder can pass parsing The value obtained by the code stream.
  • the value range of the second threshold is within [0, 6], which is specifically adjusted according to the actual situation.
  • the second threshold may be set to 3, but it is not specifically limited.
  • two context models can be constructed, as shown in the following:
  • FIG. 5 it shows a schematic flowchart of predicting identification information according to a neighbor node according to an embodiment of the present application. As shown in Figure 5, the process may include:
  • the predicted value of the identification information can be determined according to N on , and then the index number value of the first context model can be determined, and then according to the two first candidate contexts shown in equation (2)
  • the first candidate context model corresponding to the index number value is selected to determine it as the first context model.
  • the context model is determined according to the occupancy bit information of the neighbor node , which can include:
  • the second context model is determined according to the predicted coordinate information of the current node.
  • the determination of the second context model is related to the prediction coordinate information of the current node, and the prediction coordinate information of the current node is determined by the occupancy bit information of the neighbor node.
  • the determining the predicted coordinate information of the current node according to the occupancy bit information of the neighbor node may include:
  • the occupancy bit information of the neighbor nodes determine the number of second nodes occupied by points in the neighbor nodes in the first plane whose first direction coordinate value corresponds to the seventh value, and the second direction coordinate value corresponds to the seventh value.
  • the number of third nodes occupied by points in the neighbor nodes in the second plane, and the number of fourth nodes occupied by points in the neighbor nodes in the third plane corresponding to the seventh value of the third direction coordinate value;
  • the first group of predicted coordinate information of the current node is obtained.
  • the seventh value may be -1, or the seventh value may be 1.
  • the seventh value may be -1, but it is not specifically limited.
  • the third threshold may be used as a measure for judging the value of the predicted coordinate information of the current node.
  • the third threshold may represent a preset fixed value, or a value determined by an adaptive algorithm, or even a code stream written by an encoder so that the decoder can pass parsing The value obtained by the code stream.
  • the third threshold may be specifically adjusted according to the actual situation, which is not specifically limited here. In a specific example, the third threshold may be set to 0.
  • the coordinate information includes a first direction coordinate value, a second direction coordinate value and a third direction coordinate value.
  • the first direction may be the horizontal coordinate axis (x axis) direction
  • the second direction may be the vertical coordinate axis (y axis) direction
  • the third direction may be the third coordinate axis (z axis) direction.
  • the current node is represented by black filling, and there are 26 neighbor nodes connected to the current node.
  • the coordinate value of the x-axis direction of a single child node that is, the first predicted value, represented by X 0 ), according to which two context models can be constructed, as shown below,
  • the coordinate value of the y-axis direction of a single child node that is, the second-first predicted value, represented by Y 0 ), according to which two context models can be constructed, as shown below,
  • the coordinate value of the z-axis direction of a single child node that is, the third-first predicted value, represented by Z 0 ), according to which two context models can be constructed, as shown below,
  • FIG. 7 it shows a schematic flowchart of predicting coordinate information according to a neighbor node according to an embodiment of the present application. As shown in Figure 7, the process may include:
  • the determining the predicted coordinate information of the current node according to the occupancy bit information of the neighbor node may include:
  • the occupancy bit information of the neighbor nodes determine the number of fifth nodes occupied by points in the neighbor nodes in the first plane whose first direction coordinate value corresponds to the eighth value, and the second direction coordinate value corresponds to the eighth value.
  • a second group of predicted coordinate information of the current node is obtained.
  • the seventh value may be -1, and the eighth value may be 1; or, the seventh value may be 1, and the eighth value may be -1.
  • the seventh value may be -1, and the eighth value may be 1, but it is not specifically limited.
  • the fourth threshold can also be used as a measure for judging the value of the predicted coordinate information of the current node.
  • the fourth threshold may represent a preset fixed value, or a value determined by an adaptive algorithm, or even a code stream written by an encoder so that the decoder can pass parsing The value obtained by the code stream.
  • the fourth threshold may be the same as or different from the third threshold, and may be specifically adjusted according to the actual situation, which is not specifically limited here. In a specific example, the fourth threshold may also be set to 0.
  • the coordinate value in the y-axis direction that is, the second predicted value, represented by Y 1 ), according to which two context models can be constructed, as shown below,
  • the coordinate value in the z-axis direction that is, the third and second predicted value, represented by Z 1 ), according to which two context models can be constructed, as shown below,
  • FIG. 8 shows another schematic flowchart of predicting coordinate information according to neighbor nodes according to an embodiment of the present application. As shown in Figure 8, the process can include:
  • the predicted coordinate information of the first value of the current node can be obtained;
  • the predicted coordinate information of the second value of the current node can be obtained;
  • a second context model can be determined.
  • the determining the second context model according to the predicted coordinate information of the current node may include:
  • the second context model is determined according to the index number value of the second context model.
  • obtaining the index number value of the second context model according to the first group of predicted coordinate information and the second group of predicted coordinate information may include:
  • the first set of predicted coordinate information and the second set of predicted coordinate information obtain the first predicted value and the second predicted value in the first coordinate direction, and obtain the second predicted value and the second predicted value in the second coordinate direction.
  • An index number value of the second context model in the third coordinate direction is determined according to the third first predicted value and the third second predicted value in the third coordinate direction.
  • the index number value of the second context model in the first coordinate direction can be determined accordingly; after obtaining the second coordinate After the second first predicted value and the second second predicted value of the direction, the index number value of the second context model in the second coordinate direction can be determined accordingly; after obtaining the third first predicted value and the second predicted value in the third coordinate direction. After three or two predicted values, the index number value of the second context model in the third coordinate direction can be determined accordingly; thus, the index number value of the second context model is determined, and then from equations (3) to (8)
  • the second candidate context model corresponding to the index sequence number value is selected from the plurality of second candidate context models to determine it as the second context model.
  • the number of context models used for predicting the flag information (flag) may be 2 types of context models.
  • the unique context index number of the identification information can be predicted, and one of the two context models is selected according to the index number for subsequent CABAC on the identification information.
  • a unique context index number can be obtained, and one context model among the 12 types is selected according to the index number so as to perform CABAC on the predicted coordinate value subsequently.
  • the occupancy bit information (occupancy bits) of the 26 neighbor nodes of the current node is obtained, that is, the occupancy bits in the neighbor nodes are occupied.
  • the occupied bit information is 1, otherwise the occupied bit information is 0.
  • the Neighbouring configuration number (NC) can be calculated, and the value range of the NC can be 0 to 2 26 , that is, “26 0s” to “26 1s” in binary.
  • context models with a maximum number of 2 26 contexts can be constructed according to the NC, and n context models among them can be arbitrarily combined, that is, an x number of context models can be constructed, where x can take a value from 1 to 2 26 .
  • the context models constructed above can all be used to encode coordinate information and identification information.
  • a context model can be constructed to perform CABAC on the coordinate information and required flag information of a single child node in the current node.
  • This embodiment provides a point cloud encoding method, by acquiring the occupancy bit information of the neighbor nodes of the current node; determining a context model according to the occupancy bit information of the neighbor nodes; Entropy encoding is performed on the related information of the node, and written into the code stream; wherein, the related information includes at least one of: identification information of a single child node and coordinate information of the single child node.
  • the context model is constructed by using the occupancy bit information of the neighbor nodes, the identification information and coordinate information of a single child node are entropy-coded based on the constructed context model, which can make full use of the spatial correlation of the point cloud, thereby improving the Encoding and decoding efficiency of point clouds.
  • FIG. 9 shows a detailed schematic flowchart of a point cloud encoding method provided by an embodiment of the present application. As shown in Figure 9, the detailed process may include:
  • i is an integer greater than or equal to 0 and less than K, where K represents the number of division layers of the octree. It should be noted that this detailed process is entering the 0th layer of the octree for the first time.
  • j is an integer greater than or equal to 0 and less than N, where N is the total number of nodes in the i-th layer.
  • S905 Calculate the neighbor configuration number NC according to the occupancy bit information of the 6 neighbor nodes of the current node;
  • S906 Calculate the occupied number N oc of the child nodes according to the occupancy bit information of the 8 child nodes divided by the current node;
  • S908 Determine the predicted values (X 0 , Y 0 , Z 0 ) of the first set of coordinate information
  • S909 Determine the predicted values (X 1 , Y 1 , Z 1 ) of the second set of coordinate information
  • S910 Determine the predicted value of the identification information
  • step S907 if the judgment result is yes, then execute S908-S909, and then execute S910; if the judgment result is no, then directly execute S910.
  • step S913 it is determined whether N oc is equal to 1, and if the determination result is no, then S914 is performed; if the determination result is yes, then S915 is directly performed. After S914 and S915, S916 will be executed.
  • S916 perform CABAC on the flag based on the context model of the predicted flag
  • S919 Perform CABAC of the context model based on the predicted coordinate information on the coordinate information X, Y, and Z;
  • step S917 it is determined whether the flag is equal to 1, and if the determination result is yes, S918 to S919 are performed; if the determination result is no, S927 is performed.
  • step S911 if the judgment result is NO, execute S912; if the judgment result is yes, execute S920.
  • step S912 if the judgment result is yes, then execute S913; if the judgment result is no, execute S927.
  • step S920 it is determined whether N oc is equal to 1, and if the determination result is no, then S921 is performed; if the determination result is yes, then S922 is directly performed. After S921 and S922, S923 will be executed.
  • N all N all +1;
  • the assignment flag is 1 to represent the case where N oc is equal to 1 (that is, there is only 1 child node in the 8 child nodes Occupied), assigning the flag to 0 represents the case where N oc is not equal to 1 (that is, more than one child node of the 8 child nodes is occupied). Since the prediction flag has been obtained, at this time, adaptive binary arithmetic coding based on the context "prediction flag" can be performed on the flag and written into the code stream.
  • the assignment flag is 1 to represent the case where N oc is equal to 1 (that is, only 1 child node is occupied among the 8 child nodes), the assignment If the flag is 0, it means that N oc is not equal to 1 (that is, more than one child node is occupied among the 8 child nodes), and the adaptive binary arithmetic coding based on the context "prediction flag" is performed on the flag and written into the code stream.
  • the coordinate information (X/Y/Z coordinate value) of a single child node of the current node is first calculated according to the occupancy bit information of the eight child nodes of the current node, and the X/Y/Z coordinate values are respectively based on The adaptive binary arithmetic coding of the context "prediction coordinate information" is written into the code stream.
  • the protection point of the technical solution of the present application is that a context model of "prediction flag” and "prediction coordinate information" is constructed for the coding of a single child node, and the compression efficiency is improved through CABAC. And control whether the point cloud encoding method is enabled or not through the proportion of nodes with a single child node in all nodes.
  • the technical solution of the present application makes more full use of the spatial correlation of point clouds.
  • the coding efficiency of G-PCC can be further improved. improve.
  • BD-Rate under the condition of lossy compression of geometric information as shown in Table 2 below, which shows that, compared with the related art, under the condition of obtaining the same encoding quality, the encoding rate of the embodiment of the present application is higher than the encoding of the related art
  • the percentage of rate savings negative values for BD-Rate
  • increases positive values for BD-Rate).
  • the Bpip Ratio under the condition of lossless compression of geometric information as shown in Table 3 below, it shows that in the case of no loss of point cloud quality, the coding rate of the embodiment of the present application accounts for the percentage of the coding rate of the related art, here, the numerical value The lower the value, the greater the code rate saved by the embodiment of the present application.
  • This embodiment provides a point cloud encoding method, and the specific implementation of the foregoing embodiment is described in detail through the foregoing embodiment. It can be seen from this that, since a context model is respectively constructed for the identification information and coordinate information of a single sub-node, Entropy coding of identification information and coordinate information based on the constructed context model in this way can make full use of the spatial correlation of the point cloud, thereby improving the coding efficiency of the point cloud.
  • the point cloud decoding method provided by the embodiment of the present application is applied to a video decoding device, that is, a G-PCC decoder, which may also be referred to as a decoder for short.
  • a video decoding device that is, a G-PCC decoder, which may also be referred to as a decoder for short.
  • the functions implemented by the method can be implemented by calling a computer program by the second processor in the decoder.
  • the computer program can be stored in the second memory.
  • the decoder includes at least the second processor and the second memory.
  • FIG. 10 shows a schematic flowchart of a point cloud decoding method provided by an embodiment of the present application. As shown in Figure 10, the method may include:
  • S1001 Acquire occupancy bit information of neighbor nodes of the current node.
  • a point 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.
  • the current node may also be referred to as the current point or the current block, and specifically refers to the point or block currently to be decoded in the point cloud.
  • the method in the embodiment of the present application is mainly applied to the “context modeling” part, aiming at the geometric information based on the point cloud neighbor nodes in the current related art.
  • Entropy decoding is optimized to improve the utilization of spatial correlation.
  • the occupancy bit information of a neighbor node is determined according to whether or not a point is occupied in the neighbor node.
  • the obtaining occupancy bit information of neighbor nodes of the current node may include:
  • the neighbor node includes at least one of the following: a neighbor node coplanar with the current node, a neighbor node collinear with the current node, and a neighbor node co-located with the current node .
  • the neighbor node of the current node is determined from the at least one point.
  • the number of neighbor nodes of the current node is 26 in total.
  • the number of neighbor nodes that are coplanar with the current node is 6
  • the number of neighbor nodes that are collinear with the current node is 12
  • the number of neighbor nodes that are co-located with the current node is 8.
  • 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.
  • the first value may be set to 1, and the second value may be set to 0, but there is no specific limitation.
  • the occupancy bit information of the neighbor node is equal to 1; if there is no point occupation in a neighbor node, then the The occupancy bit information of the neighbor node is equal to 0. Conversely, if the occupancy bit information of a neighbor node is equal to 1, it means that the neighbor node has a point occupied; if the occupancy bit information of a neighbor node is equal to 0, it means that the neighbor node has no point occupied.
  • S1002 Determine a context model according to the occupancy bit information of the neighbor node.
  • S1003 Parse the code stream by using the context model, and obtain relevant information of the current node.
  • the related information includes at least one of: identification information of a single child node and coordinate information of the single child node.
  • the context model may include a first context model and a second context model. The first context model is used to predict the identification information of a single child node, and the second context model is used to predict the coordinate information of the single child node.
  • the context model is determined according to the occupancy bit information of the neighbor node , which can include:
  • the first context model is determined according to the predicted identification information of the current node.
  • the index number value of the first context model can be determined according to the prediction identification information of the current node, and then the first context model can be determined according to the index number value of the first context model. Therefore, in some embodiments, the determining the first context model according to the prediction identification information of the current node may include:
  • the first context model is determined according to the index number value of the first context model.
  • the method may further include: constructing at least one first candidate context model; wherein different first candidate context models correspond to different index numbers.
  • the determining the first context model according to the index number value of the first context model may include:
  • 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 The first context model.
  • the embodiment of the present application may construct at least one first candidate context model in advance, and different first candidate context models output different identification information, and different first candidate context models correspond to different index numbers.
  • different index numbers can be determined according to different identification information.
  • the first candidate context model corresponding to the index sequence number value can then be selected from the at least one first candidate context model to determine is the first context model.
  • the index number value of the first context model can also be determined on the encoder side and then written into the code stream, so that the decoder can directly obtain the index number value of the first context model by parsing the code stream, and then determine However, in this case, the code rate will be increased and the coding efficiency will be reduced.
  • using the context model to parse the code stream to obtain the relevant information of the current node may include:
  • the method may further include:
  • the value of the identification information of the single child node is equal to the first identification value, it is determined that only one child node is occupied in the child nodes divided by the current node;
  • the value of the identification information of the single child node is equal to the second identification value, it is determined that at least two child nodes in the child nodes divided by the current node are occupied.
  • 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.
  • the first identification value may be set to 1, and the second identification value may be set to 0, but it is not specifically limited.
  • the value of the identification information may 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 only one occupied child node is included in the child nodes divided by the current node; If the value of the identification information is greater than or equal to 2, the child nodes divided by the current node include at least two occupied child nodes.
  • the context is determined according to the occupancy bit information of the neighbor node Models, which can include:
  • the second context model is determined according to the predicted coordinate information of the current node.
  • the index number value of the second context model can be determined according to the predicted coordinate information of the current node, and then the second context model can be determined according to the index number value of the second context model. Therefore, in some embodiments, the determining the second context model according to the predicted coordinate information of the current node may include:
  • the second context model is determined according to the index number value of the second context model.
  • the method may further include: constructing at least one second candidate context model; wherein different second candidate context models correspond to different index numbers.
  • the determining of the second context model according to the index number value of the second context model may include:
  • 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 The second context model.
  • At least one second candidate context model can be pre-built in this embodiment of the present application, and different second candidate context models output different coordinate information, and different second candidate context models also correspond to different index numbers.
  • different index numbers can also be determined according to different identification information.
  • the second candidate context model corresponding to the index sequence number value may be selected from the at least one second candidate context model to determine it. is the second context model.
  • the index number value of the second context model can also be determined on the encoder side and then written into the code stream, so that the decoder can directly obtain the index number value of the second context model by parsing the code stream, and then determine However, in this case, the code rate will also be increased and the coding efficiency will be reduced.
  • using the context model to parse the code stream to obtain the relevant information of the current node may include:
  • the code stream is parsed by using the second context model, and the coordinate information of the single child node is obtained.
  • the only child node occupied can be determined by parsing the code stream at this time (may be referred to as "single child node" for short). Node") coordinate information.
  • the entropy encoding method used for the coordinate information of a single child node may be different, and the entropy decoding method used for the coordinate information of a single child node at this time may also be different. Therefore, the embodiment of the present application also needs to determine the number of neighbor configurations of the current node.
  • the method may further include: determining a neighbor configuration number of the current node.
  • the entropy decoding method used for the coordinate information of a single child node can be further determined, for example, using the second context model to parse the code stream method, or the method of parsing the code stream using equal-probability static binary arithmetic.
  • the using the context model to parse the code stream and obtain the relevant information of the current node may include:
  • the second context parses the code stream and obtains the coordinate information of the single child node.
  • the method may also include:
  • the equal probability is used.
  • the static binary arithmetic parses the code stream, and obtains the coordinate information of the single child node.
  • the neighbor configuration number (Neighbouring configuration number, NC) is used to indicate whether any neighbor nodes that are coplanar with the current node are occupied or not.
  • the determining the number of neighbor configurations of the current node may include:
  • the neighbor configuration number is determined according to the occupancy bit information of the neighbor node that is coplanar with the current node.
  • the neighbor nodes coplanar with the current node may 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 current node A neighbor node connected to the upper side of the node, a neighbor node connected to the lower side of the current node, a neighbor node connected to the back side of the current node, and a neighbor node connected to the front side of the current node. That is to say, there are usually 6 neighbor nodes coplanar with the current node, as shown in FIG. 2 .
  • the occupancy bit information of the neighbor node is determined according to whether there is a point occupied in the neighbor node.
  • the obtaining the occupancy bit information of the neighbor nodes of the current node may include:
  • 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.
  • the first value may be set to 1, and the second value may be set to 0, but there is no specific limitation.
  • the occupancy bit information of the neighbor node is equal to 1; if there is no point occupation in a neighbor node, then the The occupancy bit information of the neighbor node is equal to 0. In this way, according to the occupancy bit information of the 6 neighbor nodes of the current node, the number of neighbor configurations can be calculated.
  • the method may also include:
  • the neighbor configuration number is greater than 0, it is determined that a neighbor node is occupied in the current node
  • the neighbor configuration number is equal to 0, it is determined that no neighbor node is occupied in the current node.
  • the value range of the neighbor configuration number is 0-63. That is to say, if the number of neighbor configurations is greater than 0, it means that there are neighbor nodes in the current node that are occupied; if the number of neighbor configurations is equal to 0, it means that no neighbor nodes in the current node are occupied.
  • the embodiment of the present application also introduces a new variable, that is, a single child node enable variable (which can be represented by ctxSingleChildEnabled). Therefore, in some embodiments, before S1002, the method may further include: determining the value of the single child node enable variable;
  • the determining the context model according to the occupancy bit information of the neighbor node may include:
  • the context model is determined according to the occupancy bit information of the neighbor node.
  • the value of the single child node enable variable ie ctxSingleChildEnabled
  • the context model such as the first context model and the second context model
  • the value of the single child node enable variable is related to the number of nodes (represented by N all ) and the number of single child nodes (represented by N singe ).
  • the determining the value of the single child node enable variable may include:
  • the value of the single child node enable variable is determined according to the comparison result between the first proportional value and the first threshold.
  • the determining the value of the single child node enable variable according to the comparison result between the first proportional value and the first threshold value may include:
  • the value of the single child node enable variable is a fourth value.
  • 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.
  • the third value may be set to 1, and the fourth value may be set to 0, but it is not specifically limited.
  • the first threshold may be used as a measurement index for judging the value of the enable variable of a single child node.
  • the first threshold may represent a preset fixed value (for example, obtained from an empirical value), or a value determined by an adaptive algorithm, or even a code stream written by an encoder to make The value that can be obtained by parsing the code stream in the decoder.
  • the value range of the first threshold is within [0, 1], which is specifically adjusted according to the actual situation.
  • the first threshold may be set to 0.8, but it is not specifically limited.
  • the single child node enable variable may be represented by ctxSingleChildEnabled.
  • the determination of the enable variable of a single child node can be realized by the above formula (1).
  • the method may also include:
  • the method may also include:
  • Parse the code stream when it is determined to enter 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 0, and the single child node enables variable The initial value is 0; wherein, i is an integer greater than or equal to 0 and less than K, K represents the number of layers of the octree, and K is an integer greater than 0.
  • K represents the number of layers of the octree
  • K is an integer greater than 0.
  • determining the number of nodes and the number of single child nodes may include:
  • Parsing the code stream when determining that the current node is in the i-th layer of the octree, obtain the number of nodes based on the decoded nodes in the i-th layer;
  • the single child node number is obtained from the decoded nodes in which only one child node is occupied from the decoded nodes.
  • both the number of nodes and the number of single child nodes are the decoded nodes in the i-th layer.
  • determining from the decoded nodes a decoded node that includes only one occupied child node, and obtaining the single number of child nodes may include:
  • the decoded node determine whether the sub-nodes divided by the decoded node include only one occupied sub-node
  • the value of the single child node enable variable (ctxSingleChildEnabled) can be calculated in combination with formula (1), so as to determine whether entropy decoding needs to be performed using the context model subsequently.
  • a context model needs to be constructed at this time, and in the embodiment of the present application, the child node of the neighbor node is not used for
  • the context model is determined according to the occupancy bit information of the neighbor node , which can include:
  • the first context model is determined according to the predicted identification information of the current node.
  • the determination of the first context model is related to the prediction identification information of the current node, and the prediction identification information of the current node is determined by the occupancy bit information of the neighbor nodes.
  • the determining the prediction identification information of the current node according to the occupancy bit information of the neighbor node may include:
  • the occupancy bit information of the neighbor node determine the number of first nodes occupied by a point in the neighbor nodes coplanar with the current node;
  • the prediction identification information of the current node is determined.
  • the first number of nodes may be represented by N on , where N on represents the number of neighbor nodes occupied by a point among the 6 neighbor nodes coplanar with the current node, and N on may be 0 to 6.
  • the determining the predicted identification information of the current node according to the number of the first nodes may include:
  • the predicted identification information of the current node is determined according to the comparison result of the first node number and the second threshold.
  • the determining the prediction identification information of the current node according to the comparison result between the number of the first nodes and the second threshold may include:
  • the prediction identification information of the current node is equal to a sixth value.
  • 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.
  • the fifth value may be set to 1, and the sixth value may be set to 0, but there is no specific limitation. .
  • the second threshold may be used as a measurement index for judging the value of the prediction identification information of the current node.
  • the second threshold may represent a preset fixed value, or a value determined by an adaptive algorithm, or even a code stream written by an encoder so that the decoder can pass parsing The value obtained by the code stream.
  • the value range of the second threshold is within [0, 6], which is specifically adjusted according to the actual situation.
  • the second threshold may be set to 3, but it is not specifically limited.
  • the predicted value of the identification information can be determined according to N on , and then the index number value of the first context model can be determined, and then according to the two first candidate context models shown in equation (2)
  • the first candidate context model corresponding to the index number value is selected to be determined as the first context model.
  • the context model is determined according to the occupancy bit information of the neighbor node , which can include:
  • the second context model is determined according to the predicted coordinate information of the current node.
  • the determination of the second context model is related to the prediction coordinate information of the current node, and the prediction coordinate information of the current node is determined by the occupancy bit information of the neighbor node.
  • the determining the predicted coordinate information of the current node according to the occupancy bit information of the neighbor node may include:
  • the occupancy bit information of the neighbor nodes determine the number of second nodes occupied by points in the neighbor nodes in the first plane whose first direction coordinate value corresponds to the seventh value, and the second direction coordinate value corresponds to the seventh value.
  • the number of third nodes occupied by points in the neighbor nodes in the second plane, and the number of fourth nodes occupied by points in the neighbor nodes in the third plane corresponding to the seventh value of the third direction coordinate value;
  • the first group of predicted coordinate information of the current node is obtained.
  • the seventh value may be -1, or the seventh value may be 1.
  • the seventh value may be -1, but it is not specifically limited.
  • the third threshold may be used as a measure for judging the value of the predicted coordinate information of the current node.
  • the third threshold may represent a preset fixed value, or a value determined by an adaptive algorithm, or even a code stream written by an encoder so that the decoder can pass parsing The value obtained by the code stream.
  • the third threshold may be specifically adjusted according to the actual situation, which is not specifically limited here. In a specific example, the third threshold may be set to 0.
  • the coordinate value in the y-axis direction of a single child node ie, the second-first predicted value, represented by Y 0 ), according to which two context models can be constructed, as shown in the above formula (4).
  • the coordinate value in the z-axis direction of a single child node ie, the third-first predicted value, represented by Z 0 ), according to which two context models can be constructed, as shown in the above formula (5).
  • the determining the predicted coordinate information of the current node according to the occupancy bit information of the neighbor node may include:
  • the occupancy bit information of the neighbor nodes determine the number of fifth nodes occupied by points in the neighbor nodes in the first plane whose first direction coordinate value corresponds to the eighth value, and the second direction coordinate value corresponds to the eighth value.
  • a second group of predicted coordinate information of the current node is obtained.
  • the seventh value may be -1, and the eighth value may be 1; or, the seventh value may be 1, and the eighth value may be -1.
  • the seventh value may be -1, and the eighth value may be 1, but it is not specifically limited.
  • the fourth threshold can also be used as a measure for judging the value of the predicted coordinate information of the current node.
  • the fourth threshold may represent a preset fixed value, or a value determined by an adaptive algorithm, or even a code stream written by an encoder so that the decoder can pass parsing The value obtained by the code stream.
  • the fourth threshold may be the same as or different from the third threshold, and may be specifically adjusted according to the actual situation, which is not specifically limited here. In a specific example, the fourth threshold may also be set to 0.
  • the coordinate value in the y-axis direction that is, the second second prediction value, represented by Y 1 ), according to which two context models can be constructed, as shown in the above formula (7).
  • the coordinate values in the z-axis direction ie, the third and second predicted values, represented by Z 1 ), according to which two context models can be constructed, as shown in the above formula (8).
  • the second context model can be determined according to the two sets of predicted coordinate information.
  • the determining the second context model according to the predicted coordinate information of the current node may include:
  • the second context model is determined according to the index number value of the second context model.
  • obtaining the index number value of the second context model according to the first group of predicted coordinate information and the second group of predicted coordinate information may include:
  • the first set of predicted coordinate information and the second set of predicted coordinate information obtain the first predicted value and the second predicted value in the first coordinate direction, and obtain the second predicted value and the second predicted value in the second coordinate direction.
  • An index number value of the second context model in the third coordinate direction is determined according to the third first predicted value and the third second predicted value in the third coordinate direction.
  • the index number value of the second context model in the first coordinate direction can be determined accordingly; after obtaining the second coordinate After the second first predicted value and the second second predicted value of the direction, the index number value of the second context model in the second coordinate direction can be determined accordingly; after obtaining the third first predicted value and the second predicted value in the third coordinate direction. After three or two predicted values, the index number value of the second context model in the third coordinate direction can be determined accordingly; thus, the index number value of the second context model is determined, and then from equations (3) to (8)
  • the second candidate context model corresponding to the index sequence number value is selected from the plurality of second candidate context models to determine it as the second context model.
  • the number of context models used for predicting the flag information (flag) may be 2 types of context models.
  • the unique context index number of the identification information can be predicted, and one of the two context models is selected according to the index number for subsequent CABAC on the identification information.
  • a unique context index number can be obtained, and one of the 12 context models is selected according to the index number for subsequent CABAC prediction of coordinate values.
  • the occupancy bit information (occupancy bits) of the 26 neighbor nodes of the current node is obtained, that is, the occupancy bits in the neighbor nodes are occupied.
  • the occupied bit information is 1, otherwise the occupied bit information is 0.
  • a neighbor configuration number (Neighbouring configuration number, NC) can be calculated, and the value range of the NC can be 0 to 2 26 , that is, "26 0s" to "26 1s" in binary.
  • NC Neighbouring configuration number
  • n context models among them can be arbitrarily combined, that is, an x number of context models can be constructed, where x can take a value from 1 to 2 26 .
  • the context models constructed above can all be used to decode coordinate information and identification information.
  • One sentence can be summed up as: using the occupancy bit information of the 26 neighbor nodes of the current node, a context model can be constructed, and then decoded through the constructed context model to obtain the required identification information (flag) and determine the occupied information in the current node. Coordinate information of child nodes.
  • the method may further include:
  • the occupancy bit information of the child nodes divided by the current node is determined.
  • the method may further include:
  • the occupancy bit information of the child node is equal to the first value, it is determined that a point in the child node is occupied;
  • the method may further include: determining, according to the occupancy bit information of the child nodes, the occupied number of the child nodes (N oc ).
  • 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.
  • the first value may be set to 1, and the second value may be set to 0, but there is no specific limitation.
  • the occupied bit information of the child node divided by the current node can be restored according to the coordinate information of the occupied child node.
  • This embodiment provides a point cloud decoding method, by acquiring the occupancy bit information of the neighbor nodes of the current node; determining a context model according to the occupancy bit information of the neighbor nodes; Relevant information of the current node; wherein, the relevant information includes at least one of: identification information of a single child node and coordinate information of the single child node.
  • the context model is constructed by using the occupancy bit information of the neighbor nodes, entropy decoding is performed on the identification information and coordinate information of a single child node based on the constructed context model, which can make full use of the spatial correlation of the point cloud, thereby improving the Decoding efficiency of point clouds.
  • FIG. 11 shows a detailed schematic flowchart of a point cloud decoding method provided by an embodiment of the present application. As shown in Figure 11, the detailed process may include:
  • i is an integer greater than or equal to 0 and less than K, where K represents the number of division layers of the octree. It should be noted that this detailed process is entering the 0th layer of the octree for the first time.
  • j is an integer greater than or equal to 0 and less than N, where N is the total number of nodes in the i-th layer.
  • S1105 Calculate the neighbor configuration number NC according to the occupancy bit information of the 6 neighbor nodes of the current node;
  • S1107 Determine the predicted values (X 0 , Y 0 , Z 0 ) of the first set of coordinate information
  • S1108 Determine the predicted values (X 1 , Y 1 , Z 1 ) of the second set of coordinate information
  • step S1106 if the judgment result is yes, then execute S1107-S1108, and then execute S1109; if the judgment result is no, then directly execute S1109.
  • S1115 Restore the occupancy bit information of the 8 child nodes divided by the current node
  • the first context model is used to predict identification information (eg, flag); the second context model is used to predict coordinate information (eg, X/Y/Z coordinate values).
  • step S1113 if the judgment result is yes, execute S1114 to S1115; if the judgment result is no, execute S1120.
  • step S1110 if the judgment result is no, execute S1111; if the judgment result is yes, execute S1116.
  • N all N all +1;
  • the adaptive binary arithmetic decoding based on the context "prediction flag" can be used at this time. to get the flag.
  • flag is equal to 1
  • equal probability static binary arithmetic decoding is used to obtain the coordinate information (X/Y/Z coordinate value) of a single child node in the current node, and the occupancy bit information of 8 child nodes is restored.
  • N all N all +1.
  • the protection point of the technical solution of the present application is that a context model of "prediction flag” and "prediction coordinate information" is constructed for the decoding of a single child node, and the compression efficiency is improved through CABAC. And control whether the point cloud decoding method is enabled or not through the proportion of nodes with a single child node in all nodes.
  • This embodiment provides a point cloud decoding method.
  • the specific implementation of the foregoing embodiment is described in detail through the foregoing embodiment. It can be seen from this that, since a context model is respectively constructed for the identification information and coordinate information of a single sub-node, Entropy decoding of the identification information and coordinate information based on the constructed context model in this way can make full use of the spatial correlation of the point cloud, thereby improving the decoding efficiency of the point cloud.
  • FIG. 12 shows a schematic structural diagram of an encoder 120 provided by an embodiment of the present application.
  • the encoder 120 may include: a first obtaining unit 1201, a first determining unit 1202 and an encoding unit 1203; wherein,
  • the first obtaining unit 1201 is configured to obtain the occupancy bit information of the neighbor nodes of the current node
  • a first determining unit 1202 configured to determine a context model according to the occupancy bit information of the neighbor node
  • the encoding unit 1203 is configured to perform entropy encoding on the relevant information of the current node by using the context model, and write the relevant information into a code stream; wherein, the relevant information includes at least one of: identification information of a single child node and the single Coordinate information of child nodes.
  • the first determining unit 1202 is specifically configured to determine the predicted identification information of the current node according to the occupancy bit information of the neighbor nodes; and determine the predicted identification information of the current node according to the predicted identification information of the current node.
  • the first context model is specifically configured to determine the predicted identification information of the current node according to the occupancy bit information of the neighbor nodes; and determine the predicted identification information of the current node according to the predicted identification information of the current node.
  • the first determining unit 1202 is further configured to determine the occupied number of child nodes of the current node; and determine the identification information of the single child node according to the occupied number of the child nodes;
  • the encoding unit 1203 is specifically configured to perform entropy encoding on the identification information of the single child node by using the first context model, and write the code stream.
  • the first determining unit 1202 is specifically configured to determine the predicted coordinate information of the current node according to the occupancy bit information of the neighbor node; and determine the predicted coordinate information of the current node according to the predicted coordinate information of the current node.
  • the second context model is specifically configured to determine the predicted coordinate information of the current node according to the occupancy bit information of the neighbor node; and determine the predicted coordinate information of the current node according to the predicted coordinate information of the current node.
  • the encoding unit 1203 is specifically configured to determine the coordinate information of the single child node when the identification information of the single child node indicates that only one child node is occupied in the child nodes divided by the current node, The coordinate information of the single child node is entropy encoded by using the second context model, and written into the code stream.
  • the first determining unit 1202 is further configured to determine the neighbor configuration number of the current node
  • the encoding unit 1203 is further configured to, if the neighbor configuration number indicates that a neighbor node is occupied in the current node, the identification information of the single subnode indicates that only one subnode is occupied by the subnodes divided by the current node. When occupied, the coordinate information of the single child node is determined, the coordinate information of the single child node is entropy encoded using the second context model, and written into the code stream.
  • the first determining unit 1202 is further configured to obtain the placeholder information of the child nodes divided by the current node; and calculate the coordinates of the single child node according to the placeholder information of the child nodes information.
  • the neighbor node includes at least one of the following: a neighbor node coplanar with the current node, a neighbor node collinear with the current node, and a neighbor node co-located with the current node.
  • the first determining unit 1202 is further configured to determine that the occupancy bit information of the neighbor node is equal to the first value if a point is occupied in the neighbor node; if there is no point occupied in the neighbor node, Then it is determined that the occupancy bit information of the neighbor node is equal to the second value.
  • the first determining unit 1202 is further configured to obtain the occupancy bit information of the neighbor node coplanar with the current node; and according to the occupancy bit information of the coplanar neighbor node with the current node information to determine the number of neighbor configurations.
  • the first determining unit 1202 is further configured to, if the neighbor configuration number is greater than 0, determine that a neighbor node is occupied in the current node; if the neighbor configuration number is equal to 0, determine the No neighbor node is occupied in the current node.
  • the first determining unit 1202 is further configured to obtain occupancy bit information of the child nodes divided by the current node; and determine the occupied number of the child nodes according to the occupancy bit information of the child nodes .
  • the first determining unit 1202 is further configured to determine that the occupancy bit information of the child node is equal to the first value if a point is occupied in the child node; if no point is occupied in the child node, Then, it is determined that the placeholder information of the child node is equal to the second value.
  • the first value is 1 and the second value is 0; or, the first value is 0 and the second value is 1.
  • the first determining unit 1202 is further configured to, if the occupied number of the child node is equal to 1, determine that the value of the identification information of the single child node is the first identification value; If the occupied number is not equal to 1, it is determined that the value of the identification information of the single child node is the second identification value.
  • the first determining unit 1202 is further configured to, if the occupied number of the child nodes is equal to 1, determine that only one child node is occupied in the child nodes divided by the current node; if the child node is occupied by If the occupation number is not equal to 1, it is determined that at least two child nodes in the child nodes divided by the current node are occupied.
  • the first determining unit 1202 is further configured to, if only one child node is occupied in the child nodes divided by the current node, determine that the value of the identification information of the single child node is a first identification value ; If at least two child nodes in the child nodes divided by the current node are occupied, determine that the value of the identification information of the single child node is the second identification value.
  • 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.
  • the first determining unit 1202 is further configured to determine a value of a single child node enable variable; and the value of the single child node enable variable indicates that the current node is in a single child node enable In the state, the context model is determined according to the occupancy bit information of the neighbor node.
  • the encoder 120 may further include a first comparison unit 1204;
  • the first determining unit 1202 is further configured to determine the number of nodes and the number of single child nodes;
  • the first comparison unit 1204 is configured to perform a division operation on the number of single child nodes and the number of nodes to obtain a first proportional value; and compare the first proportional value with a first threshold value; and A comparison result between a proportional value and the first threshold value determines the value of the single child node enable variable.
  • the first comparison unit 1204 is specifically configured to determine that the value of the single child node enable variable is a third value if the first ratio value is greater than the first threshold; If the value is less than or equal to the first threshold, it is determined that the value of the single child node enable variable is a fourth value.
  • the third value is 1 and the fourth value is 0; or, the third value is 0 and the fourth value is 1.
  • the encoder 120 may further include a dividing unit 1205 and a first setting unit 1206; wherein,
  • the dividing unit 1205 is 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;
  • the first setting unit 1206 is configured to, when entering the i-th layer of the octree, set the initial value of the number of nodes to 0, the initial value of the number of single child nodes to 0, and the single child node to use
  • the initial value of the energy variable is 0; wherein, i is an integer greater than or equal to 0 and less than K.
  • the first obtaining unit 1201 is further configured to, when the current node is in the i-th layer, obtain the number of nodes based on the encoded nodes in the i-th layer; and obtain the number of nodes from the Among the coded nodes, it is determined that only one child node is occupied by the coded node, and the number of the single child node is obtained.
  • the first determining unit 1202 is further configured to, in the encoded node, determine whether only one child node is occupied in the child nodes divided by the encoded node; and if the determination result is yes, then The operation of adding 1 is performed to the number of the single child node, and the number of the single child node is updated; if the judgment result is no, the number of the single child node is maintained unchanged.
  • the first determining unit 1202 is further configured to determine, according to the occupancy bit information of the neighbor nodes, the number of first nodes occupied by points in the neighbor nodes coplanar with the current node; and according to the The first number of nodes determines the prediction identification information of the current node.
  • the first comparing unit 1204 is further configured to compare the first number of nodes with a second threshold; and determine the current The predicted identification information of the node.
  • the first comparing unit 1204 is specifically configured to determine that the predicted identification information of the current node is equal to the fifth value if the number of the first nodes is less than the second threshold; if the number of the first nodes is greater than or is equal to the second threshold, it is determined that the prediction identification information of the current node is equal to the sixth value.
  • the fifth value is 1 and the sixth value is 0; or, the fifth value is 0 and the sixth value is 1.
  • the first determining unit 1202 is specifically configured to obtain the index number value of the first context model according to the prediction identification information of the current node; and determine the index number value of the first context model according to the index number value of the first context model. Describe the first context model.
  • the encoder 120 may further include a first construction unit 1207, configured to construct at least one first candidate context model; wherein, different first candidate context models correspond to different index numbers;
  • the first determining unit 1202 is specifically configured to select a first candidate context model corresponding to the index number value from the at least one first candidate context model according to the index number value of the first context model, and set the The selected first candidate context model is determined to be the first context model.
  • the first determining unit 1202 is further configured to, according to the occupancy bit information of the neighbor node, determine the second point occupied by the first direction coordinate value in the neighbor node in the first plane corresponding to the seventh value The number of nodes, and the number of third nodes occupied by the point in the neighbor node in the second plane corresponding to the seventh value of the second direction coordinate value, and the point in the neighbor node in the third plane corresponding to the seventh value in the third direction coordinate value The number of fourth nodes occupied;
  • the first comparison unit 1204 is further configured to compare the second number of nodes with a third threshold, and determine a first predicted value of the first coordinate direction according to the comparison result; and compare the third number of nodes with a third threshold performing a comparison, and determining the second-first predicted value of the second coordinate direction according to the comparison result; and comparing the fourth node number with the third threshold, and determining the third-first predicted value of the third coordinate direction according to the comparison result; and The first-first predicted value, the second-first predicted value, and the third-first predicted value obtain the first set of predicted coordinate information of the current node.
  • the first determining unit 1202 is further configured to, according to the occupancy bit information of the neighbor node, determine the fifth point occupied by the first direction coordinate value in the neighbor node in the first plane corresponding to the eighth value The number of nodes, and the number of sixth nodes occupied by the point in the neighbor node in the second plane corresponding to the eighth value of the second direction coordinate value, and the point in the neighbor node in the third plane corresponding to the eighth value in the third direction coordinate value The number of seventh nodes occupied;
  • the first comparison unit 1204 is further configured to compare the fifth node number with a fourth threshold, and determine the first and second predicted values of the first coordinate direction according to the comparison result; and compare the sixth node number with a fourth threshold performing a comparison, and determining the second second predicted value of the second coordinate direction according to the comparison result; and comparing the seventh node number with the fourth threshold, and determining the third second predicted value of the third coordinate direction according to the comparison result; From the first second predicted value, the second second predicted value and the third second predicted value, a second set of predicted coordinate information of the current node is obtained.
  • the seventh value is -1 and the eighth value is 1; or, the seventh value is 1 and the eighth value is -1.
  • the first obtaining unit 1201 is further configured to obtain a first set of predicted coordinate information and a second set of predicted coordinate information of the current node; and according to the first set of predicted coordinate information and the second set of predicted coordinate information group prediction coordinate information, and obtain the index number value of the second context model;
  • the first determining unit 1202 is further configured to determine the second context model according to the index number value of the second context model.
  • the first construction unit 1207 is further configured to construct at least one second candidate context model; wherein, different second candidate context models correspond to different index numbers;
  • the first determining unit 1202 is specifically configured to select a second candidate context model corresponding to the index number value from the at least one second candidate context model according to the index number value of the second context model, and set the The selected second candidate context model is determined to be the second context model.
  • the first obtaining unit 1201 is further configured to obtain a first-first predicted value and a second-first prediction in the first coordinate direction according to the first set of predicted coordinate information and the second set of predicted coordinate information value, the second first predicted value and the second second predicted value in the second coordinate direction, the third first predicted value and the third second predicted value in the third coordinate direction;
  • the first determining unit 1202 is further configured to determine, according to the first first predicted value and the first second predicted value of the first coordinate direction, the index number value of the second context model in the first coordinate direction; and according to the second first predicted value and the second second predicted value of the second coordinate direction, determine the index number value of the second context model in the second coordinate direction; and the third first predicted value according to the third coordinate direction The predicted value and the third second predicted value determine the index number value of the second context model in the third coordinate direction.
  • a "unit” may be a part of a circuit, a part of a processor, a part of a program or software, etc., of course, it may also be a module, and it may also be non-modular.
  • each component in this embodiment may be integrated into one processing unit, or each unit may exist physically alone, or two or more units may be integrated into one unit.
  • the above-mentioned integrated units can be implemented in the form of hardware, or can be implemented in the form of software function modules.
  • 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.
  • the technical solution of this embodiment is essentially or Said part that contributes to the prior art or all 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 and includes several instructions for making a computer device (which can be It is a personal computer, a server, or a network device, etc.) or a processor (processor) that executes 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 (Read Only Memory, ROM), random access memory (Random Access Memory, RAM), magnetic disk or optical disk and other media that can store program codes.
  • an embodiment of the present application provides a computer storage medium, which is applied to the encoder 120, where the computer storage medium stores a computer program, and when the computer program is executed by the first processor, any one of the foregoing embodiments is implemented.
  • FIG. 13 shows a schematic diagram of a specific hardware structure of the encoder 120 provided by the embodiment of the present application.
  • it may include: a first communication interface 1301 , a first memory 1302 and a first processor 1303 ; various components are coupled together through a first bus system 1304 .
  • the first bus system 1304 is used to implement connection communication between these components.
  • the first bus system 1304 also includes a power bus, a control bus and a status signal bus.
  • the various buses are labeled as the first bus system 1304 in FIG. 13 . in,
  • the first communication interface 1301 is used for receiving and sending signals in the process of sending and receiving information with other external network elements;
  • a first memory 1302 for storing computer programs that can run on the first processor 1303;
  • the first processor 1303 is configured to, when running the computer program, execute:
  • the relevant information of the current node is entropy encoded using the context model, and written into the code stream; wherein the relevant information includes at least one of: identification information of a single child node and coordinate information of the single child node.
  • the first memory 1302 in this embodiment of the present application may be a volatile memory or a non-volatile memory, or may include both volatile and non-volatile memories.
  • the non-volatile memory may be a read-only memory (Read-Only Memory, ROM), a programmable read-only memory (Programmable ROM, PROM), an erasable programmable read-only memory (Erasable PROM, EPROM), an electrically programmable read-only memory (Erasable PROM, EPROM). Erase programmable read-only memory (Electrically EPROM, EEPROM) or flash memory.
  • Volatile memory may be Random Access Memory (RAM), which acts as an external cache.
  • RAM Static RAM
  • DRAM Dynamic RAM
  • SDRAM Synchronous DRAM
  • SDRAM double data rate synchronous dynamic random access memory
  • Double Data Rate SDRAM DDRSDRAM
  • enhanced SDRAM ESDRAM
  • synchronous link dynamic random access memory Synchlink DRAM, SLDRAM
  • Direct Rambus RAM Direct Rambus RAM
  • the first processor 1303 may be an integrated circuit chip with signal processing capability. In the implementation process, each step of the above-mentioned method may be completed by an integrated logic circuit of hardware in the first processor 1303 or an instruction in the form of software.
  • the above-mentioned first processor 1303 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 ready-made programmable gate array (Field Programmable Gate Array, FPGA) Or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components.
  • DSP Digital Signal Processor
  • ASIC Application Specific Integrated Circuit
  • FPGA Field Programmable Gate Array
  • the methods, steps, and logic block diagrams disclosed in the embodiments of this application can be implemented or executed.
  • a general purpose processor may be a microprocessor or the processor may be any conventional processor or the like.
  • the steps of the method disclosed in conjunction with the embodiments of the present application may be directly embodied as executed by a hardware decoding processor, or executed by a combination of hardware and software modules in the decoding processor.
  • the software modules may be located in random access memory, flash memory, read-only memory, programmable read-only memory or electrically erasable programmable memory, registers and other storage media mature in the art.
  • the storage medium is located in the first memory 1302, and the first processor 1303 reads the information in the first memory 1302, and completes the steps of the above method in combination with its hardware.
  • the embodiments described herein may be implemented in hardware, software, firmware, middleware, microcode, or a combination thereof.
  • the processing unit can be implemented in one or more Application Specific Integrated Circuits (ASIC), Digital Signal Processing (DSP), Digital Signal Processing Device (DSP Device, DSPD), programmable Logic Devices (Programmable Logic Device, PLD), Field-Programmable Gate Array (Field-Programmable Gate Array, FPGA), General Purpose Processors, Controllers, Microcontrollers, Microprocessors, Others for performing the functions described herein electronic unit or a combination thereof.
  • the techniques described herein may be implemented through modules (eg, procedures, functions, etc.) that perform the functions described herein.
  • Software codes may be stored in memory and executed by a processor.
  • the memory can be implemented in the processor or external to the processor.
  • the first processor 1303 is further configured to execute the method described in any one of the foregoing embodiments when running the computer program.
  • This embodiment provides an encoder, and the encoder may include a first acquiring unit, a first determining unit, and an encoding unit.
  • the context model is constructed by using the occupancy bit information of the neighbor nodes, the identification information and coordinate information of a single child node can be entropy decoded based on the constructed context model, so that the spatial correlation of the point cloud can be fully utilized, thereby It can improve the decoding efficiency of point cloud.
  • FIG. 14 it shows a schematic structural diagram of the composition of a decoder 140 provided by an embodiment of the present application.
  • the decoder 140 may include: a second obtaining unit 1401, a second determining unit 1402 and a decoding unit 1403; wherein,
  • the second obtaining unit 1401 is configured to obtain the occupancy bit information of the neighbor nodes of the current node
  • the second determining unit 1402 is configured to determine a context model according to the occupancy bit information of the neighbor node
  • the decoding unit 1403 is configured to use the context model to parse the code stream and obtain relevant information of the current node; wherein the relevant information includes at least one of: identification information of a single child node and coordinate information of the single child node .
  • the second determining unit 1402 is specifically configured to determine the predicted identification information of the current node according to the occupancy bit information of the neighbor nodes; and determine the predicted identification information of the current node according to the predicted identification information of the current node.
  • the first context model is specifically configured to determine the predicted identification information of the current node according to the occupancy bit information of the neighbor nodes; and determine the predicted identification information of the current node according to the predicted identification information of the current node.
  • the decoding unit 1403 is specifically configured to use the first context model to parse the code stream and obtain the identification information of the single child node; wherein the identification information of the single child node is used to indicate the current Whether only one child node is occupied among the child nodes of the node partition.
  • the second determining unit 1402 is further configured to, if the value of the identification information of the single sub-node is equal to the first identification value, determine that only one sub-node is occupied in the sub-nodes divided by the current node ; If the value of the identification information of the single child node is equal to the second identification value, it is determined that at least two child nodes in the child nodes divided by the current node are occupied.
  • 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.
  • the second determining unit 1402 is specifically configured to determine the predicted coordinate information of the current node according to the occupancy bit information of the neighbor nodes; and determine the predicted coordinate information of the current node according to the predicted coordinate information of the current node.
  • the second context model is specifically configured to determine the predicted coordinate information of the current node according to the occupancy bit information of the neighbor nodes; and determine the predicted coordinate information of the current node according to the predicted coordinate information of the current node.
  • the decoding unit 1403 is specifically configured to use the second context model to parse the code stream when the identification information of the single child node indicates that only one child node is occupied in the child nodes divided by the current node, and obtain Coordinate information of the single child node.
  • the second determining unit 1402 is further configured to determine the neighbor configuration number of the current node
  • the decoding unit 1403 is specifically configured to, if the neighbor configuration number indicates that a neighbor node is occupied in the current node, then the identification information of the single sub-node indicates that only one sub-node is occupied by the sub-nodes divided by the current node. When occupied, the code stream is parsed by using the second context model, and the coordinate information of the single child node is obtained.
  • the second determining unit 1402 is further configured to determine, based on the coordinate information of the single child node, the occupancy bit information of the child nodes divided by the current node.
  • the neighbor node includes at least one of the following: a neighbor node coplanar with the current node, a neighbor node collinear with the current node, and a neighbor node co-located with the current node.
  • the second determining unit 1402 is further configured to determine that the occupancy bit information of the neighbor node is equal to the first value if a point is occupied in the neighbor node; if there is no point occupied in the neighbor node, Then it is determined that the occupancy bit information of the neighbor node is equal to the second value.
  • the first value is 1 and the second value is 0; or, the first value is 0 and the second value is 1.
  • the second determining unit 1402 is further configured to obtain the occupancy bit information of the neighbor node coplanar with the current node; and according to the occupancy bit information of the neighbor node coplanar with the current node information to determine the number of neighbor configurations.
  • the second determining unit 1402 is further configured to, if the neighbor configuration number is greater than 0, determine that a neighbor node is occupied in the current node; if the neighbor configuration number is equal to 0, determine the No neighbor node is occupied in the current node.
  • the second determining unit 1402 is further configured to determine a value of a single child node enable variable; and the value of the single child node enable variable indicates that the current node is in a single child node enable In the state, the context model is determined according to the occupancy bit information of the neighbor node.
  • the decoder 140 may further include a second comparison unit 1404;
  • the second determining unit 1402 is further configured to determine the number of nodes and the number of single child nodes;
  • the second comparison unit 1404 is configured to perform a division operation on the number of single child nodes and the number of nodes to obtain a first proportional value; and compare the first proportional value with a first threshold value; and according to the first proportional value A comparison result between a proportional value and the first threshold value determines the value of the single child node enable variable.
  • the second comparison unit 1404 is specifically configured to, if the first ratio value is greater than the first threshold, determine the value of the single child node enable variable to be a third value; if the first ratio If the value is less than or equal to the first threshold, it is determined that the value of the single child node enable variable is a fourth value.
  • the third value is 1 and the fourth value is 0; or, the third value is 0 and the fourth value is 1.
  • the decoder 140 may further include a second setting unit 1405, configured to parse the code stream through the decoding unit 1403, and when determining to enter the i-th layer of the octree, set all The initial value of the number of nodes is 0, the initial value of the number of single child nodes is 0, and the initial value of the single child node enable variable is 0; wherein, i is an integer greater than or equal to 0 and less than K, and K Indicates the number of layers of the octree, and K is an integer greater than 0.
  • the second obtaining unit 1401 is further configured to parse the code stream through the decoding unit 1403, and when it is determined that the current node is at the i-th layer of the octree, Decoding a node to obtain the number of nodes; and determining, from the decoded nodes, a decoded node in which only one child node is occupied to obtain the single child node number.
  • the second obtaining unit 1401 is further configured to, in the decoded node, judge whether only one child node is occupied in the child nodes divided by the decoded node; and if the judgement result is yes, then The operation of adding 1 is performed to the number of the single child node, and the number of the single child node is updated; if the judgment result is no, the number of the single child node is maintained unchanged.
  • the second determining unit 1402 is further configured to determine, according to the occupancy bit information of the neighbor nodes, the number of first nodes occupied by points in the neighbor nodes coplanar with the current node; and according to the The first number of nodes determines the prediction identification information of the current node.
  • the second comparing unit 1404 is further configured to compare the first number of nodes with a second threshold; and determine the current The predicted identification information of the node.
  • the second comparison unit 1404 is specifically configured to determine that the predicted identification information of the current node is equal to the fifth value if the number of the first nodes is less than the second threshold; If it is greater than or equal to the second threshold, it is determined that the prediction identification information of the current node is equal to the sixth value.
  • the fifth value is 1 and the sixth value is 0; or, the fifth value is 0 and the sixth value is 1.
  • the second determining unit 1402 is specifically configured to obtain the index number value of the first context model according to the prediction identification information of the current node; and determine the index number value of the first context model according to the index number value of the first context model. Describe the first context model.
  • the decoder 140 may further include a second construction unit 1406, configured to construct at least one first candidate context model; wherein, different first candidate context models correspond to different index numbers;
  • the second determining unit 1402 is specifically configured to select a first candidate context model corresponding to the index number value from the at least one first candidate context model according to the index number value of the first context model, and set the The selected first candidate context model is determined to be the first context model.
  • the second determining unit 1402 is further configured to, according to the occupancy bit information of the neighbor node, determine the second point occupied by the first direction coordinate value in the neighbor node in the first plane corresponding to the seventh value The number of nodes, and the number of third nodes occupied by the point in the neighbor node in the second plane corresponding to the seventh value of the second direction coordinate value, and the point in the neighbor node in the third plane corresponding to the seventh value in the third direction coordinate value The number of fourth nodes occupied;
  • the second comparing unit 1404 is further configured to compare the second number of nodes with a third threshold, determine a first-to-prediction value of the first coordinate direction according to the comparison result; and compare the third number of nodes with a third threshold performing a comparison, and determining the second-first predicted value of the second coordinate direction according to the comparison result; and comparing the fourth node number with the third threshold, and determining the third-first predicted value of the third coordinate direction according to the comparison result; and The first-first predicted value, the second-first predicted value, and the third-first predicted value obtain the first set of predicted coordinate information of the current node.
  • the second determining unit 1402 is further configured to, according to the occupancy bit information of the neighbor node, determine the fifth point occupied by the point in the neighbor node in the first plane corresponding to the first direction coordinate value corresponding to the eighth value The number of nodes, and the number of sixth nodes occupied by the point in the neighbor node in the second plane corresponding to the eighth value of the second direction coordinate value, and the point in the neighbor node in the third plane corresponding to the eighth value in the third direction coordinate value The number of seventh nodes occupied;
  • the second comparing unit 1404 is further configured to compare the fifth node number with a fourth threshold, determine the first and second predicted values of the first coordinate direction according to the comparison result; and compare the sixth node number with a fourth threshold performing a comparison, and determining the second second predicted value of the second coordinate direction according to the comparison result; and comparing the seventh node number with the fourth threshold, and determining the third second predicted value of the third coordinate direction according to the comparison result; From the first second predicted value, the second second predicted value and the third second predicted value, a second set of predicted coordinate information of the current node is obtained.
  • the seventh value is -1 and the eighth value is 1; or, the seventh value is 1 and the eighth value is -1.
  • the second obtaining unit 1401 is further configured to obtain a first set of predicted coordinate information and a second set of predicted coordinate information of the current node; and according to the first set of predicted coordinate information and the second set of predicted coordinate information group prediction coordinate information, and obtain the index number value of the second context model;
  • the second determining unit 1402 is further configured to determine the second context model according to the index number value of the second context model.
  • the second construction unit 1406 is further configured to construct at least one second candidate context model; wherein, different second candidate context models correspond to different index numbers;
  • the second determining unit 1402 is specifically configured to select a second candidate context model corresponding to the index number value from the at least one second candidate context model according to the index number value of the second context model, and set the The selected second candidate context model is determined to be the second context model.
  • the second obtaining unit 1401 is further configured to obtain a first-first predicted value and a second-first prediction in the first coordinate direction according to the first set of predicted coordinate information and the second set of predicted coordinate information value, the second first predicted value and the second second predicted value in the second coordinate direction, the third first predicted value and the third second predicted value in the third coordinate direction;
  • the second determining unit 1402 is further configured to determine the index number value of the second context model in the first coordinate direction according to the first first predicted value and the first second predicted value in the first coordinate direction; and according to the second first predicted value and the second second predicted value of the second coordinate direction, determine the index number value of the second context model in the second coordinate direction; and the third first predicted value according to the third coordinate direction The predicted value and the third second predicted value determine the index number value of the second context model in the third coordinate direction.
  • a "unit” may be a part of a circuit, a part of a processor, a part of a program or software, etc., of course, it may also be a module, and it may also be non-modular.
  • each component in this embodiment may be integrated into one processing unit, or each unit may exist physically alone, or two or more units may be integrated into one unit.
  • the above-mentioned integrated units can be implemented in the form of hardware, and can also be implemented in the form of software function modules.
  • the integrated unit may be stored in a computer-readable storage medium.
  • this embodiment provides a computer storage medium, which is applied to the decoder 140 , where the computer storage medium stores a computer program, and when the computer program is executed by the second processor, any one of the foregoing embodiments is implemented the method described.
  • FIG. 15 shows a schematic diagram of a specific hardware structure of the decoder 140 provided by the embodiment of the present application.
  • the decoder 140 may include: a second communication interface 1501 , a second memory 1502 and a second processor 1503 ; the various components are coupled together through a second bus system 1504 .
  • the second bus system 1504 is used to implement connection communication between these components.
  • the second bus system 1504 also includes a power bus, a control bus, and a status signal bus.
  • the various buses are designated as the second bus system 1504 in FIG. 15 . in,
  • the second communication interface 1501 is used for receiving and sending signals in the process of sending and receiving information with other external network elements;
  • a second memory 1502 for storing computer programs that can run on the second processor 1503;
  • the second processor 1503 is configured to, when running the computer program, execute:
  • the code stream is parsed by using the context model, and the relevant information of the current node is obtained; wherein, the relevant information includes at least one of: identification information of a single child node and coordinate information of the single child node.
  • the second processor 1503 is further configured to execute the method described in any one of the foregoing embodiments when running the computer program.
  • This embodiment provides a decoder, and the decoder may include a second acquiring unit, a second determining unit, and a decoding unit.
  • the decoder may include a second acquiring unit, a second determining unit, and a decoding unit.
  • the occupancy bit information of the neighbor nodes of the current node is obtained; the context model is determined according to the occupancy bit information of the neighbor node; the correlation model of the current node is determined by using the context model.
  • the information is entropy encoded and written into the code stream; wherein, the related information includes at least one of: identification information of a single child node and coordinate information of the single child node.
  • the decoder side obtain the occupancy bit information of the neighbor node of the current node; determine a context model according to the occupancy bit information of the neighbor node; use the context model to parse the code stream, and obtain the relevant information of the current node;
  • the related information includes at least one of: identification information of a single child node and coordinate information of the single child node.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

一种点云编解码方法、编码器、解码器以及计算机存储介质,该方法包括:获取当前节点的邻居节点的占位比特信息(S401);根据所述邻居节点的占位比特信息,确定上下文模型(S402);利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流(S403);其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。

Description

点云编解码方法、编码器、解码器以及计算机存储介质 技术领域
本申请实施例涉及编解码技术领域,尤其涉及一种点云编解码方法、编码器、解码器以及计算机存储介质。
背景技术
在基于几何的点云压缩(Geometry-based Point Cloud Compression,G-PCC)编码器框架中,点云的几何信息和每个点云所对应的属性信息是分开进行编码的。几何编码完成后,会对几何信息进行重建,而属性信息的编码将依赖于重建的几何信息。其中,属性信息编码主要针对颜色信息的编码,以将颜色信息从空间域变换到频域,得到高频系数和低频系数,最后对系数进行量化和熵编码,生成二进制码流。
然而,目前的相关技术在构建上下文模型时并没有充分利用空间相关性,降低了点云的编解码效率。
发明内容
本申请实施例提供一种点云编解码方法、编码器、解码器以及计算机存储介质,可以充分利用点云的空间相关性,从而能够提高编解码效率。
本申请实施例的技术方案可以如下实现:
第一方面,本申请实施例提供了一种点云编码方法,应用于编码器,该方法包括:
获取当前节点的邻居节点的占位比特信息;
根据所述邻居节点的占位比特信息,确定上下文模型;
利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。
第二方面,本申请实施例提供了一种点云解码方法,应用于解码器,该方法包括:
获取当前节点的邻居节点的占位比特信息;
根据所述邻居节点的占位比特信息,确定上下文模型;
利用所述上下文模型解析码流,获取所述当前节点的相关信息;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。
第三方面,本申请实施例提供了一种编码器,该编码器包括第一获取单元、第一确定单元和编码单元;其中,
所述第一获取单元,配置为获取当前节点的邻居节点的占位比特信息;
所述第一确定单元,配置为根据所述邻居节点的占位比特信息,确定上下文模型;
所述编码单元,配置为利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。
第四方面,本申请实施例提供了一种编码器,该编码器包括第一存储器和第一处理器;其中,
第一存储器,用于存储能够在第一处理器上运行的计算机程序;
第一处理器,用于在运行计算机程序时,执行如第一方面所述的方法。
第五方面,本申请实施例提供了一种解码器,该解码器包括第二获取单元、第二确定单元和解码单元;其中,
所述第二获取单元,配置为获取当前节点的邻居节点的占位比特信息;
所述第二确定单元,配置为根据所述邻居节点的占位比特信息,确定上下文模型;
所述解码单元,配置为利用所述上下文模型解析码流,获取所述当前节点的相关信息;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。
第六方面,本申请实施例提供了一种解码器,该解码器包括第二存储器和第二处理器;其中,
第二存储器,用于存储能够在第二处理器上运行的计算机程序;
第二处理器,用于在运行计算机程序时,执行如第二方面所述的方法。
第七方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如第一方面所述的方法、或者被第二处理器执行时实现如第二方面所述的方法。
本申请实施例提供了一种点云编解码方法、编码器、解码器以及计算机存储介质,在编码器侧,获取当前节点的邻居节点的占位比特信息;根据所述邻居节点的占位比特信息,确定上下文模型;利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。在解码器侧,获取当前节点的邻居节点的占位比特信息;根据所述邻居节点的占位比特信息,确定上下文模型;利用所述上下文模型解析码流,获取所述当前节点的相关信息;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。这样,由于利用邻居节点的占位比特信息来构建上下文模型,如此基于所构建的上下文模型对单一子节点的标识信息和坐标信息进行熵编码,能够充分利用点云的空间相关性,从而能够提高点云的编解码效率。
附图说明
图1A为相关技术提供的一种G-PCC编码器的框架组成示意图;
图1B为相关技术提供的一种G-PCC解码器的框架组成示意图;
图2为相关技术提供的一种邻居配置数的结构示意图;
图3为相关技术提供的一种子节点被占据数的结构示意图;
图4为本申请实施例提供的一种点云编码方法的流程示意图;
图5为本申请实施例提供的一种根据邻居节点预测标识信息的流程示意图;
图6为本申请实施例提供的一种当前节点与26个邻居节点的位置结构示意图;
图7为本申请实施例提供的一种根据邻居节点预测坐标信息的流程示意图;
图8为本申请实施例提供的另一种根据邻居节点预测坐标信息的流程示意图;
图9为本申请实施例提供的一种点云编码方法的详细流程示意图;
图10为本申请实施例提供的一种点云解码方法的流程示意图;
图11为本申请实施例提供的一种点云解码方法的详细流程示意图;
图12为本申请实施例提供的一种编码器的组成结构示意图;
图13为本申请实施例提供的一种编码器的具体硬件结构示意图;
图14为本申请实施例提供的一种解码器的组成结构示意图;
图15为本申请实施例提供的一种解码器的具体硬件结构示意图。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)点云压缩(Point Cloud Compression,PCC)
2)基于几何的点云压缩(Geometry-based Point Cloud Compression,G-PCC)
3)片(slice)
4)包围盒(bounding box)
5)八叉树(octree)
6)帧内预测(intra prediction)
7)三角面片集(triangle soup,trisoup)
8)基于上下文模型的自适应二进制算术编码(Context-based Adaptive Binary Arithmetic Coding,CABAC)
9)块(block)
10)交点(vertex)
11)红绿蓝(Red-Green-Blue,RGB)
12)亮度色度(Luminance-Chrominance,YUV)
13)细节层次(Level of Detail,LOD)
14)区域自适应分层变换(Region Adaptive Hierarchal Transform,RAHT)
15)查找表(Look Up Table,LUT)
16)动态图像专家组(Moving Picture Experts Group,MPEG)
17)国际标准化组织(International Standardization Organization,ISO)
18)国际电工委员会(International Electrotechnical Commission,IEC)
19)邻居节点中占据节点个数(Number of occupied neighbours,No)
这里,点云是物体表面的三维表现形式,通过光电雷达、激光雷达、激光扫描仪、多视角相机等采集设备,可以采集得到物体表面的点云(数据)。
点云(Point Cloud)是指海量三维点的集合,点云中的点可以包括点的位置信息和点的属性信息。例如,点的位置信息可以是点的三维坐标信息。点的位置信息也可称为点的几何信息。例如,点的属性信息可包括颜色信息和/或反射率等等。例如,颜色信息可以是任意一种色彩空间上的信息。例如,颜色信息可以是RGB信息。其中,R表示红色(Red,R),G表示绿色(Green,G),B表示蓝色(Blue,B)。再如,颜色信息可以是亮度色度(YcbCr,YUV)信息。其中,Y表示明亮度(Luma),Cb(U)表示蓝色色差,Cr(V)表示红色色差。
根据激光测量原理得到的点云,点云中的点可以包括点的三维坐标信息和点的激光反射强度(reflectance)。再如,根据摄影测量原理得到的点云,点云中的点可以可包括点的三维坐标信息和点的颜色信息。再如,结合激光测量和摄影测量原理得到点云,点云中的点可以可包括点的三维坐标信息、点的激光反射强度(reflectance)和点的颜色信息。
点云可以按获取的途径分为:
第一类静态点云:即物体是静止的,获取点云的设备也是静止的;
第二类动态点云:物体是运动的,但获取点云的设备是静止的;
第三类动态获取点云:获取点云的设备是运动的。
例如,按点云的用途分为两大类:
类别一:机器感知点云,其可以用于自主导航系统、实时巡检系统、地理信息系统、视觉分拣机器人、抢险救灾机器人等场景;
类别二:人眼感知点云,其可以用于数字文化遗产、自由视点广播、三维沉浸通信、三维沉浸交互等点云应用场景。
由于点云是海量点的集合,存储点云不仅会消耗大量的内存,而且不利于传输,也没有这么大的带宽可以支持将点云不经过压缩直接在网络层进行传输,因此,需要对点云进行压缩。
截止目前,可对点云进行压缩的点云编码框架可以是运动图象专家组(Moving Picture Experts Group,MPEG)提供的基于几何的点云压缩(Geometry Point Cloud Compression,G-PCC)编解码框架或基于视频的点云压缩(Video Point Cloud Compression,V-PCC)编解码框架,也可以是音视频编码标准(Audio Video Standard,AVS)提供的AVS-PCC编解码框架。G-PCC编解码框架可用于针对第一类静态点云和第三类动态获取点云进行压缩,V-PCC编解码框架可用于针对第二类动态点云进行压缩。G-PCC编解码框架也称为点云编解码器TMC13,V-PCC编解码框架也称为点云编解码器TMC2。
可以理解,在点云G-PCC编码器框架中,将输入点云进行slice划分后,再对slice进行独立编码。
如图1A所示的G-PCC编码器的框架中,将输入点云进行slice划分后,对slice进行独立编码。在slice中,点云的几何信息和点云中的点所对应的属性信息是分开进行编码的。G-PCC编码器首先对几何信息进行编码。编码器对几何信息进行坐标转换,使点云全都包含在一个bounding box中;然后再进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点的几何信息相同,根据参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化过程。接下来,对bounding box进行基于八叉树的划分。根据八叉树划分层级深度的不同,几何信息的编码又分为基于八叉树和三角面片集的两种框架。
在基于八叉树的几何信息编码框架中,将包围盒八等分为8个子立方体,并记录子立方体的占位比 特(其中,1为非空,0为空),对非空的子立方体继续进行八等分,通常划分得到的叶子节点为1×1×1的单位立方体时停止划分。在这个过程中,利用节点(node)与周围节点的空间相关性,对占位比特进行帧内预测,最后进行算术编码(CABAC),生成二进制的几何比特流,即几何码流。
在基于三角面片集的几何信息编码框架中,同样也要先进行八叉树划分,但区别在于基于八叉树的几何信息编码,该方法不需要将点云逐级划分到边长为1×1×1的单位立方体,而是划分到block的边长为W时停止划分,基于每个block中点云的分布所形成的表面,得到该表面与block的十二条边产生的至多十二个vertex。最后依次编码每个block的vertex坐标,生成二进制的几何比特流,即几何码流。
G-PCC编码器在完成几何信息编码后,对几何信息进行重建,并使用重建的几何信息对点云的属性信息进行编码。目前,点云的属性编码主要是对点云中点的颜色信息进行编码。首先,编码器可以对点的颜色信息进行颜色空间转换,例如,当输入点云中点的颜色信息使用RGB颜色空间表示时,编码器可以将颜色信息从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色,使得未编码的属性信息与重建的几何信息对应起来。在颜色信息编码中,主要有两种变换方法,一种方法是依赖于LOD划分的基于距离的提升变换,另一种方法是直接进行RAHT变换,这两种方法都会将颜色信息从空间域变换到频域,得到高频系数和低频系数,最后对系数进行量化和算术编码,生成二进制的属性比特流,即属性码流。
基于图1A所示的G-PCC编码器的框架,可以基于点云邻居节点的几何信息进行熵编码。这里,根据当前节点的6个邻居节点的占位比特构建上下文模型,以用于进行CABAC。
一种具体的示例中,在G-PCC编码器侧的具体实施描述如下:
(1)获取当前节点的6个邻居节点的占位比特(occupancy bit)。其中,占位比特表示邻居节点内有无点占据。如果邻居节点内有点占据,那么占位比特为1,否则占位比特则为0。根据邻居节点的占位比特可以计算得出邻居配置数(Neighbouring configuration number,NC)。其中,NC的取值可以为0到63,即二进制的000000到111111,如图2所示,其示出了相关技术提供的一种邻居配置数的结构示意图。在图2中,黑色填充的节点表示当前节点,该当前节点具有6个邻居节点,如果右侧的邻居节点有点占据,那么邻居配置数为1;如果左侧的邻居节点有点占据,那么邻居配置数为2;如果上侧的邻居节点有点占据,那么邻居配置数为4;如果下侧的邻居节点有点占据,那么邻居配置数为8;如果后侧的邻居节点有点占据,那么邻居配置数为16;如果前侧的邻居节点有点占据,那么邻居配置数为32。
(2)获取当前节点的8个子节点的占位比特,即如果子节点内有点占据,那么占位比特为1;否则,如果子节点内无点占据,那么占位比特则为0。根据子节点的占位比特计算得出子节点被占据数(Number of occupied child nodes,N oc)。其中,N oc的取值可以为1到8,如图3所示,其示出了相关技术提供的一种子节点被占据数的结构示意图。一个当前节点可以被划分为8个子节点。在图3中,N oc=1,即当前节点的8个子节点中,只有一个子节点(用黑色填充表示,该子节点简称为单一子节点)内有点占据。
(3)当NC==0时(邻居配置数为0,即6个邻居节点中无邻居节点被占据),这时候如果标志位(flag)的赋值为1,那么代表N oc等于1的情况(即8个子节点中仅有1个子节点被占据);如果flag的赋值为0,那么代表N oc不等于1的情况(即8个子节点中不只1个子节点被占据),并对该flag进行自适应二进制算术编码,写入码流。
(4)当NC==0且flag==1时(6个邻居节点中无邻居节点被占据,且8个子节点中仅有1个子节点被占据),这时候先根据当前节点的8个子节点的占位比特算出其唯一被占据的子节点在当前节点内部的坐标信息(即XYZ坐标值,分别可取值为0、1,以图3为例,XYZ坐标值为(1,0,0)),并分别对XYZ坐标值进行等概率静态二进制算术编码,写入码流。
(5)当NC==0且flag==0时(6个邻居节点中无邻居节点被占据,且8个子节点中不只1个子节点被占据)或者当NC>0时(6个邻居节点中有邻居节点被占据),则对当前节点的8个子节点的占位比特进行CABAC,写入码流。
如图1B所示的G-PCC解码器的框架中,获取二进制码流后,针对二进制码流中的几何比特流和属性比特流分别进行独立解码。在对几何比特流的解码时,通过算术解码-八叉树合成-表面拟合-重建几何-反坐标变换,得到点云的几何信息;在对属性比特流的解码时,通过算术解码-反量化-基于LOD的反提升或者基于RAHT的反变换-反颜色转换,得到点云的属性信息,基于几何信息和属性信息还原待编码的点云数据的三维图像模型。
其中,基于图1B所示的G-PCC解码器的框架,也可以基于点云邻居节点的几何信息进行熵解码。这里,仍然根据当前节点的6个邻居节点的占位比特构建上下文模型,以用于进行CABAC解码。
一种具体的示例中,在G-PCC解码器侧的具体实施描述如下:
(1)获取当前节点的6个邻居节点的占位比特,即如果邻居节点内有点占据,则占位比特为1, 否则为0,以此计算得出NC。
(2)当NC==0时(邻居配置数为0,即6个邻居节点中无邻居节点被占据),用自适应二进制算术解码获得flag。
(3)当NC==0且flag==1时(6个邻居节点中无邻居节点被占据,且8个子节点中仅有1个子节点被占据),则用等概率静态二进制算术解码获得该唯一被占据的子节点在当前节点内部的XYZ坐标值,并还原出8个子节点的占位比特。
(4)当NC==0且flag==0时(6个邻居节点中无邻居节点被占据,且8个子节点中不只1个子节点被占据)或者当NC>0时(6个邻居节点中有邻居节点被占据),则用CABAC来解码获得当前节点的8个子节点的占位比特。
以八叉树节点的几何语法为例,表1给出了相关技术提供的一种语法元素以及语义描述的示例。其具体描述如下。
表1
Figure PCTCN2020136202-appb-000001
在G-PCC国际标准草案(Draft International Standards,DIS)中,语法描述为“The variable OccupancyIdxMaybePresent specifies when single_occupancy_flag is present in the octree node syntax”。
在本申请实施例中,标识信息OccupancyIdxMaybePresent指示在码流中是否存在语法元素 single_child_flag对应的比特字段。一种具体的实施方式是,标识信息OccupancyIdxMaybePresent指示在码流的八叉树节点对应的数据单元中,是否存在语法元素single_child_flag对应的比特字段。当标识信息OccupancyIdxMaybePresent的取值等于1时,码流中存在语法元素single_child_flag对应的比特字段。这里,确定标识信息OccupancyIdxMaybePresent取值的一种方法如下伪代码所示:
numPlanarAxes=IsPlanar[0]+IsPlanar[1]+IsPlanar[2];
numNonPlanarAxes=IsNotPlanar[0]+IsNotPlanar[1]+IsNotPlanar[2];
OccupancyIdxMaybePresent=numPlanarAxes<3||(!NeighPattern&&!numNonPlanarAxes);
其中,对于IsPlanar[k]而言,k取值为0、1、2,其分别代表x、y、z坐标轴方向。具体地,IsPlanar[k]为1表示在平面编码模式条件合格的情况下,且当前节点划分的子节点位置形成一个垂直于该坐标轴的平面,采用了平面编码模式;IsPlanar[k]为0表示其他情况,包括:在平面编码模式条件合格的情况下,当前节点划分的子节点位置占据了两个垂直于该坐标轴的平面,或者平面编码模式条件不合格。这里,numPlanarAxes则表示平面编码模式条件合格的情况下,采用平面编码模式的坐标轴方向的个数。
对于IsNotPlanar[k]而言,k取值为0、1、2,其分别代表x、y、z坐标轴方向。具体地,IsNotPlanar[k]为1表示在平面编码模式条件合格的情况下,且当前节点的子节点位置占据了两个垂直于该坐标轴的平面,没有采用平面编码模式;IsNotPlanar[k]为0表示其他情况,包括:在平面编码模式条件合格的情况下,当前节点的子节点位置形成一个垂直于该坐标轴的平面,或者平面编码模式条件不合格。这里,numNonPlanarAxes表示平面编码模式条件合格的情况下,没有采用平面编码模式的坐标轴方向的个数。
另外,numPlanarAxes<3表示平面编码模式条件合格的情况下,不是所有x、y、z坐标轴方向都采用了平面编码模式;(!NeighPattern&&!numNonPlanarAxes)表示邻居配置数为0,即6个邻居节点中无邻居节点被占据,且x、y、z坐标轴方向平面编码模式条件合格的情况下,当前节点划分的子节点位置形成一个垂直于该坐标轴的平面,或者平面编码模式条件不合格。这里,“numPlanarAxes<3”和“(!NeighPattern&&!numNonPlanarAxes)”两者进行或运算,即可确定出标识信息OccupancyIdxMaybePresent的取值。
示例性地,编码器使用上述方法,确定标识信息OccupancyIdxMaybePresent的取值。编码器判断OccupancyIdxMaybePresent的取值等于1时,使用ae(v)对应的熵编码方法,将single_child_flag的取值写入码流中的数据单元中;当编码器判断OccupancyIdxMaybePresent的取值等于0时,编码器不将single_child_flag的取值写入码流中的数据单元中。其中,ae(v)表示使用上下文自适应的算术熵编码方法对语法单元进行编码,这里的数据单元可以是八叉树节点对应的数据单元,例如,八叉树节点的几何信息数据单元。编码器根据single_child_flag对点云码流进行解码,例如,编码八叉树节点的几何信息;例如,编码点云数据的属性信息。
示例性地,解码器使用上述方法,确定标识信息OccupancyIdxMaybePresent的取值。解码器判断OccupancyIdxMaybePresent的取值等于1时,使用ae(v)对应的熵解码方法,从码流的数据单元中解析single_child_flag对应的比特字段,确定single_child_flag的取值;当解码器判断OccupancyIdxMaybePresent的取值等于0时,解码器确定码流的数据单元中不存在single_child_flag对应的比特字段,这种情况下,解码器不需要通过解析码流single_child_flag的取值,可选择地,解码器将single_child_flag的取值设置为默认值0。其中,ae(v)表示使用上下文自适应的算术熵解码方法对语法单元在码流中对应的比特字段进行解析;这里所述数据单元可以是八叉树节点对应的数据单元,例如,八叉树节点的几何信息数据单元。解码器根据single_child_flag对点云码流进行解码,例如,解码八叉树节点的几何信息;例如,解码点云数据的属性信息。
另外,对于语法元素single_child_flag而言,当single_child_flag的取值等于1时,表示当前节点仅包括有一个子节点被占据;当single_child_flag的取值等于0时,表示当前节点可以包括多个子节点被占据。另外,当前节点内不存在子节点被占据时,这时候single_child_flag的取值将被推断为0。也就是说,flag为1代表N oc等于1的情况(即8个子节点中仅有1个子节点被占据),flag为0代表N oc不等于1的情况(即8个子节点中不只1个子节点被占据)。
对于语法元素occupancy_idx[i]而言,occupancy_idx[i]表示当前节点中单一子节点在八叉树子节点遍历顺序索引的第i个比特。其中,第0个比特代表了单一子节点在当前节点中z方向的坐标值(0或1),第1个比特代表了单一子节点在当前节点中y方向的坐标值(0或1),第2个比特代表了单一子节点在当前节点中x方向的坐标值(0或1)。
然而,目前的相关技术中,仅有当NC==0且N oc==1时(6个邻居节点中无邻居节点被占据,且8个子节点中仅有1个子节点被占据),则采用编解码当前节点中唯一被占据的子节点(可简称为“单一子节点”)在当前节点内的XYZ坐标值(分别可取值为0、1,以图3为例,XYZ坐标值为(1,0,0)) 的方法,本申请实施例可将其称为“单一子节点的坐标值编解码方法”。由于该方法没有充分利用空间相关性,从而降低了编解码效率。
本申请一实施例提供一种点云编码方法,该方法的基本思想是:获取当前节点的邻居节点的占位比特信息;根据所述邻居节点的占位比特信息,确定上下文模型;利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。这样,由于利用邻居节点的占位比特信息来构建上下文模型,如此基于所构建的上下文模型对单一子节点的标识信息和坐标信息进行熵编码,能够充分利用点云的空间相关性,从而能够提高点云的编解码效率。
下面将结合附图对本申请各实施例进行详细阐述。
本申请的一实施例中,本申请实施例提供的点云编码方法应用于视频编码设备,即G-PCC编码器,也可简称为编码器。该方法所实现的功能可以通过编码器中的第一处理器调用计算机程序来实现,当然计算机程序可以保存在第一存储器中,可见,编码器至少包括第一处理器和第一存储器。
参见图4,其示出了本申请实施例提供的一种点云编码方法的流程示意图。如图4所示,该方法可以包括:
S401:获取当前节点的邻居节点的占位比特信息。
需要说明的是,在点云中,点可以是点云中的所有点,也可以是点云中的部分点,这些点在空间上相对集中。这里,当前节点也可以称为当前点或者当前块,具体是指点云中当前待编码的点或者块。
还需要说明的是,基于图1A所示的G-PCC编码器的框架,本申请实施例的方法主要应用于“上下文建模”部分,针对目前的相关技术中基于点云邻居节点的几何信息熵编码进行优化,以提升对空间相关性的利用程度。
可以理解,邻居节点的占位比特信息是根据该邻居节点内有无点占据确定的。在一些实施例中,所述获取当前节点的邻居节点的占位比特信息,可以包括:
若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;
若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
在本申请实施例中,所述邻居节点包括下述至少之一:与所述当前节点共面的邻居节点、与所述当前节点共线的邻居节点和与所述当前节点共点的邻居节点。
也就是说,通过对点云进行空间划分,可以得到至少一个点;根据当前节点的几何位置,从这至少一个点中确定当前节点的邻居节点。通常情况下,当前节点的邻居节点数量总共为26个。其中,与当前节点共面的邻居节点数量有6个,与当前节点共线的邻居节点数量有12个,与当前节点共点的邻居节点数量有8个。
在本申请实施例中,第一值可以为1,第二值可以为0;或者,第一值可以为0,第二值可以为1。在一种具体的示例中,第一值可设置为1,第二值可设置为0,但是不作具体限定。
也就是说,以第一值为1,第二值为0为例,如果某邻居节点内有点占据,那么该邻居节点的占位比特信息等于1;如果某邻居节点内无点占据,那么该邻居节点的占位比特信息等于0。反之,如果某邻居节点的占位比特信息等于1,那么说明该邻居节点内有点占据;如果某邻居节点的占位比特信息等于0,那么说明该邻居节点内无点占据。
S402:根据所述邻居节点的占位比特信息,确定上下文模型。
S403:利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流。
在本申请实施例中,所述相关信息可以包括至少之一:单一子节点的标识信息和单一子节点的坐标信息。相应地,上下文模型可以包括第一上下文模型和第二上下文模型。其中,第一上下文模型用于对单一子节点的标识信息进行预测,第二上下文模型用于对单一子节点的坐标信息进行预测。
在一种可能的实施方式中,当相关信息为单一子节点的标识信息时,这时候对于S402来说,在一些实施例中,所述根据所述邻居节点的占位比特信息,确定上下文模型,可以包括:
根据所述邻居节点的占位比特信息,确定所述当前节点的预测标识信息;
根据所述当前节点的预测标识信息,确定所述第一上下文模型。
需要说明的是,根据当前节点的预测标识信息,可以确定出第一上下文模型的索引序号值,然后根据该第一上下文模型的索引序号值,进而可以确定出第一上下文模型。因此,在一些实施例中,所述根据所述当前节点的预测标识信息,确定所述第一上下文模型,可以包括:
根据所述当前节点的预测标识信息,获得第一上下文模型的索引序号值;
根据所述第一上下文模型的索引序号值,确定所述第一上下文模型。
在一种具体的实施例中,该方法还可以包括:构建至少一个第一候选上下文模型;其中,不同的第一候选上下文模型对应不同的索引序号。
相应地,所述根据所述第一上下文模型的索引序号值,确定所述第一上下文模型,可以包括:
根据所述第一上下文模型的索引序号值,从所述至少一个第一候选上下文模型中选择所述索引序号值对应的第一候选上下文模型,将所选择的第一候选上下文模型确定为所述第一上下文模型。
也就是说,本申请实施例可以预先构建出至少一个第一候选上下文模型,而且不同的第一候选上下文模型输出不同的标识信息,同时不同的第一候选上下文模型对应不同的索引序号。如此,根据不同的标识信息就可以确定出不同的索引序号。这样,在根据当前节点的预测标识信息确定出第一上下文模型的索引序号值之后,然后可以从这至少一个第一候选上下文模型中选择索引序号值对应的第一候选上下文模型,以将其确定为第一上下文模型。
进一步地,对于S403来说,在一些实施例中,所述利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流,可以包括:
确定当前节点的子节点被占据数;
根据所述子节点被占据数,确定所述单一子节点的标识信息;
利用所述第一上下文模型对所述单一子节点的标识信息进行熵编码,并写入码流。
需要说明的是,子节点被占据数(Number of occupied child nodes,N oc)用于表示当前节点的多个子节点中有无子节点被占据。这里,在一些实施例中,所述确定当前节点的子节点被占据数,可以包括:
获取所述当前节点划分的子节点的占位比特信息;
根据所述子节点的占位比特信息,确定所述子节点被占据数。
这里,当前节点划分的子节点通常包括8个子节点,即针对当前节点进行划分,可以将其划分为8个子节点,具体如图3所示。
还需要说明的是,子节点的占位比特信息是根据子节点内有无点占据确定的。在一种具体的实施例中,所述获取所述当前节点划分的子节点的占位比特信息,可以包括:
若所述子节点内有点占据,则确定所述子节点的占位比特信息等于第一值;
若所述子节点内无点占据,则确定所述子节点的占位比特信息等于第二值。
在本申请实施例中,第一值可以为1,第二值可以为0;或者,第一值可以为0,第二值可以为1。在一种具体的示例中,第一值可设置为1,第二值可设置为0,但是不作具体限定。
也就是说,以第一值为1,第二值为0为例,如果某子节点内有点占据,那么该子节点的占位比特信息等于1;如果某子节点内无点占据,那么该子节点的占位比特信息等于0。这样,针对当前节点的8个子节点的占位比特信息,可以计算得到子节点被占据数。例如,如果8个子节点中仅有一个子节点被占据,那么计算得到的子节点被占据数等于1;反之,如果8个子节点中不只有一个子节点被占据,这时候计算得到的子节点被占据数不等于1。
换言之,根据子节点被占据数,可以反映当前节点中有无子节点被占据。在一些实施例中,该方法还可以包括:
若子节点被占据数等于1,则确定当前节点划分的子节点中仅包括一个被占据子节点;
若子节点被占据数不等于1,则确定当前节点划分的子节点中包括至少两个被占据子节点。
在本申请实施例中,子节点被占据数的取值范围为1~8。也就是说,如果子节点被占据数等于1,那么可以表明当前节点中仅有一个子节点被占据,即当前节点划分的子节点中仅包括一个被占据子节点,这时候的被占据子节点即为本申请实施例所述的单一子节点;如果子节点被占据数不等于1,那么可以表明当前节点中不只有一个子节点被占据,即当前节点划分的子节点中包括至少两个被占据子节点。
进一步地,在一些实施例中,单一子节点的标识信息(如标志位,flag)的确定,其主要是和子节点被占据数有关。因此,在一种具体的实施例中,所述根据所述子节点被占据数,确定所述单一子节点的标识信息,可以包括:
若所述子节点被占据数等于1,则确定所述单一子节点的标识信息的取值为第一标识值;
若所述子节点被占据数不等于1,则确定所述单一子节点的标识信息的取值为第二标识值。
在另一种具体的实施例中,所述根据子节点被占据数,确定所述单一子节点的标识信息,可以包括:
若所述当前节点划分的子节点中仅一个子节点被占据,则确定所述单一子节点的标识信息的取值为第一标识值;
若所述当前节点划分的子节点中至少两个子节点被占据,则确定所述单一子节点的标识信息的取值为第二标识值。
在本申请实施例中,第一标识值可以为1,第二标识值可以为0;或者,第一标识值可以为0,第二标识值可以为1。在一种具体的示例中,第一标识值可设置为1,第二标识值可设置为0,但是不作具体限定。
需要说明的是,标识信息的取值也可以是被占据子节点的个数。例如,如果当前节点划分的子节点 中无被占据子节点,那么标识信息的取值等于0;如果当前节点划分的子节点中仅包括一个被占据子节点,那么标识信息的取值等于1;如果当前节点划分的子节点中包括至少两个被占据子节点,那么标识信息的取值大于或等于2。
这样,在确定出标识信息的取值后,可以利用第一上下文模型对标识信息的取值进行熵编码,并写入码流。
在另一种可能的实施方式中,当相关信息为单一子节点的坐标信息时,这时候对于S402来说,在一些实施例中,所述根据所述邻居节点的占位比特信息,确定上下文模型,可以包括:
根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息;
根据所述当前节点的预测坐标信息,确定所述第二上下文模型。
需要说明的是,根据当前节点的预测坐标信息,可以确定出第二上下文模型的索引序号值,然后根据该第二上下文模型的索引序号值,进而可以确定出第二上下文模型。因此,在一些实施例中,所述根据所述当前节点的预测坐标信息,确定所述第二上下文模型,可以包括:
根据所述当前节点的预测坐标信息,获得第二上下文模型的索引序号值;
根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
在一种具体的实施例中,该方法还可以包括:构建至少一个第二候选上下文模型;其中,不同的第二候选上下文模型对应不同的索引序号。
相应地,所述根据所述第二上下文模型的索引序号值,确定所述第二上下文模型,可以包括:
根据所述第二上下文模型的索引序号值,从所述至少一个第二候选上下文模型中选择所述索引序号值对应的第二候选上下文模型,将所选择的第二候选上下文模型确定为所述第二上下文模型。
也就是说,本申请实施例可以预先构建出至少一个第二候选上下文模型,而且不同的第二候选上下文模型输出不同的坐标信息,同时不同的第二候选上下文模型也对应不同的索引序号。如此,根据不同的标识信息也可以确定出不同的索引序号。这样,在根据当前节点的预测坐标信息确定出第二上下文模型的索引序号值之后,然后可以从这至少一个第二候选上下文模型中选择索引序号值对应的第二候选上下文模型,以将其确定为第二上下文模型。
进一步地,对于S403来说,在一些实施例中,所述利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流,可以包括:
当所述单一子节点的标识信息指示所述当前节点划分的子节点中仅一个子节点被占据时,确定所述单一子节点的坐标信息;以及利用所述第二上下文模型对所述单一子节点的坐标信息进行熵编码,并写入码流。
需要说明的是,在标识信息的取值指示当前节点划分的子节点中仅一个子节点被占据时,这时候需要确定唯一被占据的子节点(可简称为“单一子节点”)的坐标信息,以便对单一子节点的坐标信息进行熵编码,并写入码流。
在本申请实施例中,由于邻居配置数的不同,对于单一子节点的坐标信息所采用的熵编码方式可能不同。因此,在一些实施例中,该方法还可以包括:确定当前节点的邻居配置数。
这样,根据当前节点的邻居配置数,可以确定当前节点中是否有邻居节点被占据,然后能够进一步确定出对于单一子节点的坐标信息所采用的熵编码方式,比如利用第二上下文模型对单一子节点的坐标信息进行熵编码方式,或者对单一子节点的坐标信息进行等概率静态二进制算术编码方式。
在一些实施例中,对于S403来说,所述利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流,可以包括:
若所述邻居配置数指示所述当前节点中有邻居节点被占据,则在所述单一子节点的标识信息指示所述当前节点划分的子节点中仅一个子节点被占据时,确定所述单一子节点的坐标信息;以及利用所述第二上下文模型对所述单一子节点的坐标信息进行熵编码,并写入码流。
进一步地,在一些实施例中,该方法还可以包括:
若所述邻居配置数指示所述当前节点中无邻居节点被占据,则在所述单一子节点的标识信息指示所述当前节点划分的子节点中仅包括一个被占据子节点时,确定所述单一子节点的坐标信息;以及对所述单一子节点的坐标信息进行等概率静态二进制算术编码,并写入码流。
需要说明的是,邻居配置数(Neighbouring configuration number,NC)用于表示与当前节点共面的邻居节点中有无邻居节点被占据。具体地,在一些实施例中,所述确定当前节点的邻居配置数,包括:
获取与所述当前节点共面的邻居节点的占位比特信息;
根据所述与所述当前节点共面的邻居节点的占位比特信息,确定所述邻居配置数。
这里,与当前节点共面的邻居节点可以包括下述至少之一:与所述当前节点左侧面相接的邻居节点、与所述当前节点右侧面相接的邻居节点、与所述当前节点上侧面相接的邻居节点、与所述当前节点下侧 面相接的邻居节点、与所述当前节点后侧面相接的邻居节点、与所述当前节点前侧面相接的邻居节点。也就是说,与当前节点共面的邻居节点通常包括有6个,具体如图2所示。
还需要说明的是,邻居节点的占位比特信息是根据邻居节点内有无点占据确定的。在一种具体的实施例中,所述获取所述当前节点的邻居节点的占位比特信息,可以包括:
若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;
若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
在本申请实施例中,第一值可以为1,第二值可以为0;或者,第一值可以为0,第二值可以为1。在一种具体的示例中,第一值可设置为1,第二值可设置为0,但是不作具体限定。
也就是说,以第一值为1,第二值为0为例,在与当前节点共面的6个邻居节点中,如果某邻居节点内有点占据,那么该邻居节点的占位比特信息等于1;如果某邻居节点内无点占据,那么该邻居节点的占位比特信息等于0。这样,针对当前节点的6个邻居节点的占位比特信息,可以计算得到邻居配置数。例如,如果6个邻居节点中无邻居节点被占据,用二进制表示为000000,这时候计算得到的邻居配置数等于0;反之,如果6个邻居节点中有邻居节点被占据,用二进制表示为000001~111111,这时候计算得到的邻居配置数为1~63,即这时候的邻居配置数大于0。
换言之,根据邻居配置数,可以反映当前节点中有无邻居节点被占据。在一些实施例中,该方法还可以包括:
若所述邻居配置数大于0,则确定所述当前节点中有邻居节点被占据;
若所述邻居配置数等于0,则确定所述当前节点中无邻居节点被占据。
在本申请实施例中,邻居配置数的取值范围为0~63。也就是说,如果邻居配置数大于0,那么表明当前节点中有邻居节点被占据;如果邻居配置数等于0,那么表明当前节点中无邻居节点被占据。
进一步地,在一些实施例中,所述确定所述单一子节点的坐标信息,可以包括:
获取所述当前节点划分的子节点的占位比特信息;
根据所述子节点的占位比特信息,计算所述单一子节点的坐标信息。
也就是说,在获取到当前节点划分的8个子节点的占位比特信息之后,可以根据这8个子节点的占位比特信息计算得到单一子节点的坐标信息。然后当邻居配置数指示所述当前节点中有邻居节点被占据且单一子节点的标识信息指示所述当前节点划分的子节点中仅一个子节点被占据时,这时候可以利用第二上下文模型对单一子节点的坐标信息进行熵编码,并写入码流。
可以理解地,在S402之前,还需要确定单一子节点使能变量的取值。因此,在一些实施例中,该方法还可以包括:
确定单一子节点使能变量的取值;
相应地,对于S402来说,所述根据所述邻居节点的占位比特信息,确定上下文模型,可以包括:
在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,根据所述邻居节点的占位比特信息,确定上下文模型。
需要说明的是,本申请实施例引入了一个新的变量,即单一子节点使能变量(可以用ctxSingleChildEnabled表示)。其中,当单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,这时候需要确定上下文模型,比如第一上下文模型和第二上下文模型,以便后续利用第一上下文模型和第二上下文模型对当前节点的相关信息进行熵编码。
还需要说明的是,单一子节点使能变量与节点数量(用N all表示)和单一子节点数量(用N singe表示)有关。具体地,在一些实施例中,所述确定单一子节点使能变量的取值,可以包括:
确定节点数量以及单一子节点数量;
对所述单一子节点数量和所述节点数量进行除法运算,得到第一比例值;
将所述第一比例值和第一阈值进行比较;
根据所述第一比例值和所述第一阈值的比较结果,确定所述单一子节点使能变量的取值。
在一种具体的实施例中,所述根据所述第一比例值和所述第一阈值的比较结果,确定所述单一子节点使能变量的取值,可以包括:
若所述第一比例值大于所述第一阈值,则确定所述单一子节点使能变量的取值为第三值;
若所述第一比例值小于或等于所述第一阈值,则确定所述单一子节点使能变量的取值为第四值。
在本申请实施例中,第三值可以为1,第四值可以为0;或者,第三值可以为0,第四值可以为1。在一种具体的示例中,第三值可设置为1,第四值可设置为0,但是不作具体限定。
需要说明的是,第一阈值可以作为判断单一子节点使能变量取值的衡量指标。在本申请实施例中,第一阈值可以表示预先设定的固定值(比如根据经验值得到),也可以表示通过自适应算法确定的值,甚至还可以表示由编码器写入码流以使得在解码器中能够通过解析码流获得的值。这里,第一阈值的取 值范围为[0,1]之内,根据实际情况进行具体调整。在本申请的一种具体示例中,第一阈值可以设置为0.8,但是不作具体限定。
还需要说明的是,单一子节点使能变量可以用ctxSingleChildEnabled表示。针对单一子节点使能变量的确定,可以根据下式实现,具体如下所示,
Figure PCTCN2020136202-appb-000002
其中,N singe÷N all表示第一比例值。这时候如果第一比例值大于0.8,那么ctxSingleChildEnabled的取值为1;否则,如果第一比例值小于或等于0.8,那么ctxSingleChildEnabled的取值为0。
进一步地,在一些实施例中,该方法还可以包括:
若单一子节点使能变量的取值为1,则确定所述当前节点处于单一子节点使能状态;
若单一子节点使能变量的取值为0,则确定所述当前节点处于单一子节点不使能状态。
也就是说,如果ctxSingleChildEnabled=1,那么当前节点处于单一子节点使能状态,这时候可以执行本申请实施例所述的点云编码方法;如果ctxSingleChildEnabled=0,那么当前节点处于单一子节点不使能状态,这时候可以执行相关技术的点云编码方法,即对当前节点的8个子节点的占位比特进行CABAC,并写入码流。
还需要说明的是,本申请实施例中的N singe和N all是不断更新的。在一些实施例中,该方法还可以包括:
对输入点云进行八叉树划分,得到K层的八叉树;
在进入所述八叉树的第i层时,设置所述节点数量的初始值为0,所述单一子节点数量的初始值为0,所述单一子节点使能变量的初始值为0;其中,i为大于或等于0且小于K的整数。
这里,K表示八叉树的层数,K为大于0的整数。其中,针对八叉树的每一层,当进入该层时,首先需要初始化节点数量、单一子节点数量和单一子节点使能变量的取值,即节点数量的初始值赋值为0,单一子节点数量的初始值赋值为0,单一子节点使能变量的初始值赋值为0。
进一步地,当所述当前节点处于第i层时,所述确定节点数量以及单一子节点数量,可以包括:
基于所述第i层中的已编码节点,获得所述节点数量;
从所述已编码节点中确定仅包括一个被占据子节点的已编码节点,获得所述单一子节点数量。
需要说明的是,节点数量和单一子节点数量都是第i层中的已编码节点。对于单一子节点数量而言,所述从已编码节点中确定仅包括一个被占据子节点的已编码节点,获得所述单一子节点数量,可以包括:
在所述已编码节点中,判断所述已编码节点划分的子节点是否仅包括一个被占据子节点;
若判断结果为是,则对所述单一子节点数量执行加1操作,更新所述单一子节点数量;
若判断结果为否,则维持所述单一子节点数量不变。
换句话说,在对输入点云进行八叉树划分后,可以得到K层的八叉树。在进入八叉树的第i层时,初始化节点数量(N all)、单一子节点数量(N singe)和单一子节点使能变量(ctxSingleChildEnabled)的值,即赋值N all=0,N singe=0,ctxSingleChildEnabled=0。然后针对第i层,在第i层的第j个节点已经完成点云编码后,可以更新N all=N all+1,即节点数量表示已编码节点的数量。若第j个节点划分的子节点中仅包括一个被占据子节点(即N oc=1)时,则更新N singe=N singe+1,也即单一子节点数量表示已编码节点中确定仅包括一个被占据子节点的已编码节点的数量。在j小于N时,则更新j=j+1,继续执行读取所述第i层的第j个节点的步骤,直至第i层中所有节点均已经处理,j为大于或等于0且小于N的整数,N为第i层中的节点总数量;然后再进入八叉树的第i+1层,直至八叉树的K层全部已处理。
这样,在确定出N singe和N all之后,结合式(1)可以计算得到单一子节点使能变量(ctxSingleChildEnabled)的取值,以便确定后续是否需要利用上下文模型进行熵编码。
具体来讲,在本申请实施例中,如果邻居配置数指示当前节点中有邻居节点被占据,那么表示NC>0;如果单一子节点使能变量的取值指示当前节点处于单一子节点使能状态,那么表示ctxSingleChildEnabled=1。也就是说,本申请实施例提出了一种新的基于点云邻居节点的几何信息熵编码,以扩大使用单一子节点的坐标信息编码到N oc==1时(8个子节点中仅有1个子节点被占据)但NC>0(6个邻居节点中有邻居节点被占据)的情况,在邻居节点的子节点不用于构建上下文模型(即adjacent_child_contextualization_enabled_flag==0)的情况下,这时候采用的构建上下文模型的方式。
换言之,本申请实施例是在邻居节点的子节点不用于构建上下文模型(adjacent_child_contextualization_enabled_flag==0)的情况下,可以利用邻居节点的占位比特信息来构建上下文模型,然后再利用CABAC进行单一子节点的坐标信息编码,可以进一步提高编码效率。
在语法描述中,“adjacent_child_contextualization_enabled_flag equal to 1 indicates that the adjacent children of neighbouring octree nodes are used for bit-wise occupancy contextualization”表示语法元素adjacent_child_contextualization_enabled_flag为1时,邻居节点的子节点可以用于占位比特信息编码的上下文模型构建;“adjacent_child_contextualization_enabled_flag equal to 0 indicates that the children of neighbouring octree nodes are is not used for the occupancy contextualization”表示语法元素adjacent_child_contextualization_enabled_flag为0时,邻居节点的子节点不可以用于占位比特信息编码的上下文模型构建。
下面将针对利用邻居节点的占位比特信息来构建第一上下文模型和第二上下文模型的具体过程进行详细描述。
在一些实施例中,在单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,对于第一上下文模型,所述根据所述邻居节点的占位比特信息,确定上下文模型,可以包括:
根据所述邻居节点的占位比特信息,确定所述当前节点的预测标识信息;
根据所述当前节点的预测标识信息,确定所述第一上下文模型。
需要说明的是,第一上下文模型的确定与当前节点的预测标识信息有关,而当前节点的预测标识信息是由邻居节点的占位比特信息确定的。在一种具体的实施例中,所述根据所述邻居节点的占位比特信息,确定所述当前节点的预测标识信息,可以包括:
根据所述邻居节点的占位比特信息,确定与当前节点共面的邻居节点中有点占据的第一节点数量;
根据所述第一节点数量,确定所述当前节点的预测标识信息。
还需要说明的是,这里的第一节点数量是指与当前节点共面的邻居节点中有点占据的节点数量。具体如图2所示,与当前节点共面的邻居节点总共有6个,分别为:与当前节点左侧面相接的邻居节点、与当前节点右侧面相接的邻居节点、与当前节点上侧面相接的邻居节点、与当前节点下侧面相接的邻居节点、与当前节点后侧面相接的邻居节点、与当前节点前侧面相接的邻居节点;然后从这6个邻居节点中确定出第一节点数量的取值。
在本申请实施例中,第一节点数量可以用N on表示,N on表示与当前节点共面的6个邻居节点中有点占据的邻居节点数量,N on可取值为0到6。
进一步地,在得到第一节点数量后,可以用以确定当前节点的预测标识信息。在一些实施例中,所述根据所述第一节点数量,确定所述当前节点的预测标识信息,可以包括:
将所述第一节点数量与第二阈值进行比较;
根据所述第一节点数量与所述第二阈值的比较结果,确定所述当前节点的预测标识信息。
在一种具体的实施例中,所述根据所述第一节点数量与所述第二阈值的比较结果,确定所述当前节点的预测标识信息,可以包括:
若所述第一节点数量小于所述第二阈值,则确定所述当前节点的预测标识信息等于第五值;
若所述第一节点数量大于或等于所述第二阈值,则确定所述当前节点的预测标识信息等于第六值。
在本申请实施例中,第五值可以为1,第六值可以为0;或者,第五值可以为0,第六值可以为1。在一种具体的示例中,第五值可设置为1,第六值可设置为0,但是不作具体限定。。
另外,第二阈值可以作为判断当前节点的预测标识信息取值的衡量指标。在本申请实施例中,第二阈值可以表示预先设定的固定值,也可以表示通过自适应算法确定的值,甚至还可以表示由编码器写入码流以使得在解码器中能够通过解析码流获得的值。这里,第二阈值的取值范围为[0,6]之内,根据实际情况进行具体调整。在本申请的一种具体示例中,第二阈值可以设置为3,但是不作具体限定。
在一种具体的实现方式中,通过N on对标识信息(如标志位,flag)的预测,可以构建出2种上下文模型,具体如下所示,
针对语法元素single_child_flag:
Figure PCTCN2020136202-appb-000003
参见图5,其示出了本申请实施例提供的一种根据邻居节点预测标识信息的流程示意图。如图5所示,该流程可以包括:
S501:获取与当前节点相接的6个邻居节点的占位比特信息;
S502:确定N on
S503:判断N on是否小于3;
S504:若判断结果为否,则flag=0;
S505:若判断结果为是,则flag=1。
需要说明的是,标识信息(flag)的预测,对于S503来说,判断是否N on<3,如果判断结果为否, 则执行S504;如果判断结果为是,则执行S505。
也就是说,在得到N on之后,可以根据N on可以确定出标识信息的预测值,进而确定出第一上下文模型的索引序号值,然后根据式(2)所示的两个第一候选上下文模型中选择索引序号值对应的第一候选上下文模型,以将其确定为第一上下文模型。
在一些实施例中,在单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,对于第二上下文模型,所述根据所述邻居节点的占位比特信息,确定上下文模型,可以包括:
根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息;
根据所述当前节点的预测坐标信息,确定所述第二上下文模型。
需要说明的是,第二上下文模型的确定与当前节点的预测坐标信息有关,而当前节点的预测坐标信息是由邻居节点的占位比特信息确定的。在一种具体的实施例中,所述根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息,可以包括:
根据所述邻居节点的占位比特信息,确定第一方向坐标值为第七值对应的第一平面内邻居节点中有点占据的第二节点数量,以及第二方向坐标值为第七值对应的第二平面内邻居节点中有点占据的第三节点数量,以及第三方向坐标值为第七值对应的第三平面内邻居节点中有点占据的第四节点数量;
将所述第二节点数量与第三阈值进行比较,根据比较结果确定第一坐标方向的第一一预测值;
将所述第三节点数量与第三阈值进行比较,根据比较结果确定第二坐标方向的第二一预测值;
将所述第四节点数量与第三阈值进行比较,根据比较结果确定第三坐标方向的第三一预测值;
根据第一一预测值、第二一预测值和第三一预测值,得到当前节点的第一组预测坐标信息。
这里,第七值可以为-1,或者第七值可以为1。在一种具体的示例中,第七值可以为-1,但是不作具体限定。
另外,第三阈值可以作为判断当前节点的预测坐标信息取值的衡量指标。在本申请实施例中,第三阈值可以表示预先设定的固定值,也可以表示通过自适应算法确定的值,甚至还可以表示由编码器写入码流以使得在解码器中能够通过解析码流获得的值。在本申请实施例中,第三阈值可以根据实际情况进行具体调整,这里不作具体限定。在一种具体的示例中,第三阈值可以设置为0。
需要说明的是,坐标信息包括有第一方向坐标值、第二方向坐标值和第三方向坐标值。这里,第一方向可以为水平坐标轴(x轴)方向,第二方向可以为垂直坐标轴(y轴)方向,第三方向可以为第三坐标轴(z轴)方向。
还需要说明的是,第二节点数量可以用N x=-1表示,N x=-1表示x轴方向坐标值为-1的yz平面上9个邻居节点中有点占据的节点数量,N x=-1可取值为0到9。第三节点数量可以用N y=-1表示,N y=-1表示y轴方向坐标值为-1的xz平面上9个邻居节点中有点占据的节点数量,N y=-1可取值为0到9。第四节点数量可以用N z=-1表示,N z=-1表示z轴方向坐标值为-1的xy平面上9个邻居节点中有点占据的节点数量,N z=-1可取值为0到9。
示例性地,如图6所示,当前节点用黑色填充表示,与当前节点相接的邻居节点有26个。假定第七值等于-1,可以定义N x=-1为x轴方向坐标值为-1的yz平面上9个邻居节点中有点占据的节点数量,通过N x=-1可以预测当前节点中单一子节点的x轴方向的坐标值(即第一一预测值,用X 0表示),据此可以构建出2种上下文模型,具体如下所示,
针对语法元素occupancy_idx[2]:
Figure PCTCN2020136202-appb-000004
假定第七值等于-1,可以定义N y=-1为y轴方向坐标值为-1的xz平面上9个邻居节点中有点占据的节点数量,通过N y=-1可以预测当前节点中单一子节点的y轴方向的坐标值(即第二一预测值,用Y 0表示),据此可以构建出2种上下文模型,具体如下所示,
针对语法元素occupancy_idx[1]:
Figure PCTCN2020136202-appb-000005
假定第七值等于-1,可以定义N z=-1为z轴方向坐标值为-1的xy平面上9个邻居节点中有点占据的节点数量,通过N z=-1可以预测当前节点中单一子节点的z轴方向的坐标值(即第三一预测值,用Z 0表示),据此可以构建出2种上下文模型,具体如下所示,
针对语法元素occupancy_idx[0]:
Figure PCTCN2020136202-appb-000006
参见图7,其示出了本申请实施例提供的一种根据邻居节点预测坐标信息的流程示意图。如图7所示,该流程可以包括:
S701:获取与当前节点相接的26个邻居节点的占位比特信息;
S702:确定N x=-1、N y=-1和N z=-1
S703:判断N x=-1>0;
S704:若判断结果为否,则X 0=1;
S705:若判断结果为是,则X 0=0;
S706:判断N y=-1>0;
S707:若判断结果为否,则Y 0=1;
S708:若判断结果为是,则Y 0=0;
S709:判断N z=-1>0;
S710:若判断结果为否,则Z 0=1;
S711:若判断结果为是,则Z 0=0。
需要说明的是,对于S703来说,判断N x=-1是否大于0,如果判断结果为否,则执行S704;如果判断结果为是,则执行S705。对于S706来说,判断N y=-1是否大于0,如果判断结果为否,则执行S707;如果判断结果为是,则执行S708。对于S709来说,判断N z=-1是否大于0,如果判断结果为否,则执行S710;如果判断结果为是,则执行S711。
还需要说明的是,在另一种具体的实施例中,所述根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息,可以包括:
根据所述邻居节点的占位比特信息,确定第一方向坐标值为第八值对应的第一平面内邻居节点中有点占据的第五节点数量,以及第二方向坐标值为第八值对应的第二平面内邻居节点中有点占据的第六节点数量,以及第三方向坐标值为第八值对应的第三平面内邻居节点中有点占据的第七节点数量;
将所述第五节点数量与第四阈值进行比较,根据比较结果确定第一坐标方向的第一二预测值;
将所述第六节点数量与第四阈值进行比较,根据比较结果确定第二坐标方向的第二二预测值;
将所述第七节点数量与第四阈值进行比较,根据比较结果确定第三坐标方向的第三二预测值;
根据第一二预测值、第二二预测值和第三二预测值,得到当前节点的第二组预测坐标信息。
在本申请实施例中,第七值可以为-1,第八值可以为1;或者,第七值可以为1,第八值可以为-1。在一种具体的示例中,第七值可以为-1,第八值可以为1,但是不作具体限定。
另外,第四阈值也可以作为判断当前节点的预测坐标信息取值的衡量指标。在本申请实施例中,第四阈值可以表示预先设定的固定值,也可以表示通过自适应算法确定的值,甚至还可以表示由编码器写入码流以使得在解码器中能够通过解析码流获得的值。在本申请实施例中,第四阈值可以与第三阈值相同,也可以不相同,根据实际情况进行具体调整,这里不作具体限定。在一种具体的示例中,第四阈值也可以设置为0。
还需要说明的是,第五节点数量可以用N x=1表示,N x=1表示x轴方向坐标值为1的yz平面上9个邻居节点中有点占据的节点数量,N x=1可取值为0到9。第六节点数量可以用N y=1表示,N y=1表示y轴方向坐标值为1的xz平面上9个邻居节点中有点占据的节点数量,N y=1可取值为0到9。第七节点数量可以用N z=1表示,N z=1表示z轴方向坐标值为1的xy平面上9个邻居节点中有点占据的节点数量,N z=1可取值为0到9。
示例性地,仍以图6为例,假定第八值等于1,可以定义N x=1为x轴方向坐标值为1的yz平面上9个邻居节点中有点占据的节点数量,通过N x=1可以预测当前节点中单一子节点的x轴方向的坐标值(即第一二预测值,用X 1表示),据此可以构建出2种上下文模型,具体如下所示,
针对语法元素occupancy_idx[2]:
Figure PCTCN2020136202-appb-000007
假定第八值等于1,可以定义N y=1为y轴方向坐标值为1的xz平面上9个邻居节点中有点占据的节点数量,通过N y=1可以预测当前节点中单一子节点的y轴方向的坐标值(即第二二预测值,用Y 1表示),据此可以构建出2种上下文模型,具体如下所示,
针对语法元素occupancy_idx[1]:
Figure PCTCN2020136202-appb-000008
假定第八值等于1,可以定义N z=1为z轴方向坐标值为1的xy平面上9个邻居节点中有点占据的 节点数量,通过N z=1可以预测当前节点中单一子节点的z轴方向的坐标值(即第三二预测值,用Z 1表示),据此可以构建出2种上下文模型,具体如下所示,
针对语法元素occupancy_idx[0]:
Figure PCTCN2020136202-appb-000009
参见图8,其示出了本申请实施例提供的另一种根据邻居节点预测坐标信息的流程示意图。如图8所示,该流程可以包括:
S801:获取与当前节点相接的26个邻居节点的占位比特信息;
S802:确定N x=1、N y=1和N z=1
S803:判断N x=1>0;
S804:若判断结果为否,则X 1=0;
S805:若判断结果为是,则X 1=1;
S806:判断N y=1>0;
S807:若判断结果为否,则Y 1=0;
S808:若判断结果为是,则Y 1=1;
S809:判断N z=1>0;
S810:若判断结果为否,则Z 1=0;
S811:若判断结果为是,则Z 1=1。
需要说明的是,对于S803来说,判断N x=1是否大于0,如果判断结果为否,则执行S804;如果判断结果为是,则执行S805。对于S806来说,判断N y=1是否大于0,如果判断结果为否,则执行S807;如果判断结果为是,则执行S808。对于S809来说,判断N z=1是否大于0,如果判断结果为否,则执行S810;如果判断结果为是,则执行S811。
这样,根据图7所示的流程,可以得到当前节点的第一值预测坐标信息;根据图8所示的流程,可以得到当前节点的第二值预测坐标信息;根据这两组预测坐标信息,可以确定第二上下文模型。具体地,在一些实施例中,所述根据所述当前节点的预测坐标信息,确定所述第二上下文模型,可以包括:
获取所述当前节点的第一组预测坐标信息和第二组预测坐标信息;
根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第二上下文模型的索引序号值;
根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
进一步地,所述根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第二上下文模型的索引序号值,可以包括:
根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第一坐标方向的第一一预测值和第二一预测值、第二坐标方向的第二一预测值和第二二预测值、第三坐标方向的第三一预测值和第三二预测值;
根据所述第一坐标方向的第一一预测值和第一二预测值,确定所述第一坐标方向的所述第二上下文模型的索引序号值;
根据所述第二坐标方向的第二一预测值和第二二预测值,确定所述第二坐标方向的所述第二上下文模型的索引序号值;
根据所述第三坐标方向的第三一预测值和第三二预测值,确定所述第三坐标方向的所述第二上下文模型的索引序号值。
也就是说,在得到第一坐标方向的第一一预测值和第二一预测值之后,可以据此确定出第一坐标方向的所述第二上下文模型的索引序号值;在得到第二坐标方向的第二一预测值和第二二预测值之后,可以据此确定出第二坐标方向的所述第二上下文模型的索引序号值;在得到第三坐标方向的第三一预测值和第三二预测值之后,可以据此确定出第三坐标方向的所述第二上下文模型的索引序号值;从而确定出第二上下文模型的索引序号值,然后从式(3)~式(8)等多个第二候选上下文模型中选择索引序号值对应的第二候选上下文模型,以将其确定为第二上下文模型。
在本申请实施例中,用于预测标识信息(flag)的上下文模型,可以共有2种上下文模型的数量。在编码过程中,根据当前节点的邻居节点的占位比特信息,可得预测出标识信息的唯一上下文索引序号,根据索引序号选择2种当中的1种上下文模型以便后续对标识信息进行CABAC。针对三个坐标方向(x/y/z坐标方向)分别构建预测坐标信息的上下文模型,每个坐标方向上共有2×2=4种上下文模型的数量,那么三个坐标方向上总共有12种上下文模型。在编码过程中,根据当前节点的邻居节点的占 位比特信息,可得唯一的上下文索引序号,根据索引序号选择12种当中的1种上下文模型以便后续对预测坐标值进行CABAC。
除此之外,在另一可能的实施方式中,对于上下文模型的构建,如图6所示,获取当前节点的26个邻居节点的占位比特信息(occupancy bit),即邻居节点内有点占据,则占位比特信息为1,否则占位比特信息为0。如此,可以计算得出邻居配置数(Neighbouring configuration number,NC),NC的取值范围可以为0到2 26,即二进制的“26个0”到“26个1”。这样,根据NC可以构建最多2 26种上下文数量的上下文模型,也可任意合并其中的n个上下文模型,即可以构建x个数量的上下文模型,其中,x可取值为1到2 26
简言之,上述所构建的上下文模型均可用于编码坐标信息和标识信息。一句话概括为:利用当前节点的26个邻居节点的占位比特信息,可以构建上下文模型对当前节点中的单一子节点的坐标信息及所需标识信息(flag)进行CABAC。
本实施例提供了一种点云编码方法,通过获取当前节点的邻居节点的占位比特信息;根据所述邻居节点的占位比特信息,确定上下文模型;利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流;其中,相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。这样,由于利用邻居节点的占位比特信息来构建上下文模型,如此基于所构建的上下文模型对单一子节点的标识信息和坐标信息进行熵编码,能够充分利用点云的空间相关性,从而能够提高点云的编解码效率。
本申请的另一实施例中,参见图9,其示出了本申请实施例提供的一种点云编码方法的详细流程示意图。如图9所示,该详细流程可以包括:
S901:i=0;
S902:进入八叉树的第i层;
这里,i为大于或等于0且小于K的整数,K表示八叉树的划分层数。需要说明的是,该详细流程首次为进入八叉树的第0层。
S903:设置j=0,N all=0,N singe=0,ctxSingleChildEnabled=0;
S904:读取第j个节点;
这里,j为大于或等于0且小于N的整数,N为第i层中的节点总数量。
S905:根据当前节点的6个邻居节点的占位比特信息,计算邻居配置数NC;
S906:根据当前节点划分的8个子节点的占位比特信息,计算子节点被占据数N oc
S907:判断是否ctxSingleChildEnabled==1;
S908:确定第一组坐标信息的预测值(X 0、Y 0、Z 0);
S909:确定第二组坐标信息的预测值(X 1、Y 1、Z 1);
S910:确定标识信息的预测值;
需要说明的是,对于步骤S907而言,如果判断结果为是,那么执行S908~S909,然后再执行S910;如果判断结果为否,那么将直接执行S910。
S911:判断是否NC==0;
S912:若判断结果为否,则判断是否ctxSingleChildEnabled==1;
S913:若判断结果为是,则判断是否N oc==1;
S914:若判断结果为否,则确定flag=0;
S915:若判断结果为是,则确定flag=1;
需要说明的是,对于步骤S913而言,判断N oc是否等于1,如果判断结果为否,那么执行S914;如果判断结果为是,那么将直接执行S915。在S914和S915之后,均将执行S916。
S916:对flag进行基于预测flag的上下文模型的CABAC;
S917:判断是否flag==1;
S918:若判断结果为是,则根据当前节点的8个子节点的占位比特信息计算唯一被占据子节点的坐标信息X、Y、Z;
S919:对坐标信息X、Y、Z进行基于预测坐标信息的上下文模型的CABAC;
需要说明的是,对于步骤S917而言,判断flag是否等于1,如果判断结果为是,则执行S918~S919;如果判断结果为否,则执行S927。
还需要说明的是,对于步骤S911而言,如果判断结果为否,则执行S912;如果判断结果为是,则执行S920。而对于步骤S912而言,如果判断结果为是,则执行S913;如果判断结果为否,则执行S927。
S920:若判断结果为是,则判断是否N oc==1;
S921:若判断结果为否,则确定flag=0;
S922:若判断结果为是,则确定flag=1;
S923:对flag进行基于预测flag的上下文模型的CABAC;
需要说明的是,对于步骤S920而言,判断N oc是否等于1,如果判断结果为否,那么执行S921;如果判断结果为是,那么将直接执行S922。在S921和S922之后,均将执行S923。
S924:判断是否flag==1;
S925:若判断结果为是,则根据当前节点的8个子节点的占位比特信息计算唯一被占据子节点的坐标信息X、Y、Z;
S926:对坐标信息X、Y、Z进行等概率静态算术编码;
S927:若判断结果为否,则对当前节点的8个子节点的占位比特信息进行基于NC上下文的CABAC;
S928:N all=N all+1;
需要说明的是,对于S912、S917和S924而言,如果判断结果为否,那么均将执行S927。在S927、S919和S926之后,则均将执行S928。
S929:判断是否N oc==1;
S930:若判断结果为是,则N singe=N singe+1;
S931:判断是否N singe/N all>0.8;
S932:若判断结果为否,则ctxSingleChildEnabled=0;
S933:若判断结果为是,则ctxSingleChildEnabled=1;
S934:判断当前第j层内所有节点是否已处理;
S935:若判断结果为否,则j=j+1,返回执行S904;
S936:若判断结果为是,则判断八叉树的所有层是否已处理;
S937:若判断结果为否,则i=i+1,返回执行S902;
S938:若判断结果为是,则结束流程。
需要说明的是,首先,进入八叉树的第i层(i的最小值为0),赋值节点数量N all=0,单一子节点数量N singe=0,单一子节点使能变量ctxSingleChildEnabled=0。
其次,读取第j个节点(j的最小值为0),根据该当前节点的6个邻居节点的占位比特信息(或称为占位比特模式),计算得出NC。然后根据当前节点划分的8个子节点的占位比特信息,计算得出N oc
再次,当ctxSingleChildEnabled==1时,根据与当前节点相接的6个邻居节点的占位比特信息,计算得出N on,最后预测出flag。根据当前节点的26个邻居节点的占位比特信息,计算得出N x=-1、N y=-1和N z=-1,可以预测出第一组坐标信息X 0、Y 0和Z 0;计算得出N x=1,N y=1和N z=1,可以预测出第二组坐标信息X 1、Y 1和Z 1。其中,当ctxSingleChildEnabled==0时,也可以根据与当前节点相接的6个邻居节点的占位比特信息,用以预测出flag。
再次,当NC==0时(邻居配置数为0,即6个邻居节点中无邻居节点被占据),赋值flag为1代表N oc等于1的情况(即8个子节点中仅有1个子节点被占据),赋值flag为0代表N oc不等于1的情况(即8个子节点中不只1个子节点被占据)。由于已经得到预测flag,这时候可以对该flag进行基于上下文“预测flag”的自适应二进制算术编码,写入码流。当flag等于1时,先根据当前节点的8个子节点的占位比特信息计算出其单一子节点的坐标信息(X/Y/Z坐标值),并分别对X/Y/Z坐标值进行等概率静态二进制算术编码,写入码流。
当NC>0(6个邻居节点中有邻居节点被占据)且ctxSingleChildEnabled==1时,赋值flag为1代表N oc等于1的情况(即8个子节点中仅有1个子节点被占据),赋值flag为0代表N oc不等于1的情况(即8个子节点中不只1个子节点被占据),并对该flag进行基于上下文“预测flag”的自适应二进制算术编码,写入码流。当flag等于1时,先根据当前节点的8个子节点的占位比特信息计算出其单一子节点的坐标信息(X/Y/Z坐标值),并分别对X/Y/Z坐标值进行基于上下文“预测坐标信息”的自适应二进制算术编码,写入码流。
当flag==0(8个子节点中不只1个子节点被占据)或者,NC>0(6个邻居节点中有邻居节点被占据)且ctxSingleChildEnabled==0时,则对当前节点的8个子节点的占位比特信息进行CABAC,写入码流。
最后,更新N all=N all+1,当N oc=1时,更新N singe=N singe+1。计算出ctxSingleChildEnabled,具体如下所示,
Figure PCTCN2020136202-appb-000010
如果当前第i层内所有节点已处理,那么i=i+1,并返回到步骤S902处理八叉树下一层;否则,j=j+1,返回到步骤S904处理第i层的下一个节点。如果所有层已处理,那么可以结束流程。
简言之,本申请技术方案的保护点在于针对单一子节点编码构建了“预测flag”和“预测坐标信息”的上下文模型,通过CABAC提高压缩效率。并通过有单一子节点的节点在所有节点中的比例来控制该点云编码方法是否使能。
也就是说,本申请技术方案更加充分的利用了点云的空间相关性,在邻居节点的子节点不用于上下文模型构建的情况下(adjacent_child_contextualization_enabled_flag==0),能够使得G-PCC的编码效率进一步提高。如下表2所示的几何信息有损压缩条件下的BD-Rate,其示出了与相关技术相比,在获得相同编码质量的情况下,本申请实施例的编码码率比相关技术的编码码率节省(BD-Rate为负值)或增加(BD-Rate为正值)的百分比。如下表3所示的几何信息无损压缩条件下的Bpip Ratio,其示出了在点云质量无损失的情况下,本申请实施例的编码码率占相关技术编码码率的百分比,这里,数值越低,本申请实施例节省的码率越大。
表2
Figure PCTCN2020136202-appb-000011
表3
Figure PCTCN2020136202-appb-000012
本实施例提供了一种点云编码方法,通过上述实施例对前述实施例的具体实现进行了详细阐述,从中可以看出,由于针对单一子节点的标识信息和坐标信息分别构建了上下文模型,如此基于所构建的上下文模型对标识信息和坐标信息进行熵编码,能够充分利用点云的空间相关性,从而能够提高点云的编码效率。
本申请的又一实施例中,本申请实施例提供的点云解码方法应用于视频解码设备,即G-PCC解码器,也可简称为解码器。该方法所实现的功能可以通过解码器中的第二处理器调用计算机程序来实现,当然计算机程序可以保存在第二存储器中,可见,解码器至少包括第二处理器和第二存储器。
参见图10,其示出了本申请实施例提供的一种点云解码方法的流程示意图。如图10所示,该方法可以包括:
S1001:获取当前节点的邻居节点的占位比特信息。
需要说明的是,在点云中,点可以是点云中的所有点,也可以是点云中的部分点,这些点在空间上相对集中。这里,当前节点也可以称为当前点或者当前块,具体是指点云中当前待解码的点或者块。
还需要说明的是,基于图1B所示的G-PCC解码器的框架,本申请实施例的方法主要应用于“上下文建模”部分,针对目前的相关技术中基于点云邻居节点的几何信息熵解码进行优化,以提升对空间相关性的利用程度。
可以理解,邻居节点的占位比特信息是根据该邻居节点内有无点占据确定的。在一些实施例中,所述获取当前节点的邻居节点的占位比特信息,可以包括:
若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;
若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
在本申请实施例中,所述邻居节点包括下述至少之一:与所述当前节点共面的邻居节点、与所述当前节点共线的邻居节点和与所述当前节点共点的邻居节点。
也就是说,通过对点云进行空间划分,可以得到至少一个点;根据当前节点的几何位置,从这至少一个点中确定当前节点的邻居节点。通常情况下,当前节点的邻居节点数量总共为26个。其中,与当前节点共面的邻居节点数量有6个,与当前节点共线的邻居节点数量有12个,与当前节点共点的邻居节点数量有8个。
在本申请实施例中,第一值可以为1,第二值可以为0;或者,第一值可以为0,第二值可以为1。在一种具体的示例中,第一值可设置为1,第二值可设置为0,但是不作具体限定。
也就是说,以第一值为1,第二值为0为例,如果某邻居节点内有点占据,那么该邻居节点的占位比特信息等于1;如果某邻居节点内无点占据,那么该邻居节点的占位比特信息等于0。反之,如果某邻居节点的占位比特信息等于1,那么说明该邻居节点内有点占据;如果某邻居节点的占位比特信息等于0,那么说明该邻居节点内无点占据。
S1002:根据所述邻居节点的占位比特信息,确定上下文模型。
S1003:利用所述上下文模型解析码流,获取所述当前节点的相关信息。
在本申请实施例中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。相应地,上下文模型可以包括第一上下文模型和第二上下文模型。其中,第一上下文模型用于对单一子节点的标识信息进行预测,第二上下文模型用于对单一子节点的坐标信息进行预测。
在一种可能的实施方式中,当相关信息为单一子节点的标识信息时,这时候对于S1002来说,在一些实施例中,所述根据所述邻居节点的占位比特信息,确定上下文模型,可以包括:
根据所述邻居节点的占位比特信息,确定所述当前节点的预测标识信息;
根据所述当前节点的预测标识信息,确定所述第一上下文模型。
需要说明的是,根据当前节点的预测标识信息,可以确定出第一上下文模型的索引序号值,然后根据该第一上下文模型的索引序号值,进而可以确定出第一上下文模型。因此,在一些实施例中,所述根据所述当前节点的预测标识信息,确定所述第一上下文模型,可以包括:
根据所述当前节点的预测标识信息,获得第一上下文模型的索引序号值;
根据所述第一上下文模型的索引序号值,确定所述第一上下文模型。
在一种具体的实施例中,该方法还可以包括:构建至少一个第一候选上下文模型;其中,不同的第一候选上下文模型对应不同的索引序号。
相应地,所述根据所述第一上下文模型的索引序号值,确定所述第一上下文模型,可以包括:
根据所述第一上下文模型的索引序号值,从所述至少一个第一候选上下文模型中选择所述索引序号值对应的第一候选上下文模型,将所选择的第一候选上下文模型确定为所述第一上下文模型。
也就是说,本申请实施例可以预先构建出至少一个第一候选上下文模型,而且不同的第一候选上下文模型输出不同的标识信息,同时不同的第一候选上下文模型对应不同的索引序号。如此,根据不同的标识信息就可以确定出不同的索引序号。这样,在根据当前节点的预测标识信息确定出第一上下文模型的索引序号值之后,然后可以从这至少一个第一候选上下文模型中选择索引序号值对应的第一候选上下文模型,以将其确定为第一上下文模型。
需要注意的是,第一上下文模型的索引序号值也可以在编码器侧确定之后,将其写入码流,这样解码器通过解析码流可以直接获得第一上下文模型的索引序号值,进而确定出第一上下文模型;但是这种情况下将会增加码率,降低编码效率。
进一步地,对于S1003来说,在一些实施例中,所述利用所述上下文模型解析码流,获取所述当前节点的相关信息,可以包括:
利用所述第一上下文模型解析码流,获取所述单一子节点的标识信息;其中,所述单一子节点的标识信息用于指示所述当前节点划分的子节点中是否仅一个子节点被占据。
需要说明的是,在解码获取到单一子节点的标识信息(如标志位,flag)的取值之后,可以确定出当前节点划分的子节点中被占据子节点的个数。具体地,在一些实施例中,该方法还可以包括:
若所述单一子节点的标识信息的取值等于第一标识值,则确定所述当前节点划分的子节点中仅一个子节点被占据;
若所述单一子节点的标识信息的取值等于第二标识值,则确定所述当前节点划分的子节点中至少两个子节点被占据。
在本申请实施例中,第一标识值可以为1,第二标识值可以为0;或者,第一标识值可以为0,第二标识值可以为1。在一种具体的示例中,第一标识值可设置为1,第二标识值可设置为0,但是不作具体限定。
需要说明的是,标识信息的取值也可以是被占据子节点的个数。例如,如果标识信息的取值等于0,那么当前节点划分的子节点中无被占据子节点;如果标识信息的取值等于1,那么当前节点划分的子节点中仅包括一个被占据子节点;如果标识信息的取值大于或等于2,那么当前节点划分的子节点中包括至少两个被占据子节点。
在另一种可能的实施方式中,当相关信息为单一子节点的坐标信息时,这时候对于S1002来说,在一些实施例中,所述根据所述邻居节点的占位比特信息,确定上下文模型,可以包括:
根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息;
根据所述当前节点的预测坐标信息,确定所述第二上下文模型。
需要说明的是,根据当前节点的预测坐标信息,可以确定出第二上下文模型的索引序号值,然后根据该第二上下文模型的索引序号值,进而可以确定出第二上下文模型。因此,在一些实施例中,所述根据所述当前节点的预测坐标信息,确定所述第二上下文模型,可以包括:
根据所述当前节点的预测坐标信息,获得第二上下文模型的索引序号值;
根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
在一种具体的实施例中,该方法还可以包括:构建至少一个第二候选上下文模型;其中,不同的第二候选上下文模型对应不同的索引序号。
相应地,所述根据所述第二上下文模型的索引序号值,确定所述第二上下文模型,可以包括:
根据所述第二上下文模型的索引序号值,从所述至少一个第二候选上下文模型中选择所述索引序号值对应的第二候选上下文模型,将所选择的第二候选上下文模型确定为所述第二上下文模型。
也就是说,本申请实施例可以预先构建出至少一个第二候选上下文模型,而且不同的第二候选上下文模型输出不同的坐标信息,同时不同的第二候选上下文模型也对应不同的索引序号。如此,根据不同的标识信息也可以确定出不同的索引序号。这样,在根据当前节点的预测坐标信息确定出第二上下文模型的索引序号值之后,然后可以从这至少一个第二候选上下文模型中选择索引序号值对应的第二候选上下文模型,以将其确定为第二上下文模型。
需要注意的是,第二上下文模型的索引序号值也可以在编码器侧确定之后,将其写入码流,这样解码器通过解析码流可以直接获得第二上下文模型的索引序号值,进而确定出第二上下文模型;但是这种情况下同样会增加码率,降低编码效率。
进一步地,对于S1003来说,在一些实施例中,所述利用所述上下文模型解析码流,获取所述当前节点的相关信息,可以包括:
当所述单一子节点的标识信息指示所述当前节点划分的子节点中仅一个子节点被占据时,利用第二上下文模型解析码流,获取所述单一子节点的坐标信息。
需要说明的是,在标识信息的取值指示当前节点划分的子节点中仅一个子节点被占据时,这时候可以通过解析码流,以确定唯一被占据的子节点(可简称为“单一子节点”)的坐标信息。然而由于邻居配置数的不同,对于单一子节点的坐标信息所采用的熵编码方式可能不同,这时候对单一子节点的坐标信息所采用的熵解码方式也可能不同。因此,本申请实施例还需要确定当前节点的邻居配置数。在一些实施例中,该方法还可以包括:确定当前节点的邻居配置数。
这样,根据当前节点的邻居配置数,可以确定当前节点中是否有邻居节点被占据,然后能够进一步确定出对于单一子节点的坐标信息所采用的熵解码方式,比如利用第二上下文模型解析码流的方式,或者利用等概率静态二进制算术解析码流的方式。
在一些实施例中,对于S1003来说,所述利用所述上下文模型解析码流,获取所述当前节点的相关信息,可以包括:
确定所述当前节点的邻居配置数;
若所述邻居配置数指示所述当前节点中有邻居节点被占据,则在所述单一子节点的标识信息指示所述当前节点划分的子节点中仅一个子节点被占据时,利用第二上下文模型解析码流,获取所述单一子节点的坐标信息。
进一步地,在一些实施例中,该方法还可以包括:
若所述邻居配置数指示所述当前节点中无邻居节点被占据,则在所述单一子节点的标识信息指示所述当前节点划分的子节点中仅包括一个被占据子节点时,利用等概率静态二进制算术解析码流,获取所述单一子节点的坐标信息。
在本申请实施例中,邻居配置数(Neighbouring configuration number,NC)用于表示与当前节点共面的邻居节点中有无邻居节点被占据。具体地,在一些实施例中,所述确定当前节点的邻居配置数,可以包括:
获取与所述当前节点共面的邻居节点的占位比特信息;
根据所述与所述当前节点共面的邻居节点的占位比特信息,确定所述邻居配置数。
这里,与当前节点共面的邻居节点可以包括下述至少之一:与所述当前节点左侧面相接的邻居节点、与所述当前节点右侧面相接的邻居节点、与所述当前节点上侧面相接的邻居节点、与所述当前节点下侧面相接的邻居节点、与所述当前节点后侧面相接的邻居节点、与所述当前节点前侧面相接的邻居节点。也就是说,与当前节点共面的邻居节点通常包括有6个,具体如图2所示。
还需要说明的是,邻居节点的占位比特信息是根据邻居节点内有无点占据确定的。在一种具体的实施例中,所述获取所述当前节点的邻居节点的占位比特信息,可以包括:
若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;
若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
在本申请实施例中,第一值可以为1,第二值可以为0;或者,第一值可以为0,第二值可以为1。在一种具体的示例中,第一值可设置为1,第二值可设置为0,但是不作具体限定。
也就是说,以第一值为1,第二值为0为例,如果某邻居节点内有点占据,那么该邻居节点的占位比特信息等于1;如果某邻居节点内无点占据,那么该邻居节点的占位比特信息等于0。这样,针对当前节点的6个邻居节点的占位比特信息,可以计算得到邻居配置数。
另外,根据邻居配置数,可以反映当前节点中有无邻居节点被占据。在一些实施例中,该方法还可以包括:
若所述邻居配置数大于0,则确定所述当前节点中有邻居节点被占据;
若所述邻居配置数等于0,则确定所述当前节点中无邻居节点被占据。
在本申请实施例中,邻居配置数的取值范围为0~63。也就是说,如果邻居配置数大于0,那么表明当前节点中有邻居节点被占据;如果邻居配置数等于0,那么表明当前节点中无邻居节点被占据。
可以理解地,本申请实施例还引入了一个新的变量,即单一子节点使能变量(可以用ctxSingleChildEnabled表示)。因此,在一些实施例中,在S1002之前,该方法还可以包括:确定单一子节点使能变量的取值;
相应地,对于S1002来说,所述根据所述邻居节点的占位比特信息,确定上下文模型,可以包括:
在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,根据所述邻居节点的占位比特信息,确定上下文模型。
也就是说,当单一子节点使能变量(即ctxSingleChildEnabled)的取值指示当前节点处于单一子节点使能状态时,这时候需要确定上下文模型,比如第一上下文模型和第二上下文模型,以便后续利用第一上下文模型和第二上下文模型对当前节点的相关信息进行熵解码。
这里,单一子节点使能变量的取值与节点数量(用N all表示)和单一子节点数量(用N singe表示)有关。具体地,在一些实施例中,所述确定单一子节点使能变量的取值,可以包括:
确定节点数量以及单一子节点数量;
对所述单一子节点数量和所述节点数量进行除法运算,得到第一比例值;
将所述第一比例值和第一阈值进行比较;
根据所述第一比例值和所述第一阈值的比较结果,确定所述单一子节点使能变量的取值。
在一种具体的实施例中,所述根据所述第一比例值和所述第一阈值的比较结果,确定所述单一子节点使能变量的取值,可以包括:
若所述第一比例值大于所述第一阈值,则确定所述单一子节点使能变量的取值为第三值;
若所述第一比例值小于或等于所述第一阈值,则确定所述单一子节点使能变量的取值为第四值。
在本申请实施例中,第三值可以为1,第四值可以为0;或者,第三值可以为0,第四值可以为1。在一种具体的示例中,第三值可设置为1,第四值可设置为0,但是不作具体限定。
需要说明的是,第一阈值可以作为判断单一子节点使能变量取值的衡量指标。在本申请实施例中,第一阈值可以表示预先设定的固定值(比如根据经验值得到),也可以表示通过自适应算法确定的值,甚至还可以表示由编码器写入码流以使得在解码器中能够通过解析码流获得的值。这里,第一阈值的取值范围为[0,1]之内,根据实际情况进行具体调整。在本申请的一种具体示例中,第一阈值可以设置为0.8,但是不作具体限定。
在本申请实施例中,单一子节点使能变量可以用ctxSingleChildEnabled表示。针对单一子节点使能变量的确定,可以上述的式(1)实现。
进一步地,在一些实施例中,该方法还可以包括:
若单一子节点使能变量的取值为1,则确定所述当前节点处于单一子节点使能状态;
若单一子节点使能变量的取值为0,则确定所述当前节点处于单一子节点不使能状态。
也就是说,如果ctxSingleChildEnabled=1,那么当前节点处于单一子节点使能状态,这时候可以 执行本申请实施例所述的点云解码方法;如果ctxSingleChildEnabled=0,那么当前节点处于单一子节点不使能状态,这时候可以执行相关技术的点云解码方法,即基于NC上下文的CABAC解码得到当前节点的8个子节点的占位比特信息。
还需要说明的是,本申请实施例中的N singe和N all是不断更新的。在一些实施例中,该方法还可以包括:
解析码流,在确定进入所述八叉树的第i层时,设置所述节点数量的初始值为0,所述单一子节点数量的初始值为0,所述单一子节点使能变量的初始值为0;其中,i为大于或等于0且小于K的整数,K表示所述八叉树的层数,K为大于0的整数。
这里,K表示八叉树的层数,K为大于0的整数。其中,针对八叉树的每一层,当第一次进入该层时,这时候首先需要初始化节点数量、单一子节点数量和单一子节点使能变量的取值,即节点数量的初始值赋值为0,单一子节点数量的初始值赋值为0,单一子节点使能变量的初始值赋值为0。
进一步地,所述确定节点数量以及单一子节点数量,可以包括:
解析码流,在确定所述当前节点处于八叉树的第i层时,基于所述第i层中的已解码节点,获得所述节点数量;
从所述已解码节点中确定仅一个子节点被占据的已解码节点,获得所述单一子节点数量。
需要说明的是,节点数量和单一子节点数量都是第i层中的已解码节点。对于单一子节点数量而言,所述从已解码节点中确定仅包括一个被占据子节点的已解码节点,获得所述单一子节点数量,可以包括:
在所述已解码节点中,判断所述已解码节点划分的子节点是否仅包括一个被占据子节点;
若判断结果为是,则对所述单一子节点数量执行加1操作,更新所述单一子节点数量;
若判断结果为否,则维持所述单一子节点数量不变。
换句话说,解析码流,在确定进入所述八叉树的第i层时,初始化节点数量(N all)、单一子节点数量(N singe)和单一子节点使能变量(ctxSingleChildEnabled)的值,即赋值N all=0,N singe=0,ctxSingleChildEnabled=0。然后解析码流,在确定当前节点(即第i层的第j个节点)处于第i层时,针对第i层,在第i层的第j个节点已经完成点云解码后,可以更新N all=N all+1,即节点数量表示已解码节点的数量。若第j个节点划分的子节点中仅包括一个被占据子节点(即N oc=1)时,则更新N singe=N singe+1,也即单一子节点数量表示已解码节点中确定仅包括一个被占据子节点的已解码节点的数量。在j小于N时,则更新j=j+1,继续执行读取所述第i层的第j个节点的步骤,直至第i层中所有节点均已经处理,j为大于或等于0且小于N的整数,N为第i层中的节点总数量;然后再进入八叉树的第i+1层,直至八叉树的K层全部已处理。
这样,在确定出N singe和N all之后,结合式(1)可以计算得到单一子节点使能变量(ctxSingleChildEnabled)的取值,以便确定后续是否需要利用上下文模型进行熵解码。
具体来讲,在本申请实施例中,如果邻居配置数指示当前节点中有邻居节点被占据,那么表示NC>0;如果单一子节点使能变量的取值指示当前节点处于单一子节点使能状态,那么表示ctxSingleChildEnabled=1。也就是说,在邻居配置数指示当前节点中有邻居节点被占据(即NC>0)且ctxSingleChildEnabled=1时,这时候需要构建上下文模型,而且本申请实施例是在邻居节点的子节点不用于构建上下文模型(adjacent_child_contextualization_enabled_flag==0)的情况下,可以利用邻居节点的占位比特信息来构建上下文模型,然后再利用所构建的上下文模型来对单一子节点的坐标信息进行解码,用以提高解码效率。
下面将针对利用邻居节点的占位比特信息来构建第一上下文模型和第二上下文模型的具体过程进行详细描述。
在一些实施例中,在单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,对于第一上下文模型,所述根据所述邻居节点的占位比特信息,确定上下文模型,可以包括:
根据所述邻居节点的占位比特信息,确定所述当前节点的预测标识信息;
根据所述当前节点的预测标识信息,确定所述第一上下文模型。
需要说明的是,第一上下文模型的确定与当前节点的预测标识信息有关,而当前节点的预测标识信息是由邻居节点的占位比特信息确定的。在一种具体的实施例中,所述根据所述邻居节点的占位比特信息,确定所述当前节点的预测标识信息,可以包括:
根据所述邻居节点的占位比特信息,确定与当前节点共面的邻居节点中有点占据的第一节点数量;
根据所述第一节点数量,确定所述当前节点的预测标识信息。
在本申请实施例中,第一节点数量可以用N on表示,N on表示与当前节点共面的6个邻居节点中有点占据的邻居节点数量,N on可取值为0到6。
进一步地,在得到第一节点数量后,可以用以确定当前节点的预测标识信息。在一些实施例中,所 述根据所述第一节点数量,确定所述当前节点的预测标识信息,可以包括:
将所述第一节点数量与第二阈值进行比较;
根据所述第一节点数量与所述第二阈值的比较结果,确定所述当前节点的预测标识信息。
在一种具体的实施例中,所述根据所述第一节点数量与所述第二阈值的比较结果,确定所述当前节点的预测标识信息,可以包括:
若所述第一节点数量小于所述第二阈值,则确定所述当前节点的预测标识信息等于第五值;
若所述第一节点数量大于或等于所述第二阈值,则确定所述当前节点的预测标识信息等于第六值。
在本申请实施例中,第五值可以为1,第六值可以为0;或者,第五值可以为0,第六值可以为1。在一种具体的示例中,第五值可设置为1,第六值可设置为0,但是不作具体限定。。
另外,第二阈值可以作为判断当前节点的预测标识信息取值的衡量指标。在本申请实施例中,第二阈值可以表示预先设定的固定值,也可以表示通过自适应算法确定的值,甚至还可以表示由编码器写入码流以使得在解码器中能够通过解析码流获得的值。这里,第二阈值的取值范围为[0,6]之内,根据实际情况进行具体调整。在本申请的一种具体示例中,第二阈值可以设置为3,但是不作具体限定。
在一种具体的实现方式中,通过N on对标识信息(如标志位,flag)的预测,可以构建出2种上下文模型,具体如上述式(2)所示。
这样,在得到N on之后,可以根据N on可以确定出标识信息的预测值,进而确定出第一上下文模型的索引序号值,然后根据式(2)所示的两个第一候选上下文模型中选择索引序号值对应的第一候选上下文模型,以将其确定为第一上下文模型。
在一些实施例中,在单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,对于第二上下文模型,所述根据所述邻居节点的占位比特信息,确定上下文模型,可以包括:
根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息;
根据所述当前节点的预测坐标信息,确定所述第二上下文模型。
需要说明的是,第二上下文模型的确定与当前节点的预测坐标信息有关,而当前节点的预测坐标信息是由邻居节点的占位比特信息确定的。在一种具体的实施例中,所述根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息,可以包括:
根据所述邻居节点的占位比特信息,确定第一方向坐标值为第七值对应的第一平面内邻居节点中有点占据的第二节点数量,以及第二方向坐标值为第七值对应的第二平面内邻居节点中有点占据的第三节点数量,以及第三方向坐标值为第七值对应的第三平面内邻居节点中有点占据的第四节点数量;
将所述第二节点数量与第三阈值进行比较,根据比较结果确定第一坐标方向的第一一预测值;
将所述第三节点数量与第三阈值进行比较,根据比较结果确定第二坐标方向的第二一预测值;
将所述第四节点数量与第三阈值进行比较,根据比较结果确定第三坐标方向的第三一预测值;
根据第一一预测值、第二一预测值和第三一预测值,得到当前节点的第一组预测坐标信息。
这里,第七值可以为-1,或者第七值可以为1。在一种具体的示例中,第七值可以为-1,但是不作具体限定。
另外,第三阈值可以作为判断当前节点的预测坐标信息取值的衡量指标。在本申请实施例中,第三阈值可以表示预先设定的固定值,也可以表示通过自适应算法确定的值,甚至还可以表示由编码器写入码流以使得在解码器中能够通过解析码流获得的值。在本申请实施例中,第三阈值可以根据实际情况进行具体调整,这里不作具体限定。在一种具体的示例中,第三阈值可以设置为0。
需要说明的是,第二节点数量可以用N x=-1表示,N x=-1表示x轴方向坐标值为-1的yz平面上9个邻居节点中有点占据的节点数量,N x=-1可取值为0到9。第三节点数量可以用N y=-1表示,N y=-1表示y轴方向坐标值为-1的xz平面上9个邻居节点中有点占据的节点数量,N y=-1可取值为0到9。第四节点数量可以用N z=-1表示,N z=-1表示z轴方向坐标值为-1的xy平面上9个邻居节点中有点占据的节点数量,N z=-1可取值为0到9。
示例性地,以如图6为例,假定第七值等于-1,可以定义N x=-1为x轴方向坐标值为-1的yz平面上9个邻居节点中有点占据的节点数量,通过N x=-1可以预测当前节点中单一子节点的x轴方向的坐标值(即第一一预测值,用X 0表示),据此可以构建出2种上下文模型,具体如上述式(3)所示。
假定第七值等于-1,可以定义N y=-1为y轴方向坐标值为-1的xz平面上9个邻居节点中有点占据的节点数量,通过N y=-1可以预测当前节点中单一子节点的y轴方向的坐标值(即第二一预测值,用Y 0表示),据此可以构建出2种上下文模型,具体如上述式(4)所示。
假定第七值等于-1,可以定义N z=-1为z轴方向坐标值为-1的xy平面上9个邻居节点中有点占据的节点数量,通过N z=-1可以预测当前节点中单一子节点的z轴方向的坐标值(即第三一预测值,用Z 0表示),据此可以构建出2种上下文模型,具体如上述式(5)所示。
在另一种具体的实施例中,所述根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息,可以包括:
根据所述邻居节点的占位比特信息,确定第一方向坐标值为第八值对应的第一平面内邻居节点中有点占据的第五节点数量,以及第二方向坐标值为第八值对应的第二平面内邻居节点中有点占据的第六节点数量,以及第三方向坐标值为第八值对应的第三平面内邻居节点中有点占据的第七节点数量;
将所述第五节点数量与第四阈值进行比较,根据比较结果确定第一坐标方向的第一二预测值;
将所述第六节点数量与第四阈值进行比较,根据比较结果确定第二坐标方向的第二二预测值;
将所述第七节点数量与第四阈值进行比较,根据比较结果确定第三坐标方向的第三二预测值;
根据第一二预测值、第二二预测值和第三二预测值,得到当前节点的第二组预测坐标信息。
在本申请实施例中,第七值可以为-1,第八值可以为1;或者,第七值可以为1,第八值可以为-1。在一种具体的示例中,第七值可以为-1,第八值可以为1,但是不作具体限定。
另外,第四阈值也可以作为判断当前节点的预测坐标信息取值的衡量指标。在本申请实施例中,第四阈值可以表示预先设定的固定值,也可以表示通过自适应算法确定的值,甚至还可以表示由编码器写入码流以使得在解码器中能够通过解析码流获得的值。在本申请实施例中,第四阈值可以与第三阈值相同,也可以不相同,根据实际情况进行具体调整,这里不作具体限定。在一种具体的示例中,第四阈值也可以设置为0。
还需要说明的是,第五节点数量可以用N x=1表示,N x=1表示x轴方向坐标值为1的yz平面上9个邻居节点中有点占据的节点数量,N x=1可取值为0到9。第六节点数量可以用N y=1表示,N y=1表示y轴方向坐标值为1的xz平面上9个邻居节点中有点占据的节点数量,N y=1可取值为0到9。第七节点数量可以用N z=1表示,N z=1表示z轴方向坐标值为1的xy平面上9个邻居节点中有点占据的节点数量,N z=1可取值为0到9。
示例性地,仍以图6为例,假定第八值等于1,可以定义N x=1为x轴方向坐标值为1的yz平面上9个邻居节点中有点占据的节点数量,通过N x=1可以预测当前节点中单一子节点的x轴方向的坐标值(即第一二预测值,用X 1表示),据此可以构建出2种上下文模型,具体如上述式(6)所示。
假定第八值等于1,可以定义N y=1为y轴方向坐标值为1的xz平面上9个邻居节点中有点占据的节点数量,通过N y=1可以预测当前节点中单一子节点的y轴方向的坐标值(即第二二预测值,用Y 1表示),据此可以构建出2种上下文模型,,具体如上述式(7)所示。
假定第八值等于1,可以定义N z=1为z轴方向坐标值为1的xy平面上9个邻居节点中有点占据的节点数量,通过N z=1可以预测当前节点中单一子节点的z轴方向的坐标值(即第三二预测值,用Z 1表示),据此可以构建出2种上下文模型,具体如上述式(8)所示。
这样,在得到当前节点的第一值预测坐标信息和当前节点的第二值预测坐标信息之后,可以根据这两组预测坐标信息,确定出第二上下文模型。具体地,在一些实施例中,所述根据所述当前节点的预测坐标信息,确定所述第二上下文模型,可以包括:
获取所述当前节点的第一组预测坐标信息和第二组预测坐标信息;
根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第二上下文模型的索引序号值;
根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
进一步地,所述根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第二上下文模型的索引序号值,可以包括:
根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第一坐标方向的第一一预测值和第二一预测值、第二坐标方向的第二一预测值和第二二预测值、第三坐标方向的第三一预测值和第三二预测值;
根据所述第一坐标方向的第一一预测值和第一二预测值,确定所述第一坐标方向的所述第二上下文模型的索引序号值;
根据所述第二坐标方向的第二一预测值和第二二预测值,确定所述第二坐标方向的所述第二上下文模型的索引序号值;
根据所述第三坐标方向的第三一预测值和第三二预测值,确定所述第三坐标方向的所述第二上下文模型的索引序号值。
也就是说,在得到第一坐标方向的第一一预测值和第二一预测值之后,可以据此确定出第一坐标方向的所述第二上下文模型的索引序号值;在得到第二坐标方向的第二一预测值和第二二预测值之后,可以据此确定出第二坐标方向的所述第二上下文模型的索引序号值;在得到第三坐标方向的第三一预测值和第三二预测值之后,可以据此确定出第三坐标方向的所述第二上下文模型的索引序号值;从而确定出第二上下文模型的索引序号值,然后从式(3)~式(8)等多个第二候选上下文模型中选择索引序号值 对应的第二候选上下文模型,以将其确定为第二上下文模型。
在本申请实施例中,用于预测标识信息(flag)的上下文模型,可以共有2种上下文模型的数量。在解码过程中,根据当前节点的邻居节点的占位比特信息,可得预测出标识信息的唯一上下文索引序号,根据索引序号选择2种当中的1种上下文模型以便后续对标识信息进行CABAC。针对三个坐标方向(x/y/z坐标方向)分别构建预测坐标信息的上下文模型,每个坐标方向上共有2×2=4种上下文模型的数量,那么三个坐标方向上总共有12种上下文模型。在编码过程中,根据当前节点的邻居节点的占位比特信息,可得唯一的上下文索引序号,根据索引序号选择12种当中的1种上下文模型以便后续对预测坐标值进行CABAC。
除此之外,在另一可能的实施方式中,对于上下文模型的构建,如图6所示,获取当前节点的26个邻居节点的占位比特信息(occupancy bit),即邻居节点内有点占据,则占位比特信息为1,否则占位比特信息为0。如此,可以计算得出邻居配置数(Neighbouring configuration number,NC),NC的取值范围可以为0到2 26,即二进制的“26个0”到“26个1”。这样,根据NC可以构建最多2 26种上下文数量的上下文模型,也可任意合并其中的n个上下文模型,即可以构建x个数量的上下文模型,其中,x可取值为1到2 26
简言之,上述所构建的上下文模型均可用于解码坐标信息和标识信息。一句话概括为:利用当前节点的26个邻居节点的占位比特信息,可以构建上下文模型,然后通过所构建的上下文模型进行解码获得所需标识信息(flag)以及确定出当前节点中的被占据子节点的坐标信息。
进一步地,在一些实施例中,在获得单一子节点的坐标信息之后,该方法还可以包括:
基于所述单一子节点的坐标信息,确定所述当前节点划分的子节点的占位比特信息。
需要说明的是,基于被占据子节点的坐标信息,可以确定出当前节点划分的子节点的占位比特信息。在一些实施例中,在确定所述当前节点划分的子节点的占位比特信息之后,该方法还可以包括:
若所述子节点的占位比特信息等于第一值,则确定所述子节点内有点占据;
若所述子节点的占位比特信息等于第二值,则确定所述子节点内无点占据。
还需要说明的是,基于被占据子节点的坐标信息,可以确定出当前节点划分的子节点的占位比特信息。在一些实施例中,在确定所述当前节点划分的子节点的占位比特信息之后,该方法还可以包括:根据所述子节点的占位比特信息,确定所述子节点被占据数(N oc)。
在本申请实施例中,第一值可以为1,第二值可以为0;或者,第一值可以为0,第二值可以为1。在一种具体的示例中,第一值可设置为1,第二值可设置为0,但是不作具体限定。
也就是说,以第一值为1,第二值为0为例,如果某子节点的占位比特信息等于1,那么该子节点内有点占据;如果某子节点的占位比特信息等于0,那么该子节点内无点占据。
这样,在解码得到被占据子节点的坐标信息之后,根据被占据子节点的坐标信息,就可以还原出当前节点划分的子节点的占位比特信息。
本实施例提供了一种点云解码方法,通过获取当前节点的邻居节点的占位比特信息;根据所述邻居节点的占位比特信息,确定上下文模型;利用所述上下文模型解析码流,获取所述当前节点的相关信息;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。这样,由于利用邻居节点的占位比特信息来构建上下文模型,如此基于所构建的上下文模型对单一子节点的标识信息和坐标信息进行熵解码,能够充分利用点云的空间相关性,从而能够提高点云的解码效率。
本申请的再一实施例中,参见图11,其示出了本申请实施例提供的一种点云解码方法的详细流程示意图。如图11所示,该详细流程可以包括:
S1101:i=0;
S1102:进入八叉树的第i层;
这里,i为大于或等于0且小于K的整数,K表示八叉树的划分层数。需要说明的是,该详细流程首次为进入八叉树的第0层。
S1103:设置j=0,N all=0,N singe=0,ctxSingleChildEnabled=0;
S1104:读取第j个节点;
这里,j为大于或等于0且小于N的整数,N为第i层中的节点总数量。
S1105:根据当前节点的6个邻居节点的占位比特信息,计算邻居配置数NC;
S1106:判断是否ctxSingleChildEnabled==1;
S1107:确定第一组坐标信息的预测值(X 0、Y 0、Z 0);
S1108:确定第二组坐标信息的预测值(X 1、Y 1、Z 1);
S1109:确定标识信息的预测值;
需要说明的是,对于步骤S1106而言,如果判断结果为是,那么执行S1107~S1108,然后再执行S1109;如果判断结果为否,那么将直接执行S1109。
S1110:判断是否NC==0;
S1111:若判断结果为否,则判断是否ctxSingleChildEnabled==1;
S1112:若判断结果为是,则利用第一上下文模型进行CABAC解码获得flag;
S1113:判断是否flag==1;
S1114:若判断结果为是,则利用第二上下文模型进行CABAC解码获得唯一被占据子节点的坐标信息X、Y、Z;
S1115:还原当前节点划分的8个子节点的占位比特信息;
在本申请实施例中,第一上下文模型用于对标识信息(如flag)进行预测;第二上下文模型用于对坐标信息(如X/Y/Z坐标值)进行预测。
需要说明的是,对于步骤S1113而言,如果判断结果为是,则执行S1114~S1115;如果判断结果为否,则执行S1120。
还需要说明的是,对于步骤S1110而言,如果判断结果为否,则执行S1111;如果判断结果为是,则执行S1116。
S1116:若判断结果为是,则利用第一上下文模型进行CABAC解码获得flag;
S1117:判断是否flag==1;
S1118:若判断结果为是,则利用等概率静态算术解码获得唯一被占据子节点的坐标信息X、Y、Z;
S1119:还原当前节点划分的8个子节点的占位比特信息;
S1120:若判断结果为否,则利用基于NC上下文的CABAC解码获得当前节点划分的8个子节点的占位比特信息;
S1121:N all=N all+1;
需要说明的是,对于S1111、S1113和S1117而言,如果判断结果为否,那么均将执行S1120。在S1120、S1115和S1119之后,则均将执行S1121。
S1122:判断是否N oc==1;
S1123:若判断结果为是,则N singe=N singe+1;
S1124:判断是否N singe/N all>0.8;
需要说明的是,对于S1122而言,如果判断结果为是,则先执行S1123,再执行S1124;如果判断结果为否,则直接执行S1124。
S1125:若判断结果为否,则ctxSingleChildEnabled=0;
S1126:若判断结果为是,则ctxSingleChildEnabled=1;
S1127:判断当前第j层内所有节点是否已处理;
S1128:若判断结果为否,则j=j+1,返回执行S1104;
S1129:若判断结果为是,则判断八叉树的所有层是否已处理;
S1130:若判断结果为否,则i=i+1,返回执行S1102;
S1131:若判断结果为是,则结束流程。
需要说明的是,首先,进入八叉树的第i层(i的最小值为0),初始化设置节点数量N all=0,单一子节点数量N singe=0,以及赋值单一子节点使能变量ctxSingleChildEnabled=0。
其次,读取第j个节点(j的最小值为0),根据当前节点的6个邻居节点的占位比特信息,计算得出NC。
再次,当ctxSingleChildEnabled==1时,根据与当前节点相接的6个邻居节点的占位比特信息,计算得出N on,最后预测出flag。根据当前节点的26个邻居节点的占位比特信息,计算得出N x=-1、N y=-1和N z=-1,可以预测出第一组坐标信息X 0、Y 0和Z 0;计算得出N x=1,N y=1和N z=1,可以预测出第二组坐标信息X 1、Y 1和Z 1。其中,当ctxSingleChildEnabled==0时,也可以根据与当前节点相接的6个邻居节点的占位比特信息,用以预测出flag。
再次,当NC==0时(邻居配置数为0,即6个邻居节点中无邻居节点被占据),由于已经得到预测flag,这时候可以用基于上下文“预测flag”的自适应二进制算术解码来获得flag。当flag等于1时,则用等概率静态二进制算术解码来获得当前节点中单一子节点的坐标信息(X/Y/Z坐标值),并还原出8个子节点的占位比特信息。
当NC>0(6个邻居节点中有邻居节点被占据)且ctxSingleChildEnabled==1时,用基于上下文“预测flag”的自适应二进制算术解码来获得flag。当flag==1时,则用基于上下文“预测坐标信息”的自 适应二进制算术解码来获得当前节点中单一子节点的坐标信息(X/Y/Z坐标值),并还原出8个子节点的占位比特信息。
当flag==0时(8个子节点中不只1个子节点被占据)或者,NC>0(6个邻居节点中有邻居节点被占据)且ctxSingleChildEnabled==0时,则用CABAC来解码获得当前节点的8个子节点的占位比特信息。
最后,更新N all=N all+1。根据当前节点的8个子节点的占位比特信息,计算得出N oc,当N oc=1时,更新N singe=N singe+1。这里,ctxSingleChildEnabled的计算具体如上述的式(9)所示。
如果当前第i层内所有节点已处理,那么i=i+1,并返回到步骤S1102处理八叉树下一层;否则,j=j+1,返回到步骤S1104处理第i层的下一个节点。如果所有层已处理,那么可以结束流程。
简言之,本申请技术方案的保护点在于针对单一子节点解码构建了“预测flag”和“预测坐标信息”的上下文模型,通过CABAC提高压缩效率。并通过有单一子节点的节点在所有节点中的比例来控制该点云解码方法是否使能。
本实施例提供了一种点云解码方法,通过上述实施例对前述实施例的具体实现进行了详细阐述,从中可以看出,由于针对单一子节点的标识信息和坐标信息分别构建了上下文模型,如此基于所构建的上下文模型对标识信息和坐标信息进行熵解码,能够充分利用点云的空间相关性,从而能够提高点云的解码效率。
本申请的再一实施例中,基于前述实施例相同的发明构思,参见图12,其示出了本申请实施例提供的一种编码器120的组成结构示意图。如图12所示,该编码器120可以包括:第一获取单元1201、第一确定单元1202和编码单元1203;其中,
第一获取单元1201,配置为获取当前节点的邻居节点的占位比特信息;
第一确定单元1202,配置为根据所述邻居节点的占位比特信息,确定上下文模型;
编码单元1203,配置为利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。
在一些实施例中,第一确定单元1202,具体配置为根据所述邻居节点的占位比特信息,确定所述当前节点的预测标识信息;以及根据所述当前节点的预测标识信息,确定所述第一上下文模型。
在一些实施例中,第一确定单元1202,还配置为确定当前节点的子节点被占据数;以及根据所述子节点被占据数,确定所述单一子节点的标识信息;
编码单元1203,具体配置为利用所述第一上下文模型对所述单一子节点的标识信息进行熵编码,并写入码流。
在一些实施例中,第一确定单元1202,具体配置为根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息;以及根据所述当前节点的预测坐标信息,确定所述第二上下文模型。
在一些实施例中,编码单元1203,具体配置为当所述单一子节点的标识信息指示所述当前节点划分的子节点中仅一个子节点被占据时,确定所述单一子节点的坐标信息,利用所述第二上下文模型对所述单一子节点的坐标信息进行熵编码,并写入码流。
在一些实施例中,第一确定单元1202,还配置为确定所述当前节点的邻居配置数;
编码单元1203,还配置为若所述邻居配置数指示所述当前节点中有邻居节点被占据,则在所述单一子节点的标识信息指示所述当前节点划分的子节点中仅一个子节点被占据时,确定所述单一子节点的坐标信息,利用所述第二上下文模型对所述单一子节点的坐标信息进行熵编码,并写入码流。
在一些实施例中,第一确定单元1202,还配置为获取所述当前节点划分的子节点的占位比特信息;以及根据所述子节点的占位比特信息,计算所述单一子节点的坐标信息。
在一些实施例中,所述邻居节点包括下述至少之一:与所述当前节点共面的邻居节点、与所述当前节点共线的邻居节点和与所述当前节点共点的邻居节点。
在一些实施例中,第一确定单元1202,还配置为若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
在一些实施例中,第一确定单元1202,还配置为获取与所述当前节点共面的邻居节点的占位比特信息;以及根据所述与所述当前节点共面的邻居节点的占位比特信息,确定所述邻居配置数。
在一些实施例中,第一确定单元1202,还配置为若所述邻居配置数大于0,则确定所述当前节点中有邻居节点被占据;若所述邻居配置数等于0,则确定所述当前节点中无邻居节点被占据。
在一些实施例中,第一确定单元1202,还配置为获取所述当前节点划分的子节点的占位比特信息;以及根据所述子节点的占位比特信息,确定所述子节点被占据数。
在一些实施例中,第一确定单元1202,还配置为若所述子节点内有点占据,则确定所述子节点的占位比特信息等于第一值;若所述子节点内无点占据,则确定所述子节点的占位比特信息等于第二值。
在一些实施例中,所述第一值为1,所述第二值为0;或者,所述第一值为0,所述第二值为1。
在一些实施例中,第一确定单元1202,还配置为若所述子节点被占据数等于1,则确定所述单一子节点的标识信息的取值为第一标识值;若所述子节点被占据数不等于1,则确定所述单一子节点的标识信息的取值为第二标识值。
在一些实施例中,第一确定单元1202,还配置为若所述子节点被占据数等于1,则确定所述当前节点划分的子节点中仅一个子节点被占据;若所述子节点被占据数不等于1,则确定所述当前节点划分的子节点中至少两个子节点被占据。
在一些实施例中,第一确定单元1202,还配置为若所述当前节点划分的子节点中仅一个子节点被占据,则确定所述单一子节点的标识信息的取值为第一标识值;若所述当前节点划分的子节点中至少两个子节点被占据,则确定所述单一子节点的标识信息的取值为第二标识值。
在一些实施例中,所述第一标识值为1,所述第二标识值为0;或者,所述第一标识值为0,所述第二标识值为1。
在一些实施例中,第一确定单元1202,还配置为确定单一子节点使能变量的取值;以及在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,根据所述邻居节点的占位比特信息,确定上下文模型。
在一些实施例中,参见图12,编码器120还可以包括第一比较单元1204;
第一确定单元1202,还配置为确定节点数量以及单一子节点数量;
第一比较单元1204,配置为对所述单一子节点数量和所述节点数量进行除法运算,得到第一比例值;以及将所述第一比例值和第一阈值进行比较;以及根据所述第一比例值和所述第一阈值的比较结果,确定所述单一子节点使能变量的取值。
进一步地,第一比较单元1204,具体配置为若所述第一比例值大于所述第一阈值,则确定所述单一子节点使能变量的取值为第三值;若所述第一比例值小于或等于所述第一阈值,则确定所述单一子节点使能变量的取值为第四值。
在一些实施例中,所述第三值为1,所述第四值为0;或者,所述第三值为0,所述第四值为1。
在一些实施例中,参见图12,编码器120还可以包括划分单元1205和第一设置单元1206;其中,
划分单元1205,配置为对输入点云进行八叉树划分,得到K层的八叉树,K为大于0的整数;
第一设置单元1206,配置为在进入所述八叉树的第i层时,设置所述节点数量的初始值为0,所述单一子节点数量的初始值为0,所述单一子节点使能变量的初始值为0;其中,i为大于或等于0且小于K的整数。
在一些实施例中,第一获取单元1201,还配置为当所述当前节点处于所述第i层时,基于所述第i层中的已编码节点,获得所述节点数量;以及从所述已编码节点中确定仅一个子节点被占据的已编码节点,获得所述单一子节点数量。
在一些实施例中,第一确定单元1202,还配置为在所述已编码节点中,判断所述已编码节点划分的子节点中是否仅一个子节点被占据;以及若判断结果为是,则对所述单一子节点数量执行加1操作,更新所述单一子节点数量;若判断结果为否,则维持所述单一子节点数量不变。
在一些实施例中,第一确定单元1202,还配置为根据所述邻居节点的占位比特信息,确定与所述当前节点共面的邻居节点中有点占据的第一节点数量;以及根据所述第一节点数量,确定所述当前节点的预测标识信息。
在一些实施例中,第一比较单元1204,还配置为将所述第一节点数量与第二阈值进行比较;根据所述第一节点数量与所述第二阈值的比较结果,确定所述当前节点的预测标识信息。
进一步地,第一比较单元1204,具体配置为若所述第一节点数量小于所述第二阈值,则确定所述当前节点的预测标识信息等于第五值;若所述第一节点数量大于或等于所述第二阈值,则确定所述当前节点的预测标识信息等于第六值。
在一些实施例中,所述第五值为1,所述第六值为0;或者,所述第五值为0,所述第六值为1。
在一些实施例中,第一确定单元1202,具体配置为根据所述当前节点的预测标识信息,获得第一上下文模型的索引序号值;以及根据所述第一上下文模型的索引序号值,确定所述第一上下文模型。
在一些实施例中,参见图12,编码器120还可以包括第一构建单元1207,配置为构建至少一个第一候选上下文模型;其中,不同的第一候选上下文模型对应不同的索引序号;
相应地,第一确定单元1202,具体配置为根据所述第一上下文模型的索引序号值,从所述至少一个第一候选上下文模型中选择所述索引序号值对应的第一候选上下文模型,将所选择的第一候选上下文 模型确定为所述第一上下文模型。
在一些实施例中,第一确定单元1202,还配置为根据所述邻居节点的占位比特信息,确定第一方向坐标值为第七值对应的第一平面内邻居节点中有点占据的第二节点数量,以及第二方向坐标值为第七值对应的第二平面内邻居节点中有点占据的第三节点数量,以及第三方向坐标值为第七值对应的第三平面内邻居节点中有点占据的第四节点数量;
第一比较单元1204,还配置为将所述第二节点数量与第三阈值进行比较,根据比较结果确定第一坐标方向的第一一预测值;以及将所述第三节点数量与第三阈值进行比较,根据比较结果确定第二坐标方向的第二一预测值;以及将所述第四节点数量与第三阈值进行比较,根据比较结果确定第三坐标方向的第三一预测值;以及根据所述第一一预测值、所述第二一预测值和所述第三一预测值,得到所述当前节点的第一组预测坐标信息。
在一些实施例中,第一确定单元1202,还配置为根据所述邻居节点的占位比特信息,确定第一方向坐标值为第八值对应的第一平面内邻居节点中有点占据的第五节点数量,以及第二方向坐标值为第八值对应的第二平面内邻居节点中有点占据的第六节点数量,以及第三方向坐标值为第八值对应的第三平面内邻居节点中有点占据的第七节点数量;
第一比较单元1204,还配置为将所述第五节点数量与第四阈值进行比较,根据比较结果确定第一坐标方向的第一二预测值;以及将所述第六节点数量与第四阈值进行比较,根据比较结果确定第二坐标方向的第二二预测值;以及将所述第七节点数量与第四阈值进行比较,根据比较结果确定第三坐标方向的第三二预测值;以及根据所述第一二预测值、所述第二二预测值和所述第三二预测值,得到所述当前节点的第二组预测坐标信息。
在一些实施例中,所述第七值为-1,所述第八值为1;或者,所述第七值为1,所述第八值为-1。
在一些实施例中,第一获取单元1201,还配置为获取所述当前节点的第一组预测坐标信息和第二组预测坐标信息;以及根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第二上下文模型的索引序号值;
第一确定单元1202,还配置为根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
在一些实施例中,第一构建单元1207,还配置为构建至少一个第二候选上下文模型;其中,不同的第二候选上下文模型对应不同的索引序号;
相应地,第一确定单元1202,具体配置为根据所述第二上下文模型的索引序号值,从所述至少一个第二候选上下文模型中选择所述索引序号值对应的第二候选上下文模型,将所选择的第二候选上下文模型确定为所述第二上下文模型。
在一些实施例中,第一获取单元1201,还配置为根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第一坐标方向的第一一预测值和第二一预测值、第二坐标方向的第二一预测值和第二二预测值、第三坐标方向的第三一预测值和第三二预测值;
第一确定单元1202,还配置为根据所述第一坐标方向的第一一预测值和第一二预测值,确定所述第一坐标方向的所述第二上下文模型的索引序号值;以及根据所述第二坐标方向的第二一预测值和第二二预测值,确定所述第二坐标方向的所述第二上下文模型的索引序号值;以及根据所述第三坐标方向的第三一预测值和第三二预测值,确定所述第三坐标方向的所述第二上下文模型的索引序号值。
可以理解地,在本申请实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本申请实施例提供了一种计算机存储介质,应用于编码器120,该计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现前述实施例中任一项所述的方法。
基于上述编码器120的组成以及计算机存储介质,参见图13,其示出了本申请实施例提供的编码器120的具体硬件结构示意图。如图13所示,可以包括:第一通信接口1301、第一存储器1302和第一处理器1303;各个组件通过第一总线系统1304耦合在一起。可理解,第一总线系统1304用于实现 这些组件之间的连接通信。第一总线系统1304除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图13中将各种总线都标为第一总线系统1304。其中,
第一通信接口1301,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
第一存储器1302,用于存储能够在第一处理器1303上运行的计算机程序;
第一处理器1303,用于在运行所述计算机程序时,执行:
获取当前节点的邻居节点的占位比特信息;
根据所述邻居节点的占位比特信息,确定上下文模型;
利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。
可以理解,本申请实施例中的第一存储器1302可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请描述的系统和方法的第一存储器1302旨在包括但不限于这些和任意其它适合类型的存储器。
而第一处理器1303可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过第一处理器1303中的硬件的集成逻辑电路或者软件形式的指令完成。上述的第一处理器1303可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于第一存储器1302,第一处理器1303读取第一存储器1302中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本申请描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(Application Specific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable Logic Device,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。对于软件实现,可通过执行本申请所述功能的模块(例如过程、函数等)来实现本申请所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
可选地,作为另一个实施例,第一处理器1303还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法。
本实施例提供了一种编码器,该编码器可以包括第一获取单元、第一确定单元和编码单元。这样,这样,由于利用邻居节点的占位比特信息来构建上下文模型,如此基于所构建的上下文模型对单一子节点的标识信息和坐标信息进行熵解码,能够充分利用点云的空间相关性,从而能够提高点云的解码效率。
本申请的再一实施例中,基于前述实施例相同的发明构思,参见图14,其示出了本申请实施例提供的一种解码器140的组成结构示意图。如图14所示,该解码器140可以包括:第二获取单元1401、第二确定单元1402和解码单元1403;其中,
第二获取单元1401,配置为获取当前节点的邻居节点的占位比特信息;
第二确定单元1402,配置为根据所述邻居节点的占位比特信息,确定上下文模型;
解码单元1403,配置为利用所述上下文模型解析码流,获取所述当前节点的相关信息;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。
在一些实施例中,第二确定单元1402,具体配置为根据所述邻居节点的占位比特信息,确定所述当前节点的预测标识信息;以及根据所述当前节点的预测标识信息,确定所述第一上下文模型。
在一些实施例中,解码单元1403,具体配置为利用所述第一上下文模型解析码流,获取所述单一子节点的标识信息;其中,所述单一子节点的标识信息用于指示所述当前节点划分的子节点中是否仅一个子节点被占据。
在一些实施例中,第二确定单元1402,还配置为若所述单一子节点的标识信息的取值等于第一标识值,则确定所述当前节点划分的子节点中仅一个子节点被占据;若所述单一子节点的标识信息的取值等于第二标识值,则确定所述当前节点划分的子节点中至少两个子节点被占据。
在一些实施例中,所述第一标识值为1,所述第二标识值为0;或者,所述第一标识值为0,所述第二标识值为1。
在一些实施例中,第二确定单元1402,具体配置为根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息;以及根据所述当前节点的预测坐标信息,确定所述第二上下文模型。
在一些实施例中,解码单元1403,具体配置为当所述单一子节点的标识信息指示当前节点划分的子节点中仅一个子节点被占据时,利用所述第二上下文模型解析码流,获取所述单一子节点的坐标信息。
在一些实施例中,第二确定单元1402,还配置为确定所述当前节点的邻居配置数;
解码单元1403,具体配置为若所述邻居配置数指示所述当前节点中有邻居节点被占据,则在所述单一子节点的标识信息指示所述当前节点划分的子节点中仅一个子节点被占据时,利用所述第二上下文模型解析码流,获取所述单一子节点的坐标信息。
在一些实施例中,第二确定单元1402,还配置为基于所述单一子节点的坐标信息,确定所述当前节点划分的子节点的占位比特信息。
在一些实施例中,所述邻居节点包括下述至少之一:与所述当前节点共面的邻居节点、与所述当前节点共线的邻居节点和与所述当前节点共点的邻居节点。
在一些实施例中,第二确定单元1402,还配置为若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
在一些实施例中,所述第一值为1,所述第二值为0;或者,所述第一值为0,所述第二值为1。
在一些实施例中,第二确定单元1402,还配置为获取与所述当前节点共面的邻居节点的占位比特信息;以及根据所述与所述当前节点共面的邻居节点的占位比特信息,确定所述邻居配置数。
在一些实施例中,第二确定单元1402,还配置为若所述邻居配置数大于0,则确定所述当前节点中有邻居节点被占据;若所述邻居配置数等于0,则确定所述当前节点中无邻居节点被占据。
在一些实施例中,第二确定单元1402,还配置为确定单一子节点使能变量的取值;以及在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,根据所述邻居节点的占位比特信息,确定上下文模型。
在一些实施例中,参见图14,解码器140还可以包括第二比较单元1404;
第二确定单元1402,还配置为确定节点数量以及单一子节点数量;
第二比较单元1404,配置为对所述单一子节点数量和所述节点数量进行除法运算,得到第一比例值;以及将所述第一比例值和第一阈值进行比较;以及根据所述第一比例值和所述第一阈值的比较结果,确定所述单一子节点使能变量的取值。
进一步地,第二比较单元1404,具体配置为若所述第一比例值大于所述第一阈值,则确定所述单一子节点使能变量的取值为第三值;若所述第一比例值小于或等于所述第一阈值,则确定所述单一子节点使能变量的取值为第四值。
在一些实施例中,所述第三值为1,所述第四值为0;或者,所述第三值为0,所述第四值为1。
在一些实施例中,参见图14,解码器140还可以包括第二设置单元1405,配置为通过解码单元1403解析所述码流,在确定进入所述八叉树的第i层时,设置所述节点数量的初始值为0,所述单一子节点数量的初始值为0,所述单一子节点使能变量的初始值为0;其中,i为大于或等于0且小于K的整数,K表示所述八叉树的层数,K为大于0的整数。
在一些实施例中,第二获取单元1401,还配置为通过解码单元1403解析所述码流,在确定所述当前节点处于八叉树的第i层时,基于所述第i层中的已解码节点,获得所述节点数量;以及从所述已解码节点中确定仅一个子节点被占据的已解码节点,获得所述单一子节点数量。
在一些实施例中,第二获取单元1401,还配置为在所述已解码节点中,判断所述已解码节点划分的子节点中是否仅一个子节点被占据;以及若判断结果为是,则对所述单一子节点数量执行加1操作,更新所述单一子节点数量;若判断结果为否,则维持所述单一子节点数量不变。
在一些实施例中,第二确定单元1402,还配置为根据所述邻居节点的占位比特信息,确定与所述当前节点共面的邻居节点中有点占据的第一节点数量;以及根据所述第一节点数量,确定所述当前节点 的预测标识信息。
在一些实施例中,第二比较单元1404,还配置为将所述第一节点数量与第二阈值进行比较;根据所述第一节点数量与所述第二阈值的比较结果,确定所述当前节点的预测标识信息。
进一步地,第二比较单元1404,具体配置为若所述第一节点数量小于所述所述第二阈值,则确定所述当前节点的预测标识信息等于第五值;若所述第一节点数量大于或等于所述第二阈值,则确定所述当前节点的预测标识信息等于第六值。
在一些实施例中,所述第五值为1,所述第六值为0;或者,所述第五值为0,所述第六值为1。
在一些实施例中,第二确定单元1402,具体配置为根据所述当前节点的预测标识信息,获得第一上下文模型的索引序号值;以及根据所述第一上下文模型的索引序号值,确定所述第一上下文模型。
在一些实施例中,参见图14,解码器140还可以包括第二构建单元1406,配置为构建至少一个第一候选上下文模型;其中,不同的第一候选上下文模型对应不同的索引序号;
相应地,第二确定单元1402,具体配置为根据所述第一上下文模型的索引序号值,从所述至少一个第一候选上下文模型中选择所述索引序号值对应的第一候选上下文模型,将所选择的第一候选上下文模型确定为所述第一上下文模型。
在一些实施例中,第二确定单元1402,还配置为根据所述邻居节点的占位比特信息,确定第一方向坐标值为第七值对应的第一平面内邻居节点中有点占据的第二节点数量,以及第二方向坐标值为第七值对应的第二平面内邻居节点中有点占据的第三节点数量,以及第三方向坐标值为第七值对应的第三平面内邻居节点中有点占据的第四节点数量;
第二比较单元1404,还配置为将所述第二节点数量与第三阈值进行比较,根据比较结果确定第一坐标方向的第一一预测值;以及将所述第三节点数量与第三阈值进行比较,根据比较结果确定第二坐标方向的第二一预测值;以及将所述第四节点数量与第三阈值进行比较,根据比较结果确定第三坐标方向的第三一预测值;以及根据所述第一一预测值、所述第二一预测值和所述第三一预测值,得到所述当前节点的第一组预测坐标信息。
在一些实施例中,第二确定单元1402,还配置为根据所述邻居节点的占位比特信息,确定第一方向坐标值为第八值对应的第一平面内邻居节点中有点占据的第五节点数量,以及第二方向坐标值为第八值对应的第二平面内邻居节点中有点占据的第六节点数量,以及第三方向坐标值为第八值对应的第三平面内邻居节点中有点占据的第七节点数量;
第二比较单元1404,还配置为将所述第五节点数量与第四阈值进行比较,根据比较结果确定第一坐标方向的第一二预测值;以及将所述第六节点数量与第四阈值进行比较,根据比较结果确定第二坐标方向的第二二预测值;以及将所述第七节点数量与第四阈值进行比较,根据比较结果确定第三坐标方向的第三二预测值;以及根据所述第一二预测值、所述第二二预测值和所述第三二预测值,得到所述当前节点的第二组预测坐标信息。
在一些实施例中,所述第七值为-1,所述第八值为1;或者,所述第七值为1,所述第八值为-1。
在一些实施例中,第二获取单元1401,还配置为获取所述当前节点的第一组预测坐标信息和第二组预测坐标信息;以及根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第二上下文模型的索引序号值;
第二确定单元1402,还配置为根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
在一些实施例中,第二构建单元1406,还配置为构建至少一个第二候选上下文模型;其中,不同的第二候选上下文模型对应不同的索引序号;
相应地,第二确定单元1402,具体配置为根据所述第二上下文模型的索引序号值,从所述至少一个第二候选上下文模型中选择所述索引序号值对应的第二候选上下文模型,将所选择的第二候选上下文模型确定为所述第二上下文模型。
在一些实施例中,第二获取单元1401,还配置为根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第一坐标方向的第一一预测值和第二一预测值、第二坐标方向的第二一预测值和第二二预测值、第三坐标方向的第三一预测值和第三二预测值;
第二确定单元1402,还配置为根据所述第一坐标方向的第一一预测值和第一二预测值,确定所述第一坐标方向的所述第二上下文模型的索引序号值;以及根据所述第二坐标方向的第二一预测值和第二二预测值,确定所述第二坐标方向的所述第二上下文模型的索引序号值;以及根据所述第三坐标方向的第三一预测值和第三二预测值,确定所述第三坐标方向的所述第二上下文模型的索引序号值。
可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以 采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本实施例提供了一种计算机存储介质,应用于解码器140,该计算机存储介质存储有计算机程序,所述计算机程序被第二处理器执行时实现前述实施例中任一项所述的方法。
基于上述解码器140的组成以及计算机存储介质,参见图15,其示出了本申请实施例提供的解码器140的具体硬件结构示意图。如图15所示,可以包括:第二通信接口1501、第二存储器1502和第二处理器1503;各个组件通过第二总线系统1504耦合在一起。可理解,第二总线系统1504用于实现这些组件之间的连接通信。第二总线系统1504除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图15中将各种总线都标为第二总线系统1504。其中,
第二通信接口1501,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
第二存储器1502,用于存储能够在第二处理器1503上运行的计算机程序;
第二处理器1503,用于在运行所述计算机程序时,执行:
获取当前节点的邻居节点的占位比特信息;
根据所述邻居节点的占位比特信息,确定上下文模型;
利用所述上下文模型解析码流,获取所述当前节点的相关信息;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。
可选地,作为另一个实施例,第二处理器1503还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法。
可以理解,第二存储器1502与第一存储器1302的硬件功能类似,第二处理器1503与第一处理器1303的硬件功能类似;这里不再详述。
本实施例提供了一种解码器,该解码器可以包括第二获取单元、第二确定单元和解码单元。这样,由于利用邻居节点的占位比特信息来构建上下文模型,如此基于所构建的上下文模型对单一子节点的标识信息和坐标信息进行熵解码,能够充分利用点云的空间相关性,从而能够提高点云的解码效率。
需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
工业实用性
本申请实施例中,在编码器侧,获取当前节点的邻居节点的占位比特信息;根据所述邻居节点的占位比特信息,确定上下文模型;利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。在解码器侧,获取当前节点的邻居节点的占位比特信息;根据所述邻居节点的占位比特信息,确定上下文模型;利用所述上下文模型解析码流,获取所述当前节点的相关信息;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。这样,由于利用邻居节点的占位比特信息来构建上下文模型,如此基于所构建的上下文模型对单一子节点的标识信息和坐标信息进行熵编码,能够充分利用点云的空间相关性,从而能够提高点云的编解码效率。

Claims (75)

  1. 一种点云编码方法,应用于编码器,所述方法包括:
    获取当前节点的邻居节点的占位比特信息;
    根据所述邻居节点的占位比特信息,确定上下文模型;
    利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。
  2. 根据权利要求1所述的方法,其中,所述根据所述邻居节点的占位比特信息,确定上下文模型,包括:
    根据所述邻居节点的占位比特信息,确定所述当前节点的预测标识信息;
    根据所述当前节点的预测标识信息,确定所述第一上下文模型。
  3. 根据权利要求2所述的方法,其中,所述利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流,包括:
    确定当前节点的子节点被占据数;
    根据所述子节点被占据数,确定所述单一子节点的标识信息;
    利用所述第一上下文模型对所述单一子节点的标识信息进行熵编码,并写入码流。
  4. 根据权利要求1所述的方法,其中,所述根据所述邻居节点的占位比特信息,确定上下文模型,包括:
    根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息;
    根据所述当前节点的预测坐标信息,确定所述第二上下文模型。
  5. 根据权利要求4所述的方法,其中,所述利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流,包括:
    当所述单一子节点的标识信息指示所述当前节点划分的子节点中仅一个子节点被占据时,确定所述单一子节点的坐标信息,利用所述第二上下文模型对所述单一子节点的坐标信息进行熵编码,并写入码流。
  6. 根据权利要求4所述的方法,其中,所述方法还包括:
    确定所述当前节点的邻居配置数;
    相应地,所述利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流,包括:
    若所述邻居配置数指示所述当前节点中有邻居节点被占据,则在所述单一子节点的标识信息指示所述当前节点划分的子节点中仅一个子节点被占据时,确定所述单一子节点的坐标信息,利用所述第二上下文模型对所述单一子节点的坐标信息进行熵编码,并写入码流。
  7. 根据权利要求5或6所述的方法,其中,所述确定所述单一子节点的坐标信息,包括:
    获取所述当前节点划分的子节点的占位比特信息;
    根据所述子节点的占位比特信息,计算所述单一子节点的坐标信息。
  8. 根据权利要求1所述的方法,其中,所述邻居节点包括下述至少之一:与所述当前节点共面的邻居节点、与所述当前节点共线的邻居节点和与所述当前节点共点的邻居节点。
  9. 根据权利要求8所述的方法,其中,所述获取当前节点的邻居节点的占位比特信息,包括:
    若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;
    若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
  10. 根据权利要求6所述的方法,其中,所述确定所述当前节点的邻居配置数,包括:
    获取与所述当前节点共面的邻居节点的占位比特信息;
    根据所述与所述当前节点共面的邻居节点的占位比特信息,确定所述邻居配置数。
  11. 根据权利要求10所述的方法,其中,所述方法还包括:
    若所述邻居配置数大于0,则确定所述当前节点中有邻居节点被占据;
    若所述邻居配置数等于0,则确定所述当前节点中无邻居节点被占据。
  12. 根据权利要求3所述的方法,其中,所述确定当前节点的子节点被占据数,包括:
    获取所述当前节点划分的子节点的占位比特信息;
    根据所述子节点的占位比特信息,确定所述子节点被占据数。
  13. 根据权利要求12所述的方法,其中,所述获取所述当前节点划分的子节点的占位比特信息,包括:
    若所述子节点内有点占据,则确定所述子节点的占位比特信息等于第一值;
    若所述子节点内无点占据,则确定所述子节点的占位比特信息等于第二值。
  14. 根据权利要求9或13所述的方法,其中,所述第一值为1,所述第二值为0;或者,所述第一值为0,所述第二值为1。
  15. 根据权利要求3所述的方法,其中,所述根据所述子节点被占据数,确定所述单一子节点的标识信息,包括:
    若所述子节点被占据数等于1,则确定所述单一子节点的标识信息的取值为第一标识值;
    若所述子节点被占据数不等于1,则确定所述单一子节点的标识信息的取值为第二标识值。
  16. 根据权利要求3所述的方法,其中,所述方法还包括:
    若所述子节点被占据数等于1,则确定所述当前节点划分的子节点中仅一个子节点被占据;
    若所述子节点被占据数不等于1,则确定所述当前节点划分的子节点中至少两个子节点被占据。
  17. 根据权利要求16所述的方法,其中,所述根据所述子节点被占据数,确定所述单一子节点的标识信息,包括:
    若所述当前节点划分的子节点中仅一个子节点被占据,则确定所述单一子节点的标识信息的取值为第一标识值;
    若所述当前节点划分的子节点中至少两个子节点被占据,则确定所述单一子节点的标识信息的取值为第二标识值。
  18. 根据权利要求15或17所述的方法,其中,所述第一标识值为1,所述第二标识值为0;或者,所述第一标识值为0,所述第二标识值为1。
  19. 根据权利要求1所述的方法,其中,所述方法还包括:
    确定单一子节点使能变量的取值;
    相应地,所述根据所述邻居节点的占位比特信息,确定上下文模型,包括:
    在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,根据所述邻居节点的占位比特信息,确定上下文模型。
  20. 根据权利要求19所述的方法,其中,所述确定单一子节点使能变量的取值,包括:
    确定节点数量以及单一子节点数量;
    对所述单一子节点数量和所述节点数量进行除法运算,得到第一比例值;
    将所述第一比例值和第一阈值进行比较;
    根据所述第一比例值和所述第一阈值的比较结果,确定所述单一子节点使能变量的取值。
  21. 根据权利要求20所述的方法,其中,所述根据所述第一比例值和所述第一阈值的比较结果,确定所述单一子节点使能变量的取值,包括:
    若所述第一比例值大于所述第一阈值,则确定所述单一子节点使能变量的取值为第三值;
    若所述第一比例值小于或等于所述第一阈值,则确定所述单一子节点使能变量的取值为第四值。
  22. 根据权利要求21所述的方法,其中,所述第三值为1,所述第四值为0;或者,所述第三值为0,所述第四值为1。
  23. 根据权利要求20所述的方法,其中,所述方法还包括:
    对输入点云进行八叉树划分,得到K层的八叉树,K为大于0的整数;
    在进入所述八叉树的第i层时,设置所述节点数量的初始值为0,所述单一子节点数量的初始值为0,所述单一子节点使能变量的初始值为0;其中,i为大于或等于0且小于K的整数。
  24. 根据权利要求23所述的方法,其中,当所述当前节点处于所述第i层时,所述确定节点数量以及单一子节点数量,包括:
    基于所述第i层中的已编码节点,获得所述节点数量;
    从所述已编码节点中确定仅一个子节点被占据的已编码节点,获得所述单一子节点数量。
  25. 根据权利要求24所述的方法,其中,所述从所述已编码节点中确定仅一个子节点被占据的已编码节点,获得所述单一子节点数量,包括:
    在所述已编码节点中,判断所述已编码节点划分的子节点中是否仅一个子节点被占据;
    若判断结果为是,则对所述单一子节点数量执行加1操作,更新所述单一子节点数量;
    若判断结果为否,则维持所述单一子节点数量不变。
  26. 根据权利要求2所述的方法,其中,所述根据所述邻居节点的占位比特信息,确定所述当前节点的预测标识信息,包括:
    根据所述邻居节点的占位比特信息,确定与所述当前节点共面的邻居节点中有点占据的第一节点数量;
    根据所述第一节点数量,确定所述当前节点的预测标识信息。
  27. 根据权利要求26所述的方法,其中,所述根据所述第一节点数量,确定所述当前节点的预测标识信息,包括:
    将所述第一节点数量与第二阈值进行比较;
    根据所述第一节点数量与所述第二阈值的比较结果,确定所述当前节点的预测标识信息。
  28. 根据权利要求27所述的方法,其中,所述根据所述第一节点数量与所述第二阈值的比较结果,确定所述当前节点的预测标识信息,包括:
    若所述第一节点数量小于所述第二阈值,则确定所述当前节点的预测标识信息等于第五值;
    若所述第一节点数量大于或等于所述第二阈值,则确定所述当前节点的预测标识信息等于第六值。
  29. 根据权利要求28所述的方法,其中,所述第五值为1,所述第六值为0;或者,所述第五值为0,所述第六值为1。
  30. 根据权利要求2所述的方法,其中,所述根据所述当前节点的预测标识信息,确定所述第一上下文模型,包括:
    根据所述当前节点的预测标识信息,获得第一上下文模型的索引序号值;
    根据所述第一上下文模型的索引序号值,确定所述第一上下文模型。
  31. 根据权利要求30所述的方法,其中,所述方法还包括:
    构建至少一个第一候选上下文模型;其中,不同的第一候选上下文模型对应不同的索引序号;
    相应地,所述根据所述第一上下文模型的索引序号值,确定所述第一上下文模型,包括:
    根据所述第一上下文模型的索引序号值,从所述至少一个第一候选上下文模型中选择所述索引序号值对应的第一候选上下文模型,将所选择的第一候选上下文模型确定为所述第一上下文模型。
  32. 根据权利要求4所述的方法,其中,所述根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息,包括:
    根据所述邻居节点的占位比特信息,确定第一方向坐标值为第七值对应的第一平面内邻居节点中有点占据的第二节点数量,以及第二方向坐标值为第七值对应的第二平面内邻居节点中有点占据的第三节点数量,以及第三方向坐标值为第七值对应的第三平面内邻居节点中有点占据的第四节点数量;
    将所述第二节点数量与第三阈值进行比较,根据比较结果确定第一坐标方向的第一一预测值;
    将所述第三节点数量与第三阈值进行比较,根据比较结果确定第二坐标方向的第二一预测值;
    将所述第四节点数量与第三阈值进行比较,根据比较结果确定第三坐标方向的第三一预测值;
    根据所述第一一预测值、所述第二一预测值和所述第三一预测值,得到所述当前节点的第一组预测坐标信息。
  33. 根据权利要求32所述的方法,其中,所述方法还包括:
    根据所述邻居节点的占位比特信息,确定第一方向坐标值为第八值对应的第一平面内邻居节点中有点占据的第五节点数量,以及第二方向坐标值为第八值对应的第二平面内邻居节点中有点占据的第六节点数量,以及第三方向坐标值为第八值对应的第三平面内邻居节点中有点占据的第七节点数量;
    将所述第五节点数量与第四阈值进行比较,根据比较结果确定第一坐标方向的第一二预测值;
    将所述第六节点数量与第四阈值进行比较,根据比较结果确定第二坐标方向的第二二预测值;
    将所述第七节点数量与第四阈值进行比较,根据比较结果确定第三坐标方向的第三二预测值;
    根据所述第一二预测值、所述第二二预测值和所述第三二预测值,得到所述当前节点的第二组预测坐标信息。
  34. 根据权利要求33所述的方法,其中,所述第七值为-1,所述第八值为1;或者,所述第七值为1,所述第八值为-1。
  35. 根据权利要求33所述的方法,其中,所述根据所述当前节点的预测坐标信息,确定所述第二上下文模型,包括:
    获取所述当前节点的第一组预测坐标信息和第二组预测坐标信息;
    根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第二上下文模型的索引序号值;
    根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
  36. 根据权利要求35所述的方法,其中,所述方法还包括:
    构建至少一个第二候选上下文模型;其中,不同的第二候选上下文模型对应不同的索引序号;
    相应地,所述所述根据所述第二上下文模型的索引序号值,确定所述第二上下文模型,包括:
    根据所述第二上下文模型的索引序号值,从所述至少一个第二候选上下文模型中选择所述索引序号值对应的第二候选上下文模型,将所选择的第二候选上下文模型确定为所述第二上下文模型。
  37. 根据权利要求35所述的方法,其中,所述根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第二上下文模型的索引序号值,包括:
    根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第一坐标方向的第一一预测值和第二一预测值、第二坐标方向的第二一预测值和第二二预测值、第三坐标方向的第三一预测值和第三二预测值;
    根据所述第一坐标方向的第一一预测值和第一二预测值,确定所述第一坐标方向的所述第二上下文模型的索引序号值;
    根据所述第二坐标方向的第二一预测值和第二二预测值,确定所述第二坐标方向的所述第二上下文模型的索引序号值;
    根据所述第三坐标方向的第三一预测值和第三二预测值,确定所述第三坐标方向的所述第二上下文模型的索引序号值。
  38. 一种点云解码方法,应用于解码器,所述方法包括:
    获取当前节点的邻居节点的占位比特信息;
    根据所述邻居节点的占位比特信息,确定上下文模型;
    利用所述上下文模型解析码流,获取所述当前节点的相关信息;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。
  39. 根据权利要求38所述的方法,其中,所述根据所述邻居节点的占位比特信息,确定上下文模型,包括:
    根据所述邻居节点的占位比特信息,确定所述当前节点的预测标识信息;
    根据所述当前节点的预测标识信息,确定所述第一上下文模型。
  40. 根据权利要求39所述的方法,其中,所述利用所述上下文模型解析码流,获取所述当前节点的相关信息,包括:
    利用所述第一上下文模型解析码流,获取所述单一子节点的标识信息;其中,所述单一子节点的标识信息用于指示所述当前节点划分的子节点中是否仅一个子节点被占据。
  41. 根据权利要求40所述的方法,其中,所述方法还包括:
    若所述单一子节点的标识信息的取值等于第一标识值,则确定所述当前节点划分的子节点中仅一个子节点被占据;
    若所述单一子节点的标识信息的取值等于第二标识值,则确定所述当前节点划分的子节点中至少两个子节点被占据。
  42. 根据权利要求41所述的方法,其中,所述第一标识值为1,所述第二标识值为0;或者,所述第一标识值为0,所述第二标识值为1。
  43. 根据权利要求38所述的方法,其中,所述根据所述邻居节点的占位比特信息,确定上下文模型,包括:
    根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息;
    根据所述当前节点的预测坐标信息,确定所述第二上下文模型。
  44. 根据权利要求43所述的方法,其中,所述利用所述上下文模型解析码流,获取所述当前节点的相关信息,包括:
    当所述单一子节点的标识信息指示所述当前节点划分的子节点中仅一个子节点被占据时,利用所述第二上下文模型解析码流,获取所述单一子节点的坐标信息。
  45. 根据权利要求43所述的方法,其中,所述利用所述上下文模型解析码流,获取所述当前节点的相关信息,包括:
    确定所述当前节点的邻居配置数;
    若所述邻居配置数指示所述当前节点中有邻居节点被占据,则在所述单一子节点的标识信息指示所述当前节点划分的子节点中仅一个子节点被占据时,利用所述第二上下文模型解析码流,获取所述单一子节点的坐标信息。
  46. 根据权利要求44或45所述的方法,其中,所述方法还包括:
    基于所述单一子节点的坐标信息,确定所述当前节点划分的子节点的占位比特信息。
  47. 根据权利要求38所述的方法,其中,所述邻居节点包括下述至少之一:与所述当前节点共面的邻居节点、与所述当前节点共线的邻居节点和与所述当前节点共点的邻居节点。
  48. 根据权利要求47所述的方法,其中,所述获取当前节点的邻居节点的占位比特信息,包括:
    若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;
    若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
  49. 根据权利要求48所述的方法,其中,所述第一值为1,所述第二值为0;或者,所述第一值为 0,所述第二值为1。
  50. 根据权利要求45所述的方法,其中,所述确定所述当前节点的邻居配置数,包括:
    获取与所述当前节点共面的邻居节点的占位比特信息;
    根据所述与所述当前节点共面的邻居节点的占位比特信息,确定所述邻居配置数。
  51. 根据权利要求50所述的方法,其中,所述方法还包括:
    若所述邻居配置数大于0,则确定所述当前节点中有邻居节点被占据;
    若所述邻居配置数等于0,则确定所述当前节点中无邻居节点被占据。
  52. 根据权利要求38所述的方法,其中,所述方法还包括:
    确定单一子节点使能变量的取值;
    相应地,所述所述根据所述邻居节点的占位比特信息,确定上下文模型,包括:
    在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,根据所述邻居节点的占位比特信息,确定上下文模型。
  53. 根据权利要求52所述的方法,其中,所述确定单一子节点使能变量的取值,包括:
    确定节点数量以及单一子节点数量;
    对所述单一子节点数量和所述节点数量进行除法运算,得到第一比例值;
    将所述第一比例值和第一阈值进行比较;
    根据所述第一比例值和所述第一阈值的比较结果,确定所述单一子节点使能变量的取值。
  54. 根据权利要求53所述的方法,其中,所述根据所述第一比例值和所述第一阈值的比较结果,确定所述单一子节点使能变量的取值,包括:
    若所述第一比例值大于所述第一阈值,则确定所述单一子节点使能变量的取值为第三值;
    若所述第一比例值小于或等于所述第一阈值,则确定所述单一子节点使能变量的取值为第四值。
  55. 根据权利要求54所述的方法,其中,所述第三值为1,所述第四值为0;或者,所述第三值为0,所述第四值为1。
  56. 根据权利要求53所述的方法,其中,所述方法还包括:
    解析所述码流,在确定进入所述八叉树的第i层时,设置所述节点数量的初始值为0,所述单一子节点数量的初始值为0,所述单一子节点使能变量的初始值为0;其中,i为大于或等于0且小于K的整数,K表示所述八叉树的层数,K为大于0的整数。
  57. 根据权利要求56所述的方法,其中,所述确定节点数量以及单一子节点数量,包括:
    解析所述码流,在确定所述当前节点处于八叉树的第i层时,基于所述第i层中的已解码节点,获得所述节点数量;
    从所述已解码节点中确定仅一个子节点被占据的已解码节点,获得所述单一子节点数量。
  58. 根据权利要求57所述的方法,其中,所述从所述已解码节点中确定仅一个子节点被占据的已解码节点,获得所述单一子节点数量,包括:
    在所述已解码节点中,判断所述已解码节点划分的子节点中是否仅一个子节点被占据;
    若判断结果为是,则对所述单一子节点数量执行加1操作,更新所述单一子节点数量;
    若判断结果为否,则维持所述单一子节点数量不变。
  59. 根据权利要求39所述的方法,其中,所述根据所述邻居节点的占位比特信息,确定所述当前节点的预测标识信息,包括:
    根据所述邻居节点的占位比特信息,确定与所述当前节点共面的邻居节点中有点占据的第一节点数量;
    根据所述第一节点数量,确定所述当前节点的预测标识信息。
  60. 根据权利要求59所述的方法,其中,所述根据所述第一节点数量,确定所述当前节点的预测标识信息,包括:
    将所述第一节点数量与第二阈值进行比较;
    根据所述第一节点数量与所述第二阈值的比较结果,确定所述当前节点的预测标识信息。
  61. 根据权利要求60所述的方法,其中,所述根据所述第一节点数量与所述第二阈值的比较结果,确定所述当前节点的预测标识信息,包括:
    若所述第一节点数量小于所述所述第二阈值,则确定所述当前节点的预测标识信息等于第五值;
    若所述第一节点数量大于或等于所述第二阈值,则确定所述当前节点的预测标识信息等于第六值。
  62. 根据权利要求61所述的方法,其中,所述第五值为1,所述第六值为0;或者,所述第五值为0,所述第六值为1。
  63. 根据权利要求39所述的方法,其中,所述根据所述当前节点的预测标识信息,确定所述第一 上下文模型,包括:
    根据所述当前节点的预测标识信息,获得第一上下文模型的索引序号值;
    根据所述第一上下文模型的索引序号值,确定所述第一上下文模型。
  64. 根据权利要求63所述的方法,其中,所述方法还包括:
    构建至少一个第一候选上下文模型;其中,不同的第一候选上下文模型对应不同的索引序号;
    相应地,所述根据所述第一上下文模型的索引序号值,确定所述第一上下文模型,包括:
    根据所述第一上下文模型的索引序号值,从所述至少一个第一候选上下文模型中选择所述索引序号值对应的第一候选上下文模型,将所选择的第一候选上下文模型确定为所述第一上下文模型。
  65. 根据权利要求43所述的方法,其中,所述根据所述邻居节点的占位比特信息,确定所述当前节点的预测坐标信息,包括:
    根据所述邻居节点的占位比特信息,确定第一方向坐标值为第七值对应的第一平面内邻居节点中有点占据的第二节点数量,以及第二方向坐标值为第七值对应的第二平面内邻居节点中有点占据的第三节点数量,以及第三方向坐标值为第七值对应的第三平面内邻居节点中有点占据的第四节点数量;
    将所述第二节点数量与第三阈值进行比较,根据比较结果确定第一坐标方向的第一一预测值;
    将所述第三节点数量与第三阈值进行比较,根据比较结果确定第二坐标方向的第二一预测值;
    将所述第四节点数量与第三阈值进行比较,根据比较结果确定第三坐标方向的第三一预测值;
    根据所述第一一预测值、所述第二一预测值和所述第三一预测值,得到所述当前节点的第一组预测坐标信息。
  66. 根据权利要求65所述的方法,其中,所述方法还包括:
    根据所述邻居节点的占位比特信息,确定第一方向坐标值为第八值对应的第一平面内邻居节点中有点占据的第五节点数量,以及第二方向坐标值为第八值对应的第二平面内邻居节点中有点占据的第六节点数量,以及第三方向坐标值为第八值对应的第三平面内邻居节点中有点占据的第七节点数量;
    将所述第五节点数量与第四阈值进行比较,根据比较结果确定第一坐标方向的第一二预测值;
    将所述第六节点数量与第四阈值进行比较,根据比较结果确定第二坐标方向的第二二预测值;
    将所述第七节点数量与第四阈值进行比较,根据比较结果确定第三坐标方向的第三二预测值;
    根据所述第一二预测值、所述第二二预测值和所述第三二预测值,得到所述当前节点的第二组预测坐标信息。
  67. 根据权利要求66所述的方法,其中,所述第七值为-1,所述第八值为1;或者,所述第七值为1,所述第八值为-1。
  68. 根据权利要求66所述的方法,其中,所述根据所述当前节点的预测坐标信息,确定所述第二上下文模型,包括:
    获取所述当前节点的第一组预测坐标信息和第二组预测坐标信息;
    根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第二上下文模型的索引序号值;
    根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
  69. 根据权利要求68所述的方法,其中,所述方法还包括:
    构建至少一个第二候选上下文模型;其中,不同的第二候选上下文模型对应不同的索引序号;
    相应地,所述根据所述第二上下文模型的索引序号值,确定所述第二上下文模型,包括:
    根据所述第二上下文模型的索引序号值,从所述至少一个第二候选上下文模型中选择所述索引序号值对应的第二候选上下文模型,将所选择的第二候选上下文模型确定为所述第二上下文模型。
  70. 根据权利要求69所述的方法,其中,所述根据所述当前节点的预测坐标信息,获得第二上下文模型的索引序号值,包括:
    根据所述第一组预测坐标信息和所述第二组预测坐标信息,获得第一坐标方向的第一一预测值和第二一预测值、第二坐标方向的第二一预测值和第二二预测值、第三坐标方向的第三一预测值和第三二预测值;
    根据所述第一坐标方向的第一一预测值和第一二预测值,确定所述第一坐标方向的所述第二上下文模型的索引序号值;
    根据所述第二坐标方向的第二一预测值和第二二预测值,确定所述第二坐标方向的所述第二上下文模型的索引序号值;
    根据所述第三坐标方向的第三一预测值和第三二预测值,确定所述第三坐标方向的所述第二上下文模型的索引序号值。
  71. 一种编码器,所述编码器包括第一获取单元、第一确定单元和编码单元;其中,
    所述第一获取单元,配置为获取当前节点的邻居节点的占位比特信息;
    所述第一确定单元,配置为根据所述邻居节点的占位比特信息,确定上下文模型;
    所述编码单元,配置为利用所述上下文模型对所述当前节点的相关信息进行熵编码,并写入码流;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。
  72. 一种编码器,所述编码器包括第一存储器和第一处理器;其中,
    所述第一存储器,用于存储能够在所述第一处理器上运行的计算机程序;
    所述第一处理器,用于在运行所述计算机程序时,执行如权利要求1至37任一项所述的方法。
  73. 一种解码器,所述解码器包括第二获取单元、第二确定单元和解码单元;其中,
    所述第二获取单元,配置为获取当前节点的邻居节点的占位比特信息;
    所述第二确定单元,配置为根据所述邻居节点的占位比特信息,确定上下文模型;
    所述解码单元,配置为利用所述上下文模型解析码流,获取所述当前节点的相关信息;其中,所述相关信息包括至少之一:单一子节点的标识信息和所述单一子节点的坐标信息。
  74. 一种解码器,所述解码器包括第二存储器和第二处理器;其中,
    所述第二存储器,用于存储能够在所述第二处理器上运行的计算机程序;
    所述第二处理器,用于在运行所述计算机程序时,执行如权利要求38至70任一项所述的方法。
  75. 一种计算机存储介质,其中,所述计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如权利要求1至37任一项所述的方法、或者被第二处理器执行时实现如权利要求38至70任一项所述的方法。
PCT/CN2020/136202 2020-12-14 2020-12-14 点云编解码方法、编码器、解码器以及计算机存储介质 WO2022126326A1 (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/CN2020/136202 WO2022126326A1 (zh) 2020-12-14 2020-12-14 点云编解码方法、编码器、解码器以及计算机存储介质
CN202311843610.3A CN117793350A (zh) 2020-12-14 2020-12-14 点云编解码方法、编码器、解码器以及计算机存储介质
CN202080107662.2A CN116530021A (zh) 2020-12-14 2020-12-14 点云编解码方法、编码器、解码器以及计算机存储介质
US18/329,927 US20230316586A1 (en) 2020-12-14 2023-06-06 Point cloud coding method, encoder and decoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/136202 WO2022126326A1 (zh) 2020-12-14 2020-12-14 点云编解码方法、编码器、解码器以及计算机存储介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/329,927 Continuation US20230316586A1 (en) 2020-12-14 2023-06-06 Point cloud coding method, encoder and decoder

Publications (1)

Publication Number Publication Date
WO2022126326A1 true WO2022126326A1 (zh) 2022-06-23

Family

ID=82058736

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/136202 WO2022126326A1 (zh) 2020-12-14 2020-12-14 点云编解码方法、编码器、解码器以及计算机存储介质

Country Status (3)

Country Link
US (1) US20230316586A1 (zh)
CN (2) CN117793350A (zh)
WO (1) WO2022126326A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024082135A1 (zh) * 2022-10-18 2024-04-25 Oppo广东移动通信有限公司 编解码方法、编解码器、码流以及计算机存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190394496A1 (en) * 2018-06-22 2019-12-26 Apple Inc. Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables
CN111145090A (zh) * 2019-11-29 2020-05-12 鹏城实验室 一种点云属性编码方法、解码方法、编码设备及解码设备
CN111405281A (zh) * 2020-03-30 2020-07-10 北京大学深圳研究生院 一种点云属性信息的编码方法、解码方法、存储介质及终端设备
CN111615792A (zh) * 2018-01-18 2020-09-01 黑莓有限公司 用于对点云进行熵编码的方法和设备
CN111727460A (zh) * 2018-01-26 2020-09-29 松下电器(美国)知识产权公司 三维数据编码方法、三维数据解码方法、三维数据编码装置、以及三维数据解码装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111615792A (zh) * 2018-01-18 2020-09-01 黑莓有限公司 用于对点云进行熵编码的方法和设备
CN111727460A (zh) * 2018-01-26 2020-09-29 松下电器(美国)知识产权公司 三维数据编码方法、三维数据解码方法、三维数据编码装置、以及三维数据解码装置
US20190394496A1 (en) * 2018-06-22 2019-12-26 Apple Inc. Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables
CN111145090A (zh) * 2019-11-29 2020-05-12 鹏城实验室 一种点云属性编码方法、解码方法、编码设备及解码设备
CN111405281A (zh) * 2020-03-30 2020-07-10 北京大学深圳研究生院 一种点云属性信息的编码方法、解码方法、存储介质及终端设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024082135A1 (zh) * 2022-10-18 2024-04-25 Oppo广东移动通信有限公司 编解码方法、编解码器、码流以及计算机存储介质

Also Published As

Publication number Publication date
US20230316586A1 (en) 2023-10-05
CN117793350A (zh) 2024-03-29
CN116530021A (zh) 2023-08-01

Similar Documents

Publication Publication Date Title
CN113615181B (zh) 用于点云编解码的方法、装置
US11711545B2 (en) Arithmetic coding information for parallel octree coding
JP7233561B2 (ja) 点群圧縮のための方法並びにその、装置およびコンピュータプログラム
US11936909B2 (en) Prediction method, encoder, decoder, and computer storage medium
US11983907B2 (en) Techniques and apparatus for explicit quad-tree and binary-tree partitioning for geometry coding
TW202143709A (zh) 針對基於幾何的點雲壓縮的三湯語法訊號傳遞
WO2022126326A1 (zh) 点云编解码方法、编码器、解码器以及计算机存储介质
KR102650334B1 (ko) 포인트 클라우드 코딩을 위한 방법 및 장치
CN115086660B (zh) 基于点云属性预测的解码、编码方法、解码器及编码器
WO2022109885A1 (zh) 点云编解码方法、编码器、解码器以及计算机存储介质
KR20230125817A (ko) 포인트 클라우드 인코딩 및 디코딩 방법, 인코더, 디코더및 컴퓨터 저장 매체
WO2023142133A1 (zh) 编码方法、解码方法、编码器、解码器及存储介质
US20240135594A1 (en) Adaptive geometry filtering for mesh compression
RU2778864C1 (ru) Неявное геометрическое разделение на основе квадродерева или бинарного дерева для кодирования облака точек
WO2024082153A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2024082127A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2022170521A1 (zh) 几何重构方法、解码器以及计算机存储介质
CN116634179A (zh) 点云数据处理方法、装置、电子设备及存储介质
KR20230052944A (ko) 동적 메시 압축을 위한 2d uv 아틀라스 샘플링 기반 방법
CN116830580A (zh) 点云解码方法、解码器及计算机存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20965344

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 202080107662.2

Country of ref document: CN

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20965344

Country of ref document: EP

Kind code of ref document: A1