Coding and decoding method, encoder, decoder, code stream and storage medium

CN121176016APending Publication Date: 2025-12-19GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380096246.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-04-07
Publication Date
2025-12-19

AI Technical Summary

Technical Problem

In block-based fast search algorithms, existing technologies cannot accurately find the best nearest neighbor in point cloud compression, which affects the prediction effect of attribute information and reduces encoding and decoding efficiency and performance.

Method used

By determining reference points from the set of predicted points in the reference frame and using the Morton code information of the points to determine the index, the nearest neighbor node is accurately found during the inter-frame prediction process. The method of finding the nearest neighbor using Morton code improves the prediction effect and encoding/decoding efficiency of attribute information.

Benefits of technology

It improves the prediction effect of attribute information in point cloud compression, and enhances encoding and decoding efficiency and performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121176016A_ABST
    Figure CN121176016A_ABST
Patent Text Reader

Abstract

The embodiment of the invention provides a coding and decoding method, and the method comprises the steps: for a to-be-processed node in an Mth layer LOD in a current frame, a codec can determine a reference point in a prediction point set of a reference frame of the current frame according to the first Morton code information corresponding to the to-be-processed node; wherein M is an integer greater than 1; the index of the point in the prediction point set of the reference frame is determined by the Morton code information of the point; determining a search range based on the second Morton code information corresponding to the reference point, and determining a nearest neighbor node corresponding to the to-be-processed node according to the search range; and determining an attribute prediction value corresponding to the to-be-processed node based on the reconstruction value of the nearest neighbor node.
Need to check novelty before this filing date? Find Prior Art

Description

Coding and decoding method, encoder, decoder, code stream 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, a code stream, and a storage medium. Background Art

[0002] In the Geometry-based Point Cloud Compression (G-PCC) or Video-based Point Cloud Compression (V-PCC) codec frameworks provided by the Moving Picture Experts Group (MPEG), the geometric and attribute information of a point cloud is encoded separately. When performing inter-frame prediction of attribute information, Morton codes can be used to perform a nearest neighbor search. The Morton code corresponding to each point in the point cloud can be derived from the point's geometric coordinates.

[0003] However, in the process of obtaining the nearest neighbor points using a block-based fast search algorithm, the prediction effect of attribute information is often affected due to the inability to accurately find the best nearest neighbor, thereby reducing the encoding and decoding efficiency and performance.

[0004] Summary of the Invention

[0005] The embodiments of the present application provide a coding and decoding method, an encoder, a decoder, a bit stream, and a storage medium, which can improve the prediction effect of attribute information and enhance coding and decoding efficiency and performance.

[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] For a node to be processed in the Mth level of LOD in the current frame, determine a reference point in a first set corresponding to the predicted kth level of LOD of a reference frame of the current frame according to the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; and the index of a point in the first set of predicted points corresponding to the kth level of LOD of the reference frame is determined by the Morton code information of the point;

[0009] Determining a search range based on the second Morton code information corresponding to the reference point, and determining a nearest neighbor node corresponding to the node to be processed according to the search range;

[0010] Based on the reconstructed value of the nearest neighbor node, a predicted attribute value corresponding to the node to be processed is determined.

[0011] In a second aspect, an embodiment of the present application provides an encoding method, applied to an encoder, the method comprising:

[0012] For a node to be processed in the Mth level of LOD in the current frame, determine a reference point in a first set corresponding to the predicted kth level of LOD of a reference frame of the current frame according to the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; and the index of a point in the first set of predicted points corresponding to the kth level of LOD of the reference frame is determined by the Morton code information of the point;

[0013] Determining a search range based on the second Morton code information corresponding to the reference point, and determining a nearest neighbor node corresponding to the node to be processed according to the search range;

[0014] Based on the reconstructed value of the nearest neighbor node, a predicted attribute value corresponding to the node to be processed is determined.

[0015] In a third aspect, an embodiment of the present application provides an encoder, comprising a first determining unit;

[0016] The first determination unit is configured to determine, for a node to be processed in the Mth layer LOD in the current frame, a reference point in a first set corresponding to the predicted kth layer LOD of the reference frame of the current frame according to the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of a point in the first predicted point set corresponding to the kth layer LOD of the reference frame is determined by the Morton code information of the point; determine a search range based on the second Morton code information corresponding to the reference point, and determine the nearest neighbor node corresponding to the node to be processed according to the search range; and determine the attribute prediction value corresponding to the node to be processed based on the reconstructed value of the nearest neighbor node.

[0017] In a fourth aspect, an embodiment of the present application provides an encoder, comprising a first memory and a first processor;

[0018] The first memory is used to store a computer program that can be run on the first processor;

[0019] The first processor is configured to execute the method according to the second aspect when running the computer program.

[0020] In a fifth aspect, an embodiment of the present application provides a decoder, the decoder including a second determining unit;

[0021] The second determination unit is configured to determine, for a node to be processed in the Mth layer LOD in the current frame, a reference point in a first set corresponding to the predicted kth layer LOD of the reference frame of the current frame according to the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of a point in the first predicted point set corresponding to the kth layer LOD of the reference frame is determined by the Morton code information of the point; determine a search range based on the second Morton code information corresponding to the reference point, and determine the nearest neighbor node corresponding to the node to be processed according to the search range; and determine the attribute prediction value corresponding to the node to be processed based on the reconstructed value of the nearest neighbor node.

[0022] In a sixth aspect, an embodiment of the present application provides a decoder, the decoder comprising a second memory and a second processor;

[0023] The second memory is used to store a computer program that can be run on the second processor;

[0024] The second processor is configured to execute the method according to the first aspect when running the computer program.

[0025] In a seventh aspect, an embodiment of the present application provides a code stream, which is generated by bit encoding based on information to be encoded; wherein the information to be encoded includes at least: a prediction residual.

[0026] In an eighth aspect, an embodiment of the present application provides a computer-readable storage medium storing a computer program, which, when executed, implements the method described in the first aspect or the method described in the second aspect.

[0027] The embodiment of the present application provides a coding and decoding method, an encoder, a decoder, a code stream and a storage medium. For a node to be processed in the Mth layer LOD in the current frame, the encoder and decoder can determine a reference point in the prediction point set of the reference frame of the current frame based on the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of the point in the prediction point set of the reference frame is determined by the Morton code information of the point; the search range is determined based on the second Morton code information corresponding to the reference point, and the nearest neighbor node corresponding to the node to be processed is determined based on the search range; based on the reconstructed value of the nearest neighbor node, the attribute prediction value corresponding to the node to be processed is determined. It can be seen that in the embodiment of the present application, the encoder and decoder need to determine the reference point in the prediction point set of the reference frame during the inter-frame prediction of attribute information, wherein the index of the point in the prediction point set of the reference frame is determined based on the Morton code information of the point, that is, the index of the point in the prediction point set of the reference frame is the Morton code of the point, and then the corresponding reference point can be found using the Morton code, so that in the subsequent nearest neighbor search process based on the reference point, it can also be ensured that the nearest neighbor node is obtained using the Morton code. That is to say, in an embodiment of the present application, the best nearest neighbor point can be accurately found by ensuring that the index of the point in the prediction point set of the reference frame is the Morton code of the point, thereby improving the prediction effect of the attribute information and improving the encoding and decoding efficiency and performance. BRIEF DESCRIPTION OF THE DRAWINGS

[0028] FIG1A is a schematic diagram of a three-dimensional point cloud image provided in an embodiment of the present application;

[0029] FIG1B is a partially enlarged schematic diagram of a three-dimensional point cloud image provided in an embodiment of the present application;

[0030] FIG2A is a schematic diagram of a point cloud image at different viewing angles provided by an embodiment of the present application;

[0031] FIG2B is a schematic diagram of a data storage format corresponding to FIG2A provided in an embodiment of the present application;

[0032] FIG3 is a schematic diagram of a network architecture of point cloud encoding and decoding provided by an embodiment of the present application;

[0033] FIG4A is a schematic diagram of a composition framework of a G-PCC encoder provided in an embodiment of the present application;

[0034] FIG4B is a schematic diagram of a composition framework of a G-PCC decoder provided in an embodiment of the present application;

[0035] FIG5A is a schematic diagram of a low plane position in the Z-axis direction provided by an embodiment of the present application;

[0036] FIG5B is a schematic diagram of a high plane position in the Z-axis direction provided by an embodiment of the present application;

[0037] FIG6 is a schematic diagram of a node coding sequence provided in an embodiment of the present application;

[0038] FIG7A is a schematic diagram of a planar identification information provided in an embodiment of the present application;

[0039] FIG7B is a second schematic diagram of planar identification information provided in an embodiment of the present application;

[0040] FIG8 is a schematic diagram of sibling nodes of a current node provided in an embodiment of the present application;

[0041] FIG9 is a schematic diagram of the intersection of a laser radar and a node provided in an embodiment of the present application;

[0042] FIG10 is a schematic diagram of neighborhood nodes at the same partition depth and the same coordinates;

[0043] FIG11 is a schematic diagram of a current node being located at a low plane position of a parent node;

[0044] FIG12 is a schematic diagram showing a current node being located at a high plane position of a parent node;

[0045] FIG13 is a schematic diagram of predictive coding of planar position information of a laser radar point cloud;

[0046] FIG14 provides a schematic diagram of coding in inferred direct coding mode;

[0047] FIG15 is a schematic diagram of coordinate transformation of a point cloud acquired by a rotating laser radar;

[0048] FIG16 is a schematic diagram of predictive coding;

[0049] FIG17 is a first schematic diagram of predicting angles using horizontal azimuth angles;

[0050] FIG18 is a second schematic diagram of predicting angles using horizontal azimuth angles;

[0051] FIG19 is a schematic diagram of predictive coding of the X or Y axis;

[0052] FIG20 is a schematic diagram of geometric information reconstruction of a sub-block;

[0053] FIG21 is a schematic diagram of LOD construction based on distance;

[0054] Figure 22 shows the visualization result of LOD;

[0055] FIG23 is a flowchart of G-PCC attribute prediction;

[0056] FIG24 is a schematic diagram of LOD division;

[0057] FIG25 is a first schematic diagram of inter-layer nearest neighbor search;

[0058] FIG26 is a second schematic diagram of inter-layer nearest neighbor search;

[0059] Figure 27 is a schematic diagram of spatial relationship 1;

[0060] Figure 28 is a second schematic diagram of spatial relationships;

[0061] FIG29 is a schematic diagram of a fast search algorithm;

[0062] FIG30 is a schematic diagram of nearest neighbor search within an attribute layer;

[0063] FIG31 is a second schematic diagram of a fast search algorithm;

[0064] FIG32 is a third schematic diagram of a fast search algorithm;

[0065] FIG33 is a fourth schematic diagram of a fast search algorithm;

[0066] Figure 34 is a flow chart of the lifting transformation;

[0067] FIG35 is a schematic diagram of the RAHT transformation process along the x, y, and z directions;

[0068] FIG36 is a schematic diagram of RAHT transformation;

[0069] FIG37 is a schematic diagram of RAHT transformation;

[0070] FIG38 is a schematic diagram of an inverse RAHT transform;

[0071] FIG39 shows a schematic flow chart of a decoding method provided in an embodiment of the present application;

[0072] FIG40 is a schematic diagram of a search area in an embodiment of the present application;

[0073] FIG41 is a schematic diagram showing a flow chart of an encoding method provided in an embodiment of the present application;

[0074] FIG42 is a schematic diagram of the composition structure of the encoder;

[0075] FIG43 is a second schematic diagram of the structure of the encoder;

[0076] FIG44 is a schematic diagram of the first structure of a decoder;

[0077] Figure 45 is a second schematic diagram of the decoder's structure. DETAILED DESCRIPTION

[0078] 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.

[0079] 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.

[0080] 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.

[0081] 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.

[0082] 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.

[0083] 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.

[0084] 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.

[0085] 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.

[0086] 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).

[0087] Point clouds can be divided into the following categories according to the acquisition method:

[0088] Static point cloud: the object is stationary and the device that acquires the point cloud is also stationary;

[0089] Dynamic point cloud: The object is moving, but the device that obtains the point cloud is stationary;

[0090] Dynamic point cloud acquisition: The device used to acquire the point cloud is in motion.

[0091] For example, point clouds can be divided into two categories according to their usage:

[0092] 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;

[0093] 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.

[0094] 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.

[0095] 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.

[0096] For example, taking a point cloud video with a frame rate of 30 frames per second (fps), each frame contains 700,000 points, and each point has coordinate information (xyz, float) and color information (RGB, uchar). The data volume of a 10-second point cloud video is approximately 0.7 million × (4 bytes × 3 + 1 byte × 3) × 30 fps × 10 seconds = 3.15 GB. Where 1 byte is 8 bits, and the YUV sampling format is 4:2:0, and the frame rate is 24 fps, the data volume of a 1280 × 720 2D video is approximately 1280 × 720 × 12 bits × 24 fps × 10 seconds ≈ 0.33 GB. The data volume of a 10-second two-view 3D video is approximately 0.33 × 2 = 0.66 GB. This shows that the data volume of a point cloud video far exceeds that of 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.

[0097] 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.

[0098] 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.

[0099] 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.

[0100] 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).

[0101] The following describes point cloud compression technology using the G-PCC encoding and decoding framework as an example.

[0102] 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.

[0103] 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.

[0104] 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.

[0105] 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).

[0106] For Octree geometry encoding (OctGeomEnc), the octree-based geometry encoding includes: first, coordinate conversion of the geometric information so that all point clouds are contained in a Bounding Box. Then quantization is performed. This step of quantization mainly plays a role of scaling. Due to the quantization rounding, the geometric information of some points is the same. The parameters are used to decide whether to remove duplicate points. The process of quantization and removal of duplicate points is also called voxelization. Next, the Bounding Box is continuously divided into trees (such as octrees, quadtrees, binary trees, etc.) in the order of breadth-first traversal, and the placeholder code of each node is encoded. In related technologies, a company proposed an implicit geometric division method. First, the bounding box of the point cloud is calculated. Assume d x >d y >d z , the bounding box corresponds to a cuboid. When geometrically partitioning, the binary tree partitioning will be performed based on the x-axis to obtain two child nodes; until d is satisfied x =d y >d z When the conditions are met, the quadtree partitioning will be performed based on the x and y axes to obtain four child nodes; when d is finally satisfied x =d y =d z When the conditions are met, the octree partitioning will continue until the leaf node obtained by the partitioning is a 1×1×1 unit cube. The partitioning will stop and the points in the leaf node will be encoded to generate a binary code stream. In the process of binary tree / quadtree / octree partitioning, two parameters are introduced: K and M. Parameter K indicates the maximum number of binary tree / quadtree partitions before octree partitioning; parameter M is used to indicate that the minimum block side length corresponding to binary tree / quadtree partitioning is 2 M . At the same time, K and M must meet the following conditions: Assume d max =max(d x ,d y ,d z ),d min =min(d x ,d y ,d z ), parameter K satisfies: K>=d max -d min ; Parameter M satisfies: M>=d minThe reason why the parameters K and M meet the above conditions is that in the current G-PCC geometric implicit partitioning process, 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 plane coding mode.

[0107] 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.

[0108] 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.

[0109] 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.

[0110] 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.

[0111] There are three judgment conditions in the current G-PCC standard to determine whether a node meets planar coding. The following will explain them in detail one by one.

[0112] I. Judge according to the planar probability of the node in each dimension.

[0113] (1) Determine the local area density (local_node_density) of the current node;

[0114] (2) Determine the probability Prob(i) of the current node in each dimension.

[0115] When the local area density of the node is less than the threshold Th (for example, Th = 3), compare the planar 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 planar coding is started in each dimension: Eligiblei = Prob(i) >= threshold.

[0116] 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: Eligible0 = Prob(0) >= Th0; Eligible1 = Prob(1) >= Th1; Eligible2 = Prob(2) >= Th2.

[0117] When Prob(1) > Prob(0) > Prob(2), then the settings of Eligible i are as follows: Eligible0 = Prob(0) >= Th1; Eligible1 = Prob(1) >= Th0; Eligible2 = Prob(2) >= Th2.

[0118] Here, the update of Prob(i) is specifically as follows: Prob(i) new = (L × Prob(i) + δ(coded node)) / L + 1 (1)

[0119] where L = 255; in addition, if the coded node is a plane, then δ(coded node) is 1; otherwise, δ(coded node) is 0.

[0120] Here, the update of local_node_density is as follows: local_node_density new =local_node_density+4×numSiblings (2)

[0121] 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).

[0122] Second, determine whether the current layer nodes meet the plane coding requirements based on the point cloud density of the current layer.

[0123] 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 direct coding (Infer Direct Mode Coding, IDCM) 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。

[0124] 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.

[0125] 3. Determine whether the current node meets the plane coding requirements based on the acquisition parameters of the lidar point cloud.

[0126] 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.

[0127] Furthermore, for nodes that meet the plane coding conditions, predictive coding may be performed on the plane identification information and the plane position information.

[0128] First, predictive coding of plane identification information.

[0129] Here, only three context information are used for encoding, that is, the plane identification in each coordinate dimension is designed separately for context.

[0130] Secondly, predictive coding of plane position information.

[0131] 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:

[0132] (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;

[0133] (b) Spatial distance between nodes at the same partition depth and coordinates as the current node and the current node: “near” and “far”;

[0134] (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;

[0135] (d) Coordinate dimension (i=0, 1, 2).

[0136] 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.

[0137] 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:

[0138] ① 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.

[0139] ② 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.

[0140] ③ 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.

[0141] ④ 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.

[0142] 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:

[0143] ① 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.

[0144] ② 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.

[0145] ③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.

[0146] ④ 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.

[0147] 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).

[0148] 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:

[0149] 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:

[0150] 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.

[0151] 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:

[0152] (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.

[0153] (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.

[0154] (3) The number of sibling nodes of the current node is greater than 1.

[0155] Exemplarily, FIG14 provides a schematic diagram of inferred IDCM coding. As shown in FIG14 , if the current node does not have the DCM coding qualification, it will be divided into octrees. If it has the DCM coding qualification, the number of points contained in the node will be further judged. When the number of points is less than a threshold (for example, 2), the node will be DCM-encoded, otherwise the octree division will continue. When the DCM coding mode is applied, it is first necessary to encode whether the current node is a true isolated point, that is, IDCM_flag. When IDCM_flag is true, the current node adopts DCM coding, otherwise octree coding is still adopted. When the current node meets the DCM coding requirements, the DCM coding mode of the current node needs to be encoded. There are currently two DCM modes, namely: (a) there is only one point (or multiple points, but they are duplicate points); (b) there are two points. Finally, the geometric information of each point needs to be encoded. Assuming that the side length of the node is 2 d When encoding each component of the node's geometric coordinates, d bits are required, and these bits are directly encoded into the bitstream. It is important to note that when encoding LiDAR point clouds, the efficiency of geometric information coding can be further improved by predictively encoding the three-dimensional coordinate information using LiDAR acquisition parameters.

[0156] Next, the IDCM encoding process is introduced in detail:

[0157] When the current node meets the direct coding mode (DCM), the number of points of the current node, numPoints, is first encoded. The number of points of the current node is encoded according to different DirectModes:

[0158] If the current node does not meet the DCM node requirements, exit directly. (That is, the number of points is greater than 2 points and is not a duplicate point)

[0159] If the number of points numPonts in the current node is less than or equal to 2, the encoding process is as follows:

[0160] 1) First encode whether the numPonts of the current node is greater than 1;

[0161] 2) If the current node has only one point and the geometry coding environment is geometry lossless coding, it is necessary to encode the second point of the current node to ensure that it is not a duplicate point;

[0162] If the number of points numPonts in the current node is greater than 2, the encoding process is as follows:

[0163] 3) First encode the numPonts of the current node to be less than or equal to 1;

