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

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

Info

Publication number
WO2024007268A1
WO2024007268A1 PCT/CN2022/104466 CN2022104466W WO2024007268A1 WO 2024007268 A1 WO2024007268 A1 WO 2024007268A1 CN 2022104466 W CN2022104466 W CN 2022104466W WO 2024007268 A1 WO2024007268 A1 WO 2024007268A1
Authority
WO
WIPO (PCT)
Prior art keywords
plane
current node
identification information
spatial direction
child nodes
Prior art date
Application number
PCT/CN2022/104466
Other languages
English (en)
French (fr)
Inventor
杨付正
霍俊彦
马彦卓
李明
Original Assignee
Oppo广东移动通信有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oppo广东移动通信有限公司 filed Critical Oppo广东移动通信有限公司
Priority to PCT/CN2022/104466 priority Critical patent/WO2024007268A1/zh
Priority to TW112125249A priority patent/TW202408236A/zh
Publication of WO2024007268A1 publication Critical patent/WO2024007268A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties

Definitions

  • Embodiments of the present application relate to the field of video encoding and decoding technology, and in particular, to a point cloud encoding and decoding method, a codec, and a computer storage medium.
  • the geometric information of the point cloud and the attribute information corresponding to each point cloud are encoded separately. After the geometric encoding is completed, the geometric information is reconstructed, and the encoding of attribute information will depend on the reconstructed geometric information.
  • the plane coding mode is introduced in the multi-tree division process.
  • the common plane coding mode of multi-tree geometric coding does not combine the actual situation of the nodes in the point cloud when encoding the plane flags, resulting in high complexity and low coding efficiency. issues that reduce video compression performance.
  • Embodiments of the present application provide a point cloud encoding and decoding method, a codec, and a computer storage medium, which can reduce complexity, improve decoding efficiency, and improve video compression performance.
  • embodiments of the present application provide a point cloud decoding method, which is applied to a decoder.
  • the method includes:
  • the code stream is decoded to determine the current node's position in the three preset spatial directions.
  • three plane position information and determine the reconstructed geometric information of the current node based on the three plane position information;
  • the code stream is decoded to determine the first node of the current node in the first spatial direction.
  • Plane identification information and second plane identification information of the current node in the second spatial direction and determining the reconstructed geometric information of the current node based on the first plane identification information and the second plane identification information ;
  • the first spatial direction and the second spatial direction are any two different directions among the three preset spatial directions.
  • embodiments of the present application provide a point cloud coding method, which is applied to the encoder.
  • the method includes:
  • the full plane identification information of the current node is set to indicate the occupied child nodes of the current node.
  • the occupied child nodes all form planes in three preset spatial directions, and the full plane identification information is written into the code stream;
  • the full plane identification information of the current node is set to indicate the occupied sub-nodes of the current node. If the nodes do not all form a plane in the three preset spatial directions, the all-plane identification information is written into the code stream.
  • embodiments of the present application provide a decoder, which includes: a decoding part, a first determining part,
  • the decoding part is configured to decode the code stream
  • the first determining part is configured to determine the full-plane identification information of the current node
  • the decoding part is also configured to decode the code stream if the full plane identification information indicates that the occupied child nodes of the current node all form planes in three preset spatial directions;
  • the first determining part is further configured to determine three plane position information of the current node in the three preset spatial directions, and determine the reconstructed geometry of the current node based on the three plane position information. information;
  • the decoding part is also configured to decode the code stream if the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in three preset spatial directions;
  • the first determining part is further configured to determine the first plane identification information of the current node in the first spatial direction and the second plane identification information of the current node in the second spatial direction, and The reconstructed geometric information of the current node is determined according to the first plane identification information and the second plane identification information; wherein the first spatial direction and the second spatial direction are the three preset spaces. Any two different directions in the direction.
  • inventions of the present application provide a decoder.
  • the decoder includes a first processor and a first memory storing instructions executable by the first processor. When the instructions are executed, Point cloud decoding method as described above.
  • embodiments of the present application provide an encoder, which includes: a second determining part, an encoding part,
  • the second determination part is configured to determine three plane identification information of the current node in three preset spatial directions; if the three plane identification information indicates that the occupied child node of the current node is in the three If the preset spatial directions all form a plane, then setting the full plane identification information of the current node indicates that the occupied child nodes of the current node all form a plane in the three preset spatial directions;
  • the second determination part is further configured to set a full plane identification of the current node if the three plane identification information indicates that the occupied child nodes of the current node do not all form a plane in three preset spatial directions.
  • the information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions.
  • the encoding part is configured to write the full-plane identification information into a code stream.
  • inventions of the present application provide an encoder.
  • the encoder includes a second processor and a second memory storing instructions executable by the second processor. When the instructions are executed, the When the second processor is executed, the point cloud encoding method as described above is implemented.
  • embodiments of the present application provide a computer storage medium that stores a computer program.
  • the computer program is executed by a processor, the point cloud decoding method and the point cloud encoding method are implemented as described above.
  • Embodiments of the present application disclose a point cloud encoding and decoding method, a codec and a computer storage medium.
  • the decoder decodes the code stream and determines the full plane identification information of the current node; if the full plane identification information indicates the occupied child nodes of the current node If planes are formed in the three preset spatial directions, the code stream is decoded to determine the three plane position information of the current node in the three preset spatial directions, and the reconstructed geometric information of the current node is determined based on the three plane position information.
  • the code stream is decoded to determine the first plane identification information of the current node in the first spatial direction and the current node in second plane identification information in the second spatial direction, and determine the reconstructed geometric information of the current node based on the first plane identification information and the second plane identification information; wherein the first spatial direction and the second spatial direction are three preset Any two different directions in space.
  • the three plane identification information of the current node in the three preset spatial directions if the three plane identification information indicates that the occupied child nodes of the current node all form a plane in the three preset spatial directions, set all the current node's
  • the plane identification information indicates that the occupied child nodes of the current node form a plane in three preset spatial directions, and the full plane identification information is written into the code stream; if the three plane identification information indicates that the occupied child nodes of the current node are in three If the preset spatial directions do not all form a plane, then the full plane identification information of the current node is set to indicate that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, and the full plane identification information is written into the code stream.
  • the all-planar identification information all_planar_flag is introduced.
  • the value of all_planar_flag is 1, it means that the occupied child nodes of the current node all form a plane in three preset spatial directions.
  • the value of all_planar_flag is 0, it means that the occupied child nodes of the current node do not form a plane in at least one spatial direction.
  • Figure 1 is a schematic diagram of the frame of the G-PCC encoder
  • Figure 2 is a schematic diagram of the frame of the G-PCC decoder
  • Figure 3 is a schematic diagram of the plane position of the multi-tree node
  • Figure 4 is a schematic diagram 2 of the plane position of the multi-tree node
  • Figure 5 is a schematic diagram of the plane position of the multi-tree node
  • Figure 6 is a schematic flow chart of the implementation of the point cloud decoding method proposed in the embodiment of this application.
  • Figure 7 is a schematic flow chart of the implementation of the point cloud encoding method proposed in the embodiment of the present application.
  • Figure 8 is a schematic diagram of the point cloud encoding method proposed by the embodiment of the present application.
  • Figure 9 is a schematic diagram of the point cloud decoding method proposed by the embodiment of the present application.
  • Figure 10 is a schematic diagram of the structure of the decoder
  • Figure 11 is a schematic diagram 2 of the structure of the decoder
  • Figure 12 is a schematic diagram of the structure of the encoder
  • Figure 13 is the second structural diagram of the encoder.
  • first ⁇ second ⁇ third involved in the embodiments of this application are only used to distinguish similar objects and do not represent a specific ordering of objects. It is understandable that “first ⁇ second ⁇ third” "The specific order or sequence may be interchanged where permitted so that the embodiments of the application described herein can be practiced in an order other than that illustrated or described herein.
  • the point cloud is a three-dimensional representation of the object surface.
  • the point cloud (data) of the object surface can be collected through collection equipment such as photoelectric radar, lidar, laser scanner, and multi-view camera.
  • Point Cloud refers to a collection of massive three-dimensional points.
  • the points in the point cloud can include point location information and point attribute information.
  • the position information of the point may be the three-dimensional coordinate information of the point.
  • the position information of a point can also be called the geometric information of the point.
  • the point attribute information may include color information and/or reflectivity, etc.
  • color information can be information on 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 brightness and 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 can 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 the three-dimensional coordinate information of the point and the color information of the point.
  • a point cloud is obtained by combining the principles of laser measurement and photogrammetry.
  • the points in the point cloud may include the three-dimensional coordinate information of the point, the laser reflection intensity (reflectance) of the point, and the color information of the point.
  • Point clouds can be divided into:
  • the first type of static point cloud that is, the object is stationary and the device that obtains the point cloud is also stationary;
  • 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 dynamically acquired point cloud the device that acquires the point cloud is in motion.
  • point clouds are divided into two categories according to their uses:
  • 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 disaster 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, three-dimensional immersive communication, and three-dimensional immersive interaction.
  • the point cloud is a collection of massive points, storing the point cloud will not only consume a lot of memory, but is also not conducive to transmission. There is not such a large bandwidth to support the direct transmission of the point cloud at the network layer without compression. Therefore, it is necessary to The cloud performs compression.
  • the point cloud coding framework that can compress point clouds can be the geometry-based point cloud compression (Geometry Point Cloud Compression, G-PCC) codec framework provided by the Moving Picture Experts Group (MPEG) Or the video point cloud compression (Video Point Cloud Compression, V-PCC) codec framework, or the AVS-PCC codec framework provided by the audio and video coding standard (Audio Video Standard, AVS).
  • G-PCC encoding and decoding framework can be used to compress the first type of static point cloud and the third type of dynamic point cloud
  • the V-PCC encoding and decoding framework can be used to compress the second type of dynamic point cloud.
  • the G-PCC encoding and decoding framework is also called point cloud codec TMC13
  • the V-PCC encoding and decoding framework is also called point cloud codec TMC2.
  • the input point cloud is divided into slices, and then the slices are independently encoded.
  • slice the geometric information of the point cloud and the attribute information corresponding to the points in the point cloud are encoded separately.
  • the G-PCC encoder first encodes geometric information.
  • the encoder performs coordinate conversion on the geometric information so that all point clouds are contained in a bounding box; then quantization is performed. This quantization step mainly plays a role in scaling. Due to the quantization rounding, the geometric information of some points is the same.
  • the process of quantizing and removing duplicate points is also called voxelization process.
  • the bounding box is divided based on multi-trees (such as octree, quadtree, binary tree). According to the different depths of multi-tree division levels, the encoding of geometric information is divided into two frameworks based on multi-tree and prediction tree.
  • the bounding box is divided into multiple sub-cubes, and the placeholder bits of the sub-cubes are recorded (where 1 is non-empty, 0 is empty), and the non-empty sub-cubes continue Perform equal divisions, and usually stop dividing when the leaf nodes obtained by division are 1 ⁇ 1 ⁇ 1 unit cubes.
  • the spatial correlation between the node and the surrounding nodes is used to perform intra-frame prediction on the placeholder bits, and finally arithmetic coding (CABAC) is performed to generate a binary geometric bit stream, that is, a geometric code stream.
  • CABAC arithmetic coding
  • the G-PCC encoder After completing the encoding of geometric information, the G-PCC encoder reconstructs the geometric information and uses the reconstructed geometric information to encode the attribute information of the point cloud.
  • the geometric information encoding framework based on multi-trees both geometric lossless compression and geometric lossy compression have a geometric reconstruction process when the multi-tree division is completed.
  • point cloud attribute encoding mainly encodes the color information of points 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 by the RGB color space, the encoder can convert the color information from the RGB color space to the YUV color space.
  • the point cloud is recolored using the reconstructed geometric information so that the unencoded attribute information corresponds to the reconstructed geometric information.
  • color information encoding there are two main transformation methods. One method is distance-based lifting transformation that relies on LOD division, and the other method is direct RAHT transformation. Both methods will transform color information from the spatial domain. In the frequency domain, high-frequency coefficients and low-frequency coefficients are obtained. Finally, the coefficients are quantized and arithmetic encoded to generate a binary attribute bit stream, that is, an attribute code stream.
  • the geometric bit stream of the point cloud and the attribute bit stream corresponding to the points in the point cloud are decoded separately.
  • the G-PCC decoder decodes the geometry bitstream.
  • the decoder performs arithmetic decoding on the geometry bit stream and decodes the bounding box of the point cloud and the placeholder bits based on the multi-tree (1 is non-empty, 0 is empty); according to the different depths of the multi-tree division levels during encoding, the geometry
  • the decoding of information is divided into two frameworks based on multi-tree and prediction tree.
  • Figure 1 is a schematic framework diagram of the G-PCC encoder.
  • the points are first divided into slices. Cloud data is divided into multiple slices.
  • the geometric information of the point cloud and the attribute information corresponding to each point cloud are encoded separately.
  • the geometric information is coordinate transformed so that all point clouds are contained in a bounding box, and then quantized. This quantization step mainly plays a scaling role. Due to the quantization rounding, part of the The geometric information of the point cloud is the same, so it is decided whether to remove duplicate points based on parameters.
  • the process of quantifying and removing duplicate points is also called the voxelization process. Then perform multi-tree division on the bounding box.
  • the bounding box is divided into multiple sub-cubes, and the non-empty sub-cubes (containing points in the point cloud) continue to be divided equally until the divided leaf nodes are The division stops when the unit cube is 1 ⁇ 1 ⁇ 1, and the points in the leaf nodes are arithmetic encoded to generate a binary geometric bit stream, that is, a geometric code stream.
  • the geometric encoding is completed. After the geometric information is reconstructed, color conversion is performed to convert the color information (ie, attribute information) from the RGB color space to the YUV color space. Then, the point cloud is recolored using the reconstructed geometric information so that the unencoded attribute information corresponds to the reconstructed geometric information. Attribute encoding is mainly performed for color information. In the process of color information encoding, there are two main transformation methods. One is distance-based lifting transformation that relies on Level of Detail (LOD) division, and the other is direct area adaptation.
  • LOD Level of Detail
  • RAHT Regional adaptive Hierarchal Transform
  • Figure 2 is a schematic diagram of the framework of the G-PCC decoder. As shown in Figure 2, it is applied to the point cloud decoder.
  • the geometric bit stream and attributes in the binary code stream are The bitstreams are decoded independently.
  • the geometric information of the point cloud is obtained through the inverse process of arithmetic decoding-synthetic multi-tree-surface fitting-reconstructed geometry-coordinate conversion.
  • surface fitting you can choose to perform the step of reconstructing the geometry, or you can choose to perform the step of Scalable-reconstructing the geometry, which is mainly determined based on whether the spatial scalability function is performed.
  • the attribute information of the point cloud is obtained through arithmetic decoding-inverse quantization-LOD-based inverse lifting or RAHT-based inverse transformation-inverse color conversion process, and the point cloud is restored based on the geometric information and attribute information.
  • 3D image model of encoded point cloud data is obtained.
  • the plane coding mode is introduced in the multi-tree division process, which is located in the multi-tree geometric coding process and is applied to the multi-tree division and surface fitting parts as shown in Figure 1.
  • This method efficiently encodes nodes that meet the plane qualification criteria.
  • plane coding mode first, a flag bit occ_single_plane is introduced, which is used to indicate whether the occupied child nodes of the current node belong to the same plane. If occ_single_plane is 1, then an additional flag bit plane_position is needed.
  • This flag bit uses a binary symbol (such as 0 or 1) to indicate whether the plane is located on the low plane or the high plane. For example, plane_position is 0 to indicate the low plane, and plane_position is 1 to indicate High plane.
  • Figure 3 is a schematic diagram of the plane position of a multi-tree node.
  • Figure 4 is a schematic diagram of the plane position of a multi-tree node.
  • Figure 5 is a diagram of the plane position of a multi-tree node.
  • the current node is The occupied child nodes are all located on the low plane, as shown in Figure 4.
  • the occupied child nodes of the current node are all located on the high plane.
  • the occupied child nodes of the current node are all located on the non-plane.
  • the plane encoding mode When the plane encoding mode was first introduced, it was only for planes in one direction (i.e., z direction). Later, considering the different distributions of different point clouds, it was expanded to planes in three directions (i.e., x, y, or z direction). Specifically, first, the flag bit occ_single_plane[axisIdx] is introduced, which is used to indicate whether the occupied child nodes in the current node form a plane in the axisIdxth axis direction. If occ_single_plane[axisIdx] is 0, it means that the occupied child nodes of the current node are located in the other two plane directions perpendicular to the axisIdx-th axis.
  • the plane flag bit occ_single_plane[axisIdx] (where 0 ⁇ axisIdx ⁇ 2) is introduced to determine whether the occupied child nodes of the node are in three directions (i.e., x, y and z directions). is a plane. Assuming that the occupied child nodes of a node meet the plane qualification criteria in all three directions, then the specific determination criteria are as follows:
  • occ_single_plane[0] is 1, occ_single_plane[1] and occ_single_plane[2] are both 0, it means that the occupied child node of this node is located in the x plane;
  • occ_single_plane[1] is 1, occ_single_plane[0] and occ_single_plane[2] are both 0, it means that the occupied child node of this node is located in the y plane;
  • occ_single_plane[2] is 1, occ_single_plane[0] and occ_single_plane[1] are both 0, it means that the occupied child node of this node is located in the z plane;
  • occ_single_plane[0] is 0, occ_single_plane[1] and occ_single_plane[2] are both 1, it means that the occupied child node of this node is located in the y-z plane;
  • occ_single_plane[1] is 0, occ_single_plane[0] and occ_single_plane[2] are both 1, it means that the occupied child node of this node is located in the x-z plane;
  • occ_single_plane[2] is 0, occ_single_plane[0] and occ_single_plane[1] are both 1, it means that the occupied child node of this node is located in the x-y plane;
  • occ_single_plane[0], occ_single_plane[1] and occ_single_plane[2] are all 1, it means that the occupied child node of this node is located in the xyz plane;
  • occ_single_plane[0] occ_single_plane[1] and occ_single_plane[2] are all 0, it means that the occupied child node of this node is not a plane.
  • the plane flag bit needs to be encoded. Furthermore, when occ_single_plane[axisIdx] is 1, an additional binary symbol (such as 0 or 1) is required to encode the flag bit plane_position[axisIdx].
  • the flag bit is 0 to indicate that the The occupied child node of the node is located on the low plane of the axisIdxth axis. If the flag bit is 1, it means that the occupied child node of the node is located on the high plane of the axisIdxth axis.
  • the common plane coding mode of multi-tree geometry coding does not combine the actual situation of the nodes in the point cloud when encoding the plane flags, resulting in high complexity and low coding efficiency, which reduces the video compression performance. .
  • the all-planar identification information all_planar_flag is introduced, wherein when the value of all_planar_flag is 1, it means that the occupied child node of the current node is in three preset Planes are formed in all spatial directions. At this time, there is no need to transmit the three plane identification information of the current node in the three preset spatial directions in the code stream; when the value of all_planar_flag is 0, it means that the occupied child nodes of the current node are in At least one spatial direction does not form a plane. At this time, two plane identification information for two spatial directions among the three preset spatial directions can be determined first.
  • the point cloud encoding method in the embodiment of the present application can be applied to the multi-tree division and surface fitting part as shown in Figure 1.
  • the point cloud decoding method in the embodiment of the present application can also be applied to the reconstructed multi-tree and reconstructed surface estimation as shown in Figure 2. That is to say, the point cloud encoding and decoding method in the embodiment of the present application can be applied to both the encoder and the decoder, and can even be applied to the encoder and the decoder at the same time.
  • the embodiment of the present application does not specifically limit it. .
  • FIG. 6 is a schematic flow chart of the implementation of the point cloud decoding method proposed by the embodiment of the present application.
  • the method for the decoder to perform point cloud decoding processing may include the following step:
  • Step 101 Decode the code stream and determine the full-plane identification information of the current node.
  • the decoder may first decode the code stream and then determine the full-plane identification information of the current node.
  • the full-plane identification information can indicate whether the occupied sub-nodes of the current node all form a plane in three preset spatial directions. That is, through the full-plane identification information corresponding to the current node, the occupied sub-nodes of the current node can be determined. Check whether the planes formed by the occupied child nodes are perpendicular to the three preset spatial directions.
  • the occupied child nodes of the current node do not form a plane in one of the three preset spatial directions, then it can be considered that the occupied child nodes of the current node constitute The plane is perpendicular to the direction of space.
  • the full plane identification information can be used to determine whether the occupied child nodes of the current node all form a plane in three preset spatial directions.
  • the encoder can assign a value to the full-plane identification information. For example, when the value of the full-plane identification information is a numerical value, it is considered that the occupied child nodes of the current node are in three preset spatial directions. All form a plane. When the value of the full plane identification information is another value, it is considered that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions.
  • the decoder when determining whether the occupied child nodes of the current node all form a plane in three preset spatial directions, it can be determined based on the full plane identification information.
  • the all-plane identification information can be represented by a flag bit all_plane_flag, or can be represented by another flag bit not_all_plane_flag.
  • the value of the full-plane identification information may be 0 or 1.
  • the determined all-plane identification information is the flag all_plane_flag
  • the value of the flag all_plane_flag is 0, it can be determined that the all-plane identification information indicates the occupied child node of the current node. Not all planes are formed in the three preset spatial directions.
  • the value of the flag all_plane_flag is 1, it can be determined that the all-plane identification information indicates that the occupied child nodes of the current node all form planes in the three preset spatial directions.
  • the determined all-plane identification information is the flag bit not_all_plane_flag
  • the value of the flag bit not_all_plane_flag 1
  • it can be determined that the all-plane identification information indicates the occupied child node of the current node. Not all planes are formed in the three preset spatial directions.
  • the value of the flag all_plane_flag is 0, it can be determined that the all-plane identification information indicates that the occupied child nodes of the current node all form planes in the three preset spatial directions.
  • the three preset spatial directions may be three different directions in space that are perpendicular to each other.
  • the three preset spatial directions may be the x-axis direction, respectively.
  • the current node may be a point in the point cloud to be decoded.
  • the process of determining the full-plane identification information will no longer be executed, but for one or two spatial directions that meet the plane qualification determination conditions, the code stream will be decoded to determine that the current node is in one or two of the plane qualification determination conditions.
  • plane identification information in one or two spatial directions and then the reconstructed geometric information of the current node can be determined based on the plane identification information of the current node in one or two spatial directions.
  • the prerequisite for determining the full-plane identification information of the current node by decoding the code stream is whether the current node meets the plane qualification conditions in three preset spatial directions.
  • Step 102 If the full plane identification information indicates that the occupied child nodes of the current node all form a plane in three preset spatial directions, decode the code stream and determine the three plane position information of the current node in the three preset spatial directions. , and determine the reconstructed geometric information of the current node based on the three plane position information.
  • the code stream is decoded and determined.
  • Three plane position information of the current node in three preset spatial directions, and then the reconstructed geometric information of the current node can be determined based on the three plane position information.
  • the full plane identification information indicates that the occupied child nodes of the current node all form a plane in three preset spatial directions
  • the position of the occupied child node of the current node can be explained.
  • Forming a plane in all three preset spatial directions means that the current node is determined to be a three-plane node. Therefore, it can be considered that the occupied child nodes of the current node can form a plane in any preset spatial direction.
  • the plane identification information of the current node in this spatial direction indicates that the occupied child nodes of the current node form a plane in this spatial direction. Therefore, there is no need to decode the plane identification information of the current node in this spatial direction, but continue to determine the current
  • the three plane position information of the node in three preset spatial directions can then be used to determine the reconstructed geometric information of the current node based on the three plane position information.
  • the full plane identification information indicates that the occupied child nodes of the current node all form a plane in three preset spatial directions
  • the current node in the three preset spatial directions can be set.
  • the three plane identification information respectively indicate that the occupied child nodes of the current node constitute a plane in three preset spatial directions.
  • the current node can be directly set.
  • the plane identification information of the node in the spatial direction indicates that the occupied child nodes of the current node form a plane in the spatial direction. Therefore, there is no need to decode the plane identification information of the current node in the spatial direction, but continue to determine the current node in the spatial direction.
  • Three plane position information in three preset spatial directions, and then the reconstructed geometric information of the current node can be determined based on the three plane position information.
  • the plane identification information of the current node in a spatial direction indicates that the occupied child nodes of the current node form a plane in the spatial direction
  • Plane position information in a direction If the plane identification information of the current node in a spatial direction indicates that the occupied child nodes of the current node do not form a plane in that spatial direction, then it can be determined that the current node does not have a plane position in that spatial direction. information.
  • the plane identification information of the spatial direction can determine whether the occupied child nodes of the current node form a plane in the spatial direction. Instruction is performed, that is, through the plane identification information corresponding to the current node, it can be determined whether the plane formed by the occupied child nodes of the current node is perpendicular to the spatial direction. Among them, if the occupied child nodes of the current node do not form a plane in the spatial direction, then it can be considered that the plane formed by the occupied child nodes of the current node is perpendicular to the spatial direction.
  • the plane identification information can be used to determine whether the occupied child nodes of the current node constitute a plane in the corresponding spatial direction.
  • the encoder can assign a value to the plane identification information. For example, when the value of the plane identification information is a numerical value, it is considered that the occupied child nodes of the current node constitute a plane in the corresponding spatial direction. When the value of the plane identification information is another value, it is considered that the occupied child nodes of the current node do not form a plane in the corresponding spatial direction, that is, the plane formed by the occupied child nodes of the current node is perpendicular to the spatial direction.
  • the decoder when determining whether the occupied child nodes of the current node constitute a plane in a spatial direction, it can be determined based on the plane identification information of the spatial direction.
  • the plane identification information can be represented by a flag bit occ_single_plane.
  • occ_single_plane[k] can be used to indicate whether the occupied child nodes of the current node form a plane in the k+1th spatial direction.
  • the value of k can be 0, 1, or 2.
  • occ_single_plane[0] can represent the first plane identification information of the current node in the first spatial direction
  • occ_single_plane[1] can represent the second plane identification information of the current node in the second spatial direction.
  • Information, occ_single_plane[2] can represent the third plane identification information of the current node in the third space direction
  • the value of plane identification information occ_single_plane[k] may be 0 or 1.
  • the determined plane identification information is the flag bit occ_single_plane[k]
  • the value of the flag bit occ_single_plane[k] is 0, it can be determined that the plane identification information indicates the current node.
  • the occupied child node does not form a plane in the k+1th space direction.
  • the value of the flag bit occ_single_plane[k] is 1, it can be determined that the plane identification information indicates that the occupied child node of the current node is in the k+1th space direction. forming a flat surface.
  • all_plane_flag obtained by decoding is 1, it can be determined that the current node forms a plane in the three preset space directions. At this time, there is no current node in the code stream in the three preset spaces. This is because at the encoding end, the three plane identification information in the three preset spatial directions are not written into the code stream, so the current node can be directly placed in the three preset spaces.
  • the three plane identification information in the direction are respectively set to indicate that the occupied child nodes of the current node constitute a plane in three preset spatial directions.
  • the value of the first plane identification information occ_single_plane[0] in the first spatial direction is set to 1
  • the value of the second plane identification information occ_single_plane[1] in the second spatial direction is set to 1
  • the value of the third plane identification information in the third spatial direction is set to 1.
  • the value of plane identification information occ_single_plane[2] is set to 1.
  • Step 103 If the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, decode the code stream to determine the first plane identification information of the current node in the first spatial direction and the current The second plane identification information of the node in the second spatial direction, and the reconstructed geometric information of the current node is determined based on the first plane identification information and the second plane identification information; wherein, the first spatial direction and the second spatial direction are three Any two different directions in the preset spatial directions.
  • the code stream can be continued to be decoded. , further determine the first plane identification information of the current node in the first spatial direction and the second plane identification information of the current node in the second spatial direction, and then determine the current node according to the first plane identification information and the second plane identification information. reconstructed geometric information.
  • the first spatial direction and the second spatial direction are any two different directions among the three preset spatial directions. Assuming that the three preset spatial directions can be the x-axis direction, the y-axis direction, and the z-axis direction, then the first spatial direction and the second spatial direction can be any two of the x-axis direction, the y-axis direction, and the z-axis direction. direction.
  • the first spatial direction may be the x-axis direction
  • the second spatial direction may be the y-axis direction
  • the first spatial direction may be the z-axis direction
  • the second spatial direction may be the y-axis direction
  • the first spatial direction may be the z-axis direction
  • It can be the z-axis direction
  • the second spatial direction can be the x-axis direction, etc., which are not specifically limited in the embodiments of this application.
  • the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, then it can be considered that for at least one of the three preset spatial directions Spatial direction.
  • the occupied child nodes of the current node do not form a plane in at least one spatial direction.
  • the possible situation where the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in three preset spatial directions may include: 1. The occupied child nodes of the current node The occupied child nodes do not form a plane in two spatial directions, but only form a plane in another spatial direction; 2. The occupied child nodes of the current node form a plane in two spatial directions, but do not form a plane in another spatial direction. form a plane.
  • the first plane identification information indicates that the occupied child nodes of the current node do not form a plane in the first spatial direction, then it can be determined that the first plane identification information indicates that the occupied child nodes of the current node do not form a plane.
  • the plane formed by the occupied child nodes is perpendicular to the first space direction; if the second plane identification information indicates that the occupied child nodes of the current node do not form a plane in the second space direction, then it can be determined that the second plane identification information indicates that the current node The plane formed by the occupied child nodes is perpendicular to the second space direction; if the third plane identification information indicates that the occupied child nodes of the current node do not form a plane in the third space direction, then it can be determined that the third plane identification information indicates the current node The plane formed by the occupied child nodes is perpendicular to the third space direction.
  • the plane identification information in a spatial direction indicates that the occupied child nodes of the current node do not form a plane in the spatial direction
  • the plane identification information in the spatial direction indicates The plane formed by the occupied child nodes of the current node is perpendicular to the direction of space.
  • the plane identification information in the x-axis direction indicates that the occupied child nodes of the current node do not form a plane in the x-axis direction
  • the plane identification information in the x-axis direction indicates that the occupied child nodes of the current node do not form a plane.
  • plane and x-axis direction indicates that the occupied child nodes of the current node do not form a plane.
  • the current node in the first spatial direction can be first determined. First plane identification information and the second plane identification information of the current node in the second spatial direction, and then further determine whether it is necessary to decode the third plane identification information of the current node in the third spatial direction based on the first plane identification information and the second plane identification information.
  • Flat logo information if the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, then the current node in the first spatial direction can be first determined. First plane identification information and the second plane identification information of the current node in the second spatial direction, and then further determine whether it is necessary to decode the third plane identification information of the current node in the third spatial direction based on the first plane identification information and the second plane identification information.
  • the code stream can be continued to be decoded to further determine the position of the current node in the first spatial direction.
  • the first plane identification information indicates that the occupied child node of the current node is formed in the first spatial direction.
  • the value of occ_single_plane[1] obtained by decoding is 1, it can be determined that the second plane identification information indicates that the occupied child nodes of the current node constitute a plane in the second spatial direction.
  • the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions
  • the first plane identification information and the second plane The identification information indicates that the occupied child nodes of the current node form a plane in both the first spatial direction and the second spatial direction.
  • the third plane identification information of the current node in the third spatial direction indicates the occupied child node of the current node.
  • the plane identification information in the third space direction is directly defaulted to indicate that the plane formed by the occupied child nodes of the current node is perpendicular to the third space direction, so there is no need to perform the current node in the third space.
  • the decoding process of the third plane identification information of the direction but continues to determine the first plane position information of the current node in the first spatial direction and the second plane position information in the second spatial direction, and then the first plane position can be determined information and the second plane position information to determine the reconstructed geometric information of the current node.
  • the third plane identification information of the current node in the third spatial direction can be set to indicate that the occupied child node of the current node is in There is no plane formed in the third space direction, that is, the plane identification information in the third space direction can be set to indicate that the plane formed by the occupied child nodes of the current node is perpendicular to the third space direction.
  • the third spatial direction may be a direction other than the first spatial direction and the second spatial direction among the three preset spatial directions.
  • the three preset spatial directions can be the x-axis direction, the y-axis direction and the z-axis direction respectively. If the first spatial direction can be the x-axis direction and the second spatial direction can be the y-axis direction, then the third spatial direction can be z axis; if the first spatial direction can be the z-axis direction, the second spatial direction can be the y-axis direction, then the third spatial direction can be the x-axis; there is no specific limitation in the embodiment of this application.
  • the full plane identification information indicates that the occupied child nodes of the current node do not all constitute a plane in the three preset spatial directions
  • the first plane identification information and the second plane The identification information indicates that the occupied child nodes of the current node form a plane in both the first spatial direction and the second spatial direction.
  • the third plane identification information may be directly set to indicate that the occupied child nodes of the current node do not form a plane in the third spatial direction. , that is, you can choose to set the plane identification information in the third space direction to indicate that the plane formed by the occupied child nodes of the current node is perpendicular to the third space direction.
  • the code stream can be continued to be decoded to further determine that the current node is in the third spatial direction.
  • the third plane identification information in the spatial direction; then the reconstructed geometric information of the current node can be determined based on the third plane identification information.
  • the first plane identification information indicates that the occupied child node of the current node is not in the first spatial direction.
  • the second plane identification information indicates that the occupied child nodes of the current node do not form a plane in the second spatial direction.
  • the third spatial direction may be a direction other than the first spatial direction and the second spatial direction among the three preset spatial directions.
  • the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions
  • the first plane identification information and/or the third The two-plane identification information indicates that the occupied child nodes of the current node do not form a plane in the first spatial direction and/or the second spatial direction, that is, it indicates that the occupied child nodes of the current node do not form a plane in the first spatial direction and the second spatial direction. If one or two spatial directions do not form a plane, then it is necessary to further determine the third plane identification information of the current node in the third spatial direction, and then determine whether the occupied child node of the current node forms a plane in the third spatial direction.
  • a possible implementation is: if the first plane identification information indicates that the occupied child nodes of the current node constitute a plane in the first spatial direction, and the second plane identification information indicates that the occupied child nodes of the current node form a plane in the first spatial direction, If the second spatial direction does not form a plane, and the third plane identification information indicates that the occupied child nodes of the current node do not form a plane in the third spatial direction, then the first plane position information of the current node in the first spatial direction can be further determined. ; Then the reconstructed geometric information of the current node can be determined based on the first plane position information.
  • a possible implementation is: if the first plane identification information indicates that the occupied child nodes of the current node constitute a plane in the first spatial direction, and the second plane identification information indicates that the occupied child nodes of the current node form a plane in the first spatial direction, If the second spatial direction does not form a plane, and the third plane identification information indicates that the occupied child node of the current node forms a plane in the third spatial direction, then the first plane position information of the current node in the first spatial direction and The third plane position information of the current node in the third spatial direction; then the reconstructed geometric information of the current node can be determined based on the first plane position information and the third plane position information.
  • a possible implementation is: if the first plane identification information indicates that the occupied child nodes of the current node do not form a plane in the first spatial direction, and the second plane identification information indicates that the occupied child nodes of the current node are in A plane is formed in the second spatial direction, and the third plane identification information indicates that the occupied child nodes of the current node do not form a plane in the third spatial direction, then the second plane position information of the current node in the second spatial direction can be further determined. ; Then the reconstructed geometric information of the current node can be determined based on the second plane position information;
  • a possible implementation is: if the first plane identification information indicates that the occupied child nodes of the current node do not form a plane in the first spatial direction, and the second plane identification information indicates that the occupied child nodes of the current node are in A plane is formed in the second spatial direction, and the third plane identification information indicates that the occupied child nodes of the current node constitute a plane in the third spatial direction, then the second plane position information of the current node in the second spatial direction and The third plane position information of the current node in the third spatial direction; then the reconstructed geometric information of the current node can be determined based on the second plane position information and the third plane position information.
  • a possible implementation is: if the first plane identification information indicates that the occupied child nodes of the current node do not form a plane in the first spatial direction, and the second plane identification information indicates that the occupied child nodes of the current node are in There is no plane formed in the second spatial direction, and the third plane identification information indicates that the occupied child nodes of the current node form a plane in the third spatial direction, then the third plane position information of the current node in the third spatial direction can be further determined. ; Then the reconstructed geometric information of the current node can be determined based on the third plane position information.
  • the decoded code stream when obtaining plane position information, if the first plane identification information indicates that the occupied child nodes of the current node constitute a plane in the first spatial direction, then the decoded code stream is, Determine the first plane position information of the current node in the first spatial direction; otherwise, skip the decoding of the first plane position information; if the second plane identification information indicates that the occupied child nodes of the current node constitute a plane in the second spatial direction, Then decode the code stream to determine the second plane position information of the current node in the second space direction; otherwise, skip the decoding of the second plane position information; if the third plane identification information indicates that the occupied child node of the current node is in the third space direction constitutes a plane, the code stream is decoded to determine the third plane position information of the current node in the third spatial direction; otherwise, the decoding of the third plane position information is skipped.
  • the plane position information of the spatial direction can be based on the occupied child node of the current node in the spatial direction.
  • the position of the plane is indicated, that is, through the plane position information corresponding to the current node, the specific position of the plane formed by the occupied child nodes of the current node can be determined.
  • the plane position information can be used to determine the position of the plane formed by the occupied child nodes of the current node in the corresponding spatial direction.
  • the encoder can assign a value to the plane position information. For example, when the value of the plane position information is a numerical value, it is considered that the plane formed by the occupied child nodes of the current node in the corresponding spatial direction The position of is a high plane. When the value of the plane position information is another value, the position of the plane formed by the occupied child nodes of the current node in the corresponding spatial direction is considered to be a low plane.
  • the position of the plane in the spatial direction can be determined.
  • the information is certain.
  • the plane position information can be represented by a flag plane_position.
  • plane_position[k] can be used to indicate the position of the plane formed by the occupied child nodes of the current node in the k+1th spatial direction, and the value of k can be 0, 1, or 2.
  • plane_position[0] can represent the first plane position information of the current node in the first spatial direction
  • plane_position[1] can represent the second plane position of the current node in the second spatial direction
  • Information, plane_position[2] can represent the third plane position information of the current node in the third space direction
  • plane position information plane_position[k] may be 0 or 1.
  • the value of the plane position information is a first value (for example, 1), then it can be determined that the plane position information indicates that the occupied child nodes of the current node constitute a high plane in the corresponding spatial direction. ; If the value of the plane position information is the first value (for example, 0), then it can be determined that the plane position information indicates that the occupied child nodes of the current node constitute a low plane in the corresponding spatial direction.
  • the determined plane position information is the flag plane_position[k]
  • the value of the flag plane_position[k] is 0, it can be determined that the plane position information indicates the position of the current node.
  • the plane formed by the occupied child node in the k+1th spatial direction is a low plane.
  • the value of the flag plane_position[k] is 1, it can be determined that the plane position information indicates that the occupied child node of the current node is at the kth
  • the plane formed in the +1 spatial direction is the height plane.
  • the point cloud decoding method proposed through the above steps 101 to 103 is a point cloud plane mode decoding method.
  • the flag bit all_planar_flag ie, all-planar identification information
  • all_planar_flag when the value of all_planar_flag is 1, it means that the occupied child nodes of the current node form a plane in three preset spatial directions.
  • the three plane identification information occ_single_plane[0], occ_single_plane[1] and occ_single_plane[2] The value of can be directly inferred to be 1, that is, the three plane identification information of the current node in the three preset spatial directions can be directly defaulted to respectively indicate that the occupied child nodes of the current node form a plane in the three preset spatial directions, or , the three plane identification information of the current node in three preset spatial directions can be directly set to respectively indicate that the occupied child nodes of the current node constitute a plane in the three preset spatial directions.
  • all_planar_flag When the value of all_planar_flag is 0, it means that the occupied child nodes of the current node do not form a plane in at least one spatial direction. At this time, you can first decode and determine the two plane identifiers of two of the three preset spatial directions.
  • the value of the other plane identification information can be directly inferred to be 0, that is, the identification information of the current node in the third spatial direction can be directly defaulted to indicate that the occupied child nodes of the current node form a plane in the third spatial direction, or the current node can be directly set to be in the third spatial direction.
  • the plane identification information in three spatial directions indicates that the occupied child nodes of the current node constitute a plane in the third spatial direction. Decoding the plane flag bit in this way can significantly reduce the number of binary symbols required to transmit the plane flag bit occ_single_plane[axisIdx] and improve the efficiency of plane mode geometric encoding and decoding.
  • the point cloud standard text is shown in Table 1 before modification, and the standard text after modification is shown in Table 2.
  • the embodiment of the present application discloses a point cloud decoding method.
  • the decoder decodes the code stream and determines the full plane identification information of the current node; if the full plane identification information indicates that the occupied child nodes of the current node are all in three preset spatial directions, form a plane, decode the code stream, determine the three plane position information of the current node in three preset spatial directions, and determine the reconstructed geometric information of the current node based on the three plane position information; if the full plane identification information indicates the current node The occupied child nodes do not all form planes in the three preset spatial directions, then the code stream is decoded to determine the first plane identification information of the current node in the first spatial direction and the second plane of the current node in the second spatial direction.
  • all_planar_flag is introduced.
  • all_planar_flag 1, it means that the occupied child nodes of the current node all form a plane in three preset spatial directions.
  • FIG. 7 is a schematic flow chart of the implementation of the point cloud encoding method proposed by the embodiment of the present application. As shown in Figure 7, the encoder performs point cloud encoding. Treatment methods may include the following steps:
  • Step 201 Determine three plane identification information of the current node in three preset spatial directions.
  • the encoder may first determine three plane identification information of the current node in three preset spatial directions.
  • the three preset spatial directions may be three different directions in space that are perpendicular to each other.
  • the three preset spatial directions may be the x-axis direction, respectively.
  • the current node may be a point in the point cloud to be encoded.
  • the plane identification information of the spatial direction can determine whether the occupied child nodes of the current node form a plane in the spatial direction. Instruction is performed, that is, through the plane identification information corresponding to the current node, it can be determined whether the plane formed by the occupied child nodes of the current node is perpendicular to the spatial direction. Among them, if the occupied child nodes of the current node do not form a plane in the spatial direction, then it can be considered that the plane formed by the occupied child nodes of the current node is perpendicular to the spatial direction.
  • the plane identification information can be used to determine whether the occupied child nodes of the current node constitute a plane in the corresponding spatial direction.
  • the encoder can assign a value to the plane identification information. For example, when the value of the plane identification information is a numerical value, it is considered that the occupied child nodes of the current node constitute a plane in the corresponding spatial direction. When the value of the plane identification information is another value, it is considered that the occupied child nodes of the current node do not form a plane in the corresponding spatial direction, that is, the plane formed by the occupied child nodes of the current node is perpendicular to the spatial direction.
  • the plane identification information can be represented by a flag bit occ_single_plane.
  • occ_single_plane[k] can be used to indicate whether the occupied child nodes of the current node form a plane in the k+1th spatial direction.
  • the value of k can be 0, 1, or 2.
  • occ_single_plane[0] can represent the first plane identification information of the current node in the first spatial direction
  • occ_single_plane[1] can represent the second plane identification information of the current node in the second spatial direction.
  • Information, occ_single_plane[2] can represent the third plane identification information of the current node in the third space direction
  • the value of plane identification information occ_single_plane[k] may be 0 or 1.
  • the determined plane identification information is the flag bit occ_single_plane[k]
  • the value of the flag bit occ_single_plane[k] is 0, it can be determined that the plane identification information indicates the current node.
  • the occupied child node does not form a plane in the k+1th space direction.
  • the value of the flag bit occ_single_plane[k] is 1, it can be determined that the plane identification information indicates that the occupied child node of the current node is in the k+1th space direction. forming a flat surface.
  • Step 202 If the three plane identification information indicates that the occupied child nodes of the current node all form a plane in three preset spatial directions, set the full plane identification information of the current node to indicate that the occupied child nodes of the current node form a plane in the three preset spatial directions. Assume that all planes are formed in the spatial direction, and the entire plane identification information is written into the code stream.
  • Step 203 If the three plane identification information indicates that the occupied sub-nodes of the current node do not all form a plane in the three preset spatial directions, set the full plane identification information of the current node to indicate that the occupied sub-nodes of the current node do not form a plane in the three preset spatial directions. Assume that not all planes are formed in the spatial direction, and all plane identification information is written into the code stream.
  • the full-plane identification information of the current node can be set to indicate that the occupied child nodes of the current node all form a plane in three preset spatial directions, and then the full-plane identification information is written into the code stream.
  • the full plane identification information of the current node can be set to indicate that the occupied child nodes of the current node are in three preset spatial directions. It is preset that not all planes are formed in the spatial direction, and then the all-plane identification information is written into the code stream (such as Signal all_plane_flag in a bitstream, in which the flag all_plane_flag is used to represent the all-plane identification information).
  • the full-plane identification information can be written into the code stream.
  • the full-plane identification information can indicate whether the occupied sub-nodes of the current node all form a plane in three preset spatial directions. That is, through the full-plane identification information corresponding to the current node, the occupied sub-nodes of the current node can be determined. Check whether the planes formed by the occupied child nodes are perpendicular to the three preset spatial directions.
  • the occupied child nodes of the current node do not form a plane in one of the three preset spatial directions, then it can be considered that the occupied child nodes of the current node constitute The plane is perpendicular to the direction of space.
  • the full plane identification information can be used to determine whether the occupied child nodes of the current node all form a plane in three preset spatial directions.
  • the encoder can assign a value to the full-plane identification information. For example, when the value of the full-plane identification information is a numerical value, it is considered that the occupied child nodes of the current node are in three preset spatial directions. All form a plane. When the value of the full plane identification information is another value, it is considered that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions.
  • the all-plane identification information can be represented by a flag bit all_plane_flag, or can be represented by another flag bit not_all_plane_flag.
  • the standard text corresponding to writing the all-plane identification information into the code stream can be Signal all_plane_flag in a bitstream, or it can be Signal not_all_plane_flag in a bitstream, which is not specifically limited in this application.
  • the value of the full-plane identification information may be 0 or 1.
  • the determined all-plane identification information is the flag all_plane_flag
  • the value of the flag all_plane_flag is 0, it can be determined that the all-plane identification information indicates the occupied child node of the current node. Not all planes are formed in the three preset spatial directions.
  • the value of the flag all_plane_flag is 1, it can be determined that the all-plane identification information indicates that the occupied child nodes of the current node all form planes in the three preset spatial directions.
  • the determined all-plane identification information is the flag bit not_all_plane_flag
  • the value of the flag bit not_all_plane_flag 1
  • it can be determined that the all-plane identification information indicates the occupied child node of the current node. Not all planes are formed in the three preset spatial directions.
  • the value of the flag all_plane_flag is 0, it can be determined that the all-plane identification information indicates that the occupied child nodes of the current node all form planes in the three preset spatial directions.
  • the process of determining the full plane identification information is performed, and then the full plane identification information is written into the code stream.
  • the process of determining the full plane identification information will no longer be executed. Instead, for one or two spatial directions that meet the plane qualification determination conditions, the current node will be selected to determine the position of the current node in one or two spatial directions that meet the plane qualification determination conditions.
  • the plane identification information on the node can be encoded according to the plane identification information of the current node in one or two spatial directions.
  • the prerequisite for determining the full plane identification information of the current node and writing it into the code stream is whether the current node meets the plane qualification conditions in three preset spatial directions.
  • the full plane identification information of the current node after determining the full plane identification information of the current node, if the full plane identification information indicates that the occupied child nodes of the current node all form a plane in three preset spatial directions, then determine the current node.
  • the three plane position information of the node in three preset spatial directions can then be written into the code stream (such as Signal plane_position[k]in a bitstream, where the flag plane_position[k ] represents the plane position information in the k+1th spatial direction, and the value of k can be 0, 1, 2).
  • the full plane identification information indicates that the occupied child nodes of the current node all form a plane in three preset spatial directions
  • the position of the occupied child node of the current node can be explained.
  • Forming a plane in all three preset spatial directions means that the current node is determined to be a three-plane node. Therefore, it can be considered that the occupied child nodes of the current node can form a plane in any preset spatial direction.
  • the plane identification information of the current node in this space direction indicates that the occupied child nodes of the current node form a plane in this space direction. Therefore, there is no need to encode the plane identification information of the current node in this space direction, but continue to determine the current
  • the three plane position information of the node in three preset spatial directions is then written into the code stream.
  • the full plane identification information indicates that the occupied child nodes of the current node all form a plane in three preset spatial directions
  • the identification of the current node in the three preset spatial directions can be skipped.
  • the encoding process of the three plane identification information on the current node, that is, the three plane identification information of the current node in the three preset spatial directions is not written into the code stream.
  • the plane identification information of the current node in a spatial direction indicates that the occupied child nodes of the current node form a plane in the spatial direction
  • Plane position information in a direction If the plane identification information of the current node in a spatial direction indicates that the occupied child nodes of the current node do not form a plane in that spatial direction, then it can be determined that the current node does not have a plane position in that spatial direction. information.
  • all_plane_flag 1
  • the three planes in the three preset spatial directions The identification information is not written into the code stream, that is, there is no three-plane identification information of the current node in the three preset spatial directions in the code stream. Therefore, at the decoding end, the current node can be directly placed in the three preset spaces.
  • the three plane identification information in the direction are respectively set to indicate that the occupied child nodes of the current node constitute a plane in three preset spatial directions.
  • the value of the first plane identification information occ_single_plane[0] in the first spatial direction is set to 1
  • the value of the second plane identification information occ_single_plane[1] in the second spatial direction is set to 1
  • the value of the third plane identification information in the third spatial direction is set to 1.
  • the value of plane identification information occ_single_plane[2] is set to 1.
  • the full plane identification information of the current node after determining the full plane identification information of the current node, if the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, then it can be further Encoding processing is performed based on the first plane identification information of the current node in the first spatial direction and the second plane identification information of the current node in the second spatial direction.
  • the first spatial direction and the second spatial direction are any two different directions among the three preset spatial directions. Assuming that the three preset spatial directions can be the x-axis direction, the y-axis direction, and the z-axis direction, then the first spatial direction and the second spatial direction can be any two of the x-axis direction, the y-axis direction, and the z-axis direction. direction.
  • the first spatial direction may be the x-axis direction
  • the second spatial direction may be the y-axis direction
  • the first spatial direction may be the z-axis direction
  • the second spatial direction may be the y-axis direction
  • the first spatial direction may be the z-axis direction
  • It can be the z-axis direction
  • the second spatial direction can be the x-axis direction, etc., which are not specifically limited in the embodiments of this application.
  • the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, then it can be considered that for at least one of the three preset spatial directions Spatial direction.
  • the occupied child nodes of the current node do not form a plane in at least one spatial direction.
  • the possible situation where the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in three preset spatial directions may include: 1. The occupied child nodes of the current node The occupied child nodes do not form a plane in two spatial directions, but only form a plane in another spatial direction; 2. The occupied child nodes of the current node form a plane in two spatial directions, but do not form a plane in another spatial direction. form a plane.
  • the first plane identification information indicates that the occupied child nodes of the current node do not form a plane in the first spatial direction, then it can be determined that the first plane identification information indicates that the occupied child nodes of the current node do not form a plane.
  • the plane formed by the occupied child nodes is perpendicular to the first space direction; if the second plane identification information indicates that the occupied child nodes of the current node do not form a plane in the second space direction, then it can be determined that the second plane identification information indicates that the current node The plane formed by the occupied child nodes is perpendicular to the second space direction; if the third plane identification information indicates that the occupied child nodes of the current node do not form a plane in the third space direction, then it can be determined that the third plane identification information indicates the current node The plane formed by the occupied child nodes is perpendicular to the third space direction.
  • the plane identification information in a spatial direction indicates that the occupied child nodes of the current node do not form a plane in the spatial direction
  • the plane identification information in the spatial direction indicates The plane formed by the occupied child nodes of the current node is perpendicular to the direction of space.
  • the plane identification information in the x-axis direction indicates that the occupied child nodes of the current node do not form a plane in the x-axis direction
  • the plane identification information in the x-axis direction indicates that the occupied child nodes of the current node do not form a plane.
  • plane and x-axis direction indicates that the occupied child nodes of the current node do not form a plane.
  • the current node in the first spatial direction can be first determined. a plane identification information and the second plane identification information of the current node in the second spatial direction, and then further determine whether it is necessary to encode the third plane identification information of the current node in the third spatial direction based on the first plane identification information and the second plane identification information.
  • Flat logo information if the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, then the current node in the first spatial direction can be first determined. a plane identification information and the second plane identification information of the current node in the second spatial direction, and then further determine whether it is necessary to encode the third plane identification information of the current node in the third spatial direction based on the first plane identification information and the second plane identification information.
  • the first plane identification information indicates that the occupied child node of the current node is formed in the first spatial direction plane, and at the same time, the second plane identification information indicates that the occupied child nodes of the current node form a plane in the second spatial direction, then the first plane position information of the current node in the first spatial direction and the position information of the current node in the first spatial direction can be further determined.
  • occ_single_plane[0] if the value of occ_single_plane[0] is 1, it can be determined that the first plane identification information indicates that the occupied child nodes of the current node constitute a plane in the first spatial direction, if If the value of occ_single_plane[1] is 1, it can be determined that the second plane identification information indicates that the occupied child nodes of the current node form a plane in the second spatial direction.
  • the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions
  • the first plane identification information and the second plane The identification information indicates that the occupied child nodes of the current node form a plane in both the first spatial direction and the second spatial direction.
  • the third plane identification information of the current node in the third spatial direction indicates the occupied child node of the current node.
  • the plane identification information in the third space direction is directly defaulted to indicate that the plane formed by the occupied child nodes of the current node is perpendicular to the third space direction, so there is no need to perform the current node in the third space.
  • the encoding process of the third plane identification information of the direction that is, the third plane identification information of the current node in the third spatial direction is not written into the code stream, but the first plane position information of the current node in the first spatial direction is continued to be determined.
  • the first plane position information can be written into the code stream after the first plane identification information is written into the code stream; after the second plane identification information is written into the code stream Then the second plane position information is written into the code stream.
  • the third spatial direction may be a direction other than the first spatial direction and the second spatial direction among the three preset spatial directions.
  • the three preset spatial directions can be the x-axis direction, the y-axis direction and the z-axis direction respectively. If the first spatial direction can be the x-axis direction and the second spatial direction can be the y-axis direction, then the third spatial direction can be z axis; if the first spatial direction can be the z-axis direction, the second spatial direction can be the y-axis direction, then the third spatial direction can be the x-axis; there is no specific limitation in the embodiment of this application.
  • the full plane identification information indicates that the occupied child nodes of the current node do not all constitute a plane in the three preset spatial directions
  • the first plane identification information and the second plane The identification information indicates that the occupied child nodes of the current node form a plane in both the first spatial direction and the second spatial direction.
  • the third plane identification information is not written into the code stream, that is, the code stream is not included in the code stream.
  • the third plane identification information may not be decoded, but the third plane identification information may be directly set to indicate that the occupied child node of the current node is not in the third space direction.
  • the first plane identification information indicates that the occupied child node of the current node is not in the first spatial direction, constitute a plane, and/or, the second plane identification information indicates that the occupied child nodes of the current node do not form a plane in the second spatial direction, then the third plane identification information of the current node in the third spatial direction can be determined; then Then encoding processing can be performed based on the third plane identification information.
  • the first plane identification information indicates that the occupied child nodes of the current node do not form a plane in the first spatial direction. If the value of occ_single_plane[1] is 0, it can be determined that the second plane identification information indicates that the occupied child nodes of the current node do not form a plane in the second spatial direction.
  • the third spatial direction may be a direction other than the first spatial direction and the second spatial direction among the three preset spatial directions.
  • the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions
  • the first plane identification information and/or the third The two-plane identification information indicates that the occupied child nodes of the current node do not form a plane in the first spatial direction and/or the second spatial direction, that is, it indicates that the occupied child nodes of the current node do not form a plane in the first spatial direction and the second spatial direction. If one or two spatial directions do not form a plane, then it is necessary to further determine the third plane identification information of the current node in the third spatial direction, and then determine whether the occupied child node of the current node forms a plane in the third spatial direction.
  • a possible implementation is: if the first plane identification information indicates that the occupied child nodes of the current node constitute a plane in the first spatial direction, and the second plane identification information indicates that the occupied child nodes of the current node form a plane in the first spatial direction, If the second spatial direction does not form a plane, and the third plane identification information indicates that the occupied child nodes of the current node do not form a plane in the third spatial direction, then the first plane position information of the current node in the first spatial direction can be further determined. ; Then encoding processing can be performed based on the first plane position information, that is, after writing the first plane identification information into the code stream, the first plane position information is written into the code stream.
  • a possible implementation is: if the first plane identification information indicates that the occupied child nodes of the current node constitute a plane in the first spatial direction, and the second plane identification information indicates that the occupied child nodes of the current node form a plane in the first spatial direction, If the second spatial direction does not form a plane, and the third plane identification information indicates that the occupied child node of the current node forms a plane in the third spatial direction, then the first plane position information of the current node in the first spatial direction and The third plane position information of the current node in the third spatial direction; then encoding processing can be performed based on the first plane position information and the third plane position information, that is, after the first plane identification information is written into the code stream, the first plane position information is written into the code stream. The plane position information is written into the code stream, and after the third plane identification information is written into the code stream, the third plane position information is written into the code stream.
  • a possible implementation is: if the first plane identification information indicates that the occupied child nodes of the current node do not form a plane in the first spatial direction, and the second plane identification information indicates that the occupied child nodes of the current node are in A plane is formed in the second spatial direction, and the third plane identification information indicates that the occupied child nodes of the current node do not form a plane in the third spatial direction, then the second plane position information of the current node in the second spatial direction can be further determined. ; Then encoding processing can be performed based on the second plane position information, that is, after writing the second plane identification information into the code stream, the second plane position information is written into the code stream.
  • a possible implementation is: if the first plane identification information indicates that the occupied child nodes of the current node do not form a plane in the first spatial direction, and the second plane identification information indicates that the occupied child nodes of the current node are in A plane is formed in the second spatial direction, and the third plane identification information indicates that the occupied child nodes of the current node constitute a plane in the third spatial direction, then the second plane position information of the current node in the second spatial direction and The third plane position information of the current node in the third spatial direction; then encoding processing can be performed based on the second plane position information and the third plane position information, that is, after the second plane identification information is written into the code stream, the second plane position information is written into the code stream. The plane position information is written into the code stream, and after the third plane identification information is written into the code stream, the third plane position information is written into the code stream.
  • a possible implementation is: if the first plane identification information indicates that the occupied child nodes of the current node do not form a plane in the first spatial direction, and the second plane identification information indicates that the occupied child nodes of the current node are in There is no plane formed in the second spatial direction, and the third plane identification information indicates that the occupied child nodes of the current node form a plane in the third spatial direction, then the third plane position information of the current node in the third spatial direction can be further determined. ; Then encoding processing can be performed based on the third plane position information, that is, after writing the third plane identification information into the code stream, the third plane position information is written into the code stream.
  • the first plane identification information indicates that the occupied child nodes of the current node constitute a plane in the first spatial direction
  • first plane position information After encoding the first plane identification information, encode the first plane position information of the current node in the first spatial direction; otherwise, after encoding the first plane identification information, skip the encoding of the first plane position information
  • second plane identification information indicates the current If the occupied child nodes of the node form a plane in the second spatial direction, then after encoding the second plane identification information, encode the second plane position information of the current node in the second spatial direction; otherwise, after encoding the second plane identification information , skip the encoding of the second plane position information
  • the third plane identification information indicates that the occupied child nodes of the current node constitute a plane in the third spatial direction, then after encoding the third plane identification information, encode the current node in the third The third plane position information in the spatial
  • the plane position information of the spatial direction can be based on the occupied child node of the current node in the spatial direction.
  • the position of the plane is indicated, that is, through the plane position information corresponding to the current node, the specific position of the plane formed by the occupied child nodes of the current node can be determined.
  • the plane position information can be used to determine the position of the plane formed by the occupied child nodes of the current node in the corresponding spatial direction.
  • the encoder can assign a value to the plane position information. For example, when the value of the plane position information is a numerical value, it is considered that the plane formed by the occupied child nodes of the current node in the corresponding spatial direction The position of is a high plane. When the value of the plane position information is another value, the position of the plane formed by the occupied child nodes of the current node in the corresponding spatial direction is considered to be a low plane.
  • the plane position information can be represented by a flag plane_position.
  • plane_position[k] can be used to indicate the position of the plane formed by the occupied child nodes of the current node in the k+1th spatial direction, and the value of k can be 0, 1, or 2.
  • plane_position[0] can represent the first plane position information of the current node in the first spatial direction
  • plane_position[1] can represent the second plane position of the current node in the second spatial direction
  • Information, plane_position[2] can represent the third plane position information of the current node in the third space direction
  • plane position information plane_position[k] may be 0 or 1.
  • the value of the plane position information is a first value (for example, 1), then it can be determined that the plane position information indicates that the occupied child nodes of the current node constitute a high plane in the corresponding spatial direction. ; If the value of the plane position information is the first value (for example, 0), then it can be determined that the plane position information indicates that the occupied child nodes of the current node constitute a low plane in the corresponding spatial direction.
  • the determined plane position information is the flag plane_position[k]
  • the value of the flag plane_position[k] is 0, it can be determined that the plane position information indicates the position of the current node.
  • the plane formed by the occupied child node in the k+1th spatial direction is a low plane.
  • the value of the flag plane_position[k] is 1, it can be determined that the plane position information indicates that the occupied child node of the current node is at the kth
  • the plane formed in the +1 spatial direction is the height plane.
  • the point cloud encoding method proposed through the above steps 201 to 203 is a point cloud plane pattern encoding method.
  • the flag bit all_planar_flag ie, all-planar identification information
  • all_planar_flag when the value of all_planar_flag is 1, it means that the occupied child nodes of the current node form a plane in three preset spatial directions.
  • the three plane identification information occ_single_plane[0], occ_single_plane[1] and occ_single_plane[2] The value of can be directly inferred to be 1, so the encoding end does not need to write the three plane identification information into the code stream, but on the decoding side, the three plane identification information of the current node in the three preset spatial directions can be directly defaulted. Indicate that the occupied child nodes of the current node form a plane in three preset spatial directions, or you can directly set the three plane identification information of the current node in the three preset spatial directions to respectively indicate that the occupied child nodes of the current node are in Three preset spatial directions form a plane.
  • the two plane identification information of two spatial directions among the three preset spatial directions can be determined first. , if the values of the two plane identification information are both 1, that is, the two plane identification information respectively indicate that the occupied child nodes of the current node form a plane in both spatial directions, then the value of the other plane identification information It can be directly inferred to be 0, so the encoding end does not need to write the plane identification information in the third spatial direction into the code stream, while on the decoding side, it can directly default to the identification information of the current node in the third spatial direction to indicate the current node.
  • the occupied child nodes of the current node form a plane in the third spatial direction, or you can directly set the plane identification information of the current node in the third spatial direction to indicate that the occupied child nodes of the current node form a plane in the third spatial direction.
  • Encoding the plane flag bit in this way can significantly reduce the number of binary symbols required to transmit the plane flag bit occ_single_plane[axisIdx] and improve the efficiency of plane mode geometric encoding and decoding.
  • the embodiment of the present application discloses a point cloud encoding method that determines three plane identification information of the current node in three preset spatial directions; if the three plane identification information indicates that the occupied child nodes of the current node are in three preset spatial directions, All planes are formed in the spatial directions, then the full plane identification information of the current node is set to indicate that the occupied child nodes of the current node all form planes in the three preset spatial directions, and the full plane identification information is written into the code stream; if three planes If the identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, then the full plane identification information of the current node is set to indicate that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions.
  • all_planar_flag When the value of all_planar_flag is 1, it means that the occupied child nodes of the current node all form a plane in three preset spatial directions. At this time, There is no need to transmit the three plane identification information of the current node in three preset spatial directions in the code stream; when the value of all_planar_flag is 0, it means that the occupied child nodes of the current node do not form a plane in at least one spatial direction. , at this time, you can first determine the two plane identification information of two spatial directions among the three preset spatial directions.
  • another embodiment of the present application proposes a point cloud encoding method and a point cloud decoding method.
  • the current node meets the plane qualification conditions in three directions (three preset spatial directions, such as x-axis direction, y-axis direction and z-axis direction), then all_planar_flag (full plane identification information) is encoded.
  • all_planar_flag 1
  • plane position information plane_position[0], plane_position[1] and plane_position[2] in three directions can be calculated based on the occupancy information of the occupied child node of the current node, and the Plane position information is encoded. If all_planar_flag is 0, you can first encode the plane identification information occ_single_plane[0] and occ_single_plane[1] in two directions, and infer occ_single_plane[2] based on occ_single_plane[0] and occ_single_plane[1].
  • occ_single_plane[0] and occ_single_plane[1] are both 1, occ_single_plane[0] and occ_single_plane[1] can be encoded as true, and the plane position information plane_position is calculated based on the occupancy information of the occupied child node of the current node. [0] and plane_position[1], and encode the plane position information.
  • occ_single_plane[0] and occ_single_plane[1] are not both 1, encode occ_single_plane[0], occ_single_plane[1] and occ_single_plane[2] respectively, and when occ_single_plane[axisIdx] is 1, calculate plane position information plane_position[axisIdx] , and encodes plane position information. Among them, 0 ⁇ axisIdx ⁇ 2.
  • occ_single_plane[0], occ_single_plane[1] and occ_single_plane[2] are directly inferred to be 1, or you can set occ_single_plane[0], occ_single_plane[1] and occ_single_plane[2] to 1, and then decode the plane position information plane_position[0], plane_position[1] and plane_position[2] from the code stream. If all_planar_flag is 0, occ_single_plane[0] and occ_single_plane[1] are decoded from the code stream.
  • occ_single_plane[0] and occ_single_plane[1] are both 1, then occ_single_plane[2] is directly inferred to be 0, or occ_single_plane[2] can be set to 0, and then the plane position can be decoded from the code stream Information plane_position[0] and plane_position[1].
  • occ_single_plane[0] and occ_single_plane[1] are not both 1, decode occ_single_plane[2] from the code stream, and according to whether occ_single_plane[axisIdx] is 1, decode the plane position information plane_position[axisIdx from the code stream accordingly. ]. Among them, 0 ⁇ axisIdx ⁇ 2.
  • the respective plane flags occ_single_plane[axisIdx] and plane position plane_position[axisIdx] are obtained from the code stream based on whether each direction meets the plane qualification conditions.
  • Figure 8 is a schematic diagram of the point cloud encoding method proposed by the embodiment of the present application.
  • all_planar_flag can be encoded. Among them, it is judged whether all_planar_flag is 1. If all_planar_flag is 1, it is determined that the full plane identification information indicates that the occupied child nodes of the current node all form a plane in three preset spatial directions.
  • occ_single_plane[2] can be inferred based on occ_single_plane[0] and occ_single_plane[1]. Among them, you can first determine whether occ_single_plane[0] and occ_single_plane[1] are both 1. If it is true, that is, occ_single_plane[0] and occ_single_plane[1] are both 1, there is no need to encode occ_single_plane[2], because at this time occ_single_plane[ 2] must be 0.
  • the plane position information plane_position[0] and plane_position[1] can be calculated based on the occupancy information of the occupied child node of the current node, and the plane position information is encoded; if it is not established, occ_single_plane[0 ] and occ_single_plane[1] are not both 1, then encode occ_single_plane[2], and determine whether occ_single_plane[2] is 1. If it is true, that is, when occ_single_plane[2] is 1, calculate the plane position information plane_position[2], and encodes plane position information.
  • the respective plane flags occ_single_plane[axisIdx] and plane position information plane_position[axisIdx] are determined based on whether each direction meets the plane qualification conditions, and the plane position information plane_position[axisIdx] is determined. coding.
  • Figure 9 is a schematic diagram of the point cloud decoding method proposed by the embodiment of the present application.
  • all_planar_flag can be decoded. Among them, it is judged whether all_planar_flag is 1. If all_planar_flag is 1, it is determined that the full plane identification information indicates that the occupied child nodes of the current node all form a plane in three preset spatial directions, indicating that the current node is a three-plane (i.e., the current node The positions of occupied child nodes form a plane in three directions).
  • the three plane identification information occ_single_plane[0], occ_single_plane[1] and occ_single_plane[2] can be directly set to 1, and the three plane position information plane_position[0], plane_position[1] and plane_position can be decoded from the code stream [2].
  • the plane identification information occ_single_plane[0] and occ_single_plane[1] in two directions can be decoded from the code stream first. Among them, determine whether occ_single_plane[0] is 1, if occ_single_plane[0] is 1, then decode the plane position information plane_position[0]; then, determine whether occ_single_plane[1] is 1, if occ_single_plane[1] is 1, then decode Plane position information plane_position[1].
  • occ_single_plane[0] and occ_single_plane[1] are both 1. If it is true, that is, occ_single_plane[0] and occ_single_plane[1] are both 1, there is no need to decode occ_single_plane[2], but directly occ_single_plane[2] is set to 0; if it is not true, that is, occ_single_plane[0] and occ_single_plane[1] are not both 1, then decode occ_single_plane[2] and determine whether it is true that occ_single_plane[2] is 1. If it is true, that is, occ_single_plane[ 2] is 1, the plane position information plane_position[2] is correspondingly decoded from the code stream.
  • the respective plane flags occ_single_plane[axisIdx] and plane position information plane_position[axisIdx] are obtained from the code stream based on whether each direction meets the plane qualification conditions. .
  • the flag bit all_planar_flag (ie, all-planar identification information) is introduced into the point cloud geometric plane encoding mode.
  • all_planar_flag when the value of all_planar_flag is 1, it means that the occupied child nodes of the current node form a plane in three preset spatial directions.
  • the three plane identification information occ_single_plane[0], occ_single_plane[1] and occ_single_plane[2] The value of can be directly inferred to be 1, that is, the three plane identification information of the current node in the three preset spatial directions can be directly defaulted to respectively indicate that the occupied child nodes of the current node form a plane in the three preset spatial directions, or , the three plane identification information of the current node in three preset spatial directions can be directly set to respectively indicate that the occupied child nodes of the current node constitute a plane in the three preset spatial directions.
  • all_planar_flag When the value of all_planar_flag is 0, it means that the occupied child nodes of the current node do not form a plane in at least one spatial direction. At this time, you can first decode and determine the two plane identifiers of two of the three preset spatial directions.
  • the value of the other plane identification information can be directly inferred to be 0, that is, the identification information of the current node in the third spatial direction can be directly defaulted to indicate that the occupied child nodes of the current node form a plane in the third spatial direction, or the current node can be directly set to be in the third spatial direction.
  • the plane identification information in three spatial directions indicates that the occupied child nodes of the current node constitute a plane in the third spatial direction.
  • the number of binary symbols required to transmit the plane flag bit occ_single_plane[axisIdx] can be significantly reduced, and the efficiency of plane mode geometric encoding and decoding can be improved.
  • the embodiment of the present application discloses a point cloud encoding and decoding method.
  • the decoder decodes the code stream and determines the full-plane identification information of the current node; if the full-plane identification information indicates that the occupied child nodes of the current node are in three preset spatial directions, all form a plane, decode the code stream, determine the three plane position information of the current node in three preset spatial directions, and determine the reconstructed geometric information of the current node based on the three plane position information; if the full plane identification information indicates the current If the occupied child nodes of the node do not all form a plane in the three preset spatial directions, the code stream is decoded to determine the first plane identification information of the current node in the first spatial direction and the second plane identification information of the current node in the second spatial direction.
  • the plane identification information and determine the reconstructed geometric information of the current node based on the first plane identification information and the second plane identification information; wherein the first spatial direction and the second spatial direction are any two different among the three preset spatial directions. direction. Determine the three plane identification information of the current node in the three preset spatial directions; if the three plane identification information indicates that the occupied child nodes of the current node all form a plane in the three preset spatial directions, set all the current node's The plane identification information indicates that the occupied child nodes of the current node form a plane in three preset spatial directions, and the full plane identification information is written into the code stream; if the three plane identification information indicates that the occupied child nodes of the current node are in three If the preset spatial directions do not all form a plane, then the full plane identification information of the current node is set to indicate that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, and the full plane identification information is written into the code stream.
  • the all-planar identification information all_planar_flag is introduced.
  • the value of all_planar_flag is 1, it means that the occupied child nodes of the current node all form a plane in three preset spatial directions.
  • the value of all_planar_flag is 0, it means that the occupied child nodes of the current node do not form a plane in at least one spatial direction.
  • Figure 10 is a schematic structural diagram of a decoder.
  • the decoder 300 proposed in this embodiment of the present application may include: a decoding part 301, a first Determine part 302,
  • the decoding part 301 is configured to decode the code stream
  • the first determining part 302 is configured to determine the full-plane identification information of the current node
  • the decoding part 301 is also configured to decode the code stream if the full plane identification information indicates that the occupied child nodes of the current node all form planes in three preset spatial directions;
  • the first determining part 302 is further configured to determine three plane position information of the current node in the three preset spatial directions, and determine the reconstruction of the current node based on the three plane position information. geometric information;
  • the decoding part 301 is also configured to decode the code stream if the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in three preset spatial directions;
  • the first determining part 302 is further configured to determine the first plane identification information of the current node in the first spatial direction and the second plane identification information of the current node in the second spatial direction, and determine the reconstructed geometric information of the current node according to the first plane identification information and the second plane identification information; wherein the first spatial direction and the second spatial direction are the three preset Any two different directions in space.
  • Figure 11 is a schematic diagram 2 of the structure of the decoder.
  • the decoder 300 proposed in the embodiment of the present application can also include a first processor 303 and a first memory 304 that stores instructions executable by the first processor 303. , the first communication interface 305, and the first bus 306 for connecting the first processor 303, the first memory 304 and the first communication interface 305.
  • the above-mentioned first processor 303 is used to decode the code stream and determine the full-plane identification information of the current node; if the full-plane identification information indicates the occupied child node of the current node, If planes are formed in the three preset spatial directions, the code stream is decoded, the three plane position information of the current node in the three preset spatial directions is determined, and the three plane position information is determined based on the three plane position information. The reconstructed geometric information of the current node; if the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, then decode the code stream to determine where the current node is.
  • the first plane identification information in the first spatial direction and the second plane identification information of the current node in the second spatial direction are determined based on the first plane identification information and the second plane identification information.
  • Figure 12 is a schematic diagram 1 of the composition structure of an encoder.
  • the encoder 400 proposed in the embodiment of the present application may include: a second determining part 401, an encoding part 402,
  • the second determining part 401 is configured to determine three plane identification information of the current node in three preset spatial directions; if the three plane identification information indicates that the occupied child node of the current node is in the three preset spatial directions, If all three preset spatial directions form a plane, then setting the full plane identification information of the current node indicates that the occupied child nodes of the current node all form a plane in three preset spatial directions;
  • the second determining part 401 is also configured to set the full plane of the current node if the three plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions.
  • the identification information indicates that the occupied child nodes of the current node do not all form a plane in three preset spatial directions;
  • the encoding part 402 is configured to write the full-plane identification information into a code stream.
  • Figure 13 is a schematic diagram 2 of the composition structure of the encoder.
  • the encoder 400 proposed in the embodiment of the present application can also include a second processor 403 and a second memory 404 that stores instructions executable by the second processor 403. , the second communication interface 405, and the second bus 406 for connecting the second processor 403, the second memory 404 and the second communication interface 405.
  • the above-mentioned second processor 403 is used to determine the full-plane identification information of the current node, and write the full-plane identification information into the code stream; if the full-plane identification information indicates If the occupied child nodes of the current node all form planes in the three preset spatial directions, then the three plane position information of the current node in the three preset spatial directions are determined, and the three plane position information are determined.
  • the plane position information is written into the code stream; if the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, it is determined that the current node is in the first spatial direction.
  • the first plane identification information on the current node and the second plane identification information of the current node in the second spatial direction are encoded according to the first plane identification information and the second plane identification information; wherein, The first spatial direction and the second spatial direction are any two different directions among the three preset spatial directions.
  • the "unit" may be part of a circuit, part of a processor, part of a program or software, etc., and of course may also be a module, or may be non-modular.
  • each component in this embodiment can be integrated into one processing unit, or each unit can exist physically alone, or two or more units can be integrated into one unit.
  • the above integrated units can be implemented in the form of hardware or software function modules.
  • the integrated unit is implemented in the form of a software function module and is not sold or used as an independent product, it can be stored in a computer-readable storage medium.
  • the technical solution of this embodiment is essentially either The part that contributes to the existing technology or all or part of the technical solution can be embodied in the form of a software product.
  • the computer software product is stored in a storage medium and includes a number of instructions to make a computer device (can It is a personal computer, server, or network device, etc.) or processor that executes all or part of the steps of the method described in this embodiment.
  • the aforementioned storage media include: U disk, mobile hard disk, Read Only Memory (ROM), Random Access Memory (RAM), magnetic disk or optical disk and other media that can store program code.
  • non-volatile memory can be read-only memory (Read-Only Memory, ROM), programmable read-only memory (Programmable ROM, PROM), erasable programmable read-only memory (Erasable PROM, EPROM), electrically removable memory. Erase programmable read-only memory (Electrically EPROM, EEPROM) or flash memory. Volatile memory may be Random Access Memory (RAM), which is used as an external cache.
  • RAM Random Access Memory
  • RAM static random access memory
  • DRAM dynamic random access memory
  • DRAM synchronous dynamic random access memory
  • SDRAM double data rate synchronous dynamic random access memory
  • Double Data Rate SDRAM DDRSDRAM
  • enhanced SDRAM ESDRAM
  • Synchlink DRAM SLDRAM
  • Direct Rambus RAM DRRAM
  • the processor may be an integrated circuit chip with signal processing capabilities.
  • each step of the above method can be completed by instructions in the form of hardware integrated logic circuits or software in the processor.
  • the above-mentioned processor can be a general-purpose processor, a digital signal processor (Digital Signal Processor, DSP), an application specific integrated circuit (Application Specific Integrated Circuit, ASIC), an off-the-shelf programmable gate array (Field Programmable Gate Array, FPGA) or other available processors.
  • DSP Digital Signal Processor
  • ASIC Application Specific Integrated Circuit
  • FPGA Field Programmable Gate Array
  • programmed logic devices discrete gate or transistor logic devices, discrete hardware components.
  • a general-purpose processor may be a microprocessor or the processor may be any conventional processor, etc.
  • the steps of the method disclosed in conjunction with the embodiments of the present application can be directly implemented by a hardware decoding processor, or executed by a combination of hardware and software modules in the decoding processor.
  • the software module can be located in random access memory, flash memory, read-only memory, programmable read-only memory or electrically erasable programmable memory, registers and other mature storage media in this field.
  • the storage medium is located in the memory, and the processor reads the information in the memory and completes the steps of the above method in combination with its hardware.
  • the embodiments described in this application can be implemented using 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 device (Programmable Logic Device, PLD), Field-Programmable Gate Array (FPGA), general-purpose processor, controller, microcontroller, microprocessor, and other devices used to perform the functions described in this application electronic unit or combination thereof.
  • ASIC Application Specific Integrated Circuits
  • DSP Digital Signal Processing
  • DSP Device Digital Signal Processing Device
  • DSPD Digital Signal Processing Device
  • PLD programmable Logic Device
  • FPGA Field-Programmable Gate Array
  • the technology described in this application can be implemented through modules (such as procedures, functions, etc.) that perform the functions described in this application.
  • Software code may be stored in memory and executed by a processor.
  • the memory can be implemented in the processor or external to the processor.
  • the embodiment of the present application provides a codec.
  • the decoder decodes the code stream and determines the full-plane identification information of the current node; if the full-plane identification information indicates that the occupied child nodes of the current node are formed in three preset spatial directions, plane, then decode the code stream, determine the three plane position information of the current node in three preset spatial directions, and determine the reconstructed geometric information of the current node based on the three plane position information; if the full plane identification information indicates the current node's If the occupied child nodes do not all form planes in the three preset spatial directions, the code stream is decoded to determine the first plane identification information of the current node in the first spatial direction and the second plane identification information of the current node in the second spatial direction.
  • the encoder determines the three plane identification information of the current node in three preset spatial directions; if the three plane identification information indicates that the occupied child nodes of the current node all form a plane in the three preset spatial directions, the current node is set The full-plane identification information indicates that the occupied sub-nodes of the current node form a plane in three preset spatial directions, and the full-plane identification information is written into the code stream; if the three plane identification information indicates that the occupied sub-nodes of the current node are in If the three preset spatial directions do not all form a plane, then the full plane identification information of the current node is set to indicate that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, and the full plane identification information is written into
  • the all-planar identification information all_planar_flag is introduced.
  • the value of all_planar_flag is 1, it means that the occupied child nodes of the current node all form a plane in three preset spatial directions.
  • the value of all_planar_flag is 0, it means that the occupied child nodes of the current node do not form a plane in at least one spatial direction.
  • Embodiments of the present application provide a computer storage medium for use in the encoder 300.
  • the computer storage medium stores a point cloud decoding program.
  • the point cloud decoding program is executed by a processor, the method described in any one of the preceding embodiments is implemented. .
  • the program instructions corresponding to a point cloud decoding method in this embodiment can be stored on storage media such as optical disks, hard disks, and U disks.
  • storage media such as optical disks, hard disks, and U disks.
  • the code stream is decoded to determine the current node's position in the three preset spatial directions.
  • three plane position information and determine the reconstructed geometric information of the current node based on the three plane position information;
  • the code stream is decoded to determine the first node of the current node in the first spatial direction.
  • Plane identification information and second plane identification information of the current node in the second spatial direction and determining the reconstructed geometric information of the current node based on the first plane identification information and the second plane identification information ;
  • the first spatial direction and the second spatial direction are any two different directions among the three preset spatial directions.
  • An embodiment of the present application provides a computer storage medium for use in the encoder 400.
  • the computer storage medium stores a point cloud encoding program.
  • the point cloud encoding program is executed by a processor, the method described in any one of the preceding embodiments is implemented. .
  • the program instructions corresponding to a point cloud encoding method in this embodiment can be stored on storage media such as optical disks, hard disks, and U disks.
  • storage media such as optical disks, hard disks, and U disks.
  • the full plane identification information indicates that the occupied child nodes of the current node all form a plane in three preset spatial directions, then determine the three plane positions of the current node in the three preset spatial directions. information, and write the three plane position information into the code stream;
  • the full plane identification information indicates that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, determine the first plane identification information of the current node in the first spatial direction and The second plane identification information of the current node in the second spatial direction is encoded according to the first plane identification information and the second plane identification information; wherein the first spatial direction and the second plane identification information are The second spatial direction is any two different directions among the three preset spatial directions.
  • Embodiments of the present application disclose a point cloud encoding and decoding method, a codec and a computer storage medium.
  • the decoder decodes the code stream and determines the full plane identification information of the current node; if the full plane identification information indicates the occupied child nodes of the current node If planes are formed in the three preset spatial directions, the code stream is decoded to determine the three plane position information of the current node in the three preset spatial directions, and the reconstructed geometric information of the current node is determined based on the three plane position information.
  • the code stream is decoded to determine the first plane identification information of the current node in the first spatial direction and the current node in second plane identification information in the second spatial direction, and determine the reconstructed geometric information of the current node based on the first plane identification information and the second plane identification information; wherein the first spatial direction and the second spatial direction are three preset Any two different directions in space.
  • the three plane identification information of the current node in the three preset spatial directions if the three plane identification information indicates that the occupied child nodes of the current node all form a plane in the three preset spatial directions, set all the current node's
  • the plane identification information indicates that the occupied child nodes of the current node form a plane in three preset spatial directions, and the full plane identification information is written into the code stream; if the three plane identification information indicates that the occupied child nodes of the current node are in three If the preset spatial directions do not all form a plane, then the full plane identification information of the current node is set to indicate that the occupied child nodes of the current node do not all form a plane in the three preset spatial directions, and the full plane identification information is written into the code stream.
  • the all-planar identification information all_planar_flag is introduced.
  • the value of all_planar_flag is 1, it means that the occupied child nodes of the current node all form a plane in three preset spatial directions.
  • the value of all_planar_flag is 0, it means that the occupied child nodes of the current node do not form a plane in at least one spatial direction.

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本申请实施例公开了一种点云解码方法,解码器解码码流,确定当前节点的全平面标识信息;若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流,确定当前节点在三个预设空间方向上的三个平面位置信息,并基于三个平面位置信息确定当前节点的重构几何信息;若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流,确定当前节点在第一空间方向上的第一平面标识信息和当前节点在第二空间方向上的第二平面标识信息,并根据第一平面标识信息和第二平面标识信息确定当前节点的重构几何信息;其中,第一空间方向和第二空间方向为三个预设空间方向中的任意两个不同的方向。

