Encoding and decoding method, encoder, decoder and storage medium
Patent Information
- Application Number
- CN202380089096.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2023-01-13
- Publication Date
- 2025-08-08
AI Technical Summary
Existing point cloud compression technology does not fully consider the geometric segmentation characteristics of point clouds when encoding flat nodes, resulting in low geometric encoding efficiency.
By dividing the nodes to be processed, determining the node group, and selecting an adaptive encoding mode for encoding and decoding according to the characteristics of the node group, the geometric encoding efficiency of the point cloud is improved.
It effectively improves the geometric coding efficiency and encoding and decoding performance of point clouds, and improves the compression performance of point cloud data.
Smart Images

Figure CN120457699A_ABST
Abstract
Description
Coding and decoding method, encoder, decoder and storage medium Technical Field
[0001] The embodiments of the present application relate to the field of point cloud compression technology, and in particular to a coding and decoding method, an encoder, a decoder, and a storage medium. Background Art
[0002] In 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), the geometric information and attribute information of the point cloud are encoded separately. Currently, the geometry coding and decoding of G-PCC can be divided into two methods: octree-based geometry coding and prediction tree-based geometry coding. The octree-based geometry information coding mode can effectively encode the geometric information of the point cloud by utilizing the correlation between adjacent points in space. However, for some relatively flat nodes or nodes with planar characteristics, the use of plane coding can further improve the coding efficiency of the point cloud geometry information.
[0003] However, for nodes that meet the conditions for plane coding, the distribution density of nodes in each layer is currently used to adaptively determine whether each layer of nodes should be plane coded, without considering the geometric distribution characteristics of the point cloud in more detail, resulting in low geometric coding efficiency of the point cloud.
[0004] Summary of the Invention
[0005] The embodiments of the present application provide a coding and decoding method, an encoder, a decoder, and a storage medium, which can improve the geometric coding efficiency of point clouds and thereby improve the coding and decoding performance of point clouds.
[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] Divide the nodes to be processed and determine at least one node group corresponding to the nodes to be processed;
[0009] Decoding the code stream, and determining mode identification information corresponding to a current node group in the at least one node group;
[0010] Determine predicted values of nodes in the current node group according to the decoding mode indicated by the mode identification information.
[0011] In a second aspect, an embodiment of the present application provides an encoding method, applied to an encoder, the method comprising:
[0012] Divide the nodes to be processed and determine at least one node group corresponding to the nodes to be processed;
[0013] Determining a coding mode corresponding to a current node group in the at least one node group;
[0014] Determine predicted values of nodes in the current node group according to the coding mode; determine mode identification information corresponding to the current node group according to the coding mode, and write the mode identification information into a bitstream.
[0015] In a third aspect, an embodiment of the present application provides an encoder, which includes a first determining unit and an encoding unit; wherein,
[0016] The first determining unit is configured to divide the nodes to be processed and determine at least one node group corresponding to the nodes to be processed; and determine a coding mode corresponding to a current node group in the at least one node group;
[0017] The encoding unit is configured to determine the prediction values of the nodes in the current node group according to the encoding mode; determine the mode identification information corresponding to the current node group according to the encoding mode, and write the mode identification information into the bitstream.
[0018] In a fourth aspect, an embodiment of the present application provides an encoder, comprising a first memory and a first processor; wherein,
[0019] The first memory is used to store a computer program that can be run on the first processor;
[0020] The first processor is configured to execute the method according to the second aspect when running the computer program.
[0021] In a fifth aspect, an embodiment of the present application provides a decoder, the decoder comprising a second determining unit and a decoding unit; wherein,
[0022] The second determining unit is configured to divide the nodes to be processed and determine at least one node group corresponding to the nodes to be processed;
[0023] The decoding unit is configured to decode the code stream;
[0024] The second determining unit is configured to determine mode identification information corresponding to a current node group in the at least one node group; and determine prediction values of nodes in the current node group according to a decoding mode indicated by the mode identification information.
[0025] In a sixth aspect, an embodiment of the present application provides a decoder, the decoder comprising a second memory and a second processor; wherein,
[0026] The second memory is used to store a computer program that can be run on the second processor;
[0027] The second processor is configured to execute the method according to the first aspect when running the computer program.
[0028] In a seventh aspect, an embodiment of the present application provides a code stream, which is generated by bit encoding according to information to be encoded; wherein the information to be encoded includes at least: mode identification information and first identification information.
[0029] 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 or the method described in the second aspect.
[0030] The embodiment of the present application provides a coding and decoding method, an encoder, a decoder and a storage medium. Whether at the encoding end or the decoding end, the nodes to be processed are divided and processed to determine at least one node group corresponding to the nodes to be processed; in this way, at the encoding end, after determining at least one node group corresponding to the node to be processed, the coding mode corresponding to the current node group in at least one node group is determined; and then the predicted value of the node in the current node group is determined according to the coding mode; the mode identification information corresponding to the current node group is determined according to the coding mode, and the mode identification information is written into the code stream; and at the decoding end, the code stream can be decoded to determine the mode identification information corresponding to the current node group in at least one node group; and then the predicted value of the node in the current node group is determined according to the decoding mode indicated by the mode identification information. It can be seen from this that the nodes to be processed can be divided into different node groups, and then for different node groups, the coding mode suitable for the node group is selected, so that the corresponding predicted value is determined based on the coding mode suitable for the node group, thereby effectively improving the geometric coding efficiency of the point cloud, and thereby improving the coding and decoding performance of the point cloud. BRIEF DESCRIPTION OF THE DRAWINGS
[0031] FIG1A is a schematic diagram of a three-dimensional point cloud image provided in an embodiment of the present application;
[0032] FIG1B is a partially enlarged schematic diagram of a three-dimensional point cloud image provided in an embodiment of the present application;
[0033] FIG2A is a schematic diagram of a point cloud image at different viewing angles provided by an embodiment of the present application;
[0034] FIG2B is a schematic diagram of a data storage format corresponding to FIG2A provided in an embodiment of the present application;
[0035] FIG3 is a schematic diagram of a network architecture of point cloud encoding and decoding provided by an embodiment of the present application;
[0036] FIG4A is a schematic diagram of a composition framework of a G-PCC encoder provided in an embodiment of the present application;
[0037] FIG4B is a schematic diagram of a composition framework of a G-PCC decoder provided in an embodiment of the present application;
[0038] FIG5A is a schematic diagram of a low plane position in the Z-axis direction provided by an embodiment of the present application;
[0039] FIG5B is a schematic diagram of a high plane position in the Z-axis direction provided by an embodiment of the present application;
[0040] FIG6 is a schematic diagram of a node coding sequence provided in an embodiment of the present application;
[0041] FIG7A is a schematic diagram of a planar identification information provided in an embodiment of the present application;
[0042] FIG7B is a second schematic diagram of planar identification information provided in an embodiment of the present application;
[0043] FIG8 is a schematic diagram of sibling nodes of a current node provided in an embodiment of the present application;
[0044] FIG9 is a schematic diagram of the intersection of a laser radar and a node provided in an embodiment of the present application;
[0045] FIG10 is a schematic diagram of neighborhood nodes at the same partition depth and the same coordinates;
[0046] FIG11 is a schematic diagram of a current node being located at a low plane position of a parent node;
[0047] FIG12 is a schematic diagram showing a current node being located at a high plane position of a parent node;
[0048] FIG13 is a schematic diagram of predictive coding of planar position information of a laser radar point cloud;
[0049] FIG14 provides a schematic diagram of coding in inferred direct coding mode;
[0050] FIG15A is a schematic diagram of the intersection of a seed block;
[0051] FIG15B is a schematic diagram of triangular patch fitting of a sub-block;
[0052] FIG15C is a schematic diagram of upsampling of a sub-block;
[0053] FIG16 shows a schematic diagram of a composition framework of a point cloud encoder;
[0054] FIG17 shows a schematic diagram of a composition framework of a point cloud decoder;
[0055] FIG18 is a schematic diagram showing a flow chart of a decoding method provided in an embodiment of the present application;
[0056] FIG19 is a schematic diagram showing a flow chart of a decoding method provided in an embodiment of the present application;
[0057] FIG20 shows a schematic flow chart of an encoding method provided in an embodiment of the present application;
[0058] FIG21 is a schematic diagram of planar coding provided in an embodiment of the present application;
[0059] FIG22 is a schematic diagram of a reference node of a child node;
[0060] FIG23 is a schematic diagram of reference neighbor nodes of the current point;
[0061] FIG24 is a schematic diagram of adjacent blocks corresponding to the current block to be encoded;
[0062] Figure 25 is a schematic diagram of a prediction tree;
[0063] FIG26 is a schematic diagram of the structure of the encoder;
[0064] FIG27 is a second schematic diagram of the structure of the encoder;
[0065] FIG28 is a schematic diagram of the first structure of a decoder;
[0066] FIG29 is a second schematic diagram of the decoder structure. DETAILED DESCRIPTION
[0067] 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.
[0068] 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.
[0069] 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.
[0070] 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.
[0071] 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.
[0072] 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.
[0073] Two-dimensional images contain information at every pixel, and their distribution is regular, so there's no need to record their location information. 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 a point cloud. Similar to two-dimensional images, each location in the acquisition process has corresponding attribute information, typically an RGB color value, which reflects the object's color. For point clouds, in addition to color information, each point's corresponding attribute information often includes reflectance values, which reflect the surface texture of the object. Therefore, point cloud data typically includes geometric information consisting of three-dimensional position information, three-dimensional color information, and attribute information consisting of one-dimensional reflectance information. Points in a point cloud can include both position information and attribute information. For example, the position information of a point can be its three-dimensional coordinate information (x, y, z). The position 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, such as RGB information. Here, R represents red (Red, R), G represents green (Green, G), and B represents blue (Blue, B). For another example, the color information can be luminance and chrominance (YCbCr, YUV) information. Here, Y represents brightness (Luma), Cb (U) represents the blue color difference, and Cr (V) represents the red color difference.
[0074] 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.
[0075] 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).
[0076] Point clouds can be divided into the following categories according to the acquisition method:
[0077] Static point cloud: the object is stationary and the device that acquires the point cloud is also stationary;
[0078] Dynamic point cloud: The object is moving, but the device that obtains the point cloud is stationary;
[0079] Dynamic point cloud acquisition: The device used to acquire the point cloud is in motion.
[0080] For example, point clouds can be divided into two categories according to their usage:
[0081] 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;
[0082] 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.
[0083] 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.
[0084] 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.
[0085] 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. A 1280 × 720 2D video with a frame rate of 24 fps has a data volume of approximately 1280 × 720 × 12 bits × 24 fps × 10 seconds = 0.33 GB. A 10-second two-view 3D video has a data volume of approximately 0.33 × 2 = 0.66 GB. This shows that the data volume of a point cloud video far exceeds that of 2D and 3D videos 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.
[0086] 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.
[0087] 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, and the V-PCC codec framework can be used to compress the second type of dynamic point clouds. 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.
[0088] An 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 an 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 the implementation process, 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., which is not limited by the embodiment of the present application. Among them, the decoder or encoder in the embodiment of the present application can be the above-mentioned electronic device.
[0089] 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).
[0090] The following describes point cloud compression technology using the G-PCC encoding and decoding framework as an example.
[0091] 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.
[0092] 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.
[0093] 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.
[0094] 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).
[0095] Octree geometry encoding (OctGeomEnc) involves first transforming the geometric information 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 points becomes identical. Parameters are used to determine whether to remove duplicate points. This process of quantization and removing duplicate points is also known as voxelization. Next, the bounding box is partitioned into trees (e.g., octrees, quadtrees, binary trees, etc.) in a breadth-first traversal order, encoding the placeholders for each node. In related technology, a company has proposed an implicit geometry partitioning method. This method first calculates the bounding box (2^(d_x), 2^(d_y), 2^(d_z)) of the point cloud. Assuming d_x > d_y > d_z, the bounding box corresponds to a cuboid. During geometric partitioning, binary tree partitioning will first be performed based on the x-axis to obtain two child nodes; until the condition d_x=d_y>d_z is met, quadtree partitioning will be performed based on the x and y axes to obtain four child nodes; when the condition d_x=d_y=d_z is finally met, octree partitioning will be performed until the leaf node obtained by partitioning is a 1×1×1 unit cube, and the partitioning will be stopped. 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 corresponding minimum block side length when performing binary tree / quadtree partitioning is 2^M. At the same time, K and M must meet the conditions: Assume 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 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 the minimum unit of leaf node is 1×1×1. The octree-based geometric information coding mode can effectively encode the geometric information of the point cloud by utilizing the correlation between adjacent points in space. However, for some relatively flat nodes or nodes with planar characteristics, the coding efficiency of the point cloud geometric information can be further improved by utilizing the planar coding mode.
[0096] Exemplarily, Figure 5A and Figure 5B provide a kind of plane position schematic diagram.Wherein, Figure 5A shows a kind of low plane position schematic diagram in the Z-axis direction, and Figure 5B shows a kind of high plane position schematic diagram in the Z-axis direction.As shown in Figure 5A, here (a), (a0), (a1), (a2), (a3) all belong to the low plane position in the Z-axis direction. Taking (a) as an example, it can be seen that the four child nodes occupied in the current node are all located at the low plane position of the current node in the Z-axis direction, so it can be considered that the current node belongs to a Z plane and is a low plane in the Z-axis direction. Similarly, as shown in Figure 5B, here (b), (b0), (b1), (b2), (b3) all belong to the high plane position in the Z-axis direction. Taking (b) as an example, it can be seen that the four child nodes occupied in the current node are located at the high plane position of the current node in the Z-axis direction, so it can be considered that the current node belongs to a Z plane and is a high plane in the Z-axis direction.
[0097] Furthermore, comparing the efficiency of octree coding and plane coding, Figure 6 provides a schematic diagram of the node coding sequence, i.e., node coding is performed in the order of 0, 1, 2, 3, 4, 5, 6, and 7 as shown in Figure 6. Here, if octree coding is used for (a) in Figure 5A, the placeholder information of the current node is represented as: 11001100. However, if plane coding is used, first, an identifier must be encoded to indicate that the current node is a plane in the Z-axis direction. Secondly, if the current node is a plane in the Z-axis direction, the plane position of the current node must also be represented. Finally, only the placeholder information of the lower plane node in the Z-axis direction needs to be encoded (i.e., the placeholder information of the four child nodes 0, 2, 4, and 6). Therefore, encoding the current node using plane coding only requires 6 bits, which can reduce the representation by 2 bits compared to the related art octree coding. Based on this analysis, plane coding has significantly higher coding efficiency than octree coding. Therefore, for an occupied node, if a plane coding method is used for encoding in a certain dimension, it is first necessary to represent the plane identification (planarMode) and plane position (PlanePos) information of the current node in the dimension, and then encode the occupancy information of the current node based on the plane information of the current node. For example, Figure 7A shows a schematic diagram of plane identification information one. As shown in Figure 7A, there is a low plane in the Z-axis direction; correspondingly, the value of the plane identification information is true (true) or 1, that is, planarMode_Z=true; the plane position information is a low plane (low), that is, PlanePosition_Z=low. Figure 7B shows another schematic diagram of plane identification information two. As shown in Figure 7B, there is not a plane in the Z-axis direction; correspondingly, the value of the plane identification information is false (false) or 0, that is, planarMode_Z=false.
[0098] Note that for PlaneMode_i: 0 means the current node is not a plane in the i-axis direction, and 1 means the current node is a plane in the i-axis direction. If the current node is a plane in the i-axis direction, then for PlanePosition_i: 0 means the current node is a lower plane in the i-axis direction, and 1 means the current node is a higher plane in the i-axis direction. i represents the coordinate dimension, which can be the X-axis direction, the Y-axis direction, or the Z-axis direction, so i = 0, 1, or 2.
[0099] In the G-PCC standard, to determine whether a node meets the plane coding conditions and when the node meets the plane coding conditions, it is necessary to predictively code the plane identification and plane position information of the node.
[0100] There are three judgment conditions in the current G-PCC standard to determine whether a node meets the plane coding. The following will explain them in detail one by one.
[0101] First, judge according to the plane probability of the node in each dimension.
[0102] (1) Determine the local area density (local_node_density) of the current node;
[0103] (2) Determine the probability Prob(i) of the current node in each dimension.
[0104] When the local area density of the node is less than the threshold Th (for example, Th = 3), compare the plane probability Prob(i) of the current node in the three coordinate dimensions with the thresholds Th0, Th1, and Th2, where Th0 < Th1 < Th2 (for example, Th0 = 0.6, Th1 = 0.77, Th2 = 0.88). Here, Eligiblei (i = 0, 1, 2) can be used to represent whether plane coding is started in each dimension: Eligiblei = Prob(i) >= threshold.
[0105] It should be noted that the threshold is adaptively changed. For example, when Prob(0) > Prob(1) > Prob(2), the settings of Eligiblei are as follows:
[0106] Eligible0 = Prob(0) >= Th0;
[0107] Eligible1 = Prob(1) >= Th1;
[0108] Eligible2 = Prob(2) >= Th2.
[0109] When Prob(1) > Prob(0) > Prob(2), the settings of Eligible i are as follows:
[0110] Eligible0 = Prob(0) >= Th1;
[0111] Eligible1 = Prob(1) >= Th0;
[0112] Eligible2 = Prob(2) >= Th2.
[0113] Here, the update of Prob(i) is specifically as follows:
[0114] Prob(i) new=(L×Prob(i)+δ(coded node)) / L+1 (1)
[0115] Where L = 255; in addition, if the coded node is a plane, δ(coded node) is 1; otherwise, δ(coded node) is 0.
[0116] Here, the update of local_node_density is as follows:
[0117] local_node_density new =local_node_density+4×numSiblings (2)
[0118] Where local_node_density is initialized to 4, and numSiblings is the number of siblings of the node. For example, FIG8 is a schematic diagram of the siblings of a current node provided in an embodiment of the present application. As shown in FIG8 , the current node is a node filled with slashes, and the nodes filled with grids are siblings. Therefore, the number of siblings of the current node is 5 (including the current node itself).
[0119] Second, determine whether the current layer nodes meet the plane coding requirements based on the point cloud density of the current layer.
[0120] The density of the current layer points is used to determine whether to perform plane coding on the nodes of the current layer. Assuming that the number of points in the current point cloud to be coded is pointCount, the number of points reconstructed after IDCM coding is numPointCountRecon, and because the octree is coded based on the order of breadth-first traversal, the number of nodes to be coded in the current layer can be obtained as nodeCount. Then, the determination of whether to start plane coding in the current layer is assumed to be planarEligibleKOctreeDepth, specifically: planarEligibleKOctreeDepth = (pointCount-numPointCountRecon) <nodeCount×1.3。
[0121] Among them, if (pointCount-numPointCountRecon) is less than nodeCount×1.3, then planarEligibleK OctreeDepth is true; if (pointCount-numPointCountRecon) is not less than nodeCount×1.3, then planarEligibleKOctreeDepth is false. In this way, when planarEligibleKOctreeDepth is true, all nodes in the current layer are planar coded; otherwise, all nodes in the current layer are not planar coded and only octree coding is used.
[0122] 3. Determine whether the current node meets the plane coding requirements based on the acquisition parameters of the lidar point cloud.
[0123] Figure 9 is a schematic diagram of the intersection of a laser radar and a node, provided in an embodiment of the present application. As shown in Figure 9, a node filled with a grid is simultaneously traversed by two laser beams, so the current node is not a plane perpendicular to the Z axis. A node filled with a slash is small enough to not be traversed by two laser beams simultaneously, so the green node may be a plane perpendicular to the Z axis.
[0124] Furthermore, for nodes that meet the plane coding conditions, predictive coding may be performed on the plane identification information and the plane position information.
[0125] First, predictive coding of plane identification information.
[0126] Here, only three context information are used for encoding, that is, the plane identification in each coordinate dimension is designed separately for context.
[0127] Secondly, predictive coding of plane position information.
[0128] It should be understood that for the encoding of non-lidar point cloud planar position information, in related technologies, existing reference context information may include:
[0129] (a) Using the occupancy information of neighboring nodes, the plane position information of the current node is predicted to be three elements: predicted as low plane, predicted as high plane, and unpredictable;
[0130] (b) Spatial distance between nodes at the same partition depth and coordinates as the current node and the current node: “near” and “far”;
[0131] (c) If the node at the same partition depth and the same coordinates as the current node is a plane, determine the plane position of the node;
[0132] (d) Coordinate dimension (i=0, 1, 2).
[0133] Exemplarily, Figure 10 is a schematic diagram of neighboring nodes at the same division depth and the same coordinates. As shown in Figure 10, the current node is a small cube filled with a grid. Then, at the same octree division depth level and the same vertical coordinate, the neighboring node is searched as a small cube filled with white, and the distance between the two nodes is judged as "near" and "far", and the plane position of the reference node is used.
[0134] In an embodiment of the present application, FIG11 is a schematic diagram of a current node being located at a low plane position of a parent node. As shown in FIG11 , (a), (b), and (c) illustrate three examples of the current node being located at a low plane position of a parent node. Specific descriptions are as follows:
[0135] ① If any of the child nodes 4 to 7 of the point fill node is occupied, and all the grid fill nodes are not occupied, it is very likely that there is a plane in the current node (filled with a slash), and the plane is located lower.
[0136] ② If the child nodes 4 to 7 of the point fill node are not occupied, and any grid fill node is occupied, it is very likely that there is a plane in the current node (filled with diagonal lines), and the plane is located higher.
[0137] ③ If the child nodes 4 to 7 of the point fill node are all empty nodes and the grid fill nodes are all empty nodes, the plane position cannot be inferred and is therefore marked as unknown.
[0138] ④ If any of the child nodes 4 to 7 of the point fill node is occupied and any of the grid fill nodes is occupied, the plane position cannot be inferred at this time, so it is marked as unknown.
[0139] In an embodiment of the present application, FIG12 is a schematic diagram of a current node being located at a high plane position of a parent node. As shown in FIG12, (a), (b), and (c) illustrate three examples of the current node being located at a high plane position of a parent node. Specific descriptions are as follows:
[0140] ① If any of the child nodes 4 to 7 of the grid fill node is occupied, and the point fill node is not occupied, it is very likely that there is a plane in the current node (filled with diagonal lines), and the plane position is low.
[0141] ② If the child nodes 4 to 7 of the grid fill node are not occupied, and the point fill node is occupied, it is very likely that there is a plane in the current node (filled with a slash), and the plane position is higher.
[0142] ③If the child nodes 4 to 7 of the grid fill node are all unoccupied, and the point fill node is unoccupied, the plane position cannot be inferred at this time, so it is marked as unknown.
[0143] ④ If one of the child nodes 4 to 7 of the grid fill node is occupied and the point fill node is occupied, the plane position cannot be inferred at this time and is therefore marked as unknown.
[0144] It should also be understood that, with respect to the coding of the plane position information of the laser radar point cloud, FIG13 is a schematic diagram of the predictive coding of the plane position information of the laser radar point cloud. As shown in FIG13 , when the laser radar emission angle is θ bottom When , it can be mapped to the bottom virtual plane; when the laser radar emission angle is θ top At this time, it can be mapped to the high plane (Top virtual plane).
[0145] That is, by using the laser radar acquisition parameters to predict the plane position of the current node, and by using the position where the current node intersects with the laser ray to quantize the position into multiple intervals, the final result is the context information of the plane position of the current node. The specific calculation process is as follows: Assume that the coordinates of the laser radar are (x Lidar ,y Lidar , z Lidar ), the geometric coordinates of the current node are (x, y, z), then first calculate the vertical tangent value tanθ of the current node relative to the lidar, the calculation formula is as follows:
[0146] Furthermore, because each laser has a certain offset angle relative to the laser radar, it is also necessary to calculate the relative tangent value tanθ of the current node relative to the laser corr,L , the specific calculation is as follows:
[0147] Finally, the relative tangent value tanθ of the current node will be used corr,L To predict the plane position of the current node, as follows, assuming that the tangent value of the lower boundary of the current node is tan(θ bottom ), the tangent value of the upper boundary is tan(θ top ), according to tanθ corr,L The plane position is quantized into four quantization intervals, that is, the context information of the plane position is determined.
[0148] However, the octree-based geometric information coding mode only has an efficient compression rate for points that are correlated in space. For points that are isolated in the geometric space, the use of the Direct Coding Model (DCM) can greatly reduce the complexity. For all nodes in the octree, the use of DCM is not indicated by flag information, but is inferred from the parent node and neighbor information of the current node. There are three ways to determine whether the current node is eligible for DCM coding, as follows:
[0149] (1) The current node has no sibling child nodes, that is, the parent node of the current node has only one child node, and the parent node of the parent node of the current node has only two occupied child nodes, that is, the current node has at most one neighbor node.
[0150] (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.
[0151] (3) The number of sibling nodes of the current node is greater than 1.
[0152] For example, Figure 14 provides a schematic diagram of inferred direct coding model (IDCM) encoding. If the current node does not meet the DCM encoding requirements, it will be octree-partitioned. If it meets the DCM encoding requirements, the number of points contained in the node will be further determined. If the number of points is less than a threshold (e.g., 2), the node will be DCM-encoded. Otherwise, octree-partitioning will continue. When the DCM encoding mode is applied, it is first necessary to encode whether the current node is a true isolated point, i.e., IDCM_flag. When IDCM_flag is true, the current node is DCM-encoded. Otherwise, octree encoding is still used. When the current node meets the DCM encoding requirements, the DCM encoding mode of the current node needs to be encoded. There are currently two DCM modes: (a) only one point exists (or multiple points, but they are duplicate points); (b) contains two points. Finally, the geometric information of each point needs to be encoded. Assuming that the side length of the node is 2^d, d bits are required to encode each component of the node's geometric coordinates. This bit information is directly encoded into the bitstream. It should be noted here that when encoding the lidar point cloud, the three-dimensional coordinate information can be predictively encoded by using the lidar acquisition parameters, thereby further improving the coding efficiency of the geometric information.
[0153] It's also 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.
[0154] For octree-based geometric decoding, the decoder follows a breadth-first traversal. Before decoding each node's occupancy information, it first uses the reconstructed geometric information to determine whether the current node is for plane decoding or IDCM decoding. If the current node meets the requirements for plane decoding, it first decodes the plane identifier and plane position information of the current node. Then, based on the plane information, it decodes the current node's occupancy information. If the current node meets the requirements for IDCM decoding, it first decodes whether the current node is a true IDCM node. If so, it continues to parse the current node's DCM decoding mode, then obtains the number of points in the current DCM node, and finally decodes the geometry of each point. For nodes that do not meet either plane decoding or DCM decoding requirements, the current node's occupancy information is decoded. By continuously parsing in this way, the placeholder code of each node is obtained, and the node is continuously partitioned until a 1x1x1 unit cube is obtained. The number of points contained in each leaf node is parsed, and the geometrically reconstructed point cloud information is finally recovered.
[0155] 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.
[0156] 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 15A, 15B, and 15C. Among them, there are three intersection points (v1, v2, v3) in the block shown in Figure 15A. 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 15B. 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 15C.
[0157] 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: KD-Tree (high-latency slow mode) and 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 prediction residual, and the geometric prediction residual is 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 parameters are encoded to generate a binary bitstream.
[0158] 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.
[0159] 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 code stream, as shown in Figures 4A and 4B.
[0160] Furthermore, when using geometric information to predict attribute information, Morton codes can be used to perform nearest neighbor search. 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:
[0161] 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 arrange x, y, and z in a crosswise order starting from the highest bit. l ,y l , z l To the lowest bit, the calculation formula of M is as follows:
[0162] 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.
[0163] It can also be understood that for the G-PCC codec framework, the general test conditions are as follows:
[0164] (1) There are 4 test conditions:
[0165] Condition 1: The geometric position is limited and the attributes are lost;
[0166] Condition 2: Geometric position lossless, attribute lossy;
[0167] Condition 3: Geometric position lossless, attribute loss limited;
[0168] Condition 4: Geometric position and attributes are lossless.
[0169] (2) The general test sequence includes four categories: Cat1A, Cat1B, Cat3-fused, and Cat3-frame. Among them, Cat2-frame point cloud only contains reflectance attribute information, Cat1A and Cat1B point clouds only contain color attribute information, and Cat3-fused point cloud contains both color and reflectance attribute information.
[0170] (3) Technical routes: There are two types in total, which are distinguished by the algorithm used for geometric compression.
[0171] Technical route 1: Octree encoding branch.
[0172] 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.
[0173] 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.
[0174] Technical route 2: prediction tree encoding branch.
[0175] 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). Using 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 structure of the prediction tree, 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 prediction residual, and the geometric prediction residual is quantized using the quantization parameter. Finally, through continuous iteration, the prediction residual of the prediction tree node position information, the prediction tree structure, and the quantization parameters are encoded to generate a binary code stream.
[0176] 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.
[0177] It can be seen that in the G-PCC codec, when the current node meets the conditions for plane coding, the distribution density of the nodes in each layer is used to adaptively decide whether to perform plane coding on each layer of nodes. The geometric distribution characteristics of the point cloud are not considered in more detail, resulting in low geometric coding efficiency of the point cloud.
[0178] The following describes point cloud compression technology using the AVS-PCC encoding and decoding framework as an example.
[0179] In the point cloud AVS encoder framework, the geometric information of the point cloud and the attribute information corresponding to each point are encoded separately. First, the geometric information is transformed so that all the 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 point cloud slices based on the parameter configuration, and each divided point cloud slice is treated as a single independent point cloud serial processing. The preprocessing process includes quantization and removal of duplicate points. Quantization mainly plays a role in scaling. Due to quantization rounding, the geometric information of some points is the same, and 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 the octree-based geometric code framework, the bounding box is sequentially divided into sub-cubes. The sub-cubes that are not empty (contain points in the point cloud) are further divided until the leaf node obtained is a 1x1x1 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 code stream. In the octree-based geometric decoding process, the decoder follows the order of breadth-first traversal, continuously parsing to obtain the placeholder code of each node, and continuously divides the nodes in sequence until the division reaches a 1x1x1 unit cube. The division stops, the parsing obtains the number of points contained in each leaf node, and finally recovers the geometric reconstructed point cloud information.
[0180] There are two encoding methods in the current AVS geometric coding, one is octree coding and the other is prediction tree coding.
[0181] Among them, if octree encoding is used, there are two context encoding models, context model 1 is used for cat1-A and cat2 point cloud sequences; context model 2 is used for cat1-B and cat3 sequences.
[0182] As you can understand, in the AVS-PCC codec framework, point cloud compression generally uses a method of compressing point cloud geometry information and attribute information separately. On the encoding side, the point cloud geometry information is first encoded in the geometry encoder, and then the reconstructed geometry information is input as additional information to the attribute encoder to assist in the compression of point cloud attributes. On the decoding side, the point cloud geometry information is first decoded in the geometry decoder, and then the decoded geometry information is input as additional information to the attribute decoder to assist in the compression of point cloud attributes. The entire codec consists of pre-processing / post-processing, geometry encoding / decoding, and attribute encoding / decoding.
[0183] The present embodiment provides a point cloud encoder. As shown in FIG16 , which is the framework of the point cloud compression reference platform PCRM provided by AVS, the point cloud encoder 11 includes a geometry encoder: a coordinate translation unit 111, a coordinate quantization unit 112, an octree construction unit 113, a geometry entropy encoder 114, and a geometry reconstruction unit 115. An attribute encoder: an attribute recoloring unit 116, a color space conversion unit 117, a first attribute prediction unit 118, a quantization unit 119, and an attribute entropy encoder 1110.
[0184] For PCRM, in the geometric coding part of the encoding end, the original geometric information is first preprocessed, and the geometric origin is normalized to the minimum position in the point cloud space through the coordinate translation unit 111. The geometric information is converted from floating point numbers to integers through the coordinate quantization unit 112 to facilitate subsequent regularization processing; then the regularized geometric information is geometrically encoded, and the octree structure is used in the octree construction unit 113 to recursively divide the point cloud space, each time dividing the current node into eight sub-blocks of the same size, and judging the occupancy codeword of each sub-block. When the sub-block does not contain a point, it is recorded as empty, otherwise it is recorded as non-empty. The occupancy codeword information of all blocks is recorded in the last layer of the recursive division, and geometric encoding is performed; the geometric information expressed by the octree structure is input into the geometric entropy encoder 114 to form a geometric code stream, and on the other hand, geometric reconstruction processing is performed in the geometric reconstruction unit 115. The reconstructed geometric information is input into the attribute encoder as additional information.
[0185] In the attribute encoding part, the original attribute information is first preprocessed. Since the geometric information changes after geometric encoding, the attribute value is reassigned to each point after geometric encoding through the attribute recoloring unit 116 to achieve attribute recoloring. In addition, if the processed attribute information is color information, the original color information needs to be transformed into a YUV color space that is more in line with the visual characteristics of the human eye through the color space conversion unit 117; then, the preprocessed attribute information is attribute encoded through the first attribute prediction unit 118. Attribute encoding first requires reordering the point cloud. The reordering method is Morton code, so the traversal order of attribute encoding is Morton order. The attribute prediction method in PCRM is a single-point prediction based on the Morton order, that is, the attribute prediction method is performed from the current point to be encoded (current node) back one point in the Morton order, and the node found is the prediction reference point of the current point to be encoded. Then, the attribute reconstruction value of the prediction reference point is used as the attribute prediction value, and the attribute residual value is the difference between the attribute original value and the attribute prediction value of the current point to be encoded; finally, the attribute residual value is quantized by the quantization unit 119, and the quantized residual information is input into the attribute entropy encoder 1110 to form an attribute code stream.
[0186] The present application also provides a point cloud decoder. As shown in FIG17 , which is the framework of the point cloud compression reference platform PCRM provided by AVS, the point cloud decoder 12 includes a geometric decoder: a geometric entropy decoder 121, an octree reconstruction unit 122, a coordinate inverse quantization unit 123, and a coordinate inverse translation unit 124. An attribute decoder: an attribute entropy decoder 125, an inverse quantization unit 126, a second attribute prediction unit 127, and an inverse color space transformation unit 128.
[0187] On the decoding side, the same method of separate geometry and attribute decoding is used. In the geometry decoding part, the geometry bitstream is first entropy decoded by the geometry entropy decoder 121 to obtain the geometric information of each node. Then, the octree structure is constructed by the octree reconstruction unit 122 in the same manner as the geometry encoding. Combined with the decoded geometry, the coordinate-transformed geometric information expressed by the octree structure is reconstructed. On the one hand, this information is dequantized by the coordinate dequantization unit 123 and detranslated by the coordinate detranslation unit 124 to obtain the decoded geometric information. On the other hand, it is input into the attribute decoder as additional information. In the attribute decoding part, the Morton order is constructed in the same way as the encoding end. The attribute code stream is first entropy decoded by the attribute entropy decoder 125 to obtain the quantized residual information; then, it is dequantized by the dequantization unit 126 to obtain the attribute residual value; similarly, in the same way as the attribute encoding, the attribute prediction value of the current point to be decoded is obtained by the second attribute prediction unit 127, and then the attribute prediction value is added to the attribute residual value to restore the attribute reconstruction value of the current point to be decoded (for example, the YUV attribute value); finally, the decoded attribute information is obtained by color space inverse transformation by the color space inverse transformation unit 128.
[0188] It can also be understood that the AVS-PCC encoding and decoding framework can be divided into Pred-based, Predtrans-resource-constrained, Predtrans-resource-unlimited, and Trans-based.
[0189] There are 4 general test conditions, which can include:
[0190] Condition 1: The geometric position is limited and the attributes are lost;
[0191] Condition 2: Geometric position lossless, attribute lossy;
[0192] Condition 3: Geometric position lossless, attribute loss limited;
[0193] Condition 4: Geometric position and attributes are lossless.
[0194] The general test sequences include Cat1A, Cat1B, Cat1C, Cat2-frame, and Cat3. Cat1A and Cat2-frame point clouds only contain reflectance attribute information, Cat1B and Cat3 point clouds only contain color attribute information, and Cat1C point clouds contain both color and reflectance attribute information.
[0195] There are four technical routes, which are distinguished by the algorithms used for attribute compression.
[0196] Technical Route 1: Pred (prediction) branch, attribute compression uses an intra-frame prediction-based method:
[0197] 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.
[0198] 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.
[0199] Technical Route 2: Based on Predtrans-Resource Constraints (based on the prediction transform branch - resource constraints), attribute compression uses a method based on intra-frame prediction and k-ary discrete cosine transform (DCT). When encoding the quantized transform coefficients, there is a maximum point number X (such as 4096), that is, at most every X points can be encoded as a group:
[0200] 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.
[0201] 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.
[0202] Technical Route 3: Based on Predtrans-Resource Unlimited (based on the prediction transform branch - resource unlimited), attribute compression uses a method based on intra-frame prediction and DCT transform. When encoding the quantized transform coefficients, there is no maximum point number X limit, that is, all coefficients are encoded together:
[0203] 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.
[0204] 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.
[0205] Technical Route 4: Based on the Trans branch (multi-layer transform branch), attribute compression adopts a method based on multi-layer wavelet transform:
[0206] 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.
[0207] 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.
[0208] In technical route 1, the coefficients may be quantized residuals, and in the above embodiments 2, 3, and 4, the coefficients may be quantized transform coefficients.
[0209] It can be seen that in the current AVS-PCC codec, the point cloud density at the encoding end is used to adaptively determine whether the point cloud adopts context coding model 1 or context coding model 2, without taking into account the spatial distribution characteristics of the point cloud itself.
[0210] In order to solve the above problems, an embodiment of the present application provides a coding and decoding method. At the encoding end, the nodes to be processed are divided and processed to determine at least one node group corresponding to the nodes to be processed; the coding mode corresponding to the current node group in at least one node group is determined; the predicted value of the node in the current node group is determined according to the coding mode; the mode identification information corresponding to the current node group is determined according to the coding mode, and the mode identification information is written into the code stream. At the decoding end, the nodes to be processed are divided and processed to determine at least one node group corresponding to the nodes to be processed; the code stream is decoded to determine the mode identification information corresponding to the current node group in at least one node group; the predicted value of the node in the current node group is determined according to the decoding mode indicated by the mode identification information. In this way, by dividing the nodes to be processed into different node groups, and then selecting the coding mode suitable for the node group for different node groups, encoding based on the coding mode suitable for the node group can effectively improve the geometric coding efficiency of the point cloud, thereby improving the coding and decoding performance of the point cloud.
[0211] The embodiments of the present application will be described in detail below with reference to the accompanying drawings.
[0212] In one embodiment of the present application, referring to FIG18 , a flowchart of a decoding method provided by an embodiment of the present application is shown. As shown in FIG18 , the method may include:
[0213] Step 101: Divide the nodes to be processed and determine at least one node group corresponding to the nodes to be processed.
[0214] In an embodiment of the present application, the nodes to be processed may be divided first to determine at least one node group corresponding to the nodes to be processed.
[0215] It should be noted that the decoding method of the embodiment of the present application specifically refers to a point cloud decoding method, which can be applied to a point cloud decoder (also referred to as a "decoder").
[0216] It should be noted that, in the embodiment of the present application, the point cloud to be processed includes a plurality of nodes to be processed. Among them, when decoding the node to be processed, the node to be processed in the point cloud to be processed can be used as the node to be decoded in the point cloud to be processed.
[0217] Furthermore, in an embodiment of the present application, for each node to be processed in the point cloud to be processed, it corresponds to a geometric information and an attribute information; wherein the geometric information represents the spatial relationship of the point, and the attribute information represents the relevant information of the attribute of the point.
[0218] Here, the attribute information may be color information, or reflectivity, or other attributes, which are not specifically limited in the embodiments of the present application. Specifically, when the attribute information is color information, it may be color information in any color space. For example, the attribute information may be color information in an RGB space, a YUV space, a YCbCr space, or the like, which are not specifically limited in the embodiments of the present application.
[0219] It should be noted that in an embodiment of the present application, during the decoding process of the octree, the nodes to be processed may be part or all of the nodes in one of the layers to be coded, or part or all of the nodes in some of the layers to be coded, or part or all of the nodes in all the layers to be coded.
[0220] Exemplarily, in an embodiment of the present application, during the decoding process of the octree, all nodes in the second coding layer of the octree can be used as nodes to be processed; or some nodes in the second coding layer of the octree, for example, 4 of them, can be used as nodes to be processed.
[0221] For example, in an embodiment of the present application, during the decoding process of the octree, the octree has a total of 10 coding layers, and all the nodes in the 2nd, 3rd and 4th layers can be used as nodes to be processed; or some of the nodes in the 2nd, 3rd and 4th layers can be used as nodes to be processed. For example, the nodes to be processed may include all the nodes in the 2nd layer, some of the nodes in the 3rd layer and some of the nodes in the 4th layer.
[0222] Exemplarily, in an embodiment of the present application, during the decoding process of the octree, the i-th layer includes 8 nodes, and the i+1-th layer includes 64 nodes; wherein i is an integer greater than 0; the nodes to be processed may include 4 nodes in the i-th layer, and 32 nodes in the i+1-th layer.
[0223] For example, in an embodiment of the present application, during the decoding process of the octree, the octree has a total of 10 coding layers, and all nodes in the 10 coding layers can be used as nodes to be processed; some nodes in the 10 coding layers can also be used as nodes to be processed, for example, the nodes to be processed can include half of the nodes in each layer in the 10 coding layers.
[0224] Furthermore, in an embodiment of the present application, the nodes to be processed may be divided to obtain at least one node group.
[0225] Exemplarily, in an embodiment of the present application, during the decoding process of the octree, the nodes to be processed are all nodes in the i-th layer and the i+1-th layer, then all nodes in the i-th layer and the i+1-th layer can be divided and processed to obtain at least one node group.
[0226] Exemplarily, in an embodiment of the present application, during the decoding process of the octree, the i-th layer includes 8 nodes, the i+1-th layer includes 64 nodes, the nodes to be processed include 4 nodes in the i-th layer, and 32 nodes in the i+1-th layer. The 4 nodes in the i-th layer and the 32 nodes in the i+1-th layer can be divided and processed to obtain at least one node group.
[0227] Exemplarily, in an embodiment of the present application, during the decoding process of the octree, if the nodes to be processed are part of the nodes in the i-th layer, then part of the nodes in the i-th layer are divided and processed to obtain at least one node group.
[0228] For example, in an embodiment of the present application, during the decoding process of the octree, the octree has a total of 10 coding layers, and the nodes to be processed are all the nodes in these 10 coding layers. Then, all the nodes in these 10 coding layers can be divided and processed to obtain at least one node group.
[0229] In some embodiments, a layer of nodes obtained after the octree is divided may be determined as a node group.
[0230] Illustratively, in an embodiment of the present application, during the decoding process of the octree, the nodes of the i-th layer may be divided into a node group.
[0231] Illustratively, in an embodiment of the present application, during the decoding process of the octree, the nodes of the i-th layer may be divided into a node group, and the nodes of the i+1-th layer may be divided into a node group.
[0232] In some embodiments, multiple layers of nodes obtained after the octree partitioning may be determined as a node group.
[0233] Illustratively, in an embodiment of the present application, during the decoding process of the octree, all nodes in the i-th layer and the i+1-th layer are divided into one node group.
[0234] Illustratively, in an embodiment of the present application, during the decoding process of the octree, some nodes in the i-th layer and some nodes in the (i+1)-th layer may be divided into one node group.
[0235] In some embodiments, a layer of nodes obtained after the octree is divided may be divided into multiple node groups.
[0236] Illustratively, in an embodiment of the present application, during the decoding process of the octree, the nodes of the i-th layer may be divided into four node groups, each of which includes four nodes.
[0237] Exemplarily, in an embodiment of the present application, during the decoding process of the octree, the nodes of the i+2th layer can be divided into 3 node groups, where node group 1 and node group 2 each include 8 nodes, and node group 3 includes 4 nodes.
[0238] Exemplarily, in an embodiment of the present application, during the decoding process of the octree, the nodes of the i-th layer can be divided into 4 node groups, each node group includes 4 nodes, and at the same time, the nodes of the i+1-th layer can be divided into 4 node groups, each node group includes 8 nodes.
[0239] Exemplarily, in an embodiment of the present application, during the decoding process of the octree, the nodes of the i-th layer can be divided into 4 node groups, of which three node groups include 8 nodes and one node group includes 4 nodes; at the same time, the nodes of the i+1-th layer are divided into 4 node groups, of which each node group includes 8 nodes.
[0240] It should be noted that in an embodiment of the present application, when dividing the nodes to be processed, the number of nodes in the node group can be limited by a preset threshold; that is, the number of nodes in different node groups in at least one node group is less than or equal to the preset threshold.
[0241] Exemplarily, in an embodiment of the present application, the nodes to be decoded in the current layer (nodes to be processed) are divided to obtain different groups (node groups), where the number of nodes in each group is N (N=1024), and the preset threshold is 1024, that is, in these groups, the number of nodes in each group is equal to the preset threshold.
[0242] For example, in an embodiment of the present application, the preset threshold is 10, and the nodes in the i-th layer are divided according to the preset threshold to obtain 4 node groups, among which node group 1 includes 8 nodes, node group 2 includes 8 nodes, node group 3 includes 4 nodes, and node group 4 includes 4 nodes, all of which are less than the preset threshold.
[0243] For example, in an embodiment of the present application, the preset threshold is 10, and the third-layer nodes of the octree are divided and processed according to the preset threshold to obtain three node groups, among which node group 1 includes 10 nodes, node group 2 includes 8 nodes, and node group 3 includes 4 nodes, that is, the number of nodes in node group 1 is equal to the preset threshold, and the number of nodes in node group 2 and node group 3 is less than the preset threshold.
[0244] Exemplarily, in an embodiment of the present application, assuming that the number of nodes of the current layer to be encoded is nodeCount, the maximum Length (preset threshold) of the initialized Group is nodeCount.
[0245] Furthermore, in an embodiment of the present application, in at least one node group obtained after the nodes to be processed are divided into different groups, the number of nodes in different node groups is not the same.
[0246] For example, in an embodiment of the present application, point division processing is performed on the i-th layer nodes to obtain 3 node groups, among which node group 1 includes 8 nodes, node group 2 includes 8 nodes, and node group 3 includes 4 nodes. Then, the number of nodes in node group 1 and node group 2 is the same, and the number of nodes in node group 3 is different from that in node group 1 and node group 2.
[0247] In some embodiments, adaptive division processing may be performed on the nodes to be processed according to a rate-distortion optimization algorithm to determine at least one node group.
[0248] Exemplarily, in an embodiment of the present application, the nodes to be processed are nodes in all coding layers of the octree, including nodes in 20 coding layers. All nodes in these 20 coding layers are adaptively divided and processed according to the rate-distortion optimization algorithm to obtain 32 node groups.
[0249] Exemplarily, in an embodiment of the present application, the nodes to be processed are nodes of three coding layers in the octree, and the nodes of the three coding layers are adaptively divided and processed according to a rate-distortion optimization algorithm to obtain three node groups.
[0250] Exemplarily, in an embodiment of the present application, the nodes to be processed are all nodes in the first layer, some nodes in the second layer, and some nodes in the third layer in the octree. All nodes in the first layer, some nodes in the second layer, and some nodes in the third layer are adaptively divided and processed according to the rate-distortion optimization algorithm to obtain 10 node groups.
[0251] Furthermore, in an embodiment of the present application, the number of nodes may also be determined based on length information of a current node group in at least one node group.
[0252] Illustratively, in an embodiment of the present application, the length information of the current node group is 8 nodes, which means that the current node group includes 8 nodes.
[0253] Step 102: Decode the code stream to determine the mode identification information corresponding to the current node group in at least one node group.
[0254] In an embodiment of the present application, after dividing the nodes to be processed and determining at least one node group corresponding to the nodes to be processed, the code stream can be decoded to determine the mode identification information corresponding to the current node group in the at least one node group.
[0255] It should be noted that in an embodiment of the present application, if the value of the mode identification information is the first value, the decoding mode indicated by the mode identification information is determined to be octree decoding; if the value of the mode identification information is the second value, the decoding mode indicated by the mode identification information is determined to be plane decoding.
[0256] It should be noted that, in the embodiment of the present application, the first value and the second value are used to indicate a specific encoding and decoding mode in the G-PCC encoding and decoding framework.
[0257] In some embodiments, for the G-PCC codec framework, when the value of the mode identification information is a first value, it indicates that the decoding mode is octree decoding; when the value of the mode identification information is a second value, it indicates that the decoding mode is plane decoding.
[0258] Furthermore, in the embodiments of the present application, the specific numerical values of the first value and the second value are not limited in the present application. For example, the first value may be 0, and the second value may be 1.
[0259] For example, in an embodiment of the present application, the nodes to be decoded in the current layer are divided into different groups, where the number of nodes in each group is N (N=1024), which is consistent with the encoding end. Secondly, before decoding the geometric information of each group, the decoding mode codeMode of the current group is first decoded. If the codeMode of the current group is 0, octree decoding is used; otherwise, plane decoding is used. The details are as follows:
[0260] Furthermore, in an embodiment of the present application, if the decoding mode indicated by the mode identification information is octree decoding, the octree is used to decode the geometric information of all nodes in the current node group; if the decoding mode indicated by the mode identification information is plane decoding, plane decoding is used to decode the geometric information of all nodes in the current node group.
[0261] It should be noted that in an embodiment of the present application, if the value of the mode identification information is the third value, the decoding mode indicated by the mode identification information is determined to be the first context decoding; if the value of the mode identification information is the fourth value, the decoding mode indicated by the mode identification information is determined to be the second context decoding.
[0262] It should be noted that, in the embodiment of the present application, the third value and the fourth value are used to indicate a specific encoding and decoding mode in the AVS-PCC encoding and decoding framework.
[0263] In some embodiments, for the AVS-PCC codec framework, when the value of the mode identification information is the third value, it indicates that the decoding mode is the first context decoding; when the value of the mode identification information is the third value, it indicates that the decoding mode is the second context decoding.
[0264] It should be noted that, in the embodiment of the present application, the first context decoding is decoding using context coding model one, and the second context decoding is decoding using context coding model two.
[0265] Furthermore, in the embodiments of the present application, the specific numerical values of the third value and the fourth value are not limited in the present application. For example, the first value may be 0 and the second value may be 1.
[0266] For example, in an embodiment of the present application, the nodes to be decoded in the current layer are divided into different groups (node groups), where the number of nodes in each group is N (N=1024). Secondly, before decoding the geometric information of each group, the decoding mode codeMode (mode identification information) of the current group is first decoded. If the codeMode of the current group is 0, context coding model 1 is used for decoding; otherwise, context coding model 2 is used for decoding. The details are as follows:
[0267] Furthermore, in an embodiment of the present application, if the decoding mode indicated by the mode identification information is first context decoding, the first context is used to decode the geometric information of all nodes in the current node group; if the decoding mode indicated by the mode identification information is second context decoding, the second context is used to decode the geometric information of all nodes in the current node group.
[0268] In addition, in an embodiment of the present application, the code stream may be decoded to determine the length information corresponding to the current node group in at least one node group; and the number of nodes in the current node group may be determined based on the length information.
[0269] In addition, in an embodiment of the present application, a rate-distortion optimization algorithm can also be used to determine the first-generation value of encoding geometric information of nodes in the current node group using octree coding, and the second-generation value of encoding geometric information of nodes in the current node group using plane coding. If the first-generation value is less than or equal to the second-generation value, the encoding mode corresponding to the current node group is determined to be octree coding; if the first-generation value is greater than the second-generation value, the encoding mode corresponding to the current node group is determined to be plane coding.
[0270] For example, in an embodiment of the present application, in the octree coding process, the nodes of the layer to be coded are divided into different groups. Assuming that the number of nodes in each group is N (N=1024), the rate-distortion optimization algorithm is used at the coding end to adaptively select plane coding or octree coding for each group. Assuming that the coding mode of the current group is codeMode, the specific algorithm process is as follows:
[0271] Furthermore, in an embodiment of the present application, the nodes to be encoded in the current layer are divided into different groups, and then the optimal coding mode (codeMode) is selected at the encoding end using the rate-distortion optimization criterion. Finally, each group encodes a coding mode of the current group. When the cost (first-generation value) of octree coding is less than the cost (second-generation value) of plane coding, the current group chooses to use octree coding, otherwise plane coding is selected.
[0272] Furthermore, in an embodiment of the present application, a rate-distortion optimization algorithm can also be used to determine the third-generation value of the nodes in the current node group using the first context to encode the geometric information, and the fourth-generation value of the nodes in the current node group using the first context to encode the geometric information. If the third-generation value is less than or equal to the fourth-generation value, the encoding mode corresponding to the current node group is determined to be the first context encoding; if the third-generation value is greater than the fourth-generation value, the encoding mode corresponding to the current node group is determined to be the second context encoding.
[0273] For example, in an embodiment of the present application, in the octree coding process, the nodes of the layer to be coded are divided into different groups. Assuming that the number of nodes in each group is N (N=1024), the rate-distortion optimization algorithm is used at the coding end to adaptively select context coding model 1 or context coding model 2 for each group. Assuming that the coding mode of the current group is codeMode, the specific algorithm process is as follows:
[0274] It can be understood that the nodes to be encoded in the current layer are divided into different groups, and then the best coding mode (codeMode) is selected at the encoding end using the rate-distortion optimization criterion. Finally, each group encodes a coding mode of the current group. When the cost (third-generation value) of context coding model one is less than the cost (fourth-generation value) of context coding model two, the current group chooses to use context coding model one, otherwise it chooses context coding model two.
[0275] Step 103: Determine the predicted values of the nodes in the current node group according to the decoding mode indicated by the mode identification information.
[0276] In an embodiment of the present application, after decoding the code stream and determining the mode identification information corresponding to the current node group in at least one node group, the predicted values of the nodes in the current node group can be determined according to the decoding mode indicated by the mode identification information.
[0277] It can be understood that in an embodiment of the present application, for the G-PCC codec framework, if the decoding mode indicated by the mode identification information is octree decoding, the nodes in the current node group are all decoded using octree for geometric information to obtain a prediction value; if the decoding mode indicated by the mode identification information is plane decoding, the nodes in the current node group are all decoded using plane decoding for geometric information to obtain a prediction value.
[0278] Furthermore, in an embodiment of the present application, after the prediction values of the nodes in the current node group are determined according to the decoding mode indicated by the mode identification information, each node in the node group corresponds to a prediction value.
[0279] For example, in an embodiment of the present application, for the G-PCC codec framework, the decoding mode indicated by the mode identification information is octree decoding, and the current node group includes 8 nodes. After using octree decoding to determine the predicted values of the nodes in the current node group, 8 predicted values can be obtained, corresponding to the 8 nodes respectively.
[0280] That is to say, in an embodiment of the present application, for the G-PCC codec framework, at the decoding end, the nodes of the layer to be decoded are first divided into different groups. Before decoding the geometric information of each group, the decoding mode of the current group is first decoded. Secondly, according to the decoding mode of the current group, it is decided whether the current group uses octree decoding or plane decoding, thereby improving the geometric coding efficiency of the point cloud.
[0281] It can be understood that in an embodiment of the present application, for the AVS-PCC codec framework, if the decoding mode indicated by the mode identification information is the first context decoding, the first context is used to decode the geometric information of all nodes in the current node group to obtain a predicted value; if the decoding mode indicated by the mode identification information is the second context decoding, the second context is used to decode the geometric information of all nodes in the current node group to obtain a predicted value.
[0282] That is to say, in an embodiment of the present application, at the decoding end, for the AVS-PCC encoding and decoding framework, the nodes of the decoding layer are first divided into different groups. Before decoding the geometric information of each group, the decoding mode of the current group is first decoded. Secondly, according to the decoding mode of the current group, it is decided whether the current group adopts context coding model one or context coding model two, thereby improving the geometric coding efficiency of the point cloud.
[0283] In addition, in an embodiment of the present application, referring to FIG19 , which shows a flow chart of a decoding method provided in an embodiment of the present application, as shown in FIG19 , the decoder can also decode the code stream to determine the first identification information (step 104); if the value of the first identification information is the fifth value, then the division process of at least one node group and the determination process of the mode identification information are executed (step 105) to improve the geometric coding efficiency of the point cloud; if the value of the first identification information is the sixth value, then the predicted value of the node to be processed is determined according to the preset decoding mode (step 106).
[0284] That is, in the embodiment of the present application, the first identification information is used to determine whether to adopt the decoding method proposed in the embodiment of the present application, such as shown in steps 101 to 103 above.
[0285] It should be noted that, in the embodiments of the present application, the values of the fifth value and the sixth value are not specifically limited in this application; for example, the values of the fifth value and the sixth value are not specifically limited in this application; for example, the fifth value can be 1 and the sixth value can be 0.
[0286] It can be understood that in the embodiments of the present application, the preset decoding mode can be a decoding mode other than the node group division process and the mode identification information determination process of the present application, and the present application does not make any specific limitation.
[0287] It should be noted that, in the embodiments of the present application, the first identification information may be information at any level, for example, the first identification information may be at the frame level, the group level, the slice level, etc.
[0288] It should be noted that, in the embodiments of the present application, the level of the first identification information depends on the scale of the processed point cloud data. For example, when decoding a point cloud image, the first identification information may be at the frame level; when dividing the node groups using the node group division process proposed in the embodiments of the present application, the first identification information may be at the group level.
[0289] Furthermore, in some embodiments of the present application, for the G-PCC codec framework, an initial length parameter can also be determined; based on the initial length parameter, a recursive algorithm is used to determine the optimal partitioning mode and at least one node group corresponding to the optimal partitioning mode; for the current node group in the at least one node group corresponding to the optimal partitioning mode, a rate-distortion optimization algorithm is used to determine the fifth-generation value of encoding the geometric information of the nodes in the current node group using octree coding, and the sixth-generation value of encoding the geometric information of the nodes in the current node group using plane coding. If the fifth-generation value is less than or equal to the sixth-generation value, the coding mode corresponding to the current node group is determined to be octree coding; if the fifth-generation value is greater than the sixth-generation value, the coding mode corresponding to the current node group is determined to be plane coding.
[0290] It should be noted that, in the embodiment of the present application, the initial length parameter may be determined according to the number of nodes to be processed.
[0291] For example, in an embodiment of the present application, the nodes of the coding layer can be adaptively divided using a rate-distortion optimization selection algorithm at the coding end. Then, the rate-distortion optimization is performed within each Group to select the optimal coding mode. Specifically, assuming that the number of nodes in the current coding layer is nodeCount, the maximum length of the Group is initialized to nodeCount. Then, based on the recursive algorithm, the optimal Group division mode and the optimal coding mode of each Group are adaptively selected:
[0292] Furthermore, in an embodiment of the present application, for the AVS-PCC encoding and decoding framework, an initial length parameter can also be determined; based on the initial length parameter, a recursive algorithm is used to determine the optimal partitioning mode and at least one node group corresponding to the optimal partitioning mode; for the current node group in the at least one node group corresponding to the optimal partitioning mode, a rate-distortion optimization algorithm is used to determine the seventh generation value of the nodes in the current node group using the first context to encode the geometric information, and the eighth generation value of the nodes in the current node group using the first context to encode the geometric information; if the seventh generation value is less than or equal to the eighth generation value, the encoding mode corresponding to the current node group is determined to be the first context encoding; if the seventh generation value is greater than the eighth generation value, the encoding mode corresponding to the current node group is determined to be the second context encoding.
[0293] For example, in some embodiments of the present application, the encoding end uses a rate-distortion optimization selection algorithm to adaptively divide the nodes of the coding layer, and then performs rate-distortion optimization to select the optimal coding mode within each Group. Specifically, assuming that the number of nodes in the current coding layer is nodeCount, the maximum length of the Group is initialized to nodeCount, and then the optimal Group division mode and the optimal coding mode of each Group are adaptively selected based on a recursive algorithm:
[0294] Furthermore, in an embodiment of the present application, in the AVS-PCC encoder, octree division can be used to obtain different LCU coding units. Secondly, at the encoding end, simple point cloud density can be used to adaptively select prediction tree coding or multi-tree coding for each LCU coding unit. Similarly, the rate-distortion optimization algorithm can be adaptively used to select the best coding mode, and the rate-distortion optimization algorithm can be used to select whether to use prediction tree coding, multi-tree coding model 1, or multi-tree coding model 2 for coding, thereby improving the efficiency of point cloud geometric information coding.
[0295] Thus, in the embodiments of the present application, the current layer to be encoded is divided into different groups at the encoding end, the optimal encoding mode for each group is selected at the encoding end using a rate-distortion optimization criterion, and the nodes of the current group are adaptively encoded using the optimal encoding mode. This improves the geometric encoding efficiency of the point cloud.
[0296] The following also uses lossless coding of lossless attribute information of geometric coding as the test condition, Bpp is the performance measurement indicator of geometric lossless coding, and 100% is the coding efficiency. The following Table 1 shows the compression performance of a single sequence, and Table 2 shows the performance results under lossless geometry (lossless geometry, lossless attributes). It can be seen that in the case of geometric lossless coding, the embodiment of the present application can obtain a compression efficiency of nearly 20% on some sequences.
[0297] Table 1
[0298] Table 2
[0299] To sum up, in the embodiments of the present application, at least one node group is obtained by dividing the nodes to be processed after the octree division, wherein the method of dividing the node groups is not specifically limited in this application, so as to selectively select a decoding mode suitable for each node group, including octree decoding, plane decoding, first context decoding, and second context decoding, etc., so as to decode different node groups according to different decoding modes, thereby ensuring that the geometric information coding efficiency in each node group reaches the local optimum, greatly improving the geometric coding efficiency of the point cloud, and thereby improving the encoding and decoding performance of the point cloud.
[0300] An embodiment of the present application provides a decoding method, wherein a decoder divides the nodes to be processed into different groups and determines at least one node group corresponding to the nodes to be processed; decodes the bitstream and determines the mode identification information corresponding to the current node group in the at least one node group; and determines the predicted value of the node in the current node group based on the decoding mode indicated by the mode identification information. In this way, by dividing the nodes to be processed into different node groups and then selecting a coding mode suitable for each node group, encoding based on the coding mode suitable for the node group can effectively improve the geometric coding efficiency of the point cloud, thereby improving the encoding and decoding performance of the point cloud.
[0301] An encoding method is proposed in one embodiment of the present application. FIG20 shows a flow chart of an encoding method provided in an embodiment of the present application. As shown in FIG20 , encoding a point cloud may include the following steps:
[0302] Step 201: Divide the nodes to be processed and determine at least one node group corresponding to the nodes to be processed.
[0303] In an embodiment of the present application, the nodes to be processed may be divided first to determine at least one node group corresponding to the nodes to be processed.
[0304] It should be noted that the encoding method of the embodiment of the present application specifically refers to a point cloud encoding method, which can be applied to a point cloud encoder (also referred to as "encoder" for short).
[0305] It should be noted that, in the embodiment of the present application, the point cloud to be processed includes a plurality of nodes to be processed. Among them, when encoding the nodes to be processed, the nodes to be processed in the point cloud to be processed can be used as the nodes to be encoded in the point cloud to be processed.
[0306] Furthermore, in an embodiment of the present application, for each node to be processed in the point cloud to be processed, it corresponds to a geometric information and an attribute information; wherein the geometric information represents the spatial relationship of the point, and the attribute information represents the relevant information of the attribute of the point.
[0307] Here, the attribute information may be color information, or reflectivity, or other attributes, which are not specifically limited in the embodiments of the present application. Specifically, when the attribute information is color information, it may be color information in any color space. For example, the attribute information may be color information in an RGB space, a YUV space, a YCbCr space, or the like, which are not specifically limited in the embodiments of the present application.
[0308] It should be noted that in an embodiment of the present application, in the encoding process of the octree, the nodes to be processed may be part or all of the nodes in one of the layers to be encoded, or part or all of the nodes in some of the layers to be encoded, or part or all of the nodes in all the layers to be encoded.
[0309] For example, in an embodiment of the present application, during the encoding process of the octree, all nodes in the second coding layer of the octree can be used as nodes to be processed; or some nodes in the second coding layer of the octree, for example, 4 of the nodes therein, can be used as nodes to be processed.
[0310] For example, in an embodiment of the present application, during the encoding process of the octree, the octree has a total of 10 coding layers, and all the nodes in the 2nd, 3rd and 4th layers can be used as nodes to be processed; or some of the nodes in the 2nd, 3rd and 4th layers can be used as nodes to be processed. For example, the nodes to be processed may include all the nodes in the 2nd layer, some of the nodes in the 3rd layer and some of the nodes in the 4th layer.
[0311] Exemplarily, in an embodiment of the present application, in the encoding process of the octree, the i-th layer includes 8 nodes, and the i+1-th layer includes 64 nodes; wherein i is an integer greater than 0; the nodes to be processed may include 4 nodes in the i-th layer, and 32 nodes in the i+1-th layer.
[0312] For example, in an embodiment of the present application, during the encoding process of the octree, the octree has a total of 10 coding layers, and all nodes in the 10 coding layers can be used as nodes to be processed; some nodes in the 10 coding layers can also be used as nodes to be processed, for example, the nodes to be processed can include half of the nodes in each layer in the 10 coding layers.
[0313] Furthermore, in an embodiment of the present application, the nodes to be processed may be divided to obtain at least one node group.
[0314] Exemplarily, in an embodiment of the present application, during the encoding process of the octree, the nodes to be processed are all nodes in the i-th layer and the i+1-th layer, then all nodes in the i-th layer and the i+1-th layer can be divided and processed to obtain at least one node group.
[0315] Exemplarily, in an embodiment of the present application, in the encoding process of the octree, the i-th layer includes 8 nodes, the i+1-th layer includes 64 nodes, the nodes to be processed include 4 nodes in the i-th layer, and 32 nodes in the i+1-th layer. The 4 nodes in the i-th layer and the 32 nodes in the i+1-th layer can be divided and processed to obtain at least one node group.
[0316] Exemplarily, in an embodiment of the present application, during the encoding process of the octree, if the nodes to be processed are some of the nodes in the i-th layer, then some of the nodes in the i-th layer are divided and processed to obtain at least one node group.
[0317] For example, in an embodiment of the present application, during the encoding process of the octree, the octree has a total of 10 coding layers, and the nodes to be processed are all the nodes in these 10 coding layers. Then, all the nodes in these 10 coding layers can be divided and processed to obtain at least one node group.
[0318] In some embodiments of the present application, a layer of nodes obtained after the octree is divided may be determined as a node group.
[0319] Illustratively, in an embodiment of the present application, during the encoding process of the octree, the nodes of the i-th layer may be divided into a node group.
[0320] Illustratively, in an embodiment of the present application, during the encoding process of the octree, the nodes of the i-th layer may be divided into a node group, and the nodes of the i+1-th layer may be divided into a node group.
[0321] In some embodiments, multiple layers of nodes obtained after the octree partitioning may be determined as a node group.
[0322] Illustratively, in an embodiment of the present application, during the encoding process of the octree, all nodes in the i-th layer and the i+1-th layer are divided into one node group.
[0323] Illustratively, in an embodiment of the present application, during the encoding process of the octree, some nodes in the i-th layer and some nodes in the i+1-th layer may be divided into one node group.
[0324] In some embodiments of the present application, a layer of nodes obtained after the octree is divided may be determined as multiple node groups.
[0325] Illustratively, in an embodiment of the present application, during the encoding process of the octree, the nodes of the i-th layer may be divided into four node groups, each of which includes four nodes.
[0326] Exemplarily, in an embodiment of the present application, during the encoding process of the octree, the nodes of the i+2th layer can be divided into three node groups, wherein node group 1 and node group 2 each include 8 nodes, and node group 3 includes 4 nodes.
[0327] Exemplarily, in an embodiment of the present application, during the encoding process of the octree, the nodes of the i-th layer can be divided into 4 node groups, each node group includes 4 nodes, and at the same time, the nodes of the i+1-th layer can be divided into 4 node groups, each node group includes 8 nodes.
[0328] Exemplarily, in an embodiment of the present application, during the encoding process of the octree, the nodes of the i-th layer can be divided into 4 node groups, of which three node groups include 8 nodes and one node group includes 4 nodes; at the same time, the nodes of the i+1-th layer are divided into 4 node groups, of which each node group includes 8 nodes.
[0329] It should be noted that in an embodiment of the present application, when dividing the nodes to be processed, the number of nodes in the node group can be limited by a preset threshold; that is, the number of nodes in different node groups in at least one node group is less than or equal to the preset threshold.
[0330] Exemplarily, in an embodiment of the present application, the nodes to be encoded in the current layer (nodes to be processed) are divided to obtain different groups (node groups), where the number of nodes in each group is N (N=1024), and the preset threshold is 1024, that is, in these groups, the number of nodes in each group is equal to the preset threshold.
[0331] For example, in an embodiment of the present application, the preset threshold is 10, and the nodes in the i-th layer are divided according to the preset threshold to obtain 4 node groups, among which node group 1 includes 8 nodes, node group 2 includes 8 nodes, node group 3 includes 4 nodes, and node group 4 includes 4 nodes, all of which are less than the preset threshold.
[0332] Exemplarily, in an embodiment of the present application, the preset threshold is 10, and the third-layer nodes of the octree are point-divided according to the preset threshold to obtain three node groups, wherein node group 1 includes 10 nodes, node group 2 includes 8 nodes, and node group 3 includes 4 nodes, that is, the number of nodes in node group 1 is equal to the preset threshold, and the number of nodes in node group 2 and node group 3 is less than the preset threshold.
[0333] Exemplarily, in an embodiment of the present application, assuming that the number of nodes of the current layer to be encoded is nodeCount, the maximum Length (preset threshold) of the initialized Group is nodeCount.
[0334] Furthermore, in an embodiment of the present application, in at least one node group obtained after the nodes to be processed are divided into different groups, the number of nodes in different node groups is not the same.
[0335] For example, in an embodiment of the present application, point division processing is performed on the i-th layer nodes to obtain 3 node groups, among which node group 1 includes 8 nodes, node group 2 includes 8 nodes, and node group 3 includes 4 nodes. Then, the number of nodes in node group 1 and node group 2 is the same, and the number of nodes in node group 3 is different from that in node group 1 and node group 2.
[0336] In some embodiments of the present application, adaptive division processing may be performed on the nodes to be processed according to a rate-distortion optimization algorithm to determine at least one node group.
[0337] Exemplarily, in an embodiment of the present application, the nodes to be processed are nodes in all coding layers of the octree, including nodes in 20 coding layers. All nodes in these 20 coding layers are adaptively divided and processed according to the rate-distortion optimization algorithm to obtain 32 node groups.
[0338] Exemplarily, in an embodiment of the present application, the nodes to be processed are nodes of three coding layers in the octree, and the nodes of the three coding layers are adaptively divided and processed according to a rate-distortion optimization algorithm to obtain three node groups.
[0339] Exemplarily, in an embodiment of the present application, the nodes to be processed are all nodes in the first layer, some nodes in the second layer, and some nodes in the third layer in the octree. All nodes in the first layer, some nodes in the second layer, and some nodes in the third layer are adaptively divided and processed according to the rate-distortion optimization algorithm to obtain 10 node groups.
[0340] Furthermore, in an embodiment of the present application, length information corresponding to the current node group may be determined according to the number of nodes in the current node group in at least one node group; and the length information may be written into the code stream.
[0341] Illustratively, in an embodiment of the present application, the current node group includes 8 nodes, and the length information is 8 nodes, and the length information is written into the code stream.
[0342] Step 202: Determine a coding mode corresponding to a current node group in at least one node group.
[0343] In an embodiment of the present application, after dividing the nodes to be processed and determining at least one node group corresponding to the nodes to be processed, a coding mode corresponding to a current node group in the at least one node group may be determined.
[0344] It should be noted that in an embodiment of the present application, if it is determined that the coding mode indicated by the mode identification information is octree coding, the value of the mode identification information is set to the first value; if it is determined that the coding mode indicated by the mode identification information is plane coding, the value of the mode identification information is set to the second value.
[0345] It should be noted that, in the embodiment of the present application, the first value and the second value are used to indicate a specific encoding and decoding mode in the G-PCC encoding and decoding framework.
[0346] Furthermore, in the embodiments of the present application, the specific numerical values of the first value and the second value are not limited in the present application. For example, the first value may be 0, and the second value may be 1.
[0347] In some embodiments, the nodes to be decoded in the current layer are divided into different groups, where the number of nodes in each group is N (N=1024), which is consistent with the encoding end. Secondly, before decoding the geometric information of each group, the decoding mode codeMode of the current group is first decoded. If the codeMode of the current group is 0, octree decoding is used; otherwise, plane decoding is used. The details are as follows:
[0348] It should be noted that in an embodiment of the present application, if it is determined that the coding mode indicated by the mode identification information is the first context coding, the value of the mode identification information is set to the third value; if it is determined that the coding mode indicated by the mode identification information is the second context coding, the value of the mode identification information is set to the fourth value.
[0349] It should be noted that, in the embodiment of the present application, the third value and the fourth value are used to indicate a specific encoding and decoding mode in the AVS-PCC encoding and decoding framework.
[0350] In some embodiments, for the AVS-PCC codec framework, when the value of the mode identification information is the third value, it indicates that the coding mode is the first context coding; when the value of the mode identification information is the third value, it indicates that the coding mode is the second context coding.
[0351] Furthermore, in the embodiments of the present application, the specific numerical values of the third value and the fourth value are not limited in the present application. For example, the first value may be 0 and the second value may be 1.
[0352] In some embodiments, the nodes to be decoded in the current layer are divided into different groups (node groups), where the number of nodes in each group is N (N=1024). Secondly, before decoding the geometric information of each group, the decoding mode codeMode (mode identification information) of the current group is first decoded. If the codeMode of the current group is 0, context coding model 1 is used for decoding; otherwise, context coding model 2 is used for decoding. The details are as follows:
[0353] In addition, in an embodiment of the present application, a rate-distortion optimization algorithm can also be used to determine the first-generation value of encoding geometric information of nodes in the current node group using octree coding, and the second-generation value of encoding geometric information of nodes in the current node group using plane coding. If the first-generation value is less than or equal to the second-generation value, the encoding mode corresponding to the current node group is determined to be octree coding; if the first-generation value is greater than the second-generation value, the encoding mode corresponding to the current node group is determined to be plane coding.
[0354] For example, in an embodiment of the present application, FIG21 is a schematic diagram of plane coding provided in an embodiment of the present application. As shown in FIG21, in the octree coding process, the nodes of the layer to be coded are divided into different groups. Assuming that the number of nodes in each group is N (N=1024), the rate-distortion optimization algorithm is used at the encoding end to adaptively select plane coding or octree coding for each group. Assuming that the coding mode of the current group is codeMode, the specific algorithm process is as follows:
[0355] Furthermore, as shown in FIG21 , the nodes to be encoded in the current layer are divided into different groups. Then, the optimal coding mode (codeMode) is selected at the encoding end using the rate-distortion optimization criterion. Finally, each group encodes a coding mode of the current group. When the cost (first-generation value) of octree coding is less than the cost (second-generation value) of plane coding, the current group chooses to use octree coding, otherwise plane coding is selected.
[0356] Furthermore, in an embodiment of the present application, a rate-distortion optimization algorithm can also be used to determine the third-generation value of the nodes in the current node group using the first context to encode the geometric information, and the fourth-generation value of the nodes in the current node group using the first context to encode the geometric information. If the third-generation value is less than or equal to the fourth-generation value, the encoding mode corresponding to the current node group is determined to be the first context encoding; if the third-generation value is greater than the fourth-generation value, the encoding mode corresponding to the current node group is determined to be the second context encoding.
[0357] For example, in an embodiment of the present application, in the octree coding process, the nodes of the layer to be coded are divided into different groups. Assuming that the number of nodes in each group is N (N=1024), the rate-distortion optimization algorithm is used at the coding end to adaptively select context coding model 1 or context coding model 2 for each group. Assuming that the coding mode of the current group is codeMode, the specific algorithm process is as follows:
[0358] It can be understood that the nodes to be encoded in the current layer are divided into different groups, and then the best coding mode (codeMode) is selected at the encoding end using the rate-distortion optimization criterion. Finally, each group encodes a coding mode of the current group. When the cost (third-generation value) of context coding model one is less than the cost (fourth-generation value) of context coding model two, the current group chooses to use context coding model one, otherwise it chooses context coding model two.
[0359] In an embodiment of the present application, for context model 1, in the AVS-PCC encoder, the model includes sub-layer neighbor prediction of the current point and neighbor prediction of the current point layer, as follows:
[0360] (1) Sub-layer neighbor prediction of the current point
[0361] Under the octree breadth-first traversal partitioning method, the neighbor information that can be obtained when encoding the child node of the current point includes the neighbor child nodes in the three directions of left, front, and bottom. The context model of the child node layer is designed as follows: for the child node layer to be encoded, find the occupancy of 3 coplanar, 3 colinear, and 1 co-point nodes in the left, front, and bottom direction of the same layer as the child node to be encoded, as well as the node that is two node side lengths away from the current child node to be encoded in the negative direction on the dimension with the shortest node side length. Taking the node with the shortest side length in the X dimension as an example, Figure 22 is a schematic diagram of the reference node of the child node, and the reference nodes selected by each child node are shown in Figure 22, where the dotted box node is the current node, the gray node is the current child node to be encoded, and the solid box node is the reference node selected by each child node; considering the occupancy of 3 coplanar, 3 colinear nodes, and the node that is two node side lengths away from the current child node to be encoded in the negative direction on the dimension with the shortest node side length, there are 2 occupancy of these 7 nodes. 7 = 128 cases. If not all are unoccupied, there are 2 7-1 = 127 possible cases, with one context allocated for each. If all seven nodes are unoccupied, the occupied position of the common neighbor node is considered. This common neighbor has two possibilities: occupied or unoccupied. A separate context is allocated for the occupied case of the common neighbor node. If this common neighbor is also unoccupied, the occupied position of the current node's neighbors, described below, is considered. Thus, the neighbors at the subnode level to be encoded correspond to a total of 127 + 2 - 1 = 128 contexts.
[0362] (2) Sub-layer neighbor prediction of the current point
[0363] For example, Figure 23 shows a schematic diagram of the reference neighbor nodes of the current point. If the eight reference nodes at the same layer of the subnode to be encoded are not occupied, the occupancy of the four groups of neighbors at the current node layer is considered as shown in Figure 23. The dotted frame node is the current node, and the solid frame node is the neighbor node.
[0364] For the current node layer, the context is determined as follows:
[0365] Step 1: First consider the three coplanar neighbors to the upper right of the current node. The occupancy of the three coplanar neighbors to the upper right of the current node is 2 3 = 8 possibilities. For the cases where all nodes are not occupied, one context is assigned to each node. Considering that the child node to be encoded is located at the position of the current node, the group of neighboring nodes provides a total of (8-1)×8=56 contexts. If the three coplanar neighbors to the upper right of the current point are not occupied, then continue to consider the remaining three groups of neighbors at the current node layer.
[0366] Step 2: Consider the distance between the most recently occupied node and the current node.
[0367] Specifically, the corresponding relationship between neighbor node distribution and distance is shown in Table 3.
[0368] Table 3
[0369] As shown in Table 1, the distance has three possible values. One context is assigned to each of these three values. Considering the position of the child node to be encoded within the current node, there are a total of 3 × 8 = 24 contexts.
[0370] So far, this set of context models has allocated a total of 128+56+24=208 contexts.
[0371] In an embodiment of the present application, for context model 2, the method uses a two-layer context reference relationship configuration, as shown in formula (7), the first layer is the occupancy of the adjacent blocks of the parent node of the current sub-block to be encoded (i.e., ctxIdxParent), and the second layer is the occupancy of the adjacent encoded blocks at the same depth as the current sub-block to be encoded (i.e., ctxIdxChild).
[0372] idx=LUT[ctxIdxParent][ctxIdxChild] (7)
[0373] First, for each sub-block to be coded, the ctxIdxChild of the second layer is as shown in formula (8), C i 1 Indicates the occupancy of the three coded sub-blocks with a distance of 1 from the current sub-block l2.
[0374]
[0375] Secondly, for the relative positions of different sub-blocks, the first layer’s ctxIdxParent is used to find the adjacent parent blocks that are coplanar and colinear with them by looking up the table, and then calculates ctxIdxParent based on their occupancy and formula (8). As shown in Figure 23, each sub-graph shows the relative position relationship of the 6 adjacent parent blocks found by the i-th sub-block, including 3 coplanar parent blocks (P i,0 , P i,1 , P i,2 ) and 3 collinear parent blocks (P i,3 , P i,4 , P i,5 The position relationship between each child block and its adjacent parent block is obtained through the method in Table 1.
[0376] Furthermore, FIG24 is a schematic diagram of the adjacent blocks corresponding to the current block to be encoded. FIG24 shows the 18 adjacent blocks around the current block to be encoded and their Morton numbers. The numbers in Table 4 correspond to the Morton numbers in FIG24. This method takes into account the positions of different sub-blocks and the geometric center rotation symmetry. As can be seen from FIG24, with the current block as the center, this method has a larger receptive field and can utilize up to 18 adjacent parent blocks that have been encoded around it. The method used in formula (8) is the permutation and combination of the occupancy of the three coplanar parent blocks and the sum of the number of occupancy of the three collinear parent blocks.
[0377] Table 4
[0378] Furthermore, if prediction tree encoding is used, the geometric information of the point cloud is first used at the encoding end to perform Morton code sorting. Secondly, the geometric information of the point cloud is predictively encoded using a KD-Tree, similar to a single chain structure that uses the parent node to predict the geometric information of the child node. For example, Figure 25 is a schematic diagram of a prediction tree. As shown in Figure 25, the prediction tree adopts a single chain structure. Except for the only leaf node, each tree node has only one child node. Except for the root node, which is predicted by the default value, the geometric prediction value of other nodes is provided by their parent node.
[0379] Step 203: Determine the predicted values of the nodes in the current node group according to the coding mode; determine the mode identification information corresponding to the current node group according to the coding mode, and write the mode identification information into the bitstream.
[0380] In an embodiment of the present application, after determining the coding mode corresponding to the current node group in at least one node group, prediction values of nodes in the current node group can be determined according to the coding mode; mode identification information corresponding to the current node group can be determined according to the coding mode, and the mode identification information can be written into the bitstream.
[0381] It can be understood that in an embodiment of the present application, for the G-PCC codec framework, if it is determined that the nodes in the current node group all use octree to encode geometric information, the mode identification information is determined according to the octree encoding, and the mode identification information is written into the bitstream.
[0382] Furthermore, in an embodiment of the present application, after the prediction values of the nodes in the current node group are determined according to the encoding mode, each node in the node group corresponds to a prediction value.
[0383] For example, in an embodiment of the present application, for the G-PCC codec framework, the coding mode is octree coding, and the current node group includes 8 nodes. After using octree coding to determine the predicted values of the nodes in the current node group, 8 predicted values can be obtained, corresponding to the 8 nodes respectively.
[0384] That is to say, in an embodiment of the present application, for the G-PCC codec framework, at the encoding end, the nodes of the coding layer are first divided into different groups. Before encoding the geometric information of each group, the coding mode of the current group is first encoded, and then the prediction values of the nodes in the current node group are determined according to the coding mode; the mode identification information corresponding to the current node group is determined according to the coding mode, and the mode identification information is written into the code stream, thereby improving the geometric coding efficiency of the point cloud.
[0385] It can be understood that in the embodiments of the present application, for the AVS-PCC codec framework, if the coding mode is the first context coding, the geometric information of the nodes in the current node group is encoded according to the first context coding to obtain a prediction value; if the coding mode is the second context coding, the geometric information of the nodes in the current node group is encoded using the second context to obtain a prediction value, and the corresponding mode identification information is determined, and the mode identification information is written into the bitstream.
[0386] That is to say, in an embodiment of the present application, at the encoding end, for the AVS-PCC encoding and decoding framework, the nodes of the encoding layer are first divided into different groups. Before encoding the geometric information of each group, it is necessary to decide whether the current group adopts context coding model one or context coding model two based on the encoding mode of the current group, thereby improving the geometric coding efficiency of the point cloud.
[0387] In addition, in an embodiment of the present application, as shown in Figure 19, the decoder can also decode the code stream and determine the first identification information (step 104); if the value of the first identification information is the fifth value, then the division process of at least one node group and the determination process of the mode identification information are executed (step 105) to improve the geometric coding efficiency of the point cloud; if the value of the first identification information is the sixth value, then the predicted value of the node to be processed is determined according to the preset decoding mode (step 106).
[0388] It can be understood that in the embodiments of the present application, the preset decoding mode can be a decoding mode other than the node group division process and the mode identification information determination process of the present application, and the present application does not make any specific limitation.
[0389] It should be noted that, in the embodiments of the present application, the first identification information may be information at any level, for example, the first identification information may be at the frame level, the group level, the slice level, etc.
[0390] It should be noted that, in the embodiments of the present application, the level of the first identification information depends on the scale of the processed point cloud data. For example, when decoding a point cloud image, the first identification information may be at the frame level; when dividing the node groups using the node group division process proposed in the embodiments of the present application, the first identification information may be at the group level.
[0391] Furthermore, in an embodiment of the present application, for the G-PCC codec framework, an initial length parameter can also be determined; based on the initial length parameter, a recursive algorithm is used to determine the optimal partitioning mode and at least one node group corresponding to the optimal partitioning mode; for the current node group in the at least one node group corresponding to the optimal partitioning mode, a rate-distortion optimization algorithm is used to determine the fifth-generation value of encoding the geometric information of the nodes in the current node group using octree coding, and the sixth-generation value of encoding the geometric information of the nodes in the current node group using plane coding. If the fifth-generation value is less than or equal to the sixth-generation value, the coding mode corresponding to the current node group is determined to be octree coding; if the fifth-generation value is greater than the sixth-generation value, the coding mode corresponding to the current node group is determined to be plane coding.
[0392] It should be noted that, in the embodiment of the present application, the initial length parameter may be determined according to the number of nodes to be processed.
[0393] For example, in an embodiment of the present application, the nodes of the coding layer can be adaptively divided using a rate-distortion optimization selection algorithm at the encoding end, and then the rate-distortion optimization is performed within each Group to select the optimal coding mode. Specifically, assuming that the number of nodes in the current coding layer is nodeCount, the maximum length of the Group is initialized to nodeCount (initial length parameter), and then the optimal Group division mode and the optimal coding mode of each Group are adaptively selected based on the recursive algorithm:
[0394] Furthermore, in an embodiment of the present application, for the AVS-PCC encoding and decoding framework, an initial length parameter can also be determined; based on the initial length parameter, a recursive algorithm is used to determine the optimal partitioning mode and at least one node group corresponding to the optimal partitioning mode; for the current node group in the at least one node group corresponding to the optimal partitioning mode, a rate-distortion optimization algorithm is used to determine the seventh generation value of the nodes in the current node group using the first context to encode the geometric information, and the eighth generation value of the nodes in the current node group using the first context to encode the geometric information; if the seventh generation value is less than or equal to the eighth generation value, the encoding mode corresponding to the current node group is determined to be the first context encoding; if the seventh generation value is greater than the eighth generation value, the encoding mode corresponding to the current node group is determined to be the second context encoding.
[0395] For example, in an embodiment of the present application, the encoding end uses a rate-distortion optimization selection algorithm to adaptively divide the nodes of the coding layer, and then performs rate-distortion optimization to select the optimal coding mode within each Group. Specifically, assuming that the number of nodes in the current coding layer is nodeCount, the maximum length of the Group is initialized to nodeCount, and then the optimal Group division mode and the optimal coding mode of each Group are adaptively selected based on a recursive algorithm:
[0396] Furthermore, in an embodiment of the present application, in the AVS-PCC encoder, octree division can be used to obtain different LCU coding units. Secondly, at the encoding end, simple point cloud density can be used to adaptively select prediction tree coding or multi-tree coding for each LCU coding unit. Similarly, the rate-distortion optimization algorithm can be adaptively used to select the best coding mode, and the rate-distortion optimization algorithm can be used to select whether to use prediction tree coding, multi-tree coding model 1, or multi-tree coding model 2 for coding, thereby improving the efficiency of point cloud geometric information coding.
[0397] Thus, in the embodiments of the present application, the current layer to be encoded is divided into different groups at the encoding end, the optimal encoding mode for each group is selected at the encoding end using a rate-distortion optimization criterion, and the nodes of the current group are adaptively encoded using the optimal encoding mode. This improves the geometric encoding efficiency of the point cloud.
[0398] In some embodiments, lossless coding of lossless attribute information of geometric coding is used as the test condition, Bpp is the performance measurement indicator of geometric lossless coding, and 100% is the coding efficiency. As shown in Table 1 above, the compression performance of a single sequence, and Table 2 is the performance results under lossless geometry (lossless geometry, lossless attributes). It can be seen that in the case of geometric lossless coding, the embodiment of the present application can obtain a compression efficiency of nearly 20% on some sequences.
[0399] To sum up, in the embodiments of the present application, at least one node group is obtained by dividing the nodes to be processed after the octree division, wherein the method of dividing the node groups is not specifically limited in this application, so as to selectively select the encoding mode suitable for each node group, including octree encoding, plane encoding, first context encoding and second context encoding, etc., so as to encode different node groups according to different encoding modes, so as to ensure that the geometric information coding efficiency in each node group reaches the local optimum, greatly improve the geometric coding efficiency of the point cloud, and thus improve the encoding and decoding performance of the point cloud.
[0400] The embodiment of the present application provides an encoding method, in which an encoder divides and processes nodes to be processed, determines at least one node group corresponding to the nodes to be processed, determines the encoding mode corresponding to the current node group in at least one node group, determines the predicted value of the node in the current node group based on the encoding mode, determines the mode identification information corresponding to the current node group based on the encoding mode, and writes the mode identification information into the bitstream. It can be seen that the nodes to be processed can be divided into different node groups, and then, for different node groups, the encoding mode suitable for the node group is selected, so that the corresponding predicted value is determined based on the encoding mode suitable for the node group, thereby effectively improving the geometric encoding efficiency of the point cloud, and thus improving the encoding and decoding performance of the point cloud.
[0401] Based on the above embodiment, in another embodiment of the present application, based on the same inventive concept as the above embodiment, FIG26 is a schematic diagram of the composition structure of an encoder. As shown in FIG26 , the encoder 20 may include: a first determining unit 21 and an encoding unit 22, wherein:
[0402] The first determining unit 21 is configured to divide the nodes to be processed and determine at least one node group corresponding to the nodes to be processed; and determine a coding mode corresponding to a current node group in the at least one node group;
[0403] The encoding unit 22 is configured to determine the prediction values of the nodes in the current node group according to the encoding mode; determine the mode identification information corresponding to the current node group according to the encoding mode, and write the mode identification information into the bitstream.
[0404] In some embodiments, the first determination unit 21 is further configured to set the value of the mode identification information to a first value if it is determined that the coding mode indicated by the mode identification information is octree coding; and to set the value of the mode identification information to a second value if it is determined that the coding mode indicated by the mode identification information is plane coding.
[0405] In some embodiments, the first determination unit 21 is further configured to set the value of the mode identification information to a third value if it is determined that the coding mode indicated by the mode identification information is the first context encoding; and to set the value of the mode identification information to a fourth value if it is determined that the coding mode indicated by the mode identification information is the second context decoding.
[0406] In some embodiments, the first determining unit 21 is further configured to determine a layer of nodes obtained after the octree is divided into a node group.
[0407] In some embodiments, the first determining unit 21 is further configured to determine a layer of nodes obtained after the octree is divided into multiple node groups.
[0408] In some embodiments, the first determining unit 21 is further configured to perform adaptive division processing on the nodes to be processed according to a rate-distortion optimization algorithm to determine the at least one node group.
[0409] In some embodiments, the number of nodes in different node groups in the at least one node group is less than or equal to a preset threshold.
[0410] In some embodiments, different node groups in the at least one node group have different numbers of nodes.
[0411] In some embodiments, the first determining unit 21 is further configured to determine length information corresponding to the current node group according to the number of nodes in the current node group in the at least one node group; and write the length information into the bitstream.
[0412] In some embodiments, the first determination unit 21 is further configured to use a rate-distortion optimization algorithm to determine a first generation value of encoding geometric information of the nodes in the current node group using octree coding, and a second generation value of encoding geometric information of the nodes in the current node group using plane coding. If the first generation value is less than or equal to the second generation value, it is determined that the encoding mode corresponding to the current node group is octree coding; if the first generation value is greater than the second generation value, it is determined that the encoding mode corresponding to the current node group is plane coding.
[0413] In some embodiments, the first determination unit 21 is further configured to use a rate-distortion optimization algorithm to determine the third generation value of the nodes in the current node group using the first context to encode geometric information, and the fourth generation value of the nodes in the current node group using the second context to encode geometric information. If the third generation value is less than or equal to the fourth generation value, the encoding mode corresponding to the current node group is determined to be first context encoding; if the third generation value is greater than the fourth generation value, the encoding mode corresponding to the current node group is determined to be second context encoding.
[0414] In some embodiments, the first determination unit 21 is further configured to determine an initial length parameter; based on the initial length parameter, a recursive algorithm is used to determine an optimal partitioning mode and at least one node group corresponding to the optimal partitioning mode; for a current node group in at least one node group corresponding to the optimal partitioning mode, a rate-distortion optimization algorithm is used to determine a fifth-generation value of encoding geometric information of the nodes in the current node group using octree encoding, and a sixth-generation value of encoding geometric information of the nodes in the current node group using plane encoding; if the fifth-generation value is less than or equal to the sixth-generation value, it is determined that the encoding mode corresponding to the current node group is octree encoding; if the fifth-generation value is greater than the sixth-generation value, it is determined that the encoding mode corresponding to the current node group is plane coding.
[0415] In some embodiments, the first determination unit 21 is further configured to determine an initial length parameter; based on the initial length parameter, a recursive algorithm is used to determine an optimal partitioning mode and at least one node group corresponding to the optimal partitioning mode; for a current node group in at least one node group corresponding to the optimal partitioning mode, a rate-distortion optimization algorithm is used to determine a seventh-generation value of encoding geometric information of the nodes in the current node group using the first context, and an eighth-generation value of encoding geometric information of the nodes in the current node group using the first context; if the seventh-generation value is less than or equal to the eighth-generation value, the encoding mode corresponding to the current node group is determined to be first context encoding; if the seventh-generation value is greater than the eighth-generation value, the encoding mode corresponding to the current node group is determined to be second context encoding.
[0416] It is understood that in this embodiment, a "unit" can be a portion of a circuit, a portion of a processor, a portion of a program or software, etc., and can also be a module or a non-modular system. Furthermore, the various components in this embodiment can be integrated into a single processing unit, or each unit can exist physically separately, or two or more units can be integrated into a single unit. The aforementioned integrated units can be implemented in the form of hardware or software functional modules.
[0417] 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.
[0418] Therefore, an embodiment of the present application provides a computer-readable storage medium, which is applied to the encoder 20. 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.
[0419] Based on the composition of the above-mentioned encoder 20 and the computer-readable storage medium, Figure 27 is a second schematic diagram of the composition structure of the encoder. As shown in Figure 27, the encoder 20 may include: a first memory 23 and a first processor 24, a first communication interface 25 and a first bus system 26. The first memory 23, the first processor 24, and the first communication interface 25 are coupled together through the first bus system 26. It can be understood that the first bus system 26 is used to achieve connection and communication between these components. In addition to the data bus, the first bus system 26 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 26 in Figure 9. Among them,
[0420] The first communication interface 25 is used to receive and send signals during the process of sending and receiving information with other external network elements;
[0421] The first memory 23 is used to store a computer program that can be run on the first processor;
[0422] The first processor 24 is used to divide the nodes to be processed into groups when running the computer program, determine at least one node group corresponding to the nodes to be processed; determine the encoding mode corresponding to the current node group in the at least one node group; determine the predicted values of the nodes in the current node group according to the encoding mode; determine the mode identification information corresponding to the current node group according to the encoding mode, and write the mode identification information into the code stream.
[0423] It is understood that the first memory 23 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 23 of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.
[0424] The first processor 24 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 24. The above-mentioned first processor 24 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the various methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the method disclosed in the embodiments of this application can be directly implemented and executed by a hardware decoding processor, or by a combination of hardware and software modules in the decoding processor. The software module can be located in a storage medium well-known 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 23. The first processor 24 reads the information in the first memory 23 and, in conjunction with its hardware, completes the steps of the above method.
[0425] 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.
[0426] Optionally, as another embodiment, the first processor 24 is further configured to execute the method described in any one of the aforementioned embodiments when running the computer program.
[0427] The embodiment of the present application provides an encoder that divides the nodes to be processed, determines at least one node group corresponding to the nodes to be processed, determines the encoding mode corresponding to the current node group in the at least one node group, determines the predicted value of the nodes in the current node group based on the encoding mode, determines the mode identification information corresponding to the current node group based on the encoding mode, and writes the mode identification information into the bitstream. It can be seen that the nodes to be processed can be divided into different node groups, and then, for different node groups, the encoding mode suitable for the node group is selected, so that the corresponding predicted value is determined based on the encoding mode suitable for the node group, thereby effectively improving the geometric encoding efficiency of the point cloud and thus improving the encoding and decoding performance of the point cloud.
[0428] FIG28 is a schematic diagram of the first structure of the decoder. As shown in FIG28 , the decoder 30 may include: a second determining unit 31 and a decoding unit 32; wherein,
[0429] The second determining unit 31 is configured to divide the nodes to be processed and determine at least one node group corresponding to the nodes to be processed;
[0430] The decoding unit 32 is configured to decode the code stream, determine the mode identification information corresponding to the current node group in the at least one node group; and determine the predicted value of the node in the current node group according to the decoding mode indicated by the mode identification information.
[0431] In some embodiments, the second determination unit 31 is further configured to determine that the decoding mode indicated by the mode identification information is octree decoding if the value of the mode identification information is a first value; and to determine that the decoding mode indicated by the mode identification information is plane decoding if the value of the mode identification information is a second value.
[0432] In some embodiments, the second determination unit 31 is further configured to determine that the decoding mode indicated by the mode identification information is the first context decoding if the value of the mode identification information is the third value; and to determine that the decoding mode indicated by the mode identification information is the second context decoding if the value of the mode identification information is the fourth value.
[0433] In some embodiments, the second determining unit 31 is further configured to determine a layer of nodes obtained after the octree is divided into a node group.
[0434] In some embodiments, the second determining unit 31 is further configured to determine a layer of nodes obtained after the octree is divided into multiple node groups.
[0435] In some embodiments, the second determining unit 31 is further configured to perform adaptive division processing on the nodes to be processed according to a rate-distortion optimization algorithm to determine the at least one node group.
[0436] In some embodiments, the number of nodes in different node groups in the at least one node group is less than or equal to a preset threshold.
[0437] In some embodiments, different node groups in the at least one node group have different numbers of nodes.
[0438] In some embodiments, the decoding unit 32 is further configured to decode the code stream to determine length information corresponding to the current node group in the at least one node group;
[0439] In some embodiments, the second determining unit 31 is further configured to determine the number of nodes in the current node group according to the length information.
[0440] In some embodiments, the decoding unit 32 is further configured to use octree to decode the geometric information of all nodes in the current node group if the decoding mode indicated by the mode identification information is octree decoding; and to use plane decoding to decode the geometric information of all nodes in the current node group if the decoding mode indicated by the mode identification information is plane decoding.
[0441] In some embodiments, the decoding unit 32 is further configured to use the first context to decode the geometric information of all nodes in the current node group if the decoding mode indicated by the mode identification information is first context decoding; and to use the second context to decode the geometric information of all nodes in the current node group if the decoding mode indicated by the mode identification information is second context decoding.
[0442] In some embodiments, the decoding unit 32 is further configured to decode the code stream to determine the first identification information;
[0443] In some embodiments, the second determination unit 31 is further configured to, if the value of the first identification information is the fifth value, execute the division process of the at least one node group and the determination process of the mode identification information; if the value of the first identification information is the sixth value, determine the predicted value of the node to be processed according to the preset decoding mode.
[0444] It is understood that in this embodiment, a "unit" can be a portion of a circuit, a portion of a processor, a portion of a program or software, etc., and can also be a module or a non-modular system. Furthermore, the various components in this embodiment can be integrated into a single processing unit, or each unit can exist physically separately, or two or more units can be integrated into a single unit. The aforementioned integrated units can be implemented in the form of hardware or software functional modules.
[0445] 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.
[0446] Therefore, an embodiment of the present application provides a computer-readable storage medium, which is applied to the decoder 30. The computer-readable storage medium stores a computer program, and when the computer program is executed by the first processor, it implements any one of the methods in the aforementioned embodiments.
[0447] Based on the composition of the above-mentioned decoder 30 and the computer-readable storage medium, Figure 29 is a second schematic diagram of the composition structure of the decoder. As shown in Figure 29, the decoder 30 may include: a second memory 33 and a second processor 34, a second communication interface 35 and a second bus system 36. The second memory 33 and the second processor 34, and the second communication interface 35 are coupled together through the second bus system 36. It can be understood that the second bus system 36 is used to realize the connection and communication between these components. In addition to the data bus, the second bus system 36 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 36 in Figure 11. Among them,
[0448] The second communication interface 35 is used for receiving and sending signals during the process of sending and receiving information with other external network elements;
[0449] The second memory 33 is used to store a computer program that can be run on the second processor;
[0450] The second processor 34 is used to determine, when running the computer program, to divide the nodes to be processed and determine at least one node group corresponding to the nodes to be processed; decode the code stream to determine the mode identification information corresponding to the current node group in the at least one node group; and determine the predicted value of the node in the current node group according to the decoding mode indicated by the mode identification information.
[0451] It is understood that the second memory 33 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 second memory 33 of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.
[0452] The second processor 34 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 second processor 34. The second processor 34 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the various methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the method disclosed in the embodiments of this application can be directly implemented and executed by a hardware decoding processor, or by a combination of hardware and software modules in the decoding processor. The software module can be located in a storage medium well-known 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 second memory 33. The second processor 34 reads the information in the second memory 33 and, in conjunction with its hardware, completes the steps of the above method.
[0453] 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.
[0454] The embodiment of the present application provides a decoder that divides the nodes to be processed and determines at least one node group corresponding to the nodes to be processed; decodes the code stream and determines the mode identification information corresponding to the current node group in the at least one node group; and determines the predicted value of the node in the current node group according to the decoding mode indicated by the mode identification information. It can be seen that the nodes to be processed can be divided into different node groups, and then, for different node groups, the encoding mode suitable for the node group is selected, so that the corresponding predicted value is determined based on the encoding mode suitable for the node group, thereby effectively improving the geometric encoding efficiency of the point cloud and thus improving the encoding and decoding performance of the point cloud.
[0455] In another embodiment of the present application, the embodiment of the present application further provides a code stream, which is generated by bit encoding based on the information to be encoded; wherein the information to be encoded at least includes: mode identification information and first identification information.
[0456] It should be noted that, in the embodiments of the present 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.
[0457] 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.
[0458] The methods disclosed in the several method embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments.
[0459] The features disclosed in the several product embodiments provided in this application can be arbitrarily combined without conflict to obtain new product embodiments.
[0460] 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.
[0461] 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
[0462] The embodiment of the present application provides a coding and decoding method, an encoder, a decoder and a storage medium. The encoder divides the nodes to be processed and determines at least one node group corresponding to the nodes to be processed; determines the coding mode corresponding to the current node group in at least one node group; determines the predicted value of the node in the current node group according to the coding mode; determines the mode identification information corresponding to the current node group according to the coding mode, and writes the mode identification information into the code stream. The decoder divides the nodes to be processed and determines at least one node group corresponding to the nodes to be processed; decodes the code stream and determines the mode identification information corresponding to the current node group in at least one node group; determines the predicted value of the node in the current node group according to the decoding mode indicated by the mode identification information. It can be seen that the nodes to be processed can be divided into different node groups, and then for different node groups, the coding mode suitable for the node group is selected, so that the corresponding predicted value is determined based on the coding mode suitable for the node group, thereby effectively improving the geometric coding efficiency of the point cloud, and thus improving the coding and decoding performance of the point cloud.
Claims
1. A decoding method, applied to a decoder, the method comprising: Divide the nodes to be processed and determine at least one node group corresponding to the nodes to be processed; Decoding the bitstream to determine mode identification information corresponding to a current node group in the at least one node group; Determine the prediction values of the nodes in the current node group according to the decoding mode indicated by the mode identification information.
2. The method according to claim 1, wherein: The method further comprises: If the value of the mode identification information is the first value, determining that the decoding mode indicated by the mode identification information is octree decoding; If the value of the mode identification information is the second value, it is determined that the decoding mode indicated by the mode identification information is plane decoding.
3. The method according to claim 1, wherein: The method further comprises: If the value of the mode identification information is the third value, determining that the decoding mode indicated by the mode identification information is the first context decoding; If the value of the mode identification information is the fourth value, it is determined that the decoding mode indicated by the mode identification information is the second context decoding.
4. The method according to claim 2 or 3, wherein: The dividing the nodes to be processed to determine at least one node group corresponding to the nodes to be processed includes: A layer of nodes obtained after the octree is divided is determined as a node group.
5. The method according to claim 2 or 3, wherein: The dividing the nodes to be processed to determine at least one node group corresponding to the nodes to be processed includes: A layer of nodes obtained after the octree is divided is determined to be a plurality of node groups.
6. The method according to claim 2 or 3, wherein: The dividing the nodes to be processed to determine at least one node group corresponding to the nodes to be processed includes: Adaptively divide the nodes to be processed according to a rate-distortion optimization algorithm to determine the at least one node group.
7. The method according to any one of claims 4 to 6, wherein: The number of nodes in different node groups in the at least one node group is less than or equal to a preset threshold.
8. The method according to any one of claims 4 to 6, wherein: Different node groups in the at least one node group have different numbers of nodes.
9. The method according to claim 8, wherein: The method further comprises: Decoding the bitstream to determine length information corresponding to a current node group in the at least one node group; The number of nodes in the current node group is determined according to the length information.
10. The method according to claim 2, wherein: If the decoding mode indicated by the mode identification information is octree decoding, the octree is used to decode the geometric information of all nodes in the current node group; If the decoding mode indicated by the mode identification information is plane decoding, plane decoding is used to decode the geometric information of all nodes in the current node group.
11. The method according to claim 3, wherein: If the decoding mode indicated by the mode identification information is first context decoding, the first context is used to decode the geometric information of all nodes in the current node group; If the decoding mode indicated by the mode identification information is second context decoding, the second context is used to decode the geometric information of all nodes in the current node group.
12. The method according to claim 1, wherein: The method further comprises: Decoding the code stream to determine the first identification information; If the value of the first identification information is the fifth value, executing the process of dividing the at least one node group and the process of determining the mode identification information; If the value of the first identification information is the sixth value, the predicted value of the node to be processed is determined according to a preset decoding mode.
13. A coding method, applied to an encoder, the method comprising: Divide the nodes to be processed and determine at least one node group corresponding to the nodes to be processed; Determine a coding mode corresponding to a current node group in the at least one node group; Determine the predicted values of the nodes in the current node group according to the encoding mode; The mode identification information corresponding to the current node group is determined according to the encoding mode, and the mode identification information is written into a bitstream.
14. The method according to claim 13, wherein: The method further comprises: If it is determined that the coding mode indicated by the mode identification information is octree coding, setting the value of the mode identification information to a first value; If it is determined that the coding mode indicated by the mode identification information is plane coding, the value of the mode identification information is set to the second value.
15. The method according to claim 13, wherein: The method further comprises: If it is determined that the coding mode indicated by the mode identification information is the first context coding, setting the value of the mode identification information to a third value; If it is determined that the encoding mode indicated by the mode identification information is the second context decoding, the value of the mode identification information is set to a fourth value.
16. The method according to claim 14 or 15, wherein: The dividing the nodes to be processed to determine at least one node group corresponding to the nodes to be processed includes: A layer of nodes obtained after the octree is divided is determined as a node group.
17. The method according to claim 14 or 15, wherein: The dividing the nodes to be processed to determine at least one node group corresponding to the nodes to be processed includes: A layer of nodes obtained after the octree is divided is determined to be a plurality of node groups.
18. The method according to claim 14 or 15, wherein: The dividing the nodes to be processed to determine at least one node group corresponding to the nodes to be processed includes: Adaptively divide the nodes to be processed according to a rate-distortion optimization algorithm to determine the at least one node group.
19. The method according to any one of claims 16 to 18, wherein: The number of nodes in different node groups in the at least one node group is less than or equal to a preset threshold.
20. The method according to any one of claims 16 to 18, wherein: Different node groups in the at least one node group have different numbers of nodes.
21. The method according to claim 20, wherein: The method further comprises: Determine the length information corresponding to the current node group according to the number of nodes in the current node group in the at least one node group; The length information is written into the code stream.
22. The method according to claim 14, wherein: A rate-distortion optimization algorithm is used to determine a first generation value of encoding geometric information of nodes in the current node group using octree encoding, and a second generation value of encoding geometric information of nodes in the current node group using plane encoding, If the first generation value is less than or equal to the second generation value, determining that the encoding mode corresponding to the current node group is octree encoding; If the first generation value is greater than the second generation value, it is determined that the encoding mode corresponding to the current node group is plane encoding.
23. The method according to claim 15, wherein: A rate-distortion optimization algorithm is used to determine a third generation value of encoding geometric information of nodes in the current node group using the first context, and a fourth generation value of encoding geometric information of nodes in the current node group using the second context. If the third generation value is less than or equal to the fourth generation value, determining that the encoding mode corresponding to the current node group is the first context encoding; If the third generation value is greater than the fourth generation value, it is determined that the encoding mode corresponding to the current node group is the second context encoding.
24. The method according to claim 14, wherein: Determine the initial length parameter; Based on the initial length parameter, a recursive algorithm is used to determine an optimal partitioning mode and at least one node group corresponding to the optimal partitioning mode; For a current node group in at least one node group corresponding to the optimal partitioning mode, a rate-distortion optimization algorithm is used to determine a fifth generation value of encoding geometric information of the nodes in the current node group using octree encoding, and a sixth generation value of encoding geometric information of the nodes in the current node group using plane encoding, If the fifth generation value is less than or equal to the sixth generation value, determining that the encoding mode corresponding to the current node group is octree encoding; If the fifth generation value is greater than the sixth generation value, it is determined that the encoding mode corresponding to the current node group is plane encoding.
25. The method of claim 15, wherein: Determine the initial length parameter; Based on the initial length parameter, a recursive algorithm is used to determine an optimal partitioning mode and at least one node group corresponding to the optimal partitioning mode; For a current node group in at least one node group corresponding to the optimal partitioning mode, a rate-distortion optimization algorithm is used to determine the current node group. a seventh generation value of geometric information encoded by nodes in the node group using the first context, and an eighth generation value of geometric information encoded by nodes in the current node group using the first context, If the seventh generation value is less than or equal to the eighth generation value, determining that the encoding mode corresponding to the current node group is the first context encoding; If the seventh generation value is greater than the eighth generation value, it is determined that the encoding mode corresponding to the current node group is the second context encoding.
26. An encoder, comprising a first determining unit and an encoding unit; wherein: The first determining unit is configured to divide the nodes to be processed, determine at least one node group corresponding to the nodes to be processed; and determine the encoding mode corresponding to the current node group in the at least one node group; The encoding unit is configured to determine the prediction value of the node in the current node group according to the encoding mode; The mode identification information corresponding to the current node group is determined according to the encoding mode, and the mode identification information is written into a bitstream.
27. 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 13 to 25 when running the computer program.
28. A decoder, comprising a second determining unit and a decoding unit; wherein: The second determining unit is configured to divide the nodes to be processed and determine at least one node group corresponding to the nodes to be processed; The decoding unit is configured to decode the code stream and determine the mode identification information corresponding to the current node group in the at least one node group; And determining the predicted values of the nodes in the current node group according to the decoding mode indicated by the mode identification information.
29. 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 12 when running the computer program.
30. A code stream, the code stream is generated by bit encoding according to information to be encoded; wherein, The information to be encoded includes at least: mode identification information and first identification information.
31. 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 12 is implemented, or the method according to any one of claims 13 to 25 is implemented.