[0164] 4) Secondly, it is encoded that the second point of the current node is a repeated point, and then it is encoded whether the number of repeated points of the current node is greater than 1. When the number of repeated points is greater than 1, the remaining number of repeated points needs to be exponentially decoded.

[0165] After encoding the number of points in the current node, the coordinate information of the points contained in the current node is encoded. The following will introduce the lidar point cloud and the human eye point cloud separately.

[0166] Point cloud for human eyes:

[0167] 1) If the current node contains only one point, the geometric information of the point in three dimensions will be directly encoded (Bypass coding);

[0168] 2) If the current node contains two points, the priority coded coordinate axis dirextAxis will be obtained by using the geometric coordinates of the points. It should be noted that the coordinate axes currently compared only include the x and y axes, not the z axis. Assuming that the geometric coordinates of the current node are nodePos, the judgment method is as follows: dirextAxis = !(nodePos[0] <nodePos[1])

[0169] That is, the axis with the smaller node coordinate geometric position will be used as the priority encoded coordinate axis dirextAxis, and then the priority encoded coordinate axis dirextAxis geometric information will be encoded first in the following way, assuming that the priority encoded axis corresponding to the encoding geometry bit depth is nodeSizeLog2, and assuming that the coordinates of the two points are pointPos[0] and pointPos[1] respectively.

[0170] After encoding the priority axis dirextAxis, the geometric coordinates of the current point are directly encoded. Assuming that the remaining encoding bit depth of each point is nodeSizeLog2, the specific encoding process is as follows: for(int axisIdx=0;axisIdx<3;++axisIdx) for(int mask=(1<<nodeSizeLog2[axisIdx])> >1;mask;mask>>1) encodePosBit(!!(pointPos[axisIdx]&mask));

[0171] For LiDAR point clouds

[0172] 1) If the current node contains two points, the priority coded coordinate axis dirextAxis will be obtained first by using the geometric coordinates of the points. Assuming that the geometric coordinates of the current node are nodePos, the judgment method is as follows: dirextAxis = !(nodePos[0] <nodePos[1])

[0173] That is, the axis with the smaller node coordinate geometry position will be used as the priority encoding axis dirextAxis. It should be noted that the coordinate axes currently compared only include the x and y axes, not the z axis. Then, the geometry information of the priority encoding axis dirextAxis is first encoded as follows, assuming that the encoding geometry bit depth corresponding to the priority encoding axis is nodeSizeLog2, and assuming that the coordinates of the two points are pointPos[0] and pointPos[1].

[0174] After encoding the priority encoding axis dirextAxis, the geometric coordinates of the current point are encoded.

[0175] Since the laser radar point cloud can obtain the acquisition parameters of the laser radar point cloud, the geometric coordinate information of the current node can be predicted by using it, thereby further improving the efficiency of the geometric information encoding of the point cloud. Similarly, first use the geometric information nodePos of the current node to obtain a directly encoded main axis direction, and then use the geometric information of the encoded direction to predict the geometric information of another dimension. Also assuming that the axis direction of the direct encoding is directAxis, and assuming that the bit depth of the direct encoding is nodeSizeLog2, the encoding method is as follows: for(int mask=(1<<nodeSizeLog2)> >1;mask;mask>>1) encodePosBit(!!(pointPos[directAxis]&mask));

[0176] It should be noted here that all geometric accuracy information in the directAxis direction will be encoded here.

[0177] Figure 15 is a schematic diagram of the coordinate transformation of the point cloud obtained by the rotating laser radar. After encoding all the precision of the directAxis coordinate direction, the LaserIdx corresponding to the current point will be calculated first, such as the pointLaserIdx number in Figure 15, and the LaserIdx of the current node, namely nodeLaserIdx, will be calculated. Secondly, the LaserIdx of the node, namely nodeLaserIdx, will be used to predict the LaserIdx of the point, namely pointLaserIdx. The calculation method of the LaserIdx of the node or point is as follows: Assume that the geometric coordinates of the point are pointPos, the starting coordinates of the laser ray are LidarOrigin, and the number of Lasers is LaserNum, and the tangent value of each Laser is tanθ i , the vertical offset position of each Laser is Z i ,but:

[0178] After calculating the current point's LaserIdx, the pointLaserIdx of the point is first predictively encoded using the current node's LaserIdx. After encoding the current point's LaserIdx, the three-dimensional geometric information of the current point is predictively encoded using the LiDAR acquisition parameters.

[0179] When performing predictive coding, FIG16 is a schematic diagram of predictive coding. As shown in FIG16 , the LaserIdx corresponding to the current point is first used to obtain the corresponding predicted value of the horizontal azimuth angle, that is, Secondly, the node geometry information corresponding to the current point is used to obtain the horizontal azimuth angle corresponding to the node Among them, the horizontal azimuth The calculation method between the node geometry information is as follows, where, assuming the geometric coordinates of the node are nodePos, then:

[0180] By using the acquisition parameters of the laser radar, we can get the number of rotation points of each Laser, numPoints, which represents the number of points obtained by each laser ray rotating one circle. Then, we can use the number of rotation points of each Laser to calculate the rotation angular velocity deltaPhi of each Laser, that is:

[0181] The horizontal azimuth angle of the node is used And the horizontal azimuth of the previous Laser code point corresponding to the current point Calculate the predicted horizontal azimuth angle corresponding to the current point Figure 17 is a schematic diagram of the first method of predicting the angle by the horizontal azimuth angle, and Figure 18 is a schematic diagram of the second method of predicting the angle by the horizontal azimuth angle. As shown in Figures 17 and 18, the angle of the X or Y plane can be predicted by the horizontal azimuth angle. The calculation method is as follows:

[0182] FIG19 is a schematic diagram of the prediction coding of the X or Y axis. As shown in FIG19 , the predicted value of the horizontal azimuth angle is finally used. And the horizontal azimuth of the current node and the horizontal azimuth of the high plane To predict the geometric information of the current node.

[0183] The details are as follows: int context=(angLel≥0&&angLeR≥0)||(angLel<0&&angLeR<0)? 0: 2 int minAngle=std∷min(abs(angLel), abs(angLeR)) int maxAngle=std∷max(Abs(angLel), abs(angLeR)) context+=maxAngle>minAngle? 0:1 context+=maxAngle>minAngle? 0:4

[0184] After encoding the LaserIdx of the point, the Z-axis direction of the current point will be predicted and encoded using the LaserIdx corresponding to the current point. That is, the depth information radius of the cylindrical coordinate system is calculated by using the x and y information of the current point. Then, the tangent value of the current point and the vertical direction are obtained using the laser LaserIdx of the current point. The predicted value of the Z-axis direction of the current point, namely Z_pred, can be obtained: int tanTheta=tanθ laserIdx int zOffset = Z laserIdx Z_pred=radius×tanTheta-zOffset

[0185] Finally, Z_pred is used to predict the geometric information of the current point in the Z-axis direction to obtain the prediction residual Z_res, and Z_res is finally encoded.

[0186] 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.

[0187] 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.

[0188] The following is a detailed introduction to the IDCM decoding process:

[0189] The same process as encoding is used. First, a priori information is used to determine whether the node should start IDCM. The starting conditions of IDCM are as follows:

[0190] (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.

[0191] (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.

[0192] (3) The number of sibling nodes of the current node is greater than 1.

[0193] When a node meets the conditions for DCM encoding, it first decodes whether the current node is a real DCM node, that is, IDCM_flag. When IDCM_flag is true, the current node adopts DCM encoding, otherwise it still adopts octree encoding.

[0194] Next, decode the number of points numPoints of the current node. The specific decoding method is as follows:

[0195] 2) First decode whether the numPonts of the current node is greater than 1;

[0196] 3) If the numPonts of the current node is greater than 1, continue decoding to see if the second point is a duplicate point. If the second point is not a duplicate point, it can be implicitly inferred that the second type of DCM mode contains only two points.

[0197] 4) If the numPonts of the current node obtained by decoding is less than or equal to 1, continue decoding to see if the second point is a repeated point. If the second point is not a repeated point, it can be implicitly inferred that the second type of DCM mode is satisfied, which contains only one point. If the second point obtained by decoding is a repeated point, it can be inferred that the third type of DCM mode is satisfied, which contains multiple points, but they are all repeated points. Continue decoding to see if the number of repeated points is greater than 1 (entropy decoding). If it is greater than 1, continue decoding the number of remaining repeated points (using exponential Columbus decoding).

[0198] If the current node does not meet the DCM node requirements, exit directly. (That is, the number of points is greater than 2 points and is not a duplicate point)

[0199] After decoding the number of points in the current node, the coordinate information of the points contained in the current node is decoded. The following will introduce the lidar point cloud and the human eye point cloud separately.

[0200] Human eye point cloud

[0201] 3) If the current node contains only one point, the geometric information of the point in three dimensions will be directly decoded (Bypass coding);

[0202] 4) If the current node contains two points, the first coordinate axis to be decoded is obtained by using the geometric coordinates of the points. It should be noted that the coordinate axes currently compared only include the x and y axes, not the z axis. Assuming that the geometric coordinates of the current node are nodePos, the judgment method is as follows: dirextAxis = !(nodePos[0] <nodePos[1])

[0203] That is, the axis with the smaller node coordinate geometric position will be used as the priority decoding axis dirextAxis. Secondly, the geometric information of the priority decoding axis dirextAxis will be decoded first in the following way. It is assumed that the geometric bit depth to be decoded corresponding to the priority decoding axis is nodeSizeLog2, and it is assumed that the coordinates of the two points are pointPos[0] and pointPos[1].

[0204] After decoding the priority decoding axis dirextAxis, the geometric coordinates of the current point are directly decoded. Assuming that the remaining encoding bit depth of each point is nodeSizeLog2, the specific decoding process is as follows, assuming that the coordinate information of the point is pointPos:

[0205] For LiDAR point clouds

[0206] 2) If the current node contains two points, the priority decoding coordinate axis dirextAxis will be obtained first by using the geometric coordinates of the points. Assuming that the geometric coordinates of the current node are nodePos, the judgment method is as follows: dirextAxis = !(nodePos[0] <nodePos[1])

[0207] That is, the axis with the smaller node coordinate geometry position will be used as the priority decoding axis dirextAxis. It should be noted that the coordinate axes currently compared only include the x and y axes, not the z axis. Then, the geometry information of the priority encoded coordinate axis dirextAxis is first decoded as follows, assuming that the encoding geometry bit depth corresponding to the priority decoded axis is nodeSizeLog2, and assuming that the coordinates of the two points are pointPos[0] and pointPos[1].

[0208] After decoding the priority decoding axis dirextAxis, the geometric coordinates of the current point are decoded.

[0209] Similarly, we first use the current node's geometry information nodePos to get a direct decoding main axis direction, and then use the geometry information of the decoded direction to decode the geometry information of the other dimension. Assuming that the axis direction of direct decoding is directAxis and the bit depth to be decoded in direct decoding is nodeSizeLog2, the decoding method is as follows:

[0210] It should be noted here that all geometric accuracy information in the directAxis direction will be decoded here.

[0211] After decoding all the precisions of the directAxis coordinate direction, the LaserIdx of the current node, i.e., nodeLaserIdx, is first calculated. Then, the LaserIdx of the node, i.e., nodeLaserIdx, is used to predict and decode the LaserIdx of the point, i.e., pointLaserIdx. The calculation method of the LaserIdx of the node or point is the same as that of the encoder. Finally, the predicted residual information of the LaserIdx of the current point and the LaserIdx of the node is decoded to obtain ResLaserIdx. Then, PointLaserIdx=nodeLaserIdx+ResLaserIdx (8)

[0212] After decoding the LaserIdx of the current point, the three-dimensional geometric information of the current point is predicted and decoded using the acquisition parameters of the laser radar.

[0213] When performing predictive decoding, as shown in FIG16 , the LaserIdx corresponding to the current point is first used to obtain the corresponding predicted value of the horizontal azimuth angle, that is, Secondly, the node geometry information corresponding to the current point is used to obtain the horizontal azimuth angle corresponding to the node Among them, the horizontal azimuth The calculation method between the node geometry information is as follows:

[0214] Assuming that the geometric coordinates of the node are nodePos, the horizontal azimuth angle is calculated according to formula (5):

[0215] By using the acquisition parameters of the laser radar, the number of rotation points of each laser, numPoints, can be obtained, which represents the number of points obtained when each laser ray rotates one circle. The rotation angular velocity deltaPhi of each laser can then be calculated using the number of rotation points of each laser, which is the above formula (6).

[0216] The horizontal azimuth angle of the node is used And the horizontal azimuth of the previous Laser code point corresponding to the current point Calculate the predicted horizontal azimuth angle corresponding to the current point As shown in Figures 17 and 18, the angle of the X or Y plane can be predicted by the horizontal azimuth angle. The calculation method is as shown in formula (7).

[0217] As shown in Figure 19, the predicted value of the horizontal azimuth angle is finally And the horizontal azimuth of the current node and the horizontal azimuth of the high plane To predict the geometric information of the current node.

[0218] The details are as follows: int context=(angLel≥0&&angLeR≥0)||(angLel<0&&angLeR<0)? 0: 2 int minAngle=std∷min(abs(angLel), abs(angLeR)) int maxAngle=std∷max(Abs(angLel), abs(angLeR)) context+=maxAngle>minAngle? 0:1 context+=maxAngle>minAngle? 0:4

[0219] After decoding the LaserIdx of the point, the Z-axis direction of the current point will be predicted and decoded using the LaserIdx corresponding to the current point. That is, the depth information radius of the cylindrical coordinate system is calculated by using the x and y information of the current point. Then, the tangent value of the current point and the vertical offset are obtained using the laser LaserIdx of the current point. Then, the predicted value of the Z-axis direction of the current point, namely Z_pred, can be obtained: int tanTheta=tanθ laserIdx int zOffset = Z laserIdx Z_pred=radius×tanTheta-zOffset

[0220] Finally, the decoded Z_res and Z_pred are used to reconstruct and restore the geometric information of the current point in the Z-axis direction.

[0221] 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.

[0222] When reconstructing point cloud geometry based on trisoup, the decoding end first decodes vertex coordinates to complete triangle reconstruction, as shown in Figure 20. A block contains three intersection points (v1, v2, v3). The set of triangles formed by these three intersection points in a certain order is called triangle soup, or trisoup. Sampling is then performed on this set of triangles, and the resulting sampled points serve as the reconstructed point cloud within the block.

[0223] 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.

[0224] 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.

[0225] 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.

[0226] 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:

[0227] 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:

[0228] 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.

[0229] It can also be understood that for the G-PCC codec framework, the general test conditions are as follows:

[0230] (1) There are 4 test conditions:

[0231] Condition 1: The geometric position is limited and the attributes are lost;

[0232] Condition 2: Geometric position lossless, attribute lossy;

[0233] Condition 3: Geometric position lossless, attribute loss limited;

[0234] Condition 4: Geometric position and attributes are lossless.

[0235] (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.

[0236] (3) Technical routes: There are two types in total, which are distinguished by the algorithm used for geometric compression.

[0237] Technical route 1: Octree encoding branch.

[0238] 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.

[0239] 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.

[0240] Technical route 2: prediction tree encoding branch.

[0241] 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.

[0242] 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.

[0243] The G-PCC framework currently includes three attribute encoding methods for attribute information: Predicting Transform (PT), Lifting Transform (LT), and Region Adaptive Hierarchical Transform (RAHT). The first two predictively encode point clouds based on the order in which LODs are generated, while RAHT adaptively transforms attribute information from the bottom up based on the octree hierarchy. The following sections describe these three point cloud attribute encoding methods.

[0244] Among them, for the predictive coding of point cloud attribute information, the current attribute prediction module of G-PCC adopts the nearest neighbor attribute prediction coding scheme with the LOD structure. The construction methods of LOD include the LOD construction scheme based on distance, the LOD construction scheme based on a fixed sampling rate, and the LOD construction scheme based on octree, etc. In the LOD construction scheme based on the distance threshold, the point cloud is first sorted by Morton before constructing the LOD to ensure strong attribute correlation between adjacent points. As shown in Figure 21, an example of the LOD construction process based on distance is given. According to the L pre-set Manhattan distances (dl) l = 0, 1, … L-1, the point cloud is divided into L different point cloud detail levels (Rl) l = 0, 1, … L-1, where (dl) l = 0, 1, … L-1 satisfies dl < dl-1. The LOD construction process is as follows: (1) First, mark all points in the point cloud as unvisited, and establish a set V to store the set of visited points; (2) For each iteration l, traverse the points in the point cloud. If the current point has been visited, ignore it. Otherwise, calculate the minimum distance D from the current point to the point set V. If D < dl, ignore the point; otherwise, mark the current point as visited and add the current point to the refinement level Rl and the point set V; (3) The points in the level of detail LODl are composed of the points in the refinement levels R0, R1, R2…Rl; (4) Continuously repeat the above steps until all points are marked as visited.

[0245] Based on the LOD structure, the attribute value of each point is linearly weighted predicted by using the reconstructed attribute values of points in the same level or a higher level of LOD, where the maximum number of reference prediction neighbors is determined by the high-level syntax elements of the encoder. For the attribute of each point, at the encoding end, the rate-distortion optimization algorithm is used to select to perform weighted prediction by using the attributes of the N nearest neighbor points searched or select the attribute of a single nearest neighbor point for prediction, and finally encode the selected prediction mode and the prediction residual.

[0246] Among them, N represents the number of prediction points in the nearest neighbor point set of point i, Pi represents the combination of the N nearest neighbor points of point i, Dm represents the spatial geometric distance from the nearest neighbor point m to the current point i, Attrm represents the attribute value after reconstruction of the nearest neighbor point m, and Attr i ′ represents the predicted value of the attribute of the current point i, and the number of points N is a pre-set value.

[0247] To balance attribute coding efficiency and parallel processing between different LOD layers, a switch is introduced in the encoder's high-level syntax elements to control whether to introduce LOD layer prediction. If turned on, LOD layer prediction is enabled, and prediction can be performed using points within the same LOD layer. It should be noted that when the number of LOD layers is 1, LOD layer prediction is always used.

[0248] Figure 22 shows the visualization result of LOD. As shown in Figure 22, the points in the first layer represent the outer contours of the point cloud. As the number of detail layers increases, the point cloud details become clearer.

[0249] Figure 23 is a flowchart of G-PCC attribute prediction. In the process of selecting the optimal prediction value, after the LOD is constructed, the three nearest neighboring points of the current point to be encoded are first found from the encoded data points according to the generation order of the LOD. The attribute reconstruction values ​​of these three nearest neighboring points are used as candidate prediction values ​​of the current point to be encoded; then, the optimal prediction value is selected from them according to the rate-distortion optimization (RDO). For example, when encoding the attribute value of point P2 in Figure 18, the prediction variable index of the attribute value of the nearest neighbor point P4 is set to 1; the attribute prediction variable indexes of the second nearest neighbor point P5 and the third nearest neighbor point P0 are set to 2 and 3 respectively; the prediction variable index of the weighted average of points P0, P5 and P4 is set to 0, as shown in Table 1:

[0250] Table 1

[0251] Finally, RDO is used to select the best predictor variable. The formula for weighted average is as follows:

[0252] In the formula Represents the spatial geometric weight of the neighboring point j to the current point i:

[0253] Represents the attribute prediction value of the current point i, j represents the index of the three neighboring points, represents the attribute value after reconstruction of the neighboring points), x i ,y i , z i is the geometric position coordinate of the current point i, x ij ,y ij , z ij is the geometric coordinate of the neighboring point j.

