WO2022109885A1 - 点云编解码方法、编码器、解码器以及计算机存储介质 - Google Patents
点云编解码方法、编码器、解码器以及计算机存储介质 Download PDFInfo
- Publication number
- WO2022109885A1 WO2022109885A1 PCT/CN2020/131577 CN2020131577W WO2022109885A1 WO 2022109885 A1 WO2022109885 A1 WO 2022109885A1 CN 2020131577 W CN2020131577 W CN 2020131577W WO 2022109885 A1 WO2022109885 A1 WO 2022109885A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- value
- node
- coordinate
- occupied
- child
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 207
- 230000015654 memory Effects 0.000 claims description 45
- 238000004590 computer program Methods 0.000 claims description 22
- 238000004364 calculation method Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 19
- 230000003044 adaptive effect Effects 0.000 description 13
- 230000003068 static effect Effects 0.000 description 13
- 230000006835 compression Effects 0.000 description 12
- 238000007906 compression Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 238000010276 construction Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000009466 transformation Effects 0.000 description 5
- 238000005259 measurement Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000013139 quantization Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 1
- KLDZYURQCUYZBL-UHFFFAOYSA-N 2-[3-[(2-hydroxyphenyl)methylideneamino]propyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCCN=CC1=CC=CC=C1O KLDZYURQCUYZBL-UHFFFAOYSA-N 0.000 description 1
- 101000638069 Homo sapiens Transmembrane channel-like protein 2 Proteins 0.000 description 1
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 102100032054 Transmembrane channel-like protein 2 Human genes 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 201000001098 delayed sleep phase syndrome Diseases 0.000 description 1
- 208000033921 delayed sleep phase type circadian rhythm sleep disease Diseases 0.000 description 1
- 230000009365 direct transmission Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 235000014347 soups Nutrition 0.000 description 1
- 238000011426 transformation method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Definitions
- the embodiments of the present application relate to the technical field of encoding and decoding, and in particular, to a point cloud encoding and decoding method, an encoder, a decoder, and a computer storage medium.
- the geometric information of the point cloud and the attribute information corresponding to each point cloud are encoded separately.
- the geometric information will be reconstructed, and the encoding of the attribute information will depend on the reconstructed geometric information.
- the attribute information coding is mainly aimed at the coding of color information, so as to transform the color information from the spatial domain to the frequency domain to obtain high-frequency coefficients and low-frequency coefficients.
- the coefficients are quantized and entropy encoded to generate a binary code stream.
- a context model is constructed according to the occupancy bits of the six neighbor nodes of the current node for context-based adaptive binary arithmetic coding (Context-based Adaptive Binary Arithmetic Coding, CABAC), but in this process , because the spatial correlation is not fully utilized, the encoding and decoding efficiency of the point cloud is reduced.
- CABAC Context-based Adaptive Binary Arithmetic Coding
- the embodiments of the present application provide a point cloud encoding and decoding method, an encoder, a decoder, and a computer storage medium, which can make full use of the spatial correlation of point clouds, thereby improving encoding and decoding efficiency.
- an embodiment of the present application provides a point cloud encoding method, which is applied to an encoder, and the method includes:
- the coordinate information of the occupied child node is determined, and the second context model is used for the occupied child node.
- the coordinate information is entropy encoded and written into the code stream.
- an embodiment of the present application provides a point cloud decoding method, which is applied to a decoder, and the method includes:
- the second context model is used to parse the code stream, and the coordinate information of the occupied child node is obtained;
- the occupied bit information of the child nodes divided by the current node is determined.
- an embodiment of the present application provides an encoder, where the encoder includes a first determination unit and an encoding unit; wherein,
- a first determining unit configured to determine the occupied number of child nodes of the current node
- an encoding unit configured to determine the value of the identification information of a single child node according to the occupied number of the child nodes, and to perform entropy encoding on the value of the identification information by using the first context model, and write the code stream;
- the encoding unit is further configured to, if the value of the identification information indicates that only one occupied child node is included in the child nodes divided by the current node, then determine the coordinate information of the occupied child node, and use the second context model to The coordinate information of the occupied child node is entropy encoded and written into the code stream.
- an embodiment of the present application provides an encoder, where the encoder includes a first memory and a first processor; wherein,
- a first memory for storing a computer program executable on the first processor
- the first processor is configured to execute the method according to the first aspect when running the computer program.
- an embodiment of the present application provides a decoder, the decoder includes a second determination unit and a decoding unit; wherein,
- a decoding unit configured to use the first context model to parse the code stream, and obtain the value of the identification information of the single child node of the current node;
- the decoding unit is further configured to, if the value of the identification information indicates that only one occupied child node is included in the child nodes divided by the current node, use the second context model to parse the code stream, and obtain the occupied child node's information. coordinate information;
- the second determining unit is configured to determine, based on the coordinate information of the occupied child nodes, the occupied bit information of the child nodes divided by the current node.
- an embodiment of the present application provides a decoder, the decoder includes a second memory and a second processor; wherein,
- a second memory for storing a computer program executable on the second processor
- the second processor is configured to execute the method according to the second aspect when running the computer program.
- an embodiment of the present application provides a computer storage medium, where the computer storage medium stores a computer program, and when the computer program is executed by the first processor, the method described in the first aspect is implemented, or the computer program is executed by the second processor.
- the processor implements the method as described in the second aspect when executed.
- the embodiments of the present application provide a point cloud encoding and decoding method, an encoder, a decoder, and a computer storage medium.
- the occupied number of child nodes of the current node is determined; according to the occupied number of child nodes, a single The value of the identification information of the child node, using the first context model to entropy encode the value of the identification information, and write the code stream; if the value of the identification information indicates that the current node is divided into the child node. If only one occupied child node is included, the coordinate information of the occupied child node is determined, the coordinate information of the occupied child node is entropy encoded by the second context model, and written into the code stream.
- the value of the identification information of a single child node of the current node is obtained; if the value of the identification information indicates that only one sub-node divided by the current node includes one Occupied child nodes, use the second context model to parse the code stream to obtain the coordinate information of the occupied child nodes; based on the coordinate information of the occupied child nodes, determine the placeholder bits of the child nodes divided by the current node information.
- 1A is a schematic diagram of the frame composition of a G-PCC encoder provided by the related art
- 1B is a schematic diagram of the framework composition of a G-PCC decoder provided by the related art
- FIG. 2 is a schematic structural diagram of a neighbor configuration number provided by the related art
- FIG. 3 is a schematic structural diagram of the occupied number of a child node provided by the related art
- FIG. 4 is a schematic flowchart of a point cloud encoding method provided by an embodiment of the present application.
- FIG. 5 is a schematic diagram of the position structure of a current node and an encoded child node provided by an embodiment of the present application
- FIG. 6 is a schematic flowchart of predicting coordinate information according to a plurality of encoded child nodes according to an embodiment of the present application
- FIG. 7 is a schematic diagram of the location structure of another current node and an encoded child node provided by an embodiment of the present application.
- FIG. 8 is another schematic flowchart of predicting coordinate information according to a plurality of encoded child nodes according to an embodiment of the present application.
- FIG. 9 is a schematic diagram of the position structure of another current node and an encoded child node provided by an embodiment of the present application.
- FIG. 10 is another schematic flowchart of predicting coordinate information according to a plurality of encoded child nodes provided by an embodiment of the present application.
- FIG. 11 is a schematic flowchart of predicting identification information according to a plurality of encoded child nodes according to an embodiment of the present application
- FIG. 12 is another schematic flowchart of predicting identification information according to a plurality of encoded child nodes according to an embodiment of the present application.
- FIG. 13 is a schematic diagram of the location structure of another current node and an encoded child node provided by an embodiment of the present application;
- FIG. 14 is a detailed schematic flowchart of a point cloud encoding method provided by an embodiment of the present application.
- FIG. 15 is a schematic flowchart of a point cloud decoding method provided by an embodiment of the present application.
- FIG. 16 is a detailed schematic flowchart of a point cloud decoding method provided by an embodiment of the present application.
- 17 is a schematic diagram of the composition and structure of an encoder provided by an embodiment of the application.
- FIG. 18 is a schematic diagram of a specific hardware structure of an encoder provided by an embodiment of the application.
- FIG. 19 is a schematic diagram of the composition and structure of a decoder provided by an embodiment of the application.
- FIG. 20 is a schematic diagram of a specific hardware structure of a decoder provided by an embodiment of the present application.
- first ⁇ second ⁇ third involved in the embodiments of the present application is only to distinguish similar objects, and does not represent a specific ordering of objects. It is understandable that “first ⁇ second ⁇ third” "Where permitted, the specific order or sequence may be interchanged to enable the embodiments of the application described herein to be practiced in sequences other than those illustrated or described herein.
- CABAC Context-based Adaptive Binary Arithmetic Coding
- the point cloud is the three-dimensional representation of the surface of the object
- the point cloud (data) on the surface of the object can be collected through acquisition equipment such as photoelectric radar, lidar, laser scanner, and multi-view camera.
- a point cloud refers to a collection of massive three-dimensional points, and the points in the point cloud can include the location information of the point and the attribute information of the point.
- the position information of the point may be three-dimensional coordinate information of the point.
- the position information of the point may also be referred to as the geometric information of the point.
- the attribute information of the points may include color information and/or reflectivity, among others.
- the color information may be information in any color space.
- the color information may be RGB information. Among them, R represents red (Red, R), G represents green (Green, G), and B represents blue (Blue, B).
- the color information may be luminance chrominance (YcbCr, YUV) information. Among them, Y represents brightness (Luma), Cb (U) represents blue color difference, and Cr (V) represents red color difference.
- the points in the point cloud may include the three-dimensional coordinate information of the point and the laser reflection intensity (reflectance) of the point.
- the points in the point cloud may include three-dimensional coordinate information of the point and color information of the point.
- a point cloud is obtained by combining the principles of laser measurement and photogrammetry, and the points in the point cloud may include three-dimensional coordinate information of the point, laser reflection intensity (reflectance) of the point, and color information of the point.
- Point clouds can be divided into:
- the first type of static point cloud that is, the object is static, and the device that obtains the point cloud is also static;
- the second type of dynamic point cloud the object is moving, but the device that obtains the point cloud is stationary;
- the third type of dynamic point cloud acquisition the device that acquires the point cloud is moving.
- point clouds are divided into two categories according to their use:
- Category 1 Machine perception point cloud, which can be used in scenarios such as autonomous navigation systems, real-time inspection systems, geographic information systems, visual sorting robots, and rescue and relief robots;
- Category 2 Human eye perception point cloud, which can be used in point cloud application scenarios such as digital cultural heritage, free viewpoint broadcasting, 3D immersive communication, and 3D immersive interaction.
- the point cloud is a collection of massive points, storing the point cloud will not only consume a lot of memory, but also is not conducive to transmission, and there is no such a large bandwidth to support the direct transmission of the point cloud at the network layer without compression. cloud for compression.
- the point cloud coding framework that can compress the point cloud can be the Geometry Point Cloud Compression (G-PCC) codec framework provided by the Moving Picture Experts Group (MPEG). Or a video-based point cloud compression (Video Point Cloud Compression, V-PCC) codec framework, or the AVS-PCC codec framework provided by the Audio Video Standard (AVS).
- G-PCC codec framework can be used to compress the first type of static point cloud and the third type of dynamically acquired point cloud, and the V-PCC codec framework can be used to compress the second type of dynamic point cloud.
- the G-PCC codec framework is also called point cloud codec TMC13, and the V-PCC codec framework is also called point cloud codec TMC2.
- the slices are independently encoded.
- the slices are independently encoded.
- the geometric information of the point cloud and the attribute information corresponding to the points in the point cloud are encoded separately.
- the G-PCC encoder first encodes the geometry information.
- the encoder performs coordinate transformation on the geometric information, so that all point clouds are contained in a bounding box; then quantization is performed. This step of quantization mainly plays the role of scaling. Due to the rounding of quantization, the geometric information of some points is the same. According to the parameter To decide whether to remove duplicate points, the process of quantifying and removing duplicate points is also called the voxelization process.
- octree-based division is performed on the bounding box. According to the different depth of octree division, the encoding of geometric information is divided into two frameworks based on octree and triangular patch set.
- the bounding box is divided into 8 sub-cubes, and the occupancy bits of the sub-cubes are recorded (where 1 is non-empty, 0 is empty), and for non-empty sub-cubes
- the occupancy bits of the sub-cubes are recorded (where 1 is non-empty, 0 is empty), and for non-empty sub-cubes
- the spatial correlation between nodes and surrounding nodes is used to perform intra-frame prediction on the occupied bits, and finally arithmetic coding (CABAC) is performed to generate a binary geometric bit stream, that is, a geometric code stream.
- CABAC arithmetic coding
- the octree division is also performed first, but the difference lies in the octree-based geometric information coding.
- This method does not need to divide the point cloud into the edge length of 1 ⁇ 1 ⁇ 1 unit cube, but stop dividing when the side length of the block is W.
- Based on the surface formed by the distribution of point clouds in each block we can obtain at most ten points generated by the surface and the twelve edges of the block. two vertexes. Finally, the vertex coordinates of each block are encoded in turn to generate a binary geometric bit stream, that is, a geometric code stream.
- the G-PCC encoder After the G-PCC encoder completes the geometric information encoding, it reconstructs the geometric information, and uses the reconstructed geometric information to encode the attribute information of the point cloud.
- the attribute encoding of point cloud mainly encodes the color information of the point in the point cloud.
- the encoder can perform color space conversion on the color information of the points. For example, when the color information of the points in the input point cloud is represented using the RGB color space, the encoder can convert the color information from the RGB color space to the YUV color space. Then, the point cloud is recolored with the reconstructed geometric information so that the unencoded attribute information corresponds to the reconstructed geometric information.
- color information coding there are mainly two transformation methods, one is the distance-based lifting transformation that relies on the LOD division, and the other is the direct RAHT transformation, both of which will transform the color information from the spatial domain.
- the frequency domain high-frequency coefficients and low-frequency coefficients are obtained, and finally the coefficients are quantized and arithmetically encoded to generate a binary attribute bit stream, that is, an attribute code stream.
- entropy encoding can be performed based on the geometric information of the neighbor nodes of the point cloud.
- a context model is constructed according to the occupancy bits of the 6 neighbor nodes of the current node for performing CABAC.
- NC The neighbor configuration number
- the value of NC may be 0 to 63, that is, 000000 to 111111 in binary, as shown in FIG. 2 , which shows a schematic structural diagram of a neighbor configuration number provided by the related art.
- the black-filled node represents the current node, which has 6 neighbor nodes.
- the number of neighbor configurations is 1; if the neighbor node on the left is somewhat occupied, then the neighbor configuration The number is 2; if the neighbor node on the upper side is a little occupied, the number of neighbor configurations is 4; if the neighbor node on the lower side is a little occupied, the number of neighbor configurations is 8; if the neighbor node on the back side is occupied, the number of neighbor configurations is 16; If the neighbor nodes on the front side are somewhat occupied, the number of neighbor configurations is 32.
- N oc The Number of occupied child nodes (N oc ) is calculated according to the occupied bits of the child nodes.
- the value of N oc may be 1 to 8, as shown in FIG. 3 , which shows a schematic structural diagram of the occupied number of child nodes provided by the related art.
- the occupancy bits of the occupied node calculate the coordinate information of its only occupied child node inside the current node (that is, the XYZ coordinate value, which can be 0 and 1 respectively. Taking Figure 3 as an example, the XYZ coordinate value is (1, 0, 0) )), and perform equal-probability static binary arithmetic coding on the XYZ coordinate values respectively, and write them into the code stream.
- the geometric bit stream and the attribute bit stream in the binary code stream are independently decoded.
- the geometric information of the point cloud is obtained through arithmetic decoding-octree synthesis-surface fitting-reconstruction geometry-inverse coordinate transformation;
- the attribute bit stream through arithmetic decoding-inverse coordinate transformation Quantization-LOD-based inverse promotion or RAHT-based inverse transformation-inverse color conversion to obtain the attribute information of the point cloud, and restore the 3D image model of the point cloud data to be encoded based on the geometric information and attribute information.
- entropy decoding can also be performed based on the geometric information of the neighbor nodes of the point cloud.
- the context model is still constructed according to the occupancy bits of the 6 neighbor nodes of the current node for CABAC decoding.
- Table 1 presents a syntax element and an example of semantic description provided by the related art. Its specific description is as follows.
- the identification information OccupancyIdxMaybePresent indicates whether there is a bit field corresponding to the syntax element single_child_flag in the code stream.
- the identification information OccupancyIdxMaybePresent indicates whether there is a bit field corresponding to the syntax element single_child_flag in the data unit corresponding to the octree node of the code stream.
- the value of the identification information OccupancyIdx MaybePresent is equal to 1, there is a bit field corresponding to the syntax element single_child_flag in the code stream.
- a method for determining the value of the identification information OccupancyIdx MaybePresent is shown in the following pseudo code:
- OccupancyIdxMaybePresent numPlanarAxes ⁇ 3
- IsPlanar[k] k is 0, 1, and 2, which represent the directions of the x, y, and z coordinate axes, respectively.
- IsPlanar[k] 1
- IsPlanar[k] 0
- Indicates other situations including: when the plane coding mode condition is qualified, the position of the child node divided by the current node occupies two planes perpendicular to the coordinate axis, or the plane coding mode condition is unqualified.
- numPlanarAxes indicates the number of objects in the coordinate axis direction of the plane encoding mode when the condition of the plane encoding mode is qualified.
- IsNotPlanar[k] k is 0, 1, and 2, which represent the directions of the x, y, and z coordinate axes, respectively. Specifically, if IsNotPlanar[k] is 1, it means that when the condition of the plane coding mode is qualified, and the position of the child node of the current node occupies two planes perpendicular to the coordinate axis, the plane coding mode is not used; IsNotPlanar[k] is 0 indicates other conditions, including: when the plane coding mode condition is qualified, the position of the child node of the current node forms a plane perpendicular to the coordinate axis, or the plane coding mode condition is unqualified.
- numNonPlanarAxes indicates the number of objects in the coordinate axis direction in which the plane encoding mode is not used when the plane encoding mode condition is passed.
- numPlanarAxes ⁇ 3 indicates that when the plane coding mode conditions are qualified, not all x, y, and z coordinate axes use the plane coding mode; (!NeighPattern&&!numNonPlanarAxes) indicates that the number of neighbor configurations is 0, that is, 6 neighbor nodes When no neighbor node is occupied, and the plane coding mode conditions in the x, y, and z coordinate axes are qualified, the position of the sub-nodes divided by the current node forms a plane perpendicular to the coordinate axis, or the plane coding mode conditions are unqualified.
- "numPlanarAxes ⁇ 3" and "(!NeighPattern&&!numNonPlanarAxes)" are ORed to determine the value of the identification information OccupancyIdx MaybePresent.
- the encoder uses the above method to determine the value of the identification information OccupancyIdxMaybePresent.
- the encoder determines that the value of OccupancyIdx MaybePresent is equal to 1, it uses the entropy encoding method corresponding to ae(v) to write the value of single_child_flag into the data unit in the code stream; when the encoder determines that the value of OccupancyIdxMaybePresent is equal to 0, the encoding The controller does not write the value of single_child_flag into the data unit in the code stream.
- ae(v) indicates that the syntax unit is encoded using the context-adaptive arithmetic entropy coding method
- the data unit here may be the data unit corresponding to the octree node, for example, the geometric information data unit of the octree node.
- the encoder decodes the point cloud code stream according to the single_child_flag, for example, encoding the geometric information of the octree nodes; for example, encoding the attribute information of the point cloud data.
- the decoder uses the above method to determine the value of the identification information OccupancyIdxMaybePresent.
- the decoder determines that the value of OccupancyIdx MaybePresent is equal to 1, it uses the entropy decoding method corresponding to ae(v) to parse the bit field corresponding to single_child_flag from the data unit of the code stream to determine the value of single_child_flag; when the decoder determines the value of OccupancyIdx MaybePresent When it is equal to 0, the decoder determines that the bit field corresponding to single_child_flag does not exist in the data unit of the code stream.
- the decoder does not need to parse the value of single_child_flag in the code stream.
- the decoder uses the value of single_child_flag. Set to the default value of 0.
- ae(v) represents using the context adaptive arithmetic entropy decoding method to parse the bit field corresponding to the syntax unit in the code stream; the data unit here may be the data unit corresponding to the octree node, for example, the octet The geometric information data unit of the tree node.
- the decoder decodes the point cloud code stream according to the single_child_flag, for example, decoding the geometric information of the octree node; for example, decoding the attribute information of the point cloud data.
- single_child_flag when the value of single_child_flag is equal to 1, it indicates that the current node includes only one child node to be occupied; when the value of single_child_flag is equal to 0, it indicates that the current node can include multiple child nodes to be occupied. In addition, when no child node is occupied in the current node, the value of single_child_flag will be inferred to be 0 at this time.
- N oc N oc is 1 (that is, only 1 child node is occupied among the 8 child nodes), and if the flag is 0, it represents the case where N oc is not equal to 1 (that is, there is more than 1 child node among the 8 child nodes). occupied).
- occupancy_idx[i] represents the i-th bit of the traversal order index of a single child node in the current node in the octree child node traversal order.
- the 0th bit represents the coordinate value (0 or 1) of a single child node in the z direction of the current node
- the first bit represents the coordinate value (0 or 1) of a single child node in the y direction in the current node
- the second bit represents the x-coordinate value (0 or 1) of a single child node in the current node.
- the The method of encoding and decoding the XYZ coordinate value of the only occupied child node in the current node (respectively can be 0, 1, taking Figure 3 as an example, the XYZ coordinate value is (1, 0, 0)), It is hereinafter referred to as "the method of encoding and decoding the coordinate value of a single child node". Since this method does not fully utilize the spatial correlation, the encoding and decoding efficiency is reduced.
- An embodiment of the present application provides a point cloud encoding method.
- the basic idea of the method is: determine the occupied number of child nodes of the current node; determine the value of the identification information of a single child node according to the occupied number of child nodes, and use The first context model performs entropy encoding on the value of the identification information, and writes the code stream; if the value of the identification information indicates that only one occupied child node is included in the sub-nodes divided by the current node, then determine The coordinate information of the occupied child node is entropy encoded by using the second context model, and written into the code stream.
- the point cloud encoding method provided by the embodiment of the present application is applied to a video encoding device, that is, a G-PCC encoder, which may also be referred to as an encoder for short.
- the functions implemented by the method can be implemented by the first processor in the encoder calling a computer program.
- the computer program can be stored in the first memory.
- the encoder includes at least a first processor and a first memory.
- FIG. 4 it shows a schematic flowchart of a point cloud encoding method provided by an embodiment of the present application. As shown in Figure 4, the method may include:
- S401 Determine the occupied number of child nodes of the current node.
- a point in a point cloud, can be all points in the point cloud, or some points in the point cloud, and these points are relatively concentrated in space.
- the method in the embodiment of the present application is mainly applied to the “context modeling” part, aiming at the geometric information based on the point cloud neighbor nodes in the current related art.
- Entropy coding is optimized to improve the utilization of spatial correlation.
- the number of occupied child nodes (Number of occupied child nodes, N oc ) is used to indicate whether any child nodes of the multiple child nodes of the current node are occupied.
- the determining the occupied number of child nodes of the current node may include:
- the occupied number of the child node is determined according to the occupied bit information of the child node.
- the sub-nodes divided by the current node usually include 8 sub-nodes, that is, the current node is divided into 8 sub-nodes, as shown in FIG. 3 .
- the occupancy bit information of the child node is determined according to whether or not a point is occupied in the child node.
- the obtaining the occupancy bit information of the child nodes divided by the current node may include:
- the first value may be 1 and the second value may be 0; or, the first value may be 0 and the second value may be 1.
- the first value may be set to 1, and the second value may be set to 0, but there is no specific limitation.
- the occupancy bit information of the child node is equal to 1; if there is no point occupied in a child node, then the The placeholder information of the child node is equal to 0.
- the occupied number of child nodes can be calculated. For example, if only one child node is occupied among 8 child nodes, the calculated number of child nodes occupied is equal to 1; on the contrary, if more than one child node is occupied among the 8 child nodes, the calculated child node is occupied by The occupancy number is not equal to 1.
- the method may also include:
- the occupied number of child nodes is equal to the first threshold, it is determined that only one occupied child node is included in the child nodes divided by the current node;
- the occupied number of child nodes is not equal to the first threshold, it is determined that the child nodes divided by the current node include at least two occupied child nodes.
- the occupied number of child nodes ranges from 1 to 8, and the first threshold may be set to 1. That is to say, if the occupied number of child nodes is equal to 1, it can indicate that only one child node in the current node is occupied, that is, only one occupied child node is included in the child nodes divided by the current node; if the occupied number of child nodes is not If it is equal to 1, it can indicate that more than one child node in the current node is occupied, that is, the child nodes divided by the current node include at least two occupied child nodes.
- S402 Determine the value of the identification information of a single child node according to the occupied number of the child nodes, perform entropy coding on the value of the identification information by using the first context model, and write the value into the code stream.
- the first context model can be used to perform entropy coding on the value of the identification information, and on the other hand, the value of the identification information can be encoded.
- the second context model is used to perform entropy encoding on the coordinate information of the occupied child node.
- the determining the value of the identification information according to the occupied number of the child nodes may include:
- the occupied number of the child node is equal to 1, it is determined that the value of the identification information is the first identification value
- the occupied number of the child node is not equal to 1, it is determined that the value of the identification information is a second identification value.
- the determining the value of the identification information according to the occupied number of the child nodes includes:
- the sub-nodes divided by the current node include only one occupied sub-node, then determine that the value of the identification information is the first identification value
- the value of the identification information is the second identification value.
- the first identification value may be 1, and the second identification value may be 0; or, the first identification value may be 0, and the second identification value may be 1.
- the first identification value may be set to 1, and the second identification value may be set to 0, but it is not specifically limited.
- the value of the identification information may also be the number of occupied child nodes. For example, if there is no occupied child node in the child nodes divided by the current node, the value of the identification information is equal to 0; if the child nodes divided by the current node include only one occupied child node, then the value of the identification information is equal to 1; If the child nodes divided by the current node include at least two occupied child nodes, the value of the identification information is greater than or equal to 2.
- the value of the identification information can be entropy encoded by using the first context model, and written into the code stream.
- the determining the coordinate information of the occupied child node may include:
- the coordinate information of the occupied child node is obtained by calculation.
- the coordinate information of the occupied child node can be obtained by calculating according to the occupancy bit information of the 8 child nodes. Then, the coordinate information of the occupied child node is entropy encoded by the second context model, and written into the code stream.
- the method may also include:
- the second context model entropy-encodes the coordinate information of the occupied child nodes.
- the method may further include:
- the neighbor configuration number indicates that no neighbor node is occupied in the current node
- the value of the identification information indicates that only one occupied child node is included in the child nodes divided by the current node, execute the The step of performing equal-probability static binary arithmetic coding on the coordinate information of the occupied child nodes.
- the neighbor configuration number (Neighbouring configuration number, NC) is used to indicate whether any neighbor node is occupied among the multiple neighbor nodes of the current node.
- the determining the number of neighbor configurations of the current node may include:
- the neighbor configuration number is determined according to the occupancy bit information of the neighbor node.
- the neighbor nodes may include at least one of the following: a neighbor node connected to the left side of the current node, a neighbor node connected to the right side of the current node, and a neighbor node connected to the upper side of the current node A neighbor node, a neighbor node connected to the lower side of the current node, a neighbor node connected to the back side of the current node, and a neighbor node connected to the front side of the current node. That is to say, there are usually 6 neighbor nodes of the current node, as shown in FIG. 2 .
- the occupancy bit information of the neighbor node is determined according to whether there is a point occupied in the neighbor node.
- the obtaining the occupancy bit information of the neighbor nodes of the current node may include:
- the first value may be 1 and the second value may be 0; or, the first value may be 0 and the second value may be 1.
- the first value may be set to 1, and the second value may be set to 0, but there is no specific limitation.
- the occupancy bit information of the neighbor node is equal to 1; if there is no point occupation in a neighbor node, then the The occupancy bit information of the neighbor node is equal to 0.
- the number of neighbor configurations can be calculated. For example, if none of the 6 neighbor nodes is occupied, it is represented as 000000 in binary, and the calculated neighbor configuration number is equal to 0; otherwise, if any of the 6 neighbor nodes is occupied, it is represented as 000001 in binary. ⁇ 111111, the number of neighbor configurations calculated at this time is 1 to 63, that is, the number of neighbor configurations at this time is greater than 0.
- the method may also include:
- the neighbor configuration number is equal to the second threshold, it is determined that no neighbor node is occupied in the current node.
- the value range of the neighbor configuration number is 0 to 63, and the second threshold may be set to 0. That is to say, if the neighbor configuration number is greater than 0, it can indicate that the current node has neighbor nodes occupied; if the neighbor configuration number is equal to 0, it can indicate that no neighbor node is occupied in the current node.
- the method may further include: determining the first context model and the second context model.
- the first context model may be used to predict the identification information
- the second context model may be used to predict the coordinate information.
- the determining the first context model and the second context model may include:
- the first context model and the second context model are determined.
- this embodiment of the present application introduces a new variable, that is, a single child node enable variable (which can be represented by ctxSingleChildEnabled).
- a single child node enable variable which can be represented by ctxSingleChildEnabled.
- the single child node enable variable is related to the number of nodes (represented by N all ) and the number of single child nodes (represented by N singe ).
- the determining the value of the single child node enable variable may include:
- the value of the single child node enable variable is a fourth value.
- the third value may be 1, and the fourth value may be 0; or, the third value may be 0, and the fourth value may be 1.
- the third value may be set to 1, and the fourth value may be set to 0, but it is not specifically limited.
- the preset threshold represents a preset empirical value, and can be used as a measurement index for judging the value of the enable variable of a single child node.
- the value range of the preset threshold is within [0, 1], which is specifically adjusted according to the actual situation.
- the preset threshold may be set to 0.5, but it is not specifically limited here.
- a single child node enable variable can be represented by ctxSingleChildEnabled.
- the determination of the enable variable of a single child node can be realized according to the following formula, as shown in the following:
- the value of ctxSingleChildEnabled is 1; otherwise, if the first scale value is less than or equal to 0.5, then the value of ctxSingleChildEnabled is 0.
- the method may also include:
- the method may also include:
- the initial value of the number of nodes is set to 0, the initial value of the number of single child nodes is 0, and the initial value of the single child node enable variable is 0;
- i is an integer greater than or equal to 0 and less than K.
- determining the number of nodes and the number of single child nodes may include:
- the coded node including only one occupied child node is determined from the coded nodes, and the single child node number is obtained.
- both the number of nodes and the number of single child nodes are the encoded nodes in the i-th layer.
- the determining from the encoded nodes an encoded node that includes only one occupied child node, and obtaining the number of single child nodes may include:
- the coded node determine whether the sub-nodes divided by the coded node include only one occupied sub-node
- an octree of K layers can be obtained.
- N all the number of single child nodes
- the value of the single child node enable variable (ctxSingleChildEnabled) can be calculated in combination with formula (1), so as to determine whether the entropy needs to be performed using the first context model and the second context model in the future. coding.
- a context model needs to be constructed at this time, that is, the first context model and the second context model are determined so as to utilize The first context model and the second context model are entropy encoded.
- the method may further include:
- the first context model is determined according to the index number value of the first context model.
- the determining the first context model according to the index number value of the first context model may include:
- a first candidate context model corresponding to the index number value is selected from the at least one first candidate context model, and the selected first candidate context model is determined as the The first context model.
- At least one first candidate context model may be pre-built, and different first candidate context models correspond to different index numbers.
- the first candidate context model corresponding to the index sequence number value can be selected from the at least one first candidate context model to determine it as The first context model.
- the method may further include:
- the second context model is determined according to the index number value of the second context model.
- the determining the second context model according to the index number value of the second context model may include:
- a second candidate context model corresponding to the index number value is selected from the at least one second candidate context model, and the selected second candidate context model is determined as the The second context model.
- At least one second candidate context model may be pre-built, and different second candidate context models also correspond to different index numbers.
- the second candidate context model corresponding to the index sequence number value can be selected from the at least one second candidate context model to determine it as The second context model.
- the determining the predicted coordinate information of the current node, and determining the index serial number value of the second context model according to the predicted coordinate information can include:
- the index number value of the second context model is determined according to the predicted coordinate values in the three coordinate directions.
- the predicted coordinate information may include predicted coordinate values in the first coordinate direction, predicted coordinate values in the second coordinate direction, and predicted coordinate values in the third coordinate direction.
- the first coordinate direction may be the x-axis coordinate direction
- the second coordinate direction may be the y-axis coordinate direction
- the third coordinate direction may be the z-axis coordinate direction.
- the index number value of the second context model can also be divided into: the index number value of the second context model in the first coordinate direction, and the index number value of the second context model in the second coordinate direction value and the index ordinal value of the second context model in the third coordinate direction. Therefore, in some embodiments, the determining the index number value of the second context model according to the predicted coordinate values in the three coordinate directions may include:
- the first first predicted value and the first second predicted value in the first coordinate direction, and the second first predicted value and the second second predicted value in the second coordinate direction are obtained.
- An index number value of the second context model in the third coordinate direction is determined according to the third first predicted value and the third second predicted value in the third coordinate direction.
- determining the predicted coordinate values in three coordinate directions according to the occupancy bit information of the coded child nodes adjacent to the current node may include:
- the occupancy bit information of the M coded child nodes adjacent to the current node in the first coordinate direction is determined from the occupancy bit information of the coded child nodes adjacent to the current node, and according to the first coordinate
- the occupancy bit information of the M encoded child nodes connected to the current node in the direction determines the first-predicted coordinate value of the first coordinate direction
- the occupancy bit information of the M coded child nodes adjacent to the current node in the second coordinate direction is determined from the occupancy bit information of the coded child nodes adjacent to the current node, and according to the second coordinate
- the occupancy bit information of the M encoded child nodes connected to the current node in the direction determines the second-first predicted coordinate value of the second coordinate direction
- the occupancy bit information of the M coded child nodes adjacent to the current node in the third coordinate direction is determined from the occupancy bit information of the coded child nodes adjacent to the current node, and according to the third coordinate
- the occupancy bit information of the M encoded child nodes connected to the current node in the direction determines the third-first predicted coordinate value in the third coordinate direction; wherein, M is an integer greater than 0.
- the first-to-prediction in the first coordinate direction is determined according to occupancy bit information of M encoded child nodes connected to the current node in the first coordinate direction Coordinate values, which can include:
- the first direction value is determined according to the occupancy bit information of the M encoded child nodes connected to the current node in the first coordinate direction; wherein, the first direction value indicates that the current node is in the first coordinate direction relative to the current node. Whether the connected M encoded sub-nodes are somewhat occupied;
- a first-predicted value of the first coordinate direction is determined according to a comparison result between the first direction value and a preset direction value.
- determining the second first coordinate direction of the second coordinate direction according to occupancy bit information of M encoded child nodes connected to the current node in the second coordinate direction Predicted coordinate values, which can include:
- the second direction value is determined according to the occupancy bit information of the M encoded child nodes connected to the current node in the second coordinate direction; wherein, the second direction value indicates that the second direction value is the same as the current node in the second coordinate direction. Whether the connected M encoded sub-nodes are somewhat occupied;
- a second-first predicted value of the second coordinate direction is determined according to a comparison result between the second direction value and a preset direction value.
- determining the third-first coordinate of the third coordinate direction according to occupancy bit information of M encoded child nodes connected to the current node in the third coordinate direction Predicted coordinate values, which can include:
- the third direction value is determined according to the occupancy bit information of the M encoded child nodes connected to the current node in the third coordinate direction; wherein, the third direction value indicates that the third coordinate direction is relative to the current node in the third coordinate direction. Whether the connected M encoded sub-nodes are somewhat occupied;
- a third-first predicted value of the third coordinate direction is determined according to the comparison result between the third direction value and the preset direction value.
- the current node is represented by black filling
- the first direction value represented by O ncx
- the first direction value can be defined as 4 encoded values that are connected to the current node in the negative direction of the x-axis.
- the occupancy bit information of the child node that is, whether the 4 child nodes are occupied; define the second direction value (represented by Oncy ) as the occupancy of the 4 encoded child nodes connected to the current node in the negative direction of the y-axis Bit information, that is, whether the 4 child nodes are occupied; define the third direction value (represented by O ncz ) as the occupied bit information of the 4 encoded child nodes connected to the current node in the negative direction of the z-axis, that is, the Is there a bit of occupancy among the 4 child nodes.
- FIG. 6 it shows a schematic flowchart of predicting coordinate information according to a plurality of encoded child nodes according to an embodiment of the present application. As shown in Figure 6, the process may include:
- the first and second predicted values in the first coordinate direction and the second and second predicted values in the second coordinate direction also need to be determined according to the occupancy bit information of the coded child nodes adjacent to the current node. and the third second predicted value in the third coordinate direction.
- the determining the predicted coordinate values in the three coordinate directions according to the occupancy bit information of the coded child nodes adjacent to the current node may include:
- the occupancy bit information of the coded child nodes adjacent to the current node determine the first child node occupied by the point whose coordinate value in the first direction is the fifth value in the coded child nodes on the plane perpendicular to the first coordinate direction.
- the number and the number of second child nodes occupied by the point whose coordinate value in the first direction is the sixth value, and the number of points occupied by the point whose coordinate value in the second direction is the fifth value in the encoded child nodes on the plane that is determined to be perpendicular to the second coordinate direction
- a third second predicted value of the third coordinate direction is determined.
- the fifth value may be 1, and the sixth value may be 0; or, the fifth value may be 0, and the sixth value may be 1.
- the fifth value may be set to 1, and the sixth value may be set to 0, but there is no specific limitation.
- the No. 1 neighbor node, the No. 3 neighbor node, and the No. 5 neighbor node of the current node are shown here. According to the neighbor node No. 3 and the neighbor node No.
- the second coordinate direction is the y-axis coordinate direction, taking the fifth value as 1 and the sixth value as 0 as an example
- the third coordinate direction is the z-axis coordinate direction, taking the fifth value as 1 and the sixth value as 0 as an example
- FIG. 8 shows another schematic flowchart of predicting coordinate information according to a plurality of encoded child nodes according to an embodiment of the present application. As shown in Figure 8, the process can include:
- the No. 1 neighbor node, the No. 3 neighbor node, and the No. 5 neighbor node of the current node are shown here. According to the neighbor node No. 3 and the neighbor node No.
- the second coordinate direction is the y-axis coordinate direction, taking the fifth value as 1 and the sixth value as 0 as an example
- the third coordinate direction is the z-axis coordinate direction, taking the fifth value as 1 and the sixth value as 0 as an example
- FIG. 10 shows another schematic flowchart of predicting coordinate information according to a plurality of encoded child nodes according to an embodiment of the present application. As shown in Figure 10, the process can include:
- the index number value of the second context model in the first coordinate direction can be determined accordingly; After the second first predicted value and the second second predicted value, the index number value of the second context model in the second coordinate direction can be determined accordingly; after obtaining the third first predicted value and the third second predicted value in the third coordinate direction After the predicted value, the index number value of the second context model in the third coordinate direction can be determined accordingly; thus, the index number value of the second context model is determined, and then from equation (2) to equation (10) and so on Among the second candidate context models, the second candidate context model corresponding to the index number value is selected to be determined as the second context model.
- the determining the prediction identification information of the current node, and determining the index number value of the first context model according to the prediction identification information can include:
- an index number value of the first context model is determined.
- the first direction value (O ncx ) indicates whether the M encoded child nodes connected to the current node in the first coordinate direction are occupied by a point
- the second direction value (O ncy ) indicates the second coordinate Whether the M encoded child nodes connected to the current node in the direction are occupied
- the third direction value (O ncz ) represents the M encoded child nodes connected to the current node in the third coordinate direction. Whether the point is occupied, M is an integer greater than 0.
- N onc Oncx + Oncy + Oncz , which is the number of points occupied in the 4 encoded sub-nodes in 3 directions, and can take a value 0 to 3.
- two context models can be constructed, as shown in the following:
- FIG. 11 shows a schematic flowchart of a process of predicting identification information according to a plurality of encoded child nodes according to an embodiment of the present application. As shown in Figure 11, the process may include:
- S1103 perform a sum calculation on Oncx , Oncy and Oncz to determine N onc ;
- two context models can be constructed, as shown in the following:
- FIG. 12 shows another schematic flowchart of predicting identification information according to a plurality of encoded child nodes according to an embodiment of the present application. As shown in Figure 12, the process may include:
- S1203 perform a summation calculation on Oncx , Oncy and Oncz to determine N onc ;
- N onc can be calculated, and then the predicted value of the identification information can be determined according to N onc , and then the index number value of the first context model can be determined, and then according to the formula Among the two first candidate context models shown in (11) or (12), the first candidate context model corresponding to the index number value is selected to determine it as the first context model.
- the number of context models used for predicting the flag information (flag) may be 2 types of context models.
- the unique context index number of the identification information can be predicted, and one of the two context models is selected according to the index number for subsequent CABAC on the identification information.
- a unique context index number can be obtained according to the occupancy bit information of the neighbor sub-nodes of the current node, and one of the 18 context models is selected according to the index number for subsequent CABAC prediction of coordinate values.
- the occupied bit information is 1, otherwise the occupied bit information is 0.
- the neighbor configuration number NC
- the value range of NC can be 0 to 63, that is, 000000 to 111111 in binary.
- n context models among them can be arbitrarily combined, that is, an x number of context models can be constructed, where x can take a value from 1 to 64.
- the occupancy bit information of the 24 encoded child nodes of the 3 neighbor nodes of the current node is obtained (occupancy bit), that is, if a point in the child node is occupied, the occupancy bit information is 1; otherwise, the occupancy bit information is 0.
- the neighbor child node configuration number (Neighbouring configuration number by child level, NC c ) can be calculated, and the value range of NC c can be 0 to 224, that is, "24 0s" to "24 1s" in binary.
- NC c a context model with a maximum number of 224 contexts can be constructed, and n context models among them can be arbitrarily combined, that is, a number of x contexts can be constructed, where x can take a value from 1 to 224.
- the context models constructed above can all be used to encode coordinate information and identification information.
- a context model can be constructed to perform the coordinate information and required identification information (flag) of a single child node in the current node.
- CABAC CABAC
- This embodiment provides a point cloud encoding method, by determining the occupied number of child nodes of the current node; The value of the identification information is entropy encoded and written into the code stream; if the value of the identification information indicates that only one occupied child node is included in the child nodes divided by the current node, then determine the occupied child node.
- the second context model is used to perform entropy encoding on the coordinate information of the occupied child node, and write into the code stream.
- the identification information and coordinate information are entropy encoded based on the context model, which can make full use of
- the spatial correlation of point clouds can improve the coding efficiency of point clouds.
- FIG. 14 shows a detailed schematic flowchart of a point cloud encoding method provided by an embodiment of the present application. As shown in Figure 14, the detailed process may include:
- i is an integer greater than or equal to 0 and less than K, where K represents the number of division layers of the octree. It should be noted that this detailed process is entering the 0th layer of the octree for the first time.
- j is an integer greater than or equal to 0 and less than N, where N is the total number of nodes in the i-th layer.
- S1404 Calculate the neighbor configuration number NC according to the occupancy bit information of the 6 neighbor nodes of the current node;
- S1405 Calculate the occupied number N oc of the child nodes according to the occupancy bit information of the 8 child nodes divided by the current node;
- step S1406 if the judgment result is yes, then execute S1407-S1408, and then execute S1409; if the judgment result is no, then directly execute S1409.
- step S1412 it is determined whether N oc is equal to 1, if the determination result is no, then S1413 is performed; if the determination result is yes, then S1414 is directly performed. After S1413 and S1414, S1415 will be executed.
- S1415 perform CABAC on the flag based on the context model of the predicted flag
- S1418 Perform CABAC of the context model based on the predicted coordinate information on the coordinate information X, Y, and Z;
- step S1416 it is determined whether the flag is equal to 1, and if the determination result is yes, execute S1417-S1418; if the determination result is no, execute S1426.
- step S1410 if the judgment result is NO, execute S1411; if the judgment result is YES, execute S1419.
- step S1411 if the judgment result is yes, then execute S1412; if the judgment result is no, execute S1426.
- step S1419 it is determined whether N oc is equal to 1, and if the determination result is no, then S1420 is performed; if the determination result is yes, then S1421 is directly performed. After S1420 and S1421, S1422 will be executed.
- N all N all +1;
- the assignment flag is 1 to represent the case where N oc is equal to 1 (that is, only 1 child node of the 8 child nodes is occupied. ), assigning flag to 0 represents the case where N oc is not equal to 1 (that is, more than one child node of the eight child nodes is occupied). Since the prediction flag has been obtained, at this time, adaptive binary arithmetic coding based on the context "prediction flag" can be performed on the flag and written into the code stream.
- the assignment flag is 1 to represent the case where N oc is equal to 1 (that is, only 1 child node is occupied among the 8 child nodes), the assignment If the flag is 0, it means that N oc is not equal to 1 (that is, more than one child node is occupied among the 8 child nodes), and the adaptive binary arithmetic coding based on the context "prediction flag" is performed on the flag and written into the code stream.
- the coordinate information (X/Y/Z coordinate value) of a single child node of the current node is first calculated according to the occupancy bit information of the eight child nodes of the current node, and the X/Y/Z coordinate values are respectively based on Adaptive binary arithmetic coding of context "prediction coordinate information", written into the code stream.
- the protection point of the technical solution of the present application is that a context model of "prediction flag” and "prediction coordinate information" is constructed for the coding of a single child node, and the compression efficiency is improved through CABAC. And control whether the point cloud encoding method is enabled or not through the proportion of nodes with a single child node in all nodes.
- the technical solution of the present application more fully utilizes the spatial correlation of the point cloud, so that the coding efficiency of the G-PCC is further improved.
- BD-Rate under the condition of lossy compression of geometric information as shown in Table 2 below, which shows that, compared with the related art, under the condition of obtaining the same encoding quality, the encoding rate of the embodiment of the present application is higher than the encoding of the related art The percentage of rate savings (negative values for BD-Rate) or increases (positive values for BD-Rate).
- the Bpip Ratio under the condition of lossless compression of geometric information as shown in Table 3 below, it shows that in the case of no loss of point cloud quality, the coding rate of the embodiment of the present application accounts for the percentage of the coding rate of the related art, here, the numerical value The lower the value, the greater the code rate saved by the embodiment of the present application.
- This embodiment provides a point cloud encoding method, and the specific implementation of the foregoing embodiment is described in detail through the foregoing embodiment. It can be seen from this that, since a context model is respectively constructed for the identification information and coordinate information of a single child node, Entropy coding of identification information and coordinate information based on the context model can make full use of the spatial correlation of the point cloud, thereby improving the coding efficiency of the point cloud.
- the point cloud decoding method provided by the embodiment of the present application is applied to a video decoding device, that is, a G-PCC decoder, which may also be referred to as a decoder for short.
- a video decoding device that is, a G-PCC decoder, which may also be referred to as a decoder for short.
- the functions implemented by the method can be implemented by calling a computer program by the second processor in the decoder.
- the computer program can be stored in the second memory.
- the decoder includes at least the second processor and the second memory.
- FIG. 15 it shows a schematic flowchart of a point cloud decoding method provided by an embodiment of the present application. As shown in Figure 15, the method may include:
- S1501 Parse the code stream by using the first context model, and obtain the value of the identification information of the single child node of the current node.
- a point in a point cloud, can be all points in the point cloud, or some points in the point cloud, and these points are relatively concentrated in space.
- the method in the embodiment of the present application is mainly applied to the “context modeling” part, aiming at the geometric information based on the point cloud neighbor nodes in the current related art.
- Entropy decoding is optimized to improve the utilization of spatial correlation.
- the method may also include:
- the value of the identification information is equal to the first identification value, it is determined that only one occupied child node is included in the child nodes divided by the current node;
- the sub-nodes divided by the current node include at least two occupied sub-nodes.
- the first identification value may be 1, and the second identification value may be 0; or, the first identification value may be 0, and the second identification value may be 1.
- the first identification value may be set to 1, and the second identification value may be set to 0, but it is not specifically limited.
- the value of the identification information may also be the number of occupied child nodes. For example, if the value of the identification information is equal to 0, then there is no occupied child node in the child nodes divided by the current node; if the value of the identification information is equal to 1, then only one occupied child node is included in the child nodes divided by the current node; If the value of the identification information is greater than or equal to 2, the child nodes divided by the current node include at least two occupied child nodes.
- the code stream needs to be parsed at this time to obtain the coordinate information of the occupied child node.
- the entropy encoding method used for the coordinate information of the occupied child node may be different, and the entropy decoding method used for the coordinate information of the occupied child node may also be different at this time. Therefore, the embodiment of the present application also needs to determine the number of neighbor configurations of the current node.
- the method may also include:
- the second context model parses the code stream, and obtains the coordinate information of the occupied child node.
- the method may further include:
- the neighbor configuration number indicates that no neighbor node is occupied in the current node
- the value of the identification information indicates that only one occupied child node is included in the sub-nodes divided by the current node
- use an equal probability The step of static binary arithmetic parsing the code stream and obtaining the coordinate information of the occupied child node.
- the neighbor configuration number (Neighbouring configuration number, NC) is used to indicate whether any neighbor node is occupied among the multiple neighbor nodes of the current node.
- the determining the number of neighbor configurations of the current node may include:
- the neighbor configuration number is determined according to the occupancy bit information of the neighbor node.
- the neighbor nodes may include at least one of the following: a neighbor node connected to the left side of the current node, a neighbor node connected to the right side of the current node, and a neighbor node connected to the upper side of the current node A neighbor node, a neighbor node connected to the lower side of the current node, a neighbor node connected to the back side of the current node, and a neighbor node connected to the front side of the current node. That is to say, there are usually 6 neighbor nodes of the current node, as shown in FIG. 2 .
- the occupancy bit information of the neighbor node is determined according to whether there is a point occupied in the neighbor node.
- the obtaining the occupancy bit information of the neighbor nodes of the current node may include:
- the first value may be 1 and the second value may be 0; or, the first value may be 0 and the second value may be 1.
- the first value may be set to 1, and the second value may be set to 0, but there is no specific limitation.
- the occupancy bit information of the neighbor node is equal to 1; if there is no point occupation in a neighbor node, then the The occupancy bit information of the neighbor node is equal to 0. In this way, according to the occupancy bit information of the 6 neighbor nodes of the current node, the number of neighbor configurations can be calculated.
- the method may also include:
- the neighbor configuration number is equal to the second threshold, it is determined that no neighbor node is occupied in the current node.
- the value range of the neighbor configuration number is 0 to 63, and the second threshold may be set to 0. That is to say, if the neighbor configuration number is greater than 0, it can indicate that the current node has neighbor nodes occupied; if the neighbor configuration number is equal to 0, it can indicate that no neighbor node is occupied in the current node.
- the method may further include: determining the first context model and the second context model.
- the first context model may be used to predict the identification information
- the second context model may be used to predict the coordinate information.
- the determining the first context model and the second context model may include:
- the first context model and the second context model are determined.
- this embodiment of the present application introduces a new variable, that is, a single child node enable variable (which can be represented by ctxSingleChildEnabled).
- the single child node enabling variable is related to the number of nodes (represented by N all ) and the number of single child nodes (represented by N singe ).
- the determining the value of the single child node enable variable may include:
- the value of the single child node enable variable is a fourth value.
- the third value may be 1, and the fourth value may be 0; or, the third value may be 0, and the fourth value may be 1.
- the third value may be set to 1, and the fourth value may be set to 0, but it is not specifically limited.
- the preset threshold represents a preset empirical value, and can be used as a measurement index for judging the value of the enable variable of a single child node.
- the value range of the preset threshold is within [0, 1], which is specifically adjusted according to the actual situation.
- the preset threshold may be set to 0.5, but it is not specifically limited here.
- a single child node enable variable can be represented by ctxSingleChildEnabled.
- the determination of the enabling variable for a single child node can be implemented according to the above formula (1).
- the method may also include:
- the method may further include:
- the initial value of the number of nodes is set to 0, the initial value of the number of single child nodes is 0, and the initial value of the single child node enable variable is 0;
- i is an integer greater than or equal to 0 and less than K.
- determining the number of nodes and the number of single child nodes may include:
- a decoded node including only one occupied child node is determined, and the single child node number is obtained.
- both the number of nodes and the number of single child nodes are the decoded nodes in the i-th layer. For the number of single child nodes, determining the decoded node including only one occupied child node from the decoded nodes, and obtaining the single number of child nodes, including:
- the decoded node determine whether the sub-nodes divided by the decoded node include only one occupied sub-node
- an octree of K layers can be obtained.
- N all the number of single child nodes
- the value of the single child node enable variable (ctxSingleChildEnabled) can be calculated in combination with formula (1), so as to determine whether the entropy needs to be performed using the first context model and the second context model in the future. decoding.
- the method may further include:
- the first context model is determined according to the index number value of the first context model.
- the determining the first context model according to the index number value of the first context model may include:
- a first candidate context model corresponding to the index number value is selected from the at least one first candidate context model, and the selected first candidate context model is determined as the The first context model.
- the method may further include:
- the second context model is determined according to the index number value of the second context model.
- the determining the second context model according to the index number value of the second context model may include:
- a second candidate context model corresponding to the index number value is selected from the at least one second candidate context model, and the selected second candidate context model is determined as the The second context model.
- the determining the predicted coordinate information of the current node, and determining the index serial number value of the second context model according to the predicted coordinate information can include:
- the index number value of the second context model is determined according to the predicted coordinate values in the three coordinate directions.
- the predicted coordinate information may include predicted coordinate values in the first coordinate direction, predicted coordinate values in the second coordinate direction, and predicted coordinate values in the third coordinate direction.
- the first coordinate direction may be the x-axis coordinate direction
- the second coordinate direction may be the y-axis coordinate direction
- the third coordinate direction may be the z-axis coordinate direction.
- the index number value of the second context model can also be divided into: the index number value of the second context model in the first coordinate direction, and the index number value of the second context model in the second coordinate direction value and the index ordinal value of the second context model in the third coordinate direction. Therefore, in some embodiments, the determining the index number value of the second context model according to the predicted coordinate values in the three coordinate directions may include:
- the first first predicted value and the first second predicted value in the first coordinate direction, and the second first predicted value and the second second predicted value in the second coordinate direction are obtained.
- An index number value of the second context model in the third coordinate direction is determined according to the third first predicted value and the third second predicted value in the third coordinate direction.
- determining the predicted coordinate values in three coordinate directions according to the occupancy bit information of the decoded child nodes adjacent to the current node may include:
- the placeholder information of M decoded child nodes adjacent to the current node in the first coordinate direction is determined from the placeholder information of the decoded child nodes adjacent to the current node, and according to the first coordinate
- the occupancy bit information of the M decoded child nodes connected to the current node in the direction determines the first-predicted coordinate value of the first coordinate direction
- the placeholder information of the M decoded child nodes adjacent to the current node in the second coordinate direction is determined from the placeholder information of the decoded child nodes adjacent to the current node, and according to the second coordinate
- the occupancy bit information of the M decoded child nodes connected to the current node in the direction determines the second-first predicted coordinate value of the second coordinate direction
- the placeholder information of M decoded child nodes adjacent to the current node in the third coordinate direction is determined from the placeholder information of the decoded child nodes adjacent to the current node, and according to the third coordinate
- the occupancy bit information of the M decoded child nodes connected to the current node in the direction determines the third-first predicted coordinate value in the third coordinate direction; wherein, M is an integer greater than 0.
- the first-to-one prediction in the first coordinate direction is determined according to occupancy bit information of M decoded child nodes connected to the current node in the first coordinate direction Coordinate values, which can include:
- the first direction value is determined according to the occupancy bit information of the M decoded child nodes connected to the current node in the first coordinate direction; wherein, the first direction value indicates that the current node is in the first coordinate direction relative to the current node. Whether the connected M decoded sub-nodes are somewhat occupied;
- a first-predicted value of the first coordinate direction is determined according to a comparison result between the first direction value and a preset direction value.
- the determining the second first coordinate direction of the second coordinate direction according to the occupancy bit information of the M decoded child nodes connected to the current node in the second coordinate direction Predicted coordinate values, which can include:
- the second direction value is determined according to the occupancy bit information of the M decoded child nodes connected to the current node in the second coordinate direction; wherein, the second direction value indicates that the second direction value is the same as the current node in the second coordinate direction. Whether the connected M decoded sub-nodes are somewhat occupied;
- a second-first predicted value of the second coordinate direction is determined according to a comparison result between the second direction value and a preset direction value.
- determining the third-first position in the third coordinate direction according to occupancy bit information of M decoded child nodes connected to the current node in the third coordinate direction Predicted coordinate values, which can include:
- the third direction value is determined according to the occupancy bit information of the M decoded child nodes connected to the current node in the third coordinate direction; wherein, the third direction value indicates that the third coordinate direction is the same as the current node. Whether the connected M decoded sub-nodes are somewhat occupied;
- a third-first predicted value of the third coordinate direction is determined according to the comparison result between the third direction value and the preset direction value.
- the first direction value (represented by O ncx ) can be defined as the placeholder information of the 4 decoded child nodes connected to the current node in the negative direction of the x-axis.
- the second direction value (represented by O ncy ) as the occupancy bit information of the 4 decoded child nodes connected to the current node in the negative direction of the y-axis, that is, the 4 child nodes Whether there is a point occupied in the node
- the third direction value (represented by Oncz ) is defined as the occupancy bit information of the 4 decoded child nodes connected to the current node in the negative direction of the z-axis, that is, whether the 4 child nodes have a point occupied .
- determining the predicted coordinate values in three coordinate directions according to the occupancy bit information of the decoded child nodes adjacent to the current node may include:
- the occupancy bit information of the decoded child nodes adjacent to the current node determine the first child node occupied by the point whose coordinate value in the first direction is the fifth value in the decoded child nodes on the plane perpendicular to the first coordinate direction
- the number and the number of second child nodes occupied by the point whose coordinate value in the first direction is the sixth value, and the number of points occupied by the point whose coordinate value in the second direction is the fifth value in the decoded child nodes on the plane that is determined to be perpendicular to the second coordinate direction
- the number of third child nodes and the number of fourth child nodes occupied by the point whose coordinate value in the second direction is the sixth value, and the number of points whose coordinate value in the third direction is the fifth value in the decoded child nodes on the plane that is determined to be perpendicular to the third coordinate direction
- the number of fifth child nodes occupied by the point and the number of sixth child nodes occupied by the point whose third-direction coordinate value is the sixth value
- a third second predicted value of the third coordinate direction is determined.
- the fifth value may be 1, and the sixth value may be 0; or, the fifth value may be 0, and the sixth value may be 1.
- the fifth value may be set to 1, and the sixth value may be set to 0, but there is no specific limitation.
- the number of child nodes occupied by a point in the eight child nodes of the The number of child nodes occupied by a point in the 8 child nodes whose y-axis coordinate value is 0 in the decoded neighbor node, which can be 0 to 8.
- the number of child nodes occupied by a point in the 8 child nodes of the The number of child nodes occupied by a point in the 8 child nodes whose z-axis coordinate value is 0 in the neighbor node of , which can be 0 to 8.
- the determining the prediction identification information of the current node, and determining the index sequence number value of the first context model according to the prediction identification information can include:
- the index number value of the first context model is determined.
- the first direction value (O ncx ) indicates whether the M decoded child nodes connected to the current node in the first coordinate direction are occupied or not
- the second direction value (O ncy ) indicates the second coordinate Whether a point is occupied in the M decoded child nodes connected to the current node in the direction
- the third direction value (O ncz ) indicates that among the M decoded child nodes connected to the current node in the third coordinate direction Whether the point is occupied, M is an integer greater than 0.
- N onc Oncx + Oncy + Oncz , which is the number of points occupied in the 4 encoded sub-nodes in 3 directions, and can take a value 0 to 3.
- two context models can be constructed, as shown in the above formula (11) or formula (12).
- the number of context models used for predicting the flag information (flag) may be 2 types of context models.
- the unique context index number of the identification information can be predicted, and one of the two context models is selected according to the index number for subsequent CABAC on the identification information.
- a unique context index number can be obtained, and one of the 18 context models can be selected according to the index number for subsequent CABAC prediction of coordinate values.
- the occupied bit information is 1, otherwise the occupied bit information is 0.
- the neighbor configuration number NC
- the value range of NC can be 0 to 63, that is, 000000 to 111111 in binary.
- n context models among them can be arbitrarily combined, that is, an x number of context models can be constructed, where x can take a value from 1 to 64.
- the occupancy bit information of the 24 decoded child nodes of the 3 neighbor nodes of the current node is obtained (occupancy bit), that is, if a point in the child node is occupied, the occupancy bit information is 1; otherwise, the occupancy bit information is 0.
- the neighbor child node configuration number (Neighbouring configuration number by child level, NC c ) can be calculated, and the value range of NC c can be 0 to 224, that is, "24 0s" to "24 1s" in binary.
- NC c a context model with a maximum number of 224 contexts can be constructed, and n context models among them can be arbitrarily combined, that is, an x number of contexts can be constructed, where x can take a value from 1 to 224.
- the context models constructed above can all be used to decode to obtain coordinate information and identification information.
- One sentence can be summarized as: using the occupancy bit information of the 6 neighbor nodes of the current node and the 24 decoded child nodes, a context model can be constructed, the required flag information (flag) can be obtained through decoding, and the occupied bits in the current node can be determined. Coordinate information of child nodes.
- S1503 Based on the coordinate information of the occupied child nodes, determine the occupied bit information of the child nodes divided by the current node.
- the method may further include:
- the occupancy bit information of the child node is equal to the first value, it is determined that a point in the child node is occupied;
- the method may further include: according to the occupancy bit information of the child nodes, determining the occupied number of the child node (N oc ).
- the first value may be 1 and the second value may be 0; or, the first value may be 0 and the second value may be 1.
- the first value may be set to 1, and the second value may be set to 0, but there is no specific limitation.
- the occupied bit information of the child node divided by the current node can be restored according to the coordinate information of the occupied child node.
- This embodiment provides a point cloud decoding method.
- the value of the identification information of a single child node of the current node is obtained; if the value of the identification information indicates that the current node is divided Only one occupied child node is included in the child nodes of the The placeholder information of the child nodes of .
- a context model is constructed for the identification information and coordinate information of a single child node, entropy decoding of the identification information and coordinate information based on the context model can make full use of the spatial correlation of the point cloud, thereby improving the decoding of the point cloud. efficiency.
- FIG. 16 shows a detailed schematic flowchart of a point cloud decoding method provided by an embodiment of the present application. As shown in Figure 16, the detailed process may include:
- i is an integer greater than or equal to 0 and less than K, where K represents the number of division layers of the octree. It should be noted that this detailed process is entering the 0th layer of the octree for the first time.
- j is an integer greater than or equal to 0 and less than N, where N is the total number of nodes in the i-th layer.
- S1604 Calculate the neighbor configuration number NC according to the occupancy bit information of the 6 neighbor nodes of the current node;
- S1606 Determine the predicted values (X 0 , Y 0 , Z 0 ) of the first set of coordinate information
- step S1605 if the judgment result is yes, then execute S1606 to S1607, and then execute S1608; if the judgment result is no, then directly execute S1608.
- the first context model is used to predict identification information (eg, flag); the second context model is used to predict coordinate information (eg, X/Y/Z coordinate values).
- step S1612 if the judgment result is yes, execute S1613 to S1614; if the judgment result is no, execute S1619.
- step S1609 if the judgment result is NO, execute S1610; if the judgment result is yes, execute S1615.
- N all N all +1;
- the adaptive binary arithmetic decoding based on the context "prediction flag" can be used to obtain the flag.
- flag is equal to 1
- equal probability static binary arithmetic decoding is used to obtain the coordinate information (X/Y/Z coordinate value) of a single child node in the current node, and the occupancy bit information of 8 child nodes is restored.
- N all N all +1.
- the protection point of the technical solution of the present application is that a context model of "prediction flag” and "prediction coordinate information" is constructed for the decoding of a single child node, and the compression efficiency is improved through CABAC. And control whether the point cloud decoding method is enabled or not through the proportion of nodes with a single child node in all nodes.
- This embodiment provides a point cloud decoding method.
- the specific implementation of the foregoing embodiment is described in detail through the foregoing embodiment. It can be seen from this that, since a context model is respectively constructed for the identification information and coordinate information of a single sub-node, Entropy decoding of the identification information and the coordinate information based on the context model can make full use of the spatial correlation of the point cloud, thereby improving the decoding efficiency of the point cloud.
- FIG. 17 shows a schematic structural diagram of the composition of an encoder 170 provided by an embodiment of the present application.
- the encoder 170 may include: a first determining unit 1701 and an encoding unit 1702; wherein,
- the first determining unit 1701 is configured to determine the occupied number of child nodes of the current node
- the encoding unit 1702 is configured to determine the value of the identification information of a single child node according to the occupied number of the child nodes, use the first context model to entropy encode the value of the identification information, and write the code stream;
- the encoding unit 1702 is further configured to, if the value of the identification information indicates that only one occupied child node is included in the child nodes divided by the current node, then determine the coordinate information of the occupied child node, and use the second context model for all the occupied child nodes.
- the coordinate information of the occupied child node is entropy encoded and written into the code stream.
- the first determining unit 1701 is further configured to determine the neighbor configuration number of the current node
- the encoding unit 1702 is further configured to, if the neighbor configuration number indicates that a neighbor node is occupied in the current node, the value of the identification information indicates that only one occupied child is included in the sub-nodes divided by the current node.
- the step of entropy encoding the coordinate information of the occupied child node by using the second context model is performed.
- the first determining unit 1701 is further configured to determine a value of a single child node enable variable; and the value of the single child node enable variable indicates that the current node is in a single child node enable state, the first context model and the second context model are determined.
- the first determining unit 1701 is specifically configured to acquire occupancy bit information of neighbor nodes of the current node; and determine the neighbor configuration number according to the occupancy bit information of the neighbor nodes.
- the first determining unit 1701 is further configured to determine that the occupancy bit information of the neighbor node is equal to the first value if a point is occupied in the neighbor node; if there is no point occupied in the neighbor node, Then it is determined that the occupancy bit information of the neighbor node is equal to the second value.
- the neighbor node includes at least one of the following: a neighbor node connected to the left side of the current node, a neighbor node connected to the right side of the current node, and the current node The neighbor node connected to the upper side, the neighbor node connected to the lower side of the current node, the neighbor node connected to the back side of the current node, and the neighbor node connected to the front side of the current node.
- the first determining unit 1701 is specifically configured to acquire occupancy bit information of the child nodes divided by the current node; and determine the occupied number of the child nodes according to the occupancy bit information of the child nodes.
- the first determining unit 1701 is further configured to determine that the occupancy bit information of the child node is equal to the first value if a point is occupied in the child node; if there is no point occupied in the child node, Then, it is determined that the placeholder information of the child node is equal to the second value.
- the first value is 1 and the second value is 0; or, the first value is 0 and the second value is 1.
- the encoder 170 may further include a first calculation unit 1703 and a first comparison unit 1704; wherein,
- the first determining unit 1701 is further configured to determine the number of nodes and the number of single child nodes;
- the first computing unit 1703 is configured to perform a division operation on the number of single child nodes and the number of nodes to obtain a first proportional value
- the first comparison unit 1704 is configured to compare the first proportional value with a preset threshold; and if the first proportional value is greater than the preset threshold, determine the value of the single child node enable variable is a third value; if the first proportional value is less than or equal to the preset threshold, the value of the single child node enable variable is determined to be a fourth value.
- the third value is 1 and the fourth value is 0; or, the third value is 0 and the fourth value is 1.
- the encoder 170 may further include a first setting unit 1705 configured to perform octree division on the input point cloud to obtain an octree of K layers, where K is an integer greater than 0; and When entering the i-th layer of the octree, the initial value of the number of nodes is set to 0, the initial value of the number of single child nodes is 0, and the initial value of the single child node enable variable is 0; Wherein, i is an integer greater than or equal to 0 and less than K.
- the first determining unit 1701 is further configured to obtain the number of nodes based on the encoded nodes in the i-th layer; and determine, from the encoded nodes, an encoded node that includes only one occupied child node node to obtain the number of the single child node.
- the encoder 170 may further include a first judgment unit 1706 configured to, in the coded node, judge whether the child node divided by the coded node includes only one occupied child node; if If the judgment result is yes, the operation of adding 1 to the single child node number is performed to update the single child node number; if the judgment result is no, the single child node number is maintained unchanged.
- a first judgment unit 1706 configured to, in the coded node, judge whether the child node divided by the coded node includes only one occupied child node; if If the judgment result is yes, the operation of adding 1 to the single child node number is performed to update the single child node number; if the judgment result is no, the single child node number is maintained unchanged.
- the first determining unit 1701 is specifically configured to, when the value of the single child node enable variable indicates that the current node is in the single child node enable state, determine the prediction identification information of the current node, and determine the prediction identification information of the current node according to the obtained value of the single child node enable variable.
- the prediction identification information is used to determine the index number value of the first context model; and the first context model is determined according to the index number value of the first context model.
- the encoder 170 may further include a first construction unit 1707 configured to construct at least one first candidate context model; wherein, different first candidate context models correspond to different index numbers;
- the first determining unit 1701 is further configured to select a first candidate context model corresponding to the index number value from the at least one first candidate context model according to the index number value of the first context model, and select the selected The first candidate context model is determined to be the first context model.
- the first determining unit 1701 is specifically configured to determine the predicted coordinate information of the current node when the value of the single child node enable variable indicates that the current node is in the single child node enabled state, and according to the The predicted coordinate information is used to determine the index number value of the second context model; and the second context model is determined according to the index number value of the second context model.
- the first construction unit 1707 is further configured to construct at least one second candidate context model; wherein, different second candidate context models correspond to different index numbers;
- the first determining unit 1701 is further configured to select a second candidate context model corresponding to the index number value from the at least one second candidate context model according to the index number value of the second context model, and select the selected The second candidate context model is determined as the second context model.
- the first determining unit 1701 is further configured to obtain the occupied bit information of the coded child nodes adjacent to the current node; according to the occupied bit information of the coded child nodes adjacent to the current node , determine the predicted coordinate values in three coordinate directions; and determine the index serial number value of the second context model according to the predicted coordinate values in the three coordinate directions.
- the first determining unit 1701 is further configured to determine, from the occupancy bit information of the encoded sub-nodes adjacent to the current node, M number of coded sub-nodes adjacent to the current node in the first coordinate direction encoding the placeholder information of the child nodes, and determining the first-predicted coordinate value of the first coordinate direction according to the placeholder information of the M encoded child nodes connected to the current node in the first coordinate direction ; From the placeholder information of the coded child nodes adjacent to the current node, determine the placeholder information of the M coded child nodes connected to the current node in the second coordinate direction, according to the second coordinate direction.
- the occupancy bit information of the M encoded child nodes connected to the current node in the coordinate direction determines the second-first predicted coordinate value in the second coordinate direction;
- the occupancy bit information of the M encoded child nodes connected to the current node in the third coordinate direction is determined in the occupancy bit information, according to the M coded child nodes connected to the current node in the third coordinate direction.
- the occupancy bit information of the encoded child node determines the third-first predicted coordinate value in the third coordinate direction; wherein, M is an integer greater than 0.
- the first determining unit 1701 is further configured to determine the first direction value according to the occupancy bit information of the M encoded child nodes connected to the current node in the first coordinate direction; wherein , the first direction value indicates whether a point is occupied in the M encoded child nodes connected to the current node in the first coordinate direction;
- the first comparing unit 1704 is further configured to determine a first-predicted value of the first coordinate direction according to a comparison result between the first direction value and a preset direction value.
- the first determining unit 1701 is further configured to determine the second direction value according to the occupancy bit information of the M encoded child nodes connected to the current node in the second coordinate direction; wherein , the second direction value indicates whether a point is occupied in the M encoded child nodes connected to the current node in the second coordinate direction;
- the first comparing unit 1704 is further configured to determine the second-first predicted value of the second coordinate direction according to the comparison result between the second direction value and the preset direction value.
- the first determining unit 1701 is further configured to determine the third direction value according to the occupancy bit information of the M encoded child nodes connected to the current node in the third coordinate direction; wherein , the third direction value indicates whether the M encoded child nodes connected to the current node in the third coordinate direction are occupied by a point;
- the first comparison unit 1704 is further configured to determine the third-first predicted value of the third coordinate direction according to the comparison result between the third direction value and the preset direction value.
- the first determining unit 1701 is further configured to determine, according to the occupancy bit information of the coded child nodes adjacent to the current node, the first among the coded child nodes on the plane perpendicular to the first coordinate direction The number of first child nodes occupied by the point whose direction coordinate value is the fifth value and the number of second child nodes occupied by the point whose first direction coordinate value is the sixth value, and the number of coded children on the plane perpendicular to the second coordinate direction is determined.
- the number of third child nodes occupied by the point whose coordinate value in the second direction is the fifth value and the number of fourth child nodes occupied by the point whose coordinate value in the second direction is the sixth value, and the number of points on the plane perpendicular to the third coordinate direction.
- the number of fifth child nodes occupied by the point whose third direction coordinate value is the fifth value in the encoded child nodes and the number of sixth child nodes occupied by the point whose third direction coordinate value is the sixth value;
- the first comparison unit 1704 is further configured to determine the first and second predicted values of the first coordinate direction based on the comparison result of the number of the first child nodes and the number of the second child nodes; and based on the third child node A comparison result between the number of nodes and the number of the fourth child nodes, to determine the second second prediction value of the second coordinate direction; and based on the comparison result of the number of the fifth child nodes and the number of the sixth child nodes, to determine The third and second predicted values of the third coordinate direction.
- the fifth value is 1 and the sixth value is 0; or, the fifth value is 0 and the sixth value is 1.
- the first determining unit 1701 is further configured to obtain, according to the predicted coordinate values in the three coordinate directions, a first first predicted value and a first second predicted value in the first coordinate direction, the The second first predicted value and the second second predicted value in the two coordinate directions, the third first predicted value and the third second predicted value in the third coordinate direction; and the first one predicted value according to the first coordinate direction and The first and second predicted values are used to determine the index number value of the second context model in the first coordinate direction; according to the second first predicted value and the second second predicted value in the second coordinate direction, all the second coordinate directions are determined.
- the index serial number value of the second context model; according to the third first predicted value and the third second predicted value in the third coordinate direction, the index serial number value of the second context model in the third coordinate direction is determined.
- the first determining unit 1701 is further configured to determine a first direction value, a second direction value and a third direction value; wherein the first direction value indicates that the first coordinate direction is connected to the current node Whether a point is occupied in the M encoded child nodes of the Whether the M encoded child nodes connected to the current node in the coordinate direction are occupied by points, M is an integer greater than 0;
- the first calculation unit 1703 is further configured to perform an addition calculation on the first direction value, the second direction value and the third direction value to determine a sum value;
- the first determining unit 1701 is further configured to determine a predicted value of the identification information according to the sum value; and determine an index number value of the first context model according to the predicted value.
- the first determining unit 1701 is further configured to, if the neighbor configuration number is greater than 0, determine that a neighbor node is occupied in the current node; if the neighbor configuration number is equal to 0, determine the No neighbor node is occupied in the current node.
- the first determining unit 1701 is further configured to, if the occupied number of the child node is equal to 1, determine that only one occupied child node is included in the child nodes divided by the current node; if the child node is If the occupied number is not equal to 1, it is determined that the child nodes divided by the current node include at least two occupied child nodes.
- the first determining unit 1701 is further configured to determine that the value of the identification information is a first identification value if the occupied number of the child node is equal to 1; if the occupied number of the child node is not equal to 1 If it is equal to 1, it is determined that the value of the identification information is the second identification value.
- the first determining unit 1701 is further configured to determine that the value of the identification information is the first identification value if only one occupied sub-node is included in the sub-nodes divided by the current node; If the sub-nodes divided by the current node include at least two occupied sub-nodes, it is determined that the value of the identification information is the second identification value.
- the first identification value is 1 and the second identification value is 0; or, the first identification value is 0 and the second identification value is 1.
- the first determining unit 1701 is further configured to obtain the occupancy bit information of the child nodes divided by the current node; and calculate and obtain the occupied child node according to the occupied bit information of the child nodes coordinate information.
- a "unit” may be a part of a circuit, a part of a processor, a part of a program or software, etc., of course, it may also be a module, and it may also be non-modular.
- each component in this embodiment may be integrated into one processing unit, or each unit may exist physically alone, or two or more units may be integrated into one unit.
- the above-mentioned integrated units can be implemented in the form of hardware, or can be implemented in the form of software function modules.
- the integrated unit is implemented in the form of a software functional module and is not sold or used as an independent product, it can be stored in a computer-readable storage medium.
- the technical solution of this embodiment is essentially or The part that contributes to the prior art or the whole or part of the technical solution can be embodied in the form of a software product, the computer software product is stored in a storage medium, and includes several instructions for making a computer device (which can be It is a personal computer, a server, or a network device, etc.) or a processor (processor) that executes all or part of the steps of the method described in this embodiment.
- the aforementioned storage medium includes: U disk, mobile hard disk, read only memory (Read Only Memory, ROM), random access memory (Random Access Memory, RAM), magnetic disk or optical disk and other media that can store program codes.
- an embodiment of the present application provides a computer storage medium, which is applied to the encoder 170, where the computer storage medium stores a point cloud encoding program, and when the point cloud encoding program is executed by the first processor, any one of the foregoing embodiments is implemented method described in item.
- FIG. 18 shows a schematic diagram of a specific hardware structure of the encoder 170 provided by the embodiment of the present application.
- it may include: a first communication interface 1801 , a first memory 1802 and a first processor 1803 ; each component is coupled together through a first bus system 1804 .
- the first bus system 1804 is used to implement connection communication between these components.
- the first bus system 1804 also includes a power bus, a control bus and a status signal bus.
- the various buses are labeled as the first bus system 1804 in FIG. 18 . in,
- the first communication interface 1801 is used for receiving and sending signals in the process of sending and receiving information with other external network elements;
- the first processor 1803 is configured to, when running the computer program, execute:
- the coordinate information of the occupied child node is determined, and the second context model is used for the occupied child node.
- the coordinate information is entropy encoded and written into the code stream.
- the first memory 1802 in this embodiment of the present application may be a volatile memory or a non-volatile memory, or may include both volatile and non-volatile memories.
- the non-volatile memory may be a read-only memory (Read-Only Memory, ROM), a programmable read-only memory (Programmable ROM, PROM), an erasable programmable read-only memory (Erasable PROM, EPROM), an electrically programmable read-only memory (Erasable PROM, EPROM). Erase programmable read-only memory (Electrically EPROM, EEPROM) or flash memory.
- Volatile memory may be Random Access Memory (RAM), which acts as an external cache.
- RAM Static RAM
- DRAM Dynamic RAM
- SDRAM Synchronous DRAM
- SDRAM double data rate synchronous dynamic random access memory
- Double Data Rate SDRAM DDRSDRAM
- enhanced SDRAM ESDRAM
- synchronous link dynamic random access memory Synchlink DRAM, SLDRAM
- Direct Rambus RAM Direct Rambus RAM
- the first processor 1803 may be an integrated circuit chip with signal processing capability. In the implementation process, each step of the above-mentioned method can be completed by an integrated logic circuit of hardware in the first processor 1803 or an instruction in the form of software.
- the above-mentioned first processor 1803 can be a general-purpose processor, a digital signal processor (Digital Signal Processor, DSP), an application specific integrated circuit (Application Specific Integrated Circuit, ASIC), a ready-made programmable gate array (Field Programmable Gate Array, FPGA) Or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components.
- DSP Digital Signal Processor
- ASIC Application Specific Integrated Circuit
- FPGA Field Programmable Gate Array
- the methods, steps, and logic block diagrams disclosed in the embodiments of this application can be implemented or executed.
- a general purpose processor may be a microprocessor or the processor may be any conventional processor or the like.
- the steps of the method disclosed in conjunction with the embodiments of the present application may be directly embodied as executed by a hardware decoding processor, or executed by a combination of hardware and software modules in the decoding processor.
- the software modules may be located in random access memory, flash memory, read-only memory, programmable read-only memory or electrically erasable programmable memory, registers and other storage media mature in the art.
- the storage medium is located in the first memory 1802, and the first processor 1803 reads the information in the first memory 1802, and completes the steps of the above method in combination with its hardware.
- the embodiments described herein may be implemented in hardware, software, firmware, middleware, microcode, or a combination thereof.
- the processing unit can be implemented in one or more Application Specific Integrated Circuits (ASIC), Digital Signal Processing (DSP), Digital Signal Processing Device (DSP Device, DSPD), programmable Logic Devices (Programmable Logic Device, PLD), Field-Programmable Gate Array (Field-Programmable Gate Array, FPGA), General Purpose Processors, Controllers, Microcontrollers, Microprocessors, Others for performing the functions described herein electronic unit or a combination thereof.
- the techniques described herein may be implemented through modules (eg, procedures, functions, etc.) that perform the functions described herein.
- Software codes may be stored in memory and executed by a processor.
- the memory can be implemented in the processor or external to the processor.
- the first processor 1803 is further configured to execute the method described in any one of the foregoing embodiments when running the computer program.
- This embodiment provides an encoder, and the encoder may include a first determination unit and an encoding unit.
- the encoder may include a first determination unit and an encoding unit.
- FIG. 19 shows a schematic structural diagram of the composition of a decoder 190 provided by an embodiment of the present application.
- the decoder 190 may include: a second determining unit 1901 and a decoding unit 1902; wherein,
- the decoding unit 1902 is configured to use the first context model to parse the code stream, and obtain the value of the identification information of the single child node of the current node;
- the decoding unit 1902 is further configured to, if the value of the identification information indicates that only one occupied child node is included in the child nodes divided by the current node, use the second context model to parse the code stream, and obtain the occupied child node coordinate information;
- the second determining unit 1901 is configured to determine, based on the coordinate information of the occupied child nodes, the occupancy bit information of the child nodes divided by the current node.
- the second determining unit 1901 is further configured to determine the neighbor configuration number of the current node
- the decoding unit 1902 is further configured to, if the neighbor configuration number indicates that a neighbor node is occupied in the current node, the value of the identification information indicates that only one occupied child is included in the sub-nodes divided by the current node. node, the step of parsing the code stream by using the second context model to obtain the coordinate information of the occupied child node is performed.
- the second determining unit 1901 is further configured to determine a value of a single child node enable variable; and the value of the single child node enable variable indicates that the current node is in a single child node enable state, the first context model and the second context model are determined.
- the second determining unit 1901 is specifically configured to acquire occupancy bit information of neighbor nodes of the current node; and determine the neighbor configuration number according to the occupancy bit information of the neighbor nodes.
- the second determining unit 1901 is further configured to determine that the occupancy bit information of the neighbor node is equal to the first value if a point is occupied in the neighbor node; if there is no point occupied in the neighbor node, Then it is determined that the occupancy bit information of the neighbor node is equal to the second value.
- the first value is 1 and the second value is 0; or, the first value is 0 and the second value is 1.
- the neighbor node includes at least one of the following: a neighbor node connected to the left side of the current node, a neighbor node connected to the right side of the current node, and the current node The neighbor node connected to the upper side, the neighbor node connected to the lower side of the current node, the neighbor node connected to the back side of the current node, and the neighbor node connected to the front side of the current node.
- the decoder 190 may further include a second calculation unit 1903 and a second comparison unit 1904; wherein,
- the second determining unit 1901 is further configured to determine the number of nodes and the number of single child nodes;
- the second computing unit 1903 is configured to perform a division operation on the number of single child nodes and the number of nodes to obtain a first proportional value
- the second comparison unit 1904 is configured to compare the first proportional value with a preset threshold; and if the first proportional value is greater than the preset threshold, determine the value of the single child node enable variable is a third value; if the first proportional value is less than or equal to the preset threshold, the value of the single child node enable variable is determined to be a fourth value.
- the third value is 1 and the fourth value is 0; or, the third value is 0 and the fourth value is 1.
- the decoder 190 may further include a second setting unit 1905 configured to perform octree division on the input point cloud to obtain an octree of K layers, where K is an integer greater than 0; and When entering the i-th layer of the octree, the initial value of the number of nodes is set to 0, the initial value of the number of single child nodes is 0, and the initial value of the single child node enable variable is 0; Wherein, i is an integer greater than or equal to 0 and less than K.
- the second determining unit 1901 is further configured to obtain the number of nodes based on the decoded nodes in the i-th layer; and determine, from the decoded nodes, decoded nodes including only one occupied child node node to obtain the number of the single child node.
- the decoder 190 may further include a second judging unit 1906 configured to, in the decoded node, judge whether the sub-nodes divided by the decoded node include only one occupied sub-node; If the judgment result is yes, the operation of adding 1 to the single child node number is performed to update the single child node number; if the judgment result is no, the single child node number is maintained unchanged.
- a second judging unit 1906 configured to, in the decoded node, judge whether the sub-nodes divided by the decoded node include only one occupied sub-node; If the judgment result is yes, the operation of adding 1 to the single child node number is performed to update the single child node number; if the judgment result is no, the single child node number is maintained unchanged.
- the second determining unit 1901 is specifically configured to, when the value of the single child node enable variable indicates that the current node is in the single child node enable state, determine the prediction identification information of the current node, and determine the prediction identification information of the current node according to the The prediction identification information is used to determine the index number value of the first context model; and the first context model is determined according to the index number value of the first context model.
- the decoder 190 may further include a second construction unit 1907, configured to construct at least one first candidate context model; wherein, different first candidate context models correspond to different index numbers;
- the second determining unit 1901 is further configured to select a first candidate context model corresponding to the index number value from the at least one first candidate context model according to the index number value of the first context model, and select the selected The first candidate context model is determined to be the first context model.
- the second determining unit 1901 is specifically configured to, when the value of the single child node enable variable indicates that the current node is in the single child node enable state, determine the predicted coordinate information of the current node, and determine the predicted coordinate information of the current node according to the The predicted coordinate information is used to determine the index number value of the second context model; and the second context model is determined according to the index number value of the second context model.
- the second construction unit 1907 is further configured to construct at least one second candidate context model; wherein, different second candidate context models correspond to different index numbers;
- the second determining unit 1901 is further configured to select a second candidate context model corresponding to the index number value from the at least one second candidate context model according to the index number value of the second context model, and select the selected The second candidate context model is determined as the second context model.
- the second determining unit 1901 is further configured to acquire the placeholder information of the decoded child nodes adjacent to the current node; according to the placeholder information of the decoded child nodes adjacent to the current node , determine the predicted coordinate values in three coordinate directions; and determine the index serial number value of the second context model according to the predicted coordinate values in the three coordinate directions.
- the second determining unit 1901 is further configured to determine, from the occupancy bit information of the decoded child nodes adjacent to the current node, M number of already decoded sub-nodes adjacent to the current node in the first coordinate direction Decoding the placeholder information of the child nodes, and determining the first-predicted coordinate value of the first coordinate direction according to the placeholder information of the M decoded child nodes connected to the current node in the first coordinate direction ; Determine the occupancy bit information of M decoded sub-nodes that are connected with the current node in the second coordinate direction from the occupancy bit information of the adjacent decoded child nodes of the current node, according to the second The occupancy bit information of the M decoded child nodes connected to the current node in the coordinate direction determines the second-first predicted coordinate value in the second coordinate direction; The occupancy bit information of the M decoded child nodes connected to the current node in the third coordinate direction is determined in the occupancy bit information, according to the M decoded child nodes connected to the current node in the third coordinate direction is determined
- the second determining unit 1901 is further configured to determine the first direction value according to the occupancy bit information of the M decoded child nodes connected to the current node in the first coordinate direction; wherein , the first direction value indicates whether the M decoded child nodes connected to the current node in the first coordinate direction are occupied by a point;
- the second comparison unit 1904 is further configured to determine the first-predicted value of the first coordinate direction according to the comparison result between the first direction value and the preset direction value.
- the second determining unit 1901 is further configured to determine the second direction value according to the occupancy bit information of the M decoded child nodes connected to the current node in the second coordinate direction; wherein , the second direction value indicates whether the M decoded child nodes connected to the current node in the second coordinate direction are occupied by a point;
- the second comparison unit 1904 is further configured to determine the second-first predicted value of the second coordinate direction according to the comparison result between the second direction value and the preset direction value.
- the second determining unit 1901 is further configured to determine the third direction value according to the occupancy bit information of the M decoded child nodes connected to the current node in the third coordinate direction; wherein , the third direction value indicates whether the M decoded child nodes connected to the current node in the third coordinate direction are occupied by a point;
- the second comparing unit 1904 is further configured to determine the third-first predicted value of the third coordinate direction according to the comparison result between the third direction value and the preset direction value.
- the second determining unit 1901 is further configured to determine, according to the occupancy bit information of the decoded child nodes adjacent to the current node, the first among the decoded child nodes on the plane perpendicular to the first coordinate direction The number of first child nodes occupied by the point whose direction coordinate value is the fifth value and the number of second child nodes occupied by the point whose first direction coordinate value is the sixth value, and the number of decoded children on the plane perpendicular to the second coordinate direction is determined.
- the number of third child nodes occupied by the point whose coordinate value in the second direction is the fifth value and the number of fourth child nodes occupied by the point whose coordinate value in the second direction is the sixth value, and the number of points on the plane perpendicular to the third coordinate direction.
- the number of fifth child nodes occupied by the point whose third direction coordinate value is the fifth value in the decoded child nodes and the number of sixth child nodes occupied by the point whose third direction coordinate value is the sixth value;
- the second comparison unit 1904 is further configured to determine the first and second predicted values of the first coordinate direction based on the comparison result of the number of the first child node and the number of the second child node; and based on the third child node A comparison result between the number of nodes and the number of the fourth child nodes, to determine the second second prediction value of the second coordinate direction; and based on the comparison result of the number of the fifth child nodes and the number of the sixth child nodes, to determine The third and second predicted values of the third coordinate direction.
- the fifth value is 1 and the sixth value is 0; or, the fifth value is 0 and the sixth value is 1.
- the second determining unit 1901 is further configured to obtain, according to the predicted coordinate values in the three coordinate directions, a first first predicted value and a first second predicted value in the first coordinate direction, the The second first predicted value and the second second predicted value in the two coordinate directions, the third first predicted value and the third second predicted value in the third coordinate direction; and the first one predicted value according to the first coordinate direction and The first and second predicted values are used to determine the index number value of the second context model in the first coordinate direction; according to the second first predicted value and the second second predicted value in the second coordinate direction, all the second coordinate directions are determined.
- the index serial number value of the second context model; according to the third first predicted value and the third second predicted value in the third coordinate direction, the index serial number value of the second context model in the third coordinate direction is determined.
- the second determining unit 1901 is further configured to determine a first direction value, a second direction value and a third direction value; wherein the first direction value indicates that the first coordinate direction is connected to the current node Whether a point is occupied in the M decoded child nodes of Whether the M decoded child nodes connected to the current node in the coordinate direction occupy points, M is an integer greater than 0;
- the second calculation unit 1903 is further configured to perform an addition calculation on the first direction value, the second direction value and the third direction value to determine a sum value;
- the second determining unit 1901 is further configured to determine a predicted identification value of the identification information according to the sum value; and determine an index number value of the first context model according to the predicted identification value.
- the second determining unit 1901 is further configured to, if the neighbor configuration number is greater than 0, determine that a neighbor node is occupied in the current node; if the neighbor configuration number is equal to 0, determine the No neighbor node is occupied in the current node.
- the second determining unit 1901 is further configured to, if the value of the identification information is equal to the first identification value, determine that the sub-nodes divided by the current node include only one occupied sub-node; If the value of the identification information is equal to the second identification value, it is determined that the sub-nodes divided by the current node include at least two occupied sub-nodes.
- the first identification value is 1 and the second identification value is 0; or, the first identification value is 0 and the second identification value is 1.
- a "unit” may be a part of a circuit, a part of a processor, a part of a program or software, etc., of course, it may also be a module, and it may also be non-modular.
- each component in this embodiment may be integrated into one processing unit, or each unit may exist physically alone, or two or more units may be integrated into one unit.
- the above-mentioned integrated units can be implemented in the form of hardware, or can be implemented in the form of software function modules.
- the integrated unit may be stored in a computer-readable storage medium.
- this embodiment provides a computer storage medium, which is applied to the decoder 190 , where the computer storage medium stores a point cloud decoding program, and when the point cloud decoding program is executed by the second processor, the above-mentioned embodiments are implemented. The method of any one.
- FIG. 20 shows a schematic diagram of a specific hardware structure of the decoder 190 provided by the embodiment of the present application.
- it may include: a second communication interface 2001 , a second memory 2002 and a second processor 2003 ; each component is coupled together through a second bus system 2004 .
- the second bus system 2004 is used to realize the connection communication between these components.
- the second bus system 2004 also includes a power bus, a control bus, and a status signal bus.
- the various buses are designated as the second bus system 2004 in FIG. 20 . in,
- the second communication interface 2001 is used for receiving and sending signals in the process of sending and receiving information with other external network elements;
- a second memory 2002 for storing computer programs that can run on the second processor 2003;
- the second processor 2003 is configured to, when running the computer program, execute:
- the second context model to parse the code stream to obtain the coordinate information of the occupied child node
- the occupied bit information of the child nodes divided by the current node is determined.
- the second processor 2003 is further configured to execute the method described in any one of the foregoing embodiments when running the computer program.
- the hardware function of the second memory 2002 is similar to that of the first memory 1802, and the hardware function of the second processor 2003 is similar to that of the first processor 1803; details are not described here.
- This embodiment provides a decoder, and the decoder may include a second determination unit and a decoding unit.
- the decoder may include a second determination unit and a decoding unit.
- the occupied number of the child nodes of the current node is determined; the value of the identification information of a single child node is determined according to the occupied number of the child nodes, and the identification information of the single child node is determined by using the first context model.
- the value of the information is entropy encoded and written into the code stream; if the value of the identification information indicates that only one occupied child node is included in the child nodes divided by the current node, then determine the coordinates of the occupied child node information, using the second context model to entropy encode the coordinate information of the occupied child node, and write it into the code stream.
- the value of the identification information of a single child node of the current node is obtained; if the value of the identification information indicates that only one sub-node divided by the current node includes one Occupied child nodes, use the second context model to parse the code stream to obtain the coordinate information of the occupied child nodes; based on the coordinate information of the occupied child nodes, determine the placeholder bits of the child nodes divided by the current node information.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请实施例公开了一种点云编解码方法、编码器、解码器以及计算机存储介质,该方法包括:确定当前节点的子节点被占据数;根据所述子节点被占据数确定单一子节点的标识信息的取值,利用第一上下文模型对所述标识信息的取值进行熵编码,并写入码流;若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则确定所述被占据子节点的坐标信息,利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码,并写入码流。
Description
本申请实施例涉及编解码技术领域,尤其涉及一种点云编解码方法、编码器、解码器以及计算机存储介质。
在基于几何的点云压缩(Geometry-based Point Cloud Compression,G-PCC)编码器框架中,点云的几何信息和每个点云所对应的属性信息是分开进行编码的。几何编码完成后,会对几何信息进行重建,而属性信息的编码将依赖于重建的几何信息。其中,属性信息编码主要针对颜色信息的编码,以将颜色信息从空间域变换到频域,得到高频系数和低频系数,最后对系数进行量化和熵编码,生成二进制码流。
然而,目前的相关技术中,根据当前节点的六个邻居节点的占位比特构建上下文模型用于基于上下文模型的自适应二进制算术编码(Context-based Adaptive Binary Arithmetic Coding,CABAC),但是在该过程中,由于没有充分利用空间相关性,降低了点云的编解码效率。
发明内容
本申请实施例提供一种点云编解码方法、编码器、解码器以及计算机存储介质,可以充分利用点云的空间相关性,从而能够提高编解码效率。
本申请实施例的技术方案可以如下实现:
第一方面,本申请实施例提供了一种点云编码方法,应用于编码器,该方法包括:
确定当前节点的子节点被占据数;
根据所述子节点被占据数确定单一子节点的标识信息的取值,利用第一上下文模型对所述标识信息的取值进行熵编码,并写入码流;
若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则确定所述被占据子节点的坐标信息,利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码,并写入码流。
第二方面,本申请实施例提供了一种点云解码方法,应用于解码器,该方法包括:
利用第一上下文模型解析码流,获取当前节点的单一子节点的标识信息的取值;
若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则利用第二上下文模型解析码流,获取所述被占据子节点的坐标信息;
基于所述被占据子节点的坐标信息,确定所述当前节点划分的子节点的占位比特信息。
第三方面,本申请实施例提供了一种编码器,该编码器包括第一确定单元和编码单元;其中,
第一确定单元,配置为确定当前节点的子节点被占据数;
编码单元,配置为根据所述子节点被占据数确定单一子节点的标识信息的取值,利用第一上下文模型对所述标识信息的取值进行熵编码,并写入码流;
编码单元,还配置为若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则确定所述被占据子节点的坐标信息,利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码,并写入码流。
第四方面,本申请实施例提供了一种编码器,该编码器包括第一存储器和第一处理器;其中,
第一存储器,用于存储能够在第一处理器上运行的计算机程序;
第一处理器,用于在运行所述计算机程序时,执行如第一方面所述的方法。
第五方面,本申请实施例提供了一种解码器,该解码器包括第二确定单元和解码单元;其中,
解码单元,配置为利用第一上下文模型解析码流,获取当前节点的单一子节点的标识信息的取值;
解码单元,还配置为若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则利用第二上下文模型解析码流,获取所述被占据子节点的坐标信息;
第二确定单元,配置为基于所述被占据子节点的坐标信息,确定所述当前节点划分的子节点的占位 比特信息。
第六方面,本申请实施例提供了一种解码器,该解码器包括第二存储器和第二处理器;其中,
第二存储器,用于存储能够在第二处理器上运行的计算机程序;
第二处理器,用于在运行所述计算机程序时,执行如第二方面所述的方法。
第七方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如第一方面所述的方法、或者被第二处理器执行时实现如第二方面所述的方法。
本申请实施例提供了一种点云编解码方法、编码器、解码器以及计算机存储介质,在编码器侧,通过确定当前节点的子节点被占据数;根据所述子节点被占据数确定单一子节点的标识信息的取值,利用第一上下文模型对所述标识信息的取值进行熵编码,并写入码流;若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则确定所述被占据子节点的坐标信息,利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码,并写入码流。在解码器侧,通过利用第一上下文模型解析码流,获取当前节点的单一子节点的标识信息的取值;若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则利用第二上下文模型解析码流,获取所述被占据子节点的坐标信息;基于所述被占据子节点的坐标信息,确定所述当前节点划分的子节点的占位比特信息。这样,由于针对单一子节点的标识信息和坐标信息分别构建了上下文模型,如此基于上下文模型对标识信息和坐标信息进行熵编解码,能够充分利用点云的空间相关性,从而能够提高点云的编解码效率。
图1A为相关技术提供的一种G-PCC编码器的框架组成示意图;
图1B为相关技术提供的一种G-PCC解码器的框架组成示意图;
图2为相关技术提供的一种邻居配置数的结构示意图;
图3为相关技术提供的一种子节点被占据数的结构示意图;
图4为本申请实施例提供的一种点云编码方法的流程示意图;
图5为本申请实施例提供的一种当前节点与已编码子节点的位置结构示意图;
图6为本申请实施例提供的一种根据多个已编码子节点预测坐标信息的流程示意图;
图7为本申请实施例提供的另一种当前节点与已编码子节点的位置结构示意图;
图8为本申请实施例提供的另一种根据多个已编码子节点预测坐标信息的流程示意图;
图9为本申请实施例提供的又一种当前节点与已编码子节点的位置结构示意图;
图10为本申请实施例提供的又一种根据多个已编码子节点预测坐标信息的流程示意图;
图11为本申请实施例提供的一种根据多个已编码子节点预测标识信息的流程示意图;
图12为本申请实施例提供的另一种根据多个已编码子节点预测标识信息的流程示意图;
图13为本申请实施例提供的又一种当前节点与已编码子节点的位置结构示意图;
图14为本申请实施例提供的一种点云编码方法的详细流程示意图;
图15为本申请实施例提供的一种点云解码方法的流程示意图;
图16为本申请实施例提供的一种点云解码方法的详细流程示意图;
图17为本申请实施例提供的一种编码器的组成结构示意图;
图18为本申请实施例提供的一种编码器的具体硬件结构示意图;
图19为本申请实施例提供的一种解码器的组成结构示意图;
图20为本申请实施例提供的一种解码器的具体硬件结构示意图。
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对 对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)点云压缩(Point Cloud Compression,PCC)
2)基于几何的点云压缩(Geometry-based Point Cloud Compression,G-PCC)
3)片(slice)
4)包围盒(bounding box)
5)八叉树(octree)
6)帧内预测(intra prediction)
7)三角面片集(triangle soup,trisoup)
8)基于上下文模型的自适应二进制算术编码(Context-based Adaptive Binary Arithmetic Coding,CABAC)
9)块(block)
10)交点(vertex)
11)红绿蓝(Red-Green-Blue,RGB)
12)亮度色度(Luminance-Chrominance,YUV)
13)细节层次(Level of Detail,LOD)
14)区域自适应分层变换(Region Adaptive Hierarchal Transform,RAHT)
15)查找表(Look Up Table,LUT)
16)动态图像专家组(Moving Picture Experts Group,MPEG)
17)国际标准化组织(International Standardization Organization,ISO)
18)国际电工委员会(International Electrotechnical Commission,IEC)
19)邻居节点中占据节点个数(Number of occupied neighbours,No)
这里,点云是物体表面的三维表现形式,通过光电雷达、激光雷达、激光扫描仪、多视角相机等采集设备,可以采集得到物体表面的点云(数据)。
点云(Point Cloud)是指海量三维点的集合,点云中的点可以包括点的位置信息和点的属性信息。例如,点的位置信息可以是点的三维坐标信息。点的位置信息也可称为点的几何信息。例如,点的属性信息可包括颜色信息和/或反射率等等。例如,颜色信息可以是任意一种色彩空间上的信息。例如,颜色信息可以是RGB信息。其中,R表示红色(Red,R),G表示绿色(Green,G),B表示蓝色(Blue,B)。再如,颜色信息可以是亮度色度(YcbCr,YUV)信息。其中,Y表示明亮度(Luma),Cb(U)表示蓝色色差,Cr(V)表示红色色差。
根据激光测量原理得到的点云,点云中的点可以包括点的三维坐标信息和点的激光反射强度(reflectance)。再如,根据摄影测量原理得到的点云,点云中的点可以可包括点的三维坐标信息和点的颜色信息。再如,结合激光测量和摄影测量原理得到点云,点云中的点可以可包括点的三维坐标信息、点的激光反射强度(reflectance)和点的颜色信息。
点云可以按获取的途径分为:
第一类静态点云:即物体是静止的,获取点云的设备也是静止的;
第二类动态点云:物体是运动的,但获取点云的设备是静止的;
第三类动态获取点云:获取点云的设备是运动的。
例如,按点云的用途分为两大类:
类别一:机器感知点云,其可以用于自主导航系统、实时巡检系统、地理信息系统、视觉分拣机器人、抢险救灾机器人等场景;
类别二:人眼感知点云,其可以用于数字文化遗产、自由视点广播、三维沉浸通信、三维沉浸交互等点云应用场景。
由于点云是海量点的集合,存储点云不仅会消耗大量的内存,而且不利于传输,也没有这么大的带宽可以支持将点云不经过压缩直接在网络层进行传输,因此,需要对点云进行压缩。
截止目前,可对点云进行压缩的点云编码框架可以是运动图象专家组(Moving Picture Experts Group,MPEG)提供的基于几何的点云压缩(Geometry Point Cloud Compression,G-PCC)编解码框架或基于视频的点云压缩(Video Point Cloud Compression,V-PCC)编解码框架,也可以是音视频编码标准(Audio Video Standard,AVS)提供的AVS-PCC编解码框架。G-PCC编解码框架可用于针对第一类静态点云和第三类动态获取点云进行压缩,V-PCC编解码框架可用于针对第二类动态点云进行压缩。G-PCC编解 码框架也称为点云编解码器TMC13,V-PCC编解码框架也称为点云编解码器TMC2。
可以理解,在点云G-PCC编码器框架中,将输入点云进行slice划分后,再对slice进行独立编码。
如图1A所示的G-PCC编码器的框架中,将输入点云进行slice划分后,对slice进行独立编码。在slice中,点云的几何信息和点云中的点所对应的属性信息是分开进行编码的。G-PCC编码器首先对几何信息进行编码。编码器对几何信息进行坐标转换,使点云全都包含在一个bounding box中;然后再进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点的几何信息相同,根据参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化过程。接下来,对bounding box进行基于八叉树的划分。根据八叉树划分层级深度的不同,几何信息的编码又分为基于八叉树和三角面片集的两种框架。
在基于八叉树的几何信息编码框架中,将包围盒八等分为8个子立方体,并记录子立方体的占位比特(其中,1为非空,0为空),对非空的子立方体继续进行八等分,通常划分得到的叶子节点为1×1×1的单位立方体时停止划分。在这个过程中,利用节点(node)与周围节点的空间相关性,对占位比特进行帧内预测,最后进行算术编码(CABAC),生成二进制的几何比特流,即几何码流。
在基于三角面片集的几何信息编码框架中,同样也要先进行八叉树划分,但区别在于基于八叉树的几何信息编码,该方法不需要将点云逐级划分到边长为1×1×1的单位立方体,而是划分到block的边长为W时停止划分,基于每个block中点云的分布所形成的表面,得到该表面与block的十二条边产生的至多十二个vertex。最后依次编码每个block的vertex坐标,生成二进制的几何比特流,即几何码流。
G-PCC编码器在完成几何信息编码后,对几何信息进行重建,并使用重建的几何信息对点云的属性信息进行编码。目前,点云的属性编码主要是对点云中点的颜色信息进行编码。首先,编码器可以对点的颜色信息进行颜色空间转换,例如,当输入点云中点的颜色信息使用RGB颜色空间表示时,编码器可以将颜色信息从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色,使得未编码的属性信息与重建的几何信息对应起来。在颜色信息编码中,主要有两种变换方法,一种方法是依赖于LOD划分的基于距离的提升变换,另一种方法是直接进行RAHT变换,这两种方法都会将颜色信息从空间域变换到频域,得到高频系数和低频系数,最后对系数进行量化和算术编码,生成二进制的属性比特流,即属性码流。
基于图1A所示的G-PCC编码器的框架,可以基于点云邻居节点的几何信息进行熵编码。这里,根据当前节点的6个邻居节点的占位比特构建上下文模型,以用于进行CABAC。
一种具体的示例中,在G-PCC编码器侧的具体实施描述如下:
(1)获取当前节点的6个邻居节点的占位比特(occupancy bit)。其中,占位比特表示邻居节点内有无点占据。如果邻居节点内有点占据,那么占位比特为1,否则占位比特则为0。根据邻居节点的占位比特可以计算得出邻居配置数(Neighbouring configuration number,NC)。其中,NC的取值可以为0到63,即二进制的000000到111111,如图2所示,其示出了相关技术提供的一种邻居配置数的结构示意图。在图2中,黑色填充的节点表示当前节点,该当前节点具有6个邻居节点,如果右侧的邻居节点有点占据,那么邻居配置数为1;如果左侧的邻居节点有点占据,那么邻居配置数为2;如果上侧的邻居节点有点占据,那么邻居配置数为4;如果下侧的邻居节点有点占据,那么邻居配置数为8;如果后侧的邻居节点有点占据,那么邻居配置数为16;如果前侧的邻居节点有点占据,那么邻居配置数为32。
(2)获取当前节点的8个子节点的占位比特,即如果子节点内有点占据,那么占位比特为1;否则,如果子节点内无点占据,那么占位比特则为0。根据子节点的占位比特计算得出子节点被占据数(Number of occupied child nodes,N
oc)。其中,N
oc的取值可以为1到8,如图3所示,其示出了相关技术提供的一种子节点被占据数的结构示意图。一个当前节点可以被划分为8个子节点。在图3中,N
oc=1,即当前节点的8个子节点中,只有一个子节点(用黑色填充表示,该子节点简称为单一子节点)内有点占据。
(3)当NC==0时(邻居配置数为0,即6个邻居节点中无邻居节点被占据),这时候如果标志位(flag)的赋值为1,那么代表N
oc等于1的情况(即8个子节点中仅有1个子节点被占据);如果flag的赋值为0,那么代表N
oc不等于1的情况(即8个子节点中不只1个子节点被占据),并对该flag进行自适应二进制算术编码,写入码流。
(4)当NC==0且flag==1时(6个邻居节点中无邻居节点被占据,且8个子节点中仅有1个子节点被占据),这时候先根据当前节点的8个子节点的占位比特算出其唯一的被占据子节点在当前节点内部的坐标信息(即XYZ坐标值,分别可取值为0、1,以图3为例,XYZ坐标值为(1,0,0)),并分别对XYZ坐标值进行等概率静态二进制算术编码,写入码流。
(5)当NC==0且flag==0时(6个邻居节点中无邻居节点被占据,且8个子节点中不只1个子节点被占据)或者当NC>0时(6个邻居节点中有邻居节点被占据),则对当前节点的8个子节点的占位 比特进行CABAC,写入码流。
如图1B所示的G-PCC解码器的框架中,获取二进制码流后,针对二进制码流中的几何比特流和属性比特流分别进行独立解码。在对几何比特流的解码时,通过算术解码-八叉树合成-表面拟合-重建几何-反坐标变换,得到点云的几何信息;在对属性比特流的解码时,通过算术解码-反量化-基于LOD的反提升或者基于RAHT的反变换-反颜色转换,得到点云的属性信息,基于几何信息和属性信息还原待编码的点云数据的三维图像模型。
其中,基于图1B所示的G-PCC解码器的框架,也可以基于点云邻居节点的几何信息进行熵解码。这里,仍然根据当前节点的6个邻居节点的占位比特构建上下文模型,以用于进行CABAC解码。
一种具体的示例中,在G-PCC解码器侧的具体实施描述如下:
(1)获取当前节点的6个邻居节点的占位比特,即如果邻居节点内有点占据,则占位比特为1,否则为0,以此计算得出NC。
(2)当NC==0时(邻居配置数为0,即6个邻居节点中无邻居节点被占据),用自适应二进制算术解码获得flag。
(3)当NC==0且flag==1时(6个邻居节点中无邻居节点被占据,且8个子节点中仅有1个子节点被占据),则用等概率静态二进制算术解码获得该唯一的被占据子节点在当前节点内部的XYZ坐标值,并还原出8个子节点的占位比特。
(4)当NC==0且flag==0时(6个邻居节点中无邻居节点被占据,且8个子节点中不只1个子节点被占据)或者当NC>0时(6个邻居节点中有邻居节点被占据),则用CABAC来解码获得当前节点的8个子节点的占位比特。
以八叉树节点的几何语法为例,表1给出了相关技术提供的一种语法元素以及语义描述的示例。其具体描述如下。
表1
在G-PCC国际标准草案(Draft International Standards,DIS)中,语法描述为“The variable OccupancyIdxMaybePresent specifies when single_occupancy_flag is present in the octree node syntax”。
在本申请实施例中,标识信息OccupancyIdxMaybePresent指示在码流中是否存在语法元素single_child_flag对应的比特字段。一种具体的实施方式是,标识信息OccupancyIdxMaybePresent指示在码流的八叉树节点对应的数据单元中,是否存在语法元素single_child_flag对应的比特字段。当标识信息OccupancyIdxMaybePresent的取值等于1时,码流中存在语法元素single_child_flag对应的比特字段。这里,确定标识信息OccupancyIdxMaybePresent取值的一种方法如下伪代码所示:
numPlanarAxes=IsPlanar[0]+IsPlanar[1]+IsPlanar[2];
numNonPlanarAxes=IsNotPlanar[0]+IsNotPlanar[1]+IsNotPlanar[2];
OccupancyIdxMaybePresent=numPlanarAxes<3||(!NeighPattern&&!numNonPlanarAxes);
其中,对于IsPlanar[k]而言,k取值为0、1、2,其分别代表x、y、z坐标轴方向。具体地,IsPlanar[k]为1表示在平面编码模式条件合格的情况下,且当前节点划分的子节点位置形成一个垂直于该坐标轴的平面,采用了平面编码模式;IsPlanar[k]为0表示其他情况,包括:在平面编码模式条件合格的情况下,当前节点划分的子节点位置占据了两个垂直于该坐标轴的平面,或者平面编码模式条件不合格。这里,numPlanarAxes则表示平面编码模式条件合格的情况下,采用平面编码模式的坐标轴方向的个数。
对于IsNotPlanar[k]而言,k取值为0、1、2,其分别代表x、y、z坐标轴方向。具体地,IsNotPlanar[k]为1表示在平面编码模式条件合格的情况下,且当前节点的子节点位置占据了两个垂直于该坐标轴的平面,没有采用平面编码模式;IsNotPlanar[k]为0表示其他情况,包括:在平面编码模式条件合格的情况下,当前节点的子节点位置形成一个垂直于该坐标轴的平面,或者平面编码模式条件不合格。这里,numNonPlanarAxes则表示平面编码模式条件合格的情况下,没有采用平面编码模式的坐标轴方向的个数。
另外,numPlanarAxes<3表示平面编码模式条件合格的情况下,不是所有x、y、z坐标轴方向都采用了平面编码模式;(!NeighPattern&&!numNonPlanarAxes)表示邻居配置数为0,即6个邻居节点中无邻居节点被占据,且x、y、z坐标轴方向平面编码模式条件合格的情况下,当前节点划分的子节点位置形成一个垂直于该坐标轴的平面,或者平面编码模式条件不合格。这里,“numPlanarAxes<3”和“(!NeighPattern&&!numNonPlanarAxes)”两者进行或运算,即可确定出标识信息OccupancyIdxMaybePresent的取值。
示例性地,编码器使用上述方法,确定标识信息OccupancyIdxMaybePresent的取值。编码器判断OccupancyIdxMaybePresent的取值等于1时,使用ae(v)对应的熵编码方法,将single_child_flag的取值写入码流中的数据单元中;当编码器判断OccupancyIdxMaybePresent的取值等于0时,编码器不将single_child_flag的取值写入码流中的数据单元中。其中,ae(v)表示使用上下文自适应的算术熵编码方法对语法单元进行编码,这里的数据单元可以是八叉树节点对应的数据单元,例如,八叉树节点的几何信息数据单元。编码器根据single_child_flag对点云码流进行解码,例如,编码八叉树节点的几何信息;例如,编码点云数据的属性信息。
示例性地,解码器使用上述方法,确定标识信息OccupancyIdxMaybePresent的取值。解码器判断OccupancyIdxMaybePresent的取值等于1时,使用ae(v)对应的熵解码方法,从码流的数据单元中解析single_child_flag对应的比特字段,确定single_child_flag的取值;当解码器判断OccupancyIdxMaybePresent的取值等于0时,解码器确定码流的数据单元中不存在single_child_flag对应的比特字段,这种情况下,解码器不需要通过解析码流single_child_flag的取值,可选择地,解码器将single_child_flag的取值设置为默认值0。其中,ae(v)表示使用上下文自适应的算术熵解码方法对语法单元在码流中对应的比特字段进行解析;这里所述数据单元可以是八叉树节点对应的数据单元,例如,八叉树节点的几何信息数据单元。解码器根据single_child_flag对点云码流进行解码,例如,解码八叉树节点的几何信息;例如,解码点云数据的属性信息。
另外,对于语法元素single_child_flag而言,当single_child_flag的取值等于1时,表示当前节点仅包括有一个子节点被占据;当single_child_flag的取值等于0时,表示当前节点可以包括多个子节点 被占据。另外,当前节点内不存在子节点被占据时,这时候single_child_flag的取值将被推断为0。也就是说,flag为1代表N
oc等于1的情况(即8个子节点中仅有1个子节点被占据),flag为0代表N
oc不等于1的情况(即8个子节点中不只1个子节点被占据)。
对于语法元素occupancy_idx[i]而言,occupancy_idx[i]表示当前节点中单一子节点在八叉树子节点遍历顺序索引的第i个比特。其中,第0个比特代表了单一子节点在当前节点中z方向的坐标值(0或1),第1个比特代表了单一子节点在当前节点中y方向的坐标值(0或1),第2个比特代表了单一子节点在当前节点中x方向的坐标值(0或1)。
然而,目前的相关技术中,仅有当NC==0且N
oc==1时(6个邻居节点中无邻居节点被占据,且8个子节点中仅有1个子节点被占据),则采用编解码当前节点中唯一的被占据子节点在当前节点内的XYZ坐标值(分别可取值为0、1,以图3为例,XYZ坐标值为(1,0,0))的方法,以后称为“单一子节点坐标值编解码的方法”。由于该方法没有充分利用空间相关性,从而降低了编解码效率。
本申请一实施例提供一种点云编码方法,该方法的基本思想是:确定当前节点的子节点被占据数;根据所述子节点被占据数确定单一子节点的标识信息的取值,利用第一上下文模型对所述标识信息的取值进行熵编码,并写入码流;若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则确定所述被占据子节点的坐标信息,利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码,并写入码流。这样,由于针对单一子节点的标识信息和坐标信息分别构建了上下文模型,如此基于上下文模型对标识信息和坐标信息进行熵编码,能够充分利用点云的空间相关性,从而能够提高点云的编解码效率。
下面将结合附图对本申请各实施例进行详细阐述。
本申请的一实施例中,本申请实施例提供的点云编码方法应用于视频编码设备,即G-PCC编码器,也可简称为编码器。该方法所实现的功能可以通过编码器中的第一处理器调用计算机程序来实现,当然计算机程序可以保存在第一存储器中,可见,编码器至少包括第一处理器和第一存储器。
参见图4,其示出了本申请实施例提供的一种点云编码方法的流程示意图。如图4所示,该方法可以包括:
S401:确定当前节点的子节点被占据数。
需要说明的是,在点云中,点可以是点云中的所有点,也可以是点云中的部分点,这些点在空间上相对集中。
还需要说明的是,基于图1A所示的G-PCC编码器的框架,本申请实施例的方法主要应用于“上下文建模”部分,针对目前的相关技术中基于点云邻居节点的几何信息熵编码进行优化,以提升对空间相关性的利用程度。
在本申请实施例中,子节点被占据数(Number of occupied child nodes,N
oc)用于表示当前节点的多个子节点中有无子节点被占据。这里,在一些实施例中,所述确定当前节点的子节点被占据数,可以包括:
获取所述当前节点划分的子节点的占位比特信息;
根据所述子节点的占位比特信息,确定所述子节点被占据数。
这里,当前节点划分的子节点通常包括8个子节点,即针对当前节点进行划分,可以将其划分为8个子节点,具体如图3所示。
还需要说明的是,子节点的占位比特信息是根据子节点内有无点占据确定的。在一种具体的实施例中,所述获取所述当前节点划分的子节点的占位比特信息,可以包括:
若所述子节点内有点占据,则确定所述子节点的占位比特信息等于第一值;
若所述子节点内无点占据,则确定所述子节点的占位比特信息等于第二值。
在本申请实施例中,第一值可以为1,第二值可以为0;或者,第一值可以为0,第二值可以为1。在一种具体的示例中,第一值可设置为1,第二值可设置为0,但是不作具体限定。
也就是说,以第一值为1,第二值为0为例,如果某子节点内有点占据,那么该子节点的占位比特信息等于1;如果某子节点内无点占据,那么该子节点的占位比特信息等于0。这样,针对当前节点的8个子节点的占位比特信息,可以计算得到子节点被占据数。例如,如果8个子节点中仅有一个子节点被占据,那么计算得到的子节点被占据数等于1;反之,如果8个子节点中不只有一个子节点被占据,这时候计算得到的子节点被占据数不等于1。
换言之,根据子节点被占据数,可以反映当前节点中有无子节点被占据。在一些实施例中,该方法还可以包括:
若子节点被占据数等于第一阈值,则确定当前节点划分的子节点中仅包括一个被占据子节点;
若子节点被占据数不等于第一阈值,则确定当前节点划分的子节点中包括至少两个被占据子节点。
在本申请实施例中,子节点被占据数的取值范围为1~8,第一阈值可以设置为1。也就是说,如果子节点被占据数等于1,那么可以表明当前节点中仅有一个子节点被占据,即当前节点划分的子节点中仅包括一个被占据子节点;如果子节点被占据数不等于1,那么可以表明当前节点中不只有一个子节点被占据,即当前节点划分的子节点中包括至少两个被占据子节点。
S402:根据所述子节点被占据数确定单一子节点的标识信息的取值,利用第一上下文模型对所述标识信息的取值进行熵编码,并写入码流。
需要说明的是,在根据子节点被占据数确定出标识信息的取值之后,一方面可以利用第一上下文模型对标识信息的取值进行熵编码,另一方面还可以在标识信息的取值指示当前节点划分的子节点中仅包括一个被占据子节点时,利用第二上下文模型对被占据子节点的坐标信息进行熵编码。
还需要说明的是,对于标识信息(如标志位,flag)的确定,其主要是和子节点被占据数有关。一种具体的实施例中,所述根据所述子节点被占据数确定标识信息的取值,可以包括:
若所述子节点被占据数等于1,则确定所述标识信息的取值为第一标识值;
若所述子节点被占据数不等于1,则确定所述标识信息的取值为第二标识值。
另一种具体的实施例中,所述根据所述子节点被占据数确定标识信息的取值,包括:
若所述当前节点划分的子节点中仅包括一个被占据子节点,则确定标识信息的取值为第一标识值;
若所述当前节点划分的子节点中包括至少两个被占据子节点,则确定标识信息的取值为第二标识值。
在本申请实施例中,第一标识值可以为1,第二标识值可以为0;或者,第一标识值可以为0,第二标识值可以为1。在一种具体的示例中,第一标识值可设置为1,第二标识值可设置为0,但是不作具体限定。
需要说明的是,标识信息的取值也可以是被占据子节点的个数。例如,如果当前节点划分的子节点中无被占据子节点,那么标识信息的取值等于0;如果当前节点划分的子节点中仅包括一个被占据子节点,那么标识信息的取值等于1;如果当前节点划分的子节点中包括至少两个被占据子节点,那么标识信息的取值大于或等于2。
这样,在确定出标识信息的取值后,可以利用第一上下文模型对标识信息的取值进行熵编码,并写入码流。
S403:若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则确定所述被占据子节点的坐标信息,利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码,并写入码流。
需要说明的是,在标识信息的取值指示当前节点划分的子节点中仅包括一个被占据子节点时,这时候需要确定被占据子节点的坐标信息。具体地,在一些实施例中,所述确定所述被占据子节点的坐标信息,可以包括:
获取所述当前节点划分的子节点的占位比特信息;
根据所述子节点的占位比特信息,计算得到所述被占据子节点的坐标信息。
也就是说,在获取到当前节点划分的8个子节点的占位比特信息之后,可以根据这8个子节点的占位比特信息计算得到被占据子节点的坐标信息。然后利用第二上下文模型对被占据子节点的坐标信息进行熵编码,并写入码流。
还需要说明的是,由于邻居配置数的不同,对于被占据子节点的坐标信息所采用的熵编码方式可能不同。因此,本申请实施例还需要确定当前节点的邻居配置数。在一些实施例中,该方法还可以包括:
确定当前节点的邻居配置数;
若所述邻居配置数指示所述当前节点中有邻居节点被占据,则在所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点时,执行所述利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码的步骤。
进一步地,在确定当前节点的邻居配置数之后,该方法还可以包括:
若所述邻居配置数指示所述当前节点中无邻居节点被占据,则在所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点时,执行对所述被占据子节点的坐标信息进行等概率静态二进制算术编码的步骤。
在本申请实施例中,邻居配置数(Neighbouring configuration number,NC)用于表示当前节点的多个邻居节点中有无邻居节点被占据。具体地,在一些实施例中,所述确定当前节点的邻居配置数,可以包括:
获取所述当前节点的邻居节点的占位比特信息;
根据所述邻居节点的占位比特信息,确定所述邻居配置数。
这里,邻居节点可以包括下述至少之一:与所述当前节点左侧面相接的邻居节点、与所述当前节点 右侧面相接的邻居节点、与所述当前节点上侧面相接的邻居节点、与所述当前节点下侧面相接的邻居节点、与所述当前节点后侧面相接的邻居节点、与所述当前节点前侧面相接的邻居节点。也就是说,当前节点的邻居节点通常包括有6个,具体如图2所示。
还需要说明的是,邻居节点的占位比特信息是根据邻居节点内有无点占据确定的。在一种具体的实施例中,所述获取所述当前节点的邻居节点的占位比特信息,可以包括:
若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;
若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
在本申请实施例中,第一值可以为1,第二值可以为0;或者,第一值可以为0,第二值可以为1。在一种具体的示例中,第一值可设置为1,第二值可设置为0,但是不作具体限定。
也就是说,以第一值为1,第二值为0为例,如果某邻居节点内有点占据,那么该邻居节点的占位比特信息等于1;如果某邻居节点内无点占据,那么该邻居节点的占位比特信息等于0。这样,针对当前节点的6个邻居节点的占位比特信息,可以计算得到邻居配置数。例如,如果6个邻居节点中无邻居节点被占据,用二进制表示为000000,这时候计算得到的邻居配置数等于0;反之,如果6个邻居节点中有邻居节点被占据,用二进制表示为000001~111111,这时候计算得到的邻居配置数为1~63,即这时候的邻居配置数大于0。
换言之,根据邻居配置数,可以反映当前节点中有无邻居节点被占据。在一些实施例中,该方法还可以包括:
若所述邻居配置数大于第二阈值,则确定所述当前节点中有邻居节点被占据;
若所述邻居配置数等于第二阈值,则确定所述当前节点中无邻居节点被占据。
在本申请实施例中,邻居配置数的取值范围为0~63,第二阈值可以设置为0。也就是说,如果邻居配置数大于0,那么可以表明当前节点中有邻居节点被占据;如果邻居配置数等于0,那么可以表明当前节点中无邻居节点被占据。
还应理解,在步骤S402之前,该方法还可包括:确定第一上下文模型和第二上下文模型。这里,第一上下文模型可以用于对标识信息进行预测,第二上下文模型可以用于对坐标信息进行预测。
在一种具体的实施例中,所述确定所述第一上下文模型和所述第二上下文模型,可以包括:
确定单一子节点使能变量的取值;
在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,确定所述第一上下文模型和所述第二上下文模型。
需要说明的是,本申请实施例引入了一个新的变量,即单一子节点使能变量(可以用ctxSingleChildEnabled表示)。其中,当单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,这时候需要确定第一上下文模型和第二上下文模型,以便后续利用第一上下文模型和第二上下文模型进行熵编码。
还需要说明的是,单一子节点使能变量与节点数量(用N
all表示)和单一子节点数量(用N
singe表示)有关。具体地,在一些实施例中,所述确定单一子节点使能变量的取值,可以包括:
确定节点数量以及单一子节点数量;
对所述单一子节点数量和所述节点数量进行除法运算,得到第一比例值;
将所述第一比例值和预设阈值进行比较;
若所述第一比例值大于所述预设阈值,则确定所述单一子节点使能变量的取值为第三值;
若所述第一比例值小于或等于所述预设阈值,则确定所述单一子节点使能变量的取值为第四值。
在本申请实施例中,第三值可以为1,第四值可以为0;或者,第三值可以为0,第四值可以为1。在一种具体的示例中,第三值可设置为1,第四值可设置为0,但是不作具体限定。
需要说明的是,预设阈值表示预先设置的经验值,可以作为判断单一子节点使能变量取值的衡量指标。这里,预设阈值的取值范围为[0,1]之内,根据实际情况进行具体调整。在本申请实施例中,预设阈值可以设置为0.5,但是这里不作具体限定。
还需要说明的是,单一子节点使能变量可以用ctxSingleChildEnabled表示。针对单一子节点使能变量的确定,可以根据下式实现,具体如下所示,
其中,N
singe÷N
all表示第一比例值。这时候如果第一比例值大于0.5,那么ctxSingleChildEnabled的取值为1;否则,如果第一比例值小于或等于0.5,那么ctxSingleChildEnabled的取值为0。
进一步地,在一些实施例中,该方法还可以包括:
若单一子节点使能变量的取值为1,则确定所述当前节点处于单一子节点使能状态;
若单一子节点使能变量的取值为0,则确定所述当前节点处于单一子节点不使能状态。
也就是说,如果ctxSingleChildEnabled=1,那么当前节点处于单一子节点使能状态,这时候可以执行本申请实施例所述的点云编码方法;如果ctxSingleChildEnabled=0,那么当前节点处于单一子节点不使能状态,这时候可以执行相关技术的点云编码方法,即对当前节点的8个子节点的占位比特进行CABAC,并写入码流。
还需要说明的是,本申请实施例中的N
singe和N
all是不断更新的。在一些实施例中,该方法还可以包括:
对输入点云进行八叉树划分,得到K层的八叉树,K为大于0的整数;
在进入所述八叉树的第i层时,设置所述节点数量的初始值为0,所述单一子节点数量的初始值为0,所述单一子节点使能变量的初始值为0;其中,i为大于或等于0且小于K的整数。
进一步地,所述确定节点数量以及单一子节点数量,可以包括:
基于第i层中的已编码节点,获得所述节点数量;
从所述已编码节点中确定仅包括一个被占据子节点的已编码节点,获得所述单一子节点数量。
需要说明的是,节点数量和单一子节点数量都是第i层中的已编码节点。对于单一子节点数量而言,所述从已编码节点中确定仅包括一个被占据子节点的已编码节点,获得所述单一子节点数量,可以包括:
在所述已编码节点中,判断所述已编码节点划分的子节点是否仅包括一个被占据子节点;
若判断结果为是,则对所述单一子节点数量执行加1操作,更新所述单一子节点数量;
若判断结果为否,则维持所述单一子节点数量不变。
换句话说,在对输入点云进行八叉树划分后,可以得到K层的八叉树。在进入八叉树的第i层时,初始化节点数量(N
all)、单一子节点数量(N
singe)和单一子节点使能变量(ctxSingleChildEnabled)的值,即赋值N
all=0,N
singe=0,ctxSingleChildEnabled=0。然后针对第i层,在第i层的第j个节点已经完成点云编码后,可以更新N
all=N
all+1,即节点数量表示已编码节点的数量。若第j个节点划分的子节点中仅包括一个被占据子节点(即N
oc=1)时,则更新N
singe=N
singe+1,也即单一子节点数量表示已编码节点中确定仅包括一个被占据子节点的已编码节点的数量。在j小于N时,则更新j=j+1,继续执行读取所述第i层的第j个节点的步骤,直至第i层中所有节点均已经处理,j为大于或等于0且小于N的整数,N为第i层中的节点总数量;然后再进入八叉树的第i+1层,直至八叉树的K层全部已处理。
这样,在确定出N
singe和N
all之后,结合式(1)可以计算得到单一子节点使能变量(ctxSingleChildEnabled)的取值,以便确定后续是否需要利用第一上下文模型和第二上下文模型进行熵编码。
具体来讲,在本申请实施例中,如果邻居配置数指示当前节点中有邻居节点被占据,那么表示NC>0;如果单一子节点使能变量的取值指示当前节点处于单一子节点使能状态,那么表示ctxSingleChildEnabled=1。也就是说,本申请实施例提出了一种新的基于点云邻居节点的几何信息熵编码,以扩大使用单一子节点坐标值编码到N
oc==1时(8个子节点中仅有1个子节点被占据)但NC>0(6个邻居节点中有邻居节点被占据)的情况,并采用的上下文建模的方式。换言之,在邻居配置数指示当前节点中有邻居节点被占据(即NC>0)且ctxSingleChildEnabled=1的情况下,这时候需要构建上下文模型,即确定第一上下文模型和第二上下文模型,以便利用第一上下文模型和第二上下文模型进行熵编码。
下面将针对第一上下文模型和第二上下文模型的确定进行详细描述。
在一些实施例中,在单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,该方法还可以包括:
确定所述当前节点的预测标识信息,并根据所述预测标识信息确定所述第一上下文模型的索引序号值;
根据所述第一上下文模型的索引序号值,确定所述第一上下文模型。
在一种具体的实施例中,所述根据所述第一上下文模型的索引序号值,确定所述第一上下文模型,可以包括:
构建至少一个第一候选上下文模型;其中,不同的第一候选上下文模型对应不同的索引序号;
根据所述第一上下文模型的索引序号值,从所述至少一个第一候选上下文模型中选择所述索引序号值对应的第一候选上下文模型,将所选择的第一候选上下文模型确定为所述第一上下文模型。
需要说明的是,本申请实施例可以预先构建出至少一个第一候选上下文模型,而且不同的第一候选上下文模型对应不同的索引序号。如此,在根据当前节点的预测标识信息确定出第一上下文模型的索引序号值之后,可以从这至少一个第一候选上下文模型中选择索引序号值对应的第一候选上下文模型,以 将其确定为第一上下文模型。
在一些实施例中,在单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,该方法还可以包括:
确定所述当前节点的预测坐标信息,并根据所述预测坐标信息确定所述第二上下文模型的索引序号值;
根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
在一种具体的实施例中,所述根据所述第二上下文模型的索引序号值,确定所述第二上下文模型,可以包括:
构建至少一个第二候选上下文模型;其中,不同的第二候选上下文模型对应不同的索引序号;
根据所述第二上下文模型的索引序号值,从所述至少一个第二候选上下文模型中选择所述索引序号值对应的第二候选上下文模型,将所选择的第二候选上下文模型确定为所述第二上下文模型。
需要说明的是,本申请实施例可以预先构建出至少一个第二候选上下文模型,而且不同的第二候选上下文模型也对应不同的索引序号。如此,在根据当前节点的预测坐标信息确定出第二上下文模型的索引序号值之后,可以从这至少一个第二候选上下文模型中选择索引序号值对应的第二候选上下文模型,以将其确定为第二上下文模型。
其中,针对第二上下文模型的索引序号值的确定,在一些实施例中,所述确定所述当前节点的预测坐标信息,并根据所述预测坐标信息确定所述第二上下文模型的索引序号值,可以包括:
获取所述当前节点相邻的已编码子节点的占位比特信息;
根据所述当前节点相邻的已编码子节点的占位比特信息,确定三个坐标方向的预测坐标值;
根据所述三个坐标方向的预测坐标值,确定所述第二上下文模型的索引序号值。
需要说明的是,预测坐标信息可以包括第一坐标方向的预测坐标值、第二坐标方向的预测坐标值和第三坐标方向的预测坐标值。其中,第一坐标方向可以为x轴坐标方向,第二坐标方向可以为y轴坐标方向,第三坐标方向可以为z轴坐标方向。
这样,在本申请实施例中,对于第二上下文模型的索引序号值,也可以分为:第一坐标方向的第二上下文模型的索引序号值、第二坐标方向的第二上下文模型的索引序号值和第三坐标方向的第二上下文模型的索引序号值。因此,在一些实施例中,所述根据所述三个坐标方向的预测坐标值,确定所述第二上下文模型的索引序号值,可以包括:
根据所述三个坐标方向的预测坐标值,获得所述第一坐标方向的第一一预测值和第一二预测值、所述第二坐标方向的第二一预测值和第二二预测值、所述第三坐标方向的第三一预测值和第三二预测值;
根据所述第一坐标方向的第一一预测值和第一二预测值,确定第一坐标方向的所述第二上下文模型的索引序号值;
根据所述第二坐标方向的第二一预测值和第二二预测值,确定第二坐标方向的所述第二上下文模型的索引序号值;
根据所述第三坐标方向的第三一预测值和第三二预测值,确定第三坐标方向的所述第二上下文模型的索引序号值。
需要说明的是,首先需要根据当前节点相邻的已编码子节点的占位比特信息来确定第一坐标方向的第一一预测值、第二坐标方向的第二一预测值和第三坐标方向的第三一预测值。具体地,在一些实施例中,所述根据所述当前节点相邻的已编码子节点的占位比特信息,确定三个坐标方向的预测坐标值,可以包括:
从所述当前节点相邻的已编码子节点的占位比特信息中确定第一坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,根据所述第一坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第一坐标方向的第一一预测坐标值;
从所述当前节点相邻的已编码子节点的占位比特信息中确定第二坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,根据所述第二坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第二坐标方向的第二一预测坐标值;
从所述当前节点相邻的已编码子节点的占位比特信息中确定第三坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,根据所述第三坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第三坐标方向的第三一预测坐标值;其中,M为大于0的整数。
在一种具体的实现方式中,所述根据所述第一坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第一坐标方向的第一一预测坐标值,可以包括:
根据所述第一坐标方向上与当前节点相接的M个已编码子节点的占位比特信息,确定第一方向值;其中,所述第一方向值表示第一坐标方向上与当前节点相接的M个已编码子节点中是否有点占据;
根据所述第一方向值与预设方向值的比较结果,确定所述第一坐标方向的第一一预测值。
在另一种具体的实现方式中,所述根据所述第二坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第二坐标方向的第二一预测坐标值,可以包括:
根据所述第二坐标方向上与当前节点相接的M个已编码子节点的占位比特信息,确定第二方向值;其中,所述第二方向值表示第二坐标方向上与当前节点相接的M个已编码子节点中是否有点占据;
根据所述第二方向值与预设方向值的比较结果,确定所述第二坐标方向的第二一预测值。
在又一种具体的实现方式中,所述根据所述第三坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第三坐标方向的第三一预测坐标值,可以包括:
根据所述第三坐标方向上与当前节点相接的M个已编码子节点的占位比特信息,确定第三方向值;其中,所述第三方向值表示第三坐标方向上与当前节点相接的M个已编码子节点中是否有点占据;
根据所述第三方向值与预设方向值的比较结果,确定所述第三坐标方向的第三一预测值。
示例性地,假定M等于4,如图5所示,当前节点用黑色填充表示,可以定义第一方向值(用O
ncx表示)为x轴负方向上与当前节点相接的4个已编码子节点的占位比特信息,即该4个子节点中是否有点占据;定义第二方向值(用O
ncy表示)为y轴负方向上与当前节点相接的4个已编码子节点的占位比特信息,即该4个子节点中是否有点占据;定义第三方向值(用O
ncz表示)为z轴负方向上与当前节点相接的4个已编码子节点的占位比特信息,即该4个子节点中是否有点占据。
这里,如果x轴负方向的4个已编码子节点中有点占据,则赋值O
ncx=1;否则赋值O
ncx=0。如果y轴负方向的4个已编码子节点中有点占据,则赋值O
ncy=1;否则赋值O
ncy=0。如果z轴负方向的4个已编码子节点中有点占据,则赋值O
ncz=1;否则赋值O
ncz=0。
如此,根据O
ncx,O
ncy和O
ncz预测三个坐标方向(x轴坐标方向、y轴坐标方向和z轴坐标方向)的预测坐标值,可以分别构建出2种上下文模型,具体如下所示,
针对语法元素occupancy_idx[2]:
针对语法元素occupancy_idx[1]:
针对语法元素occupancy_idx[0]:
参见图6,其示出了本申请实施例提供的一种根据多个已编码子节点预测坐标信息的流程示意图。如图6所示,该流程可以包括:
S601:获取与当前节点相接的12个已编码子节点的占位比特信息;
S602:确定O
ncx、O
ncy和O
ncz;
S603:判断O
ncx==0;
S604:若判断结果为否,则X
0=0;
S605:若判断结果为是,则X
0=1;
S606:判断O
ncy==0;
S607:若判断结果为否,则Y
0=0;
S608:若判断结果为是,则Y
0=1;
S609:判断O
ncz==0;
S610:若判断结果为否,则Z
0=0;
S611:若判断结果为是,则Z
0=1。
需要说明的是,对于S603来说,判断O
ncx是否等于0,如果判断结果为否,则执行S604;如果判断结果为是,则执行S605。对于S606来说,判断O
ncy是否等于0,如果判断结果为否,则执行S607;如果判断结果为是,则执行S608。对于S609来说,判断O
ncz是否等于0,如果判断结果为否,则执行S610;如果判断结果为是,则执行S611。
还需要说明的是,本申请实施例还需要根据当前节点相邻的已编码子节点的占位比特信息来确定第一坐标方向的第一二预测值、第二坐标方向的第二二预测值和第三坐标方向的第三二预测值。具体地,在一些实施例中,所述根据所述当前节点相邻的已编码子节点的占位比特信息,确定三个坐标方向的预测坐标值,可以包括:
根据所述当前节点相邻的已编码子节点的占位比特信息,确定与第一坐标方向垂直的平面上已编码子节点中第一方向坐标值为第五值的有点占据的第一子节点数量和第一方向坐标值为第六值的有点占据的第二子节点数量,以及确定与第二坐标方向垂直的平面上已编码子节点中第二方向坐标值为第五值的有点占据的第三子节点数量和第二方向坐标值为第六值的有点占据的第四子节点数量,以及确定第三坐标方向垂直的平面上已编码子节点中第三方向坐标值为第五值的有点占据的第五子节点数量和第三方向坐标值为第六值的有点占据的第六子节点数量;
基于所述第一子节点数量与所述第二子节点数量的比较结果,确定所述第一坐标方向的第一二预测值;
基于所述第三子节点数量与所述第四子节点数量的比较结果,确定所述第二坐标方向的第二二预测值;
基于所述第五子节点数量与所述第六子节点数量的比较结果,确定所述第三坐标方向的第三二预测值。
在本申请实施例中,第五值可以为1,第六值可以为0;或者,第五值可以为0,第六值可以为1。在一种具体的示例中,第五值可设置为1,第六值可设置为0,但是不作具体限定。
在一种具体的实现方式中,假定第一坐标方向为x轴坐标方向,以第五值为1,第六值为0为例,对于第一二预测值而言,定义第一子节点数量(用N
x=1表示)为与x轴坐标方向垂直的yz平面上的2个已编码的邻居节点中x轴方向坐标值为1的8个子节点中有点占据的子节点个数,可取值为0到8;定义第二子节点数量(用N
x=0表示)为与x轴坐标方向垂直的yz平面上的2个已编码的邻居节点中x轴方向坐标值为0的8个子节点中有点占据的子节点个数,可取值为0到8。然后通过N
x=1以及N
x=0可以预测当前节点中单一子节点的x轴方向的预测坐标值X
1,据此可以构建出3种上下文模型,具体如下所示,
针对语法元素occupancy_idx[2]:
示例性地,如图7所示,这里示出了当前节点(用黑色填充表示)的1号邻居节点、3号邻居节点和5号邻居节点。根据3号邻居节点和5号邻居节点,可以得到N
x=1=3,即x轴方向坐标值为1的8个子节点中的3个子节点有点占据(用灰色填充表示);N
x=0=1,即x轴方向坐标值为0的8个子节点中的1个子节点有点占据(用白色填充表示);由于3>1,即N
x=1>N
x=0,那么预测X
1坐标值为1。
假定第二坐标方向为y轴坐标方向,以第五值为1,第六值为0为例,对于第二二预测值而言,定义第三子节点数量(用N
y=1表示)为与y轴坐标方向垂直的xz平面上的2个已编码的邻居节点中y轴方向坐标值为1的8个子节点中有点占据的子节点个数,可取值为0到8;定义第四子节点数量(用N
y=0表示)为与y轴坐标方向垂直的xz平面上的2个已编码的邻居节点中y轴方向坐标值为0的8个子节点中有点占据的子节点个数,可取值为0到8。然后通过N
y=1以及N
y=0预测当前节点中单一子节点的y轴方向的坐标值Y
1,据此可构建出3种上下文模型,具体如下所示,
针对语法元素occupancy_idx[1]:
假定第三坐标方向为z轴坐标方向,以第五值为1,第六值为0为例,对于第三二预测值而言,定义第五子节点数量(用N
z=1表示)为与z轴坐标方向垂直的xy平面上的2个已编码的邻居节点中z轴方向坐标值为1的8个子节点中有点占据的子节点个数,可取值为0到8;定义第六子节点数量(用N
z=0表示)为与z轴方向垂直的xy平面上的2个已编码的邻居节点中z轴方向坐标值为0的8个子节点中有点占据的子节点个数,可取值为0到8。然后通过N
z=1以及N
z=0预测当前节点中单一子节点的z轴方向的坐标值Z
1,据此可以构建出3种上下文模型,具体如下所示,
针对语法元素occupancy_idx[0]:
参见图8,其示出了本申请实施例提供的另一种根据多个已编码子节点预测坐标信息的流程示意图。 如图8所示,该流程可以包括:
S801:获取当前节点的已编码3个邻居节点的子节点的占位比特信息;
S802:分别确定x轴、y轴和z轴方向上有点占据的邻居子节点数N
x=1、N
x=0、N
y=1、N
y=0、N
z=1及N
z=0;
S803:判断是否N
x=1>N
x=0;
S804:若判断结果为是,则X
1=1;
S805:若判断结果为否,则判断是否N
x=1<N
x=0;
S806:若判断结果为是,则X
1=0;
S807:若判断结果为否,则X
1=不预测;
S808:判断是否N
y=1>N
y=0;
S809:若判断结果为是,则Y
1=1;
S810:若判断结果为否,则判断是否N
y=1<N
y=0;
S811:若判断结果为是,则Y
1=0;
S812:若判断结果为否,则Y
1=不预测;
S813:判断是否N
z=1>N
z=0;
S814:若判断结果为是,则Z
1=1;
S815:若判断结果为否,则判断是否N
z=1<N
z=0;
S816:若判断结果为是,则Z
1=0;
S817:若判断结果为否,则Z
1=不预测。
需要说明的是,预测坐标值X
1的确定,对于S803来说,判断N
x=1是否大于N
x=0,如果判断结果为是,则执行S804;如果判断结果为否,则执行S805,继续判断N
x=1是否小于N
x=0,如果判断结果为是,则执行S806;如果判断结果为否,则执行S807。
预测坐标值Y
1的确定,对于S808来说,判断N
y=1是否大于N
y=0,如果判断结果为是,则执行S809;如果判断结果为否,则执行S810,继续判断N
y=1是否小于N
y=0,如果判断结果为是,则执行S811;如果判断结果为否,则执行S812。
预测坐标值Z
1的确定,对于S813来说,判断N
z=1是否大于N
z=0,如果判断结果为是,则执行S814;如果判断结果为否,则执行S815,继续判断N
z=1是否小于N
z=0,如果判断结果为是,则执行S816;如果判断结果为否,则执行S817。
在另一种具体的实现方式中,假定第一坐标方向为x轴坐标方向,以第五值为1,第六值为0为例,对于第一二预测值而言,定义第一子节点数量(用N
x=1表示)为与x轴坐标方向垂直的yz平面上的2个已编码的邻居节点中x轴方向坐标值为1的8个子节点中有点占据的子节点个数,可取值为0到8;定义第二子节点数量(用N
x=0表示)为与x轴坐标方向垂直的yz平面上的2个已编码的邻居节点中x轴方向坐标值为0的8个子节点中有点占据的子节点个数,可取值为0到8。然后通过N
x=1以及N
x=0可以预测当前节点中单一子节点的x轴方向的预测坐标值X
1,据此可以构建出3种上下文模型,具体如下所示,
针对语法元素occupancy_idx[2]:
示例性地,如图9所示,这里示出了当前节点(用黑色填充表示)的1号邻居节点、3号邻居节点和5号邻居节点。根据3号邻居节点和5号邻居节点,可以得到Nx=1=3,即x轴方向坐标值为1的8个子节点中的3个子节点有点占据(用灰色填充表示);N
x=0=0,即x轴方向坐标值为0的8个子节点中没有子节点有点占据;由于3>0,即N
x=1>0且N
x=0=0,那么可以预测X
1坐标值为1。
假定第二坐标方向为y轴坐标方向,以第五值为1,第六值为0为例,对于第二二预测值而言,定义第三子节点数量(用N
y=1表示)为与y轴坐标方向垂直的xz平面上的2个已编码的邻居节点中y轴方向坐标值为1的8个子节点中有点占据的子节点个数,可取值为0到8;定义第四子节点数量(用N
y=0表示)为与y轴坐标方向垂直的xz平面上的2个已编码的邻居节点中y轴方向坐标值为0的8个子节点中有点占据的子节点个数,可取值为0到8。然后通过N
y=1以及N
y=0预测当前节点中单一子节点的y轴方向的坐标值Y
1,据此可构建出3种上下文模型,具体如下所示,
针对语法元素occupancy_idx[1]:
假定第三坐标方向为z轴坐标方向,以第五值为1,第六值为0为例,对于第三二预测值而言,定义第五子节点数量(用N
z=1表示)为与z轴坐标方向垂直的xy平面上的2个已编码的邻居节点中z轴方向坐标值为1的8个子节点中有点占据的子节点个数,可取值为0到8;定义第六子节点数量(用N
z=0表示)为与z轴方向垂直的xy平面上的2个已编码的邻居节点中z轴方向坐标值为0的8个子节点中有点占据的子节点个数,可取值为0到8。然后通过N
z=1以及N
z=0预测当前节点中单一子节点的z轴方向的坐标值Z
1,据此可以构建出3种上下文模型,具体如下所示,
针对语法元素occupancy_idx[0]:
参见图10,其示出了本申请实施例提供的又一种根据多个已编码子节点预测坐标信息的流程示意图。如图10所示,该流程可以包括:
S1001:获取当前节点的已编码3个邻居节点的子节点的占位比特信息;
S1002:分别确定x轴、y轴和z轴方向上有点占据的邻居子节点数N
x=1、N
x=0、N
y=1、N
y=0、N
z=1及N
z=0;
S1003:判断是否N
x=1>0且N
x=0=0;
S1004:若判断结果为是,则X
1=1;
S1005:若判断结果为否,则判断是否N
x=0>0且N
x=1=0;
S1006:若判断结果为是,则X
1=0;
S1007:若判断结果为否,则X
1=不预测;
S1008:判断是否N
y=1>0且N
y=0=0;
S1009:若判断结果为是,则Y
1=1;
S1010:若判断结果为否,则判断是否N
y=0>0且N
y=1=0;
S1011:若判断结果为是,则Y
1=0;
S1012:若判断结果为否,则Y
1=不预测;
S1013:判断是否N
z=1>0且N
z=0=0;
S1014:若判断结果为是,则Z
1=1;
S1015:若判断结果为否,则判断是否N
z=0>0且N
z=1=0;
S1016:若判断结果为是,则Z
1=0;
S1017:若判断结果为否,则Z
1=不预测。
需要说明的是,预测坐标值X
1的确定,对于S1003来说,如果判断结果为是,则执行S1004;如果判断结果为否,则执行S1005,继续判断是否N
x=0>0且N
x=1=0,如果判断结果为是,则执行S1006;如果判断结果为否,则执行S1007。
预测坐标值Y
1的确定,对于S1008来说,如果判断结果为是,则执行S1009;如果判断结果为否,则执行S1010,继续判断是否N
y=0>0且N
y=1=0,如果判断结果为是,则执行S1011;如果判断结果为否,则执行S1012。
预测坐标值Z
1的确定,对于S1013来说,如果判断结果为是,则执行S1014;如果判断结果为否,则执行S1015,继续判断是否N
z=0>0且N
z=1=0,如果判断结果为是,则执行S1016;如果判断结果为否,则执行S1017。
这样,在得到第一坐标方向的第一一预测值和第一二预测值之后,可以据此确定出第一坐标方向的所述第二上下文模型的索引序号值;在得到第二坐标方向的第二一预测值和第二二预测值之后,可以据此确定出第二坐标方向的所述第二上下文模型的索引序号值;在得到第三坐标方向的第三一预测值和第三二预测值之后,可以据此确定出第三坐标方向的所述第二上下文模型的索引序号值;从而确定出第二上下文模型的索引序号值,然后从式(2)~式(10)等多个第二候选上下文模型中选择索引序号值对应的第二候选上下文模型,以将其确定为第二上下文模型。
另外,针对第一上下文模型的索引序号值的确定,在一些实施例中,所述确定所述当前节点的预测 标识信息,并根据所述预测标识信息确定所述第一上下文模型的索引序号值,可以包括:
确定第一方向值、第二方向值和第三方向值;
对所述第一方向值、所述第二方向值和所述第三方向值进行相加计算,确定和值;
根据所述和值,确定所述标识信息的预测值;
根据所述预测值,确定所述第一上下文模型的索引序号值。
需要说明的是,第一方向值(O
ncx)表示第一坐标方向上与所述当前节点相接的M个已编码子节点中是否有点占据,第二方向值(O
ncy)表示第二坐标方向上与所述当前节点相接的M个已编码子节点中是否有点占据,第三方向值(O
ncz)表示第三坐标方向上与所述当前节点相接的M个已编码子节点中是否有点占据,M为大于0的整数。
还需要说明的是,和值用N
onc表示,可以定义N
onc=O
ncx+O
ncy+O
ncz,其为3个方向上4个已编码子节点中有点占据的情况的数量,可取值为0到3。
在一种具体的实现方式中,通过N
onc对标识信息(如标志位,flag)的预测,可以构建出2种上下文模型,具体如下所示,
针对语法元素single_child_flag:
参见图11,其示出了本申请实施例提供的一种根据多个已编码子节点预测标识信息的流程示意图。如图11所示,该流程可以包括:
S1101:获取与当前节点相接的12个已编码子节点的占位比特信息;
S1102:确定O
ncx、O
ncy和O
ncz;
S1103:对O
ncx、O
ncy和O
ncz进行求和计算,确定N
onc;
S1104:判断N
onc是否小于2;
S1105:若判断结果为否,则flag=1;
S1106:若判断结果为是,则flag=0。
需要说明的是,标识信息(flag)的预测,对于S1104来说,判断是否N
onc<2,如果判断结果为否,则执行S1105;如果判断结果为是,则执行S1106。
在另一种具体的实现方式中,通过N
onc对标识信息(如标志位,flag)的预测,可以构建出2种上下文模型,具体如下所示,
针对语法元素single_child_flag:
参见图12,其示出了本申请实施例提供的另一种根据多个已编码子节点预测标识信息的流程示意图。如图12所示,该流程可以包括:
S1201:获取与当前节点相接的12个已编码子节点的占位比特信息;
S1202:确定O
ncx、O
ncy和O
ncz;
S1203:对O
ncx、O
ncy和O
ncz进行求和计算,确定N
onc;
S1204:判断N
onc是否小于2;
S1205:若判断结果为否,则flag=0;
S1206:若判断结果为是,则flag=1。
需要说明的是,标识信息(flag)的预测,对于S1204来说,判断是否N
onc<2,如果判断结果为否,则执行S1205;如果判断结果为是,则执行S1206。
也就是说,在得到O
ncx、O
ncy和O
ncz之后,可以计算出N
onc,然后根据N
onc可以确定出标识信息的预测值,进而确定出第一上下文模型的索引序号值,然后根据式(11)或式(12)所示的两个第一候选上下文模型中选择索引序号值对应的第一候选上下文模型,以将其确定为第一上下文模型。
在本申请实施例中,用于预测标识信息(flag)的上下文模型,可以共有2种上下文模型的数量。在编码过程中,根据当前节点的邻居子节点的占位比特信息,可得预测出标识信息的唯一上下文索引序号,根据索引序号选择2种当中的1种上下文模型以便后续对标识信息进行CABAC。针对三个坐标方向(x/y/z坐标方向)分别构建预测坐标信息的上下文模型,每个坐标方向上共有2×3=6种上下文模型的数量,那么三个坐标方向上总共有18种上下文模型。在编码过程中,根据当前节点的邻居子节点的占位比特信息,可得唯一的上下文索引序号,根据索引序号选择18种当中的1种上下文模型以便后续对预测坐标值进行CABAC。
除此之外,在另一可能的实施方式中,对于第一候选上下文模型和第二候选上下文模型的构建,如图2所示,获取当前节点的6个邻居节点的占位比特信息(occupancy bit),即邻居节点内有点占据,则占位比特信息为1,否则占位比特信息为0。如此,可以计算得出邻居配置数(Neighbouring configuration number,NC),NC的取值范围可以为0到63,即二进制的000000到111111。这样,根据NC可以构建最多64种上下文数量的上下文模型,也可任意合并其中的n个上下文模型,即可以构建x个数量的上下文模型,其中,x可取值为1到64。
在又一可能的实施方式中,对于第一候选上下文模型和第二候选上下文模型的构建,如图13所示,获取当前节点的3个邻居节点的24个已编码子节点的占位比特信息(occupancy bit),即子节点内有点占据,则占位比特信息为1,否则占位比特信息为0。如此,可以计算得出邻居子节点配置数(Neighbouring configuration number by child level,NC
c),NC
c的取值范围可以为0到224,即二进制的“24个0”到“24个1”。这样,根据NC
c可以构建最多224种上下文数量的上下文模型,也可任意合并其中的n个上下文模型,即可以构建x个数量的上下文,其中,x可取值为1到224。
简言之,上述所构建的上下文模型均可用于编码坐标信息和标识信息。一句话概括为:利用当前节点的6个邻居节点和24个已编码子节点的占位比特信息,可以构建上下文模型对当前节点中的单一子节点的坐标信息及所需标识信息(flag)进行CABAC。
本实施例提供了一种点云编码方法,通过确定当前节点的子节点被占据数;根据所述子节点被占据数确定单一子节点的标识信息的取值,利用第一上下文模型对所述标识信息的取值进行熵编码,并写入码流;若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则确定所述被占据子节点的坐标信息,利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码,并写入码流。这样,通过利用当前节点的邻居节点及其子节点的占位比特情况对单一子节点的标识信息和坐标信息分别构建上下文模型,如此基于上下文模型对标识信息和坐标信息进行熵编码,能够充分利用点云的空间相关性,从而能够提高点云的编码效率。
本申请的另一实施例中,参见图14,其示出了本申请实施例提供的一种点云编码方法的详细流程示意图。如图14所示,该详细流程可以包括:
S1401:进入八叉树的第i层;
这里,i为大于或等于0且小于K的整数,K表示八叉树的划分层数。需要说明的是,该详细流程首次为进入八叉树的第0层。
S1402:设置N
all=0,N
singe=0,ctxSingleChildEnabled=0;
S1403:读取第j个节点;
这里,j为大于或等于0且小于N的整数,N为第i层中的节点总数量。
S1404:根据当前节点的6个邻居节点的占位比特信息,计算邻居配置数NC;
S1405:根据当前节点划分的8个子节点的占位比特信息,计算子节点被占据数N
oc;
S1406:判断是否ctxSingleChildEnabled==1;
S1407:确定第一组坐标信息的预测值(X
0、Y
0、Z
0);
S1408:确定第二组坐标信息的预测值(X
1、Y
1、Z
1);
S1409:确定标识信息的预测值;
需要说明的是,对于步骤S1406而言,如果判断结果为是,那么执行S1407~S1408,然后再执行S1409;如果判断结果为否,那么将直接执行S1409。
S1410:判断是否NC==0;
S1411:若判断结果为否,则判断是否ctxSingleChildEnabled==1;
S1412:若判断结果为是,则判断是否N
oc==1;
S1413:若判断结果为否,则确定flag=0;
S1414:若判断结果为是,则确定flag=1;
需要说明的是,对于步骤S1412而言,判断N
oc是否等于1,如果判断结果为否,那么执行S1413;如果判断结果为是,那么将直接执行S1414。在S1413和S1414之后,均将执行S1415。
S1415:对flag进行基于预测flag的上下文模型的CABAC;
S1416:判断是否flag==1;
S1417:若判断结果为是,则根据当前节点的8个子节点的占位比特信息计算唯一被占据子节点的坐标信息X、Y、Z;
S1418:对坐标信息X、Y、Z进行基于预测坐标信息的上下文模型的CABAC;
需要说明的是,对于步骤S1416而言,判断flag是否等于1,如果判断结果为是,则执行S1417~S1418;如果判断结果为否,则执行S1426。
还需要说明的是,对于步骤S1410而言,如果判断结果为否,则执行S1411;如果判断结果为是,则执行S1419。而对于步骤S1411而言,如果判断结果为是,则执行S1412;如果判断结果为否,则执行S1426。
S1419:若判断结果为是,则判断是否N
oc==1;
S1420:若判断结果为否,则确定flag=0;
S1421:若判断结果为是,则确定flag=1;
S1422:对flag进行基于预测flag的上下文模型的CABAC;
需要说明的是,对于步骤S1419而言,判断N
oc是否等于1,如果判断结果为否,那么执行S1420;如果判断结果为是,那么将直接执行S1421。在S1420和S1421之后,均将执行S1422。
S1423:判断是否flag==1;
S1424:若判断结果为是,则根据当前节点的8个子节点的占位比特信息计算唯一被占据子节点的坐标信息X、Y、Z;
S1425:对坐标信息X、Y、Z进行等概率静态算术编码;
S1426:若判断结果为否,则对当前节点的8个子节点的占位比特信息进行基于NC上下文的CABAC;
S1427:N
all=N
all+1;
需要说明的是,对于S1411、S1416和S1423而言,如果判断结果为否,那么均将执行S1426。在S1426、S1418和S1425之后,则均将执行S1427。
S1428:判断是否N
oc==1;
S1429:若判断结果为是,则N
singe=N
singe+1;
S1430:判断是否N
singe/N
all>0.5;
S1431:若判断结果为否,则ctxSingleChildEnabled=0;
S1432:若判断结果为是,则ctxSingleChildEnabled=1;
S1433:判断当前第j层内所有节点是否已处理;
S1434:若判断结果为否,则j=j+1,返回执行S1403;
S1435:若判断结果为是,则判断八叉树的所有层是否已处理;
S1436:若判断结果为否,则i=i+1,返回执行S1401;
S1437:若判断结果为是,则结束流程。
需要说明的是,首先,进入八叉树的第i层(i的最小值为0),赋值节点数量N
all=0,单一子节点数量N
singe=0,单一子节点使能变量ctxSingleChildEnabled=0。
其次,读取第j个节点(j的最小值为0),根据该当前节点的6个邻居节点的占位比特信息(或称为占位比特模式),计算得出NC。然后根据当前节点划分的8个子节点的占位比特信息,计算得出N
oc。
再次,当ctxSingleChildEnabled==1时,分别根据x、y、z坐标轴负方向上与当前节点相接的4个已编码子节点的占位比特信息,得出O
ncx、O
ncy和O
ncz,再计算得出N
onc=O
ncx+O
ncy+O
ncz,最后预测出flag和第一组坐标信息X
0、Y
0和Z
0。根据当前节点的3个已编码的邻居节点的子节点占位比特信息,计算得出N
x=1和N
x=0,N
y=1和N
y=0,N
z=1和N
z=0,分别预测出第二组坐标信息X
1,Y
1和Z
1。而当ctxSingleChildEnabled==0时,可以根据x、y、z坐标轴负方向上与当前节点相接的4个已编码子节点的占位比特信息,仅预测出flag。
当NC==0时(邻居配置数为0,即6个邻居节点中无邻居节点被占据),赋值flag为1代表N
oc等于1的情况(即8个子节点中仅有1个子节点被占据),赋值flag为0代表N
oc不等于1的情况(即8个子节点中不只1个子节点被占据)。由于已经得到预测flag,这时候可以对该flag进行基于上下文“预测flag”的自适应二进制算术编码,写入码流。当flag等于1时,先根据当前节点的8个子节点的占位比特信息计算出其单一子节点的坐标信息(X/Y/Z坐标值),并分别对X/Y/Z坐标值进行等概率静态二进制算术编码,写入码流。
当NC>0(6个邻居节点中有邻居节点被占据)且ctxSingleChildEnabled==1时,赋值flag为1代表N
oc等于1的情况(即8个子节点中仅有1个子节点被占据),赋值flag为0代表N
oc不等于1的情况(即8个子节点中不只1个子节点被占据),并对该flag进行基于上下文“预测flag”的自适应二进制算术编码,写入码流。当flag等于1时,先根据当前节点的8个子节点的占位比特信息计算出其单一子节点的坐标信息(X/Y/Z坐标值),并分别对X/Y/Z坐标值进行基于上下文“预测坐标信息”的自适应二进制算术编码,写入码流。
当flag==0(8个子节点中不只1个子节点被占据)或者,NC>0(6个邻居节点中有邻居节点被占 据)且ctxSingleChildEnabled==0时,则对当前节点的8个子节点的占位比特信息进行CABAC,写入码流。
最后,更新N
all=N
all+1,当N
oc=1时,更新N
singe=N
singe+1。计算出ctxSingleChildEnabled,具体如下所示,
如果当前第i层内所有节点已处理,那么i=i+1,并返回到步骤S1401处理八叉树下一层;否则,j=j+1,返回到步骤S1403处理第i层的下一个节点。如果所有层已处理,那么可以结束流程。
简言之,本申请技术方案的保护点在于针对单一子节点编码构建了“预测flag”和“预测坐标信息”的上下文模型,通过CABAC提高压缩效率。并通过有单一子节点的节点在所有节点中的比例来控制该点云编码方法是否使能。
也就是说,本申请技术方案更加充分的利用了点云的空间相关性,使G-PCC的编码效率进一步提高。如下表2所示的几何信息有损压缩条件下的BD-Rate,其示出了与相关技术相比,在获得相同编码质量的情况下,本申请实施例的编码码率比相关技术的编码码率节省(BD-Rate为负值)或增加(BD-Rate为正值)的百分比。如下表3所示的几何信息无损压缩条件下的Bpip Ratio,其示出了在点云质量无损失的情况下,本申请实施例的编码码率占相关技术编码码率的百分比,这里,数值越低,本申请实施例节省的码率越大。
表2
表3
本实施例提供了一种点云编码方法,通过上述实施例对前述实施例的具体实现进行了详细阐述,从中可以看出,由于针对单一子节点的标识信息和坐标信息分别构建了上下文模型,如此基于上下文模型对标识信息和坐标信息进行熵编码,能够充分利用点云的空间相关性,从而能够提高点云的编码效率。
本申请的又一实施例中,本申请实施例提供的点云解码方法应用于视频解码设备,即G-PCC解码器,也可简称为解码器。该方法所实现的功能可以通过解码器中的第二处理器调用计算机程序来实现,当然计算机程序可以保存在第二存储器中,可见,解码器至少包括第二处理器和第二存储器。
参见图15,其示出了本申请实施例提供的一种点云解码方法的流程示意图。如图15所示,该方法可以包括:
S1501:利用第一上下文模型解析码流,获取当前节点的单一子节点的标识信息的取值。
需要说明的是,在点云中,点可以是点云中的所有点,也可以是点云中的部分点,这些点在空间上相对集中。
还需要说明的是,基于图1B所示的G-PCC解码器的框架,本申请实施例的方法主要应用于“上 下文建模”部分,针对目前的相关技术中基于点云邻居节点的几何信息熵解码进行优化,以提升对空间相关性的利用程度。
在本申请实施例中,在解码获取到标识信息(如标志位,flag)的取值之后,可以确定出当前节点划分的子节点中被占据子节点的个数。在一些实施例中,该方法还可以包括:
若所述标识信息的取值等于第一标识值,则确定所述当前节点划分的子节点中仅包括一个被占据子节点;
若所述标识信息的取值等于第二标识值,则确定所述当前节点划分的子节点中包括至少两个被占据子节点。
在本申请实施例中,第一标识值可以为1,第二标识值可以为0;或者,第一标识值可以为0,第二标识值可以为1。在一种具体的示例中,第一标识值可设置为1,第二标识值可设置为0,但是不作具体限定。
需要说明的是,标识信息的取值也可以是被占据子节点的个数。例如,如果标识信息的取值等于0,那么当前节点划分的子节点中无被占据子节点;如果标识信息的取值等于1,那么当前节点划分的子节点中仅包括一个被占据子节点;如果标识信息的取值大于或等于2,那么当前节点划分的子节点中包括至少两个被占据子节点。
S1502:若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则利用第二上下文模型解析码流,获取所述被占据子节点的坐标信息。
需要说明的是,在标识信息的取值指示当前节点划分的子节点中仅包括一个被占据子节点时,这时候需要解析码流,以获取被占据子节点的坐标信息。然而由于邻居配置数的不同,对于被占据子节点的坐标信息所采用的熵编码方式可能不同,这时候对被占据子节点的坐标信息所采用的熵解码方式也可能不同。因此,本申请实施例还需要确定当前节点的邻居配置数。在一些实施例中,该方法还可以包括:
确定当前节点的邻居配置数;
若所述邻居配置数指示所述当前节点中有邻居节点被占据,则在所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点时,执行所述利用第二上下文模型解析码流,获取所述被占据子节点的坐标信息的步骤。
进一步地,在确定当前节点的邻居配置数之后,该方法还可以包括:
若所述邻居配置数指示所述当前节点中无邻居节点被占据,则在所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点时,执行利用等概率静态二进制算术解析码流,获取所述被占据子节点的坐标信息的步骤。
在本申请实施例中,邻居配置数(Neighbouring configuration number,NC)用于表示当前节点的多个邻居节点中有无邻居节点被占据。具体地,所述确定当前节点的邻居配置数,可以包括:
获取所述当前节点的邻居节点的占位比特信息;
根据所述邻居节点的占位比特信息,确定所述邻居配置数。
这里,邻居节点可以包括下述至少之一:与所述当前节点左侧面相接的邻居节点、与所述当前节点右侧面相接的邻居节点、与所述当前节点上侧面相接的邻居节点、与所述当前节点下侧面相接的邻居节点、与所述当前节点后侧面相接的邻居节点、与所述当前节点前侧面相接的邻居节点。也就是说,当前节点的邻居节点通常包括有6个,具体如图2所示。
还需要说明的是,邻居节点的占位比特信息是根据邻居节点内有无点占据确定的。在一种具体的实施例中,所述获取所述当前节点的邻居节点的占位比特信息,可以包括:
若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;
若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
在本申请实施例中,第一值可以为1,第二值可以为0;或者,第一值可以为0,第二值可以为1。在一种具体的示例中,第一值可设置为1,第二值可设置为0,但是不作具体限定。
也就是说,以第一值为1,第二值为0为例,如果某邻居节点内有点占据,那么该邻居节点的占位比特信息等于1;如果某邻居节点内无点占据,那么该邻居节点的占位比特信息等于0。这样,针对当前节点的6个邻居节点的占位比特信息,可以计算得到邻居配置数。
另外,根据邻居配置数,可以反映当前节点中有无邻居节点被占据。在一些实施例中,该方法还可以包括:
若所述邻居配置数大于第二阈值,则确定所述当前节点中有邻居节点被占据;
若所述邻居配置数等于第二阈值,则确定所述当前节点中无邻居节点被占据。
在本申请实施例中,邻居配置数的取值范围为0~63,第二阈值可以设置为0。也就是说,如果邻居配置数大于0,那么可以表明当前节点中有邻居节点被占据;如果邻居配置数等于0,那么可以表明当 前节点中无邻居节点被占据。
还应理解,在步骤S1501之前,该方法还可包括:确定第一上下文模型和第二上下文模型。这里,第一上下文模型可以用于对标识信息进行预测,第二上下文模型可以用于对坐标信息进行预测。
在一种具体的实施例中,所述确定所述第一上下文模型和所述第二上下文模型,可以包括:
确定单一子节点使能变量的取值;
在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,确定所述第一上下文模型和所述第二上下文模型。
需要说明的是,本申请实施例引入了一个新的变量,即单一子节点使能变量(可以用ctxSingleChildEnabled表示)。其中,单一子节点使能变量与节点数量(用N
all表示)和单一子节点数量(用N
singe表示)有关。具体地,在一些实施例中,所述确定单一子节点使能变量的取值,可以包括:
确定节点数量以及单一子节点数量;
对所述单一子节点数量和所述节点数量进行除法运算,得到第一比例值;
将所述第一比例值和预设阈值进行比较;
若所述第一比例值大于所述预设阈值,则确定所述单一子节点使能变量的取值为第三值;
若所述第一比例值小于或等于所述预设阈值,则确定所述单一子节点使能变量的取值为第四值。
在本申请实施例中,第三值可以为1,第四值可以为0;或者,第三值可以为0,第四值可以为1。在一种具体的示例中,第三值可设置为1,第四值可设置为0,但是不作具体限定。
需要说明的是,预设阈值表示预先设置的经验值,可以作为判断单一子节点使能变量取值的衡量指标。这里,预设阈值的取值范围为[0,1]之内,根据实际情况进行具体调整。在本申请实施例中,预设阈值可以设置为0.5,但是这里不作具体限定。
还需要说明的是,单一子节点使能变量可以用ctxSingleChildEnabled表示。针对单一子节点使能变量的确定,可以根据上述的式(1)实现。
进一步地,在一些实施例中,该方法还可以包括:
若单一子节点使能变量的取值为1,则确定所述当前节点处于单一子节点使能状态;
若单一子节点使能变量的取值为0,则确定所述当前节点处于单一子节点不使能状态。
也就是说,如果ctxSingleChildEnabled=1,那么当前节点处于单一子节点使能状态,这时候可以执行本申请实施例所述的点云解码方法;如果ctxSingleChildEnabled=0,那么当前节点处于单一子节点不使能状态,这时候可以执行相关技术的点云解码方法,即基于NC上下文的CABAC解码得到当前节点的8个子节点的占位比特信息。
可以理解地,在本申请实施例中,N
singe和N
all是不断更新的。具体地,在一些实施例中,该方法还可以包括:
对输入点云进行八叉树划分,得到K层的八叉树,K为大于0的整数;
在进入所述八叉树的第i层时,设置所述节点数量的初始值为0,所述单一子节点数量的初始值为0,所述单一子节点使能变量的初始值为0;其中,i为大于或等于0且小于K的整数。
进一步地,所述确定节点数量以及单一子节点数量,可以包括:
基于第i层中的已解码节点,获得所述节点数量;
从所述已解码节点中确定仅包括一个被占据子节点的已解码节点,获得所述单一子节点数量。
需要说明的是,节点数量和单一子节点数量都是第i层中的已解码节点。对于单一子节点数量而言,所述从所述已解码节点中确定仅包括一个被占据子节点的已解码节点,获得所述单一子节点数量,包括:
在所述已解码节点中,判断所述已解码节点划分的子节点是否仅包括一个被占据子节点;
若判断结果为是,则对所述单一子节点数量执行加1操作,更新所述单一子节点数量;
若判断结果为否,则维持所述单一子节点数量不变。
换句话说,在对输入点云进行八叉树划分后,可以得到K层的八叉树。在进入八叉树的第i层时,初始化节点数量(N
all)、单一子节点数量(N
singe)和单一子节点使能变量(ctxSingleChildEnabled)的值,即赋值N
all=0,N
singe=0,ctxSingleChildEnabled=0。然后针对第i层,在第i层的第j个节点已经完成点云解码后,可以更新N
all=N
all+1,即节点数量表示已解码节点的数量。若第j个节点划分的子节点中仅包括一个被占据子节点(即N
oc=1)时,则更新N
singe=N
singe+1,也即单一子节点数量表示已解码节点中确定仅包括一个被占据子节点的已解码节点的数量。在j小于N时,则更新j=j+1,继续执行读取所述第i层的第j个节点的步骤,直至第i层中所有节点均已经处理,j为大于或等于0且小于N的整数,N为第i层中的节点总数量;然后再进入八叉树的第i+1层,直至八叉树的K层全部已处理。
这样,在确定出N
singe和N
all之后,结合式(1)可以计算得到单一子节点使能变量 (ctxSingleChildEnabled)的取值,以便确定后续是否需要利用第一上下文模型和第二上下文模型进行熵解码。
具体来讲,在本申请实施例中,如果邻居配置数指示当前节点中有邻居节点被占据,那么表示NC>0;如果单一子节点使能变量的取值指示当前节点处于单一子节点使能状态,那么表示ctxSingleChildEnabled=1。也就是说,在邻居配置数指示当前节点中有邻居节点被占据(即NC>0)且ctxSingleChildEnabled=1的情况下,这时候需要构建上下文模型,即确定第一上下文模型和第二上下文模型,以便利用第一上下文模型和第二上下文模型进行熵解码。
在一些实施例中,在单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,该方法还可以包括:
确定所述当前节点的预测标识信息,并根据预测标识信息确定所述第一上下文模型的索引序号值;
根据所述第一上下文模型的索引序号值,确定所述第一上下文模型。
在一种具体的实施例中,所述根据所述第一上下文模型的索引序号值,确定所述第一上下文模型,可以包括:
构建至少一个第一候选上下文模型;其中,不同的第一候选上下文模型对应不同的索引序号;
根据所述第一上下文模型的索引序号值,从所述至少一个第一候选上下文模型中选择所述索引序号值对应的第一候选上下文模型,将所选择的第一候选上下文模型确定为所述第一上下文模型。
在一些实施例中,在单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,该方法还可以包括:
确定所述当前节点的预测坐标信息,并根据预测坐标信息确定所述第二上下文模型的索引序号值;
根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
在一种具体的实施例中,所述根据所述第二上下文模型的索引序号值,确定所述第二上下文模型,可以包括:
构建至少一个第二候选上下文模型;其中,不同的第二候选上下文模型对应不同的索引序号;
根据所述第二上下文模型的索引序号值,从所述至少一个第二候选上下文模型中选择所述索引序号值对应的第二候选上下文模型,将所选择的第二候选上下文模型确定为所述第二上下文模型。
其中,针对第二上下文模型的索引序号值的确定,在一些实施例中,所述确定所述当前节点的预测坐标信息,并根据所述预测坐标信息确定所述第二上下文模型的索引序号值,可以包括:
获取所述当前节点相邻的已解码子节点的占位比特信息;
根据所述当前节点相邻的已解码子节点的占位比特信息,确定三个坐标方向的预测坐标值;
根据所述三个坐标方向的预测坐标值,确定所述第二上下文模型的索引序号值。
需要说明的是,预测坐标信息可以包括第一坐标方向的预测坐标值、第二坐标方向的预测坐标值和第三坐标方向的预测坐标值。其中,第一坐标方向可以为x轴坐标方向,第二坐标方向可以为y轴坐标方向,第三坐标方向可以为z轴坐标方向。
这样,在本申请实施例中,对于第二上下文模型的索引序号值,也可以分为:第一坐标方向的第二上下文模型的索引序号值、第二坐标方向的第二上下文模型的索引序号值和第三坐标方向的第二上下文模型的索引序号值。因此,在一些实施例中,所述根据所述三个坐标方向的预测坐标值,确定所述第二上下文模型的索引序号值,可以包括:
根据所述三个坐标方向的预测坐标值,获得所述第一坐标方向的第一一预测值和第一二预测值、所述第二坐标方向的第二一预测值和第二二预测值、所述第三坐标方向的第三一预测值和第三二预测值;
根据所述第一坐标方向的第一一预测值和第一二预测值,确定第一坐标方向的所述第二上下文模型的索引序号值;
根据所述第二坐标方向的第二一预测值和第二二预测值,确定第二坐标方向的所述第二上下文模型的索引序号值;
根据所述第三坐标方向的第三一预测值和第三二预测值,确定第三坐标方向的所述第二上下文模型的索引序号值。
需要说明的是,首先需要根据当前节点相邻的已解码子节点的占位比特信息来确定第一坐标方向的第一一预测值、第二坐标方向的第二一预测值和第三坐标方向的第三一预测值。具体地,在一些实施例中,所述根据所述当前节点相邻的已解码子节点的占位比特信息,确定三个坐标方向的预测坐标值,可以包括:
从所述当前节点相邻的已解码子节点的占位比特信息中确定第一坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,根据所述第一坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第一坐标方向的第一一预测坐标值;
从所述当前节点相邻的已解码子节点的占位比特信息中确定第二坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,根据所述第二坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第二坐标方向的第二一预测坐标值;
从所述当前节点相邻的已解码子节点的占位比特信息中确定第三坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,根据所述第三坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第三坐标方向的第三一预测坐标值;其中,M为大于0的整数。
在一种具体的实现方式中,所述根据所述第一坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第一坐标方向的第一一预测坐标值,可以包括:
根据所述第一坐标方向上与当前节点相接的M个已解码子节点的占位比特信息,确定第一方向值;其中,所述第一方向值表示第一坐标方向上与当前节点相接的M个已解码子节点中是否有点占据;
根据所述第一方向值与预设方向值的比较结果,确定所述第一坐标方向的第一一预测值。
在另一种具体的实现方式中,所述根据所述第二坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第二坐标方向的第二一预测坐标值,可以包括:
根据所述第二坐标方向上与当前节点相接的M个已解码子节点的占位比特信息,确定第二方向值;其中,所述第二方向值表示第二坐标方向上与当前节点相接的M个已解码子节点中是否有点占据;
根据所述第二方向值与预设方向值的比较结果,确定所述第二坐标方向的第二一预测值。
在又一种具体的实现方式中,所述根据所述第三坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第三坐标方向的第三一预测坐标值,可以包括:
根据所述第三坐标方向上与当前节点相接的M个已解码子节点的占位比特信息,确定第三方向值;其中,所述第三方向值表示第三坐标方向上与当前节点相接的M个已解码子节点中是否有点占据;
根据所述第三方向值与预设方向值的比较结果,确定所述第三坐标方向的第三一预测值。
示例性地,假定M等于4,如图5所示,可以定义第一方向值(用O
ncx表示)为x轴负方向上与当前节点相接的4个已解码子节点的占位比特信息,即该4个子节点中是否有点占据;定义第二方向值(用O
ncy表示)为y轴负方向上与当前节点相接的4个已解码子节点的占位比特信息,即该4个子节点中是否有点占据;定义第三方向值(用O
ncz表示)为z轴负方向上与当前节点相接的4个已解码子节点的占位比特信息,即该4个子节点中是否有点占据。
如此,根据O
ncx,O
ncy和O
ncz预测三个坐标方向(x轴坐标方向、y轴坐标方向和z轴坐标方向)的预测坐标值,可以分别构建出2种上下文模型,具体如上述的式(2)、式(3)和式(4)所示。
还需要说明的是,本申请实施例还需要根据当前节点相邻的已解码子节点的占位比特信息来确定第一坐标方向的第一二预测值、第二坐标方向的第二二预测值和第三坐标方向的第三二预测值。具体地,在一些实施例中,所述根据所述当前节点相邻的已解码子节点的占位比特信息,确定三个坐标方向的预测坐标值,可以包括:
根据所述当前节点相邻的已解码子节点的占位比特信息,确定与第一坐标方向垂直的平面上已解码子节点中第一方向坐标值为第五值的有点占据的第一子节点数量和第一方向坐标值为第六值的有点占据的第二子节点数量,以及确定与第二坐标方向垂直的平面上已解码子节点中第二方向坐标值为第五值的有点占据的第三子节点数量和第二方向坐标值为第六值的有点占据的第四子节点数量,以及确定第三坐标方向垂直的平面上已解码子节点中第三方向坐标值为第五值的有点占据的第五子节点数量和第三方向坐标值为第六值的有点占据的第六子节点数量;
基于所述第一子节点数量与所述第二子节点数量的比较结果,确定第一坐标方向的第一二预测值;
基于所述第三子节点数量与所述第四子节点数量的比较结果,确定第二坐标方向的第二二预测值;
基于所述第五子节点数量与所述第六子节点数量的比较结果,确定第三坐标方向的第三二预测值。
在本申请实施例中,第五值可以为1,第六值可以为0;或者,第五值可以为0,第六值可以为1。在一种具体的示例中,第五值可设置为1,第六值可设置为0,但是不作具体限定。
示例性地,以第五值为1,第六值为0为例,对于第一二预测值而言,定义第一子节点数量(用N
x=1表示)为与x轴坐标方向垂直的yz平面上的2个已解码的邻居节点中x轴方向坐标值为1的8个子节点中有点占据的子节点个数,可取值为0到8;定义第二子节点数量(用N
x=0表示)为与x轴坐标方向垂直的yz平面上的2个已解码的邻居节点中x轴方向坐标值为0的8个子节点中有点占据的子节点个数,可取值为0到8。然后通过N
x=1以及N
x=0可以预测当前节点中单一子节点的x轴方向的预测坐标值X
1,可构建出3种上下文模型,具体如上述的式(5)或式(8)所示。
对于第二二预测值而言,定义第三子节点数量(用N
y=1表示)为与y轴坐标方向垂直的xz平面上的2个已解码的邻居节点中y轴方向坐标值为1的8个子节点中有点占据的子节点个数,可取值为0到8;定义第四子节点数量(用N
y=0表示)为与y轴坐标方向垂直的xz平面上的2个已解码的邻居节 点中y轴方向坐标值为0的8个子节点中有点占据的子节点个数,可取值为0到8。然后通过N
y=1以及N
y=0预测当前节点中单一子节点的y轴方向的坐标值Y
1,可构建出3种上下文模型,具体如上述的式(6)或式(9)所示。
对于第三二预测值而言,定义第五子节点数量(用N
z=1表示)为与z轴坐标方向垂直的xy平面上的2个已解码的邻居节点中z轴方向坐标值为1的8个子节点中有点占据的子节点个数,可取值为0到8;定义第六子节点数量(用N
z=0表示)为与z轴方向垂直的xy平面上的2个已解码的邻居节点中z轴方向坐标值为0的8个子节点中有点占据的子节点个数,可取值为0到8。然后通过N
z=1以及N
z=0预测当前节点中单一子节点的z轴方向的坐标值Z
1,可构建出3种上下文模型,具体如上述的式(7)或式(10)所示。
另外,针对第一上下文模型的索引序号值的确定,在一些实施例中,所述确定所述当前节点的预测标识信息,并根据所述预测标识信息确定所述第一上下文模型的索引序号值,可以包括:
确定第一方向值、第二方向值和第三方向值;
对所述第一方向值、所述第二方向值和所述第三方向值进行相加计算,确定和值;
根据所述和值,确定所述标识信息的预测标识值;
根据所述预测标识值,确定所述第一上下文模型的索引序号值。
需要说明的是,第一方向值(O
ncx)表示第一坐标方向上与所述当前节点相接的M个已解码子节点中是否有点占据,第二方向值(O
ncy)表示第二坐标方向上与所述当前节点相接的M个已解码子节点中是否有点占据,第三方向值(O
ncz)表示第三坐标方向上与所述当前节点相接的M个已解码子节点中是否有点占据,M为大于0的整数。
还需要说明的是,和值用N
onc表示,可以定义N
onc=O
ncx+O
ncy+O
ncz,其为3个方向上4个已编码子节点中有点占据的情况的数量,可取值为0到3。
在一种具体的实现方式中,通过N
onc对标识信息(如标志位,flag)的预测,可以构建出2种上下文模型,具体如上述的式(11)或式(12)所示。
在本申请实施例中,用于预测标识信息(flag)的上下文模型,可以共有2种上下文模型的数量。在解码过程中,根据当前节点的邻居子节点的占位比特信息,可得预测出标识信息的唯一上下文索引序号,根据索引序号选择2种当中的1种上下文模型以便后续对标识信息进行CABAC。针对三个坐标方向(x/y/z坐标方向)分别构建预测坐标信息的上下文模型,每个坐标方向上共有2×3=6种上下文模型的数量,那么三个坐标方向上总共有18种上下文模型。在解码过程中,根据当前节点的邻居子节点的占位比特信息,可得唯一的上下文索引序号,根据索引序号选择18种当中的1种上下文模型以便后续对预测坐标值进行CABAC。
除此之外,在另一可能的实施方式中,对于第一候选上下文模型和第二候选上下文模型的构建,如图2所示,获取当前节点的6个邻居节点的占位比特信息(occupancy bit),即邻居节点内有点占据,则占位比特信息为1,否则占位比特信息为0。如此,可以计算得出邻居配置数(Neighbouring configuration number,NC),NC的取值范围可以为0到63,即二进制的000000到111111。这样,根据NC可以构建最多64种上下文数量的上下文模型,也可任意合并其中的n个上下文模型,即可以构建x个数量的上下文模型,其中,x可取值为1到64。
在又一可能的实施方式中,对于第一候选上下文模型和第二候选上下文模型的构建,如图13所示,获取当前节点的3个邻居节点的24个已解码子节点的占位比特信息(occupancy bit),即子节点内有点占据,则占位比特信息为1,否则占位比特信息为0。如此,可以计算得出邻居子节点配置数(Neighbouring configuration number by child level,NC
c),NC
c的取值范围可以为0到224,即二进制的“24个0”到“24个1”。这样,根据NC
c可以构建最多224种上下文数量的上下文模型,也可任意合并其中的n个上下文模型,即可以构建x个数量的上下文,其中,x可取值为1到224。
简言之,上述所构建的上下文模型均可用于解码获得坐标信息和标识信息。一句话概括为:利用当前节点的6个邻居节点和24个已解码子节点的占位比特信息,可以构建上下文模型,通过解码获得所需标识信息(flag)以及确定出当前节点中的被占据子节点的坐标信息。
S1503:基于所述被占据子节点的坐标信息,确定所述当前节点划分的子节点的占位比特信息。
需要说明的是,基于被占据子节点的坐标信息,可以确定出当前节点划分的子节点的占位比特信息。在一些实施例中,在确定所述当前节点划分的子节点的占位比特信息之后,该方法还可以包括:
若所述子节点的占位比特信息等于第一值,则确定所述子节点内有点占据;
若所述子节点的占位比特信息等于第二值,则确定所述子节点内无点占据。
还需要说明的是,基于被占据子节点的坐标信息,可以确定出当前节点划分的子节点的占位比特信息。在一些实施例中,在确定所述当前节点划分的子节点的占位比特信息之后,该方法还可以包括:根 据所述子节点的占位比特信息,确定所述子节点被占据数(N
oc)。
在本申请实施例中,第一值可以为1,第二值可以为0;或者,第一值可以为0,第二值可以为1。在一种具体的示例中,第一值可设置为1,第二值可设置为0,但是不作具体限定。
也就是说,以第一值为1,第二值为0为例,如果某子节点的占位比特信息等于1,那么该子节点内有点占据;如果某子节点的占位比特信息等于0,那么该子节点内无点占据。
这样,在解码得到被占据子节点的坐标信息之后,根据被占据子节点的坐标信息,就可以还原出当前节点划分的子节点的占位比特信息。
本实施例提供了一种点云解码方法,通过利用第一上下文模型解析码流,获取当前节点的单一子节点的标识信息的取值;若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则利用第二上下文模型解析码流,获取所述被占据子节点的坐标信息;基于所述被占据子节点的坐标信息,确定所述当前节点划分的子节点的占位比特信息。这样,由于针对单一子节点的标识信息和坐标信息分别构建了上下文模型,如此基于上下文模型对标识信息和坐标信息进行熵解码,能够充分利用点云的空间相关性,从而能够提高点云的解码效率。
本申请的再一实施例中,参见图16,其示出了本申请实施例提供的一种点云解码方法的详细流程示意图。如图16所示,该详细流程可以包括:
S1601:进入八叉树的第i层;
这里,i为大于或等于0且小于K的整数,K表示八叉树的划分层数。需要说明的是,该详细流程首次为进入八叉树的第0层。
S1602:设置N
all=0,N
singe=0,ctxSingleChildEnabled=0;
S1603:读取第j个节点;
这里,j为大于或等于0且小于N的整数,N为第i层中的节点总数量。
S1604:根据当前节点的6个邻居节点的占位比特信息,计算邻居配置数NC;
S1605:判断是否ctxSingleChildEnabled==1;
S1606:确定第一组坐标信息的预测值(X
0、Y
0、Z
0);
S1607:确定第二组坐标信息的预测值(X
1、Y
1、Z
1);
S1608:确定标识信息的预测值;
需要说明的是,对于步骤S1605而言,如果判断结果为是,那么执行S1606~S1607,然后再执行S1608;如果判断结果为否,那么将直接执行S1608。
S1609:判断是否NC==0;
S1610:若判断结果为否,则判断是否ctxSingleChildEnabled==1;
S1611:若判断结果为是,则利用第一上下文模型进行CABAC解码获得flag;
S1612:判断是否flag==1;
S1613:若判断结果为是,则利用第二上下文模型进行CABAC解码获得唯一被占据子节点的坐标信息X、Y、Z;
S1614:还原当前节点划分的8个子节点的占位比特信息;
在本申请实施例中,第一上下文模型用于对标识信息(如flag)进行预测;第二上下文模型用于对坐标信息(如X/Y/Z坐标值)进行预测。
需要说明的是,对于步骤S1612而言,如果判断结果为是,则执行S1613~S1614;如果判断结果为否,则执行S1619。
还需要说明的是,对于步骤S1609而言,如果判断结果为否,则执行S1610;如果判断结果为是,则执行S1615。
S1615:若判断结果为是,则利用第一上下文模型进行CABAC解码获得flag;
S1616:判断是否flag==1;
S1617:若判断结果为是,则利用等概率静态算术解码获得唯一被占据子节点的坐标信息X、Y、Z;
S1618:还原当前节点划分的8个子节点的占位比特信息;
S1619:若判断结果为否,则利用基于NC上下文的CABAC解码获得当前节点划分的8个子节点的占位比特信息;
S1620:N
all=N
all+1;
需要说明的是,对于S1610、S1612和S1616而言,如果判断结果为否,那么均将执行S1619。在S1619、S1614和S1618之后,则均将执行S1620。
S1621:判断是否N
oc==1;
S1622:若判断结果为是,则N
singe=N
singe+1;
S1623:判断是否N
singe/N
all>0.5;
需要说明的是,对于S1621而言,如果判断结果为是,则先执行S1622,再执行S1623;如果判断结果为否,则直接执行S1623。
S1624:若判断结果为否,则ctxSingleChildEnabled=0;
S1625:若判断结果为是,则ctxSingleChildEnabled=1;
S1626:判断当前第j层内所有节点是否已处理;
S1627:若判断结果为否,则j=j+1,返回执行S1603;
S1628:若判断结果为是,则判断八叉树的所有层是否已处理;
S1629:若判断结果为否,则i=i+1,返回执行S1601;
S1630:若判断结果为是,则结束流程。
需要说明的是,首先,进入八叉树的第i层(i的最小值为0),初始化设置节点数量N
all=0,单一子节点数量N
singe=0,以及赋值单一子节点使能变量ctxSingleChildEnabled=0。
其次,读取第j个节点(j的最小值为0),根据当前节点的6个邻居节点的占位比特信息,计算得出NC。
再次,当ctxSingleChildEnabled==1时,分别根据x、y、z坐标轴负方向上与当前节点相接的4个已解码子节点的占位比特信息,得出O
ncx、O
ncy和O
ncz,再计算得出N
onc=O
ncx+O
ncy+O
ncz,最后预测出flag和第一组坐标信息X
0,Y
0和Z
0。根据当前节点的3个已解码的邻居节点的子节点占位比特信息,计算得出N
x=1和N
x=0,N
y=1和N
y=0,N
z=1和N
z=0,分别预测出第二值坐标信息X
1,Y
1和Z
1。而当ctxSingleChildEnabled==0时,可以根据x、y、z坐标轴负方向上与当前节点相接的4个已编码子节点的占位比特信息,仅预测出flag。
当NC==0时(邻居配置数为0,即6个邻居节点中无邻居节点被占据),由于已经得到预测flag,这时候可以用基于上下文“预测flag”的自适应二进制算术解码来获得flag。当flag等于1时,则用等概率静态二进制算术解码来获得当前节点中单一子节点的坐标信息(X/Y/Z坐标值),并还原出8个子节点的占位比特信息。
当NC>0(6个邻居节点中有邻居节点被占据)且ctxSingleChildEnabled==1时,用基于上下文“预测flag”的自适应二进制算术解码来获得flag。当flag==1时,则用基于上下文“预测坐标信息”的自适应二进制算术解码来获得当前节点中单一子节点的坐标信息(X/Y/Z坐标值),并还原出8个子节点的占位比特信息。
当flag==0时(8个子节点中不只1个子节点被占据)或者,NC>0(6个邻居节点中有邻居节点被占据)且ctxSingleChildEnabled==0时,则用CABAC来解码获得当前节点的8个子节点的占位比特信息。
最后,更新N
all=N
all+1。根据当前节点的8个子节点的占位比特信息,计算得出N
oc,当N
oc=1时,更新N
singe=N
singe+1。这里,ctxSingleChildEnabled的计算具体如上述的式(13)所示。
如果当前第i层内所有节点已处理,那么i=i+1,并返回到步骤S1601处理八叉树下一层;否则,j=j+1,返回到步骤S1603处理第i层的下一个节点。如果所有层已处理,那么可以结束流程。
简言之,本申请技术方案的保护点在于针对单一子节点解码构建了“预测flag”和“预测坐标信息”的上下文模型,通过CABAC提高压缩效率。并通过有单一子节点的节点在所有节点中的比例来控制该点云解码方法是否使能。
本实施例提供了一种点云解码方法,通过上述实施例对前述实施例的具体实现进行了详细阐述,从中可以看出,由于针对单一子节点的标识信息和坐标信息分别构建了上下文模型,如此基于上下文模型对标识信息和坐标信息进行熵解码,能够充分利用点云的空间相关性,从而能够提高点云的解码效率。
本申请的再一实施例中,基于前述实施例相同的发明构思,参见图17,其示出了本申请实施例提供的一种编码器170的组成结构示意图。如图17所示,该编码器170可以包括:第一确定单元1701和编码单元1702;其中,
第一确定单元1701,配置为确定当前节点的子节点被占据数;
编码单元1702,配置为根据所述子节点被占据数确定单一子节点的标识信息的取值,利用第一上下文模型对所述标识信息的取值进行熵编码,并写入码流;
编码单元1702,还配置为若所述标识信息的取值指示当前节点划分的子节点中仅包括一个被占据子节点,则确定所述被占据子节点的坐标信息,利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码,并写入码流。
在一些实施例中,第一确定单元1701,还配置为确定所述当前节点的邻居配置数;
编码单元1702,还配置为若所述邻居配置数指示所述当前节点中有邻居节点被占据,则在所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点时,执行所述利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码的步骤。
在一些实施例中,第一确定单元1701,还配置为确定单一子节点使能变量的取值;以及在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,确定所述第一上下文模型和所述第二上下文模型。
在一些实施例中,第一确定单元1701,具体配置为获取所述当前节点的邻居节点的占位比特信息;根据所述邻居节点的占位比特信息,确定所述邻居配置数。
在一些实施例中,第一确定单元1701,还配置为若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
在一些实施例中,所述邻居节点包括下述至少之一:与所述当前节点左侧面相接的邻居节点、与所述当前节点右侧面相接的邻居节点、与所述当前节点上侧面相接的邻居节点、与所述当前节点下侧面相接的邻居节点、与所述当前节点后侧面相接的邻居节点、与所述当前节点前侧面相接的邻居节点。
在一些实施例中,第一确定单元1701,具体配置为获取所述当前节点划分的子节点的占位比特信息;根据所述子节点的占位比特信息,确定所述子节点被占据数。
在一些实施例中,第一确定单元1701,还配置为若所述子节点内有点占据,则确定所述子节点的占位比特信息等于第一值;若所述子节点内无点占据,则确定所述子节点的占位比特信息等于第二值。
在一些实施例中,所述第一值为1,所述第二值为0;或者,所述第一值为0,所述第二值为1。
在一些实施例中,参见图17,编码器170还可包括第一计算单元1703和第一比较单元1704;其中,
第一确定单元1701,还配置为确定节点数量以及单一子节点数量;
第一计算单元1703,配置为对单一子节点数量和节点数量进行除法运算,得到第一比例值;
第一比较单元1704,配置为将所述第一比例值和预设阈值进行比较;以及若所述第一比例值大于所述预设阈值,则确定所述单一子节点使能变量的取值为第三值;若所述第一比例值小于或等于所述预设阈值,则确定所述单一子节点使能变量的取值为第四值。
在一些实施例中,所述第三值为1,所述第四值为0;或者,所述第三值为0,所述第四值为1。
在一些实施例中,参见图17,编码器170还可以包括第一设置单元1705,配置为对输入点云进行八叉树划分,得到K层的八叉树,K为大于0的整数;以及在进入所述八叉树的第i层时,设置所述节点数量的初始值为0,所述单一子节点数量的初始值为0,所述单一子节点使能变量的初始值为0;其中,i为大于或等于0且小于K的整数。
在一些实施例中,第一确定单元1701,还配置为基于第i层中的已编码节点,获得所述节点数量;以及从所述已编码节点中确定仅包括一个被占据子节点的已编码节点,获得所述单一子节点数量。
在一些实施例中,参见图17,编码器170还可包括第一判断单元1706,配置为在已编码节点中,判断所述已编码节点划分的子节点是否仅包括一个被占据子节点;若判断结果为是,则对所述单一子节点数量执行加1操作,更新所述单一子节点数量;若判断结果为否,则维持所述单一子节点数量不变。
在一些实施例中,第一确定单元1701,具体配置为在所述单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,确定当前节点的预测标识信息,并根据所述预测标识信息确定所述第一上下文模型的索引序号值;以及根据所述第一上下文模型的索引序号值,确定所述第一上下文模型。
在一些实施例中,参见图17,编码器170还可以包括第一构建单元1707,配置为构建至少一个第一候选上下文模型;其中,不同的第一候选上下文模型对应不同的索引序号;
第一确定单元1701,还配置为根据所述第一上下文模型的索引序号值,从所述至少一个第一候选上下文模型中选择所述索引序号值对应的第一候选上下文模型,将所选择的第一候选上下文模型确定为所述第一上下文模型。
在一些实施例中,第一确定单元1701,具体配置为在所述单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,确定当前节点的预测坐标信息,并根据所述预测坐标信息确定所述第二上下文模型的索引序号值;以及根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
在一些实施例中,第一构建单元1707,还配置为构建至少一个第二候选上下文模型;其中,不同的第二候选上下文模型对应不同的索引序号;
第一确定单元1701,还配置为根据所述第二上下文模型的索引序号值,从所述至少一个第二候选上下文模型中选择所述索引序号值对应的第二候选上下文模型,将所选择的第二候选上下文模型确定为所述第二上下文模型。
在一些实施例中,第一确定单元1701,还配置为获取所述当前节点相邻的已编码子节点的占位比特信息;根据所述当前节点相邻的已编码子节点的占位比特信息,确定三个坐标方向的预测坐标值;以及根据所述三个坐标方向的预测坐标值,确定所述第二上下文模型的索引序号值。
在一些实施例中,第一确定单元1701,还配置为从所述当前节点相邻的已编码子节点的占位比特信息中确定第一坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,根据所述第一坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第一坐标方向的第一一预测坐标值;从所述当前节点相邻的已编码子节点的占位比特信息中确定第二坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,根据所述第二坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第二坐标方向的第二一预测坐标值;从所述当前节点相邻的已编码子节点的占位比特信息中确定第三坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,根据所述第三坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第三坐标方向的第三一预测坐标值;其中,M为大于0的整数。
在一些实施例中,第一确定单元1701,还配置为根据所述第一坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,确定第一方向值;其中,所述第一方向值表示第一坐标方向上与所述当前节点相接的M个已编码子节点中是否有点占据;
第一比较单元1704,还配置为根据所述第一方向值与预设方向值的比较结果,确定所述第一坐标方向的第一一预测值。
在一些实施例中,第一确定单元1701,还配置为根据所述第二坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,确定第二方向值;其中,所述第二方向值表示第二坐标方向上与所述当前节点相接的M个已编码子节点中是否有点占据;
第一比较单元1704,还配置为根据所述第二方向值与预设方向值的比较结果,确定所述第二坐标方向的第二一预测值。
在一些实施例中,第一确定单元1701,还配置为根据所述第三坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,确定第三方向值;其中,所述第三方向值表示第三坐标方向上与所述当前节点相接的M个已编码子节点中是否有点占据;
第一比较单元1704,还配置为根据所述第三方向值与预设方向值的比较结果,确定所述第三坐标方向的第三一预测值。
在一些实施例中,第一确定单元1701,还配置为根据所述当前节点相邻的已编码子节点的占位比特信息,确定与第一坐标方向垂直的平面上已编码子节点中第一方向坐标值为第五值的有点占据的第一子节点数量和第一方向坐标值为第六值的有点占据的第二子节点数量,以及确定与第二坐标方向垂直的平面上已编码子节点中第二方向坐标值为第五值的有点占据的第三子节点数量和第二方向坐标值为第六值的有点占据的第四子节点数量,以及确定第三坐标方向垂直的平面上已编码子节点中第三方向坐标值为第五值的有点占据的第五子节点数量和第三方向坐标值为第六值的有点占据的第六子节点数量;
第一比较单元1704,还配置为基于所述第一子节点数量与所述第二子节点数量的比较结果,确定所述第一坐标方向的第一二预测值;以及基于所述第三子节点数量与所述第四子节点数量的比较结果,确定所述第二坐标方向的第二二预测值;以及基于所述第五子节点数量与所述第六子节点数量的比较结果,确定所述第三坐标方向的第三二预测值。
在一些实施例中,所述第五值为1,所述第六值为0;或者,所述第五值为0,所述第六值为1。
在一些实施例中,第一确定单元1701,还配置为根据所述三个坐标方向的预测坐标值,获得所述第一坐标方向的第一一预测值和第一二预测值、所述第二坐标方向的第二一预测值和第二二预测值、所述第三坐标方向的第三一预测值和第三二预测值;以及根据所述第一坐标方向的第一一预测值和第一二预测值,确定第一坐标方向的所述第二上下文模型的索引序号值;根据所述第二坐标方向的第二一预测值和第二二预测值,确定第二坐标方向的所述第二上下文模型的索引序号值;根据所述第三坐标方向的第三一预测值和第三二预测值,确定第三坐标方向的所述第二上下文模型的索引序号值。
在一些实施例中,第一确定单元1701,还配置为确定第一方向值、第二方向值和第三方向值;其中,所述第一方向值表示第一坐标方向上与当前节点相接的M个已编码子节点中是否有点占据,所述第二方向值表示第二坐标方向上与当前节点相接的M个已编码子节点中是否有点占据,所述第三方向值表示第三坐标方向上与当前节点相接的M个已编码子节点中是否有点占据,M为大于0的整数;
第一计算单元1703,还配置为对所述第一方向值、所述第二方向值和所述第三方向值进行相加计算,确定和值;
第一确定单元1701,还配置为根据所述和值,确定所述标识信息的预测值;以及根据所述预测值,确定所述第一上下文模型的索引序号值。
在一些实施例中,第一确定单元1701,还配置为若所述邻居配置数大于0,则确定所述当前节点中有邻居节点被占据;若所述邻居配置数等于0,则确定所述当前节点中无邻居节点被占据。
在一些实施例中,第一确定单元1701,还配置为若所述子节点被占据数等于1,则确定所述当前节点划分的子节点中仅包括一个被占据子节点;若所述子节点被占据数不等于1,则确定所述当前节点划分的子节点中包括至少两个被占据子节点。
在一些实施例中,第一确定单元1701,还配置为若所述子节点被占据数等于1,则确定所述标识信息的取值为第一标识值;若所述子节点被占据数不等于1,则确定所述标识信息的取值为第二标识值。
在一些实施例中,第一确定单元1701,还配置为若所述当前节点划分的子节点中仅包括一个被占据子节点,则确定所述标识信息的取值为第一标识值;若所述当前节点划分的子节点中包括至少两个被占据子节点,则确定所述标识信息的取值为第二标识值。
在一些实施例中,所述第一标识值为1,所述第二标识值为0;或者,所述第一标识值为0,所述第二标识值为1。
在一些实施例中,第一确定单元1701,还配置为获取所述当前节点划分的子节点的占位比特信息;以及根据所述子节点的占位比特信息,计算得到所述被占据子节点的坐标信息。
可以理解地,在本申请实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本申请实施例提供了一种计算机存储介质,应用于编码器170,该计算机存储介质存储有点云编码程序,所述点云编码程序被第一处理器执行时实现前述实施例中任一项所述的方法。
基于上述编码器170的组成以及计算机存储介质,参见图18,其示出了本申请实施例提供的编码器170的具体硬件结构示意图。如图18所示,可以包括:第一通信接口1801、第一存储器1802和第一处理器1803;各个组件通过第一总线系统1804耦合在一起。可理解,第一总线系统1804用于实现这些组件之间的连接通信。第一总线系统1804除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图18中将各种总线都标为第一总线系统1804。其中,
第一通信接口1801,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
第一存储器1802,用于存储能够在第一处理器1803上运行的计算机程序;
第一处理器1803,用于在运行所述计算机程序时,执行:
确定当前节点的子节点被占据数;
根据所述子节点被占据数确定单一子节点的标识信息的取值,利用第一上下文模型对所述标识信息的取值进行熵编码,并写入码流;
若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则确定所述被占据子节点的坐标信息,利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码,并写入码流。
可以理解,本申请实施例中的第一存储器1802可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请描述的系统和方法的第一存储器1802旨在包括但不限于这些和任意其它适合类型的存储器。
而第一处理器1803可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的 各步骤可以通过第一处理器1803中的硬件的集成逻辑电路或者软件形式的指令完成。上述的第一处理器1803可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于第一存储器1802,第一处理器1803读取第一存储器1802中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本申请描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(Application Specific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable Logic Device,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。对于软件实现,可通过执行本申请所述功能的模块(例如过程、函数等)来实现本申请所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
可选地,作为另一个实施例,第一处理器1803还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法。
本实施例提供了一种编码器,该编码器可以包括第一确定单一和编码单元。这样,由于针对单一子节点的标识信息和坐标信息分别构建了上下文模型,如此基于上下文模型对标识信息和坐标信息进行熵编码,能够充分利用点云的空间相关性,从而能够提高点云的编码效率。
本申请的再一实施例中,基于前述实施例相同的发明构思,参见图19,其示出了本申请实施例提供的一种解码器190的组成结构示意图。如图19所示,该解码器190可以包括:第二确定单元1901和解码单元1902;其中,
解码单元1902,配置为利用第一上下文模型解析码流,获取当前节点的单一子节点的标识信息的取值;
解码单元1902,还配置为若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则利用第二上下文模型解析码流,获取所述被占据子节点的坐标信息;
第二确定单元1901,配置为基于所述被占据子节点的坐标信息,确定所述当前节点划分的子节点的占位比特信息。
在一些实施例中,第二确定单元1901,还配置为确定所述当前节点的邻居配置数;
解码单元1902,还配置为若所述邻居配置数指示所述当前节点中有邻居节点被占据,则在所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点时,执行所述利用第二上下文模型解析码流,获取所述被占据子节点的坐标信息的步骤。
在一些实施例中,第二确定单元1901,还配置为确定单一子节点使能变量的取值;以及在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,确定所述第一上下文模型和所述第二上下文模型。
在一些实施例中,第二确定单元1901,具体配置为获取所述当前节点的邻居节点的占位比特信息;根据所述邻居节点的占位比特信息,确定所述邻居配置数。
在一些实施例中,第二确定单元1901,还配置为若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
在一些实施例中,所述第一值为1,所述第二值为0;或者,所述第一值为0,所述第二值为1。
在一些实施例中,所述邻居节点包括下述至少之一:与所述当前节点左侧面相接的邻居节点、与所述当前节点右侧面相接的邻居节点、与所述当前节点上侧面相接的邻居节点、与所述当前节点下侧面相接的邻居节点、与所述当前节点后侧面相接的邻居节点、与所述当前节点前侧面相接的邻居节点。
在一些实施例中,参见图19,解码器190还可包括第二计算单元1903和第二比较单元1904;其中,
第二确定单元1901,还配置为确定节点数量以及单一子节点数量;
第二计算单元1903,配置为对单一子节点数量和节点数量进行除法运算,得到第一比例值;
第二比较单元1904,配置为将所述第一比例值和预设阈值进行比较;以及若所述第一比例值大于所述预设阈值,则确定所述单一子节点使能变量的取值为第三值;若所述第一比例值小于或等于所述预 设阈值,则确定所述单一子节点使能变量的取值为第四值。
在一些实施例中,所述第三值为1,所述第四值为0;或者,所述第三值为0,所述第四值为1。
在一些实施例中,参见图19,解码器190还可以包括第二设置单元1905,配置为对输入点云进行八叉树划分,得到K层的八叉树,K为大于0的整数;以及在进入所述八叉树的第i层时,设置所述节点数量的初始值为0,所述单一子节点数量的初始值为0,所述单一子节点使能变量的初始值为0;其中,i为大于或等于0且小于K的整数。
在一些实施例中,第二确定单元1901,还配置为基于第i层中的已解码节点,获得所述节点数量;以及从所述已解码节点中确定仅包括一个被占据子节点的已解码节点,获得所述单一子节点数量。
在一些实施例中,参见图19,解码器190还可以包括第二判断单元1906,配置为在已解码节点中,判断所述已解码节点划分的子节点是否仅包括一个被占据子节点;若判断结果为是,则对所述单一子节点数量执行加1操作,更新所述单一子节点数量;若判断结果为否,则维持所述单一子节点数量不变。
在一些实施例中,第二确定单元1901,具体配置为在所述单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,确定当前节点的预测标识信息,并根据所述预测标识信息确定所述第一上下文模型的索引序号值;以及根据所述第一上下文模型的索引序号值,确定所述第一上下文模型。
在一些实施例中,参见图19,解码器190还可以包括第二构建单元1907,配置为构建至少一个第一候选上下文模型;其中,不同的第一候选上下文模型对应不同的索引序号;
第二确定单元1901,还配置为根据所述第一上下文模型的索引序号值,从所述至少一个第一候选上下文模型中选择所述索引序号值对应的第一候选上下文模型,将所选择的第一候选上下文模型确定为所述第一上下文模型。
在一些实施例中,第二确定单元1901,具体配置为在所述单一子节点使能变量的取值指示当前节点处于单一子节点使能状态时,确定当前节点的预测坐标信息,并根据所述预测坐标信息确定所述第二上下文模型的索引序号值;以及根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
在一些实施例中,第二构建单元1907,还配置为构建至少一个第二候选上下文模型;其中,不同的第二候选上下文模型对应不同的索引序号;
第二确定单元1901,还配置为根据所述第二上下文模型的索引序号值,从所述至少一个第二候选上下文模型中选择所述索引序号值对应的第二候选上下文模型,将所选择的第二候选上下文模型确定为所述第二上下文模型。
在一些实施例中,第二确定单元1901,还配置为获取所述当前节点相邻的已解码子节点的占位比特信息;根据所述当前节点相邻的已解码子节点的占位比特信息,确定三个坐标方向的预测坐标值;以及根据所述三个坐标方向的预测坐标值,确定所述第二上下文模型的索引序号值。
在一些实施例中,第二确定单元1901,还配置为从所述当前节点相邻的已解码子节点的占位比特信息中确定第一坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,根据所述第一坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第一坐标方向的第一一预测坐标值;从所述当前节点相邻的已解码子节点的占位比特信息中确定第二坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,根据所述第二坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第二坐标方向的第二一预测坐标值;从所述当前节点相邻的已解码子节点的占位比特信息中确定第三坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,根据所述第三坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第三坐标方向的第三一预测坐标值;其中,M为大于0的整数。
在一些实施例中,第二确定单元1901,还配置为根据所述第一坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,确定第一方向值;其中,所述第一方向值表示第一坐标方向上与所述当前节点相接的M个已解码子节点中是否有点占据;
第二比较单元1904,还配置为根据所述第一方向值与预设方向值的比较结果,确定所述第一坐标方向的第一一预测值。
在一些实施例中,第二确定单元1901,还配置为根据所述第二坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,确定第二方向值;其中,所述第二方向值表示第二坐标方向上与所述当前节点相接的M个已解码子节点中是否有点占据;
第二比较单元1904,还配置为根据所述第二方向值与预设方向值的比较结果,确定所述第二坐标方向的第二一预测值。
在一些实施例中,第二确定单元1901,还配置为根据所述第三坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,确定第三方向值;其中,所述第三方向值表示第三坐标方向上与所述当前节点相接的M个已解码子节点中是否有点占据;
第二比较单元1904,还配置为根据所述第三方向值与预设方向值的比较结果,确定所述第三坐标方向的第三一预测值。
在一些实施例中,第二确定单元1901,还配置为根据所述当前节点相邻的已解码子节点的占位比特信息,确定与第一坐标方向垂直的平面上已解码子节点中第一方向坐标值为第五值的有点占据的第一子节点数量和第一方向坐标值为第六值的有点占据的第二子节点数量,以及确定与第二坐标方向垂直的平面上已解码子节点中第二方向坐标值为第五值的有点占据的第三子节点数量和第二方向坐标值为第六值的有点占据的第四子节点数量,以及确定第三坐标方向垂直的平面上已解码子节点中第三方向坐标值为第五值的有点占据的第五子节点数量和第三方向坐标值为第六值的有点占据的第六子节点数量;
第二比较单元1904,还配置为基于所述第一子节点数量与所述第二子节点数量的比较结果,确定所述第一坐标方向的第一二预测值;以及基于所述第三子节点数量与所述第四子节点数量的比较结果,确定所述第二坐标方向的第二二预测值;以及基于所述第五子节点数量与所述第六子节点数量的比较结果,确定所述第三坐标方向的第三二预测值。
在一些实施例中,所述第五值为1,所述第六值为0;或者,所述第五值为0,所述第六值为1。
在一些实施例中,第二确定单元1901,还配置为根据所述三个坐标方向的预测坐标值,获得所述第一坐标方向的第一一预测值和第一二预测值、所述第二坐标方向的第二一预测值和第二二预测值、所述第三坐标方向的第三一预测值和第三二预测值;以及根据所述第一坐标方向的第一一预测值和第一二预测值,确定第一坐标方向的所述第二上下文模型的索引序号值;根据所述第二坐标方向的第二一预测值和第二二预测值,确定第二坐标方向的所述第二上下文模型的索引序号值;根据所述第三坐标方向的第三一预测值和第三二预测值,确定第三坐标方向的所述第二上下文模型的索引序号值。
在一些实施例中,第二确定单元1901,还配置为确定第一方向值、第二方向值和第三方向值;其中,所述第一方向值表示第一坐标方向上与当前节点相接的M个已解码子节点中是否有点占据,所述第二方向值表示第二坐标方向上与当前节点相接的M个已解码子节点中是否有点占据,所述第三方向值表示第三坐标方向上与当前节点相接的M个已解码子节点中是否有点占据,M为大于0的整数;
第二计算单元1903,还配置为对所述第一方向值、所述第二方向值和所述第三方向值进行相加计算,确定和值;
第二确定单元1901,还配置为根据所述和值,确定所述标识信息的预测标识值;以及根据所述预测标识值,确定所述第一上下文模型的索引序号值。
在一些实施例中,第二确定单元1901,还配置为若所述邻居配置数大于0,则确定所述当前节点中有邻居节点被占据;若所述邻居配置数等于0,则确定所述当前节点中无邻居节点被占据。
在一些实施例中,第二确定单元1901,还配置为若所述标识信息的取值等于第一标识值,则确定所述当前节点划分的子节点中仅包括一个被占据子节点;若所述标识信息的取值等于第二标识值,则确定所述当前节点划分的子节点中包括至少两个被占据子节点。
在一些实施例中,所述第一标识值为1,所述第二标识值为0;或者,所述第一标识值为0,所述第二标识值为1。
可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本实施例提供了一种计算机存储介质,应用于解码器190,该计算机存储介质存储有点云解码程序,所述点云解码程序被第二处理器执行时实现前述实施例中任一项所述的方法。
基于上述解码器190的组成以及计算机存储介质,参见图20,其示出了本申请实施例提供的解码器190的具体硬件结构示意图。如图20所示,可以包括:第二通信接口2001、第二存储器2002和第二处理器2003;各个组件通过第二总线系统2004耦合在一起。可理解,第二总线系统2004用于实现这些组件之间的连接通信。第二总线系统2004除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图20中将各种总线都标为第二总线系统2004。其中,
第二通信接口2001,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
第二存储器2002,用于存储能够在第二处理器2003上运行的计算机程序;
第二处理器2003,用于在运行所述计算机程序时,执行:
利用第一上下文模型解析码流,获取当前节点的单一子节点的标识信息的取值;
若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则利用第二上 下文模型解析码流,获取所述被占据子节点的坐标信息;
基于所述被占据子节点的坐标信息,确定所述当前节点划分的子节点的占位比特信息。
可选地,作为另一个实施例,第二处理器2003还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法。
可以理解,第二存储器2002与第一存储器1802的硬件功能类似,第二处理器2003与第一处理器1803的硬件功能类似;这里不再详述。
本实施例提供了一种解码器,该解码器可以包括第二确定单元和解码单元。这样,由于针对单一子节点的标识信息和坐标信息分别构建了上下文模型,如此基于上下文模型对标识信息和坐标信息进行熵解码,能够充分利用点云的空间相关性,从而能够提高点云的解码效率。
需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
本申请实施例中,在编码器侧,通过确定当前节点的子节点被占据数;根据所述子节点被占据数确定单一子节点的标识信息的取值,利用第一上下文模型对所述标识信息的取值进行熵编码,并写入码流;若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则确定所述被占据子节点的坐标信息,利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码,并写入码流。在解码器侧,通过利用第一上下文模型解析码流,获取当前节点的单一子节点的标识信息的取值;若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则利用第二上下文模型解析码流,获取所述被占据子节点的坐标信息;基于所述被占据子节点的坐标信息,确定所述当前节点划分的子节点的占位比特信息。这样,由于针对单一子节点的标识信息和坐标信息分别构建了上下文模型,如此基于上下文模型对标识信息和坐标信息进行熵编解码,能够充分利用点云的空间相关性,从而能够提高点云的编解码效率。
Claims (66)
- 一种点云编码方法,应用于编码器,所述方法包括:确定当前节点的子节点被占据数;根据所述子节点被占据数确定单一子节点的标识信息的取值,利用第一上下文模型对所述标识信息的取值进行熵编码,并写入码流;若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则确定所述被占据子节点的坐标信息,利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码,并写入码流。
- 根据权利要求1所述的方法,其中,所述方法还包括:确定所述当前节点的邻居配置数;若所述邻居配置数指示所述当前节点中有邻居节点被占据,则在所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点时,执行所述利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码的步骤。
- 根据权利要求1所述的方法,其中,所述方法还包括:确定单一子节点使能变量的取值;在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,确定所述第一上下文模型和所述第二上下文模型。
- 根据权利要求2所述的方法,其中,所述确定所述当前节点的邻居配置数,包括:获取所述当前节点的邻居节点的占位比特信息;根据所述邻居节点的占位比特信息,确定所述邻居配置数。
- 根据权利要求4所述的方法,其中,所述获取所述当前节点的邻居节点的占位比特信息,包括:若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
- 根据权利要求4或5所述的方法,其中,所述邻居节点包括下述至少之一:与所述当前节点左侧面相接的邻居节点、与所述当前节点右侧面相接的邻居节点、与所述当前节点上侧面相接的邻居节点、与所述当前节点下侧面相接的邻居节点、与所述当前节点后侧面相接的邻居节点、与所述当前节点前侧面相接的邻居节点。
- 根据权利要求1所述的方法,其中,所述确定当前节点的子节点被占据数,包括:获取所述当前节点划分的子节点的占位比特信息;根据所述子节点的占位比特信息,确定所述子节点被占据数。
- 根据权利要求7所述的方法,其中,所述获取所述当前节点划分的子节点的占位比特信息,包括:若所述子节点内有点占据,则确定所述子节点的占位比特信息等于第一值;若所述子节点内无点占据,则确定所述子节点的占位比特信息等于第二值。
- 根据权利要求5或8所述的方法,其中,所述第一值为1,所述第二值为0;或者,所述第一值为0,所述第二值为1。
- 根据权利要求3所述的方法,其中,所述确定单一子节点使能变量的取值,包括:确定节点数量以及单一子节点数量;对所述单一子节点数量和所述节点数量进行除法运算,得到第一比例值;将所述第一比例值和预设阈值进行比较;若所述第一比例值大于所述预设阈值,则确定所述单一子节点使能变量的取值为第三值;若所述第一比例值小于或等于所述预设阈值,则确定所述单一子节点使能变量的取值为第四值。
- 根据权利要求10所述的方法,其中,所述第三值为1,所述第四值为0;或者,所述第三值为0,所述第四值为1。
- 根据权利要求10所述的方法,其中,所述方法还包括:对输入点云进行八叉树划分,得到K层的八叉树,K为大于0的整数;在进入所述八叉树的第i层时,设置所述节点数量的初始值为0,所述单一子节点数量的初始值为0,所述单一子节点使能变量的初始值为0;其中,i为大于或等于0且小于K的整数。
- 根据权利要求12所述的方法,其中,所述确定节点数量以及单一子节点数量,包括:基于第i层中的已编码节点,获得所述节点数量;从所述已编码节点中确定仅包括一个被占据子节点的已编码节点,获得所述单一子节点数量。
- 根据权利要求13所述的方法,其中,所述从所述已编码节点中确定仅包括一个被占据子节点的已编码节点,获得所述单一子节点数量,包括:在所述已编码节点中,判断所述已编码节点划分的子节点是否仅包括一个被占据子节点;若判断结果为是,则对所述单一子节点数量执行加1操作,更新所述单一子节点数量;若判断结果为否,则维持所述单一子节点数量不变。
- 根据权利要求3所述的方法,其中,在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,所述确定所述第一上下文模型,包括:确定所述当前节点的预测标识信息,并根据所述预测标识信息确定所述第一上下文模型的索引序号值;根据所述第一上下文模型的索引序号值,确定所述第一上下文模型。
- 根据权利要求15所述的方法,其中,所述根据所述第一上下文模型的索引序号值,确定所述第一上下文模型,包括:构建至少一个第一候选上下文模型;其中,不同的第一候选上下文模型对应不同的索引序号;根据所述第一上下文模型的索引序号值,从所述至少一个第一候选上下文模型中选择所述索引序号值对应的第一候选上下文模型,将所选择的第一候选上下文模型确定为所述第一上下文模型。
- 根据权利要求3所述的方法,其中,在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,所述确定所述第二上下文模型,包括:确定所述当前节点的预测坐标信息,并根据所述预测坐标信息确定所述第二上下文模型的索引序号值;根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
- 根据权利要求17所述的方法,其中,所述根据所述第二上下文模型的索引序号值,确定所述第二上下文模型,包括:构建至少一个第二候选上下文模型;其中,不同的第二候选上下文模型对应不同的索引序号;根据所述第二上下文模型的索引序号值,从所述至少一个第二候选上下文模型中选择所述索引序号值对应的第二候选上下文模型,将所选择的第二候选上下文模型确定为所述第二上下文模型。
- 根据权利要求17所述的方法,其中,所述确定所述当前节点的预测坐标信息,并根据所述预测坐标信息确定所述第二上下文模型的索引序号值,包括:获取所述当前节点相邻的已编码子节点的占位比特信息;根据所述当前节点相邻的已编码子节点的占位比特信息,确定三个坐标方向的预测坐标值;根据所述三个坐标方向的预测坐标值,确定所述第二上下文模型的索引序号值。
- 根据权利要求19所述的方法,其中,所述根据所述当前节点相邻的已编码子节点的占位比特信息,确定三个坐标方向的预测坐标值,包括:从所述当前节点相邻的已编码子节点的占位比特信息中确定第一坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,根据所述第一坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第一坐标方向的第一一预测坐标值;从所述当前节点相邻的已编码子节点的占位比特信息中确定第二坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,根据所述第二坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第二坐标方向的第二一预测坐标值;从所述当前节点相邻的已编码子节点的占位比特信息中确定第三坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,根据所述第三坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第三坐标方向的第三一预测坐标值;其中,M为大于0的整数。
- 根据权利要求20所述的方法,其中,所述根据所述第一坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第一坐标方向的第一一预测坐标值,包括:根据所述第一坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,确定第一方向值;其中,所述第一方向值表示第一坐标方向上与所述当前节点相接的M个已编码子节点中是否有点占据;根据所述第一方向值与预设方向值的比较结果,确定所述第一坐标方向的第一一预测值。
- 根据权利要求20所述的方法,其中,所述根据所述第二坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第二坐标方向的第二一预测坐标值,包括:根据所述第二坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,确定第二方向值;其中,所述第二方向值表示第二坐标方向上与所述当前节点相接的M个已编码子节点中是否有点占据;根据所述第二方向值与预设方向值的比较结果,确定所述第二坐标方向的第二一预测值。
- 根据权利要求20所述的方法,其中,所述根据所述第三坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息确定所述第三坐标方向的第三一预测坐标值,包括:根据所述第三坐标方向上与所述当前节点相接的M个已编码子节点的占位比特信息,确定第三方向值;其中,所述第三方向值表示第三坐标方向上与所述当前节点相接的M个已编码子节点中是否有点占据;根据所述第三方向值与预设方向值的比较结果,确定所述第三坐标方向的第三一预测值。
- 根据权利要求19所述的方法,其中,所述根据所述当前节点相邻的已编码子节点的占位比特信息,确定三个坐标方向的预测坐标值,包括:根据所述当前节点相邻的已编码子节点的占位比特信息,确定与第一坐标方向垂直的平面上已编码子节点中第一方向坐标值为第五值的有点占据的第一子节点数量和第一方向坐标值为第六值的有点占据的第二子节点数量,以及确定与第二坐标方向垂直的平面上已编码子节点中第二方向坐标值为第五值的有点占据的第三子节点数量和第二方向坐标值为第六值的有点占据的第四子节点数量,以及确定第三坐标方向垂直的平面上已编码子节点中第三方向坐标值为第五值的有点占据的第五子节点数量和第三方向坐标值为第六值的有点占据的第六子节点数量;基于所述第一子节点数量与所述第二子节点数量的比较结果,确定所述第一坐标方向的第一二预测值;基于所述第三子节点数量与所述第四子节点数量的比较结果,确定所述第二坐标方向的第二二预测值;基于所述第五子节点数量与所述第六子节点数量的比较结果,确定所述第三坐标方向的第三二预测值。
- 根据权利要求24所述的方法,其中,所述第五值为1,所述第六值为0;或者,所述第五值为0,所述第六值为1。
- 根据权利要求19所述的方法,其中,所述根据所述三个坐标方向的预测坐标值,确定所述第二上下文模型的索引序号值,包括:根据所述三个坐标方向的预测坐标值,获得所述第一坐标方向的第一一预测值和第一二预测值、所述第二坐标方向的第二一预测值和第二二预测值、所述第三坐标方向的第三一预测值和第三二预测值;根据所述第一坐标方向的第一一预测值和第一二预测值,确定第一坐标方向的所述第二上下文模型的索引序号值;根据所述第二坐标方向的第二一预测值和第二二预测值,确定第二坐标方向的所述第二上下文模型的索引序号值;根据所述第三坐标方向的第三一预测值和第三二预测值,确定第三坐标方向的所述第二上下文模型的索引序号值。
- 根据权利要求15所述的方法,其中,所述确定所述当前节点的预测标识信息,并根据所述预测标识信息确定所述第一上下文模型的索引序号值,包括:确定第一方向值、第二方向值和第三方向值;其中,所述第一方向值表示第一坐标方向上与所述当前节点相接的M个已编码子节点中是否有点占据,所述第二方向值表示第二坐标方向上与所述当前节点相接的M个已编码子节点中是否有点占据,所述第三方向值表示第三坐标方向上与所述当前节点相接的M个已编码子节点中是否有点占据,M为大于0的整数;对所述第一方向值、所述第二方向值和所述第三方向值进行相加计算,确定和值;根据所述和值,确定所述标识信息的预测值;根据所述预测值,确定所述第一上下文模型的索引序号值。
- 根据权利要求2所述的方法,其中,所述方法还包括:若所述邻居配置数大于0,则确定所述当前节点中有邻居节点被占据;若所述邻居配置数等于0,则确定所述当前节点中无邻居节点被占据。
- 根据权利要求1所述的方法,其中,所述方法还包括:若所述子节点被占据数等于1,则确定所述当前节点划分的子节点中仅包括一个被占据子节点;若所述子节点被占据数不等于1,则确定所述当前节点划分的子节点中包括至少两个被占据子节点。
- 根据权利要求1所述的方法,其中,所述根据所述子节点被占据数确定标识信息的取值,包括:若所述子节点被占据数等于1,则确定所述标识信息的取值为第一标识值;若所述子节点被占据数不等于1,则确定所述标识信息的取值为第二标识值。
- 根据权利要求29所述的方法,其中,所述根据所述子节点被占据数确定标识信息的取值,包 括:若所述当前节点划分的子节点中仅包括一个被占据子节点,则确定所述标识信息的取值为第一标识值;若所述当前节点划分的子节点中包括至少两个被占据子节点,则确定所述标识信息的取值为第二标识值。
- 根据权利要求30或31所述的方法,其中,所述第一标识值为1,所述第二标识值为0;或者,所述第一标识值为0,所述第二标识值为1。
- 根据权利要求1至32任一项所述的方法,其中,所述确定所述被占据子节点的坐标信息,包括:获取所述当前节点划分的子节点的占位比特信息;根据所述子节点的占位比特信息,计算得到所述被占据子节点的坐标信息。
- 一种点云解码方法,应用于解码器,所述方法包括:利用第一上下文模型解析码流,获取当前节点的单一子节点的标识信息的取值;若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则利用第二上下文模型解析码流,获取所述被占据子节点的坐标信息;基于所述被占据子节点的坐标信息,确定所述当前节点划分的子节点的占位比特信息。
- 根据权利要求34所述的方法,其中,所述方法还包括:确定所述当前节点的邻居配置数;若所述邻居配置数指示所述当前节点中有邻居节点被占据,则在所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点时,执行所述利用第二上下文模型解析码流,获取所述被占据子节点的坐标信息的步骤。
- 根据权利要求34所述的方法,其中,所述方法还包括:确定单一子节点使能变量的取值;在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,确定所述第一上下文模型和所述第二上下文模型。
- 根据权利要求35所述的方法,其中,所述确定所述当前节点的邻居配置数,包括:获取所述当前节点的邻居节点的占位比特信息;根据所述邻居节点的占位比特信息,确定所述邻居配置数。
- 根据权利要求37所述的方法,其中,所述获取所述当前节点的邻居节点的占位比特信息,包括:若所述邻居节点内有点占据,则确定所述邻居节点的占位比特信息等于第一值;若所述邻居节点内无点占据,则确定所述邻居节点的占位比特信息等于第二值。
- 根据权利要求38所述的方法,其中,所述第一值为1,所述第二值为0;或者,所述第一值为0,所述第二值为1。
- 根据权利要求37或38所述的方法,其中,所述邻居节点包括下述至少之一:与所述当前节点左侧面相接的邻居节点、与所述当前节点右侧面相接的邻居节点、与所述当前节点上侧面相接的邻居节点、与所述当前节点下侧面相接的邻居节点、与所述当前节点后侧面相接的邻居节点、与所述当前节点前侧面相接的邻居节点。
- 根据权利要求36所述的方法,其中,所述确定单一子节点使能变量的取值,包括:确定节点数量以及单一子节点数量;对所述单一子节点数量和所述节点数量进行除法运算,得到第一比例值;将所述第一比例值和预设阈值进行比较;若所述第一比例值大于所述预设阈值,则确定所述单一子节点使能变量的取值为第三值;若所述第一比例值小于或等于所述预设阈值,则确定所述单一子节点使能变量的取值为第四值。
- 根据权利要求41所述的方法,其中,所述第三值为1,所述第四值为0;或者,所述第三值为0,所述第四值为1。
- 根据权利要求41所述的方法,其中,所述方法还包括:对输入点云进行八叉树划分,得到K层的八叉树,K为大于0的整数;在进入所述八叉树的第i层时,设置所述节点数量的初始值为0,所述单一子节点数量的初始值为0,所述单一子节点使能变量的初始值为0;其中,i为大于或等于0且小于K的整数。
- 根据权利要求43所述的方法,其中,所述确定节点数量以及单一子节点数量,包括:基于第i层中的已解码节点,获得所述节点数量;从所述已解码节点中确定仅包括一个被占据子节点的已解码节点,获得所述单一子节点数量。
- 根据权利要求44所述的方法,其中,所述从所述已解码节点中确定仅包括一个被占据子节点的已解码节点,获得所述单一子节点数量,包括:在所述已解码节点中,判断所述已解码节点划分的子节点是否仅包括一个被占据子节点;若判断结果为是,则对所述单一子节点数量执行加1操作,更新所述单一子节点数量;若判断结果为否,则维持所述单一子节点数量不变。
- 根据权利要求36所述的方法,其中,在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,所述确定所述第一上下文模型,包括:确定所述当前节点的预测标识信息,并根据所述预测标识信息确定所述第一上下文模型的索引序号值;根据所述第一上下文模型的索引序号值,确定所述第一上下文模型。
- 根据权利要求46所述的方法,其中,所述根据所述第一上下文模型的索引序号值,确定所述第一上下文模型,包括:构建至少一个第一候选上下文模型;其中,不同的第一候选上下文模型对应不同的索引序号;根据所述第一上下文模型的索引序号值,从所述至少一个第一候选上下文模型中选择所述索引序号值对应的第一候选上下文模型,将所选择的第一候选上下文模型确定为所述第一上下文模型。
- 根据权利要求36所述的方法,其中,在所述单一子节点使能变量的取值指示所述当前节点处于单一子节点使能状态时,所述确定所述第二上下文模型,包括:确定所述当前节点的预测坐标信息,并根据所述预测坐标信息确定所述第二上下文模型的索引序号值;根据所述第二上下文模型的索引序号值,确定所述第二上下文模型。
- 根据权利要求48所述的方法,其中,所述根据所述第二上下文模型的索引序号值,确定所述第二上下文模型,包括:构建至少一个第二候选上下文模型;其中,不同的第二候选上下文模型对应不同的索引序号;根据所述第二上下文模型的索引序号值,从所述至少一个第二候选上下文模型中选择所述索引序号值对应的第二候选上下文模型,将所选择的第二候选上下文模型确定为所述第二上下文模型。
- 根据权利要求48所述的方法,其中,所述确定所述当前节点的预测坐标信息,并根据所述预测坐标信息确定所述第二上下文模型的索引序号值,包括:获取所述当前节点相邻的已解码子节点的占位比特信息;根据所述当前节点相邻的已解码子节点的占位比特信息,确定三个坐标方向的预测坐标值;根据所述三个坐标方向的预测坐标值,确定所述第二上下文模型的索引序号值。
- 根据权利要求50所述的方法,其中,所述根据所述当前节点相邻的已解码子节点的占位比特信息,确定三个坐标方向的预测坐标值,包括:从所述当前节点相邻的已解码子节点的占位比特信息中确定第一坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,根据所述第一坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第一坐标方向的第一一预测坐标值;从所述当前节点相邻的已解码子节点的占位比特信息中确定第二坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,根据所述第二坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第二坐标方向的第二一预测坐标值;从所述当前节点相邻的已解码子节点的占位比特信息中确定第三坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,根据所述第三坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第三坐标方向的第三一预测坐标值;其中,M为大于0的整数。
- 根据权利要求51所述的方法,其中,所述根据所述第一坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第一坐标方向的第一一预测坐标值,包括:根据所述第一坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,确定第一方向值;其中,所述第一方向值表示第一坐标方向上与所述当前节点相接的M个已解码子节点中是否有点占据;根据所述第一方向值与预设方向值的比较结果,确定所述第一坐标方向的第一一预测值。
- 根据权利要求51所述的方法,其中,所述根据所述第二坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第二坐标方向的第二一预测坐标值,包括:根据所述第二坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,确定第二方 向值;其中,所述第二方向值表示第二坐标方向上与所述当前节点相接的M个已解码子节点中是否有点占据;根据所述第二方向值与预设方向值的比较结果,确定所述第二坐标方向的第二一预测值。
- 根据权利要求51所述的方法,其中,所述根据所述第三坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息确定所述第三坐标方向的第三一预测坐标值,包括:根据所述第三坐标方向上与所述当前节点相接的M个已解码子节点的占位比特信息,确定第三方向值;其中,所述第三方向值表示第三坐标方向上与所述当前节点相接的M个已解码子节点中是否有点占据;根据所述第三方向值与预设方向值的比较结果,确定所述第三坐标方向的第三一预测值。
- 根据权利要求50所述的方法,其中,所述根据所述当前节点相邻的已解码子节点的占位比特信息,确定三个坐标方向的预测坐标值,包括:根据所述当前节点相邻的已解码子节点的占位比特信息,确定与第一坐标方向垂直的平面上已解码子节点中第一方向坐标值为第五值的有点占据的第一子节点数量和第一方向坐标值为第六值的有点占据的第二子节点数量,以及确定与第二坐标方向垂直的平面上已解码子节点中第二方向坐标值为第五值的有点占据的第三子节点数量和第二方向坐标值为第六值的有点占据的第四子节点数量,以及确定第三坐标方向垂直的平面上已解码子节点中第三方向坐标值为第五值的有点占据的第五子节点数量和第三方向坐标值为第六值的有点占据的第六子节点数量;基于所述第一子节点数量与所述第二子节点数量的比较结果,确定所述第一坐标方向的第一二预测值;基于所述第三子节点数量与所述第四子节点数量的比较结果,确定所述第二坐标方向的第二二预测值;基于所述第五子节点数量与所述第六子节点数量的比较结果,确定所述第三坐标方向的第三二预测值。
- 根据权利要求55所述的方法,其中,所述第五值为1,所述第六值为0;或者,所述第五值为0,所述第六值为1。
- 根据权利要求50所述的方法,其中,所述根据所述三个坐标方向的预测坐标值,确定所述第二上下文模型的索引序号值,包括:根据所述三个坐标方向的预测坐标值,获得所述第一坐标方向的第一一预测值和第一二预测值、所述第二坐标方向的第二一预测值和第二二预测值、所述第三坐标方向的第三一预测值和第三二预测值;根据所述第一坐标方向的第一一预测值和第一二预测值,确定第一坐标方向的所述第二上下文模型的索引序号值;根据所述第二坐标方向的第二一预测值和第二二预测值,确定第二坐标方向的所述第二上下文模型的索引序号值;根据所述第三坐标方向的第三一预测值和第三二预测值,确定第三坐标方向的所述第二上下文模型的索引序号值。
- 根据权利要求46所述的方法,其中,所述确定所述当前节点的预测标识信息,并根据所述预测标识信息确定所述第一上下文模型的索引序号值,包括:确定第一方向值、第二方向值和第三方向值;其中,所述第一方向值表示第一坐标方向上与所述当前节点相接的M个已解码子节点中是否有点占据,所述第二方向值表示第二坐标方向上与所述当前节点相接的M个已解码子节点中是否有点占据,所述第三方向值表示第三坐标方向上与所述当前节点相接的M个已解码子节点中是否有点占据,M为大于0的整数;对所述第一方向值、所述第二方向值和所述第三方向值进行相加计算,确定和值;根据所述和值,确定所述标识信息的预测标识值;根据所述预测标识值,确定所述第一上下文模型的索引序号值。
- 根据权利要求34至58任一项所述的方法,其中,所述方法还包括:若所述邻居配置数大于0,则确定所述当前节点中有邻居节点被占据;若所述邻居配置数等于0,则确定所述当前节点中无邻居节点被占据。
- 根据权利要求34至58任一项所述的方法,其中,所述方法还包括:若所述标识信息的取值等于第一标识值,则确定所述当前节点划分的子节点中仅包括一个被占据子节点;若所述标识信息的取值等于第二标识值,则确定所述当前节点划分的子节点中包括至少两个被占据子节点。
- 根据权利要求60所述的方法,其中,所述第一标识值为1,所述第二标识值为0;或者,所述第一标识值为0,所述第二标识值为1。
- 一种编码器,所述编码器包括第一确定单元和编码单元;其中,所述第一确定单元,配置为确定当前节点的子节点被占据数;所述编码单元,配置为根据所述子节点被占据数确定单一子节点的标识信息的取值,利用第一上下文模型对所述标识信息的取值进行熵编码,并写入码流;所述编码单元,还配置为若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则确定所述被占据子节点的坐标信息,利用第二上下文模型对所述被占据子节点的坐标信息进行熵编码,并写入码流。
- 一种编码器,所述编码器包括第一存储器和第一处理器;其中,所述第一存储器,用于存储能够在所述第一处理器上运行的计算机程序;所述第一处理器,用于在运行所述计算机程序时,执行如权利要求1至33任一项所述的方法。
- 一种解码器,所述解码器包括第二确定单元和解码单元;其中,所述解码单元,配置为利用第一上下文模型解析码流,获取当前节点的单一子节点的标识信息的取值;所述解码单元,还配置为若所述标识信息的取值指示所述当前节点划分的子节点中仅包括一个被占据子节点,则利用第二上下文模型解析码流,获取所述被占据子节点的坐标信息;所述第二确定单元,配置为基于所述被占据子节点的坐标信息,确定所述当前节点划分的子节点的占位比特信息。
- 一种解码器,所述解码器包括第二存储器和第二处理器;其中,所述第二存储器,用于存储能够在所述第二处理器上运行的计算机程序;所述第二处理器,用于在运行所述计算机程序时,执行如权利要求34至61任一项所述的方法。
- 一种计算机存储介质,其中,所述计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如权利要求1至33任一项所述的方法、或者被第二处理器执行时实现如权利要求34至61任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/131577 WO2022109885A1 (zh) | 2020-11-25 | 2020-11-25 | 点云编解码方法、编码器、解码器以及计算机存储介质 |
CN202080103910.6A CN116097651A (zh) | 2020-11-25 | 2020-11-25 | 点云编解码方法、编码器、解码器以及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/131577 WO2022109885A1 (zh) | 2020-11-25 | 2020-11-25 | 点云编解码方法、编码器、解码器以及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022109885A1 true WO2022109885A1 (zh) | 2022-06-02 |
Family
ID=81755011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2020/131577 WO2022109885A1 (zh) | 2020-11-25 | 2020-11-25 | 点云编解码方法、编码器、解码器以及计算机存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116097651A (zh) |
WO (1) | WO2022109885A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024148488A1 (zh) * | 2023-01-09 | 2024-07-18 | Oppo广东移动通信有限公司 | 编解码方法、码流、编码器、解码器以及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3514967A1 (en) * | 2018-01-18 | 2019-07-24 | BlackBerry Limited | Methods and devices for binary entropy coding of points clouds |
WO2020004461A1 (ja) * | 2018-06-27 | 2020-01-02 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
CN111727460A (zh) * | 2018-01-26 | 2020-09-29 | 松下电器(美国)知识产权公司 | 三维数据编码方法、三维数据解码方法、三维数据编码装置、以及三维数据解码装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3514969B1 (en) * | 2018-01-18 | 2021-08-04 | BlackBerry Limited | Methods and devices using direct coding in point cloud compression |
CA3090465A1 (en) * | 2018-02-08 | 2019-08-15 | Panasonic Intellectual Property Corporation Of America | Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device |
CN111699697B (zh) * | 2019-06-14 | 2023-07-11 | 深圳市大疆创新科技有限公司 | 一种用于点云处理、解码的方法、设备及存储介质 |
-
2020
- 2020-11-25 CN CN202080103910.6A patent/CN116097651A/zh active Pending
- 2020-11-25 WO PCT/CN2020/131577 patent/WO2022109885A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3514967A1 (en) * | 2018-01-18 | 2019-07-24 | BlackBerry Limited | Methods and devices for binary entropy coding of points clouds |
CN111615792A (zh) * | 2018-01-18 | 2020-09-01 | 黑莓有限公司 | 用于对点云进行熵编码的方法和设备 |
CN111727460A (zh) * | 2018-01-26 | 2020-09-29 | 松下电器(美国)知识产权公司 | 三维数据编码方法、三维数据解码方法、三维数据编码装置、以及三维数据解码装置 |
WO2020004461A1 (ja) * | 2018-06-27 | 2020-01-02 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024148488A1 (zh) * | 2023-01-09 | 2024-07-18 | Oppo广东移动通信有限公司 | 编解码方法、码流、编码器、解码器以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116097651A (zh) | 2023-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022126326A1 (zh) | 点云编解码方法、编码器、解码器以及计算机存储介质 | |
CN114930858A (zh) | 用于基于几何的点云压缩的高级语法 | |
TW202141984A (zh) | 用於在基於幾何形狀的點雲壓縮中的預測變換的預測器索引訊號傳遞 | |
CN115086660B (zh) | 基于点云属性预测的解码、编码方法、解码器及编码器 | |
EP4258671A1 (en) | Point cloud attribute predicting method, encoder, decoder, and storage medium | |
WO2022109885A1 (zh) | 点云编解码方法、编码器、解码器以及计算机存储介质 | |
EP4224843A1 (en) | Point cloud encoding and decoding method, encoder, decoder and codec system | |
US12113963B2 (en) | Method and apparatus for selecting neighbor point in point cloud, encoder, and decoder | |
WO2022141461A1 (zh) | 点云编解码方法、编码器、解码器以及计算机存储介质 | |
EP4216553A1 (en) | Point cloud decoding and encoding method, and decoder, encoder and encoding and decoding system | |
WO2024082153A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2024082127A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2023024842A1 (zh) | 点云编解码方法、装置、设备及存储介质 | |
WO2024174086A1 (zh) | 解码方法、编码方法、解码器以及编码器 | |
WO2024007268A1 (zh) | 点云编解码方法、编解码器及计算机存储介质 | |
WO2022257528A1 (zh) | 点云属性的预测方法、装置及相关设备 | |
WO2024148491A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2024212043A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2022170511A1 (zh) | 点云解码方法、解码器及计算机存储介质 | |
WO2024216649A1 (zh) | 点云编解码方法、编码器、解码器、码流及存储介质 | |
WO2023142133A1 (zh) | 编码方法、解码方法、编码器、解码器及存储介质 | |
WO2023103565A1 (zh) | 点云属性信息的编解码方法、装置、设备及存储介质 | |
WO2022170521A1 (zh) | 几何重构方法、解码器以及计算机存储介质 | |
WO2024103304A1 (zh) | 点云编解码方法、编码器、解码器、码流及存储介质 | |
WO2024216493A1 (zh) | 点云编解码方法、编码器、解码器、码流及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20962776 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 20962776 Country of ref document: EP Kind code of ref document: A1 |