Description

点云编解码方法、编解码器及计算机存储介质 技术领域
本申请实施例涉及视频编解码技术领域,尤其涉及一种点云编解码方法、编解码器及计算机存储介质。
背景技术
在基于几何的点云压缩(Geometry-based Point Cloud Compression,G-PCC)框架中,点云的几何信息和每个点云所对应的属性信息是分开进行编码的。几何编码完成后,对几何信息进行重建,而属性信息的编码将依赖于重建的几何信息。
在点云G-PCC编码器框架中,存在两种几何信息编码方法,即基于多叉树的几何编码和基于预测树几何编码。
多叉树划分过程中引入平面编码模式,而常见的多叉树几何编码的平面编码模式,针对平面标志位进行编码时,没有结合点云中节点的实际情况,存在复杂度高、编码效率低的问题,降低了视频压缩性能。
发明内容
本申请实施例提供一种点云编解码方法、编解码器及计算机存储介质,能够降低复杂度,提高了解码效率,提升了视频压缩性能。
本申请实施例的技术方案可以如下实现:
第一方面,本申请实施例提供了一种点云解码方法,应用于解码器,该方法包括:
解码码流,确定当前节点的全平面标识信息;
若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流,确定所述当前节点在所述三个预设空间方向上的三个平面位置信息,并基于所述三个平面位置信息确定所述当前节点的重构几何信息;
若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流,确定所述当前节点在所述第一空间方向上的第一平面标识信息和所述当前节点在所述第二空间方向上的第二平面标识信息,并根据所述第一平面标识信息和所述第二平面标识信息确定所述当前节点的重构几何信息;其中,所述第一空间方向和所述第二空间方向为所述三个预设空间方向中的任意两个不同的方向。
第二方面,本申请实施例提供了一种点云编码方法,应用于编码器,所述方法包括:
确定当前节点在三个预设空间方向上的三个平面标识信息;
若所述三个平面标识信息指示所述当前节点的被占据子节点在所述三个预设空间方向上均构成平面,则设置所述当前节点的全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,将所述全平面标识信息写入码流;
若所述三个平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则设置所述当前节点的全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,将所述全平面标识信息写入码流。
第三方面,本申请实施例提供了一种解码器,所述解码器包括:解码部分,第一确定部分,
所述解码部分,配置为解码码流;
所述第一确定部分,配置为确定当前节点的全平面标识信息;
所述解码部分,还配置为若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流;
所述第一确定部分,还配置为确定所述当前节点在所述三个预设空间方向上的三个平面位置信息,并基于所述三个平面位置信息确定所述当前节点的重构几何信息;
所述解码部分,还配置为若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流;
所述第一确定部分,还配置为确定所述当前节点在所述第一空间方向上的第一平面标识信息和所述当前节点在所述第二空间方向上的第二平面标识信息,并根据所述第一平面标识信息和所述第二平面标识信息确定所述当前节点的重构几何信息;其中,所述第一空间方向和所述第二空间方向为所述三个预设空间方向中的任意两个不同的方向。
第四方面,本申请实施例提供了一种解码器,所述解码器包括第一处理器、存储有所述第一处理器可执行指令的第一存储器,当所述指令被执行时,实现如上所述的点云解码方法。
第五方面,本申请实施例提供了一种编码器,所述编码器包括:第二确定部分,编码部分,
所述第二确定部分,配置为确定当前节点在三个预设空间方向上的三个平面标识信息;若所述三个平面标识信息指示所述当前节点的被占据子节点在所述三个预设空间方向上均构成平面,则设置所述当前节点的全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面;
所述第二确定部分,还配置为若所述三个平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则设置所述当前节点的全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面
所述编码部分,配置为将所述全平面标识信息写入码流。
第六方面,本申请实施例提供了一种编码器,所述编码器包括第二处理器、存储有所述第二处理器可执行指令的第二存储器,当所述指令被执行时,所述第二处理器执行时实现如上所述的点云编码方法。
第七方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的点云解码方法和点云编码方法。
本申请实施例公开了一种点云编解码方法、编解码器及计算机存储介质,解码器解码码流,确定当前节点的全平面标识信息;若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流,确定当前节点在三个预设空间方向上的三个平面位置信息,并基于三个平面位置信息确定当前节点的重构几何信息;若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流,确定当前节点在第一空间方向上的第一平面标识信息和当前节点在第二空间方向上的第二平面标识信息,并根据第一平面标识信息和第二平面标识信息确定当前节点的重构几何信息;其中,第一空间方向和第二空间方向为三个预设空间方向中的任意两个不同的方向。确定当前节点在三个预设空间方向上的三个平面标识信息;若三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,将全平面标识信息写入码流;若三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,则设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,将全平面标识信息写入码流。由此可见,在本申请的实施例中,引入全平面标识信息all_planar_flag,其中,all_planar_flag的取值为1时表示当前节点的被占据子节点在三个预设空间方向上都构成平面,此时不需要再在码流中传输当前节点在三个预设空间方向上的三个平面标识信息;all_planar_flag的取值为0时表示当前节点的被占据子节点在至少有一个空间方向上不构成平面,此时可以先确定三个预设空间方向中的两个空间方向的两个平面标识信息,如果这两个平面标识信息分别指示当前节点的被占据子节点在这两个空间方向均构成平面,那么不需要再在码流中传输另一个平面标识信息。可见,本申请实施例提出的点云编解码方法,能够降低复杂度,提高了解码效率,提升了视频压缩性能。
附图说明
图1为G-PCC编码器的框架示意图;
图2为G-PCC解码器的框架示意图;
图3为多叉树节点平面位置示意图一;
图4为多叉树节点平面位置示意图二;
图5为多叉树节点平面位置示意图三;
图6为本申请实施例提出的点云解码方法的实现流程示意图;
图7为本申请实施例提出的点云编码方法的实现流程示意图;
图8为本申请实施例提出的点云编码方法示意图;
图9为本申请实施例提出的点云解码方法示意图;
图10为解码器的组成结构示意图一;
图11为解码器的组成结构示意图二;
图12为编码器的组成结构示意图一;
图13为编码器的组成结构示意图二。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
这里,点云是物体表面的三维表现形式,通过光电雷达、激光雷达、激光扫描仪、多视角相机等采集设备,可以采集得到物体表面的点云(数据)。
点云(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进行独立编码。在slice中,点云的几何信息和点云中的点所对应的属性信息是分开进行编码的。G-PCC编码器首先对几何信息进行编码。编码器对几何信息进行坐标转换,使点云全都包含在一个bounding box中;然后再进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点的几何信息相同,根据参数来决定是否移除重复点,将不去除重复点称为几何无损压缩,去除重复点称为几何有损压缩,而量化和移除重复点这一过程又被称为体素化过程。接下来,对bounding box进行基于多叉树(如八叉树、四叉树、二叉树)的划分。根据多叉树划分层级深度的不同,几何信息的编码又分为基于多叉树和基于预测树的两种框架。
在基于多叉树的几何信息编码框架中,将包围盒等分为多个子立方体,并记录子立方体的占位比特(其中,1为非空,0为空),对非空的子立方体继续进行等分,通常划分得到的叶子结点为1×1×1 的单位立方体时停止划分。在这个过程中,利用结点(node)与周围结点的空间相关性,对占位比特进行帧内预测,最后进行算术编码(CABAC),生成二进制的几何比特流,即几何码流。
G-PCC编码器在完成几何信息编码后,对几何信息进行重建,并使用重建的几何信息对点云的属性信息进行编码。其中,在基于多叉树的几何信息编码框架中,几何无损压缩和几何有损压缩在多叉树划分完成时均存在几何重建过程。目前,点云的属性编码主要是对点云中点的颜色信息进行编码。首先,编码器可以对点的颜色信息进行颜色空间转换,例如,当输入点云中点的颜色信息使用RGB颜色空间表示时,编码器可以将颜色信息从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色,使得未编码的属性信息与重建的几何信息对应起来。在颜色信息编码中,主要有两种变换方法,一种方法是依赖于LOD划分的基于距离的提升变换,另一种方法是直接进行RAHT变换,这两种方法都会将颜色信息从空间域变换到频域,得到高频系数和低频系数,最后对系数进行量化和算术编码,生成二进制的属性比特流,即属性码流。
在点云G-PCC解码器框架中,点云的几何比特流和点云中的点所对应的属性比特流是分开进行解码的。G-PCC解码器对几何比特流进行解码。解码器对几何比特流进行算术解码,解码出点云的bounding box和基于多叉树的占位比特(1为非空,0为空);根据编码时多叉树划分层级深度的不同,几何信息的解码又分为基于多叉树和基于预测树的两种框架。
图1为G-PCC编码器的框架示意图,如图1所示的G-PCC编码器的框架示意图中,应用于点云编码器,针对待编码的点云数据,首先通过slice划分,将点云数据划分为多个slice。在每一个slice中,点云的几何信息和每个点云所对应的属性信息是分开进行编码的。在几何编码过程中,对几何信息进行坐标转换,使点云全都包含在一个bounding box(包围盒)中,然后再进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点云的几何信息相同,于是再基于参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化过程。接着对bounding box进行多叉树划分。在基于多叉树的几何信息编码流程中,将包围盒等分为多个子立方体,对非空的(包含点云中的点)的子立方体继续进行等分,直到划分得到的叶子结点为1×1×1的单位立方体时停止划分,对叶子结点中的点进行算术编码,生成二进制的几何比特流,即几何码流。
在属性编码过程中,几何编码完成,对几何信息进行重建后,进行颜色转换,将颜色信息(即属性信息)从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色,使得未编码的属性信息与重建的几何信息对应起来。属性编码主要针对颜色信息进行,在颜色信息编码过程中,主要有两种变换方法,一是依赖于细节层次(Level of Detail,LOD)划分的基于距离的提升变换,二是直接进行区域自适应分层变换(Regionadaptive Hierarchal Transform,RAHT)的变换,这两种方法都会将颜色信息从空间域转换到频域,通过变换得到高频系数和低频系数,最后对系数进行量化(即量化系数),最后,将经过多叉树划分及表面拟合的几何编码数据与量化系数处理属性编码数据进行slice合成后,依次编码每个block的vertex坐标(即算数编码),生成二进制的属性比特流,即属性码流。
图2为G-PCC解码器的框架示意图,如图2所示,应用于点云解码器,针对所获取的二进制码流,获取二进制码流后,针对二进制码流中的几何比特流和属性比特流分别进行独立解码。在对几何比特流的解码时,通过算术解码-合成多叉树-表面拟合-重建几何-坐标转换逆过程,得到点云的几何信息。这里,在表面拟合之后,可以选择执行重建几何的步骤,也可以选择执行Scalable-重建几何的步骤,其主要是根据是否进行spatial scalability功能来确定的。另外,在对属性比特流的解码时,通过算术解码-反量化-基于LOD的逆提升或者基于RAHT的逆变换-颜色转换逆过程,得到点云的属性信息,基于几何信息和属性信息还原待编码的点云数据的三维图像模型。
多叉树划分过程中引入平面编码模式,该过程位于多叉树几何编码过程中,应用于如图1所示的多叉树划分和表面拟合部分。该方法对符合平面资格判定条件的节点进行高效编码。在平面编码模式中,首先,引入一个标志位occ_single_plane,该标志位用于表示当前节点中被占据的子节点是否属于同一个平面。如果occ_single_plane为1,那么需要一个额外的标志位plane_position,该标志位用二进制符号(如0或1)表示该平面是位于低平面还是高平面,比如,plane_position为0表示低平面,plane_position为1表示高平面。
示例性的,图3为多叉树节点平面位置示意图一,图4为多叉树节点平面位置示意图二,图5为多叉树节点平面位置示意图三,如图3所示,当前节点中被占据的子节点均位于低平面,如图4所示,当前节点中被占据的子节点均位于高平面,如图5所示,当前节点中被占据的子节点均位于非平面。
平面编码模式初次引入时只是针对一个方向(即z方向)的平面,后来考虑到不同点云的分布情况不同,扩展为三个方向(即x或y或z方向)的平面。具体的,首先,引入标志位occ_single_plane[axisIdx],该标志位用于表示当前节点中被占据的子节点是否构成第axisIdx个轴方向上的平面。如果occ_single_plane[axisIdx]为0,则表示当前节点中被占据的子节点位于与第axisIdx个轴垂直的另外两个 平面方向。
在常见的多叉树几何编码过程的平面编码模式中,首先需要对节点进行平面资格判定,然后对满足平面资格判定条件的节点进行平面模式判定。在平面模式判定过程中,引入平面标志位occ_single_plane[axisIdx](其中,0≤axisIdx≤2),分别判断该节点被占据的子节点在三个方向(即x、y和z三个方向)是否为平面。假设一个节点被占据的子节点在三个方向均满足平面资格判定条件,那么具体的判定准则如下:
若occ_single_plane[0]为1,occ_single_plane[1]和occ_single_plane[2]都为0,则说明该节点被占据的子节点位于x平面;
若occ_single_plane[1]为1,occ_single_plane[0]和occ_single_plane[2]都为0,则说明该节点被占据的子节点位于y平面;
若occ_single_plane[2]为1,occ_single_plane[0]和occ_single_plane[1]都为0,则说明该节点被占据的子节点位于z平面;
若occ_single_plane[0]为0,occ_single_plane[1]和occ_single_plane[2]都为1,则说明该节点被占据的子节点位于y-z平面;
若occ_single_plane[1]为0,occ_single_plane[0]和occ_single_plane[2]都为1,则说明该节点被占据的子节点位于x-z平面;
若occ_single_plane[2]为0,occ_single_plane[0]和occ_single_plane[1]都为1,则说明该节点被占据的子节点位于x-y平面;
若occ_single_plane[0]、occ_single_plane[1]和occ_single_plane[2]都为1,则说明该节点被占据的子节点位于xyz平面;
若occ_single_plane[0]、occ_single_plane[1]和occ_single_plane[2]都为0,则说明该节点被占据的子节点不是一个平面。
判定完成后,需要对该平面标志位进行编码,进一步的,occ_single_plane[axisIdx]为1时,需要一个额外二进制符号(如0或1)编码标志位plane_position[axisIdx],该标志位为0表示该节点被占据的子节点位于第axisIdx个轴的低平面,该标志位为1表示该节点被占据的子节点位于第axisIdx个轴的高平面。
在上述方法中,当一个节点被占据的子节点在三个方向都满足平面资格判定条件时,需要使用三个二进制符号(如0或1)编码平面标志位,即occ_single_plane[0]、occ_single_plane[1]和occ_single_plane[2],然而一般情况下,当一个节点被占据的子节点在三个方向都满足平面资格判定条件时,该节点在三个方向上大概率都是平面,即occ_single_plane[0]、occ_single_plane[1]和occ_single_plane[2]都为1。
也就是说,常见的多叉树几何编码的平面编码模式,针对平面标志位进行编码时,没有结合点云中节点的实际情况,存在复杂度高、编码效率低的问题,降低了视频压缩性能。
为了解决上述问题,在本申请的实施例中,在本申请的实施例中,引入全平面标识信息all_planar_flag,其中,all_planar_flag的取值为1时表示当前节点的被占据子节点在三个预设空间方向上都构成平面,此时不需要再在码流中传输当前节点在三个预设空间方向上的三个平面标识信息;all_planar_flag的取值为0时表示当前节点的被占据子节点在至少有一个空间方向上不构成平面,此时可以先确定三个预设空间方向中的两个空间方向的两个平面标识信息,如果这两个平面标识信息分别指示当前节点的被占据子节点在这两个空间方向均构成平面,那么不需要再在码流中传输另一个平面标识信息。可见,本申请实施例提出的点云编解码方法,能够降低复杂度,提高了解码效率,提升了视频压缩性能。
本申请实施例中的点云编码方法,可以应用在如图1所示的多叉树划分及表面拟合部分。另外,本申请实施例中的点云解码方法,还可以应用在如图2所示的重构多叉树及重构表面估计。也就是说,本申请实施例中的点云编解码方法,既可以应用于编码器,也可以应用于解码器,甚至还可以同时应用于编码器和解码器,但是本申请实施例不作具体限定。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请实施例提出的了一种点云解码方法,图6为本申请实施例提出的点云解码方法的实现流程示意图,如图6所示,解码器进行点云解码处理的方法可以包括以下步骤:
步骤101、解码码流,确定当前节点的全平面标识信息。
在本申请的实施例中,解码器可以先解码码流,然后确定当前节点的全平面标识信息。其中,该全平面标识信息可以对当前节点的被占据子节点在三个预设空间方向上是否均构成平面进行指示,即通过当前节点所对应的全平面标识信息,可以确定出当前节点的被占据子节点所构成的平面是否均垂直于三个预设空间方向。
可以理解的是,在本申请的实施例中,如果当前节点的被占据子节点在三个预设空间方向中的一个空间方向上不构成平面,那么可以认为当前节点的被占据子节点所构成的平面垂直于该空间方向。
需要说明的是,在本申请的实施例中,全平面标识信息可以用于确定当前节点的被占据子节点在三个预设空间方向上是否均构成平面。具体地,在编码侧,编码器可以对该全平面标识信息进行赋值,例如,当全平面标识信息的取值为一个数值时,认为当前节点的被占据子节点在三个预设空间方向上均构成平面,当全平面标识信息的取值为另一个数值时,认为当前节点的被占据子节点在三个预设空间方向上不全构成平面。
也就是说,在本申请的实施例中,在解码器中,在进行当前节点的被占据子节点在三个预设空间方向上是否均构成平面的确定时,可以是由全平面标识信息确定的。其中,全平面标识信息可以通过一个标志位all_plane_flag进行表示,也可以通过另一个标志位not_all_plane_flag进行表示。
可以理解的是,在本申请的实施例中,全平面标识信息的取值可以为0或1。
相应的,在本申请的实施例中,如果确定的全平面标识信息为标志位all_plane_flag,那么,当标志位all_plane_flag的取值为0时,可以确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,当标志位all_plane_flag的取值为1时,可以确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面。
相应的,在本申请的实施例中,如果确定的全平面标识信息为标志位not_all_plane_flag,那么,当标志位not_all_plane_flag的取值为1时,可以确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,当标志位all_plane_flag的取值为0时,可以确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面。
进一步地,在本申请的实施例中,三个预设空间方向可以为空间中的三个互相垂直的不同方向,以空间坐标轴为例,三个预设空间方向可以分别为x轴方向,y轴方向以及z轴方向。
可以理解的是,在本申请的实施例中,当前节点可以是待解码点云中的点。
进一步地,在本申请的实施例中,在进行全平面标识信息的获取之前,可以先对当前节点在三个预设空间方向上是否符合平面资格判定条件分别进行判断,如果当前节点在三个预设空间方向上均符合平面资格判定条件,那么再执行全平面标识信息的确定流程。
相应的,在本申请的实施例中,在对当前节点在三个预设空间方向上是否符合平面资格判定条件分别进行判断之后,如果当前节点在三个预设空间方向上不都符合平面资格判定条件,那么便不再执行全平面标识信息的确定流程,而是对于符合平面资格判定条件的一个或两个空间方向,解码码流,确定当前节点在该符合平面资格判定条件的一个或两个空间方向上的平面标识信息;进而可以根据当前节点在一个或两个空间方向上的平面标识信息确定当前节点的重构几何信息。
也就是说,在本申请的实施例中,通过解码码流确定当前节点的全平面标识信息的前提条件是当前节点在三个预设空间方向上是否符合平面资格判定条件。
步骤102、若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流,确定当前节点在三个预设空间方向上的三个平面位置信息,并基于三个平面位置信息确定当前节点的重构几何信息。
在本申请的实施例中,在确定当前节点的全平面标识信息之后,如果全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流,确定当前节点在三个预设空间方向上的三个平面位置信息,然后便可以基于三个平面位置信息确定当前节点的重构几何信息。
需要说明的是,在本申请的实施例中,如果全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,那么可以说明当前节点的被占据子节点的位置在三个预设空间方向上都构成平面,即确定当前节点是一个三平面节点,因此可以认为当前节点的被占据子节点在任意一个预设空间方向上均可以构成平面。
可以理解的是,在本申请的实施例中,对于三个预设空间方向中的一个空间方向,如果已经确定当前节点的被占据子节点在该预设空间方向上可以构成平面,那么可以直接默认当前节点在该空间方向的平面标识信息指示当前节点的被占据子节点在该空间方向上构成平面,因此不需要进行当前节点在该空间方向的平面标识信息的解码处理,而是继续确定当前节点在三个预设空间方向上的三个平面位置信息,然后便可以基于三个平面位置信息确定当前节点的重构几何信息。
进一步地,在本申请的实施例中,如果全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,那么可以设置当前节点在三个预设空间方向上的三个平面标识信息分别指示当前节点的被占据子节点在三个预设空间方向上构成平面。
可以理解的是,在本申请的实施例中,对于三个预设空间方向中的一个空间方向,如果已经确定当前节点的被占据子节点在该空间方向上可以构成平面,那么可以直接设置当前节点在该空间方向的平面 标识信息指示当前节点的被占据子节点在该空间方向上构成平面,因此不需要进行当前节点在该空间方向的平面标识信息的解码处理,而是继续确定当前节点在三个预设空间方向上的三个平面位置信息,然后便可以基于三个平面位置信息确定当前节点的重构几何信息。
需要说明的是,在本申请的实施例中,如果当前节点在一个空间方向的平面标识信息指示当前节点的被占据子节点在该空间方向上构成平面,那么便可以进一步确定当前节点在该空间方向上的平面位置信息,如果当前节点在一个空间方向的平面标识信息指示当前节点的被占据子节点在该空间方向上不构成平面,那么便可以确定当前节点在该空间方向上不存在平面位置信息。
需要说明的是,在本申请的实施例中,对于三个预设空间方向中的一个空间方向,该空间方向的平面标识信息可以对当前节点的被占据子节点在该空间方向上是否构成平面进行指示,即通过当前节点所对应的平面标识信息,可以确定出当前节点的被占据子节点所构成的平面是否垂直于该空间方向。其中,如果当前节点的被占据子节点在该空间方向上不构成平面,那么可以认为当前节点的被占据子节点所构成的平面垂直于该空间方向。
需要说明的是,在本申请的实施例中,平面标识信息可以用于确定当前节点的被占据子节点在对应的空间方向上是否构成平面。具体地,在编码侧,编码器可以对该平面标识信息进行赋值,例如,当平面标识信息的取值为一个数值时,认为当前节点的被占据子节点在对应的空间方向上构成平面,当平面标识信息的取值为另一个数值时,认为当前节点的被占据子节点在对应的空间方向上不构成平面,即当前节点的被占据子节点所构成的平面垂直于该空间方向。
也就是说,在本申请的实施例中,在解码器中,在进行当前节点的被占据子节点在一个空间方向上是否构成平面的确定时,可以是由该空间方向的平面标识信息确定的。其中,平面标识信息可以通过一个标志位occ_single_plane进行表示。其中,occ_single_plane[k]可以用于当前节点的被占据子节点在第k+1空间方向上是否构成平面进行指示,k的取值可以为0,1,2。
示例性的,在本申请的实施例中,occ_single_plane[0]可以表征当前节点在第一空间方向的第一平面标识信息,occ_single_plane[1]可以表征当前节点在第二空间方向的第二平面标识信息,occ_single_plane[2]可以表征当前节点在第三空间方向的第三平面标识信息,
可以理解的是,在本申请的实施例中,平面标识信息occ_single_plane[k]的取值可以为0或1。
相应的,在本申请的实施例中,如果确定的平面标识信息为标志位occ_single_plane[k],那么,当标志位occ_single_plane[k]的取值为0时,可以确定平面标识信息指示当前节点的被占据子节点在第k+1空间方向上不构成平面,当标志位occ_single_plane[k]的取值为1时,可以确定平面标识信息指示当前节点的被占据子节点在第k+1空间方向上构成平面。
可以理解的是,在解码获得的all_plane_flag的取值为1的情况下,可以确定当前节点在三个预设空间方向均构成平面,此时,码流中并没有当前节点在三个预设空间方向上的三个平面标识信息,这是因为在编码端,在三个预设空间方向上的三个平面标识信息并没有被写入码流,因此可以直接将当前节点在三个预设空间方向上的三个平面标识信息分别设置为指示当前节点的被占据子节点在三个预设空间方向上构成平面。即将第一空间方向的第一平面标识信息occ_single_plane[0]的取值设置为1,第二空间方向的第二平面标识信息occ_single_plane[1]的取值设置为1,第三空间方向的第三平面标识信息occ_single_plane[2]的取值设置为1。
步骤103、若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流,确定当前节点在第一空间方向上的第一平面标识信息和当前节点在第二空间方向上的第二平面标识信息,并根据第一平面标识信息和第二平面标识信息确定当前节点的重构几何信息;其中,第一空间方向和第二空间方向为三个预设空间方向中的任意两个不同的方向。
在本申请的实施例中,在确定当前节点的全平面标识信息之后,如果全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,那么可以继续解码码流,进一步确定当前节点在第一空间方向上的第一平面标识信息和当前节点在第二空间方向上的第二平面标识信息,然后可以根据第一平面标识信息和第二平面标识信息确定当前节点的重构几何信息。
需要说明的是,在本申请的实施例中,第一空间方向和第二空间方向为三个预设空间方向中的任意两个不同的方向。假设三个预设空间方向可以分别为x轴方向,y轴方向以及z轴方向,那么第一空间方向和第二空间方向可以为x轴方向,y轴方向以及z轴方向中的任意两个方向。例如,第一空间方向可以为x轴方向,第二空间方向可以为y轴方向;或者,第一空间方向可以为z轴方向,第二空间方向可以为y轴方向;或者,第一空间方向可以为z轴方向,第二空间方向可以为x轴方向等等,本申请实施例不进行具体限定。
进一步地,在本申请的实施例中,如果全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,那么可以认为对于三个预设空间方向中的至少一个空间方向,当前节点的被占 据子节点在该至少一个空间方向上不构成平面。
可以理解的是,在本申请的实施例中,全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面的可能存在的情况可以包括:1、当前节点的被占据子节点在两个空间方向上不构成平面,而仅在另一个空间方向上构成平面;2、当前节点的被占据子节点在两个空间方向上构成平面,但是在另一个空间方向上不构成平面。
需要说明的是,在本申请的实施例中,如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上不构成平面,那么可以确定第一平面标识信息指示当前节点的被占据子节点所构成的平面与第一空间方向垂直;如果第二平面标识信息指示当前节点的被占据子节点在第二空间方向上不构成平面,那么可以确定第二平面标识信息指示当前节点的被占据子节点所构成的平面与第二空间方向垂直;如果第三平面标识信息指示当前节点的被占据子节点在第三空间方向上不构成平面,那么可以确定第三平面标识信息指示当前节点的被占据子节点所构成的平面与第三空间方向垂直。
也就是说,在本申请的实施例中,如果一个空间方向上的平面标识信息指示当前节点的被占据子节点在该空间方向上不构成平面,则可以认为该空间方向上的平面标识信息指示当前节点的被占据子节点所构成的平面与该空间方向垂直。例如,如果x轴方向上的平面标识信息指示当前节点的被占据子节点在x轴方向上不构成平面,则可以认为x轴方向上的平面标识信息指示当前节点的被占据子节点所构成的平面与x轴方向。
进一步地,在本申请的实施例中,如果全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,那么可以先确定当前节点在第一空间方向上的第一平面标识信息和当前节点在第二空间方向上的第二平面标识信息,然后再进一步根据第一平面标识信息和第二平面标识信息判断是否需要解码当前节点在第三空间方向上的第三平面标识信息。
进一步地,在本申请的实施例中,在根据第一平面标识信息和第二平面标识信息确定当前节点的重构几何信息时,如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上构成平面,同时,第二平面标识信息指示当前节点的被占据子节点在第二空间方向上构成平面,那么便可以继续解码码流,进一步确定当前节点在第一空间方向上的第一平面位置信息和当前节点在第二空间方向上的第二平面位置信息;然后便可以基于第一平面位置信息和第二平面位置信息确定当前节点的重构几何信息。
可以理解的是,在本申请的实施例中,如果解码获得的occ_single_plane[0]的取值为1,则可以确定第一平面标识信息指示当前节点的被占据子节点在第一空间方向上构成平面,如果解码获得的occ_single_plane[1]的取值为1,则可以确定第二平面标识信息指示当前节点的被占据子节点在第二空间方向上构成平面。
需要说明的是,在本申请的实施例中,在确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面之后,如果第一平面标识信息和第二平面标识信息指示当前节点的被占据子节点在第一空间方向和第二空间方向上均构成平面,那么可以直接默认当前节点在第三空间方向的第三平面标识信息指示当前节点的被占据子节点第三空间方向上不构成平面,即直接默认第三空间方向上的平面标识信息指示当前节点的被占据子节点所构成的平面与第三空间方向垂直,因此不需要进行当前节点在第三空间方向的第三平面标识信息的解码处理,而是继续确定当前节点在第一空间方向上的第一平面位置信息和第二空间方向上的第二平面位置信息,然后便可以根据第一平面位置信息和第二平面位置信息确定当前节点的重构几何信息。
可以理解的是,在本申请的实施例中,在确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面之后,如果第一平面标识信息和第二平面标识信息指示当前节点的被占据子节点在第一空间方向和第二空间方向上均构成平面,那么可以设置当前节点在第三空间方向的第三平面标识信息指示当前节点的被占据子节点在第三空间方向上不构成平面,即可以设置第三空间方向上的平面标识信息指示当前节点的被占据子节点所构成的平面与第三空间方向垂直。
需要说明的是,在本申请的实施例中,第三空间方向可以为三个预设空间方向中的、第一空间方向和第二空间方向以外的一个方向。假设三个预设空间方向可以分别为x轴方向,y轴方向以及z轴方向,如果第一空间方向可以为x轴方向,第二空间方向可以为y轴方向,那么第三空间方向可以为z轴;如果第一空间方向可以为z轴方向,第二空间方向可以为y轴方向,那么第三空间方向可以为x轴;本申请实施例不进行具体限定。
也就是说,在本申请的实施例中,在全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面的情况下,如果第一平面标识信息和第二平面标识信息指示当前节点的被占据子节点在第一空间方向和第二空间方向上均构成平面,此时,码流中并没有第三平面标识信息,这是因为在编码端,第三平面标识信息并没有被写入码流,因此可以不对第三平面标识信息进行解码处理,而是选择直接将第三平面标识信息设置为指示当前节点的被占据子节点在第三空间方向上不构成平面,即可以 选择设置第三空间方向上的平面标识信息指示当前节点的被占据子节点所构成的平面与第三空间方向垂直。
可见,在本申请的实施例中,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果解码获得的occ_single_plane[0]的取值为1,occ_single_plane[1]的取值也为1,则可以直接将occ_single_plane[2]的取值设置为0。
进一步地,在本申请的实施例中,在根据第一平面标识信息和第二平面标识信息确定当前节点的重构几何信息时,如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上不构成平面,和/或,第二平面标识信息指示当前节点的被占据子节点在第二空间方向上不构成平面,那么便可以继续解码码流,进一步确定当前节点在第三空间方向上的第三平面标识信息;然后便可以基于第三平面标识信息确定当前节点的重构几何信息。
可以理解的是,在本申请的实施例中,如果解码获得的occ_single_plane[0]的取值为0,则可以确定第一平面标识信息指示当前节点的被占据子节点在第一空间方向上不构成平面,如果解码获得的occ_single_plane[1]的取值为0,则可以确定第二平面标识信息指示当前节点的被占据子节点在第二空间方向上不构成平面。其中,第三空间方向可以为三个预设空间方向中的、第一空间方向和第二空间方向以外的一个方向。
需要说明的是,在本申请的实施例中,在确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面之后,如果第一平面标识信息和/或第二平面标识信息指示当前节点的被占据子节点在第一空间方向和/或第二空间方向上不构成平面,即指示当前节点的被占据子节点在第一空间方向和第二空间方向中的一个或两个空间方向上不构成平面,那么需要进一步确定当前节点在第三空间方向的第三平面标识信息,进而确定当前节点的被占据子节点第三空间方向上是否构成平面。
也就是说,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果解码获得的occ_single_plane[0]的取值为0,和/或,occ_single_plane[1]的取值为0,即occ_single_plane[0]的取值和occ_single_plane[1]的取值不均为1,那么需要进一步解码码流,确定occ_single_plane[2]。
示例性的,一种可能实施方式为:如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上构成平面,且第二平面标识信息指示当前节点的被占据子节点在第二空间方向上不构成平面,且第三平面标识信息指示当前节点的被占据子节点在第三空间方向上不构成平面,那么可以进一步确定当前节点在第一空间方向上的第一平面位置信息;然后便可以基于第一平面位置信息确定当前节点的重构几何信息。
也就是说,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果解码获得的occ_single_plane[0]的取值为1,occ_single_plane[1]的取值为0,occ_single_plane[2]的取值为0,那么需要通过当前节点在第一空间方向上的第一平面位置信息来进行当前节点的重构几何信息的确定。
示例性的,一种可能实施方式为:如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上构成平面,且第二平面标识信息指示当前节点的被占据子节点在第二空间方向上不构成平面,且第三平面标识信息指示当前节点的被占据子节点在第三空间方向上构成平面,那么可以进一步确定当前节点在第一空间方向上的第一平面位置信息和当前节点在第三空间方向上的第三平面位置信息;然后便可以基于第一平面位置信息和第三平面位置信息确定当前节点的重构几何信息。
也就是说,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果解码获得的occ_single_plane[0]的取值为1,occ_single_plane[1]的取值为0,occ_single_plane[2]的取值为1,那么需要通过当前节点在第一空间方向上的第一平面位置信息和当前节点在第三空间方向上的第三平面位置信息来进行当前节点的重构几何信息的确定。
示例性的,一种可能实施方式为:如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上不构成平面,且第二平面标识信息指示当前节点的被占据子节点在第二空间方向上构成平面,且第三平面标识信息指示当前节点的被占据子节点在第三空间方向上不构成平面,那么可以进一步确定当前节点在第二空间方向上的第二平面位置信息;然后便可以基于第二平面位置信息确定当前节点的重构几何信息;
也就是说,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果解码获得的occ_single_plane[0]的取值为0,occ_single_plane[1]的取值为1,occ_single_plane[2]的取值为0,那么需要通过当前节点在第二空间方向上的第二平面位置信息来进行当前节点的重构几何信息的确定。
示例性的,一种可能实施方式为:如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上不构成平面,且第二平面标识信息指示当前节点的被占据子节点在第二空间方向上构成平面,且第三平面标识信息指示当前节点的被占据子节点在第三空间方向上构成平面,那么可以进一步确定当前节点在第二空间方向上的第二平面位置信息和当前节点在第三空间方向上的第三平面位置信息;然后便 可以基于第二平面位置信息和第三平面位置信息确定当前节点的重构几何信息。
也就是说,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果解码获得的occ_single_plane[0]的取值为0,occ_single_plane[1]的取值为1,occ_single_plane[2]的取值为1,那么需要通过当前节点在第二空间方向上的第二平面位置信息和当前节点在第三空间方向上的第三平面位置信息来进行当前节点的重构几何信息的确定。
示例性的,一种可能实施方式为:如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上不构成平面,且第二平面标识信息指示当前节点的被占据子节点在第二空间方向上不构成平面,且第三平面标识信息指示当前节点的被占据子节点在第三空间方向上构成平面,那么可以进一步确定当前节点在第三空间方向上的第三平面位置信息;然后便可以基于第三平面位置信息确定当前节点的重构几何信息。
也就是说,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果解码获得的occ_single_plane[0]的取值为0,occ_single_plane[1]的取值为0,occ_single_plane[2]的取值为1,那么需要通过当前节点在第三空间方向上的第三平面位置信息来进行当前节点的重构几何信息的确定。
需要说明的是,在本申请的实施例中,在进行平面位置信息的获取时,如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上构成平面,则解码码流,确定当前节点在第一空间方向上的第一平面位置信息;否则跳过第一平面位置信息的解码;如果第二平面标识信息指示当前节点的被占据子节点在第二空间方向上构成平面,则解码码流,确定当前节点在第二空间方向上的第二平面位置信息;否则跳过第二平面位置信息的解码;如果第三平面标识信息指示当前节点的被占据子节点在第三空间方向上构成平面,则解码码流,确定当前节点在第三空间方向上的第三平面位置信息;否则跳过第三平面位置信息的解码。
可以理解的是,在本申请的实施例中,对于三个预设空间方向中的一个空间方向,该空间方向的平面位置信息可以对当前节点的被占据子节点在该空间方向上所构成的平面的位置进行指示,即通过当前节点所对应的平面位置信息,可以确定出当前节点的被占据子节点所构成的平面的具体位置。
需要说明的是,在本申请的实施例中,平面位置信息可以用于确定当前节点的被占据子节点在对应的空间方向上所构成的平面的位置。具体地,在编码侧,编码器可以对该平面位置信息进行赋值,例如,当平面位置信息的取值为一个数值时,认为当前节点的被占据子节点在对应的空间方向上所构成的平面的位置为高平面,当平面位置信息的取值为另一个数值时,认为当前节点的被占据子节点在对应的空间方向上所构成的平面的位置为低平面。
也就是说,在本申请的实施例中,在解码器中,在进行当前节点的被占据子节点在一个空间方向上所构成的平面的位置的确定时,可以是由该空间方向的平面位置信息确定的。其中,平面位置信息可以通过一个标志位plane_position进行表示。其中,plane_position[k]可以用于当前节点的被占据子节点在第k+1空间方向上所构成的平面的位置进行指示,k的取值可以为0,1,2。
示例性的,在本申请的实施例中,plane_position[0]可以表征当前节点在第一空间方向的第一平面位置信息,plane_position[1]可以表征当前节点在第二空间方向的第二平面位置信息,plane_position[2]可以表征当前节点在第三空间方向的第三平面位置信息,
可以理解的是,在本申请的实施例中,平面位置信息plane_position[k]的取值可以为0或1。
进一步地,在本申请的实施例中,如果平面位置信息的取值为第一值(例如1),那么可以确定平面位置信息指示当前节点的被占据子节点在对应的空间方向上构成高平面;如果平面位置信息的取值为第一值(例如0),那么可以确定平面位置信息指示当前节点的被占据子节点在对应的空间方向上构成低平面。
相应的,在本申请的实施例中,如果确定的平面位置信息为标志位plane_position[k],那么,当标志位plane_position[k]的取值为0时,可以确定平面位置信息指示当前节点的被占据子节点在第k+1空间方向上所构成的平面为低平面,当标志位plane_position[k]的取值为1时,可以确定平面位置信息指示当前节点的被占据子节点在第k+1空间方向上所构成的平面为高平面。
综上所述,通过上述步骤101至步骤103所提出的点云解码方法,是一种点云平面模式解码方法。在点云几何平面编码模式中引入标志位all_planar_flag(即全平面标识信息)。其中,all_planar_flag的取值为1时表示当前节点的被占据子节点在三个预设空间方向上都构成平面,此时三个平面标识信息occ_single_plane[0]、occ_single_plane[1]和occ_single_plane[2]的取值可以直接推断为1,即可以直接默认当前节点在三个预设空间方向上的三个平面标识信息分别指示当前节点的被占据子节点在三个预设 空间方向上构成平面,或者,可以直接设置当前节点在三个预设空间方向上的三个平面标识信息分别指示当前节点的被占据子节点在三个预设空间方向上构成平面。all_planar_flag的取值为0时表示当前节点的被占据子节点在至少有一个空间方向上不构成平面,此时,可以先解码确定三个预设空间方向中的两个空间方向的两个平面标识信息,如果这两个平面标识信息的取值均为1,即这两个平面标识信息分别指示当前节点的被占据子节点在这两个空间方向均构成平面,那么另一个平面标识信息的取值可以直接推断为0,即可以直接默认当前节点在第三个空间方向上的标识信息指示当前节点的被占据子节点在第三个空间方向上构成平面,或者,可以直接设置当前节点在第三个空间方向上的平面标识信息指示当前节点的被占据子节点在第三个空间方向上构成平面。通过该方式对平面标志位进行解码,可以显著减少传输平面标志位occ_single_plane[axisIdx]所需的二进制符号个数,提高平面模式几何编解码效率。
示例性的,在本申请的实施例中,点云标准文本修改前如表1所示,修改后的标准文本如表2所示。
表1
Figure PCTCN2022104466-appb-000001
Figure PCTCN2022104466-appb-000002
表2
Figure PCTCN2022104466-appb-000003
Figure PCTCN2022104466-appb-000004
可见,在修改前,语法结构为:
Figure PCTCN2022104466-appb-000005
而在修改后,在all_planar_flag的取值等于0的情况下,对应的语法结构为:
Figure PCTCN2022104466-appb-000006
本申请实施例公开了一种点云解码方法,解码器解码码流,确定当前节点的全平面标识信息;若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流,确定当前节点在三个预设空间方向上的三个平面位置信息,并基于三个平面位置信息确定当前节点的重构几何信息;若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流,确定当前节点在第一空间方向上的第一平面标识信息和当前节点在第二空间方向上的第二平面标识信息,并根据第一平面标识信息和第二平面标识信息确定当前节点的重构几何信息;其中,第一空间方向和第二空间方向为三个预设空间方向中的任意两个不同的方向。由此可见,在本申请的实施例中,引入全平面标识信息all_planar_flag,其中,all_planar_flag的取值为1时表示当前节点的被占据子节点在三个预设空间方向上都构成平面,此时不需要再在码流中传输当前节点在三个预设空间方向上的三个平面标识信息;all_planar_flag的取值为0时表示当前节点的被占据子节点在至少有一个空间方向上不构成平面,此时可以先确定三个预设空间方向中的两个空间方向的两个平面标识信息,如果这两个平面标识信息分别指示当前节点的被占据子节点在这两个空间方向均构成平面,那么不需要再在码流中传输另一个平面标识信息。可见,本申请实施例提出的点云编解码方法,能够降低复杂度,提高了解码效率,提升了视频压缩性能。
基于上述实施例,本申请的再一实施例提出一种点云编码方法,图7为本申请实施例提出的点云编码方法的实现流程示意图,如图7所示,编码器进行点云编码处理的方法可以包括以下步骤:
步骤201、确定当前节点在三个预设空间方向上的三个平面标识信息。
在本申请的实施例中,编码器可以先分别确定当前节点在三个预设空间方向上的三个平面标识信息。
进一步地,在本申请的实施例中,三个预设空间方向可以为空间中的三个互相垂直的不同方向,以空间坐标轴为例,三个预设空间方向可以分别为x轴方向,y轴方向以及z轴方向。
可以理解的是,在本申请的实施例中,当前节点可以是待编码点云中的点。
需要说明的是,在本申请的实施例中,对于三个预设空间方向中的一个空间方向,该空间方向的平面标识信息可以对当前节点的被占据子节点在该空间方向上是否构成平面进行指示,即通过当前节点所对应的平面标识信息,可以确定出当前节点的被占据子节点所构成的平面是否垂直于该空间方向。其中,如果当前节点的被占据子节点在该空间方向上不构成平面,那么可以认为当前节点的被占据子节点所构成的平面垂直于该空间方向。
需要说明的是,在本申请的实施例中,平面标识信息可以用于确定当前节点的被占据子节点在对应的空间方向上是否构成平面。具体地,在编码侧,编码器可以对该平面标识信息进行赋值,例如,当平面标识信息的取值为一个数值时,认为当前节点的被占据子节点在对应的空间方向上构成平面,当平面标识信息的取值为另一个数值时,认为当前节点的被占据子节点在对应的空间方向上不构成平面,即当前节点的被占据子节点所构成的平面垂直于该空间方向。
也就是说,在本申请的实施例中,在进行当前节点的被占据子节点在一个空间方向上是否构成平面的确定时,可以是由该空间方向的平面标识信息确定的。其中,平面标识信息可以通过一个标志位occ_single_plane进行表示。其中,occ_single_plane[k]可以用于当前节点的被占据子节点在第k+1空间方向上是否构成平面进行指示,k的取值可以为0,1,2。
示例性的,在本申请的实施例中,occ_single_plane[0]可以表征当前节点在第一空间方向的第一平面标识信息,occ_single_plane[1]可以表征当前节点在第二空间方向的第二平面标识信息,occ_single_plane[2]可以表征当前节点在第三空间方向的第三平面标识信息,
可以理解的是,在本申请的实施例中,平面标识信息occ_single_plane[k]的取值可以为0或1。
相应的,在本申请的实施例中,如果确定的平面标识信息为标志位occ_single_plane[k],那么,当标志位occ_single_plane[k]的取值为0时,可以确定平面标识信息指示当前节点的被占据子节点在第k+1空间方向上不构成平面,当标志位occ_single_plane[k]的取值为1时,可以确定平面标识信息指示当前节点的被占据子节点在第k+1空间方向上构成平面。
步骤202、若三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,将全平面标识信息写入码流。
步骤203、若三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,则设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,将全平面标识信息写入码流。
在本申请的实施例中,在确定当前节点在三个预设空间方向上的三个平面标识信息之后,如果三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,那么可以设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,然后将全平面标识信息写入码流。相应的,如果三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,那么可以设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,然后将全平面标识信息写入码流(如Signal all_plane_flag in a bitstream,其中,使用标志位all_plane_flag表征全平面标识信息)。
进一步地,在本申请的实施例中,编码器在确定当前节点的全平面标识信息之后,可以将该全平面标识信息写入码流中。其中,该全平面标识信息可以对当前节点的被占据子节点在三个预设空间方向上是否均构成平面进行指示,即通过当前节点所对应的全平面标识信息,可以确定出当前节点的被占据子节点所构成的平面是否均垂直于三个预设空间方向。
可以理解的是,在本申请的实施例中,如果当前节点的被占据子节点在三个预设空间方向中的一个空间方向上不构成平面,那么可以认为当前节点的被占据子节点所构成的平面垂直于该空间方向。
需要说明的是,在本申请的实施例中,全平面标识信息可以用于确定当前节点的被占据子节点在三个预设空间方向上是否均构成平面。具体地,在编码侧,编码器可以对该全平面标识信息进行赋值,例如,当全平面标识信息的取值为一个数值时,认为当前节点的被占据子节点在三个预设空间方向上均构成平面,当全平面标识信息的取值为另一个数值时,认为当前节点的被占据子节点在三个预设空间方向上不全构成平面。
也就是说,在本申请的实施例中,在进行当前节点的被占据子节点在三个预设空间方向上是否均构成平面的确定时,可以是由全平面标识信息确定的。其中,全平面标识信息可以通过一个标志位all_plane_flag进行表示,也可以通过另一个标志位not_all_plane_flag进行表示。相应的,将全平面标识信息写入码流所对应的标准文本可以为Signal all_plane_flag in a bitstream,也可以为Signal not_all_plane_flag in a bitstream,本申请对此不进行具体限定。
可以理解的是,在本申请的实施例中,全平面标识信息的取值可以为0或1。
相应的,在本申请的实施例中,如果确定的全平面标识信息为标志位all_plane_flag,那么,当标志位all_plane_flag的取值为0时,可以确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,当标志位all_plane_flag的取值为1时,可以确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面。
相应的,在本申请的实施例中,如果确定的全平面标识信息为标志位not_all_plane_flag,那么,当标志位not_all_plane_flag的取值为1时,可以确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,当标志位all_plane_flag的取值为0时,可以确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面。
进一步地,在本申请的实施例中,在进行全平面标识信息的获取之前,可以先对当前节点在三个预设空间方向上是否符合平面资格判定条件分别进行判断,如果当前节点在三个预设空间方向上均符合平面资格判定条件,那么再执行全平面标识信息的确定流程,然后将全平面标识信息写入码流。
相应的,在本申请的实施例中,在对当前节点在三个预设空间方向上是否符合平面资格判定条件分别进行判断之后,如果当前节点在三个预设空间方向上不都符合平面资格判定条件,那么便不再执行全平面标识信息的确定流程,而是对于符合平面资格判定条件的一个或两个空间方向,选择确定当前节点在该符合平面资格判定条件的一个或两个空间方向上的平面标识信息;进而可以根据当前节点在一个或两个空间方向上的平面标识信息进行编码处理。
也就是说,在本申请的实施例中,确定当前节点的全平面标识信息,并将其写入码流的前提条件是当前节点在三个预设空间方向上是否符合平面资格判定条件。
进一步地,在本申请的实施例中,在确定当前节点的全平面标识信息之后,如果全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则确定当前节点在三个预设空间方向上的三个平面位置信息,然后便可以将该三个平面位置信息写入码流中(如Signal plane_position[k]in a bitstream,其中,使用标志位plane_position[k]表征第k+1个空间方向上的平面位置信息,k的取值可以为0,1,2)。
需要说明的是,在本申请的实施例中,如果全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,那么可以说明当前节点的被占据子节点的位置在三个预设空间方向上都构成平面,即确定当前节点是一个三平面节点,因此可以认为当前节点的被占据子节点在任意一个预设空间方向上均可以构成平面。
可以理解的是,在本申请的实施例中,对于三个预设空间方向中的一个空间方向,如果已经确定当前节点的被占据子节点在该预设空间方向上可以构成平面,那么可以直接默认当前节点在该空间方向的平面标识信息指示当前节点的被占据子节点在该空间方向上构成平面,因此不需要进行当前节点在该空间方向的平面标识信息的编码处理,而是继续确定当前节点在三个预设空间方向上的三个平面位置信息,然后将这三个平面位置信息写入码流中。
进一步地,在本申请的实施例中,如果全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,那么可以跳过对当前节点在三个预设空间方向上的三个平面标识信息的编码处理,即不将当前节点在三个预设空间方向上的三个平面标识信息写入码流。
需要说明的是,在本申请的实施例中,如果当前节点在一个空间方向的平面标识信息指示当前节点的被占据子节点在该空间方向上构成平面,那么便可以进一步确定当前节点在该空间方向上的平面位置信息,如果当前节点在一个空间方向的平面标识信息指示当前节点的被占据子节点在该空间方向上不构成平面,那么便可以确定当前节点在该空间方向上不存在平面位置信息。
可以理解的是,在all_plane_flag的取值为1的情况下,可以确定当前节点在三个预设空间方向均构成平面,此时,在编码端,在三个预设空间方向上的三个平面标识信息并没有被写入码流,即码流中并没有当前节点在三个预设空间方向上的三个平面标识信息,因此,在解码端,可以直接将当前节点在三个预设空间方向上的三个平面标识信息分别设置为指示当前节点的被占据子节点在三个预设空间方向上构成平面。即将第一空间方向的第一平面标识信息occ_single_plane[0]的取值设置为1,第二空间方向的第二平面标识信息occ_single_plane[1]的取值设置为1,第三空间方向的第三平面标识信息occ_single_plane[2]的取值设置为1。
进一步地,在本申请的实施例中,在确定当前节点的全平面标识信息之后,如果全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,那么可以进一步根据当前节点在第一空间方向上的第一平面标识信息和当前节点在第二空间方向上的第二平面标识信息进行编码处理。
需要说明的是,在本申请的实施例中,第一空间方向和第二空间方向为三个预设空间方向中的任意两个不同的方向。假设三个预设空间方向可以分别为x轴方向,y轴方向以及z轴方向,那么第一空间 方向和第二空间方向可以为x轴方向,y轴方向以及z轴方向中的任意两个方向。例如,第一空间方向可以为x轴方向,第二空间方向可以为y轴方向;或者,第一空间方向可以为z轴方向,第二空间方向可以为y轴方向;或者,第一空间方向可以为z轴方向,第二空间方向可以为x轴方向等等,本申请实施例不进行具体限定。
进一步地,在本申请的实施例中,如果全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,那么可以认为对于三个预设空间方向中的至少一个空间方向,当前节点的被占据子节点在该至少一个空间方向上不构成平面。
可以理解的是,在本申请的实施例中,全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面的可能存在的情况可以包括:1、当前节点的被占据子节点在两个空间方向上不构成平面,而仅在另一个空间方向上构成平面;2、当前节点的被占据子节点在两个空间方向上构成平面,但是在另一个空间方向上不构成平面。
需要说明的是,在本申请的实施例中,如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上不构成平面,那么可以确定第一平面标识信息指示当前节点的被占据子节点所构成的平面与第一空间方向垂直;如果第二平面标识信息指示当前节点的被占据子节点在第二空间方向上不构成平面,那么可以确定第二平面标识信息指示当前节点的被占据子节点所构成的平面与第二空间方向垂直;如果第三平面标识信息指示当前节点的被占据子节点在第三空间方向上不构成平面,那么可以确定第三平面标识信息指示当前节点的被占据子节点所构成的平面与第三空间方向垂直。
也就是说,在本申请的实施例中,如果一个空间方向上的平面标识信息指示当前节点的被占据子节点在该空间方向上不构成平面,则可以认为该空间方向上的平面标识信息指示当前节点的被占据子节点所构成的平面与该空间方向垂直。例如,如果x轴方向上的平面标识信息指示当前节点的被占据子节点在x轴方向上不构成平面,则可以认为x轴方向上的平面标识信息指示当前节点的被占据子节点所构成的平面与x轴方向。
进一步地,在本申请的实施例中,如果全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,那么可以先确定当前节点在第一空间方向上的第一平面标识信息和当前节点在第二空间方向上的第二平面标识信息,然后再进一步根据第一平面标识信息和第二平面标识信息判断是否需要编码当前节点在第三空间方向上的第三平面标识信息。
进一步地,在本申请的实施例中,在根据第一平面标识信息和第二平面标识信息进行编码处理时,如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上构成平面,同时,第二平面标识信息指示当前节点的被占据子节点在第二空间方向上构成平面,那么便可以进一步确定当前节点在第一空间方向上的第一平面位置信息和当前节点在第二空间方向上的第二平面位置信息;然后便可以基于第一平面位置信息和第二平面位置信息进行编码处理,即在将第一平面标识信息写入码流(如Signal occ_single_plane[0]in a bitstream,其中,使用标志位occ_single_plane[0]表征第一平面标识信息)之后将第一平面位置信息写入码流(如Signal plane_position[0]in a bitstream,其中,使用标志位plane_position[0]表征第一平面位置信息);在将第二平面标识信息写入码流(如Signal occ_single_plane[1]in a bitstream,其中,使用标志位occ_single_plane[1]表征第二平面标识信息)之后将第二平面位置信息写入码流(如Signal plane_position[1]in a bitstream,其中,使用标志位plane_position[1]表征第二平面位置信息)。
可以理解的是,在本申请的实施例中,如果occ_single_plane[0]的取值为1,则可以确定第一平面标识信息指示当前节点的被占据子节点在第一空间方向上构成平面,如果occ_single_plane[1]的取值为1,则可以确定第二平面标识信息指示当前节点的被占据子节点在第二空间方向上构成平面。
需要说明的是,在本申请的实施例中,在确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面之后,如果第一平面标识信息和第二平面标识信息指示当前节点的被占据子节点在第一空间方向和第二空间方向上均构成平面,那么可以直接默认当前节点在第三空间方向的第三平面标识信息指示当前节点的被占据子节点第三空间方向上不构成平面,即直接默认第三空间方向上的平面标识信息指示当前节点的被占据子节点所构成的平面与第三空间方向垂直,因此不需要进行当前节点在第三空间方向的第三平面标识信息的编码处理,即不将当前节点在第三空间方向的第三平面标识信息写入码流,而是继续确定当前节点在第一空间方向上的第一平面位置信息和第二空间方向上的第二平面位置信息,然后便可以在将第一平面标识信息写入码流之后将第一平面位置信息写入码流;在将第二平面标识信息写入码流之后将第二平面位置信息写入码流。
需要说明的是,在本申请的实施例中,第三空间方向可以为三个预设空间方向中的、第一空间方向和第二空间方向以外的一个方向。假设三个预设空间方向可以分别为x轴方向,y轴方向以及z轴方向,如果第一空间方向可以为x轴方向,第二空间方向可以为y轴方向,那么第三空间方向可以为z轴;如 果第一空间方向可以为z轴方向,第二空间方向可以为y轴方向,那么第三空间方向可以为x轴;本申请实施例不进行具体限定。
也就是说,在本申请的实施例中,在全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面的情况下,如果第一平面标识信息和第二平面标识信息指示当前节点的被占据子节点在第一空间方向和第二空间方向上均构成平面,此时,在编码端,第三平面标识信息并没有被写入码流,即码流中并没有第三平面标识信息,因此在解码端,可以不对第三平面标识信息进行解码处理,而是选择直接将第三平面标识信息设置为指示当前节点的被占据子节点在第三空间方向上不构成平面,即可以选择设置第三空间方向上的平面标识信息指示当前节点的被占据子节点所构成的平面与第三空间方向垂直。
可见,在本申请的实施例中,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果occ_single_plane[0]的取值为1,occ_single_plane[1]的取值也为1,则可以直接跳过对occ_single_plane[2]的编码处理。
进一步地,在本申请的实施例中,在根据第一平面标识信息和第二平面标识信息进行编码处理时,如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上不构成平面,和/或,第二平面标识信息指示当前节点的被占据子节点在第二空间方向上不构成平面,那么便可以确定当前节点在第三空间方向上的第三平面标识信息;然后便可以基于第三平面标识信息进行编码处理。
可以理解的是,在本申请的实施例中,如果occ_single_plane[0]的取值为0,则可以确定第一平面标识信息指示当前节点的被占据子节点在第一空间方向上不构成平面,如果occ_single_plane[1]的取值为0,则可以确定第二平面标识信息指示当前节点的被占据子节点在第二空间方向上不构成平面。其中,第三空间方向可以为三个预设空间方向中的、第一空间方向和第二空间方向以外的一个方向。
需要说明的是,在本申请的实施例中,在确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面之后,如果第一平面标识信息和/或第二平面标识信息指示当前节点的被占据子节点在第一空间方向和/或第二空间方向上不构成平面,即指示当前节点的被占据子节点在第一空间方向和第二空间方向中的一个或两个空间方向上不构成平面,那么需要进一步确定当前节点在第三空间方向的第三平面标识信息,进而确定当前节点的被占据子节点第三空间方向上是否构成平面。
也就是说,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果occ_single_plane[0]的取值为0,和/或,occ_single_plane[1]的取值为0,即occ_single_plane[0]的取值和occ_single_plane[1]的取值不均为1,那么需要进一步确定occ_single_plane[2]。
示例性的,一种可能实施方式为:如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上构成平面,且第二平面标识信息指示当前节点的被占据子节点在第二空间方向上不构成平面,且第三平面标识信息指示当前节点的被占据子节点在第三空间方向上不构成平面,那么可以进一步确定当前节点在第一空间方向上的第一平面位置信息;然后便可以基于第一平面位置信息进行编码处理,即在将第一平面标识信息写入码流之后将第一平面位置信息写入码流。
也就是说,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果occ_single_plane[0]的取值为1,occ_single_plane[1]的取值为0,occ_single_plane[2]的取值为0,那么需要在将第一平面标识信息写入码流之后将第一平面位置信息写入码流。
示例性的,一种可能实施方式为:如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上构成平面,且第二平面标识信息指示当前节点的被占据子节点在第二空间方向上不构成平面,且第三平面标识信息指示当前节点的被占据子节点在第三空间方向上构成平面,那么可以进一步确定当前节点在第一空间方向上的第一平面位置信息和当前节点在第三空间方向上的第三平面位置信息;然后便可以基于第一平面位置信息和第三平面位置信息进行编码处理,即在将第一平面标识信息写入码流之后将第一平面位置信息写入码流,在将第三平面标识信息写入码流之后将第三平面位置信息写入码流。
也就是说,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果occ_single_plane[0]的取值为1,occ_single_plane[1]的取值为0,occ_single_plane[2]的取值为1,那么需要在将第一平面标识信息写入码流之后将第一平面位置信息写入码流,在将第三平面标识信息写入码流(如Signal occ_single_plane[2]in a bitstream,其中,使用标志位occ_single_plane[2]表征第三平面标识信息)之后将第三平面位置信息写入码流(如Signal plane_position[2]in a bitstream,其中,使用标志位plane_position[2]表征第三平面位置信息)。
示例性的,一种可能实施方式为:如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上不构成平面,且第二平面标识信息指示当前节点的被占据子节点在第二空间方向上构成平面,且第三平面标识信息指示当前节点的被占据子节点在第三空间方向上不构成平面,那么可以进一步确定当前节点在第二空间方向上的第二平面位置信息;然后便可以基于第二平面位置信息进行编码处理,即在 将第二平面标识信息写入码流之后将第二平面位置信息写入码流。
也就是说,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果occ_single_plane[0]的取值为0,occ_single_plane[1]的取值为1,occ_single_plane[2]的取值为0,那么需要在将第二平面标识信息写入码流之后将第二平面位置信息写入码流。
示例性的,一种可能实施方式为:如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上不构成平面,且第二平面标识信息指示当前节点的被占据子节点在第二空间方向上构成平面,且第三平面标识信息指示当前节点的被占据子节点在第三空间方向上构成平面,那么可以进一步确定当前节点在第二空间方向上的第二平面位置信息和当前节点在第三空间方向上的第三平面位置信息;然后便可以基于第二平面位置信息和第三平面位置信息进行编码处理,即在将第二平面标识信息写入码流之后将第二平面位置信息写入码流,在将第三平面标识信息写入码流之后将第三平面位置信息写入码流。
也就是说,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果occ_single_plane[0]的取值为0,occ_single_plane[1]的取值为1,occ_single_plane[2]的取值为1,那么需要在将第二平面标识信息写入码流之后将第二平面位置信息写入码流,在将第三平面标识信息写入码流之后第三平面位置信息写入码流。
示例性的,一种可能实施方式为:如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上不构成平面,且第二平面标识信息指示当前节点的被占据子节点在第二空间方向上不构成平面,且第三平面标识信息指示当前节点的被占据子节点在第三空间方向上构成平面,那么可以进一步确定当前节点在第三空间方向上的第三平面位置信息;然后便可以基于第三平面位置信息进行编码处理,即在将第三平面标识信息写入码流之后将第三平面位置信息写入码流。
也就是说,在本申请的实施例中,在all_plane_flag的取值为0的情况下,如果occ_single_plane[0]的取值为0,occ_single_plane[1]的取值为0,occ_single_plane[2]的取值为1,那么需要在将第三平面标识信息写入码流之后将第三平面位置信息写入码流。
需要说明的是,在本申请的实施例中,在进行平面位置信息的编码处理时,如果第一平面标识信息指示当前节点的被占据子节点在第一空间方向上构成平面,则在编码第一平面标识信息之后,编码当前节点在第一空间方向上的第一平面位置信息;否则在编码第一平面标识信息之后,跳过第一平面位置信息的编码;如果第二平面标识信息指示当前节点的被占据子节点在第二空间方向上构成平面,则在编码第二平面标识信息之后,编码当前节点在第二空间方向上的第二平面位置信息;否则在编码第二平面标识信息之后,跳过第二平面位置信息的编码;如果第三平面标识信息指示当前节点的被占据子节点在第三空间方向上构成平面,则在编码第三平面标识信息之后,编码当前节点在第三空间方向上的第三平面位置信息;否则在编码第三平面标识信息之后,跳过第三平面位置信息的编码。
可以理解的是,在本申请的实施例中,对于三个预设空间方向中的一个空间方向,该空间方向的平面位置信息可以对当前节点的被占据子节点在该空间方向上所构成的平面的位置进行指示,即通过当前节点所对应的平面位置信息,可以确定出当前节点的被占据子节点所构成的平面的具体位置。
需要说明的是,在本申请的实施例中,平面位置信息可以用于确定当前节点的被占据子节点在对应的空间方向上所构成的平面的位置。具体地,在编码侧,编码器可以对该平面位置信息进行赋值,例如,当平面位置信息的取值为一个数值时,认为当前节点的被占据子节点在对应的空间方向上所构成的平面的位置为高平面,当平面位置信息的取值为另一个数值时,认为当前节点的被占据子节点在对应的空间方向上所构成的平面的位置为低平面。
也就是说,在本申请的实施例中,在进行当前节点的被占据子节点在一个空间方向上所构成的平面的位置的确定时,可以是由该空间方向的平面位置信息确定的。其中,平面位置信息可以通过一个标志位plane_position进行表示。其中,plane_position[k]可以用于当前节点的被占据子节点在第k+1空间方向上所构成的平面的位置进行指示,k的取值可以为0,1,2。
示例性的,在本申请的实施例中,plane_position[0]可以表征当前节点在第一空间方向的第一平面位置信息,plane_position[1]可以表征当前节点在第二空间方向的第二平面位置信息,plane_position[2]可以表征当前节点在第三空间方向的第三平面位置信息,
可以理解的是,在本申请的实施例中,平面位置信息plane_position[k]的取值可以为0或1。
进一步地,在本申请的实施例中,如果平面位置信息的取值为第一值(例如1),那么可以确定平面位置信息指示当前节点的被占据子节点在对应的空间方向上构成高平面;如果平面位置信息的取值为第一值(例如0),那么可以确定平面位置信息指示当前节点的被占据子节点在对应的空间方向上构成低平面。
相应的,在本申请的实施例中,如果确定的平面位置信息为标志位plane_position[k],那么,当标志位plane_position[k]的取值为0时,可以确定平面位置信息指示当前节点的被占据子节点在第k+1空 间方向上所构成的平面为低平面,当标志位plane_position[k]的取值为1时,可以确定平面位置信息指示当前节点的被占据子节点在第k+1空间方向上所构成的平面为高平面。
综上所述,通过上述步骤201至步骤203所提出的点云编码方法,是一种点云平面模式编码方法。在点云几何平面编码模式中引入标志位all_planar_flag(即全平面标识信息)。其中,all_planar_flag的取值为1时表示当前节点的被占据子节点在三个预设空间方向上都构成平面,此时三个平面标识信息occ_single_plane[0]、occ_single_plane[1]和occ_single_plane[2]的取值可以直接推断为1,因此编码端可以不将三个平面标识信息写入码流,而在解码侧,可以直接默认当前节点在三个预设空间方向上的三个平面标识信息分别指示当前节点的被占据子节点在三个预设空间方向上构成平面,或者,可以直接设置当前节点在三个预设空间方向上的三个平面标识信息分别指示当前节点的被占据子节点在三个预设空间方向上构成平面。all_planar_flag的取值为0时表示当前节点的被占据子节点在至少有一个空间方向上不构成平面,此时,可以先确定三个预设空间方向中的两个空间方向的两个平面标识信息,如果这两个平面标识信息的取值均为1,即这两个平面标识信息分别指示当前节点的被占据子节点在这两个空间方向均构成平面,那么另一个平面标识信息的取值可以直接推断为0,因此编码端可以不将第三个空间方向上的平面标识信息写入码流,而在解码侧,可以直接默认当前节点在第三个空间方向上的标识信息指示当前节点的被占据子节点在第三个空间方向上构成平面,或者,可以直接设置当前节点在第三个空间方向上的平面标识信息指示当前节点的被占据子节点在第三个空间方向上构成平面。通过该方式对平面标志位进行编码,可以显著减少传输平面标志位occ_single_plane[axisIdx]所需的二进制符号个数,提高平面模式几何编解码效率。
本申请实施例公开了一种点云编码方法,确定当前节点在三个预设空间方向上的三个平面标识信息;若三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,将全平面标识信息写入码流;若三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,则设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,将全平面标识信息写入码流。由此可见,在本申请的实施例中,引入全平面标识信息all_planar_flag,其中,all_planar_flag的取值为1时表示当前节点的被占据子节点在三个预设空间方向上都构成平面,此时不需要再在码流中传输当前节点在三个预设空间方向上的三个平面标识信息;all_planar_flag的取值为0时表示当前节点的被占据子节点在至少有一个空间方向上不构成平面,此时可以先确定三个预设空间方向中的两个空间方向的两个平面标识信息,如果这两个平面标识信息分别指示当前节点的被占据子节点在这两个空间方向均构成平面,那么不需要再在码流中传输另一个平面标识信息。可见,本申请实施例提出的点云编解码方法,能够降低复杂度,提高了解码效率,提升了视频压缩性能。
基于上述实施例,本申请的又一实施例提出一种点云编码方法和点云解码方法。其中,在编码端,若当前节点在三个方向(三个预设空间方向,如为x轴方向,y轴方向以及z轴方向)上都符合平面资格判定条件,那么可以对all_planar_flag(全平面标识信息)进行编码。
示例性的,若all_planar_flag为1,那么可以基于该当前节点被占据子节点的占位信息计算在三个方向上的平面位置信息plane_position[0]、plane_position[1]和plane_position[2],并对平面位置信息进行编码。若all_planar_flag为0,可以先对其中两个方向上的平面标识信息occ_single_plane[0]和occ_single_plane[1]进行编码,并基于occ_single_plane[0]和occ_single_plane[1]对occ_single_plane[2]进行推断。
可以理解的是,若occ_single_plane[0]和occ_single_plane[1]都为1,可以编码occ_single_plane[0]和occ_single_plane[1]为true,基于该当前节点被占据子节点的占位信息计算平面位置信息plane_position[0]和plane_position[1],并对平面位置信息进行编码。若occ_single_plane[0]和occ_single_plane[1]不都为1,分别编码occ_single_plane[0]、occ_single_plane[1]和occ_single_plane[2],并且在occ_single_plane[axisIdx]为1时,计算平面位置信息plane_position[axisIdx],并对平面位置信息进行编码。其中,0≤axisIdx≤2。
如果当前节点在三个方向上不都符合平面资格判定条件,那么根据各个方向是否符合平面资格判定条件来确定各自的平面标志位occ_single_plane[axisIdx]和平面位置plane_position[axisIdx],并对其进行编码。
相应的,在解码端,若当前节点在三个方向上都符合平面资格判定条件,则对all_planar_flag进行解码。
示例性的,若all_planar_flag为1,此时,occ_single_plane[0]、occ_single_plane[1]和occ_single_plane[2]直接推断为1,或者,可以设置occ_single_plane[0]、occ_single_plane[1]和occ_single_plane[2]为1,然后从码流中解码出平面位置信息plane_position[0]、plane_position[1]和plane_position[2]。若 all_planar_flag为0,此时从码流中解码occ_single_plane[0]和occ_single_plane[1]。
可以理解的是,若occ_single_plane[0]和occ_single_plane[1]都为1,则occ_single_plane[2]直接推断为0,或者,可以设置occ_single_plane[2]为0,然后可以从码流中解码出平面位置信息plane_position[0]和plane_position[1]。若occ_single_plane[0]和occ_single_plane[1]不都为1,则从码流中解码occ_single_plane[2],并根据occ_single_plane[axisIdx]是否为1,从码流中相应地解码出平面位置信息plane_position[axisIdx]。其中,0≤axisIdx≤2。
如果当前节点在三个方向上不都符合平面资格判定条件,则根据各个方向是否符合平面资格判定条件,从码流中解出各自的平面标志位occ_single_plane[axisIdx]和平面位置plane_position[axisIdx]。
进一步地,在本申请的实施例中,图8为本申请实施例提出的点云编码方法示意图,如图8所示,在判断当前节点在三个方向上是否均符合平面资格判定条件之后,如果三个方向上均符合平面资格判定条件,那么可以对all_planar_flag进行编码。其中,判断all_planar_flag是否为1,若all_planar_flag为1,则确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,此时无需编码occ_single_plane[0]、occ_single_plane[1]和occ_single_plane[2],而是直接编码平面位置信息plane_position[0]、plane_position[1]和plane_position[2]。在这种情况下,原来编码occ_single_plane[0]、occ_single_plane[1]和occ_single_plane[2]的三个二进制符号用一个二进制符号all_planar_flag来表示。
进一步地,若all_planar_flag为0,则可以先对两个方向上的平面标识信息occ_single_plane[0]和occ_single_plane[1]进行编码,其中,确定occ_single_plane[0]是否为1,如果occ_single_plane[0]为1,则编码平面位置信息plane_position[0];接着,确定occ_single_plane[1]是否为1,如果occ_single_plane[1]为1,则编码平面位置信息plane_position[1]。
进一步地,可以基于occ_single_plane[0]和occ_single_plane[1]对occ_single_plane[2]进行推断。其中,可以先判断occ_single_plane[0]和occ_single_plane[1]都为1是否成立,如果成立,即occ_single_plane[0]和occ_single_plane[1]都为1,则无需编码occ_single_plane[2],因为此时occ_single_plane[2]一定为0,此时可以基于该当前节点被占据子节点的占位信息计算平面位置信息plane_position[0]和plane_position[1],并对平面位置信息进行编码;如果不成立,即occ_single_plane[0]和occ_single_plane[1]不都为1,则编码occ_single_plane[2],并判断occ_single_plane[2]为1是否成立,如果成立,即occ_single_plane[2]为1时,计算平面位置信息plane_position[2],并对平面位置信息进行编码。
如果当前节点在三个方向上不都符合平面资格判定条件,则根据各个方向是否符合平面资格判定条件来确定各自的平面标志位occ_single_plane[axisIdx]和平面位置信息plane_position[axisIdx],并对其进行编码。
进一步地,在本申请的实施例中,图9为本申请实施例提出的点云解码方法示意图,如图9所示,在判断当前节点在三个方向上是否均符合平面资格判定条件之后,如果三个方向上均符合平面资格判定条件,那么可以对all_planar_flag进行解码。其中,判断all_planar_flag是否为1,若all_planar_flag为1,则确定全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,说明当前节点是一个三平面(即当前节点被占据的子节点的位置在三个方向上都构成平面)。因此可以直接将三个平面标识信息occ_single_plane[0]、occ_single_plane[1]和occ_single_plane[2]设置为1,并从码流中解码出三个平面位置信息plane_position[0]、plane_position[1]和plane_position[2]。
进一步地,若all_planar_flag为0,此时可以先从码流中解码两个方向上的平面标识信息occ_single_plane[0]和occ_single_plane[1]。其中,确定occ_single_plane[0]是否为1,如果occ_single_plane[0]为1,则解码平面位置信息plane_position[0];接着,确定occ_single_plane[1]是否为1,如果occ_single_plane[1]为1,则解码平面位置信息plane_position[1]。
进一步地,可以先判断occ_single_plane[0]和occ_single_plane[1]都为1是否成立,如果成立,即occ_single_plane[0]和occ_single_plane[1]都为1,则无需解码occ_single_plane[2],而是直接将occ_single_plane[2]设置为0;如果不成立,即occ_single_plane[0]和occ_single_plane[1]不都为1,则解码occ_single_plane[2],并判断occ_single_plane[2]为1是否成立,如果成立,即occ_single_plane[2]为1时,从码流中相应地解码出平面位置信息plane_position[2]。
如果当前节点在三个方向上不都符合平面资格判定条件,则根据各个方向是否符合平面资格判定条件,从码流中解出各自的平面标志位occ_single_plane[axisIdx]和平面位置信息plane_position[axisIdx]。
综上所述,通过本申请实施例所提出的点云编码方法和点云解码方法,在点云几何平面编码模式中引入标志位all_planar_flag(即全平面标识信息)。其中,all_planar_flag的取值为1时表示当前节点的被占据子节点在三个预设空间方向上都构成平面,此时三个平面标识信息occ_single_plane[0]、occ_single_plane[1]和occ_single_plane[2]的取值可以直接推断为1,即可以直接默认当前节点在三个预 设空间方向上的三个平面标识信息分别指示当前节点的被占据子节点在三个预设空间方向上构成平面,或者,可以直接设置当前节点在三个预设空间方向上的三个平面标识信息分别指示当前节点的被占据子节点在三个预设空间方向上构成平面。all_planar_flag的取值为0时表示当前节点的被占据子节点在至少有一个空间方向上不构成平面,此时,可以先解码确定三个预设空间方向中的两个空间方向的两个平面标识信息,如果这两个平面标识信息的取值均为1,即这两个平面标识信息分别指示当前节点的被占据子节点在这两个空间方向均构成平面,那么另一个平面标识信息的取值可以直接推断为0,即可以直接默认当前节点在第三个空间方向上的标识信息指示当前节点的被占据子节点在第三个空间方向上构成平面,或者,可以直接设置当前节点在第三个空间方向上的平面标识信息指示当前节点的被占据子节点在第三个空间方向上构成平面。通过该方式对平面标志位进行编解码,可以显著减少传输平面标志位occ_single_plane[axisIdx]所需的二进制符号个数,提高平面模式几何编解码效率。
本申请实施例公开了一种点云编解码方法,解码器解码码流,确定当前节点的全平面标识信息;若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流,确定当前节点在三个预设空间方向上的三个平面位置信息,并基于三个平面位置信息确定当前节点的重构几何信息;若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流,确定当前节点在第一空间方向上的第一平面标识信息和当前节点在第二空间方向上的第二平面标识信息,并根据第一平面标识信息和第二平面标识信息确定当前节点的重构几何信息;其中,第一空间方向和第二空间方向为三个预设空间方向中的任意两个不同的方向。确定当前节点在三个预设空间方向上的三个平面标识信息;若三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,将全平面标识信息写入码流;若三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,则设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,将全平面标识信息写入码流。由此可见,在本申请的实施例中,引入全平面标识信息all_planar_flag,其中,all_planar_flag的取值为1时表示当前节点的被占据子节点在三个预设空间方向上都构成平面,此时不需要再在码流中传输当前节点在三个预设空间方向上的三个平面标识信息;all_planar_flag的取值为0时表示当前节点的被占据子节点在至少有一个空间方向上不构成平面,此时可以先确定三个预设空间方向中的两个空间方向的两个平面标识信息,如果这两个平面标识信息分别指示当前节点的被占据子节点在这两个空间方向均构成平面,那么不需要再在码流中传输另一个平面标识信息。可见,本申请实施例提出的点云编解码方法,能够降低复杂度,提高了解码效率,提升了视频压缩性能。
基于上述实施例,在本申请的再一实施例中,图10为解码器的组成结构示意图一,如图10所示,本申请实施例提出的解码器300可以包括:解码部分301,第一确定部分302,
所述解码部分301,配置为解码码流;
所述第一确定部分302,配置为确定当前节点的全平面标识信息;
所述解码部分301,还配置为若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流;
所述第一确定部分302,还配置为确定所述当前节点在所述三个预设空间方向上的三个平面位置信息,并基于所述三个平面位置信息确定所述当前节点的重构几何信息;
所述解码部分301,还配置为若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流;
所述第一确定部分302,还配置为确定所述当前节点在所述第一空间方向上的第一平面标识信息和所述当前节点在所述第二空间方向上的第二平面标识信息,并根据所述第一平面标识信息和所述第二平面标识信息确定所述当前节点的重构几何信息;其中,所述第一空间方向和所述第二空间方向为所述三个预设空间方向中的任意两个不同的方向。
图11为解码器的组成结构示意图二,如图11所示,本申请实施例提出的解码器300还可以包括第一处理器303、存储有第一处理器303可执行指令的第一存储器304、第一通信接口305,和用于连接第一处理器303、第一存储器304以及第一通信接口305的第一总线306。
进一步地,在本申请的实施例中,上述第一处理器303,用于解码码流,确定当前节点的全平面标识信息;若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流,确定所述当前节点在所述三个预设空间方向上的三个平面位置信息,并基于所述三个平面位置信息确定所述当前节点的重构几何信息;若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流,确定所述当前节点在所述第一空间方向上的第一平 面标识信息和所述当前节点在所述第二空间方向上的第二平面标识信息,并根据所述第一平面标识信息和所述第二平面标识信息确定所述当前节点的重构几何信息;其中,所述第一空间方向和所述第二空间方向为所述三个预设空间方向中的任意两个不同的方向。
图12为编码器的组成结构示意图一,如图12所示,本申请实施例提出的编码器400可以包括:第二确定部分401,编码部分402,
所述第二确定部分401,配置为确定当前节点在三个预设空间方向上的三个平面标识信息;若所述三个平面标识信息指示所述当前节点的被占据子节点在所述三个预设空间方向上均构成平面,则设置所述当前节点的全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面;
所述第二确定部分401,还配置为若所述三个平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则设置所述当前节点的全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面;
所述编码部分402,配置为将所述全平面标识信息写入码流。
图13为编码器的组成结构示意图二,如图13所示,本申请实施例提出的编码器400还可以包括第二处理器403、存储有第二处理器403可执行指令的第二存储器404、第二通信接口405,和用于连接第二处理器403、第二存储器404以及第二通信接口405的第二总线406。
进一步地,在本申请的实施例中,上述第二处理器403,用于确定当前节点的全平面标识信息,并将所述全平面标识信息写入码流;若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,则确定所述当前节点在所述三个预设空间方向上的三个平面位置信息,并将所述三个平面位置信息写入码流;若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则确定所述当前节点在所述第一空间方向上的第一平面标识信息和所述当前节点在所述第二空间方向上的第二平面标识信息,并根据所述第一平面标识信息和所述第二平面标识信息进行编码处理;其中,所述第一空间方向和所述第二空间方向为所述三个预设空间方向中的任意两个不同的方向。
可以理解地,在本申请实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
可以理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(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)。本申请描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
而处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完 成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本申请描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(Application Specific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable Logic Device,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。对于软件实现,可通过执行本申请所述功能的模块(例如过程、函数等)来实现本申请所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本申请实施例提供了一种编解码器,解码器解码码流,确定当前节点的全平面标识信息;若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流,确定当前节点在三个预设空间方向上的三个平面位置信息,并基于三个平面位置信息确定当前节点的重构几何信息;若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流,确定当前节点在第一空间方向上的第一平面标识信息和当前节点在第二空间方向上的第二平面标识信息,并根据第一平面标识信息和第二平面标识信息确定当前节点的重构几何信息;其中,第一空间方向和第二空间方向为三个预设空间方向中的任意两个不同的方向。编码器确定当前节点在三个预设空间方向上的三个平面标识信息;若三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,将全平面标识信息写入码流;若三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,则设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,将全平面标识信息写入码流。由此可见,在本申请的实施例中,引入全平面标识信息all_planar_flag,其中,all_planar_flag的取值为1时表示当前节点的被占据子节点在三个预设空间方向上都构成平面,此时不需要再在码流中传输当前节点在三个预设空间方向上的三个平面标识信息;all_planar_flag的取值为0时表示当前节点的被占据子节点在至少有一个空间方向上不构成平面,此时可以先确定三个预设空间方向中的两个空间方向的两个平面标识信息,如果这两个平面标识信息分别指示当前节点的被占据子节点在这两个空间方向均构成平面,那么不需要再在码流中传输另一个平面标识信息。可见,本申请实施例提出的点云编解码方法,能够降低复杂度,提高了解码效率,提升了视频压缩性能。
本申请实施例提供一种计算机存储介质,应用于编码器300,该计算机存储介质存储有点云解码程序,所述点云解码程序被处理器执行时实现前述实施例中任一项所述的方法。
具体来讲,本实施例中的一种点云解码方法对应的程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种点云解码方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
解码码流,确定当前节点的全平面标识信息;
若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流,确定所述当前节点在所述三个预设空间方向上的三个平面位置信息,并基于所述三个平面位置信息确定所述当前节点的重构几何信息;
若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流,确定所述当前节点在所述第一空间方向上的第一平面标识信息和所述当前节点在所述第二空间方向上的第二平面标识信息,并根据所述第一平面标识信息和所述第二平面标识信息确定所述当前节点的重构几何信息;其中,所述第一空间方向和所述第二空间方向为所述三个预设空间方向中的任意两个不同的方向。
本申请实施例提供一种计算机存储介质,应用于编码器400,该计算机存储介质存储有点云编码程序,所述点云编码程序被处理器执行时实现前述实施例中任一项所述的方法。
具体来讲,本实施例中的一种点云编码方法对应的程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种点云编码方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
确定当前节点的全平面标识信息,并将所述全平面标识信息写入码流;
若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,则确定所述当前节点在所述三个预设空间方向上的三个平面位置信息,并将所述三个平面位置信息写入码流;
若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则确定所述当前节点在所述第一空间方向上的第一平面标识信息和所述当前节点在所述第二空间方向上的第二平面标识信息,并根据所述第一平面标识信息和所述第二平面标识信息进行编码处理;其中,所述第一空间方向和所述第二空间方向为所述三个预设空间方向中的任意两个不同的方向。
需要说明的是,在本申请的实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
工业实用性
本申请实施例公开了一种点云编解码方法、编解码器及计算机存储介质,解码器解码码流,确定当前节点的全平面标识信息;若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流,确定当前节点在三个预设空间方向上的三个平面位置信息,并基于三个平面位置信息确定当前节点的重构几何信息;若全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流,确定当前节点在第一空间方向上的第一平面标识信息和当前节点在第二空间方向上的第二平面标识信息,并根据第一平面标识信息和第二平面标识信息确定当前节点的重构几何信息;其中,第一空间方向和第二空间方向为三个预设空间方向中的任意两个不同的方向。确定当前节点在三个预设空间方向上的三个平面标识信息;若三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,则设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上均构成平面,将全平面标识信息写入码流;若三个平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,则设置当前节点的全平面标识信息指示当前节点的被占据子节点在三个预设空间方向上不全构成平面,将全平面标识信息写入码流。由此可见,在本申请的实施例中,引入全平面标识信息all_planar_flag,其中,all_planar_flag的取值为1时表示当前节点的被占据子节点在三个预设空间方向上都构成平面,此时不需要再在码流中传输当前节点在三个预设空间方向上的三个平面标识信息;all_planar_flag的取值为0时表示当前节点的被占据子节点在至少有一个空间方向上不构成平面,此时可以先确定三个预设空间方向中的两个空间方向的两个平面标识信息,如果这两个平面标识信息分别指示当前节点的被占据子节点在这两个空间方向均构成平面,那么不需要再在码流中传输另一个平面标识信息。可见,本申请实施例提出的点云编解码方法,能够降低复杂度,提高了解码效率,提升了视频压缩性能。

Claims (32)

  1. 一种点云解码方法,应用于解码器,所述方法包括:
    解码码流,确定当前节点的全平面标识信息;
    若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流,确定所述当前节点在所述三个预设空间方向上的三个平面位置信息,并基于所述三个平面位置信息确定所述当前节点的重构几何信息;
    若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流,确定所述当前节点在所述第一空间方向上的第一平面标识信息和所述当前节点在所述第二空间方向上的第二平面标识信息,并根据所述第一平面标识信息和所述第二平面标识信息确定所述当前节点的重构几何信息;其中,所述第一空间方向和所述第二空间方向为所述三个预设空间方向中的任意两个不同的方向。
  2. 根据权利要求1所述的方法,其中,所述方法还包括:
    若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,则设置所述当前节点在所述三个预设空间方向上的三个平面标识信息分别指示所述当前节点的被占据子节点在所述三个预设空间方向构成平面。
  3. 根据权利要求1所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上构成平面,则解码码流,确定所述当前节点在所述第一空间方向上的第一平面位置信息和所述当前节点在所述第二空间方向上的第二平面位置信息;
    基于所述第一平面位置信息和所述第二平面位置信息确定所述当前节点的重构几何信息。
  4. 根据权利要求3所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上构成平面,则设置所述当前节点在第三空间方向的第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上不构成平面;其中,所述第三空间方向为所述三个预设空间方向中的、所述第一空间方向和所述第二空间方向以外的一个方向。
  5. 根据权利要求1所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上不构成平面,和/或,所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上不构成平面,则解码码流,确定所述当前节点在所述第三空间方向上的第三平面标识信息;其中,所述第三空间方向为所述三个预设空间方向中的、所述第一空间方向和所述第二空间方向以外的一个方向;
    根据所述第三平面标识信息确定所述当前节点的重构几何信息。
  6. 根据权利要求5所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上不构成平面,且所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上不构成平面,则确定所述当前节点在所述第一空间方向上的第一平面位置信息;并基于所述第一平面位置信息确定所述当前节点的重构几何信息;
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上不构成平面,且所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上构成平面,则确定所述当前节点在所述第一空间方向上的第一平面位置信息和所述当前节点在所述第三空间方向上的第三平面位置信息;并基于所述第一平面位置信息和所述第三平面位置信息确定所述当前节点的重构几何信息。
  7. 根据权利要求5所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上不构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上构成平面,且所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上不构成平面,则确定所述当前节点在所述第二空间方向上的第二平面位置信息;并基于所述第二平面位置信息确定所述当前节点的重构几何信息;
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上不构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上构成平面,且所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上构成平面,则确定所述当前节点在所述第二空间方向上的第二平面位置信息和所述当前节点在所述第三空间方向上的第三平面位置信息;并基于所述第二平面位置信息和所述第三平面位置信息确定所述当前节点的重构几何信息。
  8. 根据权利要求5所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上不构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上不构成平面,且所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上构成平面,则确定所述当前节点在所述第三空间方向上的第三平面位置信息;并基于所述第三平面位置信息确定所述当前节点的重构几何信息。
  9. 根据权利要求4或5所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上构成平面,则解码码流,确定所述当前节点在所述第一空间方向上的第一平面位置信息;否则跳过所述第一平面位置信息的解码;
    若所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上构成平面,则解码码流,确定所述当前节点在所述第二空间方向上的第二平面位置信息;否则跳过所述第二平面位置信息的解码;
    若所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上构成平面,则解码码流,确定所述当前节点在所述第三空间方向上的第三平面位置信息;否则跳过所述第三平面位置信息的解码。
  10. 根据权利要求5-8任一项所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上不构成平面,则确定所述第一平面标识信息指示所述当前节点的被占据子节点所构成的平面与所述第一空间方向垂直;和/或,
    若所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上不构成平面,则确定所述第二平面标识信息指示所述当前节点的被占据子节点所构成的平面与所述第二空间方向垂直;和/或,
    若所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上不构成平面,则确定所述第三平面标识信息指示所述当前节点的被占据子节点所构成的平面与所述第三空间方向垂直。
  11. 根据权利要求1-8任一项所述的方法,其中,所述方法还包括:
    若所述当前节点在所述三个预设空间方向上均符合平面资格判定条件,则执行所述全平面标识信息的确定流程。
  12. 根据权利要求11所述的方法,其中,所述方法还包括:
    若所述当前节点在所述三个预设空间方向上不都符合平面资格判定条件,则对于符合平面资格判定条件的一个或两个空间方向,解码码流,确定所述当前节点在所述一个或两个空间方向上的平面标识信息;
    根据所述当前节点在所述一个或两个空间方向上的平面标识信息确定所述当前节点的重构几何信息。
  13. 根据权利要求1、3、6-8任一项所述的方法,其中,所述方法还包括:
    若平面位置信息的取值为第一值,则确定所述平面位置信息指示所述当前节点的被占据子节点在对应的空间方向上构成高平面;
    若平面位置信息的取值为第二值,则确定所述平面位置信息指示所述当前节点的被占据子节点在对应的空间方向上构成低平面。
  14. 一种点云编码方法,应用于编码器,所述方法包括:
    确定当前节点在三个预设空间方向上的三个平面标识信息;
    若所述三个平面标识信息指示所述当前节点的被占据子节点在所述三个预设空间方向上均构成平面,则设置所述当前节点的全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,将所述全平面标识信息写入码流;
    若所述三个平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则设置所述当前节点的全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,将所述全平面标识信息写入码流。
  15. 根据权利要求14所述的方法,其中,所述方法还包括:
    若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,则确定所述当前节点在所述三个预设空间方向上的三个平面位置信息,并将所述三个平面位置信息写入码流;
    若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则根据所述当前节点在所述第一空间方向上的第一平面标识信息和所述当前节点在所述第二空间方向上的第二平面标识信息进行编码处理;其中,所述第一空间方向和所述第二空间方向为所述三个预设空间方向中的任意两个不同的方向。
  16. 根据权利要求15所述的方法,其中,所述方法还包括:
    若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,则不将所述当前节点在所述三个预设空间方向上的三个平面标识信息写入码流。
  17. 根据权利要求15所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上构成平面,则确定所述当前节点在所述第一空间方向上的第一平面位置信息和所述当前节点在所述第二空间方向上的第二平面位置信息;
    在将所述第一平面标识信息写入码流之后将所述第一平面位置信息写入码流;在将所述第二平面标识信息写入码流之后将所述第二平面位置信息写入码流。
  18. 根据权利要求17所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上构成平面,则不将所述当前节点在第三空间方向的第三平面标识信息写入码流;其中,所述第三空间方向为所述三个预设空间方向中的、所述第一空间方向和所述第二空间方向以外的一个方向。
  19. 根据权利要求15所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上不构成平面,和/或,所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上不构成平面,则确定所述当前节点在所述第三空间方向上的第三平面标识信息;其中,所述第三空间方向为所述三个预设空间方向中的、所述第一空间方向和所述第二空间方向以外的一个方向;
    根据所述第三平面标识信息进行编码处理。
  20. 根据权利要求19所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上不构成平面,且所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上不构成平面,则确定所述当前节点在所述第一空间方向上的第一平面位置信息;并在将所述第一平面标识信息写入码流之后将所述第一平面位置信息写入码流;
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上不构成平面,且所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上构成平面,则确定所述当前节点在所述第一空间方向上的第一平面位置信息和所述当前节点在所述第三空间方向上的第三平面位置信息;并在将所述第一平面标识信息写入码流之后将所述第一平面位置信息写入码流,在将所述第三平面标识信息写入码流之后将所述第三平面位置信息写入码流。
  21. 根据权利要求19所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上不构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上构成平面,且所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上不构成平面,则确定所述当前节点在所述第二空间方向上的第二平面位置信息;并在将所述第二平面标识信息写入码流之后将所述第二平面位置信息写入码流;
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上不构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上构成平面,且所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上构成平面,则确定所述当前节点在所述第二空间方向上的第二平面位置信息和所述当前节点在所述第三空间方向上的第三平面位置信息;并在将所述第二平面标识信息写入码流之后将所述第二平面位置信息写入码流,在将所述第三平面 标识信息写入码流之后所述第三平面位置信息写入码流。
  22. 根据权利要求19所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上不构成平面,且所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上不构成平面,且所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上构成平面,则确定所述当前节点在所述第三空间方向上的第三平面位置信息;并在将所述第三平面标识信息写入码流之后将所述第三平面位置信息写入码流。
  23. 根据权利要求18或19所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上构成平面,则在编码所述第一平面标识信息之后,编码所述当前节点在所述第一空间方向上的第一平面位置信息;否则在编码所述第一平面标识信息之后,跳过所述第一平面位置信息的编码;
    若所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上构成平面,则在编码所述第二平面标识信息之后,编码所述当前节点在所述第二空间方向上的第二平面位置信息;否则在编码所述第二平面标识信息之后,跳过所述第二平面位置信息的编码;
    若所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上构成平面,则在编码所述第三平面标识信息之后,编码所述当前节点在所述第三空间方向上的第三平面位置信息;否则在编码所述第三平面标识信息之后,跳过所述第三平面位置信息的编码。
  24. 根据权利要求19-22任一项所述的方法,其中,所述方法还包括:
    若所述第一平面标识信息指示所述当前节点的被占据子节点在所述第一空间方向上不构成平面,则确定所述第一平面标识信息指示所述当前节点的被占据子节点所构成的平面与所述第一空间方向垂直;和/或,
    若所述第二平面标识信息指示所述当前节点的被占据子节点在所述第二空间方向上不构成平面,则确定所述第二平面标识信息指示所述当前节点的被占据子节点所构成的平面与所述第二空间方向垂直;和/或,
    若所述第三平面标识信息指示所述当前节点的被占据子节点在所述第三空间方向上不构成平面,则确定所述第三平面标识信息指示所述当前节点的被占据子节点所构成的平面与所述第三空间方向垂直。
  25. 根据权利要求14-22任一项所述的方法,其中,所述方法还包括:
    若所述当前节点在所述三个预设空间方向上均符合平面资格判定条件,则执行所述全平面标识信息的确定流程,并将所述全平面标识信息写入码流。
  26. 根据权利要求25所述的方法,其中,所述方法还包括:
    若所述当前节点在所述三个预设空间方向上不都符合平面资格判定条件,则对于符合平面资格判定条件的一个或两个空间方向,确定所述当前节点在所述一个或两个空间方向上的平面标识信息;
    根据所述当前节点在所述一个或两个空间方向上的平面标识信息进行编码处理。
  27. 根据权利要求14、18、20-22任一项所述的方法,其中,所述方法还包括:
    若平面位置信息的取值为第一值,则确定所述平面位置信息指示所述当前节点的被占据子节点在对应的空间方向上构成高平面;
    若平面位置信息的取值为第二值,则确定所述平面位置信息指示所述当前节点的被占据子节点在对应的空间方向上构成低平面。
  28. 一种解码器,所述解码器包括:解码部分,第一确定部分,
    所述解码部分,配置为解码码流;
    所述第一确定部分,配置为确定当前节点的全平面标识信息;
    所述解码部分,还配置为若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面,则解码码流;
    所述第一确定部分,还配置为确定所述当前节点在所述三个预设空间方向上的三个平面位置信息,并基于所述三个平面位置信息确定所述当前节点的重构几何信息;
    所述解码部分,还配置为若所述全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则解码码流;
    所述第一确定部分,还配置为确定所述当前节点在所述第一空间方向上的第一平面标识信息和所述当前节点在所述第二空间方向上的第二平面标识信息,并根据所述第一平面标识信息和所述第二平面标识信息确定所述当前节点的重构几何信息;其中,所述第一空间方向和所述第二空间方向为所述三个预设空间方向中的任意两个不同的方向。
  29. 一种解码器,所述解码器包括第一处理器、存储有所述第一处理器可执行指令的第一存储器, 当所述指令被执行时,所述第一处理器执行时实现如权利要求1-13任一项所述的方法。
  30. 一种编码器,所述编码器包括:第二确定部分,编码部分,
    所述第二确定部分,配置为确定当前节点在三个预设空间方向上的三个平面标识信息;若所述三个平面标识信息指示所述当前节点的被占据子节点在所述三个预设空间方向上均构成平面,则设置所述当前节点的全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上均构成平面;
    所述第二确定部分,还配置为若所述三个平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面,则设置所述当前节点的全平面标识信息指示所述当前节点的被占据子节点在三个预设空间方向上不全构成平面;
    所述编码部分,配置为将所述全平面标识信息写入码流。
  31. 一种编码器,所述编码器包括第二处理器、存储有所述第二处理器可执行指令的第二存储器,当所述指令被执行时,所述第二处理器执行时实现如权利要求14-27任一项所述的方法。
  32. 一种计算机存储介质,其中,所述计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如权利要求1-13任一项所述的方法,所述计算机程序被第二处理器执行时实现如权利要求14-27任一项所述的方法。
PCT/CN2022/104466 2022-07-07 2022-07-07 点云编解码方法、编解码器及计算机存储介质 WO2024007268A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2022/104466 WO2024007268A1 (zh) 2022-07-07 2022-07-07 点云编解码方法、编解码器及计算机存储介质
TW112125249A TW202408236A (zh) 2022-07-07 2023-07-06 點雲編解碼方法、編解碼器及電腦儲存媒介

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2022/104466 WO2024007268A1 (zh) 2022-07-07 2022-07-07 点云编解码方法、编解码器及计算机存储介质

Publications (1)

Publication Number Publication Date
WO2024007268A1 true WO2024007268A1 (zh) 2024-01-11

Family

ID=89454567

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2022/104466 WO2024007268A1 (zh) 2022-07-07 2022-07-07 点云编解码方法、编解码器及计算机存储介质

Country Status (2)

Country Link
TW (1) TW202408236A (zh)
WO (1) WO2024007268A1 (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111612059A (zh) * 2020-05-19 2020-09-01 上海大学 一种基于pointpillars的多平面编码点云特征深度学习模型的构建方法
US20210192271A1 (en) * 2019-12-23 2021-06-24 Beijing Institute Of Technology Method and Apparatus for Pose Planar Constraining on the Basis of Planar Feature Extraction
US20210407143A1 (en) * 2020-06-22 2021-12-30 Qualcomm Incorporated Planar and azimuthal mode in geometric point cloud compression
CN114008997A (zh) * 2019-06-28 2022-02-01 黑莓有限公司 基于八叉树的点云编码中的平面模式的上下文确定

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114008997A (zh) * 2019-06-28 2022-02-01 黑莓有限公司 基于八叉树的点云编码中的平面模式的上下文确定
US20210192271A1 (en) * 2019-12-23 2021-06-24 Beijing Institute Of Technology Method and Apparatus for Pose Planar Constraining on the Basis of Planar Feature Extraction
CN111612059A (zh) * 2020-05-19 2020-09-01 上海大学 一种基于pointpillars的多平面编码点云特征深度学习模型的构建方法
US20210407143A1 (en) * 2020-06-22 2021-12-30 Qualcomm Incorporated Planar and azimuthal mode in geometric point cloud compression

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"G-PCC 2nd Edition codec description", 138. MPEG MEETING; 20220425 - 20220429; ONLINE; (MOTION PICTURE EXPERT GROUP OR ISO/IEC JTC1/SC29/WG11), 21 June 2022 (2022-06-21), XP030302661 *

Also Published As

Publication number Publication date
TW202408236A (zh) 2024-02-16

Similar Documents

Publication Publication Date Title
CN113615181B (zh) 用于点云编解码的方法、装置
US20240282009A1 (en) Point cloud encoding and decoding method, and decoder
WO2021062771A1 (zh) 颜色分量预测方法、编码器、解码器及计算机存储介质
WO2024007268A1 (zh) 点云编解码方法、编解码器及计算机存储介质
WO2022109885A1 (zh) 点云编解码方法、编码器、解码器以及计算机存储介质
WO2024011472A1 (zh) 点云编解码方法、编解码器及计算机存储介质
WO2022170511A1 (zh) 点云解码方法、解码器及计算机存储介质
WO2024103513A1 (zh) 点云编解码方法、编码器、解码器、码流及存储介质
WO2023240662A1 (zh) 编解码方法、编码器、解码器以及存储介质
WO2024187380A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2024082152A1 (zh) 编解码方法及装置、编解码器、码流、设备、存储介质
WO2022170521A1 (zh) 几何重构方法、解码器以及计算机存储介质
WO2024174092A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2024082135A1 (zh) 编解码方法、编解码器、码流以及计算机存储介质
WO2023142133A1 (zh) 编码方法、解码方法、编码器、解码器及存储介质
WO2024148598A1 (zh) 编解码方法、编码器、解码器以及存储介质
WO2024082153A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
RU2826546C1 (ru) Способ кодирования и декодирования облака точек, кодер, декодер и компьютерный носитель данных
WO2024174086A1 (zh) 解码方法、编码方法、解码器以及编码器
WO2024159534A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2024082127A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2024182978A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2023201450A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2024119420A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2024119518A1 (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: 22949852

Country of ref document: EP

Kind code of ref document: A1