[0254] In the process of attribute prediction residual and quantification, the attribute prediction value of the current point i is obtained through the above prediction (k is the total number of points in the point cloud). Let (a i )i∈0…k-1 is the original attribute value of the current point, then the attribute residual (r i ) i∈0…k-1 Denoted as:

[0255] Further quantify the prediction residuals:

[0256] Where Q i It represents the quantized attribute residual of the current point i, Qs is the quantization step (Qs), which can be calculated by the quantization parameter QP (QP) specified by CTC.

[0257] The purpose of encoding-side reconstruction of attribute values ​​is to predict subsequent points. Before reconstructing attribute values, the residuals must be dequantized. is the residual after inverse quantization:

[0258] and predicted value Add up to get the reconstruction value of point i

[0259] There are currently two main types of algorithms for attribute nearest neighbor search based on LOD partitioning: intra-frame nearest neighbor search and inter-frame nearest neighbor search. Intra-frame nearest neighbor search is divided into inter-layer nearest neighbor search and intra-layer nearest neighbor search.

[0260] FIG24 is a schematic diagram of LOD division. As shown in FIG24 , after LOD division, it resembles a pyramid structure.

[0261] Figure 25 is a schematic diagram of the inter-layer nearest neighbor search, and Figure 26 is a schematic diagram of the inter-layer nearest neighbor search. As shown in the figure, in the process of inter-layer nearest neighbor search, different LOD layers are obtained based on geometric information, and LOD0, LOD1 and LOD2 are obtained. Then, the points in LOD0 can be used to predict the attributes of the points in the next LOD layer.

[0262] The entire process of searching for the nearest neighbor within a frame is described in detail below.

[0263] It can be understood that in the entire LOD division process, there are three sets O(k), L(k) and I(k), where k is the index of the LOD layer during LOD division, and I(k) is the input point set during the current LOD layer division. After LOD division, the O(k) set and L(k) set are obtained. The O(k) set stores the sampling point set, and L(k) is the point set in the current LOD layer. That is, the entire LOD division process is as follows:

[0264] (1) Initialization

[0265] If k = 0, L(k) ← {}. Otherwise L(k) ← L(k-1)

[0266] O(k)←{}

[0267] (2) Using the LOD partitioning algorithm, the sampling points are stored in O(k), and the remaining points are divided into L(k)

[0268] (3) When the next iteration is performed, I←O(k)

[0269] It should be noted here that since the entire LOD division process is based on the Morton code, O(k), L(k) and I(k) store the Morton code index corresponding to the point.

[0270] When performing inter-layer nearest neighbor search, that is, the points in the L(k) set perform nearest neighbor search in the O(k) set. The specific search algorithm is as follows:

[0271] The nearest neighbor search is performed based on the spatial relationship. Figure 27 is a schematic diagram of the spatial relationship. As shown in Figure 27, when predicting the current point P, the neighbor search is performed by using the parent block (Block B) corresponding to point P to search for points in the neighbor blocks that are coplanar and colinear with the current parent block to perform attribute prediction.

[0272] Among them, Figure 28 is a second schematic diagram of spatial relationships. As shown in Figure 28, the current point has 6 coplanar neighbors, 18 colinear neighbors, and 26 co-point neighbors.

[0273] First, the coordinates of the current point are used to obtain the corresponding spatial block. Second, a nearest neighbor search is performed in the previously encoded LOD layer to find the spatial blocks that are coplanar, colinear, and co-point with the current block to obtain the N nearest neighbors of the current point.

[0274] If the N nearest neighbors of the current point are still not found after performing coplanar, colinear, and co-point nearest neighbor searches, the N nearest neighbors of the current point will be obtained based on the fast search algorithm. Figure 29 is a schematic diagram of the fast search algorithm. As shown in Figure 29, when performing inter-attribute layer prediction, the geometric coordinates of the current point to be encoded are first used to obtain the Morton code corresponding to the current point. Secondly, based on the Morton code of the current point, the first reference point (j) with a Morton code greater than the current point is found in the reference frame. Then, the nearest neighbor search is performed within the range of [j-searchRange, j+searchRange].

[0275] The rest of the specific algorithms for updating the nearest neighbor are consistent with the inter-frame nearest neighbor search algorithm. The specific algorithms will be mentioned in the inter-frame nearest neighbor search algorithm.

[0276] Figure 30 is a schematic diagram of the nearest neighbor search within the attribute layer. As shown in Figure 30, for the nearest neighbor search within the layer, when the intra-layer prediction algorithm is turned on, the nearest neighbor search will be performed in the same layer LOD and the set of encoded points in the same layer to obtain the N nearest neighbors of the current point (the inter-layer nearest neighbor search is also performed).

[0277] When performing prediction within the attribute layer, a nearest neighbor search is performed based on a fast search algorithm. Figure 31 shows a second schematic diagram of the fast search algorithm. As shown in Figure 31, assuming the Morton code index of the current point is i, a nearest neighbor search is performed in [i+1, i+searchRange]. The specific nearest neighbor search algorithm is consistent with the inter-frame block-based fast search algorithm.

[0278] Furthermore, for the nearest neighbor search between frames, Figure 32 is a schematic diagram three of the fast search algorithm. As shown in Figure 32, when performing attribute inter-frame prediction, the geometric coordinates of the current point to be encoded are first used to obtain the Morton code corresponding to the current point, and then based on the Morton code of the current point, the first reference point (j) that is larger than the Morton code of the current point is found in the reference frame, and then the nearest neighbor search is performed within the range of [j-searchRange, j+searchRange].

[0279] Currently, when performing nearest neighbor searches within and between frames, the neighborhood search is performed based on blocks. FIG33 is a fourth schematic diagram of a fast search algorithm. As shown in FIG33 , when performing neighborhood search for the current point (Morton code index is i), the points in the reference frame are first divided into N (N=3) layers according to the Morton code. The specific division algorithm is as follows:

[0280] First layer: Assume that the points of the reference frame are numPoints, first divide the points in the reference frame into M (M=2 5 =32) points are divided into one block;

[0281] Second layer: Based on the first layer, the blocks of the first layer are also processed in the order of Morton code every M (M=2 5 =32) blocks are divided into one block;

[0282] The third layer: Based on the second layer, the blocks of the first layer are also processed in the order of the Morton code every M (M=2 5 =32) blocks are divided into one block;

[0283] Finally, the prediction structure shown in Figure 33 is obtained. When performing attribute prediction based on the prediction structure shown in Figure 33, assuming that the Morton code index of the current point to be encoded is i, first obtain the first point in the reference frame whose Morton code is greater than or equal to the current point, with index j. Then, the block index of the reference point is calculated based on j. The specific calculation method is as follows:

[0284] First layer: BucketSize_0 = 2 5 =32

[0285] Second layer: BucketSize_1 = 2 5 =32×BucketSize_0=1024

[0286] Third layer: BucketSize_2 = 2 5 =32×BucketSize_1=32768

[0287] Assume that the reference range in the prediction frame of the current point is [j-searchRange, j+searchRange], use j-searchRange to calculate the starting index of the third layer, and use j+searchRange to calculate the ending index of the third layer. Secondly, first determine whether some blocks in the second layer need to be searched for the nearest neighbor in the blocks of the third layer, and then go to the second layer, and determine whether a search is needed for each block in the first layer. If some blocks in the first layer need to be searched for the nearest neighbor, then the midpoints of some blocks in the first layer will be judged point by point to update the nearest neighbor.

[0288] For the algorithm based on index calculation block, assuming that the Morton code index corresponding to the current point is index, then the index of the corresponding third-level block is: idx_2 = index / BucketSize_2

[0289] After obtaining the block index idx_2 of the third layer, the start index and end index of the block corresponding to the current block in the second layer can be obtained using idx_2: startIdx1=idx_2×BucketSize_1 endIdx=idx_2×BucketSize_1+BucketSize_1-1

[0290] The index of the first layer block is obtained based on the index of the second layer block based on the same algorithm.

[0291] When performing a block-based nearest neighbor search, we first determine whether the current block needs to be searched for the nearest neighbor. This is called filtering the nearest neighbor search for the block. Each spatial block can be obtained through two variables: minPos and maxPos. MinPos represents the minimum value of the block, and maxPos represents the maximum value of the block.

[0292] Assume that the distance to the farthest point among the N nearest neighbors of the current point is Dist, the coordinates of the point to be encoded are (x, y, z), and the current block is represented by (minPos, maxPos), where minPos is the minimum value of the bounding box in three dimensions, and maxPos is the maximum value of the bounding box in three dimensions. The distance D between the current point and the bounding box is calculated as follows:

[0293] int dx=int(std::max(std::max(minPos[0]-point[0],0),point[0]-maxPos[0])); int dy=int(std::max(std::max(minPos[1]-point[1],0),point[1]-maxPos[1])); int dz=int(std::max(std::max(minPos[2]-point[2],0),point[2]-maxPos[2])); D=dx+dy+dz;

[0294] When D is less than or equal to Dist, the points in the current block will be traversed.

[0295] Furthermore, Figure 34 is a flowchart of the lifting transformation. As shown in Figure 34, the lifting transformation also predicts and encodes the point cloud attributes based on LOD. The difference from the predictive transformation is that the lifting transformation first divides the LOD into high and low layers, predicts in the reverse order of the LOD generation layer, and introduces an update operator in the prediction process to update the quantized weights of the low-level LOD midpoints to improve the accuracy of the prediction. This is because the attribute values ​​of the low-level LOD midpoints are frequently used to predict the attribute values ​​of the high-level LOD midpoints, and the points in the low-level LOD should have greater influence.

[0296] Step 1: Segmentation Process

[0297] The segmentation process is to divide the complete LOD layer into a low LOD layer L(N) and a high LOD layer H(N). If a point cloud has three LOD layers, namely (LOD l ) l=0,1,2, after segmentation, LOD2 is the high LOD layer, denoted as H(N), (LOD l ) l=0,1 It is the low LOD layer, denoted as L(N).

[0298] Step 2: Prediction Process

[0299] The point in the high-level LOD selects the attribute information of the nearest neighbor point from the low-level LOD as the attribute prediction value P(N) of the current point to be coded, and the prediction residual D(N) is recorded as: D(N) = H(N) - P(N) (18)

[0300] Step 3: Update Process

[0301] Update the attribute prediction residual D(N) in the high-level LOD to obtain U(N), and use U(N) to improve the attribute value of the midpoint of the low-level LOD, as shown in the formula: L′(N)=L(N)+U(N) (19)

[0302] The above process will iterate continuously until the lowest LOD according to the order of LOD from high to low.

[0303] Because LOD-based prediction schemes give points in lower LOD layers greater influence, the transformation scheme based on the lifting wavelet transform introduces quantization weights and updates the prediction residual based on the prediction residual D(N) and the distance between the prediction point and its adjacent points. Finally, the quantization weights used in the transformation process are used to adaptively quantize the prediction residual. It is important to note that the quantization weight value of each point can be determined by geometric reconstruction at the decoding end, so the quantization weights should not be encoded.

[0304] The Regional Adaptive Hierarchical Transform (RAHT) is a Haar wavelet transform that transforms point cloud attribute information from the spatial domain to the frequency domain, further reducing the correlation between point cloud attributes. Figure 35 illustrates the RAHT transformation process along the x, y, and z dimensions. As shown in Figure 35, following the octree structure, the nodes in each layer are transformed in the x, y, and z dimensions in a bottom-up manner, and the transformation is repeated until the root node of the octree is reached.

[0305] Figure 36 is a schematic diagram of the RAHT transform. As shown in Figure 36, RAHT is a wavelet transform based on the hierarchical structure of the octree. Attribute information is associated with the octree nodes. The attributes of the occupied nodes in the same parent node are recursively transformed in a bottom-up manner. The nodes in each layer are transformed in the x, y, and z dimensions until the root node of the octree is reached. During the hierarchical transformation process, the low-pass (DC) coefficients obtained after the transformation of the nodes in the same layer are passed to the nodes in the next layer for further transformation, while all high-pass (AC) coefficients are encoded by the arithmetic coder.

[0306] During the transformation process, the DC coefficients (direct current components) of the transformed nodes at the same layer are passed to the previous layer for further transformation, while the AC coefficients (alternating current components) of each layer are quantized and encoded. The following describes the main transformation processes.

[0307] FIG37 is a schematic diagram of RAHT transformation, and FIG38 is a schematic diagram of inverse RAHT transformation. As shown in the figure, assuming that g′ L,2x,y,z And g′L, 2x+1, y, z are the DC coefficients of two attributes of neighboring points in the L layer. After linear transformation, the information of the L-1 layer is the AC coefficient f′ L-1,x,y,z and DC coefficient g′ L-1,x,y,z ; Then, f′ L-1,x,y,z No more transformation will be performed, and quantization coding will be performed directly, g′ L-1,x,y,z The nearest neighbor will continue to be searched for transformation. If no neighbor is found, it will be directly passed to the L-2 layer. That is, the RAHT transformation is only effective for nodes with neighbor points. Nodes without neighbor points will be directly passed to the previous layer. In the above transformation process, g′ L,2x,y,z The weights (the number of non-empty child nodes in the node) corresponding to g′L, 2x+2, y, and z are w′ respectively. L,2x,y,z and w′L, 2x+1, y, z (abbreviated as w′0 and w′1), g′ L-1,x,y,z The weight is w′ L-1,x,y,z , then the general transformation formula is:

[0308] Where T w0,w1 is the transformation matrix:

[0309] The transformation matrix will be updated as the weights corresponding to each point change adaptively. The above process will be iterated and updated continuously according to the partitioning structure of the octree until the root node of the octree is reached.

[0310] Currently, G-PCC uses a block-based fast search algorithm to determine the nearest neighbor of each point in the reference frame during attribute inter-frame prediction. During this process, after performing a nearest neighbor search at each layer, G-PCC updates the set of stored inter-frame point Morton code indices, replacing the Morton code index corresponding to each point with the point's index. This algorithm updates the set's index from the point's Morton code to the point's index. Based on this algorithm, subsequent nearest neighbor searches may result in the nearest neighbor index being the point's index, not the Morton code index corresponding to the nearest neighbor point. Consequently, the nearest neighbor point found is often not the true nearest neighbor, ultimately reducing attribute encoding and decoding efficiency.

[0311] In other words, common attribute encoding and decoding methods have the problem of not being able to accurately find the best nearest neighbor point, which affects the prediction effect of attribute information and reduces encoding and decoding efficiency and performance.

[0312] In order to solve the above problems, in an embodiment of the present application, when the attributes of the point cloud are predicted inter-frame at the encoding / decoding end, it is ensured that when the nearest neighbor search is performed at each layer LOD, the index of the neighboring point found for each point can be guaranteed to be the index of the Morton code. The specific reason is that the existing G-PCC performs nearest neighbor search based on the Morton code throughout the entire process of nearest neighbor search for the attribute. Therefore, if it is guaranteed that the subsequent nearest neighbor search is based on the index of the Morton code point set, it can be guaranteed that the nearest neighbor is found when the attribute prediction is performed based on the inter-frame, thereby improving the attribute coding efficiency of the point cloud.

[0313] The embodiment of the present application provides a coding method, for a node to be processed in the Mth layer LOD in the current frame, the codec can determine the reference point in the prediction point set of the reference frame of the current frame based on the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of the point in the prediction point set of the reference frame is determined by the Morton code information of the point; the search range is determined based on the second Morton code information corresponding to the reference point, and the nearest neighbor node corresponding to the node to be processed is determined based on the search range; based on the reconstructed value of the nearest neighbor node, the attribute prediction value corresponding to the node to be processed is determined. It can be seen that in the embodiment of the present application, the codec needs to determine the reference point in the prediction point set of the reference frame during the inter-frame prediction of the attribute information, wherein the index of the point in the prediction point set of the reference frame is determined based on the Morton code information of the point, that is, the index of the point in the prediction point set of the reference frame is the Morton code of the point, and then the corresponding reference point can be found using the Morton code, so that in the subsequent nearest neighbor search process based on the reference point, it can also be ensured that the nearest neighbor node is obtained using the Morton code. That is to say, in an embodiment of the present application, the best nearest neighbor point can be accurately found by ensuring that the index of the point in the prediction point set of the reference frame is the Morton code of the point, thereby improving the prediction effect of the attribute information and improving the encoding and decoding efficiency and performance.

[0314] This can improve the prediction effect of attribute information and enhance encoding and decoding efficiency and performance.

[0315] The embodiments of the present application will be described in detail below with reference to the accompanying drawings.

[0316] In one embodiment of the present application, referring to FIG39 , a flowchart of a decoding method provided by an embodiment of the present application is shown. As shown in FIG39 , the method may include:

[0317] Step 101: For a node to be processed in the Mth layer LOD in the current frame, determine a reference point in a prediction point set of a reference frame of the current frame according to the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; and the index of a point in the prediction point set of the reference frame is determined by the Morton code information of the point.

[0318] In an embodiment of the present application, when performing inter-frame prediction of attribute information, for the node to be processed in the Mth layer LOD in the current frame, a reference point can be determined in the prediction point set of the reference frame of the current frame based on the first Morton code information corresponding to the node to be processed.

[0319] 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").

[0320] Accordingly, in an embodiment of the present application, the current frame may be a video frame to be decoded, and the reference frame may be an adjacent frame that has been decoded.

[0321] Furthermore, in an embodiment of the present application, for a node to be processed, it corresponds to a piece of geometric information and a piece of 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.

