Encoding / decoding method, code stream, encoder, decoder, and storage medium
By limiting the relationship between the bounding box size and the number of points of the point cloud node, the problems of insufficient robustness and stability in the point cloud encoding and decoding framework are solved, and a more stable encoding and decoding process and efficient point cloud data reconstruction are achieved.
Patent Information
- Application Number
- PCT/CN2023/077451
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-02-21
- Publication Date
- 2025-09-25
AI Technical Summary
In the existing point cloud encoding and decoding framework, the relationship between the number of points of the current node and the size of the bounding box is not specified, resulting in insufficient robustness and stability of the codec.
By limiting the relationship between the bounding box size and the number of points of the current node, reconstruction or encoding processing is ensured when it meets the preset conditions. Syntax element identification information is used to indicate the bounding box volume, number of points and removal of duplicate points to generate a code stream.
The robustness and stability of the codec are improved without affecting the encoding and decoding efficiency, ensuring the complete reconstruction of point cloud data.
Smart Images

Figure CN2023077451_25092025_PF_FP_ABST
Abstract
Description
Coding and decoding method, code stream, encoder, decoder and storage medium Technical Field
[0001] The embodiments of the present application relate to the field of point cloud data processing technology, and in particular to a coding and decoding method, a bit stream, an encoder, a decoder, and a storage medium. Background Art
[0002] Currently, in point cloud encoding and decoding frameworks, including the Geometry-based Point Cloud Compression (G-PCC) encoding and decoding framework, the Audio Vedio Standard (AVS) encoder framework, the Low latency, Low complexity coding (Low latency, Low complexity coding) framework, and so on, the geometric information and attribute information of the point cloud are encoded separately. For the encoding of geometric information, the coordinates of the geometric information are first transformed so that the point cloud is contained in a bounding box. The bounding box is then preprocessed, and the preprocessing process includes quantization and removal of duplicate points. Next, the preprocessed bounding box is encoded. For the decoding of set information, the number of points of the current node and the size of the bounding box are first decoded, and then the geometric information of the current node is decoded to reconstruct the point cloud.
[0003] In the above encoding and decoding process, there is no regulation on the relationship between the number of points of the current node and the size of the bounding box, which cannot guarantee the robustness and stability of the codec.
[0004] Summary of the Invention
[0005] The embodiments of the present application provide a coding and decoding method, a code stream, an encoder, a decoder, and a storage medium, which can ensure the robustness and stability of the codec by limiting the relationship between the number of points and the bounding box volume.
[0006] The technical solution of the embodiment of the present application can be implemented as follows:
[0007] In a first aspect, an embodiment of the present application provides a decoding method, applied to a decoder, the method comprising:
[0008] Determine the bounding box size of the current node and the number of points of the current node;
[0009] When it is determined that the bounding box size and the number of points of the current node meet preset conditions, the current node is reconstructed to determine a reconstructed point cloud of the current node.
[0010] In a second aspect, an embodiment of the present application provides an encoding method, applied to an encoder, the method comprising:
[0011] Determine the bounding box size of the current node and the number of points of the current node;
[0012] When it is determined that the bounding box size and the number of points of the current node meet the preset conditions, encoding processing is performed on the current node to determine encoding information, and the encoding information of the current node is written into the bitstream.
[0013] In a third aspect, an embodiment of the present application provides a code stream, which is generated by bit encoding based on information to be encoded; wherein the information to be encoded includes at least one of the following: first-type syntax element identification information for indicating the volume of a bounding box of a current node, second-type syntax element identification information for indicating the number of points of the current node, and third-type syntax element identification information for indicating that the current node is a node for removing duplicate points.
[0014] In a fourth aspect, an embodiment of the present application provides an encoder, comprising a first determining unit and an encoding unit; wherein,
[0015] The first determining unit is configured to determine a size of a bounding box of a current node and determine the number of points of the current node;
[0016] The encoding unit is configured to, when determining that the bounding box size and the number of points of the current node meet a preset condition, perform encoding processing on the current node to determine encoding information, and write the encoding information of the current node into a bitstream.
[0017] In a fifth aspect, an embodiment of the present application provides an encoder, comprising a first memory and a first processor; wherein,
[0018] a first memory for storing a computer program capable of running on the first processor;
[0019] The first processor is configured to execute the method according to the first aspect or the third aspect when running a computer program.
[0020] In a sixth aspect, an embodiment of the present application provides a decoder, comprising a decoding unit and a second determining unit; wherein,
[0021] The decoding unit is configured to determine a size of a bounding box of a current node and determine the number of points of the current node;
[0022] The second determining unit is configured to decode the current node to determine a reconstructed point cloud of the current node when determining that the bounding box size and the number of points of the current node meet preset conditions.
[0023] In a seventh aspect, an embodiment of the present application provides a decoder, the decoder comprising a second memory and a second processor; wherein,
[0024] a second memory for storing a computer program capable of running on the second processor;
[0025] The second processor is configured to execute the method according to the second aspect when running a computer program.
[0026] In an eighth aspect, an embodiment of the present application provides a computer-readable storage medium storing a computer program, which, when executed, implements the method described in the first aspect, the method described in the second aspect, or the method described in the third aspect.
[0027] The embodiments of the present application provide a coding and decoding method, a code stream, an encoder, a decoder, and a storage medium. At the decoding end, the bounding box volume of the current node is determined, and the number of points of the current node is determined. When it is determined that the bounding box volume and the number of points of the current node meet preset conditions, the current node is reconstructed to determine the reconstructed point cloud of the current node. In this way, if the current node is subjected to the operation of removing duplicate points, there will be no duplicate points in the current node. There are at most (length × width × height) points in the bounding box of the current node, that is, the number of points of the current node is definitely less than or equal to the bounding box volume. By limiting the relationship between the number of points and the bounding box volume, the robustness and stability of the codec can be guaranteed without affecting the coding and decoding efficiency. BRIEF DESCRIPTION OF THE DRAWINGS
[0028] FIG1A is a schematic diagram of a three-dimensional point cloud image;
[0029] FIG1B is a partially enlarged schematic diagram of a three-dimensional point cloud image;
[0030] FIG2A is a schematic diagram of a point cloud image at different viewing angles;
[0031] FIG2B is a schematic diagram of a data storage format corresponding to FIG2A ;
[0032] FIG3 is a schematic diagram of a network architecture for point cloud encoding and decoding;
[0033] FIG4A is a schematic block diagram of a G-PCC encoder;
[0034] FIG4B is a schematic block diagram of a G-PCC decoder;
[0035] FIG5A is a schematic diagram of an intersection of seed blocks;
[0036] FIG5B is a schematic diagram of fitting a triangular facet set;
[0037] FIG5C is a schematic diagram of upsampling of a triangle face set;
[0038] FIG6A is a block diagram of an AVS encoder;
[0039] FIG6B is a block diagram of an AVS decoder;
[0040] FIG7 is a schematic diagram of a flowchart of a decoding method provided in an embodiment of the present application;
[0041] FIG8 is a schematic diagram of a flow chart of an encoding method provided in an embodiment of the present application;
[0042] FIG9 is a schematic diagram of the structure of an encoder provided in an embodiment of the present application;
[0043] FIG10 is a schematic diagram of a specific hardware structure of an encoder provided in an embodiment of the present application;
[0044] FIG11 is a schematic diagram of the structure of a decoder provided in an embodiment of the present application;
[0045] FIG12 is a schematic diagram of a specific hardware structure of a decoder provided in an embodiment of the present application;
[0046] FIG13 is a schematic diagram of the composition structure of a coding and decoding system provided in an embodiment of the present application. DETAILED DESCRIPTION
[0047] In order to enable a more detailed understanding of the features and technical contents of the embodiments of the present application, the implementation of the embodiments of the present application is described in detail below with reference to the accompanying drawings. The attached drawings are for reference only and are not used to limit the embodiments of the present application.
[0048] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by those skilled in the art to which this application pertains. The terms used herein are for the purpose of describing the embodiments of this application only and are not intended to limit this application.
[0049] In the following description, reference is made to “some embodiments”, which describes a subset of all possible embodiments, but it will be understood that “some embodiments” may be the same subset or different subsets of all possible embodiments and may be combined with each other without conflict.
[0050] It should also be pointed out that the terms "first\second\third" involved in the embodiments of the present application are only used to distinguish similar objects and do not represent a specific ordering of the objects. It can be understood that "first\second\third" can be interchanged with a specific order or sequence where permitted, so that the embodiments of the present application described here can be implemented in an order other than that illustrated or described here.
[0051] Point cloud is a three-dimensional representation of the surface of an object. Point cloud (data) of the surface of an object can be collected through acquisition equipment such as photoelectric radar, lidar, laser scanner, and multi-view camera.
[0052] A point cloud is a set of irregularly distributed discrete points in space that express the spatial structure and surface properties of a three-dimensional object or scene. Figure 1A shows a three-dimensional point cloud image and Figure 1B shows a partially enlarged view of the three-dimensional point cloud image. It can be seen that the point cloud surface is composed of densely distributed points.
[0053] In a two-dimensional image, each pixel contains information and is distributed regularly, so there's no need to record its location. However, the distribution of points in a point cloud in three-dimensional space is random and irregular, so recording the location of each point in space is necessary to fully represent the point cloud. Similar to a two-dimensional image, each location in the acquisition process has corresponding attribute information, typically an RGB color value, which reflects the object's color. For a point cloud, in addition to color information, each point's attribute information often includes a reflectance value, which reflects the surface texture of the object. Therefore, a point in a point cloud can include both location information and attribute information. For example, the location information of a point can be its three-dimensional coordinates (x, y, z). The location information of a point can also be referred to as its geometric information. For example, the attribute information of a point can include color information (three-dimensional color information) and / or reflectance (one-dimensional reflectance information r). For example, the color information can be information in any color space. For example, the color information can be RGB information, where R represents red (R), G represents green (G), and B represents blue (B). For another example, the color information may be luminance and chrominance (YCbCr, YUV) information, where Y represents brightness (Luma), Cb (U) represents blue color difference, and Cr (V) represents red color difference.
[0054] For example, a point cloud generated using laser measurement principles can include both its 3D coordinate information and its reflectivity. For another example, a point cloud generated using photogrammetry principles can include both its 3D coordinate information and its 3D color information. For another example, a point cloud generated using a combination of laser measurement and photogrammetry principles can include both its 3D coordinate information, its reflectivity value, and its 3D color information.
[0055] Figures 2A and 2B show a point cloud image and its corresponding data storage format. Figure 2A provides six viewing angles of the point cloud image, while Figure 2B consists of a file header and data. The header includes the data format, data representation type, the total number of points in the point cloud, and the content represented by the point cloud. For example, the point cloud is in ".ply" format, represented by ASCII code, with a total of 207,242 points. Each point has 3D coordinate information (x, y, z) and 3D color information (r, g, b).
[0056] Point clouds can be divided into the following categories according to the acquisition method:
[0057] Static point cloud: the object is stationary and the device that acquires the point cloud is also stationary;
[0058] Dynamic point cloud: The object is moving, but the device that obtains the point cloud is stationary;
[0059] Dynamic point cloud acquisition: The device used to acquire the point cloud is in motion.
[0060] For example, point clouds can be divided into two categories according to their usage:
[0061] 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 disaster relief robots;
[0062] Category 2: Human eye perception point cloud, which can be used in point cloud application scenarios such as digital cultural heritage, free viewpoint broadcasting, 3D immersive communication, and 3D immersive interaction.
[0063] Point clouds can flexibly and conveniently express the spatial structure and surface properties of three-dimensional objects or scenes. Moreover, since point clouds are obtained by directly sampling real objects, they can provide a strong sense of reality while ensuring accuracy. Therefore, they are widely used, including virtual reality games, computer-aided design, geographic information systems, automatic navigation systems, digital cultural heritage, free viewpoint broadcasting, three-dimensional immersive remote presentation, and three-dimensional reconstruction of biological tissues and organs.
[0064] Point clouds are primarily collected through computer generation, 3D laser scanning, and 3D photogrammetry. Computers can generate point clouds of virtual 3D objects and scenes; 3D laser scanning can obtain point clouds of static real-world 3D objects or scenes, generating millions of point clouds per second; and 3D photogrammetry can obtain point clouds of dynamic real-world 3D objects or scenes, generating tens of millions of point clouds per second. These technologies reduce the cost and time required to acquire point cloud data while improving data accuracy. While changes in point cloud data acquisition methods have made it possible to acquire large amounts of point cloud data, the processing of this massive amount of 3D point cloud data is facing bottlenecks due to storage space and transmission bandwidth constraints, as application demands grow.
[0065] For example, taking a point cloud video with a frame rate of 30 frames per second (fps), each frame contains 700,000 points, and each point has coordinate information (xyz, float) and color information (RGB, uchar). The data volume of a 10-second point cloud video is approximately 0.7 million × (4 bytes × 3 + 1 byte × 3) × 30 fps × 10 seconds = 3.15 GB. Where 1 byte is 10 bits, and the YUV sampling format is 4:2:0, and the frame rate is 24 fps, the data volume of a 1280 × 720 2D video is approximately 1280 × 720 × 12 bits × 24 fps × 10 seconds ≈ 0.33 GB. The data volume of a 10-second two-view 3D video is approximately 0.33 × 2 = 0.66 GB. This shows that the data volume of a point cloud video far exceeds that of a 2D or 3D video of the same length. Therefore, in order to better realize data management, save server storage space, and reduce the transmission traffic and transmission time between the server and the client, point cloud compression has become a key issue in promoting the development of the point cloud industry.
[0066] That is to say, since the point cloud is a collection of massive points, storing the point cloud not only consumes a lot of memory, but is also not conducive to transmission. There is also not enough bandwidth to support direct transmission of the point cloud at the network layer without compression. Therefore, the point cloud needs to be compressed.
[0067] Currently, the point cloud coding framework that can compress point clouds can be the geometry-based Point Cloud Compression (G-PCC) codec framework or the video-based Point Cloud Compression (V-PCC) codec framework provided by the Moving Picture Experts Group (MPEG), or the AVS-PCC codec framework provided by AVS. The G-PCC codec framework can be used to compress the first type of static point clouds and the third type of dynamically acquired point clouds, which can be based on the Point Cloud Compression Test Platform (Test Model Compression 13, TMC13). The V-PCC codec framework can be used to compress the second type of dynamic point clouds, which can be based on the Point Cloud Compression Test Platform (Test Model Compression 2, TMC2). Therefore, the G-PCC codec framework is also called the point cloud codec TMC13, and the V-PCC codec framework is also called the point cloud codec TMC2.
[0068] The embodiment of the present application provides a network architecture of a point cloud encoding and decoding system including a decoding method and an encoding method. FIG3 is a schematic diagram of a network architecture of a point cloud encoding and decoding system provided by the embodiment of the present application. As shown in FIG3 , the network architecture includes one or more electronic devices 13 to 1N and a communication network 01, wherein the electronic devices 13 to 1N can perform video interaction through the communication network 01. During implementation, the electronic device can be various types of devices with point cloud encoding and decoding functions. For example, the electronic device can include a mobile phone, a tablet computer, a personal computer, a personal digital assistant, a navigator, a digital phone, a video phone, a television, a sensor device, a server, etc., and the embodiment of the present application does not limit this. Among them, the decoder or encoder in the embodiment of the present application can be the above-mentioned electronic device.
[0069] Among them, the electronic device in the embodiment of the present application has a point cloud encoding and decoding function, generally including a point cloud encoder (ie, encoder) and a point cloud decoder (ie, decoder).
[0070] The following describes the related technologies using the G-PCC codec framework and the AVS codec framework as examples.
[0071] As you can understand, in the point cloud G-PCC codec framework, the point cloud data to be encoded is first divided into multiple slices through slice partitioning. In each slice, the geometric information of the point cloud and the attribute information corresponding to each point cloud are encoded separately.
[0072] Figure 4A shows a schematic diagram of the G-PCC encoder architecture. As shown in Figure 4A, during the geometry encoding process, the geometric information is transformed so that the entire point cloud is contained within a bounding box. Quantization is then performed. This quantization step primarily serves a scaling purpose. Due to quantization rounding, the geometric information of some point clouds becomes identical. Parameters are then used to determine whether to remove duplicate points. This process of quantization and removing duplicate points is also known as voxelization. The bounding box is then partitioned into an octree or a prediction tree is constructed. During this process, arithmetic coding is performed on the points in the leaf nodes of the partition to generate a binary geometry bitstream. Alternatively, arithmetic coding is performed on the intersection points (vertices) generated by the partition (surface fitting is performed based on the intersection points) to generate a binary geometry bitstream. During the attribute encoding process, after the geometry encoding is completed and the geometric information is reconstructed, color conversion is performed to convert the color information (i.e., attribute information) from the RGB color space to the YUV color space. The reconstructed geometry information is then used to recolor the point cloud so that the unencoded attribute information corresponds to the reconstructed geometry information. Attribute encoding is mainly performed on color information. In the color information encoding process, there are two main transformation methods. One is the distance-based lifting transformation that relies on the level of detail (LOD) division, and the other is the direct region adaptive hierarchical transformation (RAHT). Both methods convert color information from the spatial domain to the frequency domain, obtain high-frequency coefficients and low-frequency coefficients through transformation, and finally quantize the coefficients. Then, the quantized coefficients are arithmetically encoded to generate a binary attribute bit stream.
[0073] Figure 4B shows a schematic diagram of the composition framework of a G-PCC decoder. As shown in Figure 4B, for the acquired binary bit stream, the geometric bit stream and attribute bit stream in the binary bit stream are first decoded independently. When decoding the geometric bit stream, the geometric information of the point cloud is obtained through arithmetic decoding-reconstruction of the octree / reconstruction of the prediction tree-reconstruction of the geometry-coordinate inverse conversion; when decoding the attribute bit stream, the attribute information of the point cloud is obtained through arithmetic decoding-inverse quantization-LOD partitioning / RAHT-color inverse conversion, and the point cloud data to be encoded (i.e., the output point cloud) is restored based on the geometric information and attribute information.
[0074] It should be noted that, as shown in FIG4A or FIG4B , the current geometric coding and decoding of G-PCC can be divided into octree-based geometric coding and decoding (marked by a dotted box) and prediction tree-based geometric coding and decoding (marked by a dotted box).
[0075] For Octree geometry encoding (OctGeomEnc), the octree-based geometry encoding includes: first, coordinate conversion of the geometric information so that all point clouds are contained in a Bounding Box. Then quantization is performed. This step of quantization mainly plays a role of scaling. Due to the quantization rounding, the geometric information of some points is the same. The parameters are used to decide whether to remove duplicate points. The process of quantization and removal of duplicate points is also called voxelization. Next, the Bounding Box is continuously divided into trees (such as octrees, quadtrees, binary trees, etc.) in the order of breadth-first traversal, and the placeholder code of each node is encoded. In related technologies, a company proposed an implicit geometric division method. First, the bounding box of the point cloud is calculated. Assume d x >d y >d z , the bounding box corresponds to a cuboid. When geometrically partitioning, the binary tree partitioning will be performed based on the x-axis to obtain two child nodes; until d is satisfied x =d y >d z When the conditions are met, the quadtree partitioning will be performed based on the x and y axes to obtain four child nodes; when d is finally satisfied x =d y =d z When the conditions are met, the octree partitioning will continue until the leaf node obtained by the partitioning is a 1×1×1 unit cube. The partitioning will stop and the points in the leaf node will be encoded to generate a binary code stream. In the process of binary tree / quadtree / octree partitioning, two parameters are introduced: K and M. Parameter K indicates the maximum number of binary tree / quadtree partitions before octree partitioning; parameter M is used to indicate that the minimum block side length corresponding to binary tree / quadtree partitioning is 2 M . At the same time, K and M must meet the following conditions: Assume d max =max(d x ,d y ,d z ), d min =min(d x ,d y ,d z ), parameter K satisfies: K ≥ d max -d min ; Parameter M satisfies: M≥d min. The reason why the parameters K and M meet the above conditions is that in the process of geometric implicit partitioning of G-PCC, the priority of the partitioning method is binary tree, quadtree and octree. When the node block size does not meet the conditions of binary tree / quadtree, the node will be divided into octree until it is divided into the minimum unit of leaf node 1×1×1. However, the geometric information coding mode based on octree only has an efficient compression rate for points with correlation in space, and for points in isolated positions in geometric space, the use of direct coding mode (Direct Coding Model, DCM) can greatly reduce the complexity. For all nodes in the octree, the use of DCM is not represented by flag information, but is inferred through the parent node and neighbor information of the current node. There are two ways to determine whether the current node is eligible for DCM encoding:
[0076] (1) The current node has only one occupied child node, and the parent node of the current node's parent node has only two occupied child nodes, that is, the current node has at most one neighbor node.
[0077] (2) The parent node of the current node has only one child node, the current node, and the six neighbor nodes that share a face with the current node are all empty nodes.
[0078] If the current node does not have the DCM coding qualification, it will be divided into octrees. If it has the DCM coding qualification, the number of points contained in the node will be further determined. When the number of points is less than a threshold (e.g., 2), the node will be DCM-encoded. Otherwise, the octree division will continue. When the DCM coding mode is applied, the geometric coordinate (x, y, z) components of the points contained in the current node will be directly encoded independently. When the side length of a node is 2 d When , d bits are required to encode each component of the node's geometric coordinates, and this bit information is directly written into the code stream.
[0079] It is important to note that when partitioning nodes into leaf nodes, the number of duplicate points in the leaf nodes must be encoded in the case of lossless geometric coding. Ultimately, the placeholder information for all nodes is encoded to generate a binary bitstream. Furthermore, G-PCC currently introduces a plane coding mode. During the geometric partitioning process, it determines whether the child nodes of the current node are in the same plane. If the child nodes of the current node meet the conditions for being in the same plane, the child nodes of the current node are represented using that plane.
[0080] For octree-based geometric decoding, the decoding end obtains the placeholder code of each node by continuously parsing in the order of breadth-first traversal, and continuously divides the nodes in sequence until a 1×1×1 unit cube is obtained. The division stops and the number of points contained in each leaf node is parsed, and finally the geometric reconstructed point cloud information is restored.
[0081] For triangle soup (trisoup)-based geometric information coding, geometric partitioning must also be performed first in the trisoup-based geometric information coding framework. However, unlike geometric information coding based on binary trees, quadtrees, and octrees, this method does not require step-by-step partitioning of the point cloud into unit cubes with side lengths of 1×1×1. Instead, the partitioning stops when the sub-blocks (blocks) have a side length of W. Based on the surface formed by the distribution of the point cloud in each block, the surface and the twelve edges of the block are obtained. The vertex coordinates of each block are encoded in sequence to generate a binary code stream.
[0082] For trisoup-based point cloud geometry reconstruction, when performing point cloud geometry reconstruction at the decoding end, the vertex coordinates are first decoded to complete the triangle face reconstruction. This process is shown in Figures 5A, 5B, and 5C. Among them, there are three intersection points (v1, v2, v3) in the block shown in Figure 5A. The set of triangle faces formed by these three intersection points in a certain order is called triangle soup, or trisoup, as shown in Figure 5B. Afterwards, sampling is performed on the triangle face set, and the obtained sampling points are used as the reconstructed point cloud within the block, as shown in Figure 5C.
[0083] Predictive geometry coding (PredGeomTree) involves first sorting the input point cloud. Currently used sorting methods include unordered, Morton order, azimuth order, and radial distance order. At the encoding end, the prediction tree structure is established using two different methods: a high-latency slow mode (KD-Tree) and a low-latency fast mode (using lidar calibration information). When using lidar calibration information, each point is assigned to a different laser, and a prediction tree structure is established based on the different lasers. Next, based on the prediction tree structure, each node in the prediction tree is traversed. Different prediction modes are selected to predict the node's geometric position information to obtain a geometric prediction residual, which is then quantized using a quantization parameter. Finally, through continuous iteration, the prediction residual of the prediction tree node position information, the prediction tree structure, and the quantization parameter are encoded to generate a binary bitstream.
[0084] For geometric decoding based on the prediction tree, the decoding end reconstructs the prediction tree structure by continuously parsing the bit stream. Secondly, the geometric position prediction residual information and quantization parameters of each prediction node are obtained through parsing, and the prediction residual is dequantized to restore the reconstructed geometric position information of each node, finally completing the geometric reconstruction at the decoding end.
[0085] After the geometric encoding is completed, the geometric information needs to be reconstructed. At present, attribute encoding is mainly performed on color information. First, the color information is converted from the RGB color space to the YUV color space. Then, the point cloud is recolored using the reconstructed geometric information so that the unencoded attribute information corresponds to the reconstructed geometric information. In color information encoding, there are two main transformation methods. One is the distance-based lifting transformation that relies on LOD partitioning, and the other is to directly perform RAHT transformation. Both methods will convert the color information from the spatial domain to the frequency domain, and obtain high-frequency coefficients and low-frequency coefficients through transformation. Finally, the coefficients are quantized and encoded to generate a binary bit stream (which can be simply referred to as "code stream").
[0086] When using geometric information to predict attribute information, Morton codes can be used to perform nearest neighbor searches. The Morton code corresponding to each point in the point cloud can be obtained from the geometric coordinates of the point. The specific method for calculating the Morton code is described below. For a three-dimensional coordinate represented by a d-bit binary number for each component, its three components can be expressed as:
[0087] Among them, x l ,y l ,z l∈{0,1} are the binary values corresponding to the highest bit (l=1) to the lowest bit (l=d) of x, y, and z respectively. The Morton code M is to cross-arrange x, y, and z starting from the highest bit. l ,y l ,z l To the lowest bit, the calculation formula of M is as follows:
[0088] Among them, m l ′∈{0,1} are the values of the highest bit (l′=1) to the lowest bit (l′=3d) of M. After obtaining the Morton code M of each point in the point cloud, the points in the point cloud are arranged in ascending order of the Morton code, and the weight value w of each point is set to 1.
[0089] It can also be understood that for the G-PCC codec framework, the general test conditions are as follows:
[0090] (1) There are 4 test conditions:
[0091] Condition 1: The geometric position is limited and the attributes are lost;
[0092] Condition 2: Geometric position lossless, attribute lossy;
[0093] Condition 3: Geometric position lossless, attribute loss limited;
[0094] Condition 4: Geometric position and attributes are lossless.
[0095] (2) The general test sequences include Cat1A, Cat1B, Cat3-fused, and Cat3-frame. Among them, Cat2-frame point clouds only contain reflectance attribute information, Cat1A and Cat1B point clouds only contain color attribute information, and Cat3-fused point clouds contain both color and reflectance attribute information.
[0096] (3) Technical routes: There are two types in total, which are distinguished by the algorithm used for geometric compression.
[0097] Technical route 1: Octree encoding branch.
[0098] At the encoding end, the bounding box is divided into sub-cubes in sequence, and the non-empty sub-cubes (containing points in the point cloud) are divided again until the leaf node obtained is a 1×1×1 unit cube. In the case of geometric lossless coding, the number of points contained in the leaf node needs to be encoded, and finally the geometric octree encoding is completed to generate a binary code stream.
[0099] At the decoding end, the decoding end obtains the placeholder code of each node by continuously parsing in the order of breadth-first traversal, and continuously divides the nodes in turn until a 1×1×1 unit cube is obtained. In the case of geometric lossless decoding, it is necessary to parse the number of points contained in each leaf node and finally recover the geometrically reconstructed point cloud information.
[0100] Technical route 2: prediction tree encoding branch.
[0101] At the encoding end, the prediction tree structure is established using two different methods: based on KD-Tree (high-latency slow mode) and using lidar calibration information (low-latency fast mode). For lidar calibration information, each point can be divided into different lasers, and the prediction tree structure is established according to different lasers. Next, based on the prediction tree structure, each node in the prediction tree is traversed, and the geometric position information of the node is predicted by selecting different prediction modes to obtain the geometric prediction residual, and the geometric prediction residual is quantized using the quantization parameter. Finally, through continuous iteration, the prediction residual of the node position information, the prediction tree structure, and the quantization parameter are encoded to generate a binary code stream.
[0102] At the decoding end, the decoding end reconstructs the prediction tree structure by continuously parsing the bit stream. Secondly, the geometric position prediction residual information and quantization parameters of each prediction node are obtained through parsing, and the prediction residual is dequantized to restore the reconstructed geometric position information of each node, finally completing the geometric reconstruction at the decoding end.
[0103] It is understood that in the point cloud AVS codec framework, the geometric information of the point cloud and the attribute information corresponding to each point are also encoded separately. Figure 6A shows a schematic diagram of the composition framework of an AVS encoder, and Figure 6B shows a schematic diagram of the composition framework of an AVS encoder.
[0104] In the framework of the AVS encoder, the geometric information is first transformed into coordinates so that all point clouds are contained in a Bounding Box. Before the preprocessing process, it is decided whether to divide the entire point cloud sequence into multiple slices based on the parameter configuration. Each divided slice is treated as a single independent point cloud for serial processing. The preprocessing process includes quantization and removal of duplicate points. Quantization mainly plays a role in scaling. Due to the quantization rounding, the geometric information of some points is the same. Whether to remove duplicate points is determined based on the parameters. Next, the Bounding Box is divided in the order of breadth-first traversal (octree / quadtree / binary tree), and the placeholder code of each node is encoded. In octree-based geometric coding, the bounding box is divided into sub-cubes in sequence. The sub-cubes that are not empty (contain points in the point cloud) are divided again until the leaf node obtained by division is a 1×1×1 unit cube. Then, in the case of geometric lossless coding, the number of points contained in the leaf node is encoded, and finally the geometric octree encoding is completed to generate a binary geometric bit stream (i.e., geometric code stream). In the framework of the AVS decoder, based on the octree-based geometric decoding process, the decoder obtains the placeholder code of each node by continuously parsing in the order of breadth-first traversal, and continuously divides the nodes in sequence until the division is a 1×1×1 unit cube. The number of points contained in each leaf node is parsed and the geometric information is finally recovered.
[0105] After geometric encoding is complete, the geometric information is reconstructed. Currently, attribute encoding primarily targets color and reflectance information. First, a determination is made as to whether color space conversion is required. If so, the color information is converted from RGB to YUV. The reconstructed point cloud is then recolored using the original point cloud to align the unencoded attribute information with the reconstructed geometric information. Color information encoding is divided into two modules: attribute prediction and attribute transformation. The attribute prediction process is as follows: first, the point cloud is reordered, followed by differential prediction. There are two reordering methods: Morton reordering and Hilbert reordering. For cat1A and cat2 sequences, Hilbert reordering is performed; for cat1B and cat3 sequences, Morton reordering is performed. Attribute prediction is then performed on the sorted point cloud using a differential method. Finally, the prediction residual is quantized and entropy coded to generate a binary attribute bitstream. The attribute transformation process is as follows: First, wavelet transform the point cloud attributes and quantize the transform coefficients; second, attribute reconstruction values are obtained through inverse quantization and inverse wavelet transform; then, the difference between the original attribute and the reconstructed attribute value is calculated to obtain the attribute residual and quantized; finally, the quantized transform coefficients and attribute residual are entropy encoded to generate a binary attribute bitstream (i.e., attribute codestream). In the AVS decoder framework, the decoder performs entropy decoding, inverse quantization, attribute prediction compensation / attribute inverse transform, and inverse spatial transform on the attribute bitstream to ultimately recover the attribute information.
[0106] It can also be understood that for the AVS codec framework, the general test conditions are as follows:
[0107] (1) There are 4 test conditions:
[0108] Condition 1: The geometric position is limited and the attributes are lost;
[0109] Condition 2: Geometric position lossless, attribute lossy;
[0110] Condition 3: Geometric position lossless, attribute loss limited;
[0111] Condition 4: Geometric position and attributes are lossless.
[0112] (2) The general test sequence includes five categories: Cat1A, Cat1B, Cat1C, Cat2-frame and Cat3. Among them, Cat1A and Cat2-frame point clouds only contain reflectance attribute information, Cat1B and Cat3 point clouds only contain color attribute information, and Cat1C point cloud contains both color and reflectance attribute information.
[0113] (3) Technical routes: There are two types, which are distinguished by the algorithm used for attribute compression.
[0114] Technical route 1: Prediction branch, attribute compression adopts an intra-frame prediction-based method.
[0115] At the encoding end, the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, the Morton order, the Hilbert order, etc.). First, the prediction algorithm is used to obtain the attribute prediction value. The attribute residual is obtained based on the attribute value and the attribute prediction value. Then, the attribute residual is quantized to generate the quantized residual. Finally, the quantized residual is encoded.
[0116] At the decoding end, the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.). First, the prediction algorithm is used to obtain the attribute prediction value, then the decoding is performed to obtain the quantized residual, and then the quantized residual is dequantized. Finally, the attribute reconstruction value is obtained based on the attribute prediction value and the dequantized residual.
[0117] Technical Route 2: Prediction Transform Branch—Resources are limited. Attribute compression uses a method based on intra-frame prediction and discrete cosine transform (DCT). When encoding quantized transform coefficients, there is a maximum point number X (e.g., 4096), meaning that at most X points can be encoded as a group.
[0118] At the encoding end, the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.). First, the entire point cloud is divided into several small groups with a maximum length of Y (such as 2). These small groups are then combined into several large groups (the number of points in each large group does not exceed X, such as 4096). Then, a prediction algorithm is used to obtain attribute prediction values. Based on the attribute values and attribute prediction values, attribute residuals are obtained. The attribute residuals are transformed by DCT in small groups to generate transform coefficients. The transform coefficients are then quantized to generate quantized transform coefficients. Finally, the quantized transform coefficients are encoded in large groups.
[0119] At the decoding end, the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.). First, the entire point cloud is divided into several small groups with a maximum length of Y (such as 2). Then these small groups are combined into several large groups (the number of points in each large group does not exceed X, such as 4096). The quantized transform coefficients are decoded in large groups, and then the prediction algorithm is used to obtain the attribute prediction value. The quantized transform coefficients are then dequantized and inversely transformed in small groups. Finally, the attribute reconstruction value is obtained based on the attribute prediction value and the dequantized and inversely transformed coefficients.
[0120] Technical Route 3: Prediction Transform Branch - Resources are not limited. Attribute compression uses a method based on intra-frame prediction and DCT transformation. When encoding the quantized transform coefficients, there is no limit on the maximum number of points X, that is, all coefficients are encoded together.
[0121] At the encoding end, the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.). First, the entire point cloud is divided into several small groups with a maximum length of Y (such as 2). Then, a prediction algorithm is used to obtain attribute prediction values. Based on the attribute values and attribute prediction values, attribute residuals are obtained. The attribute residuals are transformed by DCT in groups to generate transformation coefficients. The transformation coefficients are then quantized to generate quantized transformation coefficients. Finally, the quantized transformation coefficients of the entire point cloud are encoded.
[0122] At the decoding end, the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.). First, the entire point cloud is divided into several small groups with a maximum length of Y (such as 2). The quantized transformation coefficients of the entire point cloud are obtained by decoding, and then the prediction algorithm is used to obtain the attribute prediction value. The quantized transformation coefficients are then dequantized and inversely transformed in groups. Finally, the attribute reconstruction value is obtained based on the attribute prediction value and the dequantized and inversely transformed coefficients.
[0123] Technical route 4: Multi-layer transformation branch, attribute compression adopts a method based on multi-layer wavelet transform.
[0124] At the encoding end, the entire point cloud is subjected to multi-layer wavelet transform to generate transform coefficients, which are then quantized to generate quantized transform coefficients. Finally, the quantized transform coefficients of the entire point cloud are encoded.
[0125] At the decoding end, decoding obtains the quantized transform coefficients of the entire point cloud, and then dequantizes and inversely transforms the quantized transform coefficients to obtain attribute reconstruction values.
[0126] An embodiment of the present application provides a coding and decoding method. When encoding / decoding point cloud geometric information, the relationship between the number of points and the bounding box volume of the point cloud reconstructed according to the current node is limited, which can ensure the robustness and stability of the codec without affecting the coding and decoding efficiency.
[0127] The embodiments of the present application will be described in detail below with reference to the accompanying drawings.
[0128] In one embodiment of the present application, referring to FIG7 , a schematic flow chart of a decoding method provided by an embodiment of the present application is shown. As shown in FIG7 , the method may include:
[0129] S701: Determine the bounding box volume of the current node and the number of points of the current node;
[0130] In some embodiments, the current node is a node in the point cloud from which duplicate points are removed. Exemplarily, the current node includes at least one of the following: a current point cloud sequence, a current point cloud frame, a current point cloud tile, or a current point cloud slice.
[0131] In some embodiments, when the current node is a point cloud strip, the entire point cloud sequence is divided into multiple point cloud strips according to parameter configuration, and each point cloud strip is treated as a single independent point cloud for processing.
[0132] In some embodiments, when the current node is a point cloud slice, the entire point cloud sequence is divided into multiple point cloud slices according to parameter configuration, and each point cloud slice is treated as a single independent point cloud for processing.
[0133] In some embodiments, determining the bounding box volume of the current node includes: decoding a bitstream to determine first-category syntax element identification information of the current node; and determining the bounding box volume of the current node based on the first-category syntax element identification information. The first-category syntax element identification information can be understood as a set of one or more syntax element identification information.
[0134] It should be noted that the first type of syntax element can be a high-level syntax element of the current node, which is used to indicate the bounding box volume of the current node. The first type of syntax element includes at least one of a sequence-level syntax element, a frame-level syntax element, a strip-level syntax element, and a slice-level syntax element. In some embodiments, when the current node is a point cloud slice, the first type of syntax element is a slice-level syntax element, which can be located at the slice header; when the current node is a point cloud strip, the first type of syntax element is a strip-level syntax element, which can be located at the strip header; when the current node is a point cloud frame, the first type of syntax element is a frame-level syntax element, which can be located at the frame header; when the current node is a point cloud sequence, the first type of syntax element is a sequence-level syntax element, which can be located at the sequence header.
[0135] It should be noted that the first type of syntax element identification information is used to directly indicate the bounding box volume, or the first type of syntax element is used to indicate the length, width and height of the bounding box of the current node, and the bounding box volume is further obtained based on the product of the length, width and height of the bounding box.
[0136] Exemplarily, the first category of syntax elements includes: first syntax element identification information, second syntax element identification information and third syntax element identification information; the first syntax element identification information is used to indicate the length (length) of the bounding box, the second syntax element identification information is used to indicate the width (width) of the bounding box and the third syntax element identification information is used to indicate the height (height) of the bounding box.
[0137] Determining the volume of the bounding box of the current node based on the first type of syntax element identification information includes: determining the length of the bounding box based on the first syntax element identification information; determining the width of the bounding box based on the second syntax element identification information; determining the height of the bounding box based on the third syntax element identification information; and calculating the product of the length, width, and height of the bounding box of the current node to determine the volume of the bounding box of the current node.
[0138] In some embodiments, the first syntax element identification information includes at least two sub-syntax element identification information; the second syntax element identification information includes at least two sub-syntax element identification information; and the third syntax element identification information includes at least two sub-syntax element identification information.
[0139] It should be noted that two or more sub-syntax elements can be used to indicate the bounding box size, each sub-syntax element being used to indicate the value of a portion of the bounding box size. Exemplarily, the at least two sub-syntax element identification information includes first sub-syntax element identification information and second sub-syntax element identification information; wherein the first sub-syntax element identification information is used to indicate the low-order value of the bounding box size, and the second sub-syntax element identification information is used to indicate the high-order value of the bounding box size.
[0140] For example, the current node takes a point cloud slice as an example, and the first type of syntax element identification information includes:
[0141] The upper part of the X-direction logarithmic size of the slice bounding box is called gsh_bounding_box_nodeSizeXLog2_upper, an unsigned integer representing the number of bits above 16 bits of the X-direction logarithmic size of the slice bounding box.
[0142] The low-order part of the X-direction logarithmic size of the slice bounding box is called gsh_bounding_box_nodeSizeXLog2_lower, an unsigned integer representing the lower 16 bits of the X-direction logarithmic size of the slice bounding box.
[0143] The logarithmic size of the slice bounding box in the X direction is: gsh_bounding_box_nodeSizeXLog2=(gsh_bounding_box_nodeSizeXLog2_upper)<<16+ gsh_bounding_box_nodeSizeXLog2_lower
[0144] The upper part of the Y logarithmic size of the slice bounding box is called gsh_bounding_box_nodeSizeYLog2_upper, an unsigned integer representing the number of bits above 16 bits of the Y logarithmic size of the slice bounding box.
[0145] The low-order part of the Y-direction logarithmic size of the slice bounding box is called gsh_bounding_box_nodeSizeYLog2_lower, an unsigned integer representing the lower 16 bits of the Y-direction logarithmic size of the slice bounding box.
[0146] The logarithmic size of the slice bounding box in the Y direction is: gsh_bounding_box_nodeSizeYLog2=(gsh_bounding_box_nodeSizeYLog2_upper)<<16+
[0147] gsh_bounding_box_nodeSizeYLog2_lower
[0148] The upper part of the Z-direction logarithmic size of the fragment bounding box is called gsh_bounding_box_nodeSizeZLog2_upper, an unsigned integer representing the number of bits above 16 bits of the Z-direction logarithmic size of the fragment bounding box.
[0149] The low-order part of the Z-direction logarithmic size of the slice bounding box is called gsh_bounding_box_nodeSizeZLog2_lower, an unsigned integer representing the lower 16 bits of the Z-direction logarithmic size of the slice bounding box.
[0150] The logarithmic size of the slice bounding box in the Z direction is: gsh_bounding_box_nodeSizeZLog2=(gsh_bounding_box_nodeSizeZLog2_upper)<<16+ gsh_bounding_box_nodeSizeZLog2_lower
[0151] In some embodiments, determining the point count of the current node includes: decoding a bitstream to determine second-category syntax element identification information of the current node; and determining the point count of the current node based on the second-category syntax element identification information. The second-category syntax element identification information can be understood as a set of one or more syntax element identification information.
[0152] It should be noted that the second type of syntax element can be a high-level syntax element of the current node, which is used to indicate the number of point cloud reconstruction points of the current node. The second type of syntax element includes at least one of a sequence-level syntax element, a frame-level syntax element, a stripe-level syntax element, and a slice-level syntax element. In some embodiments, when the current node is a point cloud slice, the second type of syntax element is a slice-level syntax element, which can be located at the slice header; when the current node is a point cloud strip, the second type of syntax element is a stripe-level syntax element, which can be located at the stripe header; when the current node is a point cloud frame, the second type of syntax element is a frame-level syntax element, which can be located at the frame header; when the current node is a point cloud sequence, the second type of syntax element is a sequence-level syntax element, which can be located at the sequence header.
[0153] In some embodiments, the second type of syntax element identification information includes at least two sub-syntax element identification information.
[0154] It should be noted that two or more sub-syntax elements may be used to indicate the number of points, each sub-syntax element being used to indicate the value of a portion of the number of points. Exemplarily, the at least two sub-syntax element identification information includes: third sub-syntax element identification information and fourth sub-syntax element identification information; wherein the third sub-syntax element identification information is used to indicate the value of the low-order bits of the number of points, and the fourth sub-syntax element identification information is used to indicate the value of the high-order bits of the number of points.
[0155] For example, the current node takes a point cloud slice as an example, and the second type of syntax element identification information includes:
[0156] The high-order part of the number of points contained in the slice is called num_points_upper, an unsigned integer that represents the number of bits above 16 bits in the number of points contained in the slice.
[0157] The low-order part of the number of points contained in the slice is called num_points_upper, an unsigned integer representing the lower 16 bits of the number of points contained in the slice.
[0158] The number of points contained in the piece is: num_points = ((num_points_upper<<16)+num_points_lower).
[0159] The relationship between the number of points num_points and gsh_bounding_box_nodeSizeXLog2, gsh_bounding_box_nodeSizeYLog2, and gsh_bounding_box_nodeSizeZLog2 is restricted as follows: num_points <= (gsh_bounding_box_nodeSizeXLog2 × gsh_bounding_box_nodeSizeYLog2 × gsh_bounding_box_nodeSizeZLog2)
[0160] Illustratively, the embodiment of the present application ensures the stability of the codec by limiting the relationship between the number of points in the existing point cloud slice and the bounding box volume. The specific geometry slice header definition is shown in Table 1.
[0161] Table 1 Definition of geometric header
[0162] It should be noted that the naming of grammatical elements in the embodiments of the present application is mainly for the convenience of understanding and writing. Modifications can be made in actual applications and standard texts, but their semantic content should be consistent or similar.
[0163] The current node is a node from which duplicate points are to be removed. In some embodiments, the bitstream is decoded to determine third-category syntax element identification information of the current node; and based on the third-category syntax element identification information, the current node is determined to be a node from which duplicate points are to be removed. The third-category syntax element identification information can be understood as comprising a set of one or more syntax element identification information.
[0164] The third type of syntax element may be a high-level syntax element of the current node, used to indicate whether the current node has duplicate points. The third type of syntax element includes at least one of a sequence-level syntax element, a frame-level syntax element, a slice-level syntax element, and a slice-level syntax element. In some embodiments, the third type of syntax element is a sequence-level syntax element, used to indicate that there are no duplicate points in the point cloud sequence where the current node is located. In some embodiments, the third type of syntax element is a frame-level syntax element, used to indicate that there are no duplicate points in the point cloud frame where the current node is located. In some embodiments, the third type of syntax element is a frame-slice-level syntax element, used to indicate that there are no duplicate points in the point cloud strip where the current node is located. In some embodiments, the third type of syntax element is a slice-level syntax element, used to indicate that there are no duplicate points in the current point cloud slice.
[0165] In some embodiments, when the value of the third-category syntax element identification information is a first preset value, the current node is determined to be a node with duplicate points removed; the bounding box volume of the current node is determined based on the first-category syntax element identification information; the number of points of the current node is determined based on the second-category syntax element identification information; and when it is determined that the bounding box volume and the number of points of the current node meet preset conditions, the current node is reconstructed to determine a reconstructed point cloud for the current node. In some embodiments, when the value of the third-category syntax element identification information is a second preset value, the current node is determined to contain duplicate points. For example, the first preset value may be 1, and the second preset value may be 0.
[0166] For example, the third type of syntax element is the sequence-level syntax element identification information geomRemoveDuplicateFlag. A value of geomRemoveDuplicateFlag of 1 indicates that the point cloud sequence does not contain duplicate points, that is, all slices in the point cloud sequence do not contain duplicate points. The specific sequence header definition is shown in Table 2.
[0167] Table 2 Sequence header definition
[0168] S702: When it is determined that the bounding box volume and the number of points of the current node meet preset conditions, the current node is reconstructed to determine a reconstructed point cloud of the current node.
[0169] It should be noted that the preset conditions are restrictions on the bounding box volume and number of points of the current node. If the bounding box volume and number of points of the current node meet the preset conditions, it indicates that the bounding box volume and number of points are decoded correctly, and subsequent decoding operations can continue.
[0170] In some embodiments, the method further includes: decoding geometric information of the current node when determining that the bounding box volume and point count of the current node meet preset conditions. Accordingly, reconstructing the current node to determine a reconstructed point cloud of the current node includes: reconstructing the current node based on the geometric information to determine a reconstructed point cloud of the current node.
[0171] It should be noted that whether the geometric information of the current node can be successfully decoded is determined based on the number of points and bounding box volume of the current node. The number of points and bounding box volume of the current node meeting the preset conditions is a prerequisite for successfully decoding the geometric information, which can also be understood as a prerequisite for successfully reconstructing the point cloud.
[0172] In some embodiments, the method further includes: decoding the code stream to determine the attribute information of the current node; and reconstructing the reconstructed point cloud of the current node based on the attribute information and geometric information of the current node.
[0173] In some embodiments, the method further includes: if the bounding box volume and the number of points of the current node do not meet preset conditions, determining that decoding of the current node is erroneous.
[0174] In some embodiments, determining a decoding error can prematurely terminate the decoding operation of the current node, that is, prematurely terminate the point cloud reconstruction operation. In other embodiments, when the current node is a point cloud slice, determining a decoding error can prematurely terminate the decoding operation of the current point cloud strip / current point cloud frame / current point cloud sequence in which the current point cloud slice is located.
[0175] In some embodiments, the method further includes: if the bounding box volume and point count of the current node do not meet preset conditions, determining that a decoding error has occurred in the geometric information of the current node. Determining a decoding error may prematurely terminate the geometric information decoding operation for the current node. In other embodiments, when the current node is a point cloud slice, determining a decoding error may prematurely terminate the geometric information decoding operation for the current point cloud strip / current point cloud frame / current point cloud sequence in which the current point cloud slice resides.
[0176] In some embodiments, the method further includes: if the bounding box volume and point count of the current node do not meet preset conditions, stopping decoding the attribute information of the current node, or determining that the attribute information decoding of the current node has failed. It should be noted that since point cloud reconstruction requires information such as geometry and attribute information, if the geometry information decoding fails, the decoding of other information such as attribute information may also be terminated.
[0177] In some embodiments, the method further includes: generating fault prompt information when the bounding box volume and the number of points of the current node do not meet preset conditions.
[0178] In some embodiments, the preset condition includes: the number of points is less than or equal to the volume of the bounding box.
[0179] It should be noted that if the current node is quantized to remove duplicate points, then in this case, there will be no duplicate points in the current node, and the current node's bounding box will contain at most (length × width × height) points. Therefore, the number of points in the current node (pointCount / num_points) and the volume of the bounding box (length × width × height) must satisfy the following relationship: pointCount ≤ length × width × height
[0180] In some embodiments, when it is determined that the bounding box volume and the number of points of the current node do not meet a preset condition, the number of points of the current node is initialized to the bounding box volume.
[0181] It should be noted that if the bounding box volume and point count of the current node do not meet the preset conditions, it can be determined that the syntax element decoding of the current node has failed, and subsequent decoding operations can be terminated prematurely. However, it is not ruled out that the decoder needs to continue decoding until the decoder crashes. Therefore, in some embodiments, when the preset conditions are not met, the point count of the current node is initialized to the bounding box volume, and subsequent decoding operations are continued.
[0182] The embodiment of the present application provides a decoding method that ensures the robustness and stability of the decoder by limiting the relationship between the number of points of the current node (also called "reconstructed points") and the volume of the bounding box, without affecting the decoding efficiency. In some cases, if the current node has been subjected to a duplicate point removal operation, there will be no duplicate points in the current node, and there will be at most (length × width × height) points in the bounding box of the current node, that is, the number of points of the current node must be less than or equal to the volume of the bounding box (length × width × height). By limiting the relationship between the number of points and the volume of the bounding box, the robustness and stability of the decoder can be ensured without affecting the decoding efficiency.
[0183] In another embodiment of the present application, referring to FIG8 , a schematic flow chart of an encoding method provided by an embodiment of the present application is shown. As shown in FIG8 , the method may include:
[0184] S801: Determine the bounding box volume of the current node and the number of points of the current node;
[0185] In some embodiments, the current node is a node in the point cloud from which duplicate points are removed. Exemplarily, the current node includes at least one of the following: a current point cloud sequence, a current point cloud frame, a current point cloud tile, or a current point cloud slice.
[0186] In some embodiments, at the encoder end, the geometric information of each node point cloud is transformed so that the entire point cloud is contained within a bounding box; the bounding box is then preprocessed to obtain the current node in the embodiments of the present application. The preprocessing process includes quantization and duplicate point removal. Quantization primarily serves a scaling purpose. Due to quantization rounding, the geometric information of some points becomes the same, and the decision to remove duplicate points is made based on parameters.
[0187] In some embodiments, when the current node is a point cloud strip, the entire point cloud sequence is divided into multiple point cloud strips according to parameter configuration, and each point cloud strip is treated as a single independent point cloud for processing.
[0188] In some embodiments, when the current node is a point cloud slice, the entire point cloud sequence is divided into multiple point cloud slices according to parameter configuration, and each point cloud slice is treated as a single independent point cloud for processing.
[0189] S802: When it is determined that the bounding box volume and the number of points of the current node meet the preset conditions, encoding processing is performed on the current node to determine encoding information, and the encoding information of the current node is written into the bitstream.
[0190] It should be noted that the preset conditions are restrictions on the volume and number of points of the bounding box of the current node. If the volume and number of points of the bounding box of the current node meet the preset conditions, it indicates that the geometric information of the current node is correctly encoded and subsequent encoding operations can continue.
[0191] In some embodiments, the method further includes: encoding geometric information of the current node when determining that the bounding box volume and the number of points of the current node meet preset conditions.
[0192] It should be noted that whether the geometric information of the current node can be successfully encoded is determined based on the number of points and the bounding box volume of the current node. The number of points and the bounding box volume of the current node meeting the preset conditions is a prerequisite for successfully encoding the geometric information, and can also be understood as the basis for successfully encoding the point cloud.
[0193] In some embodiments, the method further includes: when it is determined that the bounding box volume and the number of points of the current node meet preset conditions, encoding the attribute information of the current node.
[0194] In some embodiments, the method further includes: if the bounding box volume and the number of points of the current node do not meet preset conditions, determining that the current node encoding is erroneous.
[0195] In some embodiments, determining a coding error may terminate the coding operation of the current node in advance. In other embodiments, when the current node is a point cloud slice, determining a coding error may terminate the coding operation of the current point cloud strip / current point cloud frame / current point cloud sequence in advance.
[0196] In some embodiments, the method further includes: if the bounding box volume and point count of the current node do not meet preset conditions, determining that the geometric information of the current node is encoded incorrectly. Determining an encoding error can prematurely terminate the encoding operation of the current node. In other embodiments, when the current node is a point cloud slice, determining a decoding error can prematurely terminate the decoding operation of the current point cloud strip / current point cloud frame / current point cloud sequence in which the current point cloud slice is located.
[0197] In some embodiments, the method further includes: if the bounding box volume and point count of the current node do not meet preset conditions, terminating the encoding of the attribute information of the current node, or determining that the encoding of the attribute information is erroneous. It should be noted that since point cloud reconstruction requires information such as geometry and attribute information, if an error occurs in the encoding of the geometry information, the encoding of other information such as the attribute information may also be terminated.
[0198] In some embodiments, the method further includes: generating fault prompt information when the bounding box volume and the number of points of the current node do not meet preset conditions.
[0199] In some embodiments, the preset condition includes: the number of points is less than or equal to the volume of the bounding box.
[0200] It should be noted that if the current node is quantized to remove duplicate points, then in this case, there will be no duplicate points in the current node, and the current node's bounding box will contain at most (length × width × height) points. Therefore, the number of points in the current node (pointCount / num_points) and the volume of the bounding box (length × width × height) must satisfy the following relationship: pointCount ≤ length × width × height
[0201] In some embodiments, when it is determined that the bounding box volume and the number of points of the current node do not meet the preset condition, the number of points of the current node is initialized to the bounding box volume.
[0202] It should be noted that if the bounding box volume and point count of the current node do not meet the preset conditions, it can be determined that the current node encoding has an error and the subsequent encoding operation is terminated prematurely. However, it is not ruled out that the encoder needs to continue encoding until the encoder crashes. Therefore, in some embodiments, when the preset conditions are not met, the point count of the current node is initialized to the bounding box volume and the encoding operation continues.
[0203] In some embodiments, encoding the current node to determine encoding information includes: determining first-category syntax element identification information of the current node; wherein the first-category syntax element identification information is used to indicate the bounding box volume of the current node. The first-category syntax element identification information can be understood as a set of one or more syntax elements.
[0204] It should be noted that the first type of syntax element can be a high-level syntax element of the current node, which is used to indicate the bounding box volume of the current node. The first type of syntax element includes at least one of a sequence-level syntax element, a frame-level syntax element, a strip-level syntax element, and a slice-level syntax element. In some embodiments, when the current node is a point cloud slice, the first type of syntax element is a slice-level syntax element, which can be located at the slice header; when the current node is a point cloud strip, the first type of syntax element is a strip-level syntax element, which can be located at the strip header; when the current node is a point cloud frame, the first type of syntax element is a frame-level syntax element, which can be located at the frame header; when the current node is a point cloud sequence, the first type of syntax element is a sequence-level syntax element, which can be located at the sequence header.
[0205] It should be noted that the first type of syntax element identification information is used to directly indicate the bounding box volume, or the first type of syntax element is used to indicate the length, width and height of the bounding box of the current node, and the bounding box volume is further obtained based on the product of the length, width and height of the bounding box.
[0206] Exemplarily, the first category of syntax elements includes: first syntax element identification information, second syntax element identification information and third syntax element identification information; the first syntax element identification information is used to indicate the length (length) of the bounding box, the second syntax element identification information is used to indicate the width (width) of the bounding box and the third syntax element identification information is used to indicate the height (height) of the bounding box.
[0207] The determining of the first type of syntax element identification information of the current node includes: determining the first syntax element identification information based on the length of the bounding box of the current node; determining the second syntax element identification information based on the width of the bounding box of the current node; and determining the third syntax element identification information based on the height of the bounding box of the current node.
[0208] In some embodiments, the first syntax element identification information includes at least two sub-syntax element identification information; the second syntax element identification information includes at least two sub-syntax element identification information; and the third syntax element identification information includes at least two sub-syntax element identification information.
[0209] It should be noted that two or more sub-syntax elements can be used to indicate the bounding box size, each sub-syntax element being used to indicate the value of a portion of the bounding box size. Exemplarily, the at least two sub-syntax element identification information includes first sub-syntax element identification information and second sub-syntax element identification information; wherein the first sub-syntax element identification information is used to indicate the low-order value of the bounding box size, and the second sub-syntax element identification information is used to indicate the high-order value of the bounding box size.
[0210] For example, the current node takes a point cloud slice as an example, and the first type of syntax element identification information includes:
[0211] The upper part of the X-direction logarithmic size of the slice bounding box is called gsh_bounding_box_nodeSizeXLog2_upper, an unsigned integer representing the number of bits above 16 bits of the X-direction logarithmic size of the slice bounding box.
[0212] The low-order part of the X-direction logarithmic size of the slice bounding box is called gsh_bounding_box_nodeSizeXLog2_lower, an unsigned integer representing the lower 16 bits of the X-direction logarithmic size of the slice bounding box.
[0213] The logarithmic size of the slice bounding box in the X direction is: gsh_bounding_box_nodeSizeXLog2=(gsh_bounding_box_nodeSizeXLog2_upper)<<16+ gsh_bounding_box_nodeSizeXLog2_lower
[0214] The upper part of the Y logarithmic size of the slice bounding box is called gsh_bounding_box_nodeSizeYLog2_upper, an unsigned integer representing the number of bits above 16 bits of the Y logarithmic size of the slice bounding box.
[0215] The low-order part of the Y-direction logarithmic size of the slice bounding box is called gsh_bounding_box_nodeSizeYLog2_lower, an unsigned integer representing the lower 16 bits of the Y-direction logarithmic size of the slice bounding box.
[0216] The logarithmic size of the slice bounding box in the Y direction is: gsh_bounding_box_nodeSizeYLog2=(gsh_bounding_box_nodeSizeYLog2_upper)<<16+ gsh_bounding_box_nodeSizeYLog2_lower
[0217] The upper part of the Z-direction logarithmic size of the fragment bounding box is called gsh_bounding_box_nodeSizeZLog2_upper, an unsigned integer representing the number of bits above 16 bits of the Z-direction logarithmic size of the fragment bounding box.
[0218] The low-order part of the Z-direction logarithmic size of the slice bounding box is called gsh_bounding_box_nodeSizeZLog2_lower, an unsigned integer representing the lower 16 bits of the Z-direction logarithmic size of the slice bounding box.
[0219] The logarithmic size of the slice bounding box in the Z direction is: gsh_bounding_box_nodeSizeZLog2=(gsh_bounding_box_nodeSizeZLog2_upper)<<16+ gsh_bounding_box_nodeSizeZLog2_lower
[0220] In some embodiments, encoding the current node to determine encoding information includes: determining second-category syntax element identification information of the current node; wherein the second-category syntax element identification information is used to indicate the number of points in the current node. The second-category syntax element identification information can be understood as a set of one or more syntax element identification information.
[0221] It should be noted that the second type of syntax element can be a high-level syntax element of the current node, which is used to indicate the number of point cloud reconstruction points of the current node. The second type of syntax element includes at least one of a sequence-level syntax element, a frame-level syntax element, a stripe-level syntax element, and a slice-level syntax element. In some embodiments, when the current node is a point cloud slice, the second type of syntax element is a slice-level syntax element, which can be located at the slice header; when the current node is a point cloud strip, the second type of syntax element is a stripe-level syntax element, which can be located at the stripe header; when the current node is a point cloud frame, the second type of syntax element is a frame-level syntax element, which can be located at the frame header; when the current node is a point cloud sequence, the second type of syntax element is a sequence-level syntax element, which can be located at the sequence header.
[0222] In some embodiments, the second type of syntax element identification information includes at least two sub-syntax element identification information.
[0223] It should be noted that two or more sub-syntax elements may be used to indicate the number of points, each sub-syntax element being used to indicate the value of a portion of the number of points. Exemplarily, the at least two sub-syntax element identification information includes: third sub-syntax element identification information and fourth sub-syntax element identification information; wherein the third sub-syntax element identification information is used to indicate the value of the low-order bits of the number of points, and the fourth sub-syntax element identification information is used to indicate the value of the high-order bits of the number of points.
[0224] For example, the current node takes a point cloud slice as an example, and the second type of syntax element identification information includes:
[0225] The high-order part of the number of points contained in the slice is called num_points_upper, an unsigned integer that represents the number of bits above 16 bits in the number of points contained in the slice.
[0226] The low-order part of the number of points contained in the slice is called num_points_upper, an unsigned integer representing the lower 16 bits of the number of points contained in the slice.
[0227] The number of points contained in the piece is: num_points = ((num_points_upper<<16)+num_points_lower).
[0228] The relationship between the number of points num_points and gsh_bounding_box_nodeSizeXLog2, gsh_bounding_box_nodeSizeYLog2, and gsh_bounding_box_nodeSizeZLog2 is restricted as follows: num_points <= (gsh_bounding_box_nodeSizeXLog2 × gsh_bounding_box_nodeSizeYLog2 × gsh_bounding_box_nodeSizeZLog2)
[0229] Illustratively, the embodiment of the present application ensures the stability of the codec by limiting the relationship between the number of points in the existing point cloud slice and the bounding box volume. The specific geometry slice header definition is shown in Table 1.
[0230] In some embodiments, encoding the current node to determine encoding information includes: determining third-category syntax element identification information of the current node; wherein the third-category syntax element identification information is used to indicate that the current node is a node from which duplicate points are removed. The third-category syntax element identification information can be understood as a set of one or more syntax element identification information.
[0231] The third type of syntax element may be a high-level syntax element of the current node, used to indicate whether the current node has duplicate points. The third type of syntax element includes at least one of a sequence-level syntax element, a frame-level syntax element, a slice-level syntax element, and a slice-level syntax element. In some embodiments, the third type of syntax element is a sequence-level syntax element, used to indicate that there are no duplicate points in the point cloud sequence where the current node is located. In some embodiments, the third type of syntax element is a frame-level syntax element, used to indicate that there are no duplicate points in the point cloud frame where the current node is located. In some embodiments, the third type of syntax element is a frame-slice-level syntax element, used to indicate that there are no duplicate points in the point cloud strip where the current node is located. In some embodiments, the third type of syntax element is a slice-level syntax element, used to indicate that there are no duplicate points in the current point cloud slice.
[0232] In some embodiments, when the value of the third-category syntax element identification information is a first value, the current node is determined to be a node from which duplicate points are removed; and when the value of the third-category syntax element identification information is a second value, the current node is determined to contain duplicate points. For example, the first preset value may be 1, and the second preset value may be 0.
[0233] In some embodiments, at the encoding end, the current node bounding box is quantized and duplicate points are removed to determine that the current node has no duplicate points, and the value of the third syntax element identification information is set to the first value, otherwise the value of the third syntax element identification information is set to the second value.
[0234] For example, the third type of syntax element is the sequence-level syntax element identification information geomRemoveDuplicateFlag. A value of geomRemoveDuplicateFlag of 1 indicates that the point cloud sequence does not contain duplicate points, that is, all slices in the point cloud sequence do not contain duplicate points. The specific sequence header definition is shown in Table 2.
[0235] The embodiment of the present application provides an encoding method that ensures the robustness and stability of the encoder by limiting the relationship between the number of points of the current node and the volume of the bounding box, without affecting the encoding efficiency. In some cases, if the current node is subjected to the operation of removing duplicate points, there will be no duplicate points in the current node, and there will be at most (length × width × height) points in the bounding box of the current node, that is, the number of points of the current node must be less than or equal to the volume of the bounding box (length × width × height). By limiting the relationship between the number of points and the volume of the bounding box, the robustness and stability of the encoder can be ensured without affecting the encoding efficiency.
[0236] Furthermore, an embodiment of the present application also provides a code stream, which is generated by bit encoding based on the information to be encoded; wherein the information to be encoded includes at least one of the following: a first type of syntax element identification information for indicating the volume of the bounding box of the current node, a second type of syntax element identification information for indicating the number of points of the current node, and a third type of syntax element identification information for indicating that the current node is a node for removing duplicate points.
[0237] In another embodiment of the present application, based on the same inventive concept as the above embodiment, see Figure 9, which shows a schematic diagram of the composition structure of an encoder provided by an embodiment of the present application. As shown in Figure 9, the encoder 90 may include a first determining unit 901 and an encoding unit 902; wherein,
[0238] The first determining unit 901 is configured to determine the volume of the bounding box of the current node and the number of points of the current node;
[0239] The encoding unit 902 is configured to, when determining that the bounding box volume and the number of points of the current node meet preset conditions, perform encoding processing on the current node to determine encoding information, and write the encoding information of the current node into a bitstream.
[0240] In some embodiments, the preset condition includes: the number of points is less than or equal to the volume of the bounding box.
[0241] In some embodiments, the encoding unit 902 is configured to initialize the number of points of the current node to the bounding box volume when determining that the bounding box volume and the number of points of the current node do not meet the preset condition.
[0242] In some embodiments, the encoding unit 902 is configured to determine first-type syntax element identification information of the current node; wherein the first-type syntax element identification information is used to indicate the volume of the bounding box of the current node.
[0243] In some embodiments, the first type of syntax elements includes: first syntax element identification information, second syntax element identification information, and third syntax element identification information;
[0244] In some embodiments, the encoding unit 902 is configured to determine the first syntax element identification information based on the length of the bounding box of the current node; determine the second syntax element identification information based on the width of the bounding box of the current node; and determine the third syntax element identification information based on the height of the bounding box of the current node.
[0245] In some embodiments, the first syntax element identification information includes at least two sub-syntax element identification information; the second syntax element identification information includes at least two sub-syntax element identification information; and the third syntax element identification information includes at least two sub-syntax element identification information.
[0246] In some embodiments, the at least two sub-syntax element identification information include first sub-syntax element identification information and second sub-syntax element identification information; wherein, the first sub-syntax element identification information is used to indicate the low-order value of the bounding box size, and the second sub-syntax element identification information is used to indicate the high-order value of the bounding box size.
[0247] In some embodiments, the encoding unit 902 is configured to determine second-category syntax element identification information of the current node; wherein the second-category syntax element identification information is used to indicate the number of points of the current node.
[0248] In some embodiments, the second type of syntax element identification information includes at least two sub-syntax element identification information.
[0249] In some embodiments, the encoding unit 902 is configured so that the at least two sub-syntax element identification information include: third sub-syntax element identification information and fourth sub-syntax element identification information; wherein the third sub-syntax element identification information is used to indicate the low-order value of the point number, and the fourth sub-syntax element identification information is used to indicate the high-order value of the point number.
[0250] In some embodiments, the current node includes at least one of the following: a current point cloud sequence, a current point cloud frame, a current point cloud strip, and a current point cloud slice.
[0251] In some embodiments, the encoding unit 902 is configured to encode the geometric information of the current node when it is determined that the bounding box volume and the number of points of the current node meet preset conditions.
[0252] In some embodiments, the encoding unit 902 is configured to determine that the current node encoding is erroneous when the bounding box volume and the number of points do not meet the preset conditions.
[0253] In some embodiments, the encoding unit 902 is configured to determine that the geometric information encoding of the current node is erroneous when the bounding box volume and the number of points do not meet the preset conditions.
[0254] In some embodiments, the current node is a node with duplicate points removed.
[0255] In some embodiments, the encoding unit 902 is configured to determine third-category syntax element identification information of the current node; wherein the third-category syntax element identification information is used to indicate that the current node is a node for removing duplicate points.
[0256] It is understandable that in the embodiments of the present application, a "unit" can be a portion of a circuit, a portion of a processor, a portion of a program or software, etc., and of course it can also be a module, or it can be non-modular. Moreover, the various components in this embodiment can be integrated into a processing unit, or each unit can exist physically separately, or two or more units can be integrated into a single unit. The above-mentioned integrated units can be implemented in the form of hardware or in the form of software functional modules.
[0257] If the integrated unit is implemented as a software functional module and is not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this embodiment, or the portion that contributes to the prior art, or all or part of the technical solution can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions for causing a computer device (which can be a personal computer, server, or network device, etc.) or a processor to execute all or part of the steps of the method described in this embodiment. The aforementioned storage medium includes various media that can store program code, such as a USB flash drive, a mobile hard drive, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk.
[0258] Therefore, an embodiment of the present application provides a computer-readable storage medium, which is applied to the encoder 90. The computer-readable storage medium stores a computer program, and when the computer program is executed by the first processor, it implements the method described in any one of the aforementioned embodiments.
[0259] Based on the composition of the encoder 90 and the computer-readable storage medium, refer to Figure 10, which shows a specific hardware structure diagram of the encoder 90 provided in an embodiment of the present application. As shown in Figure 10, the encoder 90 may include: a first communication interface 1001, a first memory 1002 and a first processor 1003; each component is coupled together through a first bus system 1004. It can be understood that the first bus system 1004 is used to achieve connection and communication between these components. In addition to the data bus, the first bus system 1004 also includes a power bus, a control bus and a status signal bus. However, for the sake of clarity, various buses are labeled as the first bus system 1004 in Figure 10. Among them,
[0260] The first communication interface 1001 is used to receive and send signals when sending and receiving information with other external network elements;
[0261] A first memory 1002 is used to store computer programs that can be run on the first processor 1003;
[0262] The first processor 1003 is configured to, when running the computer program, execute:
[0263] Determine the bounding box volume of the current node and the number of points of the current node;
[0264] When it is determined that the bounding box volume and the number of points of the current node meet the preset conditions, encoding processing is performed on the current node to determine encoding information, and the encoding information of the current node is written into the bitstream.
[0265] It is understood that the first memory 1002 in the embodiment of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. By way of example and not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link dynamic random access memory (SLDRAM), and direct RAM bus random access memory (DRRAM). The first memory 1002 of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.
[0266] The first processor 1003 may be an integrated circuit chip with signal processing capabilities. During implementation, each step of the above method can be completed by hardware integrated logic circuits or software instructions in the first processor 1003. The above-mentioned first processor 1003 can be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. The various methods, steps, and logic block diagrams disclosed in the embodiments of this application can be implemented or executed. The general-purpose processor can be a microprocessor or any conventional processor. The steps of the method disclosed in the embodiments of this application can be directly implemented and executed by a hardware decoding processor, or by a combination of hardware and software modules in the decoding processor. The software module can be located in a storage medium mature in the art, such as random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, etc. The storage medium is located in the first memory 1002 , and the first processor 1003 reads the information in the first memory 1002 and completes the steps of the above method in combination with its hardware.
[0267] It is to be understood that these embodiments described in the present application can be implemented with hardware, software, firmware, middleware, microcode or its combination.For hardware implementation, the processing unit can be implemented in one or more application specific integrated circuits (Application Specific Integrated Circuits, ASIC), digital signal processor (Digital Signal Processing, DSP), digital signal processing equipment (DSP Device, DSPD), programmable logic device (Programmable Logic Device, PLD), field programmable gate array (Field-Programmable Gate Array, FPGA), general-purpose processor, controller, microcontroller, microprocessor, other electronic units for performing functions described in the present application or its combination.For software implementation, the technology described in the present application can be realized by the module (such as process, function etc.) that performs functions described in the present application. The software code can be stored in a memory and executed by a processor. The memory can be implemented in the processor or outside the processor.
[0268] Optionally, as another embodiment, the first processor 1003 is further configured to execute any one of the methods described in the foregoing embodiments when running the computer program.
[0269] This embodiment provides an encoder in which the relationship between the number of points of the current node and the bounding box volume is restricted, thereby ensuring the robustness and stability of the encoder without affecting the encoding efficiency. In some cases, if the current node undergoes a duplicate point removal operation, there will be no duplicate points in the current node, and there will be at most (length × width × height) points in the bounding box of the current node, that is, the number of points of the current node is definitely less than or equal to the bounding box volume (length × width × height). By restricting the relationship between the number of points and the bounding box volume, the robustness and stability of the encoder can be ensured without affecting the encoding efficiency.
[0270] In another embodiment of the present application, based on the same inventive concept as the above embodiment, see FIG11 , which shows a schematic diagram of the structure of a decoder 110 provided in an embodiment of the present application. As shown in FIG11 , the decoder 110 may include: a decoding unit 1101 and a second determining unit 1102; wherein,
[0271] The decoding unit 1101 is configured to determine the volume of the bounding box of the current node and the number of points of the current node;
[0272] The second determining unit 1102 is configured to decode the current node to determine a reconstructed point cloud of the current node when determining that the bounding box volume and the number of points of the current node meet preset conditions.
[0273] In some embodiments, the preset condition includes: the number of points is less than or equal to the volume of the bounding box.
[0274] In some embodiments, the second determining unit 1102 is configured to initialize the number of points of the current node as the bounding box volume when determining that the bounding box volume and the number of points of the current node do not meet the preset condition.
[0275] In some embodiments, the decoding unit 1101 is configured to decode the code stream, determine the first type of syntax element identification information of the current node; and determine the bounding box volume of the current node based on the first type of syntax element identification information.
[0276] In some embodiments, the first type of syntax elements includes: first syntax element identification information, second syntax element identification information, and third syntax element identification information;
[0277] The decoding unit 1101 is configured to determine the length of the bounding box based on the first syntax element identification information; determine the width of the bounding box based on the second syntax element identification information; determine the height of the bounding box based on the third syntax element identification information; and calculate the product of the length, width, and height of the bounding box of the current node to determine the volume of the bounding box of the current node.
[0278] In some embodiments, the first syntax element identification information includes at least two sub-syntax element identification information; the second syntax element identification information includes at least two sub-syntax element identification information; and the third syntax element identification information includes at least two sub-syntax element identification information.
[0279] In some embodiments, the at least two sub-syntax element identification information include first sub-syntax element identification information and second sub-syntax element identification information; wherein, the first sub-syntax element identification information is used to indicate the low-order value of the bounding box size, and the second sub-syntax element identification information is used to indicate the high-order value of the bounding box size.
[0280] In some embodiments, the decoding unit 1101 is configured to decode the code stream, determine the second type of syntax element identification information of the current node; and determine the number of points of the current node according to the second type of syntax element identification information.
[0281] In some embodiments, the second type of syntax element identification information includes at least two sub-syntax element identification information.
[0282] In some embodiments, the at least two sub-syntax element identification information include: third sub-syntax element identification information and fourth sub-syntax element identification information; wherein, the third sub-syntax element identification information is used to indicate the low-order value of the point number, and the fourth sub-syntax element identification information is used to indicate the high-order value of the point number.
[0283] In some embodiments, the current node includes at least one of the following: a current point cloud sequence, a current point cloud frame, a current point cloud strip, and a current point cloud slice.
[0284] In some embodiments, the decoding unit 1101 is configured to decode the geometric information of the current node when determining that the bounding box volume and the number of points of the current node meet a preset condition;
[0285] The second determining unit 1102 is configured to reconstruct the current node according to the geometric information to determine a reconstructed point cloud of the current node.
[0286] In some embodiments, the second determining unit 1102 is configured to determine that decoding of the current node is erroneous when the bounding box volume and the number of points do not satisfy the preset condition.
[0287] In some embodiments, the second determining unit 1102 is configured to determine that the geometric information encoding of the current node is erroneous when the bounding box volume and the number of points do not satisfy the preset condition.
[0288] In some embodiments, the current node is a node with duplicate points removed.
[0289] In some embodiments, the decoding unit 1101 is configured to decode the code stream, determine the third type of syntax element identification information of the current node; and determine that the current node is a node for removing duplicate points based on the third type of syntax element identification information.
[0290] Based on the composition of the decoder 110 and the computer-readable storage medium, refer to Figure 12, which shows a specific hardware structure diagram of the decoder 110 provided in an embodiment of the present application. As shown in Figure 12, the decoder 110 may include: a second communication interface 1201, a second memory 1202 and a second processor 1203; each component is coupled together through a second bus system 1204. It can be understood that the second bus system 1204 is used to achieve connection and communication between these components. In addition to the data bus, the second bus system 1204 also includes a power bus, a control bus and a status signal bus. However, for the sake of clarity, various buses are labeled as the second bus system 1204 in Figure 12. Among them,
[0291] The second communication interface 1201 is used to receive and send signals during the process of sending and receiving information between other external network elements;
[0292] The second memory 1202 is used to store computer programs that can be run on the second processor 1203;
[0293] The second processor 1203 is configured to, when running the computer program, execute:
[0294] Determine the bounding box volume of the current node and the number of points of the current node;
[0295] When it is determined that the bounding box volume and the number of points of the current node meet preset conditions, the current node is reconstructed to determine a reconstructed point cloud of the current node.
[0296] Optionally, as another embodiment, the second processor 1203 is further configured to execute any one of the methods described in the foregoing embodiments when running the computer program.
[0297] It can be understood that the hardware functions of the second memory 1202 are similar to those of the first memory 1002 , and the hardware functions of the second processor 1203 are similar to those of the first processor 1003 ; they will not be described in detail here.
[0298] This embodiment provides a decoder in which the robustness and stability of the decoder are guaranteed without affecting decoding efficiency by limiting the relationship between the number of points (also called "reconstructed points") of the current node and the volume of the bounding box. In some cases, if the current node undergoes a duplicate point removal operation, there will be no duplicate points in the current node, and there will be at most (length × width × height) points in the bounding box of the current node, that is, the number of points of the current node is definitely less than or equal to the volume of the bounding box (length × width × height). By limiting the relationship between the number of points and the volume of the bounding box, the robustness and stability of the decoder can be guaranteed without affecting decoding efficiency.
[0299] In yet another embodiment of the present application, referring to FIG13 , a schematic diagram of the structure of a coding and decoding system provided by an embodiment of the present application is shown. As shown in FIG13 , the coding and decoding system 130 may include an encoder 1301 and a decoder 1302 .
[0300] In the embodiment of the present application, the encoder 1301 may be the encoder described in any one of the aforementioned embodiments, and the decoder 1302 may be the decoder described in any one of the aforementioned embodiments.
[0301] It should be noted that, in this application, the terms "comprises," "includes," or any other variations thereof are intended to encompass non-exclusive inclusion, such that a process, method, article, or apparatus comprising a series of elements includes not only those elements but also other elements not explicitly listed, or elements inherent to such process, method, article, or apparatus. In the absence of further limitations, an element defined by the phrase "comprising a ..." does not exclude the presence of other identical elements in the process, method, article, or apparatus comprising the element.
[0302] The serial numbers of the above embodiments of the present application are for description only and do not represent the advantages or disadvantages of the embodiments.
[0303] The methods disclosed in the several method embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments.
[0304] The features disclosed in the several product embodiments provided in this application can be arbitrarily combined without conflict to obtain new product embodiments.
[0305] The features disclosed in the several method or device embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments or device embodiments.
[0306] The above description is merely a specific embodiment of the present application, but the scope of protection of the present application is not limited thereto. Any changes or substitutions that can be easily conceived by a person skilled in the art within the technical scope disclosed in this application should be included in the scope of protection of this application. Therefore, the scope of protection of this application should be based on the scope of protection of the claims. Industrial Applicability
[0307] In an embodiment of the present application, a coding and decoding method, a code stream, an encoder, a decoder, and a storage medium are provided. The method includes: determining the bounding box volume of the current node, and determining the number of points of the current node; when it is determined that the bounding box volume and the number of points of the current node meet preset conditions, reconstructing the current node to determine the reconstructed point cloud of the current node. In this way, if the current node is subjected to the operation of removing duplicate points, there will be no duplicate points in the current node, and there will be at most (length × width × height) points in the bounding box of the current node, that is, the number of points of the current node is definitely less than or equal to the bounding box volume. By limiting the relationship between the number of points and the bounding box volume, the robustness and stability of the codec can be guaranteed without affecting the coding and decoding efficiency.
Claims
1. A decoding method, applied to a decoder, comprising: Determine the bounding box volume of the current node and the number of points of the current node; When it is determined that the bounding box volume and the number of points of the current node meet preset conditions, the current node is reconstructed to determine a reconstructed point cloud of the current node.
2. The method according to claim 1, wherein The preset condition includes: the number of points is less than or equal to the volume of the bounding box.
3. The method according to claim 2, wherein: The method further comprises: When it is determined that the bounding box volume and the number of points of the current node do not satisfy the preset condition, the number of points of the current node is initialized to the bounding box volume.
4. The method according to claim 1, wherein Determining the bounding box volume of the current node includes: Decode the code stream and determine the first-category syntax element identification information of the current node; The bounding box volume of the current node is determined according to the first-category syntax element identification information.
5. The method according to claim 4, wherein The first type of syntax elements includes: first syntax element identification information, second syntax element identification information and third syntax element identification information; The determining the bounding box volume of the current node according to the first type of syntax element identification information includes: Determining the length of the bounding box according to the first syntax element identification information; Determining a width of a bounding box according to the second syntax element identification information; Determining a height of a bounding box according to the third syntax element identification information; The product of the length, width, and height of the bounding box of the current node is calculated to determine the volume of the bounding box of the current node.
6. The method according to claim 5, wherein: The first syntax element identification information includes at least two sub-syntax element identification information; The second syntax element identification information includes at least two sub-syntax element identification information; The third syntax element identification information includes at least two sub-syntax element identification information.
7. The method according to claim 6, wherein: The at least two sub-grammar element identification information include first sub-grammar element identification information and second sub-grammar element identification information; The first sub-syntax element identification information is used to indicate the low-order value of the bounding box size, and the second sub-syntax element identification information is used to indicate the high-order value of the bounding box size.
8. The method according to claim 1, wherein Determining the number of points of the current node includes: Decode the code stream to determine the second type of syntax element identification information of the current node; The number of points of the current node is determined according to the second-category syntax element identification information.
9. The method according to claim 8, wherein The second type of syntax element identification information includes at least two sub-syntax element identification information.
10. The method according to claim 9, wherein: The at least two sub-grammar element identification information include: third sub-grammar element identification information and fourth sub-grammar element identification information; The third sub-syntax element identification information is used to indicate the low-order value of the point number, and the fourth sub-syntax element identification information is used to indicate the high-order value of the point number.
11. The method according to claim 1, wherein: The current node includes at least one of the following: a current point cloud sequence, a current point cloud frame, a current point cloud strip, and a current point cloud slice.
12. The method according to any one of claims 1 to 11, wherein: The method further comprises: When determining that the bounding box volume and the number of points of the current node meet preset conditions, decoding the geometric information of the current node; The step of reconstructing the current node to determine a reconstructed point cloud of the current node includes: The current node is reconstructed according to the geometric information to determine a reconstructed point cloud of the current node.
13. The method according to any one of claims 1 to 11, wherein: The method further comprises: When the bounding box volume and the number of points do not satisfy the preset condition, it is determined that a decoding error occurs in the current node.
14. The method according to claim 13, wherein When the bounding box volume and the number of points do not satisfy the preset condition, determining that a decoding error occurs on the current node includes: When the bounding box volume and the number of points do not satisfy the preset condition, it is determined that an error occurs in decoding the geometric information of the current node.
15. The method according to any one of claims 1 to 11, wherein: The current node is a node from which duplicate points are removed.
16. The method according to claim 15, wherein The method further comprises: Decode the code stream and determine the third type of syntax element identification information of the current node; According to the third type of syntax element identification information, it is determined that the current node is a node for removing duplicate points.
17. A coding method, applied to an encoder, comprising: Determine the bounding box volume of the current node and the number of points of the current node; When it is determined that the bounding box volume and the number of points of the current node meet the preset conditions, encoding processing is performed on the current node to determine encoding information, and the encoding information of the current node is written into the bitstream.
18. The method according to claim 17, wherein The preset condition includes: the number of points is less than or equal to the volume of the bounding box.
19. The method according to claim 18, wherein The method further comprises: When it is determined that the bounding box volume and the number of points of the current node do not satisfy the preset condition, the number of points of the current node is initialized to the bounding box volume.
20. The method according to claim 17, wherein The encoding process for the current node to determine the encoding information includes: Determine first-category syntax element identification information of the current node; wherein the first-category syntax element identification information is used to indicate the volume of the bounding box of the current node.
21. The method according to claim 20, wherein The first type of syntax elements includes: first syntax element identification information, second syntax element identification information and third syntax element identification information; The determining of the first type of syntax element identification information of the current node includes: Determining the first syntax element identification information according to the length of the bounding box of the current node; Determining the second syntax element identification information according to the width of the bounding box of the current node; The third syntax element identification information is determined according to the height of the bounding box of the current node.
22. The method according to claim 21, wherein The first syntax element identification information includes at least two sub-syntax element identification information; The second syntax element identification information includes at least two sub-syntax element identification information; The third syntax element identification information includes at least two sub-syntax element identification information.
23. The method according to claim 22, wherein The at least two sub-grammar element identification information include first sub-grammar element identification information and second sub-grammar element identification information; The first sub-syntax element identification information is used to indicate the low-order value of the bounding box size, and the second sub-syntax element identification information is used to indicate the high-order value of the bounding box size.
24. The method according to claim 17, wherein The encoding process for the current node to determine the encoding information includes: Determine the second type of syntax element identification information of the current node; wherein the second type of syntax element identification information is used to indicate the number of points of the current node.
25. The method according to claim 24, wherein The second type of syntax element identification information includes at least two sub-syntax element identification information.
26. The method according to claim 25, wherein The at least two sub-grammar element identification information include: third sub-grammar element identification information and fourth sub-grammar element identification information; The third sub-syntax element identification information is used to indicate the low-order value of the point number, and the fourth sub-syntax element identification information is used to indicate the high-order value of the point number.
27. The method according to claim 17, wherein The current node includes at least one of the following: a current point cloud sequence, a current point cloud frame, a current point cloud strip, and a current point cloud slice.
28. The method according to any one of claims 17 to 27, wherein: The method further comprises: When it is determined that the bounding box volume and the number of points of the current node meet preset conditions, the geometric information of the current node is encoded.
29. The method according to any one of claims 17 to 27, wherein: The method further comprises: When the bounding box volume and the number of points do not meet the preset conditions, it is determined that the current node encoding is incorrect.
30. The method according to claim 29, wherein When the bounding box volume and the number of points do not meet the preset conditions, determining that the current node encoding is incorrect includes: When the bounding box volume and the number of points do not satisfy the preset conditions, it is determined that the geometric information encoding of the current node is erroneous.
31. The method according to any one of claims 17 to 27, wherein: The current node is a node from which duplicate points are removed.
32. The method according to claim 31, wherein The encoding process for the current node to determine the encoding information includes: Determine third-category syntax element identification information of the current node; wherein the third-category syntax element identification information is used to indicate that the current node is a node from which duplicate points are removed.
33. A code stream, wherein The code stream is generated by bit encoding based on information to be encoded; wherein the information to be encoded includes at least one of the following: first-type syntax element identification information for indicating the volume of a bounding box of a current node, second-type syntax element identification information for indicating the number of points of the current node, and third-type syntax element identification information for indicating that the current node is a node for removing duplicate points.
34. An encoder, comprising a first determining unit and an encoding unit; wherein: The first determining unit is configured to determine the volume of a bounding box of the current node and the number of points of the current node; The encoding unit is configured to, when determining that the bounding box volume and the number of points of the current node meet preset conditions, perform encoding processing on the current node to determine encoding information, and write the encoding information of the current node into a bitstream.
35. An encoder comprising a first memory and a first processor; wherein: The first memory is used to store a computer program that can be run on the first processor; The first processor is configured to execute the method according to any one of claims 17 to 32 when running the computer program.
36. A decoder comprising a decoding unit and a second determining unit; wherein: The decoding unit is configured to determine the volume of the bounding box of the current node and the number of points of the current node; The second determining unit is configured to decode the current node to determine a reconstructed point cloud of the current node when determining that the bounding box volume and the number of points of the current node meet preset conditions.
37. A decoder comprising a second memory and a second processor; wherein: The second memory is used to store a computer program that can be run on the second processor; The second processor is configured to execute the method according to any one of claims 1 to 16 when running the computer program.
38. A computer-readable storage medium, wherein: The computer-readable storage medium stores a computer program, and when the computer program is executed, the method according to any one of claims 1 to 16 or the method according to any one of claims 17 to 32 is implemented.