Point cloud decoding method, point cloud encoding method, decoder and encoder
By utilizing the placeholder of coded subnodes during point cloud encoding and decoding, only the required placeholder information is encoded and coded, the redundancy problem in point cloud encoding process is solved, and the encoding efficiency and decoding speed are improved.
Patent Information
- Application Number
- PCT/CN2024/070407
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-01-03
- Publication Date
- 2025-07-10
AI Technical Summary
In the prior art, there is redundancy in the placeholder information code stream during point cloud encoding, resulting in low encoding and decoding efficiency and insufficient use of the placeholder of the coded subnode.
By obtaining the placeholder status of the coded child node, determine whether the current child node needs to be encoded or decoded, only encode and decode the required placeholder information, skip the part that does not require encoding and decode, and use the encoder and decoder to encode and decode the placeholder information.
It improves point cloud encoding efficiency, reduces the code stream size, and improves point cloud decoding speed and accuracy.
Smart Images

Figure CN2024070407_10072025_PF_FP_ABST
Abstract
Description
Point cloud decoding, point cloud encoding method, decoder and encoder Technical Field
[0001] The embodiments of the present application relate to the field of point cloud encoding and decoding technology, and in particular to a point cloud decoding, a point cloud encoding method, a decoder, and an encoder. Background Art
[0002] In the geometry-based point cloud compression (G-PCC) encoder framework, the geometric information and attribute information of the point cloud are encoded separately. After the geometric encoding is completed, the geometric information is reconstructed, and the encoding of the attribute information depends on the reconstructed geometric information.
[0003] In related technologies, in the octree-based geometric information encoding process, a node's spatial placeholder code contains eight flag bits (b0b1b2b3b4b5b6b7), each representing the occupancy status of the node's eight child nodes. Based on each flag bit in (b0b1b2b3b4b5b6b7), the occupancy information of the node's child nodes can be expressed during the encoding and decoding process. Reducing redundancy in the placeholder information code stream is key to improving the efficiency of geometric information encoding and decoding.
[0004] Summary of the Invention
[0005] The present invention provides a point cloud decoding and encoding method, a decoder, and an encoder. The technical solution is as follows:
[0006] In one aspect, an embodiment of the present application provides a point cloud decoding method, the method comprising:
[0007] For a current child node in the i-th type of child nodes, obtain the occupancy status of decoded child nodes belonging to the same node as the current child node, where the nodes in the point cloud are divided into a number of child nodes, and the child nodes in the point cloud are divided into n types, n ≥ 2, and i ≤ n;
[0008] Based on the placeholder status of the decoded child nodes, placeholder information of the current child node is determined.
[0009] On the other hand, an embodiment of the present application provides a point cloud encoding method, the method comprising:
[0010] For a current child node in the i-th type of child nodes, obtain the occupancy status of the encoded child nodes that belong to the same node as the current child node, where the node in the point cloud is divided into a number of child nodes, and the child nodes in the point cloud are divided into n types, n ≥ 2, and i ≤ n;
[0011] Based on the placeholder status of the encoded child nodes, the placeholder information of the child nodes that need to be encoded in the i-th type of child nodes is encoded.
[0012] On the other hand, an embodiment of the present application provides a decoder, comprising:
[0013] a decoding unit, configured to obtain, for a current child node in an i-th type of child nodes, an occupancy status of decoded child nodes belonging to the same node as the current child node, wherein a node in a point cloud is divided into a plurality of child nodes, and the child nodes in the point cloud are divided into n types, n ≥ 2, and i ≤ n;
[0014] The decoding unit is configured to determine the placeholder information of the current child node based on the placeholder status of the decoded child node.
[0015] On the other hand, an embodiment of the present application provides an encoder, comprising:
[0016] an encoding unit, configured to obtain, for a current child node in an i-th type of child nodes, an occupancy status of encoded child nodes belonging to the same node as the current child node, wherein a node in a point cloud is divided into a plurality of child nodes, and the child nodes in the point cloud are divided into n types, n ≥ 2, and i ≤ n;
[0017] The encoding unit is configured to encode the placeholder information of the child nodes that need to be encoded in the i-th type of child nodes based on the placeholder status of the encoded child nodes.
[0018] On the other hand, an embodiment of the present application provides a decoder, which includes a memory and a processor, wherein the memory is used to store a computer program running on the processor; and the processor is used to execute the point cloud decoding method described in the above aspects when running the computer program.
[0019] On the other hand, an embodiment of the present application provides an encoder, which includes a memory and a processor, wherein the memory is used to store a computer program running on the processor; and the processor is used to execute the point cloud encoding method described in the above aspects when running the computer program.
[0020] On the other hand, an embodiment of the present application provides a non-volatile computer-readable storage medium for storing a code stream, wherein the code stream is generated by utilizing a point cloud encoding method of an encoder, or the code stream is decoded by utilizing a point cloud decoding method of a decoder, wherein the point cloud encoding method is the point cloud encoding method described in the above aspect, and the point cloud decoding method is the point cloud decoding method described in the above aspect.
[0021] On the other hand, an embodiment of the present application provides a computer program product, which includes computer instructions, the computer instructions are stored in a computer-readable storage medium, the processor obtains the computer instructions from the computer-readable storage medium, and the processor executes the computer instructions to implement the point cloud encoding method or the point cloud decoding method as described in the above aspects.
[0022] By adopting the solution provided in the embodiment of the present application, during the encoding process, based on the placeholder status of the encoded sub-nodes in the same node, it is determined whether the placeholder information of the current sub-node needs to be encoded, thereby skipping the encoding of the placeholder information of the sub-nodes that do not need to be encoded, and only encoding the placeholder information of the sub-nodes that need to be encoded, which helps to improve the encoding efficiency of the placeholder information and reduce the code stream size.
[0023] During the decoding process, based on the placeholder information of the decoded child nodes in the same node, it is determined whether the placeholder information of the current child node needs to be decoded. If the placeholder information of the current child node needs to be decoded, the placeholder information is decoded from the bitstream. If the placeholder information of the current child node does not need to be decoded, decoding of the placeholder information of the current child node can be skipped, which helps improve the efficiency of point cloud decoding. BRIEF DESCRIPTION OF THE DRAWINGS
[0024] FIG1 shows a flow chart of a G-PCC encoding process provided by the related art;
[0025] FIG2 shows a flow chart of a G-PCC decoding process provided by a related technical solution;
[0026] FIG3 is a schematic diagram of an implementation of a compression technology based on probability estimation and entropy coding provided by a related technical solution;
[0027] FIG4 is a schematic diagram of sub-node classification according to an exemplary embodiment of the present application;
[0028] FIG5 is a flowchart of a point cloud encoding method shown in an exemplary embodiment of the present application;
[0029] FIG6 is a flowchart of a point cloud decoding method shown in an exemplary embodiment of the present application;
[0030] FIG7 is a flowchart of a point cloud encoding method shown in another exemplary embodiment of the present application;
[0031] FIG8 is a schematic diagram showing the occupancy of subnodes according to an exemplary embodiment of the present application;
[0032] FIG9 is a flowchart of a point cloud decoding method shown in another exemplary embodiment of the present application;
[0033] FIG10 is a flowchart of a point cloud encoding method shown in yet another exemplary embodiment of the present application;
[0034] FIG11 is a schematic diagram showing the occupancy of subnodes according to another exemplary embodiment of the present application;
[0035] FIG12 is a schematic diagram showing the occupancy of subnodes according to another exemplary embodiment of the present application;
[0036] FIG13 is a flowchart of a point cloud decoding method shown in yet another exemplary embodiment of the present application;
[0037] FIG14 is a flowchart of a point cloud encoding method shown in yet another exemplary embodiment of the present application;
[0038] FIG15 is a schematic diagram of an implementation of the point cloud encoding method shown in FIG14 ;
[0039] FIG16 is a flowchart of a point cloud decoding method shown in yet another exemplary embodiment of the present application;
[0040] FIG17 is a schematic diagram of an implementation of the point cloud decoding method shown in FIG16 ;
[0041] FIG18 shows a structural block diagram of a point cloud encoding device provided by an exemplary embodiment of the present application;
[0042] FIG19 shows a structural block diagram of a point cloud decoding device provided by an exemplary embodiment of the present application;
[0043] FIG20 shows a block diagram of a structure of an encoder provided by an exemplary embodiment of the present application;
[0044] FIG21 shows a structural block diagram of a decoder provided by an exemplary embodiment of the present application. DETAILED DESCRIPTION
[0045] In order to make the objectives, technical solutions and advantages of this application clearer, the implementation methods of this application will be further described in detail below with reference to the accompanying drawings.
[0046] In this document, "plurality" refers to two or more. "And / or" describes a relationship between associated objects, indicating that three possible relationships exist. For example, "A and / or B" can mean: A exists alone, A and B exist simultaneously, or B exists alone. The character " / " generally indicates an "or" relationship between the associated objects.
[0047] Refer to Figure 1, which shows a flowchart of a G-PCC encoding process provided by the relevant technology. In the flowchart of the G-PCC encoding shown in Figure 1, it is applied to the point cloud encoder. For the point cloud data to be encoded, the point cloud data is first divided into multiple slices through slice division. In each slice, the geometric information of the point cloud and the attribute information corresponding to each point cloud are encoded separately. In the geometric encoding process, the geometric information is transformed so that all the point clouds are contained in a bounding box, and then quantized. This quantization step mainly plays a role in scaling. Due to the quantization rounding, the geometric information of a part of the point cloud is the same, so the decision whether to remove duplicate points is based on the parameters. The process of quantization and removal of duplicate points is also called the voxelization process. The bounding box is then divided into an octree. In the octree-based geometry information encoding process, the bounding box is divided into eight equal parts. Non-empty subcubes (those containing points in the point cloud) are further divided into eight equal parts until the resulting leaf nodes are 1×1×1 unit cubes. The points in the leaf nodes are then arithmetically encoded to generate a binary geometry bitstream, also known as the geometry codestream. In the triangle soup (trisoup)-based geometry information encoding process, octree partitioning is also performed first. However, unlike the octree-based geometry information encoding process, this triangle soup does not require the point cloud to be partitioned into 1×1×1 unit cubes. Instead, the partitioning stops when blocks (sub-blocks) have a side length of W. Based on the surface formed by the distribution of the point cloud in each sub-block, up to twelve vertices (intersection points) generated by this surface and the twelve edges of the sub-block are obtained. These intersection points are then arithmetically encoded (surface fitting is performed based on the intersection points) to generate a binary geometry bitstream, also known as the geometry codestream. The intersection points are also used in the implementation of the geometric reconstruction process, and the reconstructed set information is used when encoding the attributes of the point cloud.
[0048] In the attribute encoding process, after the geometric encoding is completed and the geometric information is reconstructed, color conversion is performed to convert the color information (i.e., attribute information) from the RGB color space to the YUV color space. Then, the point cloud is recolored using the reconstructed geometric information so that the unencoded attribute information corresponds to the reconstructed geometric information. Attribute encoding is mainly performed on color information. In the color information encoding process, there are two main transformation methods. One is a distance-based lifting transformation that relies on the level of detail (LOD) division. Currently, the LOD division is mainly divided into two methods: distance-based LOD division (mainly for Category1 sequence) and fixed sampling rate LOD division (mainly for Category3 sequence). The second is to directly perform a Region Adaptive Hierarchal Transform (RAHT) transformation. Among them, both methods will convert color information from the spatial domain to the frequency domain, obtain high-frequency coefficients and low-frequency coefficients through transformation, and finally quantize the coefficients (i.e., quantized coefficients). Finally, the geometric coding data after octree partitioning and surface fitting is sliced and synthesized with the attribute coding data processed by quantized coefficients, and the vertex coordinates of each block are encoded in turn (i.e., arithmetic coding) to generate a binary attribute bit stream, i.e., attribute code stream.
[0049] Refer to Figure 2, which shows a flowchart of a G-PCC decoding provided by a related technical solution. In the flowchart of G-PCC decoding shown in Figure 2, it is applied to the point cloud decoder. For the acquired code stream, the geometric bit stream and the attribute bit stream in the code stream are first decoded independently. When decoding the geometric bit stream, the geometric information of the point cloud is obtained through arithmetic decoding-octree synthesis-surface fitting-reconstruction geometry-inverse coordinate conversion; when decoding the attribute bit stream, the attribute information of the point cloud is obtained through arithmetic decoding-inverse quantization-LOD-based lifting inverse transform or RAHT-based inverse transform-inverse color conversion, and the three-dimensional image model of the point cloud data to be encoded is restored based on the geometric information and attribute information.
[0050] To reduce bitrate size, neural networks and deep learning technologies are also being applied to compress point cloud geometry and attribute information. Examples include volumetric model compression technology based on 3D convolutional neural networks (3D CNNs), neural network compression using multi-layer perceptrons (MLPs) directly on point cloud geometric coordinate sets, compression technology using MLPs or 3D CNNs for probability estimation and entropy coding of octree node occupancy information, and compression technology based on 3D sparse convolutional neural networks.
[0051] Refer to Figure 3, which shows a schematic diagram of the implementation of a compression technology based on probability estimation and entropy coding provided by the relevant technical solution. At the encoding end, the geometric information of the point cloud is continuously downsampled, and the initial voxel-level point cloud is continuously downsampled (such as 2×2×2↓ in the figure) to obtain point clouds of different scales, and finally the point clouds are merged into one node, namely the root node. During the downsampling process, for the i+1 scale point cloud (scale i+1), the occupancy information (POV i+1 ) Before entropy coding, the i-th scale point cloud is upsampled (as shown in the figure 2×2×2↑) and probability estimated by the probability estimation network based on SparseCNN to obtain the occupancy of each node at the i+1-th scale (MP-POV i+1 ), and then use the probability estimate (ρMP-POV) to entropy encode the occupancy information of the nodes in the i+1-th scale point cloud.
[0052] At the decoding end, the occupancy information (POV i-1 ), the i-1 scale point cloud is upsampled (as shown in the figure 2×2×2↑) and the probability estimation is performed through the probability estimation network based on SparseCNN (sparse convolutional neural network) to obtain the occupancy of each node at the i-1 scale (MP-POV i ) is calculated by using the probability estimate (ρMP-POV) to entropy decode the bitstream and obtain the occupancy information (POV) of the node in the i-th scale point cloud. i ). And so on, until the occupancy information of each node in the voxel-level point cloud is decoded and obtained.
[0053] Since the correlation between nodes at the same scale is higher than the correlation between child nodes and parent nodes at adjacent scales, the related technology can enhance the encoding through a multi-stage encoding scheme. As shown in Figure 4, taking three nodes as an example, each node is divided into 8 child nodes (child nodes 1 to 8 respectively) according to the octree. When encoding the placeholder information of each child node, the child nodes are first divided into n categories. For example, the 8 child nodes can be divided into 2 categories (child nodes 1, 2, 3, and 4 are one category, and child nodes 5, 6, 7, and 8 are one category), 4 categories (child nodes 1 and 2 are one category, child nodes 3 and 4 are one category, child nodes 5 and 6 are one category, and child nodes 7 and 8 are one category), or 8 categories.
[0054] After the different types of child nodes are divided, encoding or decoding is performed in the order of the first to nth types. When encoding or decoding the occupancy information of the first type of child nodes, the occupancy probability is estimated based on the geometric information of the parent node, and the occupancy information of the first type of child nodes is entropy encoded or decoded based on the probability estimate. When encoding or decoding the occupancy information of the second type of child nodes, in addition to the geometric information of the parent node, the occupancy probability of the second type of child nodes can also be estimated based on the occupancy information of the first type of child nodes, and the occupancy information of the second type of child nodes can be entropy encoded or decoded based on the probability estimate. When encoding or decoding the occupancy information of the third type of child nodes, in addition to the geometric information of the parent node, the occupancy probability of the third type of child nodes can also be estimated based on the occupancy information of the first and second types of child nodes, and the occupancy information of the third type of child nodes can be entropy encoded or decoded based on the probability estimate. This process is repeated until the encoding or decoding of the occupancy information of all types of child nodes is completed.
[0055] As can be seen, in the above scheme, the placeholder information of each child node needs to be encoded in the bitstream. Accordingly, during the decoding process, this placeholder information of each child node needs to be decoded from the bitstream. Although the multi-stage encoding scheme can improve coding efficiency to a certain extent, it does not fully utilize the placeholder information of the encoded or decoded child nodes, resulting in a certain amount of redundancy in the bitstream, which limits the encoding and decoding efficiency.
[0056] To further reduce redundancy in the bitstream and improve encoding and decoding efficiency, the technical solution provided in the embodiments of this application determines whether the current subnode needs to be encoded during the point cloud encoding and decoding process based on the placeholder information of the already encoded and decoded subnodes. Subsequently, only the placeholder information of the subnodes that need to be encoded is encoded and decoded, while the placeholder information encoding and decoding process for other subnodes is skipped (the placeholder information of these subnodes can be obtained through methods other than entropy decoding). On the one hand, this can reduce redundancy in the bitstream, thereby reducing the bitstream size, and on the other hand, it can improve the efficiency of subsequent point cloud decoding.
[0057] It should be noted that the point cloud encoding and decoding solutions provided in the embodiments of the present application are all used to encode and decode the geometric occupancy information of the point cloud.
[0058] The geometric placeholder encoding process is described below.
[0059] Please refer to Figure 5, which shows a flow chart of a point cloud encoding method provided by an exemplary embodiment of the present application. The method may include the following steps:
[0060] Step 501: For a current child node in the i-th type of child nodes, obtain the occupancy status of the encoded child nodes that belong to the same node as the current child node, where the nodes in the point cloud are divided into a number of child nodes, and the child nodes in the point cloud are divided into n categories, n≥2, and i≤n.
[0061] In the embodiment of the present application, the point cloud is continuously downsampled during the encoding process to obtain point clouds of different scales. Each node in the point cloud of the same scale is divided into a number of sub-nodes, and the sub-nodes obtained by division are also divided into at least two types of sub-nodes according to certain division rules.
[0062] In some embodiments, nodes in point clouds of different scales are divided into the same number of sub-nodes, or nodes in point clouds of different scales are divided into different numbers of sub-nodes. In an illustrative example, as shown in FIG4 , a node in a point cloud is divided into 8 sub-nodes using an octree.
[0063] In some embodiments, when dividing subnodes, different types of subnodes contain the same number of subnodes. For example, when a node is divided into 8 subnodes, and the 8 subnodes are divided into 4 types, each type of subnode contains 2 subnodes; when a node is divided into 2 types, each type of subnode contains 4 subnodes.
[0064] In other embodiments, different types of sub-nodes contain different numbers of sub-nodes. For example, when the current node is divided into 8 sub-nodes, and the 8 sub-nodes are divided into 3 types, the first type of sub-nodes contains 2 sub-nodes, the second type of sub-nodes contains 4 sub-nodes, and the third type of sub-nodes contains 2 sub-nodes.
[0065] In this embodiment of the present application, the encoder performs placeholder encoding on each type of child node in the order of first to n. When encoding the i-th type of child node, the encoder has completed the placeholder encoding of the first to i-1-th types of child nodes. Accordingly, for the current child node in the i-th type of child node, the first to i-1-th types of child nodes belonging to the same node as the current child node are the encoded child nodes. The encoder obtains the placeholder status of the first to i-1-th types of child nodes in the node.
[0066] The occupancy status includes occupying and being occupied.
[0067] Schematically, as shown in FIG4 , the subnodes are divided into 8 categories. When encoding the third category of subnodes (a total of 3 subnodes), the encoder obtains the occupancy status of the first and second categories of subnodes.
[0068] In this embodiment, the occupancy status of the encoded child node is the actual occupancy information of the child node, and the actual occupancy information will be encoded into the bitstream. Alternatively, the occupancy status of the encoded child node is the predicted occupancy information of the child node, and the predicted occupancy information is not encoded into the bitstream.
[0069] Among them, when the predicted occupancy information of the child node is consistent with the actual occupancy information of the child node, the encoding process is lossless encoding; when the predicted occupancy information of the child node is inconsistent with the actual occupancy information of the child node, the encoding process is lossy encoding.
[0070] Step 502: Based on the occupancy status of the encoded child nodes, encode the occupancy information of the child nodes that need to be encoded in the i-th type of child nodes.
[0071] In the embodiment of the present application, the encoder uses the occupancy status of the encoded child nodes as prior information to determine whether the occupancy information of the current child node needs to be encoded.
[0072] In the embodiment of the present application, whether the placeholder information of the child node needs to be encoded includes two cases: encoding is required and encoding is not required (i.e., skip encoding). Among them, the placeholder information that needs to be encoded will be encoded into the bitstream, and the placeholder information that does not need to be encoded will not be encoded into the bitstream, but will be indicated through other implicit methods.
[0073] For each child node in the i-th type of child nodes, the encoder determines whether the placeholder information of each child node needs to be encoded. The encoder may determine whether the placeholder information of each child node needs to be encoded in parallel.
[0074] Schematically, as shown in Figure 4, when there are three nodes and the child nodes of each node are divided into 8 classes, in the process of encoding the placeholder information of the third type of child nodes, for each node, the encoder determines whether the placeholder information of the third type of child nodes needs to be encoded based on the placeholder status of the first and second type of child nodes in the node, and whether the placeholder information of the third type of child nodes in the three nodes needs to be encoded is determined in parallel.
[0075] When the point cloud contains m nodes, each type of subnode contains m subnodes. If the occupancy information of each subnode needs to be encoded, and the occupancy information is represented by 0 or 1 (0 means the subnode is unoccupied, 1 means the subnode is occupied), the encoder needs to encode a binary sequence of length m.
[0076] However, by adopting the solution provided in the embodiment of the present application, if there are j child nodes in the current class of child nodes whose placeholder information does not need to be encoded, the encoder only needs to encode the binary sequence of length mj, which helps to reduce the length of the encoded code stream and improve the encoding efficiency.
[0077] In some embodiments, the encoder performs a probability estimate on the occupancy status of each child node in the i-th type of child node to obtain a probability estimate value of the occupancy status of each child node, and then uses the probability estimate value to entropy encode the occupancy information of the child node to be encoded in the i-th type of child node to obtain a code stream of the occupancy information of the i-th type of child node.
[0078] In some embodiments, after the encoder completes encoding of the placeholder information of each sub-node at the current scale according to steps 501 to 502, it encodes the placeholder information of each sub-node at the next scale until encoding of the placeholder information of nodes at all scales is completed.
[0079] In summary, by adopting the solution provided in the embodiment of the present application, during the encoding process, based on the placeholder status of the encoded sub-nodes in the same node, it is determined whether the placeholder information of the current sub-node needs to be encoded, thereby skipping the encoding of the placeholder information of the sub-nodes that do not need to be encoded, and only encoding the placeholder information of the sub-nodes that need to be encoded, which helps to improve the encoding efficiency of the placeholder information and reduce the code stream size.
[0080] The following describes the geometric placeholder decoding process.
[0081] Please refer to Figure 6, which shows a flow chart of a point cloud decoding method provided by an exemplary embodiment of the present application. The method may include the following steps:
[0082] Step 601: For a current child node in the i-th type of child nodes, obtain the occupancy status of decoded child nodes that belong to the same node as the current child node, where the nodes in the point cloud are divided into several child nodes, and the child nodes in the point cloud are divided into n categories, n≥2, and i≤n.
[0083] Corresponding to the encoding process, in the embodiment of the present application, the decoder performs placeholder decoding on each type of child node in the order of first to n. When decoding the i-th type of child node, the decoder has completed placeholder decoding for the first to i-1-th type of child nodes. Accordingly, for the current child node in the i-th type of child node, the first to i-1-th type of child nodes belonging to the same node as the current child node are the decoded child nodes.
[0084] Schematically, as shown in FIG4 , the subnodes are divided into 8 categories. When decoding the third category of subnodes (a total of 3 subnodes), the decoder obtains the occupancy status of the first and second categories of subnodes.
[0085] In this embodiment, the occupancy status of the decoded child node is actual occupancy information of the child node obtained by decoding from the bitstream, or the occupancy status of the decoded child node is predicted occupancy information of the child node, which is not obtained by decoding from the bitstream but is determined through a non-explicit indication method.
[0086] Step 602: Determine the placeholder information of the current child node based on the placeholder status of the decoded child nodes.
[0087] In the embodiment of the present application, the decoder uses the placeholder status of the decoded child nodes as a priori information to determine whether the placeholder information of the current child node is encoded into the bitstream, and further determines whether the placeholder information of the current child node needs to be decoded from the bitstream.
[0088] In some embodiments, if the placeholder information of the current child node needs to be decoded (i.e., the placeholder information of the current child node is encoded into the bitstream), the placeholder information of the current child node needs to be decoded from the bitstream; if the placeholder information of the current child node does not need to be decoded (i.e., the placeholder information of the current child node is not encoded into the bitstream), the placeholder status of the current child node is determined through other non-display indication methods.
[0089] For each child node of the i-th type of child nodes, the decoder repeatedly performs steps 601 to 602 to determine whether the placeholder information of each child node needs to be decoded. The decoder can determine whether the placeholder information of each child node needs to be decoded in parallel.
[0090] Schematically, as shown in Figure 4, when there are three nodes and the child nodes of each node are divided into 8 categories, in the process of decoding the placeholder information of the third category of child nodes, for each node, the decoder determines whether the placeholder information of the third category of child nodes needs to be decoded based on the placeholder status of the first category and the second category of child nodes in the node, and whether the placeholder information of the third category of child nodes in the three nodes needs to be decoded is determined in parallel.
[0091] In some embodiments, when decoding the occupancy information of the current child node from the bitstream, the decoder performs a probability estimate on the occupancy status of each child node in the i-th type of child nodes, obtains a probability estimate value of the occupancy status of each child node, and uses the probability estimate value to decode the occupancy information of the current child node from the bitstream.
[0092] For each encoded child node in the i-th type of child node, the decoder decodes the bitstream to obtain the corresponding placeholder information in the above manner until the placeholder status of all child nodes in the i-th type of child node is determined.
[0093] When a point cloud contains m nodes, each type of sub-node contains m sub-nodes. If the occupancy information of each sub-node needs to be decoded, and the occupancy information is represented by 0 or 1 (0 means the sub-node is unoccupied, 1 means the sub-node is occupied), the decoder needs to decode the bitstream m times to obtain the occupancy information of each of the m sub-nodes.
[0094] However, by adopting the solution provided in the embodiment of the present application, if there are j child nodes in the current class whose placeholder information does not need to be decoded, the decoder only needs to decode the code stream mj times, which helps to improve the efficiency of point cloud decoding.
[0095] To sum up, by adopting the solution provided in the embodiment of the present application, during the decoding process, based on the placeholder information of the decoded sub-nodes in the same node, it is determined whether the placeholder information of the current sub-node needs to be decoded. When the placeholder information of the current sub-node needs to be decoded, the placeholder information is decoded from the code stream. When the placeholder information of the current sub-node does not need to be decoded, the decoding of the placeholder information of the current sub-node can be skipped, which helps to improve the efficiency of point cloud decoding.
[0096] Regarding which types of sub-nodes among the n types of sub-nodes to use the above-mentioned codec skipping scheme for, the following two schemes can be adopted:
[0097] Solution 1: The i-th type of child node is a specified type of child node among the n types of child nodes, that is, the above-mentioned codec skipping solution is only used for the specific type of child nodes.
[0098] In some embodiments, for a class other than a specified class, the encoder encodes the placeholder information of each sub-node in the class into the bitstream; correspondingly, the decoder decodes the bitstream to obtain the placeholder information of each sub-node in the class.
[0099] In some embodiments, the encoder and decoder need to pre-agree on a specified type of sub-node. The specified type of sub-node can be agreed upon through a protocol, or can be interactively negotiated before transmitting the code stream, or can be indicated by the encoding end. This embodiment of the present application does not limit this.
[0100] Optionally, the designated class may be a continuous class or a discontinuous class. For example, for a subnode divided into 8 classes, the designated class may be the fourth to eighth class, or the second, fourth, sixth, eighth class, etc., which is not limited in this embodiment.
[0101] Solution 2: The i-th type of child node is any type of child node among the n types of child nodes, that is, the above-mentioned codec skipping solution is used for all types of child nodes.
[0102] When the above encoding and decoding skipping scheme is adopted for all types of sub-nodes, the encoder needs to determine the sub-nodes that need to be encoded in each type of sub-node before encoding the placeholder information of each type of sub-node; correspondingly, the decoder needs to determine the sub-nodes that need to be decoded in each type of sub-node.
[0103] It should be noted that the above-mentioned schemes 1 and 2 can be selected according to the encoding and decoding speed, accuracy and other requirements of the actual point cloud coding scenario, and the encoding and decoding ends need to unify their respective schemes before officially transmitting the bitstream.
[0104] The specific implementation processes of the above solutions 1 and 2 are described below using exemplary embodiments.
[0105] For child nodes that don't require encoding, the actual placeholder information isn't used during encoding. Instead, the predicted placeholder information for the child node is implicitly indicated. This leads to inconsistencies between the predicted placeholder information and the actual placeholder information. Furthermore, inaccurate predicted placeholder information can negatively impact subsequent decisions about whether the child node's placeholder information needs to be encoded.
[0106] In order to reduce the coding and decoding loss when using the coding and decoding skipping scheme for the specified type of child nodes, in one possible implementation, the encoder or decoder uses the coding and decoding skipping scheme for the last k types of child nodes among the n types of child nodes, and uses the placeholder information full coding and decoding scheme for other types of child nodes except the last k types of child nodes, so as to use the accurate prior information (i.e., the actual placeholder information) provided by the child nodes before the k-th type of child node.
[0107] In some embodiments, for the first to n-th sub-nodes of the n-type sub-nodes, the encoder directly encodes the actual occupancy information of the sub-nodes of the type, and the decoder directly decodes the actual occupancy information of the sub-nodes of the type from the bitstream; for the n-k+1-th to n-th sub-nodes of the n-type sub-nodes, the encoder determines whether each sub-node in the type needs to be encoded based on the occupancy of the encoded sub-nodes, and only encodes the sub-nodes that need to be encoded; the decoder determines the sub-nodes in the type that need to be decoded based on the occupancy of the decoded sub-nodes, and decodes the actual occupancy information of the sub-nodes from the bitstream.
[0108] In some embodiments, when the nth type of child node is a single child node among n types of child nodes, the encoder can determine whether the child nodes in the nth type of child node need to be encoded and decoded based on the prior information that "at least one child node in the same node is occupied" and based on the actual occupancy information of the first n-1 types of child nodes.
[0109] As shown in FIG7 , the encoding process may include the following steps:
[0110] Step 701: Encode the placeholder information of each child node in the first n-1 types of child nodes. The child nodes in the point cloud are divided into n types, and the nth type of child node is a single child node, n≥2, and i≤n.
[0111] The n-th type child node is a single child node means that each node contains only one n-th type child node.
[0112] Schematically, when the nodes in the point cloud are divided into 8 sub-nodes, and the 8 sub-nodes are divided into 8 categories, the eighth category sub-node is a single sub-node; when the 8 sub-nodes are divided into 4 categories, and sub-nodes 1 and 2 are classified as the first category, sub-nodes 3 and 4 are classified as the second category, sub-nodes 5 and 6 are classified as the third category, and sub-nodes 7 and 8 are classified as the fourth category, the fourth category sub-node does not belong to a single sub-node; when the 8 sub-nodes are divided into 4 categories, and sub-nodes 1 and 2 are classified as the first category, sub-nodes 3 and 4 are classified as the second category, sub-nodes 5, 6, and 7 are classified as the third category, and sub-node 8 is classified as the fourth category, the fourth category sub-node belongs to a single sub-node. The embodiments of the present application do not limit the specific division method of the sub-nodes.
[0113] For the first n-1 types of child nodes, the encoder will not determine whether the placeholder information of the child node needs to skip encoding, but directly entropy encodes the placeholder information of each child node to obtain the code stream of the placeholder information of each type of child node.
[0114] Schematically, as shown in FIG8 , when child nodes are divided into eight categories, for child nodes in categories 1 through 7, the encoder performs entropy coding on the actual placeholder information of each child node. For example, for child nodes in category 1, the encoder performs entropy coding on the actual placeholder information 011; for child nodes in category 2, the encoder performs entropy coding on the actual placeholder information 010; for child nodes in category 3, the encoder performs entropy coding on the actual placeholder information 001; and for child nodes in categories 4 through 7, the encoder performs entropy coding on the actual placeholder information 000.
[0115] Step 702: For a current child node in the nth type of child nodes, obtain the occupancy status of the encoded child nodes that belong to the same node as the current child node.
[0116] Before performing placeholder encoding on the nth type of child node, for the current child node in the nth type of child node, the encoder obtains the placeholder information of the first to n-1th type of child nodes belonging to the same node as the current child node, where the placeholder information is the actual placeholder information of the first to n-1th type of child nodes.
[0117] Combined with the example of Figure 4, before performing placeholder encoding on the eighth category sub-node, for the first node, the encoder obtains the placeholder status of the first to seventh categories of sub-nodes in the first node as 0000000; for the second node, the encoder obtains the placeholder status of the first to seventh categories of sub-nodes in the second node as 1100000; for the third node, the encoder obtains the placeholder status of the first to seventh categories of sub-nodes in the third node as 1010000.
[0118] In one possible implementation, each node in the current-scale point cloud is assigned a node mask, and the node mask is updated based on the occupancy of the encoded child nodes.
[0119] Optionally, the encoder updates the node mask of the node based on the occupancy of the encoded child nodes. The node mask is the result of an OR operation on the occupancy of the encoded child nodes. Occupancy information of 0 indicates that the encoded child node is unoccupied, and occupancy information of 1 indicates that the encoded child node is occupied. The initial value of the node mask is 0. Accordingly, subsequent encoders can directly determine the occupancy of the encoded child nodes of the node based on the node mask corresponding to the node.
[0120] Schematically, the node mask update process can be expressed as: Mask i |=occu i ==1?1:0
[0121] Combined with the example of Figure 4, before performing placeholder encoding on the eighth category sub-node, the encoder obtains the node mask of the first node as 0, indicating that the first to seventh categories of sub-nodes in the first node are not occupied; the encoder obtains the node mask of the second node as 1, indicating that there are occupied sub-nodes among the first to seventh categories of sub-nodes in the second node; the encoder obtains the node mask of the third node as 1, indicating that there are occupied sub-nodes among the first to seventh categories of sub-nodes in the third node.
[0122] Step 703: When the placeholder information of the encoded child nodes is not occupied, it is determined that the placeholder information of the current child node does not need to be encoded.
[0123] Since child nodes are derived from node division, when a node in the point cloud is occupied, there should be at least one child node under the node that is also occupied by the point cloud. Based on this prior information, the following conclusions can be derived:
[0124] If the first n-1 child nodes of the current node are not occupied, the nth child node must be occupied; if at least one of the first n-1 child nodes of the current node is occupied, the nth child node may or may not be occupied.
[0125] For the nth child node that is bound to be occupied, if the occupancy information (1) of the nth child node is also encoded into the bitstream, redundancy will be generated. Therefore, in this embodiment, when the occupancy status of the encoded child nodes is not occupied, the encoder determines that the occupancy information of the current child node does not need to be encoded.
[0126] In combination with the implementation in step 702 above, when the placeholder information of the child nodes in a node is maintained by the node mask, when the node mask is 0, the encoder determines that the placeholder information of the current child node does not need to be encoded.
[0127] With reference to the example of FIG4 , since the node mask of the first node is 0, the encoder determines that the placeholder information of the eighth subnode in the first node does not need to be encoded.
[0128] Step 704: If the placeholder status of at least one encoded child node is occupied, determine whether the placeholder information of the current child node needs to be encoded.
[0129] For the nth child node which may be occupied or not, the placeholder information of the child node needs to be encoded into the bitstream to ensure that the subsequent decoding end can correctly decode and obtain the placeholder information of the child node. Therefore, the encoder determines that the placeholder information of the current child node needs to be encoded.
[0130] In combination with the implementation in the above step 702, when the placeholder information of the child nodes in the node is maintained by the node mask, when the node mask is 1, the encoder determines that the placeholder information of the current child node needs to be encoded.
[0131] With reference to the example of FIG. 4 , since the node masks of the second node and the third node are both 1, the encoder determines that the placeholder information of the eighth subnode in both the second node and the third node needs to be encoded.
[0132] Step 705: Encode the placeholder information of the child nodes that need to be encoded in the n-th type of child nodes.
[0133] Similar to the above step 503 , the encoder encodes the placeholder information of the child nodes that need to be encoded in the n-th type of child nodes to obtain a code stream containing the placeholder information of the n-th type of child nodes.
[0134] Combined with the example of Figure 4, since the placeholder information of the eighth sub-node in the first node does not need to be encoded, while the placeholder information of the eighth sub-node in the second node and the third node needs to be encoded, the encoder only needs to encode the placeholder information of the eighth type of sub-node in the second and third nodes, that is, only the binary sequence 10 needs to be encoded, rather than the binary sequence 110.
[0135] In order to verify the improvement of the above scheme on the efficiency of point cloud geometry coding, the ford_01_q1mm sequence was tested under the condition of geometric losslessness. The test results are shown in Table 1:
[0136] Table 1
[0137] From the above test results, it can be seen that after introducing the placeholder information skipping coding scheme, in the case of geometric lossless coding, the geometric coding bpp can be reduced by about 2%, thereby improving the coding efficiency of point cloud geometric information.
[0138] In this embodiment, when the n-th child node in n categories is a single child node, the encoder determines whether the placeholder information of the n-th child node in the node can be uniquely determined based on the placeholder information of the encoded child nodes in the same node and the prior information that "there is at least one occupied child node in the same node". When the placeholder information of the n-th child node can be uniquely determined, the encoding of the placeholder information is skipped. When geometric lossless coding is implemented, the length of the code stream is reduced and the geometric coding efficiency is improved.
[0139] Corresponding to the encoding process shown in FIG7 , as shown in FIG9 , the decoding process may include the following steps:
[0140] Step 901: Decode the placeholder information of each sub-node in the first n-1 sub-node categories from the code stream. The sub-nodes in the point cloud are divided into n categories, and the nth sub-node is a single sub-node, n≥2, and i≤n.
[0141] For the first n-1 types of child nodes, the decoder will not determine whether the placeholder information of the child nodes needs to be skipped for decoding, but will directly perform entropy decoding on the bitstreams corresponding to each type of child node to obtain the placeholder information of each type of child node.
[0142] Schematically, as shown in FIG8 , for the first type of sub-node, the decoder performs entropy decoding on the code stream, and obtains the placeholder information of the first type of sub-node in the first to third nodes as 011 respectively (indicating that the first type of sub-node in the first node is not occupied, and the first type of sub-node in the second and third nodes is occupied); for the second type of sub-node, the decoder performs entropy decoding on the code stream, and obtains the placeholder information of the second type of sub-node in the first to third nodes as 010 respectively; for the third type of sub-node, the decoder performs entropy decoding on the code stream, and obtains the placeholder information of the third type of sub-node in the first to third nodes as 001 respectively; for the fourth to seventh type of sub-node, the decoder performs entropy decoding on the code stream, and obtains the placeholder information of the fourth to seventh type of sub-node in the first to third nodes as 000.
[0143] Step 902: For a current child node in the nth type of child nodes, obtain the placeholder information of decoded child nodes that belong to the same node as the current child node.
[0144] Before performing placeholder decoding on the nth type of child node, for the current child node in the nth type of child node, the decoder obtains the placeholder information of the first to n-1th type of child nodes belonging to the same node as the current child node, where the placeholder information is the actual placeholder information of the first to n-1th type of child nodes obtained by decoding.
[0145] Combined with the example of Figure 4, before performing placeholder decoding on the eighth category sub-node, for the first node, the decoder obtains the placeholder status of the first to seventh categories of sub-nodes in the first node as 0000000; for the second node, the decoder obtains the placeholder status of the first to seventh categories of sub-nodes in the second node as 1100000; for the third node, the decoder obtains the placeholder status of the first to seventh categories of sub-nodes in the third node as 1010000.
[0146] In one possible implementation, each node in the current-scale point cloud is assigned a node mask, and the node mask is updated based on the occupancy of the decoded child nodes.
[0147] Optionally, the decoder updates the node mask of the node based on the occupancy of the decoded child nodes. The node mask is the result of an OR operation on the occupancy of the decoded child nodes. Occupancy information of 0 indicates that the decoded child node is unoccupied, and placeholder information of 1 indicates that the decoded child node is occupied. The initial value of the node mask is 0. Accordingly, subsequent decoders can directly determine the occupancy of the decoded child nodes of the node based on the node mask corresponding to the node.
[0148] Schematically, the node mask update process can be expressed as: Mask i |=occu i ==1?1:0
[0149] Combined with the example of Figure 4, before performing placeholder decoding on the eighth category sub-node, the decoder obtains the node mask of the first node as 0, indicating that the first to seventh categories of sub-nodes in the first node are not occupied; the decoder obtains the node mask of the second node as 1, indicating that there are occupied sub-nodes among the first to seventh categories of sub-nodes in the second node; the decoder obtains the node mask of the third node as 1, indicating that there are occupied sub-nodes among the first to seventh categories of sub-nodes in the third node.
[0150] Step 903: When the placeholder status of all decoded child nodes is unoccupied, determine the placeholder information of the current child node as occupied.
[0151] When the placeholders of all decoded child nodes are unoccupied, based on the prior information that "there should be at least one child node occupied by the point cloud under the node", the decoder determines that the current child node must be occupied, and the placeholder information of the current child node is not encoded into the bitstream (the placeholder information of the current child node does not need to be decoded). Accordingly, the decoder does not need to decode the placeholder information of the current child node from the bitstream.
[0152] In combination with the implementation in step 902 above, when the node mask is 0, the decoder determines that the placeholder information of the current child node is occupied.
[0153] 4 , since the node mask of the first node is 0, the decoder determines that the placeholder information of the eighth subnode in the first node does not need to be decoded, and the placeholder information of the eighth subnode in the first node is 1.
[0154] Step 904: If the placeholder status of at least one decoded child node is occupied, decode the placeholder information of the current child node from the bitstream.
[0155] When there is at least one decoded child node whose occupancy status is occupied, since the current child node may be occupied or unoccupied, that is, the occupancy status of the current child node cannot be uniquely determined based on the occupancy status of the encoded child nodes, the encoder encodes the occupancy information of the current child node into the bitstream, and accordingly, the decoder determines that the occupancy information of the current child node needs to be decoded.
[0156] In combination with the implementation in step 902 above, when the occupancy status of child nodes in a node is maintained by a node mask, when the node mask is 1, the decoder decodes the occupancy information of the current child node from the bitstream.
[0157] With reference to the example of FIG. 4 , since the node masks of the second node and the third node are both 1, the decoder determines that the placeholder information of the eighth subnode in both the second node and the third node needs to be decoded.
[0158] In the example of Figure 4 , the decoder can directly determine that the placeholder information of the eighth child node in the first node is 1 without decoding. For the eighth child nodes in the second and third nodes, the decoder needs to decode the corresponding placeholder information 1 and 0 from the bitstream respectively. That is, the decoding process only requires two decoding operations instead of three.
[0159] In this embodiment, when the n-th child node in n categories is a single child node, the decoder determines whether the placeholder information of the n-th child node in the node can be uniquely determined based on the placeholder information of the decoded child nodes in the same node and the prior information that "there is at least one occupied child node in the same node". When the placeholder information of the n-th child node can be uniquely determined, the decoder skips decoding the placeholder information of the child node, thereby improving the geometric decoding efficiency while achieving geometric lossless decoding.
[0160] Geometric lossless coding can be achieved by using the codec skipping scheme shown in Figures 7 and 9. To further improve the coding efficiency, the codec skipping scheme provided in the embodiment of the present application can also be used for geometric lossy coding.
[0161] In one possible embodiment, when performing placeholder encoding on the last k types of child nodes among n types of child nodes, the encoder determines whether the placeholder information of the current child node needs to be encoded based on the number of occupied child nodes in the encoded child nodes and at least one of the occupancy probability estimates of the current child node, wherein the number of occupied child nodes and the occupancy probability estimates are determined based on the occupancy status of the encoded child nodes.
[0162] Correspondingly, when performing placeholder decoding on the last k types of child nodes in the n types of child nodes, the decoder determines the placeholder information of the current child node based on the number of occupied child nodes in the node and at least one of the estimated occupancy probability of the current child node.
[0163] In some embodiments, the estimated value of the occupancy probability of the current sub-node is determined based on the geometric information of the occupied sub-nodes in the encoded sub-nodes and the geometric information of the i-th type of sub-nodes, that is, when estimating the occupancy probability of each i-th type of sub-node, the occupied sub-nodes of the first to i-1th types of sub-nodes are used as part of the prior information to estimate the occupancy probability of the i-th type of sub-node, thereby improving the accuracy of the probability estimation.
[0164] It should be noted that when estimating the occupancy probability of the first type of child nodes, since there are no coded child nodes, the probability estimation is performed only based on the geometric information of the first type of child nodes.
[0165] In some embodiments, the occupancy probability estimate of the current subnode is obtained by a probability estimation network based on the geometric information of the scaled point cloud. Optionally, the probability estimation network can be based on other deep learning network models such as SparseCNN and MLP. The specific structure of this probability estimation network is not limited in the embodiments of this application.
[0166] The larger the estimated value of the occupied probability is, the more likely the child node is to be occupied, and the smaller the estimated value of the occupied probability is, the less likely the child node is to be occupied.
[0167] Since the number of occupied subnodes of an occupied subnode in the same node usually lies within a numerical range, during the encoding process, the encoder can integrate the number of occupied subnodes in the encoded subnodes and the estimated occupancy probability of the current subnode to adaptively determine whether the occupancy information of the current subnode can be skipped for encoding. Correspondingly, during the decoding process, the decoder can integrate the number of occupied subnodes in the decoded subnodes and the estimated occupancy probability of the current subnode to adaptively determine whether the occupancy information of the current subnode can be skipped for decoding. If skipping is possible, the decoder predicts the occupancy of the current subnode based on the number of occupied subnodes in the encoded subnodes and the estimated occupancy probability of the current subnode.
[0168] As shown in FIG10 , the encoding process may include the following steps:
[0169] Step 1001: Encode the placeholder information of each child node in the first nk types of child nodes. The child nodes in the point cloud are divided into n types, n≥2, and 1≤k≤n-1.
[0170] For the first nk type child nodes, the encoder will not determine whether the placeholder information of the child node needs to skip encoding, but directly entropy encodes the placeholder information of each child node to obtain the code stream of the placeholder information of each type of child node.
[0171] Among them, the smaller the value of k is, the more accurate prior information (i.e., actual placeholder information) that the subsequent encoded child nodes can provide, and accordingly, the smaller the loss of lossy coding is, and the smaller the improvement in encoding and decoding efficiency is; the larger the value of k is, the less accurate prior information (i.e., actual placeholder information) that the subsequent encoded child nodes can provide, and accordingly, the greater the loss of lossy coding is, and the greater the improvement in encoding and decoding efficiency.
[0172] Optionally, k can be a fixed value, or k can be dynamically adjusted based on the coding efficiency and coding loss requirements of the actual coding and decoding scenario. For example, when the coding efficiency requirement is high, k can take a larger value, and when the coding loss requirement is high, k can take a smaller value. The embodiments of this application do not limit the specific value of k.
[0173] Schematically, as shown in FIG11 , when the child nodes are divided into 8 categories and the value of k is 4, for the first to fourth categories of child nodes, the encoder performs entropy coding on the actual placeholder information of each child node. For example, for the first category of child nodes, the encoder performs entropy coding on the actual placeholder information 011; for the second category of child nodes, the encoder performs entropy coding on the actual placeholder information 010; for the third category of child nodes, the encoder performs entropy coding on the actual placeholder information 011; and for the fourth category of child nodes, the encoder performs entropy coding on the actual placeholder information 100.
[0174] Step 1002: For the current child node in the i-th type of child nodes, obtain the number of occupied child nodes in the encoded child nodes and the estimated occupancy probability of the current child node. The i-th type of child node belongs to the last k types of child nodes.
[0175] For the last k types of child nodes in the n types of child nodes, the encoder will determine the number of occupied child nodes in the node and the occupancy probability value of the current child node based on the occupancy of the encoded child nodes, and then determine whether the current child node needs to be encoded.
[0176] The occupancy status of the encoded sub-nodes is the occupancy status of the first to i-1th type sub-nodes in the same node, and the occupancy status may include actual occupancy information of the sub-nodes, and may also include predicted occupancy information of the sub-nodes.
[0177] Combined with the example of Figure 11, before encoding the fifth type of sub-nodes, the encoder obtains that the number of occupied sub-nodes of the occupied sub-node in the first node is 1, the number of occupied sub-nodes of the occupied sub-node in the second node is 3, and the number of occupied sub-nodes of the occupied sub-node in the second node is 2.
[0178] In one possible implementation, the encoder sets a series of conditions that can be used to infer the occupancy status of the current child node based on the number of occupied child nodes and the estimated occupancy probability. Before encoding the i-th child node, the encoder determines whether the estimated occupancy probability of the current child node and the number of occupied child nodes in the node meet the conditions. If so, the occupancy information of the current child node does not need to be encoded. If not, the occupancy information of the current child node needs to be encoded. Steps 1003 and 1004 below are the two conditions for inferring the occupancy status of the current child node.
[0179] Step 1003: When the estimated occupancy probability is greater than the first threshold and the number of occupied child nodes is less than the second threshold, it is determined that the occupancy information of the current child node does not need to be encoded.
[0180] When the estimated occupancy probability of the current child node is greater than the first threshold and the number of occupied child nodes is less than the second threshold, it indicates that there are fewer occupied child nodes in the current node and the probability of the current child node being occupied is high. At this time, the encoder can infer that the occupancy status of the current child node is occupied, and there is no need to encode the actual occupancy information of the current child node (the occupancy status inferred based on this condition has a high probability of matching the actual occupancy information).
[0181] Combined with the example of Figure 11, before encoding the eighth type of sub-node, if the estimated occupancy probability of the eighth type of sub-node in the first node is 0.99> the first threshold 0.95, and the number of occupied sub-nodes 1< the second threshold 2, the encoder determines that the occupancy information of the eighth type of sub-node in the first node does not need to be encoded, and determines that the occupancy status of the sub-node is occupied.
[0182] Step 1004 : When the estimated occupancy probability is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, it is determined that the occupancy information of the current child node does not need to be encoded.
[0183] When the estimated occupancy probability of the current child node is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, it indicates that there are already many occupied child nodes in the current node and the probability of the current child node being occupied is low. At this time, the encoder can infer that the occupancy status of the current child node is unoccupied, and there is no need to encode the actual occupancy information of the current child node (the occupancy status inferred based on this condition has a high probability of matching the actual occupancy information).
[0184] The first threshold is greater than the third threshold, and the second threshold is less than the fourth threshold.
[0185] Combined with the example of Figure 11, before encoding the eighth type of sub-node, if the estimated occupancy probability of the eighth type of sub-node in the second node is 0.12 < the third threshold value 0.60, and the number of occupied sub-nodes 6 > the fourth threshold value 5, the encoder determines that the occupancy information of the eighth type of sub-node in the second node does not need to be encoded, and determines that the occupancy status of the sub-node is unoccupied.
[0186] Except for the child nodes that meet the above two conditions, the occupancy information does not need to be encoded. If the current child node does not meet the above conditions (that is, the estimated occupancy probability value is not greater than the first threshold, and the number of occupied child nodes is less than the second threshold, and the estimated occupancy probability value is not less than the third threshold, and the number of occupied child nodes is greater than the fourth threshold), since the occupancy situation predicted based on the estimated occupancy probability value and the number of occupied child nodes of the child node may have a low match with the actual occupancy information, in order to avoid excessive loss in lossy coding, the encoder needs to encode the actual occupancy information of the current child node.
[0187] In some embodiments, when the estimated occupancy probability of the current sub-node is greater than a first threshold and the number of occupied sub-nodes is greater than a second threshold, it is determined that the occupancy information of the current sub-node needs to be encoded.
[0188] Combined with the example of Figure 11, before encoding the seventh type of sub-node, if the estimated occupancy probability of the seventh type of sub-node in the second node is 0.97> the first threshold 0.95, and the number of occupied sub-nodes 5> the second threshold 2, the encoder determines that the occupancy information of the seventh type of sub-node in the second node needs to be encoded.
[0189] In some embodiments, when the estimated occupancy probability of the current subnode is less than a third threshold and the number of occupied subnodes is less than a fourth threshold, it is determined that the occupancy information of the current subnode needs to be encoded.
[0190] Combined with the example of Figure 11, before encoding the fifth type of sub-node, if the estimated occupancy probability of the fifth type of sub-node in the third node is 0.55 < the third threshold 0.60, and the number of occupied sub-nodes 2 < the fourth threshold 5, the encoder determines that the occupancy information of the fifth type of sub-node in the third node needs to be encoded.
[0191] In some embodiments, when the estimated occupancy probability of the current sub-node is less than a first threshold and greater than a third threshold, the encoder determines that the occupancy information of the current sub-node needs to be encoded.
[0192] In summary, the placeholder information of the current child node does not need to be encoded and must meet the following requirements:
[0193] prob≥Th1, and occuChildNum≤Th2
[0194] prob≤Th3, and occuChildNum≥Th4
[0195] Wherein, prob is the estimated value of the occupied probability of the current child node, occuChildNum is the number of occupied child nodes in the node to which the current child node belongs, Th1 is the first threshold, Th2 is the second threshold, Th3 is the third threshold, and Th4 is the fourth threshold, and the first threshold is greater than the third threshold, and the second threshold is less than the fourth threshold.
[0196] It should be noted that the values of the first, second, third and fourth thresholds are only used for illustrative purposes and can be set according to coding efficiency requirements and encoding and decoding loss requirements. The embodiments of the present application do not limit the specific values of the thresholds.
[0197] Step 1005: Encode the placeholder information of the child nodes that need to be encoded in the i-th type of child nodes.
[0198] Combined with the example of Figure 11, for the fifth to seventh categories of sub-nodes, the encoder encodes the placeholder information of the fifth to seventh categories of sub-nodes in the first node, the second node and the third node; for the eighth category of sub-nodes, the encoder only needs to encode the placeholder information of the eighth category of sub-nodes in the third node.
[0199] Regarding the method for updating the number of occupied subnodes in the encoded subnodes in the above embodiment, for a subnode whose occupancy information does not need to be encoded, the encoder can update the number of occupied subnodes of the occupied subnodes in the node to which the subnode belongs based on the predicted occupancy information of the subnode.
[0200] In some embodiments, when the estimated occupancy probability of the current child node is greater than a first threshold and the number of occupied child nodes is less than a second threshold, the encoder adds one to the number of occupied child nodes of the node to which the current child node belongs.
[0201] Combined with the example of Figure 12, when the occupancy information of the fifth type of sub-node in the first node does not need to be encoded, since the encoder infers that the occupancy status of the fifth type of sub-node is occupied, the number of occupied sub-nodes of the occupied sub-node in the first node is updated from 1 to 2.
[0202] In other embodiments, when the estimated occupancy probability of the current child node is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, the encoder maintains the number of occupied child nodes of the node to which the current child node belongs.
[0203] Combined with the example of Figure 12, when the occupancy information of the seventh type of sub-node in the second node does not need to be encoded, since the encoder infers that the occupancy status of the seventh type of sub-node is unoccupied, the number of occupied sub-nodes in the second node remains at 6.
[0204] For a child node whose placeholder information needs to be encoded, the encoder may update the number of occupied child nodes of the node to which the child node belongs based on the actual placeholder information of the child node.
[0205] In some embodiments, when the placeholder information of the current child node needs to be encoded and the placeholder information indicates occupied, the encoder adds one to the number of occupied child nodes of the node to which the current child node belongs.
[0206] When the placeholder information of the current child node needs to be encoded and the placeholder information indicates that the placeholder is unoccupied, the encoder maintains the number of occupied child nodes of the node to which the current child node belongs.
[0207] With reference to the example of FIG12 , when the placeholder information of the fifth type of child node in the third node needs to be encoded, the encoder updates the number of occupied child nodes of the occupied child node in the third node from 2 to 3 based on the actual placeholder information of the fifth type of child node being 1. When the placeholder information of the sixth type of child node in the third node needs to be encoded, since the actual placeholder information of the sixth type of child node is 0, the encoder maintains the number of occupied child nodes of the occupied child node in the third node at 3.
[0208] In this embodiment, the encoder can infer the occupancy conditions of the current child node by setting a series of conditions based on the number of occupied child nodes and the estimated occupancy probability, and apply a coding skip scheme to the last k types of child nodes, thereby skipping the encoding of the occupancy information of the child nodes that meet the conditions. While ensuring the accuracy of geometric coding, it helps to further reduce the length of the code stream and improve the efficiency of geometric coding.
[0209] Corresponding to the encoding process shown in FIG10 , as shown in FIG13 , the decoding process may include the following steps:
[0210] Step 1301: Decode the placeholder information of each sub-node in the first nk sub-nodes from the code stream. The sub-nodes in the point cloud are divided into n categories, where n≥2 and 1≤k≤n-1.
[0211] For the first nk type child nodes, the decoder will not determine whether the placeholder information of the child nodes needs to skip decoding, but directly perform entropy decoding on the bitstreams corresponding to each type of child nodes to obtain the placeholder information of each type of child nodes.
[0212] In some embodiments, the encoder and decoder need to agree in advance on the value of k. The value of k can be agreed upon through a protocol, or can be interactively negotiated before transmitting the bitstream, or can be indicated by the encoding end. This embodiment of the present application does not limit this.
[0213] Schematically, as shown in FIG11 , when the value of k is 4, for the first type of sub-node, the decoder performs entropy decoding on the code stream, and obtains the placeholder information of the first type of sub-node in the first to third nodes as 011 respectively (indicating that the first type of sub-node in the first node is not occupied, and the first type of sub-node in the second and third nodes is occupied); for the second type of sub-node, the decoder performs entropy decoding on the code stream, and obtains the placeholder information of the second type of sub-node in the first to third nodes as 010 respectively; for the third type of sub-node, the decoder performs entropy decoding on the code stream, and obtains the placeholder information of the third type of sub-node in the first to third nodes as 011 respectively; for the fourth type of sub-node, the decoder performs entropy decoding on the code stream, and obtains the placeholder information of the fourth type of sub-node in the first to third nodes as 100 respectively.
[0214] Step 1302 : For the current child node in the i-th type of child nodes, obtain the number of occupied child nodes in the decoded child nodes and the estimated occupancy probability of the current child node. The i-th type of child node belongs to the last k types of child nodes.
[0215] For the last k types of child nodes in the n types of child nodes, the decoder will determine the number of occupied child nodes in the node and the estimated occupancy probability of the current child node based on the occupancy of the decoded child nodes, and then determine whether the current child node is encoded.
[0216] Among them, the occupancy of the decoded child nodes is the occupancy of the first to i-1th type child nodes in the same node. The occupancy may include the actual occupancy information of the child nodes decoded from the bitstream, and may also include the occupancy of the child nodes predicted by the decoder.
[0217] For example, when the value of k is 4, when placeholder decoding is performed on the fifth category of child nodes, the placeholder status of the decoded child nodes obtained by the decoder is the actual placeholder information of the first to fourth categories of child nodes obtained by decoding; when placeholder decoding is performed on the sixth category of child nodes, the placeholder status of the decoded child nodes obtained by the decoder includes the actual placeholder information of the first to fourth categories of child nodes obtained by decoding, and the placeholder status of the fifth category of child nodes. The placeholder status of the fifth category of child nodes may include the actual placeholder information obtained by decoding or the predicted placeholder status.
[0218] Combined with the example of Figure 11, before encoding the fifth type of child nodes, the decoder obtains that the number of occupied child nodes of the occupied child nodes in the first node is 1, the number of occupied child nodes of the occupied child nodes in the second node is 3, and the number of occupied child nodes of the occupied child nodes in the second node is 2.
[0219] Consistent with the encoder, the decoder sets a series of conditions that can infer the occupancy of the current child node based on the number of occupied child nodes and the estimated occupancy probability. Before decoding the i-th type child node, the decoder determines whether the estimated occupancy probability of the current child node and the number of occupied child nodes of the currently occupied child nodes in the node meet the conditions. If so, it is determined that the occupancy information of the current child node does not need to be decoded. Accordingly, the decoder does not need to decode the occupancy information of the current child node from the bitstream, but infers the occupancy of the current child node based on the number of occupied child nodes and the estimated occupancy probability. If not, it is determined that the occupancy information of the current child node needs to be decoded, and the occupancy information of the current child node needs to be decoded from the bitstream. The following steps 1303 and 1304 are the two conditions for inferring the occupancy of the current child node.
[0220] Step 1303: When the estimated value of the occupied probability is greater than the first threshold and the number of occupied child nodes is less than the second threshold, the occupancy information of the current child node is occupied.
[0221] When the estimated occupancy probability of the current child node is greater than the first threshold and the number of occupied child nodes is less than the second threshold, it indicates that there are fewer occupied child nodes in the current node and the probability of the current child node being occupied is high. At this time, the decoder can infer that the occupancy status of the current child node is occupied, that is, the occupancy information of the current child node is 1.
[0222] Combined with the example of Figure 11, before decoding the eighth type of sub-node, if the estimated occupancy probability of the eighth type of sub-node in the first node is 0.99> the first threshold 0.95, and the number of occupied sub-nodes 1< the second threshold 2, the decoder determines that the occupancy status of the eighth type of sub-node in the first node is occupied.
[0223] Step 1304 : When the estimated value of the occupied probability is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, determine the occupancy information of the current child node as unoccupied.
[0224] When the estimated occupancy probability of the current child node is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, it indicates that there are already many occupied child nodes in the current node and the probability of the current child node being occupied is low. At this time, the decoder can infer that the occupancy status of the current child node is unoccupied, that is, the occupancy information of the current child node is 0.
[0225] The first threshold is greater than the third threshold, and the second threshold is less than the fourth threshold.
[0226] Combined with the example of Figure 11, before decoding the eighth type of sub-node, if the estimated occupancy probability of the eighth type of sub-node in the second node is 0.12 < the third threshold 0.60, and the number of occupied sub-nodes 6 > the fourth threshold 5, the encoder determines that the occupancy status of the eighth type of sub-node in the second node is unoccupied.
[0227] In addition to the placeholder information of child nodes that meet the above two conditions, which does not need to be decoded, if the current child node does not meet the above conditions (does not meet the conditions that the estimated occupancy probability is greater than the first threshold and the number of occupied child nodes is less than the second threshold, and does not meet the conditions that the estimated occupancy probability is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold), since the encoder encodes the placeholder information of such child nodes, the decoder needs to decode the actual placeholder information of such child nodes from the bitstream.
[0228] In some embodiments, when the estimated occupancy probability of the current subnode is greater than a first threshold and the number of occupied subnodes is greater than a second threshold, the decoder decodes the occupancy information of the current subnode from the bitstream.
[0229] With reference to the example of FIG11 , before performing placeholder decoding on the seventh type of sub-node, if the estimated occupied probability value of the seventh type of sub-node in the second node is 0.97> the first threshold value 0.95, and the number of occupied sub-nodes 5> the second threshold value 2, the decoder determines that the placeholder information of the seventh type of sub-node in the second node is encoded into the bitstream, and accordingly, the placeholder information of the seventh type of sub-node in the second node needs to be decoded.
[0230] In some embodiments, when the estimated occupancy probability of the current subnode is less than a third threshold and the number of occupied subnodes is less than a fourth threshold, the decoder decodes the occupancy information of the current subnode from the bitstream.
[0231] With reference to the example of FIG11 , before encoding the fifth type of sub-node, if the estimated occupied probability value of the fifth type of sub-node in the third node is 0.55 < the third threshold value 0.60, and the number of occupied sub-nodes 2 < the fourth threshold value 5, the decoder determines that the placeholder information of the fifth type of sub-node in the third node is encoded into the bitstream, and accordingly, the placeholder information of the fifth type of sub-node in the third node needs to be decoded.
[0232] In some embodiments, when the estimated occupancy probability of the current sub-node is less than a first threshold and greater than a third threshold, the decoder decodes the occupancy information of the current sub-node from the bitstream.
[0233] In summary, decoding the placeholder information of the current child node from the bitstream requires the following:
[0234] prob≥Th1, and occuChildNum≤Th2
[0235] prob≤Th3, and occuChildNum≥Th4
[0236] Wherein, prob is the estimated value of the occupied probability of the current child node, occuChildNum is the number of occupied child nodes in the node to which the current child node belongs, Th1 is the first threshold, Th2 is the second threshold, Th3 is the third threshold, and Th4 is the fourth threshold, and the first threshold is greater than the third threshold, and the second threshold is less than the fourth threshold.
[0237] It should be noted that the values of the first, second, third and fourth thresholds are only used for illustrative purposes and can be set according to coding efficiency requirements and encoding and decoding loss requirements. The embodiments of the present application do not limit the specific values of the thresholds.
[0238] With reference to the example in FIG11 , for the fifth to seventh categories of sub-nodes, the decoder decodes the actual placeholder information of the fifth to seventh categories of sub-nodes in the first, second, and third nodes from the bitstream; for the eighth category of sub-nodes, the decoder only needs to decode the actual placeholder information of the eighth category of sub-nodes in the third node from the bitstream, and the placeholder information of the eighth category of sub-nodes in the first and second nodes can be directly inferred.
[0239] Regarding the method for updating the number of occupied subnodes of an occupied subnode in a node in the above embodiment, for a subnode whose occupancy information is not encoded, the decoder can update the number of occupied subnodes of the occupied subnodes in the node to which the subnode belongs based on the predicted occupancy information of the subnode.
[0240] In some embodiments, when the estimated occupancy probability of the current child node is greater than a first threshold and the number of occupied child nodes is less than a second threshold, the decoder adds one to the number of occupied child nodes of the node to which the current child node belongs.
[0241] Combined with the example of Figure 12, when the occupancy information of the fifth type of sub-node in the first node is not encoded, since the decoder infers that the occupancy status of the fifth type of sub-node is occupied, the number of occupied sub-nodes of the occupied sub-node in the first node is updated from 1 to 2.
[0242] In other embodiments, when the estimated occupancy probability of the current child node is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, the decoder maintains the number of occupied child nodes of the node to which the current child node belongs.
[0243] Combined with the example of Figure 12, when the occupancy information of the seventh type of sub-node in the second node is not encoded, since the decoder infers that the occupancy status of the seventh type of sub-node is unoccupied, the number of occupied sub-nodes in the second node remains at 6.
[0244] For a child node whose placeholder information is encoded into the codestream, the decoder may update the number of occupied child nodes of the node to which the child node belongs based on the actual placeholder information of the child node.
[0245] In some embodiments, when the placeholder information of the current child node is encoded and the placeholder information indicates that the child node is occupied, the decoder adds one to the number of occupied child nodes of the node to which the current child node belongs.
[0246] When the placeholder information of the current child node is encoded and the placeholder information indicates that the node is not occupied, the decoder maintains the number of occupied child nodes of the node to which the current child node belongs.
[0247] 12 , when the placeholder information of the fifth type of child node in the third node is encoded, the decoder updates the number of occupied child nodes of the occupied child node in the third node from 2 to 3 based on the actual placeholder information of the fifth type of child node being 1. When the placeholder information of the sixth type of child node in the third node is encoded, since the actual placeholder information of the sixth type of child node is 0, the decoder maintains the number of occupied child nodes of the occupied child node in the third node as 3.
[0248] In this embodiment, the decoder can infer the occupancy conditions of the current child node by setting a series of conditions based on the number of occupied child nodes and the estimated occupancy probability, and apply a decoding skip scheme to the last k types of child nodes, thereby skipping the decoding of the occupancy information of the child nodes that meet the conditions. This helps to improve the efficiency of geometric decoding while ensuring the accuracy of geometric decoding.
[0249] In addition to determining whether the occupancy information of the current child node needs to be encoded or decoded based on both the number of occupied child nodes and the estimated occupancy probability, in other possible implementations, it is also possible to determine whether the occupancy information of the current child node needs to be encoded or decoded based on only one of the number of occupied child nodes or the estimated occupancy probability.
[0250] In one possible embodiment, when determining whether the placeholder information of the current child node needs to be encoded based only on the number of occupied child nodes, when the number of occupied child nodes is less than the fifth threshold, the encoder determines that the placeholder information of the current child node needs to be encoded; when the number of occupied child nodes is greater than the sixth threshold, the encoder determines that the placeholder information of the current child node does not need to be encoded, and the fifth threshold is less than the sixth threshold.
[0251] Since the number of occupied child nodes in the same node is usually within a numerical range, during the encoding process, if the number of occupied child nodes is greater than the sixth threshold (a larger value), it indicates that there are a large number of occupied child nodes in the node. Therefore, the encoder determines that the occupancy information of the current child node is unoccupied, and the placeholder information of the current child node does not need to be encoded.
[0252] In an illustrative example, if the number of occupied child nodes of the node to which the current child node belongs is 5 and greater than a sixth threshold of 4, the encoder determines that the placeholder information of the current child node does not need to be encoded.
[0253] The number of occupied child nodes is less than the fifth threshold (a smaller value), indicating that the child nodes in the node that have not yet been encoded may still be occupied, but since there are fewer occupied child nodes, no effective prior information can be provided. Therefore, the encoder determines that the occupancy information of the current child node needs to be encoded.
[0254] In an illustrative example, if the number of occupied child nodes of the node to which the current child node belongs is 1<fifth threshold 2, the encoder determines that the placeholder information of the current child node needs to be encoded.
[0255] Optionally, when the number of occupied child nodes is less than a fifth threshold, the encoder updates the number of occupied child nodes based on the occupancy information of the current child node, so as to determine whether subsequent child nodes can skip encoding based on the updated number of occupied child nodes. When the occupancy information of the current child node indicates that the node is occupied, the encoder increments the number of occupied child nodes by one; when the occupancy information of the current child node indicates that the node is unoccupied, the encoder maintains the number of occupied child nodes.
[0256] Similar to the encoding process, during the decoding process, when the number of occupied child nodes is less than the fifth threshold, the decoder decodes the placeholder information of the current child node from the bitstream; when the number of occupied child nodes is greater than the sixth threshold, the decoder determines that the placeholder information of the current child node is unoccupied.
[0257] Regarding the updating process of the number of occupied child nodes during the decoding process, in some embodiments, when the number of occupied child nodes is less than the fifth threshold, the decoder updates the number of occupied child nodes based on the occupancy information of the current child node obtained by decoding; when the number of occupied child nodes is greater than the sixth threshold, the decoder determines that the occupancy information of the current child node is unoccupied, and maintains the number of occupied child nodes.
[0258] In another possible embodiment, when determining whether the occupancy information of the current child node needs to be encoded based only on the estimated occupancy probability value, when the estimated occupancy probability value is greater than a seventh threshold, or when the estimated occupancy probability value is less than an eighth threshold, it is determined that the occupancy information of the current child node does not need to be encoded, and the seventh threshold is greater than the eighth threshold; when the estimated occupancy probability value is greater than the eighth threshold and less than the seventh threshold, it is determined that the occupancy information of the current child node needs to be encoded.
[0259] In some embodiments, when the estimated value of the occupancy probability is greater than the seventh threshold (a larger value), it indicates that the probability of the existence of a point cloud in the current child node is high, and the encoder determines that the occupancy information of the current child node is occupied, and determines that the current child node does not need to be encoded; when the estimated value of the occupancy probability is less than the eighth threshold (a smaller value), it indicates that the probability of the existence of a point cloud in the current child node is low, the encoder determines that the occupancy information of the current child node is unoccupied, and determines that the current child node does not need to be encoded.
[0260] When the estimated occupancy probability value is between the eighth threshold and the seventh threshold, the accuracy of the occupancy information determined directly based on the estimated occupancy probability value is low, so the encoder determines that the current child node needs to be encoded.
[0261] Optionally, when the occupancy information of the current child node does not need to be encoded, the predicted occupancy information of the current child node will be used to subsequently determine the estimated occupancy probabilities of other child nodes.
[0262] In an illustrative example, if the estimated occupancy probability of the current child node is greater than 0.96, or less than 0.1, the encoder determines that the occupancy information of the current child node does not need to be encoded; if the estimated occupancy probability of the current child node is between 0.1 and 0.96, the encoder determines that the occupancy information of the current child node needs to be encoded.
[0263] Similar to the encoding process, during the decoding process, when the estimated occupancy probability value is greater than the seventh threshold, or when the estimated occupancy probability value is less than the eighth threshold, the decoder determines that the occupancy information of the current child node does not need to be decoded, and the seventh threshold is greater than the eighth threshold; when the estimated occupancy probability value is greater than the eighth threshold and less than the seventh threshold, the decoder decodes the placeholder information of the current child node from the bitstream (i.e., the placeholder information of the current child node needs to be decoded).
[0264] Among them, when the estimated value of the occupancy probability is greater than the seventh threshold, the decoder determines that the occupancy information of the current child node is occupied; when the estimated value of the occupancy probability is less than the eighth threshold, the decoder determines that the occupancy information of the current child node is not occupied.
[0265] It should be noted that the above thresholds are only used for illustrative purposes and do not constitute a limitation on the threshold values.
[0266] In addition to applying the encoding and decoding skipping scheme to a specified type of child node, the encoder may apply the encoding skipping scheme to all types of child nodes, and correspondingly, the decoder may apply the decoding skipping scheme to all types of child nodes.
[0267] In one possible implementation, for any one of the n types of child nodes, the encoder determines whether the occupancy information of the current child node needs to be encoded based on the occupancy status of the encoded child nodes and the estimated occupancy probability of the current child node.
[0268] As shown in FIG14 , the encoding process may include the following steps:
[0269] Step 1401: For the current child node in the i-th type of child nodes, obtain the number of occupied child nodes in the encoded child nodes and the estimated occupancy probability of the current child node. The child nodes in the point cloud are divided into n categories, n≥2, and i≤n.
[0270] The i-th type of child node is any type of the n types of child nodes. For example, when the nodes are divided into 8 types, the i-th type of child node can be the first to eighth types of child nodes.
[0271] In some embodiments, before performing placeholder encoding on the i-th type of child node, the encoder obtains the placeholder information of the 1st to i-1th type of child nodes, and based on the placeholder information, determines the number of occupied child nodes in the node and an estimated occupancy probability of the current child node. The placeholder information may include actual placeholder information of the child node and predicted placeholder information of the child node.
[0272] It should be noted that, for the first type of child nodes, since there are no encoded child nodes, the acquired number of occupied child nodes is an initial value of 0.
[0273] Step 1402: When the estimated occupancy probability is greater than a first threshold and the number of occupied child nodes is less than a second threshold, it is determined that the occupancy information of the current child node does not need to be encoded.
[0274] Similar to step 1003 in the above embodiment, when the estimated occupancy probability of the current child node and the number of occupied child nodes indicate that there are fewer occupied child nodes in the current node and the probability that the current child node is occupied is high, the encoder determines that there is no need to encode the actual occupancy information of the current child node.
[0275] Step 1403: When the estimated occupancy probability is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, it is determined that the occupancy information of the current child node does not need to be encoded.
[0276] Similar to step 1004 in the above embodiment, when the estimated occupancy probability of the current child node and the number of occupied child nodes indicate that there are already many occupied child nodes in the current node and the probability of the current child node being occupied is low, the encoder determines that there is no need to encode the actual occupancy information of the current child node.
[0277] Except that the placeholder information of the child nodes that meet the above two conditions does not need to be encoded, if the current child node does not meet the above conditions, the encoder determines that the placeholder information of the current child node needs to be encoded.
[0278] Step 1404: Encode the placeholder information of the child nodes that need to be encoded in the i-th type of child nodes.
[0279] Regarding the method for updating the number of occupied child nodes of an occupied child node in a node, for a child node whose occupancy information does not need to be encoded, the encoder can update the number of occupied child nodes of the occupied child node in the node to which the child node belongs based on the predicted occupancy information of the child node.
[0280] In some embodiments, when the estimated occupancy probability of the current child node is greater than a first threshold and the number of occupied child nodes is less than a second threshold, the encoder adds one to the number of occupied child nodes of the node to which the current child node belongs.
[0281] In other embodiments, when the estimated occupancy probability of the current child node is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, the encoder maintains the number of occupied child nodes of the node to which the current child node belongs.
[0282] For a child node whose placeholder information needs to be encoded, the encoder may update the number of occupied child nodes of the node to which the child node belongs based on the actual placeholder information of the child node.
[0283] In some embodiments, when the placeholder information of the current child node needs to be encoded and the placeholder information indicates that the node is occupied, the encoder adds one to the number of occupied child nodes of the node to which the current child node belongs.
[0284] When the placeholder information of the current child node needs to be encoded and the placeholder information indicates that the node is not occupied, the encoder maintains the number of occupied child nodes in the node to which the current child node belongs.
[0285] In an illustrative example, the encoding process is shown in Figure 15. The encoder first partitions the node using an octree to obtain 8 child nodes, and then divides the 8 child nodes into 8 categories. When performing placeholder encoding on the first category of child nodes, the encoder performs probability estimation based on the geometric information of the first category of child nodes (G1 in the figure) to obtain an estimated occupancy probability value for each first category of child nodes. Based on this estimated occupancy probability value, the encoder determines which first category of child nodes in the node to skip encoding, and performs entropy encoding on the placeholder information of the first category of child nodes to be encoded, thereby obtaining a bitstream of the placeholder information of the first category of child nodes.
[0286] When performing placeholder coding on the second-category child nodes, the encoder performs probability estimation based on the geometric information of the second-category child nodes (G2 in the figure) and the geometric information of the occupied child nodes in the first-category child nodes (G1 in the figure), and obtains the estimated occupancy probability value of each second-category child node. Based on the occupied probability estimate and the number of occupied child nodes in the encoded child nodes (i.e., the number of occupied first-category child nodes in the node), it determines which second-category child nodes in the nodes need to skip coding, and performs entropy coding on the placeholder information of the second-category child nodes that need to be encoded, to obtain the code stream of the placeholder information of the second-category child nodes.
[0287] When performing placeholder coding on the third-category child nodes, the encoder performs probability estimation based on the geometric information of the third-category child nodes (G3 in the figure) and the geometric information of the occupied child nodes in the first-category child nodes and the second-category child nodes (G1+G2 in the figure), and obtains the estimated occupancy probability value of each third-category child node. Based on the occupied probability estimate and the number of occupied child nodes in the encoded child nodes (i.e., the total number of occupied first-category child nodes and second-category child nodes in the node), it determines which third-category child nodes in the nodes need to skip coding, and performs entropy coding on the placeholder information of the third-category child nodes that need to be encoded to obtain the code stream of the placeholder information of the third-category child nodes.
[0288] When performing placeholder coding on the fourth type of child nodes, the encoder performs probability estimation based on the geometric information of the fourth type of child nodes (G4 in the figure) and the geometric information of the occupied child nodes in the first to third types of child nodes (G1+G2+G3 in the figure), and obtains the estimated occupancy probability of each fourth type of child node. Based on the occupied probability estimate and the number of occupied child nodes in the encoded child nodes (that is, the total number of occupied child nodes of the first to third types in the node), it determines which fourth type of child nodes in the nodes need to skip coding, and performs entropy coding on the placeholder information of the fourth type of child nodes that need to be encoded to obtain the code stream of the placeholder information of the fourth type of child nodes.
[0289] Similarly, the encoder completes the placeholder encoding of 8 types of child nodes.
[0290] In this embodiment, the encoder can infer the occupancy conditions of the current child node by setting a series of conditions based on the number of occupied child nodes and the estimated occupancy probability, and apply a coding skip scheme to each type of child node, thereby skipping the encoding of the occupancy information of the child nodes that meet the conditions, further reducing the occupancy information required to be encoded for each type of child node, reducing the length of the code stream, and improving the geometric coding efficiency.
[0291] As shown in FIG16 , the decoding process corresponding to the encoding process shown in FIG14 may include the following steps:
[0292] Step 1601: For the current child node in the i-th type of child nodes, obtain the number of occupied child nodes in the decoded child nodes and the estimated occupancy probability of the current child node. The child nodes in the point cloud are divided into n types, n≥2, and i≤n.
[0293] The i-th type of child node is any type of the n types of child nodes. For example, when the nodes are divided into 8 types, the i-th type of child node can be the first to eighth types of child nodes.
[0294] In some embodiments, before performing placeholder decoding on the i-th type of child node, the decoder obtains the placeholder information of the 1st to i-1th type of child nodes and, based on the placeholder information, determines the number of occupied child nodes in the node and an estimated occupancy probability of the current child node. The placeholder information may include actual placeholder information of the child node and predicted placeholder information of the child node.
[0295] It should be noted that, for the first type of child nodes, since there are no decoded child nodes, the acquired number of occupied child nodes is an initial value of 0.
[0296] Step 1602: When the estimated value of the occupied probability is greater than a first threshold and the number of occupied child nodes is less than a second threshold, determine that the occupancy information of the current child node is occupied.
[0297] Similar to step 1303 in the above embodiment, when the estimated occupancy probability of the current child node and the number of occupied child nodes indicate that there are fewer occupied child nodes in the current node and the probability that the current child node is occupied is high, the decoder determines that the occupancy information of the current child node is not encoded into the bitstream (thus, no decoding is required), and infers that the current child node is occupied, thereby determining the occupancy information of the current child node to be 1.
[0298] Step 1603: When the estimated value of the occupied probability is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, determine the occupancy information of the current child node as unoccupied.
[0299] Similar to step 1303 in the above embodiment, when the estimated occupancy probability of the current child node and the number of occupied child nodes indicate that there are relatively many occupied child nodes in the current node and the probability of the current child node being occupied is low, the decoder determines that the occupancy information of the current child node is not encoded into the bitstream (thus, no decoding is required), and infers that the current child node is not occupied, thereby determining the occupancy information of the current child node to be 0.
[0300] Except for the child nodes that meet the above two conditions, the placeholder information of the child node is not encoded. If the current child node does not meet the above conditions, the decoder determines that the placeholder information of the current child node is encoded and needs to decode the placeholder information of the current child node from the bitstream.
[0301] Regarding the updating method of the number of occupied child nodes, for a child node whose occupancy information is not encoded, the decoder may update the number of occupied child nodes of the node to which the child node belongs based on the predicted occupancy information of the child node.
[0302] In some embodiments, when the estimated occupancy probability of the current child node is greater than a first threshold and the number of occupied child nodes is less than a second threshold, the decoder adds one to the number of occupied child nodes of the node to which the current child node belongs.
[0303] In other embodiments, when the estimated occupancy probability of the current child node is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, the decoder maintains the number of occupied child nodes of the node to which the current child node belongs.
[0304] For a child node that needs to be decoded, the decoder may update the number of occupied child nodes of the node to which the child node belongs based on actual occupancy information of the child node (obtained by decoding the code stream).
[0305] In some embodiments, when the placeholder information of the current child node needs to be decoded and the decoded placeholder information indicates that the node is occupied, the decoder adds one to the number of occupied child nodes of the node to which the current child node belongs.
[0306] When the placeholder information of the current child node needs to be decoded, and the decoded placeholder information indicates that the node is not occupied, the decoder maintains the number of occupied child nodes in the node to which the current child node belongs.
[0307] In an illustrative example, the decoding process is shown in Figure 17. The decoder first divides the node into 8 child nodes using an octree, and then divides the 8 child nodes into 8 categories. When performing placeholder decoding on the first-category child nodes, the decoder performs probability estimation based on the geometric information of the first-category child nodes (G1 in the figure) to obtain an estimated occupancy probability value for each first-category child node. Based on the estimated occupancy probability value, the decoder determines which first-category child nodes in the node can be skipped for decoding (the placeholder information of the first-category child nodes to be skipped needs to be determined by a method other than entropy decoding). The decoder then uses the estimated occupancy probability value to perform entropy decoding on the placeholder information of the first-category child nodes to be decoded, and obtain the placeholder information of each first-category child node.
[0308] When performing placeholder decoding on the second-category subnodes, the decoder performs probability estimation based on the geometric information of the second-category subnodes (G2 in the figure) and the geometric information of the occupied subnodes in the first-category subnodes (G1 in the figure), and obtains the estimated occupancy probability of each second-category subnode. Based on the estimated occupancy probability and the number of occupied subnodes in the decoded subnodes (i.e., the number of occupied first-category subnodes in the node), it determines which second-category subnodes in the nodes can skip decoding (the placeholder information of the second-category subnodes to be skipped decoding needs to be determined by means other than entropy decoding), and uses the estimated occupancy probability to perform entropy decoding on the placeholder information of the second-category subnodes that need to be decoded to obtain the placeholder information of each second-category subnode.
[0309] When performing placeholder decoding on the third-category child nodes, the decoder performs probability estimation based on the geometric information of the third-category child nodes (G3 in the figure) and the geometric information of the occupied child nodes in the first-category child nodes and the second-category child nodes (G1+G2 in the figure), and obtains the estimated occupancy probability of each third-category child node. Based on the estimated occupancy probability and the number of occupied child nodes in the decoded child nodes (i.e., the total number of occupied first-category child nodes and second-category child nodes in the node), it determines which third-category child nodes in the nodes can skip decoding (the placeholder information of the third-category child nodes to be skipped needs to be determined by means other than entropy decoding), and uses the estimated occupancy probability to perform entropy decoding on the placeholder information of the third-category child nodes to be decoded to obtain the placeholder information of each third-category child node.
[0310] When performing placeholder decoding on the fourth type of child nodes, the decoder performs probability estimation based on the geometric information of the fourth type of child nodes (G4 in the figure) and the geometric information of the occupied child nodes in the first to third types of child nodes (G1+G2+G3 in the figure), and obtains the estimated occupancy probability of each fourth type of child node. Based on the occupied probability estimate and the number of occupied child nodes in the decoded child nodes (i.e., the total number of occupied child nodes of the first to third types in the node), it determines which fourth type of child nodes in the nodes need to skip encoding (the placeholder information of the fourth type of child nodes to be skipped decoding needs to be determined by means other than entropy decoding), and performs entropy decoding on the placeholder information of the fourth type of child nodes that need to be decoded to obtain the placeholder information of each fourth type of child node.
[0311] Similarly, the decoder completes the placeholder decoding of 8 types of child nodes.
[0312] In this embodiment, the decoder can infer the occupancy conditions of the current child node by setting a series of conditions based on the number of occupied child nodes and the estimated occupancy probability, and apply a decoding skip scheme to each type of child node, thereby skipping the decoding of the occupancy information of the child nodes that meet the conditions. This helps to improve the efficiency of geometric decoding while ensuring the accuracy of geometric decoding.
[0313] It should be noted that the specific implementation of determining whether any type of child node can skip encoding and decoding can refer to the embodiments corresponding to Figures 10 and 13, and this embodiment will not be described in detail here.
[0314] In addition to determining whether the occupancy information of the current child node needs to be encoded or decoded based on both the number of occupied child nodes and the estimated occupancy probability, in other possible implementations, it is also possible to determine whether the occupancy information of the current child node needs to be encoded or decoded based on only one of the number of occupied child nodes or the estimated occupancy probability.
[0315] In one possible embodiment, when determining whether the placeholder information of the current child node needs to be encoded based only on the number of occupied child nodes, when the number of occupied child nodes is less than the fifth threshold, the encoder determines that the placeholder information of the current child node needs to be encoded; when the number of occupied child nodes is greater than the sixth threshold, the encoder determines that the placeholder information of the current child node does not need to be encoded, and the fifth threshold is less than the sixth threshold.
[0316] Since the number of occupied child nodes in the same node is usually within a numerical range, during the encoding process, if the number of occupied child nodes is greater than the sixth threshold (a larger value), it indicates that there are a large number of occupied child nodes in the node. Therefore, the encoder determines that the occupancy information of the current child node is unoccupied, and the placeholder information of the current child node does not need to be encoded.
[0317] In an illustrative example, if the number of occupied child nodes of the node to which the current child node belongs is 5 and greater than a sixth threshold of 4, the encoder determines that the placeholder information of the current child node does not need to be encoded.
[0318] The number of occupied child nodes is less than the fifth threshold (a smaller value), indicating that the child nodes in the node that have not yet been encoded may still be occupied, but since there are fewer occupied child nodes, no effective prior information can be provided. Therefore, the encoder determines that the occupancy information of the current child node needs to be encoded.
[0319] In an illustrative example, if the number of occupied child nodes of the node to which the current child node belongs is 1<fifth threshold 2, the encoder determines that the placeholder information of the current child node needs to be encoded.
[0320] Optionally, when the number of occupied child nodes is less than a fifth threshold, the encoder updates the number of occupied child nodes based on the occupancy information of the current child node, so as to determine whether subsequent child nodes can skip encoding based on the updated number of occupied child nodes. When the occupancy information of the current child node indicates that the node is occupied, the encoder increments the number of occupied child nodes by one; when the occupancy information of the current child node indicates that the node is unoccupied, the encoder maintains the number of occupied child nodes.
[0321] Similar to the encoding process, during the decoding process, when the number of occupied child nodes is less than the fifth threshold, the decoder decodes the placeholder information of the current child node from the bitstream; when the number of occupied child nodes is greater than the sixth threshold, the decoder determines that the placeholder information of the current child node is unoccupied.
[0322] Regarding the updating process of the number of occupied child nodes during the decoding process, in some embodiments, when the number of occupied child nodes is less than the fifth threshold, the decoder updates the number of occupied child nodes based on the occupancy information of the current child node obtained by decoding; when the number of occupied child nodes is greater than the sixth threshold, the decoder determines that the occupancy information of the current child node is unoccupied, and maintains the number of occupied child nodes.
[0323] In another possible embodiment, when determining whether the occupancy information of the current child node needs to be encoded based only on the estimated occupancy probability value, when the estimated occupancy probability value is greater than a seventh threshold, or when the estimated occupancy probability value is less than an eighth threshold, it is determined that the occupancy information of the current child node does not need to be encoded, and the seventh threshold is greater than the eighth threshold; when the estimated occupancy probability value is greater than the eighth threshold and less than the seventh threshold, it is determined that the occupancy information of the current child node needs to be encoded.
[0324] In some embodiments, when the estimated value of the occupancy probability is greater than the seventh threshold (a larger value), it indicates that the probability of the existence of a point cloud in the current child node is high, and the encoder determines that the occupancy information of the current child node is occupied, and determines that the current child node does not need to be encoded; when the estimated value of the occupancy probability is less than the eighth threshold (a smaller value), it indicates that the probability of the existence of a point cloud in the current child node is low, the encoder determines that the occupancy information of the current child node is unoccupied, and determines that the current child node does not need to be encoded.
[0325] When the estimated occupancy probability value is between the eighth threshold and the seventh threshold, the accuracy of the occupancy information determined directly based on the estimated occupancy probability value is low, so the encoder determines that the current child node needs to be encoded.
[0326] Optionally, when the occupancy information of the current child node does not need to be encoded, the predicted occupancy information of the current child node will be used to subsequently determine the estimated occupancy probabilities of other child nodes.
[0327] In an illustrative example, if the estimated occupancy probability of the current child node is greater than 0.96, or less than 0.1, the encoder determines that the occupancy information of the current child node does not need to be encoded; if the estimated occupancy probability of the current child node is between 0.1 and 0.96, the encoder determines that the occupancy information of the current child node needs to be encoded.
[0328] Similar to the encoding process, during the decoding process, when the estimated occupancy probability value is greater than the seventh threshold, or when the estimated occupancy probability value is less than the eighth threshold, the decoder determines that the occupancy information of the current child node does not need to be decoded, and the seventh threshold is greater than the eighth threshold; when the estimated occupancy probability value is greater than the eighth threshold and less than the seventh threshold, the decoder decodes the placeholder information of the current child node from the bitstream (i.e., the placeholder information of the current child node needs to be decoded).
[0329] Among them, when the estimated value of the occupancy probability is greater than the seventh threshold, the decoder determines that the occupancy information of the current child node is occupied; when the estimated value of the occupancy probability is less than the eighth threshold, the decoder determines that the occupancy information of the current child node is not occupied.
[0330] It should be noted that the above thresholds are only used for illustrative purposes and do not constitute a limitation on the threshold values.
[0331] Please refer to Figure 18, which shows a block diagram of an encoder provided by an exemplary embodiment of the present application. The encoder includes:
[0332] The encoding unit 1801 is configured to obtain, for a current child node in an i-th type of child nodes, an occupancy status of encoded child nodes belonging to the same node as the current child node, where a node in a point cloud is divided into a plurality of child nodes, and the child nodes in the point cloud are divided into n types, n ≥ 2, and i ≤ n;
[0333] The encoding unit 1801 is configured to encode the placeholder information of the child nodes that need to be encoded in the i-th type of child nodes based on the placeholder status of the encoded child nodes.
[0334] Optionally, the i-th type of child node is a designated type of child node among the n types of child nodes;
[0335] or,
[0336] The i-th type of child node is any type of child node among the n types of child nodes.
[0337] Optionally, when the i-th type child node is a designated type child node among n types of child nodes, the i-th type child node belongs to the last k types of child nodes among the n types of child nodes, 1≤k≤n-1.
[0338] Optionally, the i-th child node is the n-th child node, and the n-th child node is a single child node;
[0339] The encoding unit 1801 is configured to:
[0340] When the placeholder information of the encoded child nodes is not occupied, determining that the placeholder information of the current child node does not need to be encoded;
[0341] When the placeholder status of at least one of the encoded child nodes is occupied, determining that the placeholder information of the current child node needs to be encoded;
[0342] Encode the placeholder information of the child nodes that need to be encoded in the n-th type of child nodes.
[0343] Optionally, the encoding unit 1801 is configured to:
[0344] Based on the occupancy status of the encoded child nodes, updating the node mask of the node, the node mask being the result of an OR operation of the occupancy status of the encoded child nodes;
[0345] When the node mask is 0, determining that the placeholder information of the current child node does not need to be encoded;
[0346] When the node mask is 1, it is determined that the placeholder information of the current child node needs to be encoded.
[0347] Optionally, the encoding unit 1801 is configured to:
[0348] Encode the placeholder information of each child node in the first n-1 types of child nodes.
[0349] Optionally, the encoding unit 1801 is configured to:
[0350] determining whether occupancy information of the current child node needs to be encoded based on at least one of a number of occupied child nodes among the encoded child nodes and an estimated occupancy probability of the current child node, the number of occupied child nodes and the estimated occupancy probability being determined based on the occupancy of the encoded child node;
[0351] Encode the placeholder information of the child nodes that need to be encoded in the i-th type of child nodes.
[0352] Optionally, the encoding unit 1801 is configured to:
[0353] When the estimated occupancy probability value is greater than a first threshold and the number of occupied child nodes is less than a second threshold, determining that the occupancy information of the current child node does not need to be encoded;
[0354] When the estimated value of the occupancy probability is less than a third threshold and the number of occupied child nodes is greater than a fourth threshold, determining that the occupancy information of the current child node does not need to be encoded;
[0355] If the conditions that the estimated occupancy probability value is greater than the first threshold and the number of occupied child nodes is less than the second threshold are not satisfied, and the conditions that the estimated occupancy probability value is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold are not satisfied, determining that the occupancy information of the current child node needs to be encoded;
[0356] The first threshold is greater than the third threshold, and the second threshold is less than the fourth threshold.
[0357] Optionally, the encoding unit 1801 is configured to:
[0358] When the estimated value of the occupied probability is greater than the first threshold and the number of occupied child nodes is less than the second threshold, adding one to the number of occupied child nodes;
[0359] When the estimated value of the occupied probability is smaller than the third threshold and the number of occupied child nodes is larger than the fourth threshold, the number of occupied child nodes is maintained.
[0360] Optionally, the encoding unit 1801 is configured to:
[0361] If the placeholder information of the current child node needs to be encoded and the placeholder information indicates that the child node is occupied, the number of child nodes is incremented by one;
[0362] When the placeholder information of the current child node needs to be encoded and the placeholder information indicates that the node is not occupied, the number of occupied child nodes is maintained.
[0363] Optionally, the encoding unit 1801 is configured to:
[0364] When the number of occupied child nodes is less than a fifth threshold, determining that the placeholder information of the current child node needs to be encoded;
[0365] When the number of occupied sub-nodes is greater than the sixth threshold, it is determined that the placeholder information of the current sub-node does not need to be encoded, and the fifth threshold is less than the sixth threshold.
[0366] Optionally, the encoding unit 1801 is configured to:
[0367] When the number of occupied child nodes is less than the fifth threshold, updating the number of occupied child nodes based on the occupancy information of the current child node;
[0368] When the number of occupied child nodes is greater than the sixth threshold, the number of occupied child nodes is maintained.
[0369] Optionally, the encoding unit 1801 is configured to:
[0370] When the estimated value of the occupancy probability is greater than a seventh threshold, or when the estimated value of the occupancy probability is less than an eighth threshold, determining that the occupancy information of the current child node does not need to be encoded, and the seventh threshold is greater than the eighth threshold;
[0371] When the estimated occupancy probability value is greater than the eighth threshold and less than the seventh threshold, it is determined that the occupancy information of the current child node needs to be encoded.
[0372] Optionally, when the i-th type child node belongs to the last k types of child nodes among the n types of child nodes, the encoding unit 1801 is configured to:
[0373] Encode the placeholder information of each child node in the first nk types of child nodes, 1≤k≤n-1.
[0374] Optionally, the estimated value of the occupied probability is determined based on geometric information of the occupied sub-nodes in the encoded sub-nodes and geometric information of the i-th type of sub-nodes.
[0375] Optionally, the nodes in the point cloud are divided into a plurality of child nodes through an octree, and different types of child nodes contain the same or different numbers of child nodes.
[0376] It should be noted that the process of implementing point cloud encoding by the above-mentioned encoding unit can refer to the above-mentioned point cloud encoding method embodiment, and this embodiment will not be repeated here.
[0377] Please refer to Figure 19, which shows a block diagram of a decoder provided by an exemplary embodiment of the present application. The decoder includes:
[0378] A decoding unit 1901 is configured to obtain, for a current child node in an i-th type of child nodes, an occupancy status of decoded child nodes belonging to the same node as the current child node, wherein a node in a point cloud is divided into a plurality of child nodes, and the child nodes in the point cloud are divided into n types, n ≥ 2, and i ≤ n;
[0379] The decoding unit 1901 is configured to determine the placeholder information of the current child node based on the placeholder status of the decoded child node.
[0380] Optionally, the i-th type of child node is a designated type of child node among the n types of child nodes;
[0381] or,
[0382] The i-th type of child node is any type of child node among the n types of child nodes.
[0383] Optionally, when the i-th type child node is a designated type child node among n types of child nodes, the i-th type child node belongs to the last k types of child nodes among the n types of child nodes, 1≤k≤n-1.
[0384] Optionally, the i-th child node is the n-th child node, and the n-th child node is a single child node;
[0385] The decoding unit 1901 is configured to:
[0386] When the placeholder information of the decoded child nodes is not occupied, determining the placeholder information of the current child node as occupied;
[0387] When the placeholder status of at least one of the decoded child nodes is occupied, the placeholder information of the current child node is decoded from the bitstream.
[0388] Optionally, the decoding unit 1901 is configured to:
[0389] Based on the occupancy status of the decoded child nodes, updating the node mask of the node, the node mask being the result of an OR operation of the occupancy status of the decoded child nodes;
[0390] When the node mask is 0, determining that the placeholder information of the current child node is occupied;
[0391] When the node mask is 1, the placeholder information of the current child node is decoded from the code stream.
[0392] Optionally, the decoding unit 1901 is configured to:
[0393] The placeholder information of each sub-node in the first n-1 types of sub-nodes is decoded from the code stream.
[0394] Optionally, the decoding unit 1901 is configured to:
[0395] Determine the occupancy information of the current child node based on at least one of the number of occupied child nodes in the decoded child nodes and the estimated occupancy probability of the current child node, wherein the number of occupied child nodes and the estimated occupancy probability are determined based on the occupancy status of the decoded child node.
[0396] Optionally, the decoding unit 1901 is configured to:
[0397] When the estimated value of the occupied probability is greater than a first threshold and the number of occupied child nodes is less than a second threshold, determining that the occupancy information of the current child node is occupied;
[0398] When the estimated value of the occupied probability is less than a third threshold and the number of occupied child nodes is greater than a fourth threshold, determining the occupancy information of the current child node as unoccupied;
[0399] Decoding the placeholder information of the current child node from the bitstream when the conditions that the estimated occupied probability value is greater than the first threshold and the number of occupied child nodes is less than the second threshold are not satisfied, and the conditions that the estimated occupied probability value is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold are not satisfied;
[0400] The first threshold is greater than the third threshold, and the second threshold is less than the fourth threshold.
[0401] Optionally, the decoding unit 1901 is configured to:
[0402] When the estimated value of the occupied probability is greater than the first threshold and the number of occupied child nodes is less than the second threshold, adding one to the number of occupied child nodes;
[0403] When the estimated value of the occupied probability is smaller than the third threshold and the number of occupied child nodes is larger than the fourth threshold, the number of occupied child nodes is maintained.
[0404] Optionally, the decoding unit 1901 is configured to:
[0405] In a case where the decoded placeholder information indicates that the current child node is occupied, incrementing the number of occupied child nodes by one;
[0406] When the decoded placeholder information indicates that the current child node is not occupied, the number of occupied child nodes is maintained.
[0407] Optionally, the decoding unit 1901 is configured to:
[0408] When the number of occupied child nodes is less than a fifth threshold, decoding the placeholder information of the current child node from the bitstream;
[0409] When the number of occupied child nodes is greater than a sixth threshold, the placeholder information of the current child node is determined to be unoccupied, and the fifth threshold is less than the sixth threshold.
[0410] Optionally, the decoding unit 1901 is configured to:
[0411] When the number of occupied child nodes is less than the fifth threshold, updating the number of occupied child nodes based on the decoded occupancy information of the current child node;
[0412] When the number of occupied child nodes is greater than the sixth threshold, the number of occupied child nodes is maintained.
[0413] Optionally, the decoding unit 1901 is configured to:
[0414] When the estimated occupied probability value is greater than a seventh threshold, determining the occupancy information of the current child node as occupied;
[0415] When the estimated value of the occupied probability is less than an eighth threshold, determining that the placeholder information of the current child node is not occupied, and the seventh threshold is greater than the eighth threshold;
[0416] When the estimated value of the occupied probability is greater than the eighth threshold and less than the seventh threshold, the occupancy information of the current child node is decoded from the code stream.
[0417] Optionally, when the i-th child node belongs to the last k types of child nodes among the n types of child nodes, the decoding unit 1901 is configured to:
[0418] Decode the placeholder information of each child node in the first nk type child nodes from the code stream, 1≤k≤n-1.
[0419] Optionally, the estimated value of the occupied probability is determined based on geometric information of the occupied sub-nodes in the decoded sub-nodes and geometric information of the i-th type of sub-nodes.
[0420] Optionally, the decoding unit 1901 is configured to:
[0421] Determining whether the placeholder information of the current child node needs to be decoded based on the placeholder status of the decoded child node;
[0422] In the case where the placeholder information of the current child node needs to be decoded, the placeholder information of the current child node is decoded from the code stream.
[0423] Optionally, the nodes in the point cloud are divided into a plurality of child nodes through an octree, and different types of child nodes contain the same or different numbers of child nodes.
[0424] It should be noted that the process of implementing point cloud decoding by the above-mentioned decoding unit can refer to the above-mentioned point cloud decoding method embodiment, which will not be described in detail in this embodiment.
[0425] Please refer to Figure 20, which shows a block diagram of an encoder provided by an exemplary embodiment of the present application. The encoder may include one or more of the following components: a processor 2001 and a memory 2002. These components are coupled together via a bus system. It will be understood that the bus system is used to enable connectivity and communication between these components. In addition to a data bus, the bus system also includes a power bus, a control bus, and a status signal bus.
[0426] The memory 2002 is configured to store a computer program that can be run on the processor 2001. The processor 2001 is configured to, when running the computer program, execute:
[0427] For the current child node in the i-th category of child nodes, obtain the occupancy status of the encoded child nodes that belong to the same node as the current child node, wherein the nodes in the point cloud are divided into a number of child nodes, and the child nodes in the point cloud are divided into n categories, n≥2, and i≤n; based on the occupancy status of the encoded child nodes, encode the occupancy information of the child nodes that need to be encoded in the i-th category of child nodes.
[0428] It is understood that the memory 2002 in the embodiment of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. By way of example and not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link dynamic random access memory (SLDRAM), and direct RAM bus random access memory (DRRAM). The description of memory 2002 herein is intended to include, but not be limited to, these and any other suitable types of memory.
[0429] Processor 2001 may be an integrated circuit chip with signal processing capabilities. During implementation, each step of the above-mentioned point cloud coding method can be completed by hardware integrated logic circuits or software instructions in processor 2001. The above-mentioned processor 2001 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the various methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the method disclosed in the embodiments of this application can be directly implemented and executed by a hardware decoding processor, or by a combination of hardware and software modules in the decoding processor. The software module can be located in a storage medium mature in the art, such as random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, etc. The storage medium is located in the memory 2002, and the processor 2001 reads the information in the memory 2002 and completes the steps of the above method in combination with its hardware. It is understandable that the embodiments described in this application can be implemented using hardware, software, firmware, middleware, microcode, or a combination thereof. For hardware implementation, the processing unit can be implemented in one or more ASICs, DSPs, digital signal processing devices (DSP Device, DSPD), programmable logic devices (Programmable Logic Device, PLD), FPGAs, general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described in this application, or a combination thereof. For software implementation, the technology described in this application can be implemented by modules (such as procedures, functions, etc.) that perform the functions described in this application. The software code can be stored in a memory and executed by a processor. The memory can be implemented in the processor or outside the processor. Optionally, as another embodiment, the processor 2001 is also configured to execute the point cloud encoding method described in any of the aforementioned embodiments when running the computer program.
[0430] Please refer to Figure 21, which shows a block diagram of a decoder provided by an exemplary embodiment of the present application. The encoder may include one or more of the following components: a processor 2101 and a memory 2102. These components are coupled together via a bus system. It will be understood that the bus system is used to enable communication between these components. In addition to the data bus, the bus system also includes a power bus, a control bus, and a status signal bus.
[0431] The memory 2102 is configured to store a computer program that can be run on the processor 2101. The processor 2101 is configured to, when running the computer program, execute:
[0432] For a current child node in the i-th type of child nodes, obtain the occupancy status of the decoded child nodes that belong to the same node as the current child node, wherein the nodes in the point cloud are divided into a plurality of child nodes, and the child nodes in the point cloud are divided into n categories, n ≥ 2, and i ≤ n; based on the occupancy status of the decoded child nodes, determine the occupancy information of the current child node. It can be understood that the memory 2102 in the embodiment of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. By way of example and not limitation, many forms of RAM are available, such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate synchronous DRAM (DDRSDRAM), enhanced synchronous DRAM (ESDRAM), synchronous link DRAM (SLDRAM), and direct RAM bus random access memory (DRRAM). The description of memory 2102 herein is intended to include, but not be limited to, these and any other suitable types of memory.
[0433] Processor 2101 may be an integrated circuit chip with signal processing capabilities. During implementation, each step of the above-mentioned point cloud decoding method can be completed by hardware integrated logic circuits or software instructions in processor 2101. The above-mentioned processor 2001 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the various methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the method disclosed in the embodiments of this application can be directly implemented and executed by a hardware decoding processor, or by a combination of hardware and software modules in the decoding processor. The software module can be located in a storage medium mature in the art, such as random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, etc. The storage medium is located in the memory 2102, and the processor 2101 reads the information in the memory 2102 and completes the steps of the above method in combination with its hardware. It is understandable that the embodiments described in this application can be implemented using hardware, software, firmware, middleware, microcode, or a combination thereof. For hardware implementation, the processing unit can be implemented in one or more ASICs, DSPs, digital signal processing devices (DSP Device, DSPD), programmable logic devices (Programmable Logic Device, PLD), FPGAs, general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described in this application, or a combination thereof. For software implementation, the technology described in this application can be implemented by modules (such as procedures, functions, etc.) that perform the functions described in this application. The software code can be stored in a memory and executed by a processor. The memory can be implemented in the processor or outside the processor. Optionally, as another embodiment, the processor 2101 is also configured to execute the point cloud decoding method described in any of the aforementioned embodiments when running the computer program.
[0434] An embodiment of the present application also provides a non-volatile computer-readable storage medium for storing a code stream, wherein the code stream is generated by utilizing a point cloud encoding method of an encoder, or the code stream is decoded by utilizing a point cloud decoding method of a decoder, wherein the point cloud encoding method is the point cloud encoding method as described in the above embodiments, and the point cloud decoding method is the point cloud decoding method as described in the above embodiments.
[0435] An embodiment of the present application also provides a computer program product, which includes computer instructions, which are stored in a computer-readable storage medium. A processor obtains the computer instructions from the computer-readable storage medium, and the processor executes the computer instructions to implement the point cloud encoding method or the point cloud decoding method as described in the above embodiments.
[0436] Those skilled in the art will appreciate that in one or more of the above examples, the functions described in the embodiments of the present application can be implemented using hardware, software, firmware, or any combination thereof. When implemented using software, these functions can be stored in a computer-readable medium or transmitted as one or more instructions or codes on a computer-readable medium. Computer-readable media include computer storage media and communication media, wherein communication media include any media that facilitates the transmission of computer programs from one place to another. The storage medium can be any available medium that can be accessed by a general-purpose or special-purpose computer.
[0437] The above description is merely an optional embodiment of the present application and is not intended to limit the present application. Any modifications, equivalent replacements, improvements, etc. made within the spirit and principles of the present application shall be included in the scope of protection of the present application.
Claims
1. A point cloud decoding method, characterized in that, The method includes: For the current child node in the i-th type of child nodes, obtain the occupancy status of the decoded child nodes that belong to the same node as the current child node, where the nodes in the point cloud are divided into several child nodes, and the child nodes in the point cloud are divided into n types, n≥2, and i≤n; Based on the occupancy status of the decoded child nodes, determine the occupancy information of the current child node.
2. The method according to claim 1, wherein The i-th type of child nodes are the specified type of child nodes among the n types of child nodes; Or, The i-th type of child nodes are any one of the n types of child nodes.
3. The method according to claim 2, wherein In the case where the i-th type of child nodes are the specified type of child nodes among the n types of child nodes, the i-th type of child nodes belong to the last k types of child nodes among the n types of child nodes, 1≤k≤n-1.
4. The method according to claim 3, wherein The i-th type of child nodes are the n-th type of child nodes, and the n-th type of child nodes are single child nodes; The determining the occupancy information of the current child node based on the occupancy status of the decoded child nodes includes: In the case where the occupancy statuses of all the decoded child nodes are unoccupied, determine that the occupancy information of the current child node is occupied; In the case where there is at least one decoded child node with an occupied occupancy status, decode the occupancy information of the current child node from the bitstream.
5. The method according to claim 4, characterized in that, The method further includes: Based on the occupancy status of the decoded child nodes, update the node mask of the node, where the node mask is the result of the OR operation of the occupancy statuses of the decoded child nodes; The determining that the occupancy information of the current child node is occupied in the case where the occupancy statuses of all the decoded child nodes are unoccupied includes: In the case where the node mask is 0, determine that the occupancy information of the current child node is occupied; The decoding the occupancy information of the current child node from the bitstream in the case where there is at least one decoded child node with an occupied occupancy status includes: In the case where the node mask is 1, decode the occupancy information of the current child node from the bitstream.
6. The method according to claim 4, wherein The method further includes: Decode the occupancy information of each child node in the first n-1 types of child nodes from the bitstream.
7. The method according to claim 2, wherein The determining the occupancy information of the current child node based on the occupancy status of the decoded child nodes includes: Based on at least one of the number of occupied child nodes among the decoded child nodes and the estimated occupancy probability value of the current child node, determine the occupancy information of the current child node, where the number of occupied child nodes and the estimated occupancy probability value are determined based on the occupancy status of the decoded child nodes.
8. The method according to claim 7, wherein The determining the occupancy information of the current child node based on the number of occupied child nodes among the decoded child nodes and the estimated occupancy probability value of the current child node includes: In the case where the estimated occupancy probability value is greater than the first threshold and the number of occupied child nodes is less than the second threshold, determine that the occupancy information of the current child node is occupied; In the case where the estimated occupancy probability value is less than a third threshold and the number of occupied child nodes is greater than a fourth threshold, determine that the occupancy information of the current child node is unoccupied; In the case where it does not satisfy that the estimated occupancy probability value is greater than a first threshold, the number of occupied child nodes is less than the second threshold, and it does not satisfy that the estimated occupancy probability value is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, decode the occupancy information of the current child node from the bitstream; Wherein, the first threshold is greater than the third threshold, and the second threshold is less than the fourth threshold.
9. The method according to claim 8, wherein The method further includes: In the case where the estimated occupancy probability value is greater than the first threshold and the number of occupied child nodes is less than the second threshold, perform an increment operation on the number of occupied child nodes; In the case where the estimated occupancy probability value is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, keep the number of occupied child nodes.
10. The method according to claim 8, characterized in that The method further includes: In the case where the decoded occupancy information indicates that the current child node is occupied, perform an increment operation on the number of occupied child nodes; In the case where the decoded occupancy information indicates that the current child node is unoccupied, keep the number of occupied child nodes.
11. The method according to claim 7, wherein Determining the occupancy information of the current child node based on the number of occupied child nodes among the decoded child nodes includes: In the case where the number of occupied child nodes is less than a fifth threshold, decode the occupancy information of the current child node from the bitstream; In the case where the number of occupied child nodes is greater than a sixth threshold, determine that the occupancy information of the current child node is unoccupied, and the fifth threshold is less than the sixth threshold.
12. The method according to claim 11, characterized in that The method further includes: In the case where the number of occupied child nodes is less than the fifth threshold, update the number of occupied child nodes based on the decoded occupancy information of the current child node; In the case where the number of occupied child nodes is greater than the sixth threshold, keep the number of occupied child nodes.
13. The method according to claim 7, wherein Determining the occupancy information of the current child node based on the estimated occupancy probability value of the current child node includes: In the case where the estimated occupancy probability value is greater than a seventh threshold, determine that the occupancy information of the current child node is occupied; In the case where the estimated occupancy probability value is less than an eighth threshold, determine that the occupancy information of the current child node is unoccupied, and the seventh threshold is greater than the eighth threshold; In the case where the estimated occupancy probability value is greater than the eighth threshold and less than the seventh threshold, decode the occupancy information of the current child node from the bitstream.
14. The method according to claim 7, wherein In the case where the i-th type of child node belongs to the last k types of child nodes among the n types of child nodes, the method further includes: Decode the occupancy information of each child node in the first n - k types of child nodes from the bitstream, where 1 ≤ k ≤ n - 1.
15. The method according to claim 7, wherein The estimated occupancy probability value is determined based on the geometric information of the occupied child nodes among the decoded child nodes and the geometric information of the i-th type of child node.
16. The method according to claim 1, wherein Determining the occupancy information of the current child node based on the occupancy situation of the decoded child nodes includes: Based on the occupancy situation of the decoded child nodes, determining whether the occupancy information of the current child node needs to be decoded; When the occupancy information of the current child node needs to be decoded, decoding the occupancy information of the current child node from the bitstream.
17. The method according to any one of claims 1 to 16, characterized in that, The nodes in the point cloud are divided into several child nodes by an octree, and the number of child nodes included in different types of child nodes is the same, or different.
18. A point cloud encoding method, characterized in that, The method includes: For the current child node in the i-th type of child nodes, obtaining the occupancy situation of the encoded child nodes that belong to the same node as the current child node, where the nodes in the point cloud are divided into several child nodes, and the child nodes in the point cloud are divided into n types, n≥2, and i≤n; Based on the occupancy situation of the encoded child nodes, encoding the occupancy information of the child nodes that need to be encoded in the i-th type of child nodes.
19. The method according to claim 1, wherein: The i-th type of child nodes is the specified type of child nodes among the n types of child nodes; Or, The i-th type of child nodes is any type of child nodes among the n types of child nodes.
20. The method according to claim 19, characterized in that, When the i-th type of child nodes is the specified type of child nodes among the n types of child nodes, the i-th type of child nodes belongs to the last k types of child nodes among the n types of child nodes, 1≤k≤n-1.
21. The method according to claim 20, wherein The i-th type of child nodes is the n-th type of child nodes, and the n-th type of child nodes is a single child node; The encoding the occupancy information of the child nodes that need to be encoded in the i-th type of child nodes based on the occupancy situation of the encoded child nodes includes: When the occupancy situations of all the encoded child nodes are unoccupied, determining that the occupancy information of the current child node does not need to be encoded; When there is at least one occupancy situation of the encoded child nodes that is occupied, determining that the occupancy information of the current child node needs to be encoded; Encoding the occupancy information of the child nodes that need to be encoded in the n-th type of child nodes.
22. The method according to claim 21, wherein The method further includes: Updating the node mask of the node based on the occupancy situation of the encoded child nodes, where the node mask is the result of the OR operation of the occupancy situations of the encoded child nodes; The determining that the occupancy information of the current child node does not need to be encoded when the occupancy situations of all the encoded child nodes are unoccupied includes: When the node mask is 0, determining that the occupancy information of the current child node does not need to be encoded; The determining that the occupancy information of the current child node needs to be encoded when there is at least one occupancy situation of the encoded child nodes that is occupied includes: When the node mask is 1, determining that the occupancy information of the current child node needs to be encoded.
23. The method according to claim 21, wherein The method further includes: Encoding the occupancy information of each child node in the first n-1 types of child nodes.
24. The method according to claim 19, wherein The encoding the occupancy information of the child nodes that need to be encoded in the i-th type of child nodes based on the occupancy situation of the encoded child nodes includes: Determine whether the occupancy information of the current child node needs to be encoded based on at least one of the number of occupied child nodes in the encoded child nodes and the estimated occupancy probability value of the current child node, where the number of occupied child nodes and the estimated occupancy probability value are determined based on the occupancy situation of the encoded child nodes; Encode the occupancy information of the child nodes that need to be encoded in the i-th type of child nodes.
25. The method according to claim 24, wherein The determining whether the occupancy information of the current child node needs to be encoded based on the number of occupied child nodes in the encoded child nodes and the estimated occupancy probability value of the current child node includes: When the estimated occupancy probability value is greater than a first threshold and the number of occupied child nodes is less than a second threshold, determine that the occupancy information of the current child node does not need to be encoded; When the estimated occupancy probability value is less than a third threshold and the number of occupied child nodes is greater than a fourth threshold, determine that the occupancy information of the current child node does not need to be encoded; When it does not satisfy that the estimated occupancy probability value is greater than the first threshold and the number of occupied child nodes is less than the second threshold, and does not satisfy that the estimated occupancy probability value is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, determine that the occupancy information of the current child node needs to be encoded; Wherein, the first threshold is greater than the third threshold, and the second threshold is less than the fourth threshold.
26. The method according to claim 25, wherein The method further includes: When the estimated occupancy probability value is greater than the first threshold and the number of occupied child nodes is less than the second threshold, perform an increment operation on the number of occupied child nodes; When the estimated occupancy probability value is less than the third threshold and the number of occupied child nodes is greater than the fourth threshold, keep the number of occupied child nodes.
27. The method according to claim 25, wherein, The method further includes: When the occupancy information of the current child node needs to be encoded and the occupancy information is occupied, perform an increment operation on the number of child nodes; When the occupancy information of the current child node needs to be encoded and the occupancy information is unoccupied, keep the number of occupied child nodes.
28. The method according to claim 24, characterized in that, The determining whether the occupancy information of the current child node needs to be encoded based on the number of occupied child nodes in the encoded child nodes includes: When the number of occupied child nodes is less than a fifth threshold, determine that the occupancy information of the current child node needs to be encoded; When the number of occupied child nodes is greater than a sixth threshold, determine that the occupancy information of the current child node does not need to be encoded, where the fifth threshold is less than the sixth threshold.
29. The method according to claim 28, wherein The method further includes: When the number of occupied child nodes is less than the fifth threshold, update the number of occupied child nodes based on the occupancy information of the current child node; When the number of occupied child nodes is greater than the sixth threshold, keep the number of occupied child nodes.
30. The method according to claim 24, wherein The determining whether the occupancy information of the current child node needs to be encoded based on the estimated occupancy probability value of the current child node includes: In the case where the estimated occupancy probability value is greater than a seventh threshold or less than an eighth threshold, it is determined that the occupancy information of the current child node does not need to be encoded, where the seventh threshold is greater than the eighth threshold; In the case where the estimated occupancy probability value is greater than the eighth threshold and less than the seventh threshold, it is determined that the occupancy information of the current child node needs to be encoded.
31. The method according to claim 24, wherein In the case where the i-th type of child node belongs to the last k types of child nodes among n types of child nodes, the method further includes: Encoding the occupancy information of each child node among the first n - k types of child nodes, where 1 ≤ k ≤ n - 1.
32. The method according to claim 24, wherein The estimated occupancy probability value is determined based on the geometric information of the occupied child nodes among the encoded child nodes and the geometric information of the i-th type of child node.
33. The method according to any one of claims 18 to 32, characterized in that, The nodes in the point cloud are divided into several child nodes by an octree, and the number of child nodes included in different types of child nodes is the same or different.
34. A decoder, characterized in that, The decoder includes: A decoding unit, configured to, for a current child node in the i-th type of child nodes, obtain the occupancy situation of the decoded child nodes that belong to the same node as the current child node, where the nodes in the point cloud are divided into several child nodes, and the child nodes in the point cloud are divided into n types, where n ≥ 2 and i ≤ n; The decoding unit, configured to determine the occupancy information of the current child node based on the occupancy situation of the decoded child nodes.
35. An encoder, characterized in that, The encoder includes: An encoding unit, configured to, for a current child node in the i-th type of child nodes, obtain the occupancy situation of the encoded child nodes that belong to the same node as the current child node, where the nodes in the point cloud are divided into several child nodes, and the child nodes in the point cloud are divided into n types, where n ≥ 2 and i ≤ n; The encoding unit, configured to encode the occupancy information of the child nodes that need to be encoded in the i-th type of child nodes based on the occupancy situation of the encoded child nodes.
36. A decoder, characterized in that, The decoder includes a memory and a processor. The memory is configured to store a computer program that runs on the processor; the processor is configured to, when running the computer program, execute the point cloud decoding method according to any one of claims 1 to 17.
37. An encoder, characterized in that, The encoder includes a memory and a processor. The memory is configured to store a computer program that runs on the processor; the processor is configured to, when running the computer program, execute the point cloud encoding method according to any one of claims 18 to 33.
38. A non-volatile computer-readable storage medium for storing a bitstream, characterized in that, The bitstream is generated by using the point cloud encoding method of the encoder or decoded by using the point cloud decoding method of the decoder, where the point cloud encoding method is the method according to any one of claims 18 to 33, and the point cloud decoding method is the method according to any one of claims 1 to 17.
39. A computer program product, characterized in that, The computer program product includes computer instructions stored in a computer-readable storage medium. A processor obtains the computer instructions from the computer-readable storage medium, and the processor executes the computer instructions to implement the point cloud decoding method according to any one of claims 1 to 17, or the point cloud encoding method according to any one of claims 18 to 33.
Citation Information
Patent Citations
Encoding and decoding methods, encoder, decoder and software
CN112438049A
Prediction method of placeholder information, encoder, decoder and storage medium
CN114402532A
Point cloud coding method, point cloud decoding method, point cloud coding device, point cloud decoding device and electronic equipment
CN116233435A
Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables
US20190394496A1
Transform-based image coding method and apparatus therefor
US20230059625A1