[0322] 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.

[0323] Furthermore, in an embodiment of the present application, the current frame may be first divided and processed, and then at least one LOD layer may be determined. That is, in the present application, after the division process is performed, the current frame may be divided into any number of LOD layers, and the present application does not limit the number of LOD layers in the current frame.

[0324] It should be noted that, in the embodiment of the present application, the nodes in the current frame may be divided and processed according to the Morton code information of the nodes in the current frame.

[0325] Furthermore, in an embodiment of the present application, the reference frame may be first divided into a partitioning process, and then at least one LOD layer may be determined. That is, in the present application, after the partitioning process is performed, the current frame may be divided into any number of LOD layers, and the present application does not limit the number of LOD layers in the current frame.

[0326] It should be noted that, in the embodiment of the present application, the nodes in the reference frame may be divided and processed according to the Morton code information of the nodes in the reference frame.

[0327] Furthermore, in an embodiment of the present application, although there is no restriction on the number of LOD layers after the current frame or the reference frame is divided, it is necessary to ensure that the number of LOD layers after the current frame is divided is the same as the number of LOD layers after the reference frame is divided.

[0328] For example, in some embodiments, the current frame may be divided into N LOD layers based on the Morton codes of the nodes in the current frame. That is, after the nodes in the current frame are divided according to the Morton code information of the nodes in the current frame, the N LOD layers corresponding to the current frame may be determined.

[0329] For example, in some embodiments, the reference frame may be divided into N LOD layers based on the Morton codes of the nodes in the reference frame. That is, after the nodes in the reference frame are divided according to the Morton code information of the nodes in the reference frame, the N LOD layers corresponding to the reference frame may be determined.

[0330] It should be noted that, in the embodiment of the present application, for the LOD layer of the current frame obtained after division, the LOD layer may include at least one point. Among them, when the LOD layer is decoded, the at least one point in the LOD layer can be used as a node to be decoded in the LOD layer, that is, a node to be processed.

[0331] It should be noted that, in the embodiment of the present application, M is an integer greater than 1, that is, the value of M can be 2, 3, 4..., that is, when performing inter-frame prediction processing on the attribute information of the current frame, for LOD layers other than the first LOD layer of the current frame, the reference point can be determined in the prediction point set of the corresponding reference frame based on the first Morton code information corresponding to the node to be processed in the layer.

[0332] It can be understood that in the embodiments of the present application, it is necessary to ensure that M is an integer greater than 1 and less than or equal to N.

[0333] It should be noted that, in the embodiments of the present application, the prediction point set of the reference frame may be a set used to store all or part of the points in the reference frame for predicting the current frame. In other words, the prediction point set of the reference frame may store all or only part of the points in the reference frame.

[0334] Exemplarily, in some embodiments, the prediction point set of the reference frame may be a node set of the reference frame, wherein the node set may include all nodes in the reference frame.

[0335] Exemplarily, in some embodiments, the prediction point set of the reference frame may be the first set corresponding to the Mth layer LOD of the reference frame, wherein the first set corresponding to the Mth layer LOD stores the input points of the Mth LOD layer of the reference frame in the LOD division process.

[0336] It can be understood that in the embodiments of the present application, there are three sets in the entire LOD division process, specifically including the first set I(M), the second set O(M), and the third set L(M), where M is the index of the LOD layer during LOD division, I(M) is the input point set during the current LOD layer division, and after LOD division, the O(M) set and the L(M) set are obtained. The O(M) set stores the sampling point set, and L(M) is the point set in the current LOD layer.

[0337] Furthermore, in an embodiment of the present application, the index of a point in the prediction point set of the reference frame may be determined by the Morton code information of the point, wherein the Morton code information of the point may be a Morton code corresponding to the point, and the Morton code may be obtained from the geometric coordinates of the point.

[0338] That is, in the embodiments of the present application, regardless of whether the prediction point set of the reference frame stores all points in the reference frame or stores some points in the reference frame, the indexes of the points in the prediction point set are determined by the Morton code information of the points. For example, the indexes of the points in the node set of the reference frame can be determined by the Morton code information of the points in the node set, or the indexes of the points in the first set corresponding to the Mth layer LOD of the reference frame can be determined by the Morton code information of the points in the first set.

[0339] It can be understood that in an embodiment of the present application, if the prediction point set of the reference frame is a node set of the reference frame, then the points can be sorted according to the Morton code information of the points in the node set, and finally the index of the point in the node set of the reference frame is obtained.

[0340] Exemplarily, in an embodiment of the present application, it is assumed that the node set of the reference frame includes 10 nodes P0, P1, P2, ..., P9, and the initial order of the 10 nodes is the initial point index, i.e., P0, P1, P2, ..., P9, and after arranging the 10 nodes in ascending order according to the Morton codes of the 10 nodes, the final order obtained is P4, P1, P3, P9, P2, P0, P6, P5, P7, P8, that is, the indexes of the points in the node set of the reference frame after the final sorting are P4, P1, P3, P9, P2, P0, P6, P5, P7, P8 from 0 to 9.

[0341] It can be understood that in an embodiment of the present application, if the prediction point set of the reference frame is the first set I(M) corresponding to the Mth layer LOD of the reference frame, then the input points of the Mth LOD layer can be sorted according to the Morton code information of the points in the first set I(M) corresponding to the Mth layer LOD, and finally the index of the points in the first set I(M) corresponding to the Mth layer LOD of the reference frame is obtained.

[0342] Exemplarily, in an embodiment of the present application, it is assumed that the I(M) of the reference frame includes six nodes P0, P1, P2, P3, P4, and P5, and the initial order of the six nodes is the initial point index, i.e., P0, P1, P2, P3, P4, and P5. After arranging the six nodes in ascending order according to the Morton codes, the final order obtained is P2, P1, P3, P5, P6, and P4, that is, the indexes of the points in the I(M) of the reference frame after the final sorting are P2, P1, P3, P5, P6, and P4 from 0 to 5, respectively.

[0343] Furthermore, in an embodiment of the present application, the first Morton code information corresponding to the node to be processed may be the Morton code of the node to be processed, wherein the first Morton code information may be obtained from the geometric coordinates of the node to be processed.

[0344] That is to say, in the embodiment of the present application, the geometric coordinates of the node to be processed may be determined first, and then the Morton code corresponding to the node to be processed, ie, the first Morton code information, may be determined according to the geometric coordinates of the node to be processed.

[0345] For example, in some embodiments, assuming that the geometric coordinates of the node to be processed are (x, y, z), each geometric component x, y, and z in the three-dimensional coordinates can be represented by a d-bit binary number, wherein the highest bit of the binary number corresponding to each geometric component is 1 and the lowest bit is d. Then, starting from the highest bit of the three geometric components x, y, and z, each bit of the binary number of each geometric component is arranged crosswise in sequence until the lowest bit, and finally the corresponding Morton code value can be determined, that is, the first Morton code information of the node to be processed.

[0346] It can be understood that in an embodiment of the present application, since the prediction point set of the reference frame can be the node set of the reference frame or the first set corresponding to the Mth layer LOD of the reference frame, when determining the reference point of the node to be processed in the Mth layer LOD in the current frame, you can choose to search for the reference point in the node set of the reference frame based on the first Morton code information of the node to be processed, or you can choose to search for the reference point in the first set corresponding to the Mth layer LOD of the reference frame based on the first Morton code information of the node to be processed.

[0347] Exemplarily, in some embodiments, when determining a reference point in a set of prediction points of a reference frame of a current frame based on the first Morton code information corresponding to the node to be processed, the reference point corresponding to the node to be processed can be determined in a first set corresponding to the Mth layer LOD of the reference frame based on the first Morton code information.

[0348] Exemplarily, in some embodiments, when determining a reference point in a prediction point set of a reference frame of a current frame based on the first Morton code information corresponding to the node to be processed, the reference point corresponding to the node to be processed can be determined in a node set of the reference frame based on the first Morton code information.

[0349] It can be understood that in the embodiment of the present application, whether it is a current frame or a reference frame, in the entire LOD division process, the Mth LOD layer can include three sets: a first set I(M), a second set O(M), and a third set L(M). Among them, the first set I(M) is the input point set when the Mth LOD layer is divided, the second set O(M) stores the sampling point set of the Mth LOD layer, and L(M) is the point set in the Mth LOD layer.

[0350] Exemplarily, in some embodiments, the first set corresponding to the Mth layer LOD of the current frame (i.e., I(M) of the current frame) is used to store the input points corresponding to the Mth layer LOD of the current frame, and the first set corresponding to the Mth layer LOD of the reference frame (i.e., I(M) of the reference frame) is used to store the input points corresponding to the Mth layer LOD of the reference frame.

[0351] Exemplarily, in some embodiments, the second set corresponding to the Mth layer LOD of the current frame (i.e., O(M) of the current frame) is used to store the sampling points corresponding to the Mth layer LOD of the current frame, and the second set corresponding to the Mth layer LOD of the reference frame (i.e., O(M) of the reference frame) is used to store the sampling points corresponding to the Mth layer LOD of the reference frame.

[0352] Exemplarily, in some embodiments, the third set corresponding to the M-th layer LOD of the current frame (i.e., L(M) of the current frame) is used to store other points in the M-th layer LOD of the current frame outside the second set, and the third set corresponding to the M-th layer LOD of the reference frame (i.e., L(M) of the reference frame) is used to store other points in the M-th layer LOD of the reference frame outside the second set.

[0353] Furthermore, in an embodiment of the present application, when LOD division is performed on points in a reference frame, the LOD division of the reference frame at the Mth level is performed based on the first set corresponding to the LOD of the reference frame at the Mth level, and a second set corresponding to the LOD of the reference frame at the Mth level and a third set corresponding to the LOD of the reference frame at the Mth level can be determined. In other words, after LOD division is performed on the first set I(M) of the reference frame, a second set O(M) of the reference frame and a third set L(M) of the reference frame can be determined.

[0354] Accordingly, in an embodiment of the present application, when LOD division is performed on points in the current frame, the M-th layer LOD of the current frame is divided based on the first set corresponding to the M-th layer LOD of the current frame, and the second set corresponding to the M-th layer LOD of the current frame and the third set corresponding to the M-th layer LOD of the current frame can be determined. In other words, after LOD division is performed on the first set I(M) of the current frame, the second set O(M) of the current frame and the third set L(M) of the current frame can be determined.

[0355] It can be understood that in the embodiments of the present application, whether it is the current frame or the reference frame, since the second set O(M) and the third set L(M) are obtained after the first set I(M) is divided by LOD, and the second set O(M) stores the sampling points, the third set L(M) can store the unsampled points of the Mth LOD layer.

[0356] Exemplarily, in some embodiments, the nodes to be processed in the M-th layer LOD in the current frame may be points in the third set corresponding to the M-th layer LOD of the current frame.

[0357] Furthermore, in an embodiment of the present application, when performing LOD division on points in a reference frame, after performing the division processing of the Mth layer LOD of the reference frame, the first set corresponding to the M+1th layer LOD of the reference frame can be updated according to the second set corresponding to the Mth layer LOD of the reference frame.

[0358] It should be noted that, in an embodiment of the present application, after completing the update of the first set corresponding to the M+1th layer LOD of the reference frame, the index of the point in the first set corresponding to the M+1th layer LOD of the reference frame is also determined by the Morton code information of the point in the first set.

[0359] It can be understood that in the embodiment of the present application, the indexes of the points in the first set, the second set and the third set corresponding to each layer LOD of the reference frame can all be determined by the Morton code information of the points in each set.

[0360] Furthermore, in an embodiment of the present application, when performing LOD division on points in the current frame, after performing the division processing of the Mth layer LOD of the current frame, the first set corresponding to the M+1th layer LOD of the current frame can be updated according to the second set corresponding to the Mth layer LOD of the current frame.

[0361] It should be noted that, in an embodiment of the present application, after completing the update of the first set corresponding to the M+1th layer LOD of the current frame, the index of the point in the first set corresponding to the M+1th layer LOD of the current frame is also determined by the Morton code information of the point in the first set.

[0362] It can be understood that in the embodiment of the present application, the indexes of the points in the first set, the second set and the third set corresponding to each layer LOD of the current frame can all be determined by the Morton code information of the points in each set.

[0363] That is to say, in an embodiment of the present application, whether it is the current frame or the reference frame, in the entire LOD division process, after completing the division of the Mth layer LOD, the second set O(M) corresponding to the Mth layer LOD can be used to update the first set I(M+1) corresponding to the M+1th layer LOD.

[0364] For example, in some embodiments, when the second set O(M) corresponding to the Mth layer LOD is used to update the first set I(M+1) corresponding to the M+1th layer LOD, the points in the second set O(M) corresponding to the Mth layer LOD can be added to the first set I(M+1) corresponding to the M+1th layer LOD.

[0365] It can be understood that in the embodiments of the present application, after using the second set O(M) corresponding to the Mth layer LOD to update the first set I(M+1) corresponding to the M+1th layer LOD, the points in the first set I(M+1) corresponding to the M+1th layer LOD still need to be sorted according to the Morton code of the points to ensure that the index of the points in the first set I(M+1) corresponding to the M+1th layer LOD is also determined by the Morton code information of the points in the first set.

[0366] Furthermore, in an embodiment of the present application, when performing LOD division on points in a reference frame, before performing the division process of the Mth level LOD of the reference frame, the third set corresponding to the Mth level LOD of the reference frame can be initialized based on the third set corresponding to the M-1th level LOD of the reference frame. At the same time, the second set corresponding to the Mth level LOD of the reference frame can also be initialized to an empty set.

[0367] Accordingly, in an embodiment of the present application, when performing LOD division on points in the current frame, before performing the division process of the Mth level LOD of the current frame, the third set corresponding to the current M+1th level LOD can be initialized based on the third set corresponding to the M-1th level LOD of the current frame. At the same time, the second set corresponding to the Mth level LOD of the current frame can also be initialized to an empty set.

[0368] That is to say, in an embodiment of the present application, whether it is the current frame or the reference frame, in the entire LOD division process, after completing the division of the M-1th layer LOD and before executing the division processing of the Mth layer LOD, the third set L(M-1) corresponding to the M-1th layer LOD can be used to initialize the third set L(M) corresponding to the Mth layer LOD, and the second set corresponding to the Mth layer LOD can also be initialized to the empty set {}.

[0369] For example, in some embodiments, when the third set L(M-1) corresponding to the M-1 layer LOD is used to initialize the third set L(M) corresponding to the M-1 layer LOD, the points in the third set L(M-1) corresponding to the M-1 layer LOD can be added to the third set L(M) corresponding to the M-1 layer LOD.

[0370] Furthermore, in an embodiment of the present application, when performing LOD division on points in a reference frame, before performing the division processing of the first layer LOD of the reference frame, the third set corresponding to the first layer LOD of the reference frame can be initialized to an empty set; after performing the division processing of the first layer LOD of the reference frame, the first set corresponding to the second layer LOD of the reference frame can be updated according to the second set corresponding to the first layer LOD of the reference frame.

[0371] Accordingly, in an embodiment of the present application, when performing LOD division on points in the current frame, before executing the division processing of the first layer LOD of the current frame, the third set corresponding to the first layer LOD of the current frame can be initialized to an empty set; after executing the division processing of the first layer LOD of the current frame, the first set corresponding to the second layer LOD of the current frame can be updated according to the second set corresponding to the first layer LOD of the current frame.

[0372] That is to say, in an embodiment of the present application, whether it is a current frame or a reference frame, in the entire LOD division process, before performing the division processing of the first layer LOD, the third set L(1) corresponding to the first layer LOD can be initialized to an empty set {}; at the same time, after completing the division processing of the first layer LOD, the first set I(2) corresponding to the second layer LOD can be updated according to the second set O(1) corresponding to the first layer LOD.

[0373] Exemplarily, in some embodiments, whether it is the current frame or the reference frame, in the entire LOD division process, each set can be initialized first, where before dividing the first layer, for the third set L(1) of the first layer LOD, L(1) can be initialized to the empty set {}; before dividing the Mth layer, that is, if M is greater than 1, for the third set L(M) of the Mth layer LOD, L(M) can be initialized to L(M-1), and at the same time, for the second set O(M) of the Mth layer LOD, O(M) can be initialized to the empty set {}.

[0374] Exemplarily, in some embodiments, whether it is a current frame or a reference frame, in the entire LOD division process, when each layer of LOD is divided using the LOD division algorithm, the sampling points can be stored in O(M), and the remaining points can be divided into L(M).

[0375] Exemplarily, in some embodiments, whether it is the current frame or the reference frame, in the entire LOD division process, after completing the division of the first layer LOD, the second set O(1) corresponding to the first layer LOD can be used to update the first set I(2) corresponding to the second layer LOD. At the same time, after completing the division of the Mth layer LOD, the second set O(M) corresponding to the Mth layer LOD can be used to update the first set I(M+1) corresponding to the M+1th layer LOD.

[0376] It should be noted that in the embodiments of the present application, whether it is the current frame or the reference frame, the entire LOD division process is performed based on the Morton code of the point, so O(M), L(M) and I(M) store the index of the point, which is determined by the Morton code corresponding to the point in the set.

[0377] It can be understood that in the embodiment of the present application, since the first Morton code information of the node to be processed is used to determine the reference point in the prediction point set of the reference frame during the reference point selection process, it can be seen that the key point of the reference point search is the Morton code information of the point. Therefore, it is necessary to ensure that the index of the point in the prediction point set is determined by the Morton code information of the point, so that the best reference point can be determined, thereby improving the accuracy of the selection of the nearest neighbor node.

[0378] For example, in some embodiments, assuming that the prediction point set of the reference frame is the first set I(M) corresponding to the Mth layer LOD of the reference frame, then whether the set I(M) of the reference frame is updated or initialized, it is necessary to ensure that the index of the point in the set I(M) after the update or initialization is determined by the Morton code information of the point.

[0379] Furthermore, in an embodiment of the present application, when selecting a reference point, for a node to be processed in the first layer LOD in the current frame, the reference point can be directly determined in the first layer LOD of the reference frame according to the first Morton code information corresponding to the node to be processed.

[0380] It can be understood that in an embodiment of the present application, for the nodes to be processed in the first layer LOD of the current frame, the corresponding first layer LOD of the reference frame will not perform the update processing of the set in the reference frame when dividing, so the index of the set point in the first layer LOD itself is determined by the Morton code corresponding to the point in the set.

[0381] Furthermore, in an embodiment of the present application, when determining a reference point in a prediction point set of a reference frame of a current frame based on the first Morton code information corresponding to the node to be processed, it is possible to select points in the prediction point set that are traversed, and then determine a point whose first Morton code information is greater than or equal to the first Morton code information as a reference point corresponding to the node to be processed.

[0382] Exemplarily, in some embodiments, when determining a reference point in a node set of a reference frame of a current frame based on the first Morton code information corresponding to the node to be processed, it is possible to select points in the node set of the reference frame that are traversed, and then determine a point whose first Morton code information is greater than or equal to the first Morton code information as a reference point corresponding to the node to be processed.

[0383] Exemplarily, in some embodiments, when determining a reference point in the first set corresponding to the Mth layer LOD of the reference frame of the current frame based on the first Morton code information corresponding to the node to be processed, it is possible to choose to traverse the points in the first set corresponding to the Mth layer LOD, and then determine the point whose first Morton code information is greater than or equal to the first Morton code information as the reference point corresponding to the node to be processed.

[0384] It can be understood that, in the embodiment of the present application, since the index of a point in the prediction point set is determined by the Morton code information of the point, the Morton code information corresponding to the reference point is the index corresponding to the reference point in the prediction point set.

[0385] That is to say, in the embodiments of the present application, whether it is the node set of the current frame or the first set corresponding to the M-th layer LOD of the current frame, since the index of the point in the prediction point set is determined by the Morton code corresponding to the point in the set, that is, the index of the point in the set is the Morton code of the point, when searching for the reference point, the points in the prediction point set can be traversed in sequence according to the Morton code of the node to be processed, and the point whose first Morton code (index) is greater than or equal to the Morton code of the node to be processed is determined as the corresponding reference point.

[0386] Exemplarily, in some embodiments, when performing attribute inter-frame prediction, the geometric coordinates of the node to be processed are first used to obtain the first Morton code information corresponding to the node to be processed, wherein it is assumed that the first Morton code information is i, and then based on i, the first reference point greater than or equal to the first Morton code information of the node to be processed is found in the prediction point set of the reference frame, wherein the Morton code of the reference point, that is, the index of the reference point in the prediction point set is j, and j is the index of the first point greater than or equal to i.

[0387] Step 102: Determine a search range based on the second Morton code information corresponding to the reference point, and determine the nearest neighbor node corresponding to the node to be processed according to the search range.

[0388] In an embodiment of the present application, for the node to be processed in the Mth layer LOD in the current frame, after determining the reference point in the prediction point set of the reference frame of the current frame according to the first Morton code information corresponding to the node to be processed, the search range corresponding to the nearest neighbor search of the node to be processed can be further determined based on the second Morton code information corresponding to the reference point, and then the nearest neighbor node corresponding to the node to be processed can be further determined according to the search range.

[0389] It can be understood that in the embodiment of the present application, since the index of a point in the prediction point set is determined by the Morton code information of the point, the second Morton code information corresponding to the reference point is the index corresponding to the reference point in the prediction point set.

[0390] It should be noted that, in the embodiment of the present application, when determining the search range, it is possible to first determine the search step length; and then further determine the search range based on the second Morton code information and the search step length.

[0391] Exemplarily, in some embodiments, assuming that the search step is searchRange, the second Morton code information corresponding to the reference point is j, that is, the index of the reference point is j, then, based on the second Morton code information and the search step, the corresponding search range can be determined to be [j-searchRange, j+searchRange], and then the nearest neighbor search can be selected within the search range of [j-searchRange, j+searchRange].

[0392] Exemplarily, in some embodiments, Figure 40 is a schematic diagram of the search area in an embodiment of the present application. As shown in Figure 40, assuming that the first Morton code information corresponding to the node to be processed is i, and the second Morton code information corresponding to the reference point is j, that is, the index of the reference point is j, and the search step is sr, then, according to the second Morton code information and the search step, the corresponding search range can be determined to be [j-sr, j+sr], and then the nearest neighbor search can be selected within the search range of [j-sr, j+sr].

[0393] For example, in some embodiments, when performing the nearest neighbor search, a block-based neighborhood search may be selected. First, the points in the reference frame may be divided into P (P=3) layers according to the Morton code. The specific division algorithm is as follows:

[0394] First layer: Assume that the number of points in the reference frame is numPoints. First, the points in the reference frame are divided into Q (Q = 2 5 =32) points are divided into one block;

[0395] Second layer: Based on the first layer, the blocks of the first layer are also processed in the order of Morton code for every Q (Q=2 5 =32) blocks are divided into one block;

[0396] The third layer: Based on the second layer, the blocks of the first layer are also processed in the order of the Morton code for every Q (Q=2 5 =32) blocks are divided into one block.

[0397] Assuming the Morton code of the node to be processed is i, first find the first point in the reference frame that is greater than or equal to the Morton code of the node to be processed, with index j. Then calculate the block index of the reference point based on j. The specific calculation method is as follows:

[0398] First layer: BucketSize_0 = 2 5 =32

[0399] Second layer: BucketSize_1 = 2 5 =32×BucketSize_0=1024

[0400] Third layer: BucketSize_2 = 2 5 =32×BucketSize_1=32768.

[0401] The search range determined by the index of the reference point (Morton code) is [j-searchRange, j+searchRange]. The starting index of the third layer is calculated using j-searchRange, and the ending index of the third layer is calculated using j+searchRange. First, in the blocks of the third layer, it is determined whether some blocks in the second layer need to be searched for the nearest neighbor. Then, for each block in the first layer, it is determined whether a search is needed. If some blocks in the first layer need to be searched for the nearest neighbor, the midpoints of some blocks in the first layer will be judged point by point to update the nearest neighbor.

[0402] For the algorithm based on index calculation block, assuming that the Morton code index corresponding to the current point is index, then the index of the corresponding third-layer block is idx_2 = index / BucketSize_2. After obtaining the block index idx_2 of the third layer, idx_2 can be used to obtain the starting index startIdx1 = idx_2 × BucketSize_1 and the ending index endIdx = idx_2 × BucketSize_1 + BucketSize_1-1 of the block corresponding to the current block in the second layer. Similarly, the index of the first-layer block can be obtained based on the index of the second-layer block.

[0403] When performing a block-based nearest neighbor search, we first determine whether the current block needs to be searched for the nearest neighbor. This is called filtering the nearest neighbor search for the block. Each spatial block can be obtained through two variables: minPos and maxPos. MinPos represents the minimum value of the block, and maxPos represents the maximum value of the block.

[0404] Assume that the distance to the farthest point among the neighbors to be found is Dist, the coordinates of the node to be processed are (x, y, z), and the current block is represented by (minPos, maxPos), where minPos is the minimum value of the bounding box in three dimensions and maxPos is the maximum value of the bounding box in three dimensions. The distance D between the current point and the bounding box is calculated as follows:

[0405] int dx=int(std::max(std::max(minPos[0]-point[0],0),point[0]-maxPos[0])); int dy=int(std::max(std::max(minPos[1]-point[1],0),point[1]-maxPos[1])); int dz=int(std::max(std::max(minPos[2]-point[2],0),point[2]-maxPos[2])); D=dx+dy+dz;

[0406] When D is less than or equal to Dist, the points in the current block will be traversed.

[0407] It can be understood that in an embodiment of the present application, for the node to be processed in the first layer LOD in the current frame, after determining the reference point, the search range corresponding to the nearest neighbor search of the node to be processed is further determined based on the second Morton code information corresponding to the reference point, and the nearest neighbor node corresponding to the node to be processed is determined according to the search range.

[0408] Furthermore, in an embodiment of the present application, after performing a nearest neighbor search based on the search range, one or more nearest neighbor nodes corresponding to the node to be processed can be determined. That is, the number of nearest neighbor nodes after the nearest neighbor search can be any number, and this application does not impose any specific restrictions.

[0409] Step 103: Determine the attribute prediction value corresponding to the node to be processed based on the reconstructed value of the nearest neighbor node.

[0410] In an embodiment of the present application, after determining the search range based on the second Morton code information corresponding to the reference point and determining the nearest neighbor node corresponding to the node to be processed according to the search range, the attribute prediction value corresponding to the node to be processed can be further determined based on the reconstructed value of the nearest neighbor node.

[0411] It should be noted that in an embodiment of the present application, after performing a nearest neighbor search based on the search range, since any number of nearest neighbor nodes corresponding to the node to be processed can be determined, when using the reconstructed value of the nearest neighbor node to determine the attribute prediction value corresponding to the node to be processed, different processing methods can be used for prediction processing.

[0412] For example, in some embodiments, if a nearest neighbor node is obtained through the search, the reconstructed value of the nearest neighbor node may be determined as the attribute prediction value corresponding to the node to be processed.

[0413] Exemplarily, in some embodiments, if the search obtains two or more nearest neighbor nodes, the reconstructed values ​​of multiple nearest neighbor nodes can be weighted predicted, and the result after weighted prediction can be determined as the attribute prediction value corresponding to the node to be processed.

[0414] Exemplarily, in some embodiments, if the search obtains two or more nearest neighbor nodes, the target nearest neighbor node can be first determined among multiple nearest neighbor nodes, and then the reconstructed value of the target nearest neighbor node can be determined as the attribute prediction value corresponding to the node to be processed.

[0415] That is to say, in an embodiment of the present application, the target nearest neighbor node can be determined among the multiple nearest neighbor points searched, and then the attributes of the target nearest neighbor node can be used for weighted prediction or the attributes of a single nearest neighbor point can be selected for prediction, and finally the predicted value of the attribute information of the node to be processed can be obtained.

[0416] For example, in some embodiments, the following formula may be used to determine the attribute prediction value of the node to be processed (current point):

[0417] Among them, K represents the number of predicted points in the nearest neighbor point set of point i, Pi represents the sum of the K nearest neighbor points of point i, Dm represents the spatial geometric distance from the nearest neighbor point m to the current point i, Attrm represents the attribute value after reconstruction of the nearest neighbor point m, Attr i ′ represents the attribute prediction value of the current point i, and the number of points K is a preset value.

[0418] Furthermore, in an embodiment of the present application, the code stream is decoded to determine the prediction residual corresponding to the node to be processed; and then the attribute reconstruction value corresponding to the node to be processed is determined based on the prediction residual and the attribute prediction value.

[0419] It is understood that in the embodiments of the present application, after determining the attribute prediction value corresponding to the node to be processed, the attribute information of the node to be processed can be reconstructed using the attribute prediction value. The attribute reconstruction value corresponding to the node to be processed can be determined based on the prediction residual and the attribute prediction value corresponding to the node to be processed obtained from the decoded bitstream.

[0420] For example, in some embodiments, the prediction residual and the attribute prediction value corresponding to the node to be processed may be summed up to obtain the attribute reconstruction value corresponding to the node to be processed.

[0421] In summary, the encoding and decoding method proposed in the embodiment of the present application, when performing attribute nearest neighbor search, after performing the nearest neighbor search on each layer, although the set storing each inter-frame prediction point also needs to be updated, in the set storing each inter-frame point (prediction point set, such as the node set of the reference frame or the first set of the Mth layer LOD), the index corresponding to each point is guaranteed to be the index of the Morton code of the inter-frame prediction point, rather than the initial index of the point. This ensures that when the nearest neighbor search is performed subsequently, each point can find the nearest neighbor in space, thereby effectively removing the redundancy in the time domain between adjacent frames and improving the efficiency of attribute coding.

[0422] Furthermore, the embodiment of the present application ensures that the index of the point stored in each inter-frame prediction point set is the point index of the Morton code when performing attribute inter-frame prediction, that is, the index of the point is determined by the Morton code of the point, thereby ensuring that when performing attribute inter-frame prediction, the subsequent nearest neighbor search can find the nearest neighbor within a certain search range between frames when performing the nearest neighbor search based on the Morton code, thereby improving the encoding efficiency of the point cloud attributes.

[0423] For example, in some embodiments, BD-rate is used as an indicator to measure the encoding performance of an algorithm. The test results are shown in the table. BD-rate is an objective metric used in video compression, used to compare the rate-distortion performance or compression efficiency of two different video codecs or different settings of the same video codec within a range of bitrate or quality values. Because BD-rate can represent the rate increase of an optimized algorithm compared to the original algorithm while maintaining the same objective video quality, a negative BD-rate value can indicate that the encoding performance of the optimized algorithm has been improved.

[0424] For example, as shown in Table 2, under the condition of C1_ai, for the test conditions of lossless geometric position and lossy attributes, the coding performance can be improved by -9.8%, that is, the coding and decoding method proposed in the embodiment of the present application effectively improves the coding and decoding performance.

[0425] Table 2

[0426] For example, as shown in Table 2, under the condition of C2_ai, for the test conditions of lossless geometric position and lossy attributes, the coding performance can be improved by -12.4%, that is, the coding and decoding method proposed in the embodiment of the present application effectively improves the coding and decoding performance.

[0427] Table 3

[0428] It can be seen that in the encoding and decoding method proposed in the embodiment of the present application, when the encoding and decoding ends perform inter-frame prediction on the attributes of the point cloud, since the entire process of performing nearest neighbor search on the attributes is based on the nearest neighbor search of the Morton code, it is necessary to ensure that the index of the neighboring point found for each point is the index of the Morton code when performing nearest neighbor search at each layer LOD, and further ensure that the nearest neighbor search index based on the subsequent nearest neighbor search process is the index of the Morton code point set, so that when performing attribute prediction between frames, the nearest neighbor can be accurately found, thereby improving the attribute encoding and decoding efficiency of the point cloud.

[0429] The embodiment of the present application provides a decoding method, for a node to be processed in the Mth layer LOD in the current frame, the decoder can determine the reference point in the prediction point set of the reference frame of the current frame based on the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of the point in the prediction point set of the reference frame is determined by the Morton code information of the point; the search range is determined based on the second Morton code information corresponding to the reference point, and the nearest neighbor node corresponding to the node to be processed is determined based on the search range; based on the reconstructed value of the nearest neighbor node, the attribute prediction value corresponding to the node to be processed is determined. It can be seen that in the embodiment of the present application, the codec needs to determine the reference point in the prediction point set of the reference frame during the inter-frame prediction of the attribute information, wherein the index of the point in the prediction point set of the reference frame is determined based on the Morton code information of the point, that is, the index of the point in the prediction point set of the reference frame is the Morton code of the point, and then the corresponding reference point can be found using the Morton code, so that in the subsequent nearest neighbor search process based on the reference point, it can also be ensured that the nearest neighbor node is obtained using the Morton code. That is to say, in an embodiment of the present application, the best nearest neighbor point can be accurately found by ensuring that the index of the point in the prediction point set of the reference frame is the Morton code of the point, thereby improving the prediction effect of the attribute information and improving the encoding and decoding efficiency and performance.

[0430] In one embodiment of the present application, referring to FIG41 , a schematic flow chart of an encoding method provided by an embodiment of the present application is shown. As shown in FIG41 , the method may include:

[0431] Step 201: For a node to be processed in the Mth layer LOD in the current frame, determine a reference point in a prediction point set of a reference frame of the current frame according to the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; and the index of a point in the prediction point set of the reference frame is determined by the Morton code information of the point.

[0432] In an embodiment of the present application, when performing inter-frame prediction of attribute information, for the node to be processed in the Mth layer LOD in the current frame, a reference point can be determined in the prediction point set of the reference frame of the current frame based on the first Morton code information corresponding to the node to be processed.

[0433] 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).

[0434] Accordingly, in an embodiment of the present application, the current frame may be a video frame to be encoded, and the reference frame may be an adjacent frame that has been encoded.

[0435] Furthermore, in an embodiment of the present application, for a node to be processed, it corresponds to a piece of geometric information and a piece of 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.

[0436] 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.

[0437] Furthermore, in an embodiment of the present application, the current frame may be first divided and processed, and then at least one LOD layer may be determined. That is, in the present application, after the division process is performed, the current frame may be divided into any number of LOD layers, and the present application does not limit the number of LOD layers in the current frame.

[0438] It should be noted that, in the embodiment of the present application, the nodes in the current frame may be divided and processed according to the Morton code information of the nodes in the current frame.

[0439] Furthermore, in an embodiment of the present application, the reference frame may be first divided into a partitioning process, and then at least one LOD layer may be determined. That is, in the present application, after the partitioning process is performed, the current frame may be divided into any number of LOD layers, and the present application does not limit the number of LOD layers in the current frame.

[0440] It should be noted that, in the embodiment of the present application, the nodes in the reference frame may be divided and processed according to the Morton code information of the nodes in the reference frame.

[0441] Furthermore, in an embodiment of the present application, although there is no restriction on the number of LOD layers after the current frame or the reference frame is divided, it is necessary to ensure that the number of LOD layers after the current frame is divided is the same as the number of LOD layers after the reference frame is divided.

[0442] For example, in some embodiments, the current frame may be divided into N LOD layers based on the Morton codes of the nodes in the current frame. That is, after the nodes in the current frame are divided according to the Morton code information of the nodes in the current frame, the N LOD layers corresponding to the current frame may be determined.

[0443] For example, in some embodiments, the reference frame may be divided into N LOD layers based on the Morton codes of the nodes in the reference frame. That is, after the nodes in the reference frame are divided according to the Morton code information of the nodes in the reference frame, the N LOD layers corresponding to the reference frame may be determined.

[0444] It should be noted that, in the embodiment of the present application, for the LOD layer of the current frame obtained after division, the LOD layer may include at least one point. Among them, when encoding the LOD layer, the at least one point in the LOD layer can be used as a node to be encoded in the LOD layer, that is, a node to be processed.

[0445] It should be noted that, in the embodiment of the present application, M is an integer greater than 1, that is, the value of M can be 2, 3, 4..., that is, when performing inter-frame prediction processing on the attribute information of the current frame, for LOD layers other than the first LOD layer of the current frame, the reference point can be determined in the prediction point set of the corresponding reference frame based on the first Morton code information corresponding to the node to be processed in the layer.

[0446] It can be understood that in the embodiments of the present application, it is necessary to ensure that M is an integer greater than 1 and less than or equal to N.

[0447] It should be noted that, in the embodiments of the present application, the prediction point set of the reference frame may be a set used to store all or part of the points in the reference frame for predicting the current frame. In other words, the prediction point set of the reference frame may store all or only part of the points in the reference frame.

[0448] Exemplarily, in some embodiments, the prediction point set of the reference frame may be a node set of the reference frame, wherein the node set may include all nodes in the reference frame.

[0449] Exemplarily, in some embodiments, the prediction point set of the reference frame may be the first set corresponding to the Mth layer LOD of the reference frame, wherein the first set corresponding to the Mth layer LOD stores the input points of the Mth LOD layer of the reference frame in the LOD division process.

[0450] It can be understood that in the embodiments of the present application, there are three sets in the entire LOD division process, specifically including the first set I(M), the second set O(M), and the third set L(M), where M is the index of the LOD layer during LOD division, I(M) is the input point set during the current LOD layer division, and after LOD division, the O(M) set and the L(M) set are obtained. The O(M) set stores the sampling point set, and L(M) is the point set in the current LOD layer.

[0451] Furthermore, in an embodiment of the present application, the index of a point in the prediction point set of the reference frame may be determined by the Morton code information of the point, wherein the Morton code information of the point may be a Morton code corresponding to the point, and the Morton code may be obtained from the geometric coordinates of the point.

[0452] That is, in the embodiments of the present application, regardless of whether the prediction point set of the reference frame stores all points in the reference frame or stores some points in the reference frame, the indexes of the points in the prediction point set are determined by the Morton code information of the points. For example, the indexes of the points in the node set of the reference frame can be determined by the Morton code information of the points in the node set, or the indexes of the points in the first set corresponding to the Mth layer LOD of the reference frame can be determined by the Morton code information of the points in the first set.

[0453] It can be understood that in an embodiment of the present application, if the prediction point set of the reference frame is a node set of the reference frame, then the points can be sorted according to the Morton code information of the points in the node set, and finally the index of the point in the node set of the reference frame is obtained.

[0454] Exemplarily, in an embodiment of the present application, it is assumed that the node set of the reference frame includes 10 nodes P0, P1, P2, ..., P9, and the initial order of the 10 nodes is the initial point index, i.e., P0, P1, P2, ..., P9, and after arranging the 10 nodes in ascending order according to the Morton codes of the 10 nodes, the final order obtained is P4, P1, P3, P9, P2, P0, P6, P5, P7, P8, that is, the indexes of the points in the node set of the reference frame after the final sorting are P4, P1, P3, P9, P2, P0, P6, P5, P7, P8 from 0 to 9.

[0455] It can be understood that in an embodiment of the present application, if the prediction point set of the reference frame is the first set I(M) corresponding to the Mth layer LOD of the reference frame, then the input points of the Mth LOD layer can be sorted according to the Morton code information of the points in the first set I(M) corresponding to the Mth layer LOD, and finally the index of the points in the first set I(M) corresponding to the Mth layer LOD of the reference frame is obtained.

[0456] Exemplarily, in an embodiment of the present application, it is assumed that the I(M) of the reference frame includes six nodes P0, P1, P2, P3, P4, and P5, and the initial order of the six nodes is the initial point index, i.e., P0, P1, P2, P3, P4, and P5. After arranging the six nodes in ascending order according to the Morton codes, the final order obtained is P2, P1, P3, P5, P6, and P4, that is, the indexes of the points in the I(M) of the reference frame after the final sorting are P2, P1, P3, P5, P6, and P4 from 0 to 5, respectively.

[0457] Furthermore, in an embodiment of the present application, the first Morton code information corresponding to the node to be processed may be the Morton code of the node to be processed, wherein the first Morton code information may be obtained from the geometric coordinates of the node to be processed.

[0458] That is to say, in the embodiment of the present application, the geometric coordinates of the node to be processed may be determined first, and then the Morton code corresponding to the node to be processed, ie, the first Morton code information, may be determined according to the geometric coordinates of the node to be processed.

[0459] For example, in some embodiments, assuming that the geometric coordinates of the node to be processed are (x, y, z), each geometric component x, y, and z in the three-dimensional coordinates can be represented by a d-bit binary number, wherein the highest bit of the binary number corresponding to each geometric component is 1 and the lowest bit is d. Then, starting from the highest bit of the three geometric components x, y, and z, each bit of the binary number of each geometric component is arranged crosswise in sequence until the lowest bit, and finally the corresponding Morton code value can be determined, that is, the first Morton code information of the node to be processed.

[0460] It can be understood that in an embodiment of the present application, since the prediction point set of the reference frame can be the node set of the reference frame or the first set corresponding to the Mth layer LOD of the reference frame, when determining the reference point of the node to be processed in the Mth layer LOD in the current frame, you can choose to search for the reference point in the node set of the reference frame based on the first Morton code information of the node to be processed, or you can choose to search for the reference point in the first set corresponding to the Mth layer LOD of the reference frame based on the first Morton code information of the node to be processed.

[0461] Exemplarily, in some embodiments, when determining a reference point in a set of prediction points of a reference frame of a current frame based on the first Morton code information corresponding to the node to be processed, the reference point corresponding to the node to be processed can be determined in a first set corresponding to the Mth layer LOD of the reference frame based on the first Morton code information.

[0462] Exemplarily, in some embodiments, when determining a reference point in a prediction point set of a reference frame of a current frame based on the first Morton code information corresponding to the node to be processed, the reference point corresponding to the node to be processed can be determined in a node set of the reference frame based on the first Morton code information.

[0463] It can be understood that in the embodiment of the present application, whether it is a current frame or a reference frame, in the entire LOD division process, the Mth LOD layer can include three sets: a first set I(M), a second set O(M), and a third set L(M). Among them, the first set I(M) is the input point set when the Mth LOD layer is divided, the second set O(M) stores the sampling point set of the Mth LOD layer, and L(M) is the point set in the Mth LOD layer.

[0464] Exemplarily, in some embodiments, the first set corresponding to the Mth layer LOD of the current frame (i.e., I(M) of the current frame) is used to store the input points corresponding to the Mth layer LOD of the current frame, and the first set corresponding to the Mth layer LOD of the reference frame (i.e., I(M) of the reference frame) is used to store the input points corresponding to the Mth layer LOD of the reference frame.

[0465] Exemplarily, in some embodiments, the second set corresponding to the Mth layer LOD of the current frame (i.e., O(M) of the current frame) is used to store the sampling points corresponding to the Mth layer LOD of the current frame, and the second set corresponding to the Mth layer LOD of the reference frame (i.e., O(M) of the reference frame) is used to store the sampling points corresponding to the Mth layer LOD of the reference frame.

[0466] Exemplarily, in some embodiments, the third set corresponding to the M-th layer LOD of the current frame (i.e., L(M) of the current frame) is used to store other points in the M-th layer LOD of the current frame outside the second set, and the third set corresponding to the M-th layer LOD of the reference frame (i.e., L(M) of the reference frame) is used to store other points in the M-th layer LOD of the reference frame outside the second set.

[0467] Furthermore, in an embodiment of the present application, when LOD division is performed on points in a reference frame, the LOD division of the reference frame at the Mth level is performed based on the first set corresponding to the LOD of the reference frame at the Mth level, and a second set corresponding to the LOD of the reference frame at the Mth level and a third set corresponding to the LOD of the reference frame at the Mth level can be determined. In other words, after LOD division is performed on the first set I(M) of the reference frame, a second set O(M) of the reference frame and a third set L(M) of the reference frame can be determined.

[0468] Accordingly, in an embodiment of the present application, when LOD division is performed on points in the current frame, the M-th layer LOD of the current frame is divided based on the first set corresponding to the M-th layer LOD of the current frame, and the second set corresponding to the M-th layer LOD of the current frame and the third set corresponding to the M-th layer LOD of the current frame can be determined. In other words, after LOD division is performed on the first set I(M) of the current frame, the second set O(M) of the current frame and the third set L(M) of the current frame can be determined.

[0469] It can be understood that in the embodiments of the present application, whether it is the current frame or the reference frame, since the second set O(M) and the third set L(M) are obtained after the first set I(M) is divided by LOD, and the second set O(M) stores the sampling points, the third set L(M) can store the unsampled points of the Mth LOD layer.

[0470] Exemplarily, in some embodiments, the nodes to be processed in the M-th layer LOD in the current frame may be points in the third set corresponding to the M-th layer LOD of the current frame.

[0471] Furthermore, in an embodiment of the present application, when performing LOD division on points in a reference frame, after performing the division processing of the Mth layer LOD of the reference frame, the first set corresponding to the M+1th layer LOD of the reference frame can be updated according to the second set corresponding to the Mth layer LOD of the reference frame.

[0472] It should be noted that, in an embodiment of the present application, after completing the update of the first set corresponding to the M+1th layer LOD of the reference frame, the index of the point in the first set corresponding to the M+1th layer LOD of the reference frame is also determined by the Morton code information of the point in the first set.

[0473] It can be understood that in the embodiment of the present application, the indexes of the points in the first set, the second set and the third set corresponding to each layer LOD of the reference frame can all be determined by the Morton code information of the points in each set.

[0474] Furthermore, in an embodiment of the present application, when performing LOD division on points in the current frame, after performing the division processing of the Mth layer LOD of the current frame, the first set corresponding to the M+1th layer LOD of the current frame can be updated according to the second set corresponding to the Mth layer LOD of the current frame.

[0475] It should be noted that, in an embodiment of the present application, after completing the update of the first set corresponding to the M+1th layer LOD of the current frame, the index of the point in the first set corresponding to the M+1th layer LOD of the current frame is also determined by the Morton code information of the point in the first set.

[0476] It can be understood that in the embodiment of the present application, the indexes of the points in the first set, the second set and the third set corresponding to each layer LOD of the current frame can all be determined by the Morton code information of the points in each set.

[0477] That is to say, in an embodiment of the present application, whether it is the current frame or the reference frame, in the entire LOD division process, after completing the division of the Mth layer LOD, the second set O(M) corresponding to the Mth layer LOD can be used to update the first set I(M+1) corresponding to the M+1th layer LOD.

[0478] For example, in some embodiments, when the second set O(M) corresponding to the Mth layer LOD is used to update the first set I(M+1) corresponding to the M+1th layer LOD, the points in the second set O(M) corresponding to the Mth layer LOD can be added to the first set I(M+1) corresponding to the M+1th layer LOD.

[0479] It can be understood that in the embodiments of the present application, after using the second set O(M) corresponding to the Mth layer LOD to update the first set I(M+1) corresponding to the M+1th layer LOD, the points in the first set I(M+1) corresponding to the M+1th layer LOD still need to be sorted according to the Morton code of the points to ensure that the index of the points in the first set I(M+1) corresponding to the M+1th layer LOD is also determined by the Morton code information of the points in the first set.

[0480] Furthermore, in an embodiment of the present application, when performing LOD division on points in a reference frame, before performing the division process of the Mth level LOD of the reference frame, the third set corresponding to the Mth level LOD of the reference frame can be initialized based on the third set corresponding to the M-1th level LOD of the reference frame. At the same time, the second set corresponding to the Mth level LOD of the reference frame can also be initialized to an empty set.

[0481] Accordingly, in an embodiment of the present application, when performing LOD division on points in the current frame, before performing the division process of the Mth level LOD of the current frame, the third set corresponding to the current M+1th level LOD can be initialized based on the third set corresponding to the M-1th level LOD of the current frame. At the same time, the second set corresponding to the Mth level LOD of the current frame can also be initialized to an empty set.

[0482] That is to say, in an embodiment of the present application, whether it is the current frame or the reference frame, in the entire LOD division process, after completing the division of the M-1th layer LOD and before executing the division processing of the Mth layer LOD, the third set L(M-1) corresponding to the M-1th layer LOD can be used to initialize the third set L(M) corresponding to the Mth layer LOD, and the second set corresponding to the Mth layer LOD can also be initialized to the empty set {}.

[0483] For example, in some embodiments, when the third set L(M-1) corresponding to the M-1 layer LOD is used to initialize the third set L(M) corresponding to the M-1 layer LOD, the points in the third set L(M-1) corresponding to the M-1 layer LOD can be added to the third set L(M) corresponding to the M-1 layer LOD.

[0484] Furthermore, in an embodiment of the present application, when performing LOD division on points in a reference frame, before performing the division processing of the first layer LOD of the reference frame, the third set corresponding to the first layer LOD of the reference frame can be initialized to an empty set; after performing the division processing of the first layer LOD of the reference frame, the first set corresponding to the second layer LOD of the reference frame can be updated according to the second set corresponding to the first layer LOD of the reference frame.

[0485] Accordingly, in an embodiment of the present application, when performing LOD division on points in the current frame, before executing the division processing of the first layer LOD of the current frame, the third set corresponding to the first layer LOD of the current frame can be initialized to an empty set; after executing the division processing of the first layer LOD of the current frame, the first set corresponding to the second layer LOD of the current frame can be updated according to the second set corresponding to the first layer LOD of the current frame.

[0486] That is to say, in an embodiment of the present application, whether it is a current frame or a reference frame, in the entire LOD division process, before performing the division processing of the first layer LOD, the third set L(1) corresponding to the first layer LOD can be initialized to an empty set {}; at the same time, after completing the division processing of the first layer LOD, the first set I(2) corresponding to the second layer LOD can be updated according to the second set O(1) corresponding to the first layer LOD.

[0487] Exemplarily, in some embodiments, whether it is the current frame or the reference frame, in the entire LOD division process, each set can be initialized first, where before dividing the first layer, for the third set L(1) of the first layer LOD, L(1) can be initialized to the empty set {}; before dividing the Mth layer, that is, if M is greater than 1, for the third set L(M) of the Mth layer LOD, L(M) can be initialized to L(M-1), and at the same time, for the second set O(M) of the Mth layer LOD, O(M) can be initialized to the empty set {}.

[0488] Exemplarily, in some embodiments, whether it is a current frame or a reference frame, in the entire LOD division process, when each layer of LOD is divided using the LOD division algorithm, the sampling points can be stored in O(M), and the remaining points can be divided into L(M).

[0489] Exemplarily, in some embodiments, whether it is the current frame or the reference frame, in the entire LOD division process, after completing the division of the first layer LOD, the second set O(1) corresponding to the first layer LOD can be used to update the first set I(2) corresponding to the second layer LOD. At the same time, after completing the division of the Mth layer LOD, the second set O(M) corresponding to the Mth layer LOD can be used to update the first set I(M+1) corresponding to the M+1th layer LOD.

[0490] It should be noted that in the embodiments of the present application, whether it is the current frame or the reference frame, the entire LOD division process is performed based on the Morton code of the point, so O(M), L(M) and I(M) store the index of the point, which is determined by the Morton code corresponding to the point in the set.

[0491] It can be understood that in the embodiment of the present application, since the first Morton code information of the node to be processed is used to determine the reference point in the prediction point set of the reference frame during the reference point selection process, it can be seen that the key point of the reference point search is the Morton code information of the point. Therefore, it is necessary to ensure that the index of the point in the prediction point set is determined by the Morton code information of the point, so that the best reference point can be determined, thereby improving the accuracy of the selection of the nearest neighbor node.

[0492] For example, in some embodiments, assuming that the prediction point set of the reference frame is the first set I(M) corresponding to the Mth layer LOD of the reference frame, then whether the set I(M) of the reference frame is updated or initialized, it is necessary to ensure that the index of the point in the set I(M) after the update or initialization is determined by the Morton code information of the point.

[0493] Furthermore, in an embodiment of the present application, when selecting a reference point, for a node to be processed in the first layer LOD in the current frame, the reference point can be directly determined in the first layer LOD of the reference frame according to the first Morton code information corresponding to the node to be processed.

[0494] It can be understood that in an embodiment of the present application, for the nodes to be processed in the first layer LOD of the current frame, the corresponding first layer LOD of the reference frame will not perform the update processing of the set in the reference frame when dividing, so the index of the set point in the first layer LOD itself is determined by the Morton code corresponding to the point in the set.

[0495] Furthermore, in an embodiment of the present application, when determining a reference point in a prediction point set of a reference frame of a current frame based on the first Morton code information corresponding to the node to be processed, it is possible to select points in the prediction point set that are traversed, and then determine a point whose first Morton code information is greater than or equal to the first Morton code information as a reference point corresponding to the node to be processed.

[0496] Exemplarily, in some embodiments, when determining a reference point in a node set of a reference frame of a current frame based on the first Morton code information corresponding to the node to be processed, it is possible to select points in the node set of the reference frame that are traversed, and then determine a point whose first Morton code information is greater than or equal to the first Morton code information as a reference point corresponding to the node to be processed.

[0497] Exemplarily, in some embodiments, when determining a reference point in the first set corresponding to the Mth layer LOD of the reference frame of the current frame based on the first Morton code information corresponding to the node to be processed, it is possible to choose to traverse the points in the first set corresponding to the Mth layer LOD, and then determine the point whose first Morton code information is greater than or equal to the first Morton code information as the reference point corresponding to the node to be processed.

[0498] It can be understood that, in the embodiment of the present application, since the index of a point in the prediction point set is determined by the Morton code information of the point, the Morton code information corresponding to the reference point is the index corresponding to the reference point in the prediction point set.

[0499] That is to say, in the embodiments of the present application, whether it is the node set of the current frame or the first set corresponding to the M-th layer LOD of the current frame, since the index of the point in the prediction point set is determined by the Morton code corresponding to the point in the set, that is, the index of the point in the set is the Morton code of the point, when searching for the reference point, the points in the prediction point set can be traversed in sequence according to the Morton code of the node to be processed, and the point whose first Morton code (index) is greater than or equal to the Morton code of the node to be processed is determined as the corresponding reference point.

[0500] Exemplarily, in some embodiments, when performing attribute inter-frame prediction, the geometric coordinates of the node to be processed are first used to obtain the first Morton code information corresponding to the node to be processed, wherein it is assumed that the first Morton code information is i, and then based on i, the first reference point greater than or equal to the first Morton code information of the node to be processed is found in the prediction point set of the reference frame, wherein the Morton code of the reference point, that is, the index of the reference point in the prediction point set is j, and j is the index of the first point greater than or equal to i.

[0501] Step 202: Determine a search range based on the second Morton code information corresponding to the reference point, and determine the nearest neighbor node corresponding to the node to be processed according to the search range.

[0502] In an embodiment of the present application, for the node to be processed in the Mth layer LOD in the current frame, after determining the reference point in the prediction point set of the reference frame of the current frame according to the first Morton code information corresponding to the node to be processed, the search range corresponding to the nearest neighbor search of the node to be processed can be further determined based on the second Morton code information corresponding to the reference point, and then the nearest neighbor node corresponding to the node to be processed can be further determined according to the search range.

[0503] It is understandable that in the embodiment of the present application, since the index of a point in the prediction point set is determined by the Morton code information of the point, the second Morton code information corresponding to the reference point is the index corresponding to the reference point in the prediction point set.

[0504] It should be noted that, in the embodiment of the present application, when determining the search range, it is possible to first determine the search step length; and then further determine the search range based on the second Morton code information and the search step length.

[0505] Exemplarily, in some embodiments, assuming that the search step is searchRange, the second Morton code information corresponding to the reference point is j, that is, the index of the reference point is j, then, based on the second Morton code information and the search step, the corresponding search range can be determined to be [j-searchRange, j+searchRange], and then the nearest neighbor search can be selected within the search range of [j-searchRange, j+searchRange].

[0506] For example, in some embodiments, when performing the nearest neighbor search, a block-based neighborhood search may be selected. First, the points in the reference frame may be divided into P (P=3) layers according to the Morton code. The specific division algorithm is as follows:

[0507] First layer: Assume that the number of points in the reference frame is numPoints. First, the points in the reference frame are divided into Q (Q = 2 5 =32) points are divided into one block;

[0508] Second layer: Based on the first layer, the blocks of the first layer are also processed in the order of Morton code for every Q (Q=2 5 =32) blocks are divided into one block;

[0509] The third layer: Based on the second layer, the blocks of the first layer are also processed in the order of the Morton code for every Q (Q=2 5 =32) blocks are divided into one block.

[0510] Assuming the Morton code of the node to be processed is i, first find the first point in the reference frame that is greater than or equal to the Morton code of the node to be processed, with index j. Then calculate the block index of the reference point based on j. The specific calculation method is as follows:

[0511] First layer: BucketSize_0 = 2 5 =32

[0512] Second layer: BucketSize_1 = 2 5 =32×BucketSize_0=1024

[0513] Third layer: BucketSize_2 = 2 5 =32×BucketSize_1=32768.

[0514] The search range determined by the index of the reference point (Morton code) is [j-searchRange, j+searchRange]. The starting index of the third layer is calculated using j-searchRange, and the ending index of the third layer is calculated using j+searchRange. First, in the blocks of the third layer, it is determined whether some blocks in the second layer need to be searched for the nearest neighbor. Then, for each block in the first layer, it is determined whether a search is needed. If some blocks in the first layer need to be searched for the nearest neighbor, the midpoints of some blocks in the first layer will be judged point by point to update the nearest neighbor.

[0515] For the algorithm based on index calculation block, assuming that the Morton code index corresponding to the current point is index, then the index of the corresponding third-layer block is idx_2 = index / BucketSize_2. After obtaining the block index idx_2 of the third layer, idx_2 can be used to obtain the starting index startIdx1 = idx_2 × BucketSize_1 and the ending index endIdx = idx_2 × BucketSize_1 + BucketSize_1-1 of the block corresponding to the current block in the second layer. Similarly, the index of the first-layer block can be obtained based on the index of the second-layer block.

[0516] When performing a block-based nearest neighbor search, we first determine whether the current block needs to be searched for the nearest neighbor. This is called filtering the nearest neighbor search for the block. Each spatial block can be obtained through two variables: minPos and maxPos. MinPos represents the minimum value of the block, and maxPos represents the maximum value of the block.

[0517] Assume that the distance to the farthest point among the neighbors to be found is Dist, the coordinates of the node to be processed are (x, y, z), and the current block is represented by (minPos, maxPos), where minPos is the minimum value of the bounding box in three dimensions and maxPos is the maximum value of the bounding box in three dimensions. The distance D between the current point and the bounding box is calculated as follows:

[0518] int dx=int(std::max(std::max(minPos[0]-point[0],0),point[0]-maxPos[0])); int dy=int(std::max(std::max(minPos[1]-point[1],0),point[1]-maxPos[1])); int dz=int(std::max(std::max(minPos[2]-point[2],0),point[2]-maxPos[2])); D=dx+dy+dz;

[0519] When D is less than or equal to Dist, the points in the current block will be traversed.

[0520] It can be understood that in an embodiment of the present application, for the node to be processed in the first layer LOD in the current frame, after determining the reference point, the search range corresponding to the nearest neighbor search of the node to be processed is further determined based on the second Morton code information corresponding to the reference point, and the nearest neighbor node corresponding to the node to be processed is determined according to the search range.

[0521] Furthermore, in an embodiment of the present application, after performing a nearest neighbor search based on the search range, one or more nearest neighbor nodes corresponding to the node to be processed can be determined. That is, the number of nearest neighbor nodes after the nearest neighbor search can be any number, and this application does not impose any specific restrictions.

[0522] Step 203: Determine the attribute prediction value corresponding to the node to be processed based on the reconstructed value of the nearest neighbor node.

[0523] In an embodiment of the present application, after determining the search range based on the second Morton code information corresponding to the reference point and determining the nearest neighbor node corresponding to the node to be processed according to the search range, the attribute prediction value corresponding to the node to be processed can be further determined based on the reconstructed value of the nearest neighbor node.

[0524] It should be noted that in an embodiment of the present application, after performing a nearest neighbor search based on the search range, since any number of nearest neighbor nodes corresponding to the node to be processed can be determined, when using the reconstructed value of the nearest neighbor node to determine the attribute prediction value corresponding to the node to be processed, different processing methods can be used for prediction processing.

[0525] For example, in some embodiments, if a nearest neighbor node is obtained through the search, the reconstructed value of the nearest neighbor node may be determined as the attribute prediction value corresponding to the node to be processed.

[0526] Exemplarily, in some embodiments, if the search obtains two or more nearest neighbor nodes, the reconstructed values ​​of multiple nearest neighbor nodes can be weighted predicted, and the result after weighted prediction can be determined as the attribute prediction value corresponding to the node to be processed.

[0527] Exemplarily, in some embodiments, if the search obtains two or more nearest neighbor nodes, the target nearest neighbor node can be first determined among multiple nearest neighbor nodes according to the rate-distortion optimization algorithm, and then the reconstructed value of the target nearest neighbor node can be determined as the attribute prediction value corresponding to the node to be processed.

[0528] That is to say, in an embodiment of the present application, the rate-distortion optimization algorithm can be used to select weighted prediction by using the attributes of multiple nearest neighbor points searched or to select the attributes of a single nearest neighbor point for prediction, and finally obtain the predicted value of the attribute information of the node to be processed.

[0529] Exemplarily, in some embodiments, formula (22) can be used to determine the attribute prediction value of the node to be processed (current point).

[0530] Among them, K represents the number of predicted points in the nearest neighbor point set of point i, Pi represents the sum of the K nearest neighbor points of point i, Dm represents the spatial geometric distance from the nearest neighbor point m to the current point i, Attrm represents the attribute value after reconstruction of the nearest neighbor point m, Attr i ′ represents the attribute prediction value of the current point i, and the number of points K is a preset value.

[0531] Furthermore, in an embodiment of the present application, a prediction residual corresponding to the node to be processed may be determined; and then, based on the prediction residual and the attribute prediction value, an attribute reconstruction value corresponding to the node to be processed may be determined.

[0532] It is understood that in the embodiments of the present application, after determining the attribute prediction value corresponding to the node to be processed, the attribute information of the node to be processed can be reconstructed using the attribute prediction value. The attribute reconstruction value corresponding to the node to be processed can be determined based on the prediction residual and the attribute prediction value corresponding to the node to be processed.

[0533] For example, in some embodiments, the prediction residual and the attribute prediction value corresponding to the node to be processed may be summed up to obtain the attribute reconstruction value corresponding to the node to be processed.

[0534] Furthermore, in an embodiment of the present application, when determining the prediction residual of the node to be processed, the initial value of the attribute corresponding to the node to be processed can be determined first; then, based on the initial value of the attribute and the predicted value of the attribute, the prediction residual corresponding to the node to be processed can be determined, and the prediction residual can be written into the code stream and transmitted to the decoding end, so that the decoding end can reconstruct the attribute information of the node to be processed based on the prediction residual corresponding to the node to be processed.

[0535] For example, in some embodiments, a difference calculation may be performed between the initial attribute value and the attribute prediction value corresponding to the node to be processed, thereby obtaining a prediction residual corresponding to the node to be processed.

[0536] In summary, the encoding and decoding method proposed in the embodiment of the present application, when performing attribute nearest neighbor search, after performing the nearest neighbor search on each layer, although the set storing each inter-frame prediction point also needs to be updated, in the set storing each inter-frame point (prediction point set, such as the node set of the reference frame or the first set of the Mth layer LOD), the index corresponding to each point is guaranteed to be the index of the Morton code of the inter-frame prediction point, rather than the initial index of the point. This ensures that when the nearest neighbor search is performed subsequently, each point can find the nearest neighbor in space, thereby effectively removing the redundancy in the time domain between adjacent frames and improving the efficiency of attribute coding.

[0537] Furthermore, the embodiment of the present application ensures that the index of the point stored in each inter-frame prediction point set is the point index of the Morton code when performing attribute inter-frame prediction, that is, the index of the point is determined by the Morton code of the point, thereby ensuring that when performing attribute inter-frame prediction, the subsequent nearest neighbor search can find the nearest neighbor within a certain search range between frames when performing the nearest neighbor search based on the Morton code, thereby improving the encoding efficiency of the point cloud attributes.

[0538] For example, in some embodiments, BD-rate is used as an indicator to measure the encoding performance of an algorithm, with test results shown in Tables 2 and 3. BD-rate is an objective metric used in video compression, used to compare the rate-distortion performance or compression efficiency of two different video codecs, or different settings of the same video codec, within a range of bitrate or quality values. Because BD-rate represents the rate increase of an optimized algorithm compared to the original algorithm while maintaining the same objective video quality, a negative BD-rate value can indicate improved encoding performance for the optimized algorithm.

[0539] For example, as shown in Table 2, under the condition of C1_ai, for the test conditions of lossless geometric position and lossy attributes, the coding performance can be improved by -9.8%, that is, the coding and decoding method proposed in the embodiment of the present application effectively improves the coding and decoding performance.

[0540] For example, as shown in Table 2, under the condition of C2_ai, for the test conditions of lossless geometric position and lossy attributes, the coding performance can be improved by -12.4%, that is, the coding and decoding method proposed in the embodiment of the present application effectively improves the coding and decoding performance.

[0541] It can be seen that in the encoding and decoding method proposed in the embodiment of the present application, when the encoding and decoding ends perform inter-frame prediction on the attributes of the point cloud, since the entire process of performing nearest neighbor search on the attributes is based on the nearest neighbor search of the Morton code, it is necessary to ensure that the index of the neighboring point found for each point is the index of the Morton code when performing nearest neighbor search at each layer LOD, and further ensure that the nearest neighbor search index based on the subsequent nearest neighbor search process is the index of the Morton code point set, so that when performing attribute prediction between frames, the nearest neighbor can be accurately found, thereby improving the attribute encoding and decoding efficiency of the point cloud.

[0542] The embodiment of the present application provides a coding method, for a node to be processed in the Mth layer LOD in the current frame, the encoder can determine the reference point in the prediction point set of the reference frame of the current frame based on the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of the point in the prediction point set of the reference frame is determined by the Morton code information of the point; the search range is determined based on the second Morton code information corresponding to the reference point, and the nearest neighbor node corresponding to the node to be processed is determined based on the search range; based on the reconstructed value of the nearest neighbor node, the attribute prediction value corresponding to the node to be processed is determined. It can be seen that in the embodiment of the present application, the codec needs to determine the reference point in the prediction point set of the reference frame during the inter-frame prediction of the attribute information, wherein the index of the point in the prediction point set of the reference frame is determined based on the Morton code information of the point, that is, the index of the point in the prediction point set of the reference frame is the Morton code of the point, and then the corresponding reference point can be found using the Morton code, so that in the subsequent nearest neighbor search process based on the reference point, it can also be ensured that the nearest neighbor node is obtained using the Morton code. That is to say, in an embodiment of the present application, the best nearest neighbor point can be accurately found by ensuring that the index of the point in the prediction point set of the reference frame is the Morton code of the point, thereby improving the prediction effect of the attribute information and improving the encoding and decoding efficiency and performance.

[0543] Based on the above embodiment, in another embodiment of the present application, based on the same inventive concept as the above embodiment, FIG42 is a schematic diagram of the composition structure of the encoder. As shown in FIG42 , the encoder 20 may include: a first determining unit 21 and an encoding unit 22, wherein:

[0544] The first determination unit 21 is configured to determine, for a node to be processed in the Mth layer LOD in the current frame, a reference point in a prediction point set of a reference frame of the current frame according to first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of a point in the prediction point set of the reference frame is determined by the Morton code information of the point; determine a search range based on second Morton code information corresponding to the reference point, and determine the nearest neighbor node corresponding to the node to be processed according to the search range; and determine the attribute prediction value corresponding to the node to be processed based on the reconstructed value of the nearest neighbor node.

[0545] In some embodiments, the first determination unit 21 is further configured to determine the reference point in the first set corresponding to the M-th layer LOD of the reference frame according to the first Morton code information; wherein the index of the point in the first set corresponding to the M-th layer LOD of the reference frame is determined by the Morton code information of the point; or, determine the reference point in the node set of the reference frame according to the first Morton code information; wherein the index of the point in the node set is determined by the Morton code information of the point.

[0546] In some embodiments, the first set corresponding to the Mth layer LOD of the reference frame is used to store the input points corresponding to the Mth layer LOD of the reference frame; the second set corresponding to the Mth layer LOD of the reference frame is used to store the sampling points corresponding to the Mth layer LOD of the reference frame; and the third set corresponding to the Mth layer LOD of the reference frame is used to store other points in the Mth layer LOD of the reference frame other than the second set.

[0547] In some embodiments, the first determination unit 21 is further configured to perform division processing of the Mth layer LOD of the reference frame based on the first set corresponding to the Mth layer LOD of the reference frame, and determine the second set corresponding to the Mth layer LOD of the reference frame and the third set corresponding to the Mth layer LOD of the reference frame.

[0548] In some embodiments, the first determination unit 21 is further configured to update the first set corresponding to the M+1th layer LOD of the reference frame according to the second set corresponding to the Mth layer LOD of the reference frame after performing the division processing of the Mth layer LOD of the reference frame.

[0549] In some embodiments, the first determination unit 21 is further configured to initialize the third set corresponding to the Mth layer LOD of the reference frame according to the third set corresponding to the M-1th layer LOD of the reference frame before performing the division processing of the Mth layer LOD of the reference frame; and initialize the second set corresponding to the Mth layer LOD of the reference frame to an empty set.

[0550] In some embodiments, the first determining unit 21 is further configured to determine the reference point in the first layer LOD of the reference frame according to the first Morton code information corresponding to the node to be processed in the first layer LOD of the current frame.

[0551] In some embodiments, the first determination unit 21 is further configured to initialize the third set corresponding to the first layer LOD of the reference frame to an empty set before performing the division processing of the first layer LOD of the reference frame; after performing the division processing of the first layer LOD of the reference frame, update the first set corresponding to the second layer LOD of the reference frame according to the second set corresponding to the first layer LOD of the reference frame.

[0552] In some embodiments, the first determination unit 21 is further configured to determine the reconstructed value of one of the nearest neighbor nodes as the attribute prediction value corresponding to the node to be processed; or, perform weighted prediction processing on the reconstructed values ​​of multiple nearest neighbor nodes to obtain the attribute prediction value corresponding to the node to be processed; or, determine the target nearest neighbor node among the multiple nearest neighbor nodes according to the rate-distortion optimization algorithm, and determine the reconstructed value of the target nearest neighbor node as the attribute prediction value corresponding to the node to be processed.

[0553] In some embodiments, the first determining unit 21 is further configured to determine an initial attribute value corresponding to the node to be processed; and determine a prediction residual corresponding to the node to be processed based on the initial attribute value and the predicted attribute value.

[0554] In some embodiments, the encoding unit 22 is further configured to write the prediction residual into a bitstream.

[0555] In some embodiments, the first determination unit 21 is further configured to traverse the points in the node geometry of the reference frame, and determine the point whose first Morton code information is greater than or equal to the first Morton code information as the reference point corresponding to the node to be processed; or, traverse the points in the first set corresponding to the Mth layer LOD of the reference frame, and determine the point whose first Morton code information is greater than or equal to the first Morton code information as the reference point corresponding to the node to be processed.

[0556] In some embodiments, the first determining unit 21 is further configured to determine a search step; and determine the search range according to the second Morton code information and the search step.

[0557] In some embodiments, the first determining unit 21 is further configured to determine the first Morton code information according to the geometric coordinates of the node to be processed.

[0558] In some embodiments, the first determination unit 21 is further configured to divide the nodes in the current frame according to the Morton code information of the nodes in the current frame to determine N layers of LOD corresponding to the current frame; wherein N is an integer greater than or equal to M.

[0559] In some embodiments, the first determining unit 21 is further configured to divide the nodes in the reference frame according to the Morton code information of the nodes in the reference frame to determine N layers of LOD corresponding to the reference frame.

[0560] 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.

[0561] 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.

[0562] 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.

[0563] Based on the composition of the above-mentioned encoder 20 and the computer-readable storage medium, Figure 43 is a second schematic diagram of the composition structure of the encoder. As shown in Figure 43, 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, all buses are labeled as the first bus system 26. Among them,

[0564] 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;

[0565] The first memory 23 is used to store a computer program that can be run on the first processor;

[0566] The first processor 24 is used to, when running the computer program, determine, for a node to be processed in the Mth layer LOD in the current frame, a reference point in the prediction point set of the reference frame of the current frame according to the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of the point in the prediction point set of the reference frame is determined by the Morton code information of the point; determine a search range based on the second Morton code information corresponding to the reference point, and determine the nearest neighbor node corresponding to the node to be processed according to the search range; and determine the attribute prediction value corresponding to the node to be processed based on the reconstructed value of the nearest neighbor node.

[0567] 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.

[0568] 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 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. A 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.

[0569] 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 a processor or outside a processor.

[0570] 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.

[0571] The embodiment of the present application provides an encoder, for a node to be processed in the Mth layer LOD in the current frame, the codec can determine the reference point in the prediction point set of the reference frame of the current frame based on the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of the point in the prediction point set of the reference frame is determined by the Morton code information of the point; the search range is determined based on the second Morton code information corresponding to the reference point, and the nearest neighbor node corresponding to the node to be processed is determined based on the search range; based on the reconstructed value of the nearest neighbor node, the attribute prediction value corresponding to the node to be processed is determined. It can be seen that in the embodiment of the present application, the codec needs to determine the reference point in the prediction point set of the reference frame during the inter-frame prediction of attribute information, wherein the index of the point in the prediction point set of the reference frame is determined based on the Morton code information of the point, that is, the index of the point in the prediction point set of the reference frame is the Morton code of the point, and then the corresponding reference point can be found using the Morton code, so that in the subsequent nearest neighbor search process based on the reference point, it can also be ensured that the nearest neighbor node is obtained using the Morton code. That is to say, in an embodiment of the present application, the best nearest neighbor point can be accurately found by ensuring that the index of the point in the prediction point set of the reference frame is the Morton code of the point, thereby improving the prediction effect of the attribute information and improving the encoding and decoding efficiency and performance.

[0572] FIG44 is a schematic diagram of the first structure of the decoder. As shown in FIG44 , the decoder 30 may include: a second determining unit 31 and a decoding unit 32; wherein,

[0573] The second determination unit 31 is configured to determine, based on the unit to be processed in the current frame, a first reference unit corresponding to the unit to be processed in the reference frame corresponding to the current frame; and determine an attribute prediction value corresponding to the unit to be processed based on the attribute information corresponding to the first reference unit.

[0574] In some embodiments, the second determination unit 31 is further configured to determine, for a node to be processed in the Mth layer LOD in the current frame, a reference point in a set of predicted points of a reference frame of the current frame according to the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of the point in the set of predicted points of the reference frame is determined by the Morton code information of the point; determine a search range based on the second Morton code information corresponding to the reference point, and determine the nearest neighbor node corresponding to the node to be processed according to the search range; and determine the attribute prediction value corresponding to the node to be processed based on the reconstructed value of the nearest neighbor node.

[0575] In some embodiments, the second determination unit 31 is further configured to determine the reference point in the first set corresponding to the M-th layer LOD of the reference frame according to the first Morton code information; wherein the index of the point in the first set corresponding to the M-th layer LOD of the reference frame is determined by the Morton code information of the point; or, determine the reference point in the node set of the reference frame according to the first Morton code information; wherein the index of the point in the node set is determined by the Morton code information of the point.

[0576] In some embodiments, the first set corresponding to the Mth layer LOD of the reference frame is used to store the input points corresponding to the Mth layer LOD of the reference frame; the second set corresponding to the Mth layer LOD of the reference frame is used to store the sampling points corresponding to the Mth layer LOD of the reference frame; and the third set corresponding to the Mth layer LOD of the reference frame is used to store other points in the Mth layer LOD of the reference frame other than the second set.

[0577] In some embodiments, the second determination unit 31 is further configured to perform division processing on the M-th layer LOD of the reference frame based on the first set corresponding to the M-th layer LOD of the reference frame, and determine the second set corresponding to the M-th layer LOD of the reference frame and the third set corresponding to the M-th layer LOD of the reference frame.

[0578] In some embodiments, the second determination unit 31 is further configured to update the first set corresponding to the M+1th layer LOD of the reference frame according to the second set corresponding to the Mth layer LOD of the reference frame after performing the division processing of the Mth layer LOD of the reference frame.

[0579] In some embodiments, the second determination unit 31 is further configured to initialize the third set corresponding to the Mth layer LOD of the reference frame according to the third set corresponding to the M-1th layer LOD of the reference frame before performing the division processing of the Mth layer LOD of the reference frame; and initialize the second set corresponding to the Mth layer LOD of the reference frame to an empty set.

[0580] In some embodiments, the second determining unit 31 is further configured to determine the reference point in the first layer LOD of the reference frame according to the first Morton code information corresponding to the node to be processed in the first layer LOD of the current frame.

[0581] In some embodiments, the second determination unit 31 is further configured to initialize the third set corresponding to the first layer LOD of the reference frame to an empty set before performing the division processing of the first layer LOD of the reference frame; after performing the division processing of the first layer LOD of the reference frame, update the first set corresponding to the second layer LOD of the reference frame according to the second set corresponding to the first layer LOD of the reference frame.

[0582] In some embodiments, the second determination unit 31 is further configured to determine the reconstructed value of one of the nearest neighbor nodes as the attribute prediction value corresponding to the node to be processed; or, perform weighted prediction processing on the reconstructed values ​​of multiple nearest neighbor nodes to obtain the attribute prediction value corresponding to the node to be processed; or, determine the target nearest neighbor node among multiple nearest neighbor nodes, and determine the reconstructed value of the target nearest neighbor node as the attribute prediction value corresponding to the node to be processed.

[0583] In some embodiments, the decoding unit 32 is further configured to decode the code stream to determine the prediction residual corresponding to the node to be processed.

[0584] In some embodiments, the second determining unit 31 is further configured to determine the attribute reconstruction value of the node to be processed according to the prediction residual and the attribute prediction value corresponding to the node to be processed.

[0585] In some embodiments, the second determination unit 31 is further configured to traverse the points in the node geometry of the reference frame, and determine the point whose first Morton code information is greater than or equal to the first Morton code information as the reference point corresponding to the node to be processed; or, traverse the points in the first set corresponding to the Mth layer LOD of the reference frame, and determine the point whose first Morton code information is greater than or equal to the first Morton code information as the reference point corresponding to the node to be processed.

[0586] In some embodiments, the second determining unit 31 is further configured to determine a search step length; and determine the search range according to the second Morton code information and the search step length.

[0587] In some embodiments, the second determining unit 31 is further configured to determine the first Morton code information according to the geometric coordinates of the node to be processed.

[0588] In some embodiments, the second determination unit 31 is further configured to divide the nodes in the current frame according to the Morton code information of the nodes in the current frame to determine N layers of LOD corresponding to the current frame; wherein N is an integer greater than or equal to M.

[0589] In some embodiments, the second determining unit 31 is further configured to divide the nodes in the reference frame according to the Morton code information of the nodes in the reference frame to determine N layers of LOD corresponding to the reference frame.

[0590] 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.

[0591] 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.

[0592] 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.

[0593] Based on the composition of the above-mentioned decoder 30 and the computer-readable storage medium, Figure 45 is a second schematic diagram of the composition structure of the decoder. As shown in Figure 45, 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, all buses are labeled as the second bus system 36. Among them,

[0594] 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;

[0595] The second memory 33 is used to store a computer program that can be run on the second processor;

[0596] The second processor 34 is used to, when running the computer program, determine, for a node to be processed in the Mth layer LOD in the current frame, a reference point in the prediction point set of the reference frame of the current frame according to the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of the point in the prediction point set of the reference frame is determined by the Morton code information of the point; determine a search range based on the second Morton code information corresponding to the reference point, and determine the nearest neighbor node corresponding to the node to be processed according to the search range; and determine the attribute prediction value corresponding to the node to be processed based on the reconstructed value of the nearest neighbor node.

[0597] 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.

[0598] 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.

[0599] 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.

[0600] The embodiment of the present application provides a decoder, for a node to be processed in the Mth layer LOD in the current frame, the codec can determine the reference point in the prediction point set of the reference frame of the current frame based on the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of the point in the prediction point set of the reference frame is determined by the Morton code information of the point; the search range is determined based on the second Morton code information corresponding to the reference point, and the nearest neighbor node corresponding to the node to be processed is determined based on the search range; based on the reconstructed value of the nearest neighbor node, the attribute prediction value corresponding to the node to be processed is determined. It can be seen that in the embodiment of the present application, the codec needs to determine the reference point in the prediction point set of the reference frame during the inter-frame prediction of attribute information, wherein the index of the point in the prediction point set of the reference frame is determined based on the Morton code information of the point, that is, the index of the point in the prediction point set of the reference frame is the Morton code of the point, and then the corresponding reference point can be found using the Morton code, so that in the subsequent nearest neighbor search process based on the reference point, it can also be ensured that the nearest neighbor node is obtained using the Morton code. That is to say, in an embodiment of the present application, the best nearest neighbor point can be accurately found by ensuring that the index of the point in the prediction point set of the reference frame is the Morton code of the point, thereby improving the prediction effect of the attribute information and improving the encoding and decoding efficiency and performance.

[0601] In another embodiment of the present application, the embodiment of the present application further provides a code stream, which is generated by bit encoding according to information to be encoded; wherein the information to be encoded at least includes: prediction residual.

[0602] 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.

[0603] 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.

[0604] The methods disclosed in the several method embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments.

[0605] The features disclosed in the several product embodiments provided in this application can be arbitrarily combined without conflict to obtain new product embodiments.

[0606] 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.

[0607] 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

[0608] The embodiment of the present application provides a coding and decoding method, an encoder, a decoder, a code stream and a storage medium. For a node to be processed in the Mth layer LOD in the current frame, the encoder and decoder can determine a reference point in the prediction point set of the reference frame of the current frame based on the first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of the point in the prediction point set of the reference frame is determined by the Morton code information of the point; the search range is determined based on the second Morton code information corresponding to the reference point, and the nearest neighbor node corresponding to the node to be processed is determined based on the search range; based on the reconstructed value of the nearest neighbor node, the attribute prediction value corresponding to the node to be processed is determined. It can be seen that in the embodiment of the present application, the encoder and decoder need to determine the reference point in the prediction point set of the reference frame during the inter-frame prediction of attribute information, wherein the index of the point in the prediction point set of the reference frame is determined based on the Morton code information of the point, that is, the index of the point in the prediction point set of the reference frame is the Morton code of the point, and then the corresponding reference point can be found using the Morton code, so that in the subsequent nearest neighbor search process based on the reference point, it can also be ensured that the nearest neighbor node is obtained using the Morton code. That is to say, in an embodiment of the present application, the best nearest neighbor point can be accurately found by ensuring that the index of the point in the prediction point set of the reference frame is the Morton code of the point, thereby improving the prediction effect of the attribute information and improving the encoding and decoding efficiency and performance.

Claims

1. A decoding method, applied to a decoder, the method comprising: For a node to be processed in the Mth layer LOD in the current frame, a reference point is determined in a prediction point set of a reference frame of the current frame according to first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; and an index of a point in the prediction point set of the reference frame is determined by the Morton code information of the point; Determine a search range based on the second Morton code information corresponding to the reference point, and determine the nearest neighbor node corresponding to the node to be processed according to the search range; Based on the reconstructed value of the nearest neighbor node, a predicted attribute value corresponding to the node to be processed is determined.

2. The method according to claim 1, wherein: The step of determining a reference point in a prediction point set of a reference frame of the current frame according to the first Morton code information corresponding to the node to be processed includes: Determine the reference point in the first set corresponding to the Mth layer LOD of the reference frame according to the first Morton code information; wherein the index of the point in the first set corresponding to the Mth layer LOD of the reference frame is determined by the Morton code information of the point; or, The reference point is determined in the node set of the reference frame according to the first Morton code information; wherein the index of the point in the node set is determined by the Morton code information of the point.

3. The method according to claim 2, wherein: The first set corresponding to the Mth layer LOD of the reference frame is used to store the input points corresponding to the Mth layer LOD of the reference frame; The second set corresponding to the Mth layer LOD of the reference frame is used to store the sampling points corresponding to the Mth layer LOD of the reference frame; The third set corresponding to the Mth level LOD of the reference frame is used to store other points in the Mth level LOD of the reference frame except for the second set.

4. The method according to claim 3, wherein: The method further comprises: The Mth layer LOD of the reference frame is divided based on the first set corresponding to the Mth layer LOD of the reference frame to determine the second set corresponding to the Mth layer LOD of the reference frame and the third set corresponding to the Mth layer LOD of the reference frame.

5. The method according to claim 3, wherein: The method further comprises: After performing the division process of the Mth layer LOD of the reference frame, the first set corresponding to the M+1th layer LOD of the reference frame is updated according to the second set corresponding to the Mth layer LOD of the reference frame.

6. The method according to claim 3, wherein: The method further comprises: Before performing the division processing of the Mth layer LOD of the reference frame, the third set corresponding to the Mth layer LOD of the reference frame is initialized according to the third set corresponding to the M-1th layer LOD of the reference frame; and the second set corresponding to the Mth layer LOD of the reference frame is initialized to an empty set.

7. The method according to claim 2, wherein: The method further comprises: For the node to be processed in the first layer LOD in the current frame, the reference point is determined in the first layer LOD of the reference frame according to the first Morton code information corresponding to the node to be processed.

8. The method according to claim 7, wherein: The method further comprises: Before performing the division process of the first layer LOD of the reference frame, initializing the third set corresponding to the first layer LOD of the reference frame to an empty set; After performing the division process of the first layer LOD of the reference frame, the first set corresponding to the second layer LOD of the reference frame is updated according to the second set corresponding to the first layer LOD of the reference frame.

9. The method according to claim 1 or 7, wherein: The step of determining the attribute prediction value corresponding to the node to be processed based on the reconstructed value of the nearest neighbor node includes: Determine a reconstructed value of the nearest neighbor node as the attribute prediction value corresponding to the node to be processed; or, Performing weighted prediction processing on the reconstructed values ​​of the plurality of nearest neighbor nodes to obtain the attribute prediction value corresponding to the node to be processed; or, A target nearest neighbor node is determined among the plurality of nearest neighbor nodes, and a reconstructed value of the target nearest neighbor node is determined as a predicted attribute value corresponding to the node to be processed.

10. The method according to claim 9, wherein: The method further comprises: Decoding the bitstream to determine the prediction residual corresponding to the node to be processed; The attribute reconstruction value of the node to be processed is determined according to the prediction residual and the attribute prediction value corresponding to the node to be processed.

11. The method according to claim 2, wherein: The step of determining a reference point in a prediction point set of a reference frame of the current frame according to the first Morton code information corresponding to the node to be processed includes: Traversing the points in the node geometry of the reference frame, and determining a point whose first Morton code information is greater than or equal to the first Morton code information as the reference point corresponding to the node to be processed; or, Traverse the points in the first set corresponding to the Mth layer LOD of the reference frame, and determine the point whose first Morton code information is greater than or equal to the first Morton code information as the reference point corresponding to the node to be processed.

12. The method according to claim 2, wherein: The determining of the search range based on the second Morton code information corresponding to the reference point includes: Determine the search step size; The search range is determined according to the second Morton code information and the search step size.

13. The method according to claim 2, wherein: The method further comprises: The first Morton code information is determined according to the geometric coordinates of the node to be processed.

14. The method according to claim 2, wherein: The method further comprises: The nodes in the current frame are divided according to the Morton code information of the nodes in the current frame to determine N layers of LOD corresponding to the current frame; wherein N is an integer greater than or equal to M.

15. The method according to claim 14, wherein: The method further comprises: The nodes in the reference frame are divided according to the Morton code information of the nodes in the reference frame to determine the N layers of LOD corresponding to the reference frame.

16. A coding method, applied to an encoder, the method comprising: For a node to be processed in the Mth layer LOD in the current frame, a reference point is determined in a prediction set of a reference frame of the current frame according to first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; and an index of a point in the prediction point set of the reference frame is determined by the Morton code information of the point; Determine a search range based on the second Morton code information corresponding to the reference point, and determine the nearest neighbor node corresponding to the node to be processed according to the search range; Based on the reconstructed value of the nearest neighbor node, a predicted attribute value corresponding to the node to be processed is determined.

17. The method according to claim 16, wherein: The step of determining a reference point in a prediction point set of a reference frame of the current frame according to the first Morton code information corresponding to the node to be processed includes: Determine the reference point in the first set corresponding to the Mth layer LOD of the reference frame according to the first Morton code information; wherein the index of the point in the first set corresponding to the Mth layer LOD of the reference frame is determined by the Morton code information of the point; or, The reference point is determined in the node set of the reference frame according to the first Morton code information; wherein the index of the point in the node set is determined by the Morton code information of the point.

18. The method according to claim 17, wherein: The first set corresponding to the Mth layer LOD of the reference frame is used to store the input points corresponding to the Mth layer LOD of the reference frame; The second set corresponding to the Mth layer LOD of the reference frame is used to store the sampling points corresponding to the Mth layer LOD of the reference frame; The third set corresponding to the Mth level LOD of the reference frame is used to store other points in the Mth level LOD of the reference frame except for the second set.

19. The method according to claim 18, wherein: The method further comprises: The Mth layer LOD of the reference frame is divided based on the first set corresponding to the Mth layer LOD of the reference frame to determine the second set corresponding to the Mth layer LOD of the reference frame and the third set corresponding to the Mth layer LOD of the reference frame.

20. The method according to claim 18, wherein: The method further comprises: After performing the division process of the Mth layer LOD of the reference frame, the first set corresponding to the M+1th layer LOD of the reference frame is updated according to the second set corresponding to the Mth layer LOD of the reference frame.

21. The method according to claim 18, wherein: The method further comprises: Before performing the division processing of the Mth layer LOD of the reference frame, the third set corresponding to the Mth layer LOD of the reference frame is initialized according to the third set corresponding to the M-1th layer LOD of the reference frame; and the second set corresponding to the Mth layer LOD of the reference frame is initialized to an empty set.

22. The method according to claim 17, wherein: The method further comprises: For the node to be processed in the first layer LOD in the current frame, the reference point is determined in the first layer LOD of the reference frame according to the first Morton code information corresponding to the node to be processed.

23. The method according to claim 22, wherein: The method further comprises: Before performing the division processing of the first layer LOD of the reference frame, the third set corresponding to the first layer LOD of the reference frame Initialize to an empty set; After performing the division process of the first layer LOD of the reference frame, the first set corresponding to the second layer LOD of the reference frame is updated according to the second set corresponding to the first layer LOD of the reference frame.

24. The method according to claim 15 or 22, wherein: The step of determining the attribute prediction value corresponding to the node to be processed based on the reconstructed value of the nearest neighbor node includes: Determine a reconstructed value of the nearest neighbor node as the attribute prediction value corresponding to the node to be processed; or, Performing weighted prediction processing on the reconstructed values ​​of the plurality of nearest neighbor nodes to obtain the attribute prediction value corresponding to the node to be processed; or, A target nearest neighbor node is determined among the plurality of nearest neighbor nodes according to a rate-distortion optimization algorithm, and a reconstructed value of the target nearest neighbor node is determined as a predicted attribute value corresponding to the node to be processed.

25. The method according to claim 24, wherein: The method further comprises: Determine the initial value of the attribute corresponding to the node to be processed; According to the attribute initial value and the attribute prediction value, a prediction residual corresponding to the node to be processed is determined, and the prediction residual is written into a bitstream.

26. The method of claim 17, wherein: The step of determining a reference point in a prediction point set of a reference frame of the current frame according to the first Morton code information corresponding to the node to be processed includes: Traversing the points in the node geometry of the reference frame, and determining a point whose first Morton code information is greater than or equal to the first Morton code information as the reference point corresponding to the node to be processed; or, Traverse the points in the first set corresponding to the Mth layer LOD of the reference frame, and determine the point whose first Morton code information is greater than or equal to the first Morton code information as the reference point corresponding to the node to be processed.

27. The method of claim 17, wherein: The determining of the search range based on the second Morton code information corresponding to the reference point includes: Determine the search step size; The search range is determined according to the second Morton code information and the search step size.

28. The method of claim 17, wherein: The method further comprises: The first Morton code information is determined according to the geometric coordinates of the node to be processed.

29. The method of claim 17, wherein: The method further comprises: The nodes in the current frame are divided according to the Morton code information of the nodes in the current frame to determine N layers of LOD corresponding to the current frame; wherein N is an integer greater than or equal to M.

30. The method of claim 29, wherein: The method further comprises: The nodes in the reference frame are divided according to the Morton code information of the nodes in the reference frame to determine the N layers of LOD corresponding to the reference frame.

31. An encoder, comprising a first determining unit; wherein: The first determination unit is configured to determine, for a node to be processed in the Mth layer LOD in the current frame, a reference point in a prediction point set of a reference frame of the current frame according to first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of a point in the prediction point set of the reference frame is determined by the Morton code information of the point; determine a search range based on second Morton code information corresponding to the reference point, and determine the nearest neighbor node corresponding to the node to be processed according to the search range; and determine an attribute prediction value corresponding to the node to be processed based on a reconstructed value of the nearest neighbor node.

32. 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 16 to 30 when running the computer program.

33. A decoder, comprising a second determination unit; wherein: The second determination unit is configured to determine, for a node to be processed in the Mth layer LOD in the current frame, a reference point in a prediction point set of a reference frame of the current frame according to first Morton code information corresponding to the node to be processed; wherein M is an integer greater than 1; the index of a point in the prediction point set of the reference frame is determined by the Morton code information of the point; determine a search range based on the second Morton code information corresponding to the reference point, and determine the nearest neighbor node corresponding to the node to be processed according to the search range; and determine an attribute prediction value corresponding to the node to be processed based on a reconstructed value of the nearest neighbor node.

34. 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 15 when running the computer program.

35. 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: a prediction residual.

36. 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 15 is implemented, or the method according to any one of claims 16 to 30 is implemented.