Point cloud coding and decoding method, device, equipment and storage medium
Patent Information
- Application Number
- CN202380094785.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2023-02-28
- Publication Date
- 2025-10-03
AI Technical Summary
The performance of point cloud coding in the existing technology is low, especially the direct coding method of points at isolated positions in geometric space is not efficient and fails to fully utilize the temporal correlation between adjacent frames.
The skip coding mode is introduced to improve the decoding efficiency of geometric information of point cloud by determining the geometric information in the prediction node of the current node and directly encoding and decoding based on the geometric information of the predicted point.
It improves the point cloud encoding and decoding performance, saves code words, improves the decoding efficiency of geometric information, and solves the problem of low efficiency of direct encoding at isolated points.
Smart Images

Figure CN120752918A_ABST
Abstract
Description
Point cloud encoding and decoding method, device, equipment and storage medium Technical Field
[0001] The present application relates to the field of point cloud technology, and in particular to a point cloud encoding and decoding method, apparatus, device and storage medium. Background Art
[0002] Capture equipment captures the surface of an object, generating point cloud data. This data consists of hundreds of thousands or even more points. During video production, this point cloud data is transmitted between the point cloud encoding device and the point cloud decoding device in the form of point cloud media files. However, such a large number of points poses a challenge to transmission. Therefore, the point cloud encoding device must compress the point cloud data before transmission.
[0003] Point cloud compression is also known as point cloud encoding. During the point cloud encoding process, using infer direct mode coding (IDCM) can significantly reduce complexity for points that are isolated in geometric space. When direct coding is used to encode and decode the current node, the geometric information of the point in the current node is directly encoded. However, related technologies that directly encode and decode the geometric information of the point in the current node suffer from low encoding performance.
[0004] Summary of the Invention
[0005] The embodiments of the present application provide a point cloud encoding and decoding method, apparatus, device and storage medium, which adopts a skip coding mode to encode the geometric information of the node midpoint when encoding, thereby improving the encoding and decoding performance of the point cloud.
[0006] In a first aspect, an embodiment of the present application provides a point cloud decoding method, comprising:
[0007] Determining a decoding mode for a current point in a current node, where the current node is a node to be decoded in a current frame to be decoded;
[0008] If the decoding mode of the current point is a skip decoding mode, then determining at least one prediction point of the current point among the points included in the N prediction nodes of the current node, where the prediction node is a node corresponding to the current node in the predicted reference frame of the current frame to be decoded, the skip decoding mode is a mode for skipping decoding of geometric information of the current point, and N is a positive integer;
[0009] Based on the geometric information of the at least one predicted point, the geometric information of the current point is determined.
[0010] In a second aspect, the present application provides a point cloud encoding method, comprising:
[0011] Determine a coding mode for a current point in a current node, where the current node is a node to be coded in a current frame to be coded;
[0012] If the encoding mode of the current point is the skip encoding mode, encoding of the geometric information of the current point is skipped.
[0013] In a third aspect, the present application provides a point cloud decoding device for executing the method of the first aspect or its respective implementations. Specifically, the device includes a functional unit for executing the method of the first aspect or its respective implementations.
[0014] In a fourth aspect, the present application provides a point cloud encoding device for executing the method of the second aspect or its respective implementations. Specifically, the device includes a functional unit for executing the method of the second aspect or its respective implementations.
[0015] In a fifth aspect, a point cloud decoder is provided, comprising a processor and a memory. The memory is configured to store a computer program, and the processor is configured to call and execute the computer program stored in the memory to perform the method of the first aspect or its respective implementations.
[0016] In a sixth aspect, a point cloud encoder is provided, comprising a processor and a memory. The memory is configured to store a computer program, and the processor is configured to call and execute the computer program stored in the memory to perform the method of the second aspect or its respective implementations.
[0017] In a seventh aspect, a point cloud encoding and decoding system is provided, comprising a point cloud encoder and a point cloud decoder. The point cloud decoder is configured to execute the method of the first aspect or its respective implementations, and the point cloud encoder is configured to execute the method of the second aspect or its respective implementations.
[0018] In an eighth aspect, a chip is provided for implementing the method described in any one of the first and second aspects above, or their respective implementations. Specifically, the chip includes a processor configured to load and execute a computer program from a memory, causing a device equipped with the chip to perform the method described in any one of the first and second aspects above, or their respective implementations.
[0019] In a ninth aspect, a computer-readable storage medium is provided for storing a computer program, which enables a computer to execute the method of any one of the first to second aspects or their respective implementations.
[0020] In a tenth aspect, a computer program product is provided, comprising computer program instructions, which enable a computer to execute the method of any one of the first to second aspects or their respective implementations.
[0021] In an eleventh aspect, a computer program is provided, which, when executed on a computer, enables the computer to execute the method in any one of the first to second aspects or their respective implementations.
[0022] Based on the above technical solution, when decoding the geometric information of the current node, first determine the decoding mode of the current point in the current node. If the decoding mode of the current point is the skip decoding mode, then determine at least one prediction point of the current point among the points included in the N prediction nodes of the current node, wherein the prediction node is the node corresponding to the current node in the predicted reference frame of the current frame to be decoded, and the skip decoding mode is a mode for skipping decoding the geometric information of the current point, and then determine the geometric information of the current point based on the geometric information of the at least one prediction point. It can be seen that when the embodiment of the present application performs geometric decoding on the current node, the correlation in the time domain between adjacent frames is considered to improve the efficiency of decoding the geometric information of the point cloud. Furthermore, the embodiment of the present application introduces a new encoding and decoding mode in the IDCM geometric decoding process, namely the skip encoding and decoding mode, which directly determines the geometric information of the current point based on the geometric information of the prediction point, thereby further improving the encoding and decoding efficiency. BRIEF DESCRIPTION OF THE DRAWINGS
[0023] Figure 1A is a schematic diagram of a point cloud;
[0024] Figure 1B is a partial enlarged view of the point cloud;
[0025] FIG2 is a schematic diagram of six viewing angles of a point cloud image;
[0026] FIG3 is a schematic block diagram of a point cloud encoding and decoding system according to an embodiment of the present application;
[0027] FIG4A is a schematic block diagram of a point cloud encoder provided in an embodiment of the present application;
[0028] FIG4B is a schematic block diagram of a point cloud decoder provided in an embodiment of the present application;
[0029] FIG5A is a schematic plan view;
[0030] FIG5B is a schematic diagram of node coding sequence;
[0031] FIG5C is a schematic diagram of a plane mark;
[0032] Figure 5D is a schematic diagram of sibling nodes;
[0033] Figure 5E is a schematic diagram of the intersection of the laser radar and the node;
[0034] FIG5F is a schematic diagram of neighborhood nodes at the same partition depth and the same coordinates;
[0035] FIG5G is a schematic diagram of neighboring nodes when the node is located at a lower plane position of the parent node;
[0036] FIG5H is a schematic diagram of neighboring nodes when the node is located at a high plane position of the parent node;
[0037] FIG5I is a schematic diagram of predictive coding of planar position information of a laser radar point cloud;
[0038] FIG6A is a schematic diagram of IDCM encoding;
[0039] FIG6B is a schematic diagram of coordinate transformation of a point cloud acquired by a rotating laser radar;
[0040] FIG6C is a schematic diagram of predictive coding in the X or Y axis direction;
[0041] FIG6D is a schematic diagram showing the angle of the X or Y plane predicted by the horizontal azimuth angle;
[0042] FIG6E is a schematic diagram of predictive coding of the X or Y axis;
[0043] 7A to 7C are schematic diagrams of geometric information encoding based on triangular facets;
[0044] FIG8A is a schematic diagram of LOD construction based on distance;
[0045] FIG8B is a subjective schematic diagram of the distance-based LOD generation process;
[0046] FIG8C is a flowchart of the predicted encoding;
[0047] FIG8D is a schematic diagram of LOD division;
[0048] FIG8E is a schematic diagram of inter-layer nearest neighbor search;
[0049] FIG8F is a schematic diagram of a nearest neighbor search based on spatial relationships;
[0050] FIG8G is a schematic diagram of a nearest neighbor search for coplanar, colinear, and co-point features;
[0051] FIG8H is a schematic diagram of a neighbor point search;
[0052] FIG8I is a schematic diagram of a neighbor point search;
[0053] FIG8J is a schematic diagram of neighbor point search based on a fast search algorithm;
[0054] FIG8K is a schematic diagram of an inter-frame nearest neighbor search;
[0055] FIG8L is a flowchart of a lifting transformation;
[0056] FIG8M is a schematic diagram of a RAHT transformation process along the x, y, and z directions;
[0057] FIG8N is a schematic diagram of a RAHT transformation;
[0058] FIG8O is a schematic diagram of a RAHT forward transform and inverse transform;
[0059] FIG9 is a schematic diagram of a point cloud decoding method according to an embodiment of the present application;
[0060] FIG10 is a schematic diagram of an octree partition;
[0061] FIG11 is a schematic diagram of a prediction node;
[0062] FIG12 is a schematic diagram of a domain node;
[0063] FIG13A is a schematic diagram of a predicted node of a current node in a predicted reference frame;
[0064] FIG13B is a schematic diagram of the predicted nodes of the current node in two predicted reference frames;
[0065] Figure 14 is a schematic diagram of the corresponding nodes of the domain node;
[0066] FIG15 is a schematic diagram of a point cloud encoding method according to an embodiment of the present application;
[0067] FIG16 is a schematic block diagram of a point cloud decoding device provided in an embodiment of the present application;
[0068] FIG17 is a schematic block diagram of a point cloud encoding device provided in an embodiment of the present application;
[0069] FIG18 is a schematic block diagram of an electronic device provided in an embodiment of the present application;
[0070] Figure 19 is a schematic block diagram of the point cloud encoding and decoding system provided in an embodiment of the present application. DETAILED DESCRIPTION
[0071] The present application can be applied to the field of point cloud upsampling technology, for example, it can be applied to the field of point cloud compression technology.
[0072] To facilitate understanding of the embodiments of the present application, the following briefly introduces the relevant concepts involved in the embodiments of the present application:
[0073] A point cloud is a set of irregularly distributed discrete points in space that represent the spatial structure and surface properties of a three-dimensional object or scene. Figure 1A is a schematic diagram of a 3D point cloud image, and Figure 1B is a zoomed-in view of Figure 1A. As can be seen from Figures 1A and 1B, the point cloud surface is composed of densely distributed points.
[0074] 2D images contain information at every pixel, and their distribution is regular, so there's no need to record their location. However, the distribution of points in a point cloud in 3D space is random and irregular, so recording the location of every point in space is necessary to fully represent a point cloud. Similar to 2D images, each location in the data collection process has corresponding attribute information.
[0075] Point cloud data is a specific record format for point clouds. Points in a point cloud can include both their location information and attribute information. For example, the location information of a point can be its 3D coordinate information. This information can also be referred to as its geometric information. For example, the attribute information of a point can include color information, reflectance information, normal vector information, and so on. Color information reflects the color of an object, while reflectance information reflects the surface material of the object. The color information can be information in any color space. For example, the color information can be in RGB. Another example is luminance and chrominance (YCbCr, YUV) information. For example, Y represents luminance (Luma), Cb (U) represents blue color difference, Cr (V) represents red, and U and V represent chroma (Chroma) to describe color difference information. For example, a point cloud obtained using laser measurement principles can include both its 3D coordinate information and its laser reflection intensity (reflectance). Another example is a point cloud obtained using photogrammetry principles, which can include both its 3D coordinate information and its color information. For example, a point cloud is obtained by combining the principles of laser measurement and photogrammetry. The points in the point cloud may include the three-dimensional coordinate information of the point, the laser reflection intensity (reflectance) of the point, and the color information of the point. Figure 2 shows a point cloud image, where Figure 2 shows six viewing angles of the point cloud image. Table 1 shows the point cloud data storage format consisting of a file header information part and a data part:
[0076] Table 1
[0077] In Table 1, the header information includes the data format, data representation type, the total number of point cloud points, and the content represented by the point cloud. For example, the point cloud in this example is in the ".ply" format, represented by ASCII code, with a total number of 207242 points. Each point has three-dimensional position information XYZ and three-dimensional color information RGB.
[0078] 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.
[0079] The ways to obtain point cloud data may include but are not limited to at least one of the following: (1) generation by computer equipment. Computer equipment can generate point cloud data based on virtual three-dimensional objects and virtual three-dimensional scenes. (2) 3D (3-Dimension) laser scanning acquisition. 3D laser scanning can obtain point cloud data of static real-world three-dimensional objects or three-dimensional scenes, and millions of point cloud data can be obtained per second; (3) 3D photogrammetry acquisition. 3D photography equipment (i.e., a group of cameras or camera equipment with multiple lenses and sensors) is used to collect real-world visual scenes to obtain point cloud data of real-world visual scenes. 3D photography can obtain point cloud data of dynamic real-world three-dimensional objects or three-dimensional scenes. (4) Point cloud data of biological tissues and organs can be obtained through medical equipment. In the medical field, point cloud data of biological tissues and organs can be obtained through medical equipment such as magnetic resonance imaging (MRI), computed tomography (CT), and electromagnetic positioning information.
[0080] Point clouds can be divided into dense point clouds and sparse point clouds according to the acquisition method.
[0081] Point clouds are divided into the following types according to the time series of the data:
[0082] The first type of static point cloud: the object is stationary and the device used to obtain the point cloud is also stationary;
[0083] The second type of dynamic point cloud: the object is moving, but the device that obtains the point cloud is stationary;
[0084] The third type of dynamic point cloud acquisition: the device that acquires the point cloud is moving.
[0085] Point clouds are divided into two categories according to their uses:
[0086] 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;
[0087] 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.
[0088] The aforementioned point cloud acquisition technologies reduce the cost and time required to acquire point cloud data, while improving data accuracy. This evolution in point cloud data acquisition has made it possible to acquire large amounts of point cloud data. However, as application demands grow, the processing of massive amounts of 3D point cloud data is facing bottlenecks due to storage space and transmission bandwidth limitations.
[0089] Taking a point cloud video with a frame rate of 30 fps (frames per second) as an example, each frame contains 700,000 points, each with coordinate information (xyz, float) and color information (RGB, uchar). Therefore, the data volume of a 10-second point cloud video is approximately 0.7 million points x (4 bytes x 3 + 1 byte x 3) x 30 fps x 10 seconds = 3.15 GB. For a 1280 x 720 two-dimensional video with a YUV sampling format of 4:2:0 and a frame rate of 24 fps, the data volume for 10 seconds is approximately 1280 x 720 x 12 bits x 24 frames x 10 seconds, which is approximately 0.33 GB. A 10-second two-view 3D video has a data volume of approximately 0.33 x 2 = 0.66 GB. Therefore, the data volume of a point cloud video far exceeds that of a 2D or 3D video of the same length. Therefore, point cloud compression has become a key issue in promoting the development of the point cloud industry to better manage data, save server storage space, and reduce the transmission traffic and time between the server and client.
[0090] The following introduces the relevant knowledge of point cloud encoding and decoding.
[0091] Figure 3 is a schematic block diagram of a point cloud encoding and decoding system involved in an embodiment of the present application. It should be noted that Figure 3 is only an example, and the point cloud encoding and decoding system of the embodiment of the present application includes but is not limited to that shown in Figure 3. As shown in Figure 3, the point cloud encoding and decoding system 100 includes an encoding device 110 and a decoding device 120. The encoding device is used to encode (which can be understood as compression) the point cloud data to generate a code stream, and transmit the code stream to the decoding device. The decoding device decodes the code stream generated by the encoding device to obtain decoded point cloud data.
[0092] The encoding device 110 of the embodiment of the present application can be understood as a device with a point cloud encoding function, and the decoding device 120 can be understood as a device with a point cloud decoding function, that is, the embodiment of the present application includes a wider range of devices for the encoding device 110 and the decoding device 120, such as smartphones, desktop computers, mobile computing devices, notebook (e.g., laptop) computers, tablet computers, set-top boxes, televisions, cameras, display devices, digital media players, point cloud game consoles, vehicle-mounted computers, etc.
[0093] In some embodiments, the encoding device 110 may transmit the encoded point cloud data (such as a code stream) to the decoding device 120 via the channel 130. The channel 130 may include one or more media and / or devices capable of transmitting the encoded point cloud data from the encoding device 110 to the decoding device 120.
[0094] In one example, the channel 130 includes one or more communication media that enable the encoding device 110 to transmit the encoded point cloud data directly to the decoding device 120 in real time. In this example, the encoding device 110 can modulate the encoded point cloud data according to a communication standard and transmit the modulated point cloud data to the decoding device 120. The communication media includes wireless communication media, such as radio frequency spectrum. Optionally, the communication media can also include wired communication media, such as one or more physical transmission lines.
[0095] In another example, channel 130 includes a storage medium that can store the point cloud data encoded by encoding device 110. The storage medium includes various locally accessible data storage media, such as optical disks, DVDs, and flash memory. In this example, decoding device 120 can retrieve the encoded point cloud data from the storage medium.
[0096] In another example, the channel 130 may include a storage server that can store the point cloud data encoded by the encoding device 110. In this example, the decoding device 120 can download the stored encoded point cloud data from the storage server. Alternatively, the storage server can store the encoded point cloud data and transmit the encoded point cloud data to the decoding device 120, such as a web server (e.g., for a website), a file transfer protocol (FTP) server, etc.
[0097] In some embodiments, the encoding device 110 includes a point cloud encoder 112 and an output interface 113. The output interface 113 may include a modulator / demodulator (modem) and / or a transmitter.
[0098] In some embodiments, the encoding device 110 may further include a point cloud source 111 in addition to the point cloud encoder 112 and the input interface 113 .
[0099] The point cloud source 111 may include at least one of a point cloud acquisition device (e.g., a scanner), a point cloud archive, a point cloud input interface, and a computer graphics system, wherein the point cloud input interface is used to receive point cloud data from a point cloud content provider, and the computer graphics system is used to generate point cloud data.
[0100] The point cloud encoder 112 encodes the point cloud data from the point cloud source 111 to generate a code stream. The point cloud encoder 112 transmits the encoded point cloud data directly to the decoding device 120 via the output interface 113. The encoded point cloud data can also be stored on a storage medium or storage server for subsequent reading by the decoding device 120.
[0101] In some embodiments, the decoding device 120 includes an input interface 121 and a point cloud decoder 122 .
[0102] In some embodiments, the decoding device 120 may further include a display device 123 in addition to the input interface 121 and the point cloud decoder 122 .
[0103] The input interface 121 includes a receiver and / or a modem and can receive the encoded point cloud data via the channel 130 .
[0104] The point cloud decoder 122 is used to decode the encoded point cloud data to obtain decoded point cloud data, and transmit the decoded point cloud data to the display device 123.
[0105] The decoded point cloud data is displayed on the display device 123. The display device 123 may be integrated with the decoding device 120 or external to the decoding device 120. The display device 123 may include various display devices, such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or other types of display devices.
[0106] In addition, Figure 3 is only an example, and the technical solution of the embodiment of the present application is not limited to Figure 3. For example, the technology of the present application can also be applied to unilateral point cloud encoding or unilateral point cloud decoding.
[0107] Current point cloud encoders can use two point cloud compression coding technology routes proposed by the Moving Picture Experts Group (MPEG) of the International Organization for Standardization: Video-based Point Cloud Compression (VPCC) and Geometry-based Point Cloud Compression (GPCC). VPCC projects a 3D point cloud onto a 2D image and uses existing 2D coding tools to encode the projected 2D image. GPCC uses a hierarchical structure to divide the point cloud into multiple units, encoding the entire point cloud by recording the division process.
[0108] The following uses the GPCC encoding and decoding framework as an example to illustrate the point cloud encoder and point cloud decoder applicable to the embodiments of the present application.
[0109] Figure 4A is a schematic block diagram of the point cloud encoder provided in an embodiment of the present application.
[0110] As can be seen from the above, points in a point cloud can include both their location information and their attribute information. Therefore, the encoding of points in a point cloud mainly includes location encoding and attribute encoding. In some examples, the location information of points in a point cloud is also called geometric information, and the corresponding location encoding of points in the point cloud can also be called geometric encoding.
[0111] In the GPCC coding framework, the geometric information of the point cloud and the corresponding attribute information are encoded separately.
[0112] As shown in Figure 4A below, the current geometric coding and decoding of G-PCC can be divided into octree-based geometric coding and decoding and prediction tree-based geometric coding and decoding.
[0113] The position encoding process involves preprocessing the points in the point cloud, such as coordinate transformation, quantization, and duplicate point removal. Next, geometric encoding is performed on the preprocessed point cloud, such as constructing an octree or prediction tree. Based on the constructed octree or prediction tree, geometric encoding is performed to form a geometric bitstream. Simultaneously, the position information of each point in the point cloud data is reconstructed based on the position information output by the constructed octree or prediction tree, resulting in a reconstructed value for each point's position information.
[0114] The attribute encoding process includes: given the reconstruction information of the input point cloud position information and the original value of the attribute information, selecting one of the three prediction modes for point cloud prediction, quantizing the predicted result, and performing arithmetic coding to form an attribute code stream.
[0115] As shown in Figure 4A, position encoding can be achieved through the following units:
[0116] Coordinate conversion (Tanmsform coordinates) unit 201, voxel (Voxelize) unit 202, octree partition (Analyze octree) unit 203, geometry reconstruction (Reconstruct geometry) unit 204, arithmetic encoding (Arithmetic enconde) unit 205, surface fitting unit (Analyze surface approximation) 206 and prediction tree construction unit 207.
[0117] The coordinate conversion unit 201 can be used to convert the world coordinates of a point in the point cloud into relative coordinates. For example, the geometric coordinates of the point are subtracted from the minimum value of the x, y, and z coordinate axes, which is equivalent to a DC removal operation, to convert the coordinates of the point in the point cloud from world coordinates to relative coordinates.
[0118] Voxelize unit 202, also known as the quantize and remove points unit, reduces the number of coordinates through quantization. After quantization, previously different points may be assigned the same coordinates. Based on this, duplicate points can be removed through deduplication. For example, multiple clouds with the same quantized position but different attribute information can be merged into a single cloud through attribute conversion. In some embodiments of the present application, voxel unit 202 is an optional unit module.
[0119] The octree partitioning unit 203 may encode the quantized point position information using an octree encoding scheme. For example, the point cloud may be partitioned using an octree, so that point positions correspond one-to-one with octree positions. Geometric encoding is performed by counting the point positions in the octree and setting their flags to 1.
[0120] In some embodiments, in the geometric information encoding process based on a triangle soup (trisoup), the point cloud is also octree-partitioned by the octree partitioning unit 203. However, unlike the geometric information encoding based on the octree, the trisoup does not need to divide the point cloud into unit cubes with a side length of 1X1X1 step by step. Instead, the division is stopped when the block (sub-block) has a side length of W. Based on the surface formed by the distribution of the point cloud in each block, at most twelve vertices (intersections) generated by the surface and the twelve edges of the block are obtained. The intersections are surface fitted by the surface fitting unit 206, and the fitted intersections are geometrically encoded.
[0121] The prediction tree construction unit 207 can encode the quantized point position information using a prediction tree encoding method. For example, the point cloud is divided into a prediction tree, so that the point positions correspond one-to-one with the positions of the nodes in the prediction tree. By counting the positions of the points in the prediction tree, different prediction modes are selected to predict the geometric position information of the nodes to obtain prediction residuals, and the geometric prediction residuals are quantized using quantization parameters. Finally, through continuous iteration, the prediction residuals of the prediction tree node position information, the prediction tree structure, and the quantization parameters are encoded to generate a binary bitstream.
[0122] The geometric reconstruction unit 204 can perform position reconstruction based on the position information output by the octree partitioning unit 203 or the intersection points fitted by the surface fitting unit 206 to obtain a reconstructed value of the position information of each point in the point cloud data. Alternatively, the geometric reconstruction unit 204 can perform position reconstruction based on the position information output by the prediction tree construction unit 207 to obtain a reconstructed value of the position information of each point in the point cloud data.
[0123] The arithmetic coding unit 205 may perform entropy coding on the position information output by the octree analysis unit 203 or the intersection points fitted by the surface fitting unit 206, or the geometric prediction residual values output by the prediction tree construction unit 207 to generate a geometric code stream; the geometric code stream may also be referred to as a geometry bitstream.
[0124] Attribute encoding can be achieved through the following units:
[0125] A color conversion unit 210 , a transfer attributes unit 211 , a region adaptive hierarchical transform (RAHT) unit 212 , a generate LOD unit 213 , a lifting transform unit 214 , a quantize coefficients unit 215 , and an arithmetic coding unit 216 .
[0126] It should be noted that the point cloud encoder 200 may include more, fewer, or different functional components than those shown in FIG. 4A .
[0127] The color conversion unit 210 may be configured to convert the RGB color space of a point in the point cloud into a YCbCr format or other formats.
[0128] The recoloring unit 211 recolors the color information using the reconstructed geometric information so that the uncoded attribute information corresponds to the reconstructed geometric information.
[0129] After the original value of the point attribute information is converted by the recoloring unit 211, any transformation unit can be selected to transform the points in the point cloud. The transformation units may include: RAHT transformation 212 and lifting transformation unit 214. The lifting transformation relies on generating the level of detail (LOD).
[0130] Either the RAHT transform or the lifting transform can be understood as being used to predict the attribute information of a point in a point cloud to obtain a predicted value of the attribute information of the point, and then to obtain a residual value of the attribute information of the point based on the predicted value of the attribute information of the point. For example, the residual value of the attribute information of the point can be the original value of the attribute information of the point minus the predicted value of the attribute information of the point.
[0131] In one embodiment of the present application, the process of generating LOD by the LOD generation unit includes: obtaining the Euclidean distance between points based on the position information of the points in the point cloud; and dividing the points into different detail expression layers based on the Euclidean distance. In one embodiment, the Euclidean distances can be sorted and then Euclidean distances in different ranges can be divided into different detail expression layers. For example, a point can be randomly selected as the first detail expression layer. The Euclidean distances between the remaining points and the point are then calculated, and the points whose Euclidean distances meet the first threshold requirement are classified as the second detail expression layer. The centroid of the points in the second detail expression layer is obtained, and the Euclidean distances between the points other than the first and second detail expression layers and the centroid are calculated, and the points whose Euclidean distances meet the second threshold requirement are classified as the third detail expression layer. And so on, all points are classified into the detail expression layer. By adjusting the threshold of the Euclidean distance, the number of points in each LOD layer can be increased. It should be understood that the LOD division method can also be adopted in other ways, and this application is not limited to this.
[0132] It should be noted that the point cloud can be directly divided into one or more detail expression layers, or the point cloud can be first divided into multiple point cloud slices, and then each point cloud slice can be divided into one or more LOD layers.
[0133] For example, a point cloud can be divided into multiple point cloud tiles, each containing between 550,000 and 1.1 million points. Each point cloud tile can be considered a separate point cloud. Each point cloud tile can be further divided into multiple detail expression layers, each containing multiple points. In one embodiment, the detail expression layers can be divided based on the Euclidean distance between points.
[0134] The quantization unit 215 may be used to quantize the residual value of the attribute information of the point. For example, if the quantization unit 215 is connected to the RAHT transformation unit 212, the quantization unit 215 may be used to quantize the residual value of the attribute information of the point output by the RAHT transformation unit 212.
[0135] The arithmetic coding unit 216 may perform entropy coding on the residual value of the attribute information of the point using zero run length coding to obtain an attribute code stream. The attribute code stream may be bit stream information.
[0136] Figure 4B is a schematic block diagram of the point cloud decoder provided in an embodiment of the present application.
[0137] As shown in Figure 4B, the decoder 300 can obtain the point cloud code stream from the encoding device and obtain the position information and attribute information of the points in the point cloud by parsing the code. The decoding of the point cloud includes position decoding and attribute decoding.
[0138] The position decoding process includes: performing arithmetic decoding on the geometric code stream; constructing an octree and then merging it to reconstruct the point position information to obtain the reconstructed position information of the point; and performing coordinate transformation on the reconstructed position information of the point to obtain the point position information. The point position information can also be called the point's geometric information.
[0139] The attribute decoding process includes: obtaining the residual value of the attribute information of the point in the point cloud by parsing the attribute code stream; obtaining the residual value of the attribute information of the point after dequantization by dequantizing the residual value of the attribute information of the point; based on the reconstruction information of the point position information obtained in the position decoding process, selecting one of the following RAHT inverse transform and lifting inverse transform to perform point cloud prediction to obtain the predicted value, and adding the predicted value to the residual value to obtain the reconstructed value of the attribute information of the point; performing inverse color space conversion on the reconstructed value of the attribute information of the point to obtain the decoded point cloud.
[0140] As shown in Figure 4B, position decoding can be achieved by the following units:
[0141] Arithmetic decoding unit 301, octree reconstruction unit 302, surface reconstruction unit 303, geometry reconstruction unit 304, inverse transform coordinates unit 305 and prediction tree reconstruction unit 306.
[0142] Attribute encoding can be achieved through the following units:
[0143] an arithmetic decoding unit 310 , an inverse quantization unit 311 , an inverse RAHT transform unit 312 , a LOD generation unit 313 , an inverse lifting transform unit 314 , and an inverse color transform unit 315 .
[0144] It should be noted that decompression is the inverse process of compression. Similarly, the functions of each unit in the decoder 300 can refer to the functions of the corresponding units in the encoder 200. In addition, the point cloud decoder 300 may include more, fewer, or different functional components than those in Figure 4B.
[0145] For example, the decoder 300 can divide the point cloud into multiple LODs based on the Euclidean distance between points in the point cloud. The decoder 300 then decodes the attribute information of the points in the LODs in sequence. For example, the number of zeros (zero_cnt) in the zero-run encoding technique is calculated to decode the residual based on zero_cnt. The decoding framework 200 then dequantizes the decoded residual value and adds the dequantized residual value to the predicted value of the current point to obtain the reconstructed value of the point cloud until all point clouds are decoded. The current point will be used as the nearest neighbor of the subsequent LOD point, and the reconstructed value of the current point will be used to predict the attribute information of the subsequent point.
[0146] The above is the basic process of the point cloud codec based on the GPCC codec framework. With the development of technology, some modules or steps of the framework or process may be optimized. This application is applicable to the basic process of the point cloud codec based on the GPCC codec framework, but is not limited to this framework and process.
[0147] The following introduces octree-based geometric coding and prediction tree-based geometric coding.
[0148] The geometric encoding based on octree includes: first, coordinate transformation 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 (octree / quadtree / binary tree) in the order of breadth-first traversal, and the placeholder code of each node is encoded. In an implicit geometric division method, the bounding box of the point cloud is first calculated. Assume that the d x >d y >d z The bounding box corresponds to a cuboid. When geometrically partitioning, the binary tree partitioning is first 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 zWhen the condition is met, the octree partitioning will continue until the leaf node obtained by the partitioning is a 1x1x1 unit cube. The partitioning will stop and the points in the leaf node will be encoded to generate a binary code stream. In the process of binary tree / quadtree / octree partitioning, two parameters are introduced: K and M. Parameter K indicates the maximum number of binary tree / quadtree partitions before octree partitioning; parameter M is used to indicate that the minimum block side length corresponding to binary tree / quadtree partitioning is 2 M . At the same time, K and M must meet the following conditions: Assume d max =max(d x ,d y ,d z ),d min =min(d x ,d y ,d z ), parameter K satisfies: K>=d max -d min ; Parameter M satisfies: M>=d min The parameters K and M meet the above conditions because the priority of the partitioning method in the current G-PCC implicit geometric partitioning process is binary tree, quadtree and octree. When the node block size does not meet the conditions of binary tree / quadtree, the node will be partitioned into octree until the minimum unit of leaf node 1X1X1 is reached.
[0149] 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 using plane coding.
[0150] For example, as shown in Figure 5A, the (a) series belongs to the low plane position in the Z-axis direction, and the (b) series belongs to the high plane position in the Z-axis direction. Taking (a) as an example, it can be seen that the four occupied child nodes of the current node are all located in the low plane position of the current node in the Z-axis direction. Therefore, it can be considered that the current node belongs to a Z plane and is a low plane in the Z-axis direction. Similarly, (b) shows that the occupied child nodes of the current node are located in the high plane position of the current node in the Z-axis direction.
[0151] Taking (a) as an example, the efficiency of octree coding and plane coding is compared. As shown in Figure 5B, if the octree coding method is used for (a) in Figure 1, the placeholder information of the current node is represented as: 11001100. However, if the plane coding method is used, first, an identifier needs to 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 needs to be represented. Secondly, only the placeholder information of the low plane node in the Z-axis direction needs to be encoded (that is, the placeholder information of the four child nodes 0246). Therefore, encoding the current node based on the plane coding method only requires encoding 6 bits, which can reduce the representation of 2 bits compared to the original octree coding. Based on this analysis, plane coding has more obvious coding efficiency than octree coding. Therefore, for an occupied node, if the plane coding method is used in a certain dimension, as shown in Figure 5C, first, the plane identification (planarMode) and plane position (PlanePos) information of the current node in the dimension need to be represented, and then the occupancy information of the current node is encoded based on the plane information of the current node. It should be noted that: PlaneMode i (i=0,1,2): 0 means the current node is not a plane in the direction of i axis. When the node is a plane in the direction of i axis, PlanePosition i :0 means the current node is a plane in the direction of the i-axis and the plane position is a low plane, 1 means the current node is a high plane in the direction of the i-axis. For example, i=0 represents the X-axis, i=1 represents the Y-axis, and i=2 represents the Z-axis.
[0152] The following details how to determine whether a node meets the plane coding conditions in the current G-PCC standard and predictively encode the node plane identifier and plane position information when the node meets the plane coding conditions.
[0153] Currently, there are three types of conditions in G-PCC to determine whether a node meets the conditions for plane coding. The following describes them one by one:
[0154] The first method is to judge based on the plane probability of the node in each dimension.
[0155] First, determine the local area density (local_node_density) of the current node and the probability Prob(i) of the current node in each dimension.
[0156] When the local area density of a node is less than the threshold Th (Th = 3), the plane probability Prob(i) of the current node in three dimensions is compared with the thresholds Th0, Th1, and Th2, where Th0 < Th1 < Th2 (Th0 = 0.6, Th1 = 0.77, Th2 = 0.88). Below, Eligible i (i = 0, 1, 2) represents whether plane coding is started in each dimension, where Eligible i The judgment process is shown in formula (1). For example, if Eligible i >= threshold, it means that plane coding is started in the i-th dimension: Eligible i = Prob(i) >= threshold (1)
[0157] It should be noted that the threshold changes adaptively. For example: when Prob(0) > Prob(1) > Prob(2), the threshold values are shown in formula (2): Eligible0 = Prob(0) >= Th0 Eligible1 = Prob(1) >= Th1 Eligible2 = Prob(2) >= Th2 (2)
[0158] Below, the update process of local_node_density and the update of Prob(i) are introduced.
[0159] In one example, Prob(i) is updated by the following formula (3): Prob(i) new = (Lx Prob(i) + δ(coded node)) / L + 1 (3)
[0160] where L = 255, and when the coded node is a plane, it is 1, otherwise it is 0.
[0161] In one example, local_node_density is updated by the following formula (4): local_node_density new = local_node_density + 4 * numSiblings (4)
[0162] where local_node_density is initialized to 4, numSiblings is the number of sibling nodes of the node. As shown in Figure 5D, the current node is the left node, and the right node is the sibling node of the current node. Then the number of sibling nodes of the current node is 5 (including itself).
[0163] The second method is to determine whether the nodes in the current layer meet the requirements of plane coding based on the point cloud density of the current layer.
[0164] The density of the points in the current layer is used to determine whether to perform plane coding on the nodes in the current layer. Assuming that the number of points in the current point cloud to be coded is pointCount, the number of points reconstructed after IDCM coding is numPointCountRecon, and because the octree is coded in the order of breadth-first traversal, the number of nodes to be coded in the current layer can be obtained as nodeCount. It is assumed that planarEligibleKOctreeDepth is used to indicate whether plane coding is started in the current layer. Among them, the judgment process of planarEligibleKOctreeDepth is shown in formula (5): planarEligibleKOctreeDepth=(pointCount-numPointCountRecon) <nodeCount*1.3 (5)
[0165] When planarEligibleKOctreeDepth is true, all nodes in the current layer are plane coded; otherwise, no plane coding is performed and only octree coding is used.
[0166] The third method is to determine whether the current node meets the requirements of plane coding based on the acquisition parameters of the lidar point cloud.
[0167] As shown in Figure 5E, the large cube node at the top is simultaneously traversed by two lasers, so the current node is not a plane in the Z-axis direction. The small cube node at the bottom is small enough that it cannot be traversed by both nodes simultaneously, so it is likely a plane. Therefore, based on the number of lasers corresponding to the current node, we can determine whether the current node meets the requirements for plane coding.
[0168] The following describes the predictive coding of plane identification information and plane position information for nodes that currently meet the plane coding conditions.
[0169] 1. Predictive Coding of Plane Marking Information
[0170] Currently, three contexts are used to encode plane identification information, that is, the plane representation in each dimension is designed separately.
[0171] The following introduces the encoding of planar position information of non-lidar point clouds and lidar point clouds respectively.
[0172] 1) Encoding of non-lidar point cloud planar position information
[0173] 1. Predictive coding of planar position information.
[0174] The plane position information is predictively coded based on the following information:
[0175] (1) 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;
[0176] (2) The spatial distance between the nodes at the same partition depth and the same coordinates as the current node and the current node is “close” or “far”;
[0177] (3) The plane position of the node at the same partition depth and the same coordinates as the current node;
[0178] (4) Coordinate dimension (i=0, 1, 2).
[0179] As shown in Figure 5F, the current node to be encoded is the left node, then the neighboring node is searched for as the right node at the same octree partition depth level and the same vertical coordinate, and the distance between the two nodes is judged as "near" and "far", and the plane position of the reference node is used.
[0180] In one example, as shown in FIG5G , the black node is the current node. If the current node is located on the lower plane of the parent node, the plane position of the current node is determined as follows:
[0181] a) If any of the child nodes 4 to 7 of the dashed node is occupied, and all the dot nodes are unoccupied, it is very likely that there is a plane in the current node, and the plane is at a lower position.
[0182] b) If the child nodes 4 to 7 of the dashed node are not occupied, and any dotted node is occupied, it is very likely that there is a plane in the current node, and the plane is at a higher position.
[0183] c) If the child nodes 4 to 7 of the dashed node are all empty nodes and the dotted nodes are all empty nodes, the plane position cannot be inferred and is therefore marked as unknown.
[0184] If any of the child nodes 4 to 7 of the dashed node are occupied and any of the dotted nodes are occupied, the plane position cannot be inferred and is therefore marked as unknown.
[0185] In another example, as shown in FIG5H , the black node is the current node. If the node is at a high plane position of the parent node, the plane position of the current node is determined as follows:
[0186] a) If any of the dot node's child nodes 4 to 7 is occupied, and the dashed node is not occupied, it is very likely that there is a plane in the current node, and the plane is at a lower position.
[0187] b) If the child nodes 4 to 7 of the dot node are not occupied, but the node with the dashed line is occupied, it is very likely that a plane exists in the current node, and the plane is located at a higher position.
[0188] c) If the child nodes 4 to 7 of the dot node are all unoccupied, and the dashed node is unoccupied, the plane position cannot be inferred and is therefore marked as unknown.
[0189] d) If one of the child nodes 4-7 of the dotted node is occupied and the dashed node is occupied, the plane position cannot be inferred and is therefore marked as unknown.
[0190] 2) Coding of LiDAR point cloud plane position information
[0191] Figure 5I shows the predictive coding of the plane position information of the laser radar point cloud. The plane position of the current node is predicted by using the laser radar acquisition parameters. The position is quantized into four intervals by using the intersection position of the current node and the laser ray, and finally used as the context 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 point are (x, y, z), then first calculate the vertical tangent value tanθ of the current point relative to the lidar. The calculation process is shown in formula (6):
[0192] Because each laser has a certain offset angle relative to the laser radar, the relative tangent value tanθ of the current node relative to the laser is calculated. corr,L , the specific calculation process is shown in formula (7):
[0193] Finally, the corrected tangent value of the current node is used to predict the plane position of the current node. Specifically, assuming that the tangent value of the lower boundary of the current node is tan(θ bottom), and the tangent value of the upper boundary is tan(θ top), according to tanθ corr,L The plane position is quantized into 4 quantization intervals, which are the contexts of the plane position.
[0194] However, the octree-based geometric information coding mode only has an efficient compression rate for points with correlation 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 shown in Figure 6A:
[0195] (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.
[0196] (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.
[0197] (3) The number of sibling nodes of the current node is greater than 1.
[0198] If the current node does not meet the DCM coding qualifications, it will be divided into octrees. If it meets the DCM coding qualifications, the number of points contained in the node will be further determined. When the number of points is less than the threshold 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 uses DCM coding, otherwise octree coding is still used. 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: 1: There is only one point (or multiple points, but they are duplicate points); 2: Contains two points. Finally, the geometric information of each point needs to be encoded. Assume 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.
[0199] Next, the IDCM encoding process is introduced in detail:
[0200] 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, specifically including the following methods:
[0201] 1. If the current node does not meet the requirements of the DCM node, exit directly (that is, the number of points is greater than 2 points and is not a duplicate point).
[0202] 2. If the number of points numPonts in the current node is less than or equal to 2, the encoding process is as follows:
[0203] 1) First, encode whether the numPonts of the current node is greater than 1;
[0204] 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.
[0205] 3. If the number of points numPonts in the current node is greater than 2, the encoding process is as follows:
[0206] 1) First, encode the numPonts of the current node to be less than or equal to 1;
[0207] 2) Secondly, encode whether the second point of the current node is a repeated point, and then encode whether the number of repeated points of the current node is greater than 1. When the number of repeated points is greater than 1, it is necessary to perform exponential Golomb decoding on the remaining number of repeated points.
[0208] 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.
[0209] Human eye point cloud
[0210] 1) If the current node contains only one point, the geometric information of the point in three dimensions will be directly encoded (Bypass coding).
[0211] 2) If the current node contains two points, the priority coding 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 priority coding axis is determined by the method shown in formula (8): dirextAxis = (nodePos[0] <nodePos[1]) (8)
[0212] That is, the axis with the smaller node coordinate geometric position is used as the coordinate axis dirextAxis for priority encoding.
[0213] Secondly, first encode the geometry information of the priority-encoded coordinate axis dirextAxis as follows, assuming that the geometry bit depth to be encoded corresponding to the priority-encoded axis is nodeSizeLog2, and assuming that the coordinates of the two points are pointPos[a] and pointPos[b] respectively:
[0214] 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:
[0215] for(int axisIdx=0; axisIdx<3; ++axisIdx)
[0216] for(int mask=(1<<nodeSizeLog2[axisIdx])> >1;mask;mask>>1)
[0217] encodePosBit(!!(pointPos[axisIdx]&mask));
[0218] For LiDAR point clouds
[0219] 1) If the current node contains two points, the priority coding axis dirextAxis will be obtained by using the geometric coordinates of the points. Assuming that the geometric coordinates of the current node are nodePos, the priority coding axis is determined by the method shown in formula (9): dirextAxis = (nodePos[0] <nodePos[1]) (9)
[0220] That is, the axis with the smaller node coordinate geometric position is used as the coordinate axis dirextAxis for priority encoding. It should be noted here that the currently compared coordinate axes only include the x and y axes, and do not include the z axis.
[0221] Secondly, first encode the geometry information of the priority-encoded coordinate axis dirextAxis as follows, assuming that the geometry bit depth to be encoded corresponding to the priority-encoded axis is nodeSizeLog2, and assuming that the coordinates of the two points are pointPos[a] and pointPos[b] respectively:
[0222] After encoding the priority encoding axis dirextAxis, the geometric coordinates of the current point are encoded.
[0223] 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 to be encoded in the direct encoding is nodeSizeLog2, the encoding method is as follows: for(int mask=(1<<nodeSizeLog2)> >1;mask;mask>>1) encodePosBit(!!(pointPos[directAxis]&mask));
[0224] It should be noted here that all geometric accuracy information in the directAxis direction will be encoded here.
[0225] After encoding all the precision of the directAxis coordinate direction, the LaserIdx corresponding to the current point will be calculated first, that is, pointLaserIdx in Figure 6B, and the LaserIdx of the current node will be calculated, that is, nodeLaserIdx. Then, the LaserIdx of the node, that is, nodeLaserIdx, will be used to predict the LaserIdx of the point, that is, pointLaserIdx. The LaserIdx of the node or point is calculated as follows:
[0226] 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:
[0227] 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.
[0228] The specific algorithm is shown in Figure 6C. First, the LaserIdx corresponding to the current point is used to obtain the corresponding horizontal azimuth prediction value, 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 shown in formula (10), assuming that the geometric coordinates of the node are nodePos:
[0229] 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 by each laser ray rotating one circle. The rotation angular velocity deltaPhi of each laser can then be calculated using the number of rotation points of each laser, as shown in formula (11):
[0230] As shown in FIG6D , 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 The specific calculation formula is shown in formula (12):
[0231] Finally, as shown in FIG6E , by using the predicted value of the horizontal azimuth angle and the low plane horizontal azimuth of the current node and the horizontal azimuth of the high plane To predict the geometric information of the current node. The details are as follows:
[0232] int
[0233] int
[0234] int context=(angLel≥0&&angLeR≥0)||(angLel<0&&angLeR<0)? 0:2
[0235] int absAngleL=abs(angLel)
[0236] int absAngleR=abs(angLeR)
[0237] context+=absAngleL>absAngleR? 0:1
[0238] context+=maxAngle>minAngle<<1?4:0
[0239] 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 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:
[0240] int tanTheta=tanθ laserIdx
[0241] int zOffset = Z laserIdx
[0242] Z_pred=radius×tanTheta-zOffset
[0243] 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.
[0244] It is important to note that when partitioning nodes into leaf nodes, the number of duplicate points in the leaf nodes must be encoded in the case of lossless geometric coding. Ultimately, the placeholder information for all nodes is encoded to generate a binary bitstream. Furthermore, G-PCC currently introduces a plane coding mode. During the geometric partitioning process, it determines whether the child nodes of the current node are in the same plane. If the child nodes of the current node meet the condition of being in the same plane, the child nodes of the current node are represented by that plane.
[0245] In 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 DCM decoding mode of the current node, then obtains the number of points in the current DCM node, and finally decodes the geometric information 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.
[0246] The following is a detailed introduction to the IDCM decoding process:
[0247] 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:
[0248] (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.
[0249] (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.
[0250] (3) The number of sibling nodes of the current node is greater than 1.
[0251] 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.
[0252] Next, decode the number of points numPoints of the current node. The specific decoding mode is as follows:
[0253] 1) First decode whether the numPonts of the current node is greater than 1;
[0254] 2) 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.
[0255] 3) If the numPonts of the current node obtained by decoding is less than or equal to 1, continue decoding whether 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. Then continue decoding whether 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).
[0256] If the current node does not meet the requirements of the DCM node, that is, the number of points is greater than 2 points and it is not a duplicate point, exit directly.
[0257] 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.
[0258] Human eye point cloud
[0259] 1) If the current node contains only one point, the geometric information of the point in three dimensions will be directly decoded (Bypass coding);
[0260] 2) If the current node contains two points, the priority decoding 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 method shown in formula (13) is used to determine the priority encoding axis: dirextAxis = (nodePos[0] <nodePos[1]) (13)
[0261] That is to say, the axis with the smaller node coordinate geometric position is used as the coordinate axis dirextAxis for priority decoding.
[0262] Secondly, decode the geometry information of the priority decoded coordinate axis dirextAxis as follows, assuming that the bit depth of the geometry to be decoded corresponding to the priority decoded axis is nodeSizeLog2, and assuming that the coordinates of the two points are pointPos[0] and pointPos[1] respectively:
[0263] 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:
[0264] For LiDAR point clouds
[0265] 1) If the current node contains two points, the priority decoding coordinate axis dirextAxis will be obtained by using the geometric coordinates of the points. Assuming that the geometric coordinates of the current node are nodePos, the priority encoding coordinate axis is determined by the method shown in formula (14): dirextAxis = (nodePos[0] <nodePos[1]) (14)
[0266] That is to say, the axis with the smaller node coordinate geometric position is used as the coordinate axis dirextAxis for priority decoding. It should be noted here that the currently compared coordinate axes only include the x and y axes, and do not include the z axis.
[0267] Secondly, first decode the geometry information of the priority-encoded coordinate axis dirextAxis as follows, assuming that the bit depth of the geometry to be encoded corresponding to the priority-encoded axis is nodeSizeLog2, and assuming that the coordinates of the two points are pointPos[0] and pointPos[1] respectively:
[0268] After decoding the priority decoding axis dirextAxis, the geometric coordinates of the current point are decoded.
[0269] 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:
[0270] It should be noted here that all geometric accuracy information in the directAxis direction will be decoded here.
[0271] After decoding all the precision 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 LaserIdx of the current point and the predicted residual information of the LaserIdx of the node are decoded to obtain ResLaserIdx. The calculation formula is shown in Formula 15: PointLaserIdx = nodeLaserIdx + ResLaserIdx (15)
[0272] 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.
[0273] Specifically, as shown in FIG6B , 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 Assume that the geometric coordinates of the node are nodePos, and the horizontal azimuth is The calculation method between the node geometry information is shown in formula (16):
[0274] 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 by each laser ray rotating one circle. The rotation angular velocity deltaPhi of each laser can then be calculated using the number of rotation points of each laser, as shown in formula (17):
[0275] Next, as shown in FIG6D , 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 The predicted value of the horizontal azimuth angle is calculated as shown in formula (18):
[0276] Finally, by using the predicted value of the horizontal azimuth and the low plane horizontal azimuth of the current node and the horizontal azimuth of the high plane To predict the geometric information of the current node. The details are as follows:
[0277] int
[0278] int
[0279] int context=(angLel≥0&&angLeR≥0)||(angLel<0&&angLeR<0)? 0:2
[0280] int absAngleL=abs(angLel)
[0281] int absAngleR=abs(angLeR)
[0282] context+=absAngleL>absAngleR? 0:1
[0283] context+=maxAngle>minAngle<<1?4:0
[0284] 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:
[0285] int
[0286] int tanTheta=tanθ laserIdx
[0287] int zOffset = Z laserIdx
[0288] Z_pred=radius×tanTheta-zOffset
[0289] 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.
[0290] In the trisoup (triangle soup)-based geometric information coding framework, geometric partitioning is also performed first. However, unlike geometric information coding based on binary trees, quad trees, and octrees, this method does not need to gradually partition the point cloud into unit cubes with side lengths of 1x1x1. Instead, the partitioning stops when the block (sub-block) has 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.
[0291] When reconstructing point cloud geometry based on trisoup, the decoding end first decodes vertex coordinates to complete triangle reconstruction. This process is shown in Figures 7A to 7C. The block shown in Figure 7A contains three vertices (v1, v2, v3). The set of triangles formed by these three vertices in a certain order is called triangle soup, or trisoup, as shown in Figure 7B. Afterwards, sampling is performed on this set of triangles, and the resulting sampling points are used as the reconstructed point cloud within the block, as shown in Figure 7C.
[0292] The geometric coding based on the prediction tree includes: first, sorting the input point cloud. The currently used sorting methods include unordered, Morton order, azimuth order, and radial distance order. At the encoding end, the prediction tree structure is established by using two different methods, including: KD-Tree (high-latency slow mode) and using the lidar calibration information to divide each point into different Lasers and establish a prediction structure according to different Lasers (low-latency fast mode). 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.
[0293] Based on the geometric decoding of 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.
[0294] After the geometric encoding is completed, the geometric information is 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 (Level of Detail) division, and the other is to directly perform RAHT (Region Adaptive Hierarchal Transform) 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.
[0295] 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 as follows. For each component of the three-dimensional coordinate represented by a d-bit binary number, its three components can be expressed as formula (19):
[0296] in, The highest bits of x, y, and z are To the lowest position The corresponding binary value. The Morton code M is x, y, z starting from the highest bit, arranged in sequence To the lowest bit, the calculation formula of M is shown in the following formula (20):
[0297] in, The highest bit of M To the lowest position 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 w of each point is set to 1.
[0298] There are 4 general test conditions for GPCC:
[0299] Condition 1: The geometric position is limited and the attributes are lost;
[0300] Condition 2: Geometric position lossless, attribute lossy;
[0301] Condition 3: Geometric position lossless, attribute loss limited;
[0302] Condition 4: Geometric position and attributes are lossless.
[0303] The general test sequences include Cat1A, Cat1B, Cat3-fused, and Cat3-frame, a total of four categories. 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.
[0304] There are two technical routes of GPCC, which are distinguished by the algorithm used for geometric compression, and are divided into octree coding branch and prediction tree coding branch.
[0305] Among them, in the octree coding branch, 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 until the leaf node obtained by division is a 1X1X1 unit cube. The division stops when the division is completed. 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. At the decoding end, the decoding end obtains the placeholder code of each node by continuous parsing in the order of breadth-first traversal, and continuously divides the nodes in sequence until the division is a 1x1x1 unit cube. In the case of geometric lossless decoding, the number of points contained in each leaf node needs to be parsed to finally recover the geometric reconstructed point cloud information.
[0306] In the prediction tree coding branch, the encoder establishes the prediction tree structure using two different approaches: a KD-Tree (high-latency, slow mode) and a low-latency, fast mode, where each point is assigned to a different laser using lidar calibration information and the prediction structure is established accordingly. Next, based on the prediction tree structure, each node in the tree is traversed, and the geometric position information of the node is predicted using different prediction modes to obtain a prediction residual. This geometric prediction residual is then quantized using a quantization parameter. Finally, through continuous iteration, the prediction residuals of the prediction tree node position information, the prediction tree structure, and the quantization parameters are encoded to generate a binary bitstream. On the decoder side, the decoder continuously parses the bitstream to reconstruct the prediction tree structure. The geometric position prediction residual information and quantization parameters for each prediction node are then parsed and dequantized to recover the reconstructed geometric position information for each node, completing the geometric reconstruction at the decoder.
[0307] The previous section introduces the geometric codec under the G-PCC coding framework. The following section introduces the attribute codec under the G-PCC coding framework.
[0308] As shown in FIG. 4A, the current G-PCC coding framework includes three attribute coding methods: Predicting Transform (PT), Lifting Transform (LT), and Region Adaptive Hierarchical Transform (RAHT). The first two perform point cloud prediction coding based on the generation order of LOD, while RAHT adaptively transforms the attribute information from bottom to top according to the construction levels of the octree. The following will separately elaborate on these three point cloud attribute coding methods.
[0309] Currently, the attribute prediction module of G-PCC adopts a nearest neighbor attribute prediction coding scheme based on a Level-of-details (LoDs) structure. The construction methods of LOD include a distance-based LOD construction scheme, a fixed sampling rate-based LOD construction scheme, and an octree-based LOD construction scheme, etc. In the distance threshold-based LOD construction scheme, before constructing LOD, the point cloud is first sorted by Morton to ensure strong attribute correlation between adjacent points. As shown in FIG. 8A, an example of the distance-based LOD construction process is given. According to the L Manhattan (Manhattan) distances (dl) l = 0, 1, … L-1 preset by the user in advance, 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, by traversing 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 detail level 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.
[0310] 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 or higher level 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 prediction residual.
[0311] Exemplarily, based on the following formula (21), the attribute prediction value is determined:
[0312] Among them, N represents the number of predicted points in the nearest neighbor point set of point i, Pi represents the sum 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 of the nearest neighbor point m after reconstruction, Attr i ′ represents the attribute prediction value of the current point i, and the number of points N is a preset value.
[0313] 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.
[0314] In one example, Figure 8B shows the LOD visualization result. 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.
[0315] In one example, as shown in Figure 8C, a flowchart for G-PCC attribute prediction is provided. For the kth point in a point cloud, the three nearest neighbors of the kth point are first determined. Based on the attribute reconstruction information of these three neighbors, the attribute prediction value of the kth point is determined. Next, based on the original attribute value and the attribute prediction value of the kth point, the attribute prediction residual for the kth point is obtained. This attribute prediction residual is quantized and arithmetic coded to produce the attribute bitstream.
[0316] In some embodiments, 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 the 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 the attribute reconstruction values of the three nearest neighboring points according to the rate-distortion optimization (RDO) error! The reference source was not found. For example, when encoding the attribute value of point P2 in Figure 8A, the predictor variable index of the attribute value of the nearest neighbor point P4 is set to 1; the attribute predictor variable indexes of the second nearest neighbor point P5 and the third nearest neighbor point P0 are set to 2 and 3 respectively; the predictor variable index of the weighted average of points P0, P5 and P4 is set to 0, as shown in Table 2:
[0317] Table 2 Samples of candidate prediction items for attribute coding
[0318] Finally, RDO is used to select the best predictor variable. The weighted average formula is shown in formula (22):
[0319] In formula (22) represents the spatial geometric weight from the neighboring point j to the current point i, and the calculation formula is shown in formula (23):
[0320] in, 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.
[0321] The following introduces the attribute prediction residuals and quantification.
[0322] 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 as shown in formula (24), the attribute residual (r i ) i∈0…k-1 Denoted as:
[0323] Furthermore, the prediction residual is quantized based on the following formula (25):
[0324] In formula (25), 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.
[0325] The encoding end reconstructs the attribute value
[0326] The purpose of reconstruction at the encoding end is to predict the subsequent points. Before reconstructing the attribute value, the residual should be dequantized, as shown in formula (26), is the residual after inverse quantization:
[0327] Then, based on the following formula (27), and predicted value Add up to get the reconstruction value of point i
[0328] 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.
[0329] Intra-frame nearest neighbor search:
[0330] There are two algorithms for searching the nearest neighbor within a frame: inter-layer nearest neighbor search and intra-layer nearest neighbor search. After LOD division, a pyramid structure similar to that shown in Figure 8D is formed.
[0331] 1. Inter-layer nearest neighbor search
[0332] As shown in FIG8E and FIG8A , different LOD layers are obtained based on the geometric information division, namely LOD0, LOD1 and LOD2, and the points in LOD0 are used to predict the attributes of the points in the next LOD layer in the process of inter-layer nearest neighbor search.
[0333] The following is a detailed description of the entire process of searching for the nearest neighbor within a frame:
[0334] During the entire LOD partitioning process, there are three sets O(k), L(k), and I(k). Among them, k is the index of the LOD layer during LOD partitioning, and I(k) is the input point set during the current LOD layer partitioning. After LOD partitioning, 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. The entire LOD partitioning process is as follows:
[0335] (1) Initialization
[0336] if k=0,L(k)←{}. Otherwise L(k)←L(k-1)
[0337] O(k)←{}
[0338] (2) Using the LOD partitioning algorithm, the sampling points are stored in O(k), and the remaining points are divided into L(k);
[0339] (3) When the next iteration is performed, I←O(k).
[0340] 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.
[0341] 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:
[0342] Nearest neighbor search based on spatial relationships
[0343] When predicting the current point P, neighbor search is performed using the parent block (Block B) corresponding to point P. As shown in FIG8F , points in neighbor blocks that are coplanar or colinear with the current parent block are searched for attributes.
[0344] Illustratively, the spatial relationships of coplanarity, colinearity, and copoint are shown in FIG8G .
[0345] 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.
[0346] If the N nearest neighbors of the current point are still not found after performing coplanar, colinear, and co-point nearest neighbor searches, a fast search algorithm is used to obtain the N nearest neighbors of the current point. The specific algorithm is shown in Figure 8H. 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. Next, based on the Morton code of the current point, the first reference point (j) with a larger Morton code than the current point is found in the reference frame. Next, a nearest neighbor search is performed within the range [j-searchRange, j+searchRange].
[0347] The rest of the specific algorithms for updating the nearest neighbor are the same as the inter-frame nearest neighbor search algorithm and will not be described here. The specific algorithms will be mentioned in the inter-frame nearest neighbor search algorithm.
[0348] 2. Nearest neighbor search within the layer
[0349] As shown in FIG8I , when the intra-layer prediction algorithm is turned on, a nearest neighbor search is 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 (inter-layer nearest neighbor search is also performed).
[0350] When performing intra-attribute layer prediction, a nearest neighbor search is performed based on a fast search algorithm. The specific algorithm is shown in Figure 8J. Assuming the current point's Morton code index is i, the 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 and will not be detailed here. It will be discussed in detail later.
[0351] The above describes the nearest neighbor search within a frame. The following describes the nearest neighbor search between frames.
[0352] Inter-frame nearest neighbor search:
[0353] As shown in Figure 8H, 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. 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].
[0354] The current nearest neighbor search within and between frames is based on block-based neighborhood search, as shown in Figure 8K below. When searching 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:
[0355] 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;
[0356] Second layer: Based on the first layer, the blocks of the first layer are also processed every M (M=2 5 =32) blocks are divided into one block;
[0357] The third layer: Based on the second layer, the blocks of the first layer are also processed every M (M=2 5 =32) blocks are divided into one block;
[0358] Finally, the predicted structure shown in Figure 8K is obtained.
[0359] When performing attribute prediction based on the prediction structure shown in Figure 8K, 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:
[0360] First layer: BucketSize_0 = 2 5 =32;
[0361] Second layer: BucketSize_1=2 5 =32×BucketSize_0=1024;
[0362] Third layer: BucketSize_2=2 5 =32×BucketSize_1=32768.
[0363] 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. 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.
[0364] The following is an introduction to 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 as shown in formula (28): idx_2=index / BucketSize_2 (28)
[0365] 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, as shown in formula (29): startIdx1=idx_2×BucketSize_1 endIdx=idx_2×BucketSize_1+BucketSize_1-1 (29)
[0366] The index of the first layer block is obtained based on the index of the second layer block based on the same algorithm.
[0367] 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.
[0368] Assume that the distance of 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 three dimensions of the bounding box and maxPos is the maximum value of the three dimensions of the bounding box. Then the distance D between the current point and the bounding box is calculated as shown in formula (30): 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 (30)
[0369] When D is less than or equal to Dist, the points in the current block will be traversed.
[0370] The following introduces the lifting transform encoding of point cloud attribute information.
[0371] Figure 8L shows the encoding process of the lifting transform. The lifting transform also predicts and encodes the point cloud attributes based on LOD. The difference from the predictive transform is that the lifting transform first divides the LOD into high and low layers, and predicts in the reverse order of the LOD generation layer. In the prediction process, an update operator is introduced 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.
[0372] Step 1: Segmentation Process
[0373] 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).
[0374] Step 2: Prediction Process
[0375] 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. The prediction residual D(N) is shown in formula (31): D(N) = H(N) - P(N) (31)
[0376] Step 3: Update Process
[0377] 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 formula (32): L′(N)=L(N)+U(N) (32)
[0378] The above process will iterate continuously until the lowest LOD according to the order of LOD from high to low.
[0379] 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.
[0380] The following is an introduction to region-adaptive hierarchical transformation.
[0381] The regional adaptive hierarchical transform (RAHT) is a Haar wavelet transform that can transform point cloud attribute information from the spatial domain to the frequency domain, further reducing the correlation between point cloud attributes. Its main idea is to transform the nodes in each layer from the three dimensions of x, y, and z (as shown in Figure 8M) in a bottom-up manner according to the octree structure, and iterate until the root node of the octree. As shown in Figure 8N, its basic idea is to perform wavelet transform based on the hierarchical structure of the octree, associate attribute information with the octree nodes, and recursively transform the attributes of the occupied nodes in the same parent node in a bottom-up manner. For each layer, the nodes are transformed from the three dimensions of x, y, and z until the root node of the octree is reached. In the process of hierarchical transformation, 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, and all high-pass (AC) coefficients are encoded by the arithmetic encoder.
[0382] 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.
[0383] Figure 8O shows the corresponding transformation and inverse transformation process. Assume that g′ L,2x,y,z and g′L,2x+1,y,z are the DC coefficients of two 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 (33) is:
[0384] For example, where T w0,w1 The transformation matrix is determined according to the following formula (34):
[0385] 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.
[0386] The above introduces the encoding and decoding technology of point cloud geometric information and attribute information.
[0387] From the above, it can be seen that in the environment of geometric lossy coding, in the process of inter-frame coding of point cloud geometric information, the geometric information of the current point cloud to be encoded is only predicted by using the geometric information of the reference frame, which makes the encoding and decoding of the geometric information of the point cloud inaccurate, thereby reducing the encoding and decoding performance of the point cloud.
[0388] In order to solve the above technical problems, the embodiment of the present application optimizes the direct DCM encoding of nodes at the encoding / decoding end, and uses the geometric information of the predicted node in the predicted reference frame to predict and decode the geometric information of the point in the IDCM node to be encoded and decoded by considering the temporal correlation between adjacent frames. The efficiency of geometric information encoding and decoding of the point cloud is further improved by considering the temporal correlation between adjacent frames. Furthermore, the embodiment of the present application introduces a new encoding and decoding mode, namely the skipCode mode, in the IDCM geometric encoding and decoding process, which does not edit the geometric information of the current point, but directly determines the geometric information of the current point based on the geometric information of the predicted point, thereby saving codewords and further improving encoding and decoding efficiency.
[0389] The following describes the point cloud encoding and decoding method involved in the embodiments of the present application in conjunction with specific embodiments.
[0390] First, taking the decoding end as an example, the point cloud decoding method provided in the embodiment of the present application is introduced.
[0391] Figure 9 is a schematic diagram of a point cloud decoding method according to an embodiment of the present application. The point cloud decoding method according to an embodiment of the present application can be implemented by the point cloud decoding device or point cloud decoder shown in Figure 3 or Figure 4B or Figure 8B above.
[0392] As shown in FIG9 , the point cloud decoding method of the embodiment of the present application includes:
[0393] S101: Determine the decoding mode of the current point in the current node.
[0394] The current node is the node to be decoded in the current frame to be decoded.
[0395] As can be seen from the above, a point cloud includes geometric information and attribute information, and decoding of a point cloud includes geometric decoding and attribute decoding. The embodiments of the present application relate to geometric decoding of a point cloud.
[0396] In some embodiments, the geometric information of the point cloud is also referred to as the position information of the point cloud. Therefore, the geometric decoding of the point cloud is also referred to as the position decoding of the point cloud.
[0397] In the octree-based encoding method, the encoding end constructs an octree structure of the point cloud based on the geometric information of the point cloud. As shown in Figure 10, the point cloud is enclosed by a minimum rectangular block. The bounding box is first divided into octrees to obtain 8 nodes. The occupied nodes among these 8 nodes, that is, the nodes including the points, are further divided into octrees, and so on, until the division is to the voxel level, for example, to a 1X1X1 cube. The point cloud octree structure obtained by such division includes multiple layers of nodes, for example, N layers. During encoding, the occupancy information of each layer is encoded layer by layer until the voxel-level leaf nodes of the last layer are encoded. That is to say, in octree encoding, the point cloud is divided into octrees, and finally the points in the point cloud are divided into voxel-level leaf nodes of the octree. The encoding of the point cloud is achieved by encoding the entire octree.
[0398] Correspondingly, the decoder first decodes the point cloud geometry stream to obtain the occupancy information of the root node of the point cloud's octree. Based on this occupancy information, it determines the child nodes of the root node, that is, the nodes in the second layer of the octree. Next, it decodes the geometry stream to obtain the occupancy information of each node in the second layer. Based on this occupancy information, it determines the nodes in the third layer of the octree, and so on.
[0399] However, the octree-based geometric information encoding mode has an efficient compression rate for points with correlation in space, and for points in isolated positions in the geometric space, the use of direct encoding can greatly reduce the complexity and improve the encoding and decoding efficiency.
[0400] Since direct encoding directly encodes the geometric information of the points included in a node, if the node contains a large number of points, the compression effect of direct encoding is poor. Therefore, before performing direct encoding on a node in the octree, it is first determined whether the node can be encoded using direct encoding. If it is determined that the node can be encoded using direct encoding, the geometric information of the points included in the node is directly encoded using direct encoding. If it is determined that the node cannot be encoded using direct encoding, the node is further divided using the octree method.
[0401] Specifically, the encoder first determines whether the node is eligible for direct encoding. If so, it then determines whether the node's point count is less than or equal to a preset threshold. If so, the node is determined to be eligible for direct encoding. Next, the number of points in the node and the geometric information of each point are encoded into the bitstream. Correspondingly, after determining that the node is eligible for direct decoding, the decoder decodes the bitstream, obtains the node's point count and geometric information of each point, and performs geometric decoding of the node.
[0402] Currently, when decoding the geometric information of the current node, the correlation between adjacent frames is not considered, resulting in poor geometric prediction decoding performance. In an embodiment of the present application, when decoding the geometric information of the current node, the predicted node of the current node is determined in the predicted reference frame of the current frame to be decoded. Based on the geometric information of the predicted node, the geometric information of the current node is predicted and decoded. This takes into account the correlation between frames, thereby improving geometric decoding performance.
[0403] In an embodiment of the present application, to further improve the decoding efficiency of the geometric information of the point cloud, a skip decoding mode (skipDecodeMode) is proposed. This skip decoding mode skips decoding the geometric information of the current point and instead determines the geometric information of the current point based on the geometric information of the predicted point (i.e., geometric reconstruction information). For example, the geometric information of the predicted point is directly determined as the geometric information of the current point. This can greatly improve the decoding efficiency of the point cloud.
[0404] It should be noted that the current frame to be decoded is a point cloud frame. In some embodiments, the current frame to be decoded is also referred to as the current frame, the current point cloud frame, or the point cloud frame to be decoded. The current node can be understood as any non-leaf node in the current frame to be decoded, which is a non-empty node. In other words, the current node is not a leaf node in the octree corresponding to the current frame to be decoded, that is, the current node is any middle node in the octree, and the current node is not a non-empty node, that is, it includes at least one point.
[0405] The skip decoding mode proposed in the embodiments of the present application is based on the direct decoding mode. That is, before decoding the current point in the current node using the skip decoding mode, it is first necessary to determine whether the current node is a true IDCM node, that is, whether the current node is decoded using the direct decoding mode. If it is determined that the current node is decoded using the direct decoding mode, it is then determined whether the current point in the current node is decoded using the skip decoding mode.
[0406] The embodiment of the present application does not limit the specific method of determining the decoding mode of the current point.
[0407] In some embodiments, if the current node is an IDCM node, the encoder defaults to using the skip encoding mode to encode the geometric information of the current point in the current node, i.e., skipping encoding the geometric information of the current point. Correspondingly, the decoder defaults to using the skip decoding mode to decode the geometric information of the current point. In this case, the decoder determines that the decoding mode for the current point is the skip decoding mode.
[0408] In some embodiments, the encoder uses a rate-distortion optimization algorithm to select a coding method from multiple preset coding methods to encode the current point. It should be noted that these multiple predicted coding methods include skip coding. The encoder then encodes an index or indication of the selected coding method into the bitstream. Correspondingly, the decoder decodes the bitstream to obtain the decoding mode for the current point.
[0409] In some embodiments, the above S101 includes the following steps:
[0410] S101-A, determining whether the current node meets the start condition of the skip decoding mode;
[0411] S101-B: Determine the decoding mode of the current point according to whether the current node meets the starting condition of the skip decoding mode.
[0412] That is, in this embodiment, the decoding end determines whether the current point in the current node is decoded using the skip decoding mode by judging whether the current node meets the starting condition of the skip decoding mode.
[0413] The following describes the specific process by which the decoding end determines whether the current node meets the start condition of the skip decoding mode.
[0414] The embodiment of the present application does not limit the specific content of the starting conditions of the skip decoding mode.
[0415] In one example, a condition for starting the skip decoding mode includes: the number of points included in the prediction node is greater than or equal to a first value. Optionally, the first value is a positive integer.
[0416] In another example, the activation condition of the skip decoding mode includes: the number of points included in the predicted node is the same as the number of points included in the current node.
[0417] In another example, the activation condition of the skip decoding mode includes: the number of points included in the predicted node is the same as the number of points included in the current node, and the direct decoding mode of the predicted node is the same as the direct decoding mode of the current node.
[0418] In the embodiment of the present application, the decoding end determines whether the current node meets the start condition of the skip decoding mode in the following ways, but is not limited to:
[0419] The first method is to decode the bitstream and obtain a second flag, such as skipCodeEligible, which is used to indicate whether the current node meets the conditions for starting the skip decoding mode; based on the second flag, whether the current node meets the conditions for starting the skip decoding mode is determined.
[0420] In the first approach, the encoder determines, based on one of the three aforementioned activation conditions, that the current node meets the conditions for enabling skip coding mode. It then writes a second flag, skipCodeEligible, into the bitstream to indicate whether the current node meets the conditions for enabling skip coding mode. The decoder then decodes the bitstream to obtain the second flag, skipCodeEligible, and uses it to determine whether the current node meets the conditions for enabling skip decoding mode.
[0421] For example, if the value of the second flag skipCodeEligible is the third value, it is determined that the current node meets the starting condition of the skip decoding mode.
[0422] For another example, if the value of the second flag skipCodeEligible is the fourth value, it is determined that the current node does not meet the starting condition of the skip decoding mode.
[0423] The embodiment of the present application does not limit the specific values of the third value and the fourth value.
[0424] Optionally, the third value is 1 and the fourth value is 0.
[0425] In the first method, the decoding end can determine whether the current node meets the start condition of the skip decoding mode by directly decoding the code stream. The method is simple and saves computing resources of the decoding end.
[0426] In the second method, the decoding end determines whether the current node meets the conditions for starting the skip decoding mode based on the conditions for starting the skip decoding mode. For example, if the current node meets the conditions for starting the skip decoding mode, skipCodeEligible is set to true; if the current node does not meet the conditions for starting the skip decoding mode, skipCodeEligible is set to false. In this case, the above S101-A includes the following steps S101-A1 and S101-A2:
[0427] S101-A1, determining N prediction nodes of a current node in a prediction reference frame of a current frame to be decoded;
[0428] S101-A2: Determine whether the current node meets a start condition of the skip decoding mode based on the number of points included in at least one prediction node among the N prediction nodes.
[0429] The following describes a specific process of determining N prediction nodes of a current node in a prediction reference frame of a current frame to be decoded.
[0430] It should be noted that the embodiments of the present application do not limit the number of prediction reference frames for the current frame to be decoded. For example, the current frame to be decoded may have one prediction reference frame, or the current frame to be decoded may have multiple prediction reference frames. Furthermore, the embodiments of the present application do not limit the number N of prediction nodes for the current node, and this number is determined based on actual needs.
[0431] The embodiment of the present application does not limit the specific method of determining the prediction reference frame of the current frame to be decoded.
[0432] In some embodiments, one or several decoded frames before the current frame to be decoded are determined as prediction reference frames for the current frame to be decoded.
[0433] For example, if the current frame to be decoded is a P frame, the inter-frame reference frame of the P frame includes the previous frame of the P frame (i.e., the forward frame). Therefore, the previous frame of the current frame to be decoded (i.e., the forward frame) can be determined as the predicted reference frame of the current frame to be decoded.
[0434] For another example, if the current frame to be decoded is a B frame, the inter-frame reference frames of the B frame include the previous frame of the P frame (i.e., the forward frame) and the next frame of the P frame (i.e., the backward frame). Therefore, the previous frame of the current frame to be decoded (i.e., the forward frame) can be determined as the predicted reference frame of the current frame to be decoded.
[0435] In some embodiments, one or several decoded frames following the current frame to be decoded are determined as prediction reference frames for the current frame to be decoded.
[0436] For example, if the current frame to be decoded is a B frame, the next frame after the current frame to be decoded may be determined as a prediction reference frame for the current frame to be decoded.
[0437] In some embodiments, one or several decoded frames before the current frame to be decoded, and one or several decoded frames after the current frame to be decoded, are determined as prediction reference frames for the current frame to be decoded.
[0438] For example, if the current frame to be decoded is a B frame, the previous frame and the next frame of the current frame to be decoded can be determined as prediction reference frames of the current frame to be decoded. In this case, the current frame to be decoded has two prediction reference frames.
[0439] As shown in Figure 11, in an embodiment of the present application, the decoding end determines the prediction node of the current node in the predicted reference frame of the current frame to be decoded, and then compares the number of points and / or IDCM mode included in the prediction node with the number of points and / or IDCM mode included in the current node to determine whether the current node meets the start-up conditions of the skip decoding mode.
[0440] The following takes the current frame to be decoded including K prediction reference frames as an example to introduce the specific process of determining N prediction nodes of the current node in the prediction reference frames of the current frame to be decoded in S101-A1.
[0441] In some embodiments, the decoding end selects at least one prediction reference frame from the K prediction reference frames based on the placeholder information of the node in the current frame to be decoded and the placeholder information of the node in each of the K prediction reference frames, and then searches for the predicted node of the current node in the at least one prediction reference frame. For example, at least one prediction reference frame whose placeholder information of the node is closest to the placeholder information of the node in the current frame to be decoded is selected from the K prediction reference frames, and then searches for the predicted node of the current node in the at least one prediction reference frame.
[0442] In some embodiments, the decoding end may determine N predicted nodes of the current node through the following steps S101-A11 and S101-A12:
[0443] S101-A11. For a k-th prediction reference frame among K prediction reference frames, determine at least one prediction node of a current node in the k-th prediction reference frame, where k is a positive integer less than or equal to K, and K is a positive integer;
[0444] S101-A12. Determine N prediction nodes of the current node based on at least one prediction node of the current node in K prediction reference frames.
[0445] In this embodiment, the decoding end determines at least one prediction node of the current node from each of the K prediction reference frames, and finally aggregates at least one prediction node in each of the K prediction reference frames to obtain N prediction nodes of the current node.
[0446] Among them, the process of the decoding end determining at least one prediction point of the current node in each of the K prediction reference frames is the same. For the sake of convenience of description, the kth prediction reference frame among the K prediction reference frames is used as an example for explanation.
[0447] The specific process of determining at least one prediction node of the current node in the kth prediction reference frame in the above S101-A11 is introduced below.
[0448] The embodiment of the present application does not limit the specific manner in which the decoding end determines at least one prediction node of the current node in the kth prediction reference frame.
[0449] Method 1: In the kth prediction reference frame, a prediction node of the current node is determined. For example, a node in the kth prediction reference frame that has the same partition depth as the current node is determined as the prediction node of the current node.
[0450] For example, assuming that the current node is located at the third level of the octree of the current frame to be decoded, the nodes at the third level of the octree in the k-th predicted reference frame can be obtained, and then the prediction node of the current node can be determined from these nodes.
[0451] In one example, if the number of prediction nodes of the current node in the kth prediction reference frame is 1, then among the points at which the kth prediction reference frame and the current node are at the same division depth, a node whose occupancy information is the smallest different from that of the current node can be selected, recorded as node 1, and node 1 is determined as a prediction node of the current node in the kth prediction reference frame.
[0452] In another example, if the number of prediction nodes of the current node in the kth prediction reference frame is greater than 1, the node 1 determined above and at least one domain node of node 1 in the kth prediction reference frame, such as at least one domain node that is coplanar, colinear, or co-point with node 1, are determined as the prediction nodes of the current node in the kth prediction reference frame.
[0453] Method 2, in the above S101-A11, determining at least one prediction node of the current node in the k-th prediction reference frame includes the following steps S101-A11-a1 to S101-A113:
[0454] S101-A11-a1. In a current frame to be decoded, determine M domain nodes of a current node, where the M domain nodes include the current node, and M is a positive integer.
[0455] S101-A11-a2, for the i-th domain node among the M domain nodes, determine the corresponding node of the i-th domain node in the k-th prediction reference frame, where i is a positive integer less than or equal to M;
[0456] S101-A11-a3. Determine at least one prediction node of the current node in the k-th prediction reference frame based on the corresponding nodes of the M domain nodes in the k-th prediction reference frame.
[0457] In this implementation, before determining at least one prediction node of the current node in the kth prediction reference frame, the decoding end first determines M domain nodes of the current node in the current frame to be decoded, and the M domain nodes include the current node itself.
[0458] It should be noted that in the embodiment of the present application, there is no restriction on the specific method of determining the M domain nodes of the current node.
[0459] In one example, the M domain nodes of the current node include at least one domain node among the domain nodes that are coplanar, colinear, and co-point with the current node in the current frame to be decoded. As shown in Figure 12, the current node includes 6 coplanar nodes, 12 colinear nodes, and 8 co-point nodes.
[0460] In another example, the M domain nodes of the current node may include not only at least one domain node in the current frame to be decoded that is coplanar, colinear, and co-point with the current node, but also other nodes within the reference neighborhood range. This embodiment of the present application does not impose any restrictions on this.
[0461] Based on the above steps, the decoding end determines the M domain nodes of the current node in the current frame to be decoded, determines the corresponding node of each of the M domain nodes in the k-th prediction reference frame, and then determines at least one prediction node of the current node in the k-th prediction reference frame based on the corresponding nodes of the M domain nodes in the k-th prediction reference frame.
[0462] The embodiment of the present application does not limit the specific implementation method of S101-A11-a3.
[0463] In one possible implementation, at least one corresponding node is selected from the corresponding nodes of the M domain nodes in the k-th prediction reference frame as the at least one prediction node of the current node in the k-th prediction reference frame. For example, at least one corresponding node whose placeholder information has the smallest difference between the placeholder information of the M domain nodes in the k-th prediction reference frame and the placeholder information of the current node is selected from the corresponding nodes of the M domain nodes in the k-th prediction reference frame as the at least one prediction node of the current node in the k-th prediction reference frame. The method for determining the difference between the placeholder information of the corresponding node and the placeholder information of the current node can refer to the above-mentioned process for determining the difference in placeholder information, for example, performing an XOR operation on the placeholder information of the corresponding node and the placeholder information of the current node, and using the XOR operation result as the difference between the placeholder information of the corresponding node and the placeholder information of the current node.
[0464] In another possible implementation, the decoding end determines the corresponding nodes of the M domain nodes in the kth prediction reference frame as at least one prediction node for the current node in the kth prediction reference frame. For example, each of the M domain nodes has a corresponding node in the kth prediction reference frame, resulting in M corresponding nodes. These M corresponding nodes are determined as the prediction nodes for the current node in the kth prediction reference frame, for a total of M prediction nodes.
[0465] The above describes the process of determining at least one prediction node for the current node in the kth prediction reference frame. Thus, the decoder can use the same method as above to determine at least one prediction node for the current node in each of the K prediction reference frames.
[0466] For example, if the current frame to be decoded is a P frame, the K predicted reference frames include the forward frame of the current frame to be decoded. At this time, the decoding end can determine at least one prediction node of the current node in the forward frame based on the above steps. Exemplarily, as shown in Figure 13A, it is assumed that the current node includes 3 domain nodes, which are respectively recorded as node 11, node 12 (current node) and node 13. These 3 domain nodes correspond to a corresponding node in the forward frame, which are respectively recorded as node 21, node 22 and node 23, and then node 21, node 22 and node 23 are determined as the 3 prediction nodes of the current node in the forward frame, or 1 or 2 nodes are selected from node 21, node 22 and node 23 to be determined as 1 or 2 prediction nodes of the current node in the forward frame.
[0467] For another example, if the current frame to be decoded is a B frame, the K prediction reference frames include the forward frame and the backward frame of the current frame to be decoded. At this time, based on the above steps, the decoding end can determine at least one prediction node of the current node in the forward frame, and at least one prediction node of the current node in the backward frame. For example, as shown in Figure 13B, it is assumed that the current node includes three domain nodes, respectively recorded as node 11, node 12, and node 13. These three domain nodes correspond to a corresponding node in the forward frame, respectively, recorded as node 21, node 22, and node 23. These three domain nodes correspond to a corresponding node in the backward frame, respectively, recorded as node 41, node 42, and node 43. In this way, the decoding end can determine node 21, node 22, and node 23 as the three prediction nodes of the current node in the forward frame, or select one or two nodes from node 21, node 22, and node 23 to determine as one or two prediction nodes of the current node in the forward frame. Similarly, the decoding end can determine node 41, node 42 and node 43 as the three prediction nodes of the current node in the backward frame, or select one or two nodes from node 41, node 42 and node 43 as one or two prediction nodes of the current node in the backward frame.
[0468] After the decoding end determines at least one prediction node of the current node in each of the K prediction reference frames, it performs the above steps S101-A12, that is, determines N prediction nodes of the current node based on at least one prediction node of the current node in the K prediction reference frames.
[0469] In one example, at least one prediction node of the current node in K prediction reference frames is determined as N prediction nodes of the current node.
[0470] For example, K=2, that is, the K prediction reference frames include the first prediction reference frame and the second prediction reference frame. Assume that the current node has 2 prediction nodes in the first prediction reference frame and 3 prediction nodes in the second prediction reference frame. In this way, it can be determined that the current node has 5 prediction nodes, and N=5.
[0471] In another example, N prediction nodes of the current node are screened out from at least one prediction node of the current node in K prediction reference frames.
[0472] Continuing with the above example, assume K = 2, meaning the K prediction reference frames include the first prediction reference frame and the second prediction reference frame. Assume the current node has two prediction nodes in the first prediction reference frame and three prediction nodes in the second prediction reference frame. From these five prediction nodes, select the IDCM node and determine it as the final prediction node for the current node.
[0473] In the second method, after the decoding end determines the M domain nodes of the current node in the current frame to be decoded, it determines the corresponding node of each of the M domain nodes in the kth prediction reference frame, and then determines at least one prediction point of the current node in the kth prediction reference frame based on the corresponding node of each of the M domain nodes.
[0474] Mode 3, in the above S101-A11, determining at least one prediction node of the current node in the k-th prediction reference frame includes the following steps S101-A11-b1 to S101-A11-b3:
[0475] S101-A11-b1, determining the corresponding node of the current node in the k-th prediction reference frame;
[0476] S101-A11-b2, determining at least one domain node of the corresponding node;
[0477] S101-A11-b3. Determine at least one domain node as at least one prediction node of the current node in the k-th prediction reference frame.
[0478] In this method 3, for each of the K predicted reference frames, the decoding end first determines the corresponding node of the current node in each predicted reference frame. For example, the corresponding node 1 of the current node in the predicted reference frame 1 is determined, and the corresponding node 2 of the current node in the predicted reference frame 2 is determined. Then, the decoding end determines at least one domain node of each corresponding node. For example, at least one domain node of the corresponding node 1 is determined in the predicted reference frame 1, and at least one domain node of the corresponding node 2 is determined in the predicted reference frame 2. In this way, at least one domain node of the corresponding node 1 in the predicted reference frame 1 can be determined as at least one predicted node of the current node in the predicted reference frame 1, and at least one domain node of the corresponding node 2 in the predicted reference frame 2 can be determined as at least one predicted node of the current node in the predicted reference frame 2.
[0479] Determining the corresponding node of the i-th domain node in the k-th prediction reference frame in S101-A11-b1 of the aforementioned method 3 is essentially the same as determining the corresponding node of the current node in the k-th prediction reference frame in S101-A11-a1 of the aforementioned method 2. For ease of description, the i-th domain node and the current node are referred to as the i-th node. The specific process of determining the corresponding node of the i-th node in the k-th prediction reference frame is described below.
[0480] The decoding end determines the corresponding node of the i-th node in the k-th prediction reference frame in at least the following ways:
[0481] In method 1, a node in the k-th prediction reference frame that has the same division depth as the i-th node is determined as the corresponding node of the i-th node.
[0482] For example, assuming that the i-th node is located at the third level of the octree of the current frame to be decoded, the nodes at the third level of the octree in the k-th prediction reference frame can be obtained, and the corresponding node of the i-th node can be determined from these nodes. For example, among the points in the k-th prediction reference frame that are at the same partition depth as the i-th node, the node whose placeholder information differs the least from that of the i-th node is selected and determined as the corresponding node of the i-th node in the k-th prediction reference frame.
[0483] Mode 2: The above-mentioned S101-A11-a1 and S101-A11-b1 include the following steps:
[0484] Step 11: In the current frame to be decoded, determine the parent node of the i-th node as the i-th parent node;
[0485] Step 12: Determine the matching node of the i-th parent node in the k-th prediction reference frame as the i-th matching node;
[0486] Step 13: Determine one of the child nodes of the i matching nodes as the corresponding node of the i-th node in the k-th prediction reference frame.
[0487] In this method 2, for the i-th node, the decoding end determines the parent node of the i-th node in the current frame to be decoded, and then determines the matching node of the parent node of the i-th prediction domain node in the k-th prediction reference frame. For ease of description, the parent node of the i-th node is recorded as the i-th parent node, and the matching node of the parent node of the i-th node in the k-th prediction reference frame is determined as the i-th matching node. Then, a child node of the child node of the i-th matching node is determined as the corresponding node of the i-th node in the k-th prediction reference frame, thereby accurately determining the corresponding node of the i-th node in the k-th prediction reference frame.
[0488] The specific process of determining the matching node of the i-th parent node in the k-th prediction reference frame in the above step 12 is introduced below.
[0489] The embodiment of the present application does not limit the specific method by which the decoding end determines the matching node of the i-th parent node in the k-th prediction reference frame.
[0490] In some embodiments, the partition depth of the i-th parent node in the current frame to be decoded is determined, for example, the i-th parent node is at the second level of the octree of the current frame to be decoded. In this way, the decoding end can determine one of the nodes in the k-th prediction reference frame that have the same partition depth as the i-th parent node as the matching node of the i-th parent node in the k-th prediction reference frame. For example, one of the nodes in the second level of the k-th prediction reference frame can be determined as the matching node of the i-th parent node in the k-th prediction reference frame.
[0491] In some embodiments, the decoding end determines a matching node for the i-th parent node in the k-th predicted reference frame based on the placeholder information of the i-th parent node. Specifically, since the placeholder information for the i-th parent node in the current frame to be decoded has been decoded, and the placeholder information for each node in the k-th predicted reference frame has also been decoded, the decoding end can search for a matching node for the i-th parent node in the k-th predicted reference frame based on the placeholder information of the i-th parent node.
[0492] For example, the node with the smallest difference between the placeholder information of the k-th prediction reference frame and the placeholder information of the i-th parent node is determined as the matching node of the i-th parent node in the k-th prediction reference frame.
[0493] For example, assuming the placeholder information of the i-th parent node is 11001101, the k-th predicted reference frame is searched for the node whose placeholder information has the smallest difference from the placeholder information 11001101. Specifically, the decoder performs an XOR operation on the placeholder information of the i-th parent node and the placeholder information of each node in the k-th predicted reference frame. The node with the smallest XOR result in the k-th predicted reference frame is determined as the matching node of the i-th parent node in the k-th predicted reference frame.
[0494] For example, assuming that the occupancy information of node 1 in the k-th predicted reference frame is 10001101, 11001101 and 10001101 are XORed, where the first bit of 11001101 and the first bit of 10001101 are both 1. Therefore, the XOR result of the first bit of the two is 0, the second bit of 11001101 is different from the second bit of 10001111, so the XOR result of the second bit of the two is 1, and so on. The XOR result of 11001101 and 10001111 is 0+1+0+0+0+0+1+0=2. According to this method, the decoding end can determine the XOR operation result of the occupancy information of the i-th parent node and the occupancy information of each node in the k-th predicted reference frame, and then determine the node in the k-th predicted reference frame with the smallest XOR operation with the occupancy information of the i-th parent node as the matching node of the i-th parent node in the k-th predicted reference frame.
[0495] Based on the above steps, the decoding end can determine the matching node of the i-th parent node in the k-th prediction reference frame. For ease of description, this matching node is recorded as the i-th matching node.
[0496] Next, the decoding end determines one of the child nodes of the i-th matching node as the corresponding node of the i-th domain node in the k-th prediction reference frame.
[0497] For example, the decoding end determines a default child node among the child nodes included in the i-th matching node as the corresponding node of the i-th node in the k-th prediction reference frame. Assume that the first child node of the i-th matching node is determined as the corresponding node of the i-th node in the k-th prediction reference frame.
[0498] For another example, the decoding end determines the first sequence number of the i-th node among the child nodes included in the parent node; and determines the child node with the first sequence number among the child nodes of the i-th matching node as the corresponding node of the i-th node in the k-th prediction reference frame. For example, as shown in FIG14 , the i-th node is the second child node of the i-th parent node, and in this case, the first sequence number is 2. In this way, the second child node of the i-th matching node can be determined as the corresponding node of the i-th node.
[0499] The above describes the process of determining the corresponding node of the i-th domain node among M domain nodes in the k-th prediction reference frame, and the corresponding node of the current node in the k-th prediction reference frame. Thus, the decoder can use Method 2 or Method 3 to determine the N prediction nodes for the current node in the prediction reference frame.
[0500] Based on the above steps, the decoding end determines N prediction nodes of the current node in the prediction reference frame of the current frame to be decoded, and then performs steps S101-A2.
[0501] In an embodiment of the present application, the method of determining whether the current node meets the activation condition of the skip decoding mode based on the number of points included in at least one prediction node among the N prediction nodes in S101-A2 includes at least the following examples:
[0502] Example 1: If the start condition includes that the number of points included in the prediction node is greater than or equal to the first value, then S101-A2 includes:
[0503] S101-A2-11, obtaining the number of points included in N prediction nodes;
[0504] S101-A2-12: If the number of points included in at least one prediction node among the N prediction nodes is greater than or equal to a first value, determine that the current node meets the starting condition of the skip decoding mode.
[0505] In Example 1, since the predicted node is a decoded node, the number of points included in the predicted node can be obtained. Thus, the number of points included in each of the N predicted nodes is compared with a first value, and at least one predicted node whose number of points is greater than or equal to the first value is selected. For example, the current node includes three predicted nodes. The first predicted node includes one point and no duplicate points. The second predicted node includes two points, both of which are duplicate points. The third predicted node includes two non-duplicate points. Assuming the first value is 1, it can be determined that the number of points included in these three predicted nodes is greater than or equal to the first value, thereby determining that the current node meets the conditions for initiating skip decoding mode. If the first value is 2, it is determined that the number of points included in the second and third predicted nodes of these three predicted nodes is greater than or equal to the first value, thereby determining that the current node meets the conditions for initiating skip decoding mode. If the first value is 3, it is determined that the number of points included in these three predicted nodes is less than the first value, thereby determining that the current node does not meet the conditions for initiating skip decoding mode.
[0506] Example 2: If the starting condition includes that the number of points included in the predicted node is the same as the number of points included in the current node, then S101-A2 includes:
[0507] S101-A2-21, obtaining the number of points included in the current node and the number of points included in N predicted nodes;
[0508] S101-A2-22: If the number of points included in the current node is equal to the number of points included in at least one prediction node among the N prediction nodes, determine that the current node meets the starting condition of the skip decoding mode.
[0509] In Example 2, since the predicted node is a decoded node, the number of points included in the predicted node can be obtained. Furthermore, the number of points included in the current node has already been decoded before decoding the geometric information of the current node. Thus, the decoding end can compare the number of points included in each of the N predicted nodes with the number of points included in the current node. If at least one of the N predicted nodes has the same number of points as the current node, it can be determined that the current node meets the conditions for initiating skip decoding mode. Otherwise, it is determined that the current node does not meet the conditions for initiating skip decoding mode.
[0510] Example 3: If the starting condition includes that the number of points included in the predicted node is the same as the number of points included in the current node, and the direct decoding mode of the predicted node is the same as the direct decoding mode of the current node, then S101-A2 includes:
[0511] S101-A2-31, obtaining the number of points included in the current node and the direct decoding mode of the current node, as well as the number of points included in N predicted nodes and the direct decoding modes of the predicted nodes;
[0512] S101-A2-32. If the number of points included in the current node is equal to the number of points included in at least one prediction node among the N prediction nodes, and the direct decoding mode of the current node is the same as the direct decoding mode of at least one prediction node, then it is determined that the current node meets the starting conditions of the skip decoding mode.
[0513] In this example 3, since the prediction node is a decoded node, the number of points included in the prediction node and the direct decoding mode of the prediction node can be obtained. In addition, before decoding the geometric information of the current node, the number of points included in the current node and the direct decoding mode of the current node have been decoded. In this way, the decoding end can compare the number of points included in each of the N prediction nodes with the number of points included in the current node, and compare the direct decoding mode of each of the N prediction nodes with the direct decoding mode of the current node. As long as there is a prediction node in the N prediction nodes that has the same number of points as the current node, and the direct decoding mode of the prediction node is also the same as the direct decoding mode of the current node, it can be determined that the current node meets the start-up conditions of the skip decoding mode. Otherwise, it is determined that the current node does not meet the start-up conditions of the skip decoding mode.
[0514] Based on the above steps, the decoding end can determine whether the current node meets the start condition of the skip decoding mode. Then, the above step S101-B is executed.
[0515] In the above S101-B, according to whether the current node meets the starting conditions of the skip decoding mode, the specific manner of determining the decoding mode of the current point includes at least the following:
[0516] Method 1: If the current node meets the starting condition of the skip decoding mode, it is determined that the decoding mode of the geometric information of at least one component of the current point is the skip decoding mode.
[0517] As can be seen from the above, for non-lidar point clouds, the encoder encodes the geometric information of the current point's X, Y, and Z coordinate components separately. For lidar point clouds, the encoder encodes the geometric information of the current point's X and Y coordinate components, and also encodes the index of the laser ray corresponding to the current point (LaserIex) and the geometric residual of the current point's Z coordinate component.
[0518] It can be seen that if the current point is a point in a non-lidar point cloud, the at least one component of the current point includes at least one component among an X coordinate component, a Y coordinate component, and a Z coordinate component.
[0519] If the current point is a point in a lidar point cloud, the at least one component of the current point includes at least one component of an X-coordinate component, a Y-coordinate component, an index of a laser ray, or a geometric residual of a Z-coordinate.
[0520] As can be seen from the above, in this embodiment of the present application, if the current node meets the conditions for enabling skip decoding mode, the predicted nodes for the current node include at least one point. Therefore, a predicted point can be found in at least one of the predicted nodes for the current point in the current node. Furthermore, based on this predicted point, geometric information for at least one component of the current point can be determined, and further, it can be determined that the decoding mode for the geometric information for at least one component of the current point can be skip decoding mode.
[0521] Exemplarily, if the current node meets the conditions for enabling skip decoding mode, then the decoding mode for all components of the current point is determined to be skip decoding mode. For example, if the current point is not in a LiDAR point cloud, then the geometric information for the X, Y, and Z coordinate components of the current point is determined to be in skip decoding mode. For another example, if the current point is in a LiDAR point cloud, then the geometric residual for the X coordinate component, Y coordinate component, laser ray index, and Z coordinate of the current point is determined to be in skip decoding mode.
[0522] Exemplarily, if the current node meets the start condition of the skip decoding mode, the decoding mode of the geometric information of some components of the current point is determined to be the skip decoding mode. For example, if the current point is a point in a non-lidar point cloud, the decoding mode of the geometric information under the Z coordinate component of the current point is determined to be the skip decoding mode, or the decoding mode of the geometric information under the X coordinate component of the current point is the skip decoding mode, or the decoding mode of the geometric information under the Y coordinate component of the current point is the skip decoding mode. For another example, if the current point is a point in a non-lidar point cloud, the decoding mode of the geometric information under the X coordinate component of the current point is determined to be the skip decoding mode, or the decoding mode of the geometric information under the Y coordinate component of the current point is the skip decoding mode, or the decoding mode of the index of the laser ray of the current point is the skip decoding mode, or the decoding mode of the geometric residual of the Z coordinate of the current point is the skip decoding mode.
[0523] Mode 2: If the current node meets the starting conditions of the skip decoding mode, the above S101-B includes the following steps:
[0524] S101-B1. Decode the bitstream to obtain a first flag, where the first flag is used to indicate whether the current point adopts a skip decoding mode. The first flag is determined based on an error between geometric information of the current point and geometric information of at least one predicted point.
[0525] S101-B2: Determine the decoding mode of the current point based on the first flag.
[0526] In this second approach, the encoder determines the decoding mode for the current point in the current node and indicates this decoding mode to the decoder via a first flag. Correspondingly, when the decoder determines, based on the above method, that the current node meets the conditions for enabling skip decoding mode, it decodes the bitstream, obtains the first flag, and then determines the decoding mode for the current point based on the first flag.
[0527] For example, if the value of the first flag is the first value, it is determined that the decoding mode of the current point is the skip decoding mode.
[0528] For another example, if the value of the first flag is the second value, it is determined that the decoding mode of the current point is not the skip decoding mode.
[0529] The embodiment of the present application does not limit the specific values of the first value and the second value.
[0530] Optionally, the first value is 1 and the second value is 0.
[0531] In some embodiments, the encoding end determines whether the current point adopts the skip coding mode in a manner that the encoding end first determines the second value, then determines the error between the geometric information of the current point and the geometric information of the predicted point, and compares the error with the second value. If the error is less than or equal to the second value, it is determined that the current point is encoded in the skip coding mode, and then the first flag is set to the first value (for example, 1) and then written into the code stream.
[0532] The embodiment of the present application does not limit the specific method for determining the above-mentioned second value.
[0533] In some embodiments, the second value is a preset value, such as 0.
[0534] In some embodiments, the second value is the number of bits required by the encoder to encode the geometric information of the current point.
[0535] The above describes the specific process of determining the decoding mode of the current point at the decoding end.
[0536] After the decoding end determines the decoding mode of the current point based on the above method, it executes the following step S102.
[0537] S102: If the decoding mode of the current point is the skip decoding mode, determine at least one prediction point of the current point among the points included in the N prediction nodes of the current node.
[0538] As can be seen from the above, one way to determine the decoding mode for the current point is for the decoder to directly decode the bitstream to obtain the decoding mode for the current point, without determining whether the current node meets the conditions for initiating skip decoding mode. In this case, before determining at least one prediction point for the current point among the points included in the N prediction nodes for the current node, the decoder must first determine the N prediction nodes for the current node in the prediction reference frame of the current frame to be decoded. The specific process of determining the N prediction nodes for the current node in the prediction reference frame of the current frame to be decoded is described in detail in S101-A1 above and will not be repeated here.
[0539] Next, the decoding end determines at least one prediction point of the current point among the points included in the N prediction nodes of the current node.
[0540] The embodiment of the present application does not limit the specific manner in which the decoding end determines at least one prediction point of the current point among the points included in the N prediction nodes of the current node.
[0541] In some embodiments, the decoding end selects a prediction point corresponding to the current point from the points included in each prediction node for each of the N prediction nodes.
[0542] In some embodiments, the above S102 includes the following steps:
[0543] S102-A, based on the start condition of the skip decoding mode, select at least one prediction node from N prediction nodes, where M is a positive integer less than or equal to N;
[0544] S102-B: Determine at least one predicted point of the current point based on the points included in the at least one predicted node.
[0545] In this embodiment, in order to further improve the decoding accuracy of the skip decoding mode, the points included in the prediction node that is most relevant to the current node characteristics are selected to determine the prediction point of the current point, so as to improve the selection accuracy of the prediction point and thereby improve the geometric decoding effect of the current point.
[0546] In this embodiment, based on the activation condition of the skip decoding mode, the N prediction nodes of the current node may be screened to select a prediction node with a strong correlation with the current node.
[0547] Specifically, based on different starting conditions of the skip decoding mode, the screening method of the N prediction nodes is also different.
[0548] In one example, if the activation condition of the skip decoding mode is that the number of points included in the prediction node is greater than or equal to a first value, the decoding end selects at least one prediction node including a number of points greater than or equal to the first value from the N prediction nodes.
[0549] In another example, if the condition for activating the skip decoding mode is that the number of points included in the prediction node is the same as the number of points included in the current node, the decoding end selects at least one prediction node from the N prediction nodes that has the same number of points as the current node.
[0550] In another example, if the skip decoding mode activation condition is that the number of points included in the prediction node is the same as the number of points included in the current node, and the direct decoding mode of the prediction node is the same as the direct decoding mode of the current node, the decoding end selects at least one prediction node from the N prediction nodes that includes the same number of points as the current node and has the same direct decoding mode as the current node.
[0551] Based on the above method, after the decoder selects at least one prediction node from the N prediction nodes, it executes the above step S102-B to determine at least one prediction point of the current point based on the points included in the at least one prediction node.
[0552] In the embodiment of the present application, the method of determining the prediction point of the current point from the at least one prediction node is the same. For the convenience of description, the method of determining the prediction point of the current point from one prediction node is taken as an example for explanation.
[0553] In some embodiments, for each prediction node in at least one prediction node, if the current node includes one point and the prediction node includes two non-repeated points, all non-repeated points in the prediction node are used as prediction points for the current point. For example, if the prediction node includes two non-repeated points, the two non-repeated points are determined as the two prediction points for the current point.
[0554] In some embodiments, for each prediction node of the at least one prediction node, if the prediction node includes a point, the point included in the prediction node is determined as a prediction point of the current point.
[0555] In some embodiments, for each prediction node in at least one prediction node, if the prediction node includes multiple non-duplicate points, a point in the prediction node that has the same ranking as the current point in the current node is determined as a prediction point for the current point. For example, if the prediction node includes point 1 and point 2, and point 1 and point 2 are not duplicates, and the current node also includes two non-duplicate points, then if the current point is the first point in the current node, point 1 in the prediction node is determined as a prediction point for the current point. If the current point is the second point in the current node, point 2 in the prediction node is determined as a prediction point for the current point.
[0556] Based on the above steps, the decoding end may determine at least one prediction point of the current point from the points included in the at least one prediction node, and then perform the following step S103.
[0557] S103: Determine geometric information of the current point based on geometric information of at least one predicted point.
[0558] In an embodiment of the present application, if it is determined that the current point is decoded using the skip decoding mode, at least one prediction point of the current point is determined from the N prediction nodes of the current node, and then the geometric information of the current point is determined directly based on the geometric information of the at least one prediction point, without the need to decode the geometric information of the current point from the code stream, thereby improving the geometric decoding efficiency of the point cloud.
[0559] In some embodiments, if the at least one prediction point is a single prediction point, the decoding end may directly determine the geometric information of the prediction point as the geometric information of the current point.
[0560] In some embodiments, if the at least one prediction point is multiple prediction points, the step S103 includes the following steps:
[0561] S103-A. Obtain first geometric information based on geometric information of at least one prediction point;
[0562] S103-B. Based on the first geometric information, determine the geometric information of at least one component of the current point.
[0563] In an embodiment of the present application, if the current point includes multiple predicted points, a piece of geometric information can be first determined based on the geometric information of these predicted points, recorded as the first geometric information, and then the geometric information of at least one component of the current point can be determined based on the first geometric information.
[0564] The embodiment of the present application does not limit the specific method of obtaining the first geometric information based on the geometric information of at least one prediction point.
[0565] In one possible implementation, the average value of the geometric information of the at least one predicted point is used as the first geometric information. For example, the average value of the geometric information of the at least one predicted point on the X-axis is used as the geometric information on the X-axis in the first geometric information, the average value of the geometric information of the at least one predicted point on the Y-axis is used as the geometric information on the Y-axis in the first geometric information, and the average value of the geometric information of the at least one predicted point on the Z-axis is used as the geometric information on the Z-axis in the first geometric information.
[0566] In another possible implementation, a weighted average of the geometric information of the at least one predicted point is used as the first geometric information. For example, the weighted average of the geometric information of the at least one predicted point on the X-axis is used as the geometric information on the X-axis in the first geometric information, the weighted average of the geometric information of the at least one predicted point on the Y-axis is used as the geometric information on the Y-axis in the first geometric information, and the weighted average of the geometric information of the at least one predicted point on the Z-axis is used as the geometric information on the Z-axis in the first geometric information.
[0567] In the embodiment of the present application, there is no restriction on the weights of the above-mentioned prediction points.
[0568] In some embodiments, the weight of the prediction node where the prediction point is located may be determined, and the weight of the prediction node may be determined as the weight of the prediction point.
[0569] The following describes how to determine the weight of a prediction node.
[0570] In some embodiments, the weights corresponding to the above-mentioned prediction nodes are preset values. As can be seen from the above, in some embodiments, the above-mentioned N prediction nodes are determined based on the M domain nodes of the current node. Assuming that prediction node 1 is the prediction node corresponding to domain node 1, if domain node 1 is a coplanar node of the current node, then the weight of prediction node 1 is the preset weight 1. If domain node 1 is a colinear node of the current node, then the weight of prediction node 1 is the preset weight 2. If domain node 1 is a co-point node of the current node, then the weight of prediction node 1 is the preset weight 3.
[0571] In some embodiments, the weight corresponding to the prediction node is determined based on the distance between the domain node corresponding to the prediction node and the current node. For example, the smaller the distance between the domain node and the current node, the stronger the inter-frame correlation between the prediction node corresponding to the domain node and the current node, and thus the greater the weight of the prediction node.
[0572] For example, let's take prediction node 1 as an example. Assume that prediction node 1 is the corresponding point of domain node 1 in the prediction reference frame among the M domain nodes of the current node. In this way, the weight of prediction node 1 can be determined based on the distance between domain node 1 and the current node. For example, the reciprocal of the distance between domain node 1 and the current node is determined as the weight of prediction node 1.
[0573] In one example, if domain node 1 is a coplanar node of the current node, the weight of node 1 is predicted to be 1; if domain node 1 is a colinear node of the current node, the weight of node 1 is predicted to be the preset weight. If domain node 1 is a common node of the current node, the weight of predicted node 1 is the preset weight
[0574] In one example, if domain node 1 is a coplanar node of the current node, the weight of predicted node 1 is If domain node 1 is a collinear node of the current node, the weight of predicted node 1 is If domain node 1 is a common node of the current node, the weight of predicted node 1 is
[0575] Based on the above steps, after determining the weight of the prediction node where the prediction point is located, the weight of the prediction node is determined as the weight of the prediction point, and then based on the weight of the at least one prediction point, a weighted average operation is performed on the geometric information of the at least one prediction point to obtain the first geometric information.
[0576] After obtaining the first geometric information based on the above steps, the geometric information of at least one component of the current point is determined based on the first geometric information.
[0577] In some embodiments, if the current point is a non-lidar point cloud and the geometric information of the X-coordinate component, Y-coordinate component, and Z-coordinate component of the current point all use a skip decoding mode, or if the current point is a non-lidar point cloud and the geometric information of the X-coordinate component and Y-coordinate component of the current point, as well as the index of the laser ray of the current point and the geometric residual of the Z coordinate of the current point all use a skip decoding mode, then the first geometric information is directly determined as the geometric information of the current point. For example, the geometric information on the X-axis in the first geometric information is determined as the X-axis geometric information of the current point, the geometric information on the Y-axis in the first geometric information is determined as the Y-axis geometric information of the current point, and the geometric information on the Z-axis in the first geometric information is determined as the Z-axis geometric information of the current point.
[0578] In some embodiments, the geometric information of some components of the current point is decoded using the skip decoding mode, while the geometric information of some components of the current point is not decoded using the skip decoding mode. In this case, the above S103-B includes the following steps:
[0579] S103-B1, determining the geometric information under the i-th component in the first geometric information as the geometric information under the i-th component of the current point;
[0580] S103-B2. Determine a decoding mode used for the geometric information of the current point under the j-th component, and decode the geometric information of the current point under the j-th component based on the decoding mode.
[0581] Wherein, if the point cloud is a non-lidar point cloud, the i-th component and the j-th component are the X-coordinate component, the Y-coordinate component, or the Z-coordinate component; if the point cloud is a non-lidar point cloud, the i-th component and the j-th component are the X-coordinate component, the Y-coordinate component, the index of the laser ray, or the geometric residual of the Z coordinate, and the i-th component is different from the j-th component.
[0582] In this embodiment, the geometric information of the current point under the i-th component is decoded using a skip decoding mode. Therefore, the geometric information of the i-th component in the first geometric information determined above is determined as the geometric information of the current point under the i-th component.
[0583] For example, if the point cloud is a non-lidar point cloud, the geometric information under the X coordinate component, Y coordinate component, or Z coordinate component of the first geometric information is determined as the geometric information under the X coordinate component, Y coordinate component, or Z coordinate component of the current point.
[0584] For another example, if the point cloud is a lidar point cloud, the X coordinate component, Y coordinate component, index of the laser ray, or geometric residual of the Z coordinate of the first geometric information is determined as the X coordinate component, Y coordinate component, index of the laser ray, or geometric residual of the Z coordinate of the current point.
[0585] If the geometric information of the current point under the j-th component is not decoded in skip decoding mode. At this time, the decoding end also needs to determine the decoding mode used by the geometric information of the current point under the j-th component. For example, the default decoding mode is determined as the decoding mode used by the geometric information of the current point under the j-th component (such as direct decoding mode), or the code stream is decoded to obtain the decoding mode used by the geometric information of the current point under the j-th component. Then, the geometric information of the current point under the j-th component is decoded using this decoding mode to obtain the geometric information of the current point under the j-th component.
[0586] Through the above decoding process, the decoding end can obtain the geometric information of each point in the current node, and then realize the decoding of the point cloud geometric information.
[0587] Furthermore, the skip decoding mode provided in the embodiment of the present application is applied to different point cloud frames, and the obtained effects are shown in Table 3:
[0588] Table 3
[0589] In Table 3, TMC13-v20.0 is the point cloud compression software. As can be seen from Table 3, the use of the skip decoding mode proposed in the embodiment of the present application can significantly improve the geometric decoding performance of the point cloud.
[0590] The above embodiment introduces the process of decoding the geometric information of the current point in the current node by using the skip decoding mode at the decoding end.
[0591] It should be noted that the skip decoding mode proposed in the embodiment of the present application can be applied not only to the decoding process of geometric information, but also to the decoding process of other information.
[0592] For example, in some embodiments, the skip decoding mode proposed in the embodiments of the present application can be applied to the placeholder information decoding of geometric information. For example, when decoding the current node, the predicted node of the current node is determined in the predicted reference frame of the current frame to be decoded, and then the placeholder information of the current node is determined based on the placeholder information of the predicted node.
[0593] For another example, in some embodiments, the skip decoding mode proposed in the embodiments of the present application can be applied to the decoding of node flags and node position information of a trisoup. For example, when decoding a current sub-block, a predicted sub-block of the current sub-block is determined in a predicted reference frame of the current frame to be decoded, and then the placeholder information of the current sub-block is determined based on the placeholder information of the predicted sub-block.
[0594] For another example, in some embodiments, the skip decoding mode proposed in the embodiments of the present application can be applied to residual decoding in a prediction tree. For example, when decoding a current node, a prediction node for the current node is determined in a prediction reference frame of the current frame to be decoded, and then residual information of the current node is determined based on the residual information of the prediction node.
[0595] For another example, in some embodiments, the skip decoding mode proposed in the embodiments of the present application can be applied to the attribute residual decoding of the point cloud. For example, when decoding the current node, the predicted node of the current node is determined in the predicted reference frame of the current frame to be decoded, and then the attribute residual information of the current node is determined based on the attribute residual information of the predicted node.
[0596] The point cloud decoding method provided by the embodiment of the present application, when decoding the geometric information of the current node, first determines the decoding mode of the current point in the current node. If the decoding mode of the current point is the skip decoding mode, then at least one prediction point of the current point is determined among the points included in the N prediction nodes of the current node, wherein the prediction node is the node corresponding to the current node in the predicted reference frame of the current frame to be decoded, and the skip decoding mode is a mode of skipping decoding of the geometric information of the current point, and then based on the geometric information of the at least one prediction point, the geometric information of the current point is determined. It can be seen that when the embodiment of the present application performs geometric decoding on the current node, the correlation in the time domain between adjacent frames is considered to improve the efficiency of decoding the geometric information of the point cloud. Furthermore, the embodiment of the present application introduces a new encoding and decoding mode, namely the skip decoding mode, in the IDCM geometric decoding process, that is, the geometric information of the current point is determined directly based on the geometric information of the prediction point, further improving the decoding efficiency.
[0597] The above takes the decoding end as an example to introduce in detail the point cloud decoding method provided in the embodiment of the present application. The following takes the encoding end as an example to introduce the point cloud encoding method provided in the embodiment of the present application.
[0598] Figure 15 is a schematic diagram of a point cloud encoding method according to an embodiment of the present application. The point cloud encoding method according to the embodiment of the present application can be implemented by the point cloud encoding device shown in Figure 3, Figure 4A, or Figure 8A.
[0599] As shown in FIG15 , the point cloud encoding method of the embodiment of the present application includes:
[0600] S201: Determine the coding mode of the current point in the current node.
[0601] The current node is the node to be encoded in the current frame to be encoded.
[0602] As can be seen from the above, a point cloud includes geometric information and attribute information, and encoding of a point cloud includes geometric encoding and attribute encoding. The embodiments of the present application relate to geometric encoding of a point cloud.
[0603] In some embodiments, the geometric information of the point cloud is also referred to as the position information of the point cloud. Therefore, the geometric encoding of the point cloud is also referred to as the position encoding of the point cloud.
[0604] In the octree-based encoding mode, the encoding end constructs an octree structure of the point cloud based on the geometric information of the point cloud. As shown in Figure 11, the point cloud is enclosed by a minimum cuboid. The bounding box is first divided into octrees to obtain 8 nodes. The occupied nodes among these 8 nodes, that is, the nodes including the points, are further divided into octrees, and so on, until the division is to the voxel level, for example, to a 1X1X1 cube. The point cloud octree structure obtained by such division includes multiple layers of nodes, for example, N layers. During encoding, the occupancy information of each layer is encoded layer by layer until the voxel-level leaf nodes of the last layer are encoded. That is to say, in octree encoding, the point cloud is divided into octrees, and finally the points in the point cloud are divided into the voxel-level leaf nodes of the octree. The encoding of the point cloud is achieved by encoding the entire octree.
[0605] However, the octree-based geometric information coding mode has an efficient compression rate for points with correlation in space, and for points in isolated positions in the geometric space, the use of a direct coding mode can greatly reduce complexity and improve coding efficiency.
[0606] Since the direct encoding mode directly encodes the geometric information of the points included in the node, if the number of points included in the node is large, the compression effect is poor when using the direct encoding mode. Therefore, for the nodes in the octree, before performing direct encoding, it is first determined whether the node can be encoded using the direct encoding mode. If it is determined that the node can be encoded using the direct encoding mode, the geometric information of the points included in the node is directly encoded using the direct encoding mode. If it is determined that the node cannot be encoded using the direct encoding mode, the node is further divided using the octree method.
[0607] Specifically, the encoder first determines whether the node is eligible for direct encoding. If so, it then determines whether the node's point count is less than or equal to a preset threshold. If so, the node is considered eligible for direct encoding. The number of points in the node and the geometric information of each point are then encoded into the bitstream.
[0608] Currently, when encoding the geometric information of the current node, the correlation between adjacent frames is not considered, resulting in poor geometric prediction coding performance. In an embodiment of the present application, when encoding the geometric information of the current node, a prediction node for the current node is determined in the prediction reference frame of the current frame to be encoded. Based on the geometric information of the prediction node, the geometric information of the current node is predictively coded. This takes into account inter-frame correlation, thereby improving geometric coding performance.
[0609] In an embodiment of the present application, to further improve the coding efficiency of the geometric information of the point cloud, a skip coding mode (skipCodeMode) is proposed. This skip coding mode skips coding the geometric information of the current point and instead determines the geometric information of the current point based on the geometric information of the predicted point (i.e., geometric reconstruction information). For example, the geometric information of the predicted point is directly determined as the geometric information of the current point. This can greatly improve the coding efficiency of the point cloud.
[0610] It should be noted that the current frame to be encoded is a point cloud frame. In some embodiments, the current frame to be encoded is also referred to as the current frame, the current point cloud frame, or the point cloud frame to be encoded. The current node can be understood as any non-leaf node in the current frame to be encoded that is not a non-empty node. In other words, the current node is not a leaf node in the octree corresponding to the current frame to be encoded, that is, the current node is any middle node in the octree, and the current node is not a non-empty node, that is, it includes at least one point.
[0611] The skip coding mode proposed in the embodiment of the present application is based on the direct coding mode. That is, before encoding the current point in the current node using the skip coding mode, it is first necessary to determine whether the current node is a true IDCM node, that is, whether the current node is encoded using the direct coding mode. When it is determined that the current node is encoded using the direct coding mode, it is then determined whether the current point in the current node is encoded using the skip coding mode.
[0612] The embodiment of the present application does not limit the specific method of determining the encoding mode of the current point.
[0613] In some embodiments, if the current node is an IDCM node, the encoding end adopts the skip coding mode by default to encode the geometric information of the current point in the current node, that is, skips encoding the geometric information of the current point.
[0614] In some embodiments, the encoder uses a rate-distortion optimization algorithm to select a coding mode from multiple preset coding modes to encode the current point. It should be noted that these multiple predicted coding modes include skip coding modes. The encoder then encodes the index or indication of the selected coding mode into the bitstream. Accordingly, the encoder obtains the coding mode for the current point by encoding the bitstream.
[0615] In some embodiments, the above S201 includes the following steps S201-A and S201-B:
[0616] S201-A, determining whether the current node meets the start condition of the skip coding mode;
[0617] S201-B. Determine the coding mode of the current point according to whether the current node meets the start condition of the skip coding mode.
[0618] That is, in this embodiment, the encoding end determines whether the current point in the current node is encoded using the skip coding mode by judging whether the current node meets the starting condition of the skip coding mode.
[0619] The following describes the specific process by which the encoder determines whether the current node meets the start conditions of the skip coding mode.
[0620] The embodiment of the present application does not limit the specific method by which the encoding end determines whether the current node meets the starting conditions of the skip coding mode.
[0621] In some embodiments, if the current node is a real IDCM node, it is determined that the current node meets the start condition of the skip coding mode. If the current node is not a real IDCM node, it is determined that the current node does not meet the start condition of the skip coding mode.
[0622] In some embodiments, the encoding end determines whether the current node meets the conditions for starting the skip coding mode based on the preset conditions for starting the skip coding mode. For example, if the current node meets the conditions for starting the skip coding mode, then skipCodeEligible is set to true; if the current node does not meet the conditions for starting the skip coding mode, then skipCodeEligible is set to false. In this case, the above S201-A includes the following steps S201-A1 and S201-A2:
[0623] S201-A1, determining N prediction nodes of the current node in the prediction reference frame of the current frame to be encoded;
[0624] S201-A2: Determine whether the current node meets a start condition of the skip coding mode based on the number of points included in at least one prediction node among the N prediction nodes.
[0625] The embodiment of the present application does not limit the specific content of the starting conditions of the skip coding mode.
[0626] In one example, a condition for starting the skip coding mode includes: the number of points included in the prediction node is greater than or equal to a first value. Optionally, the first value is a positive integer.
[0627] In another example, the activation condition of the skip coding mode includes: the number of points included in the predicted node is the same as the number of points included in the current node.
[0628] In another example, the activation condition of the skip coding mode includes: the number of points included in the predicted node is the same as the number of points included in the current node, and the direct coding mode of the predicted node is the same as the direct coding mode of the current node.
[0629] The following describes a specific process of determining N prediction nodes of a current node in a prediction reference frame of a current frame to be encoded.
[0630] It should be noted that the embodiment of the present application does not limit the number of prediction reference frames of the current frame to be encoded. For example, the current frame to be encoded may have one prediction reference frame, or the current frame to be encoded may have multiple prediction reference frames. Furthermore, the embodiment of the present application does not limit the number N of prediction nodes of the current node, and this number is determined based on actual needs.
[0631] The embodiment of the present application does not limit the specific method of determining the prediction reference frame of the current frame to be encoded.
[0632] In some embodiments, one or several encoded frames before the current frame to be encoded are determined as prediction reference frames for the current frame to be encoded.
[0633] For example, if the current frame to be encoded is a P frame, the inter-frame reference frame of the P frame includes the previous frame of the P frame (i.e., the forward frame). Therefore, the previous frame of the current frame to be encoded (i.e., the forward frame) can be determined as the predicted reference frame of the current frame to be encoded.
[0634] For another example, if the current frame to be encoded is a B frame, the inter-frame reference frames of the B frame include the previous frame of the P frame (i.e., the forward frame) and the next frame of the P frame (i.e., the backward frame). Therefore, the previous frame of the current frame to be encoded (i.e., the forward frame) can be determined as the predicted reference frame of the current frame to be encoded.
[0635] In some embodiments, one or several encoded frames following the current frame to be encoded are determined as prediction reference frames for the current frame to be encoded.
[0636] For example, if the current frame to be encoded is a B frame, the next frame after the current frame to be encoded may be determined as a prediction reference frame for the current frame to be encoded.
[0637] In some embodiments, one or several encoded frames before the current frame to be encoded, and one or several encoded frames after the current frame to be encoded, are determined as prediction reference frames for the current frame to be encoded.
[0638] For example, if the current frame to be encoded is a B frame, the previous frame and the next frame of the current frame to be encoded may be determined as prediction reference frames of the current frame to be encoded. In this case, the current frame to be encoded has two prediction reference frames.
[0639] As shown in Figure 11, in an embodiment of the present application, the encoding end determines the prediction node of the current node in the predicted reference frame of the current frame to be encoded, and then compares the number of points and / or IDCM mode included in the prediction node with the number of points and / or IDCM mode included in the current node to determine whether the current node meets the start-up conditions of the skip coding mode.
[0640] The following takes the current frame to be encoded including K prediction reference frames as an example to introduce the specific process of determining N prediction nodes of the current node in the prediction reference frames of the current frame to be encoded in S201-A1.
[0641] In some embodiments, the encoder selects at least one prediction reference frame from the K prediction reference frames based on the placeholder information of the node in the current frame to be encoded and the placeholder information of the node in each of the K prediction reference frames, and then searches for a predicted node for the current node in the at least one prediction reference frame. For example, at least one prediction reference frame whose placeholder information of the node is closest to the placeholder information of the node in the current frame to be encoded is selected from the K prediction reference frames, and then searches for a predicted node for the current node in the at least one prediction reference frame.
[0642] In some embodiments, the encoder may determine N prediction nodes of the current node through the following steps S201-A11 and S201-A12:
[0643] S201-A11. For a k-th prediction reference frame among K prediction reference frames, determine at least one prediction node of a current node in the k-th prediction reference frame, where k is a positive integer less than or equal to K, and K is a positive integer;
[0644] S201-A12: Determine N prediction nodes of the current node based on at least one prediction node of the current node in K prediction reference frames.
[0645] In this embodiment, the encoding end determines at least one prediction node of the current node from each of the K prediction reference frames, and finally aggregates at least one prediction node in each of the K prediction reference frames to obtain N prediction nodes of the current node.
[0646] Among them, the process of the encoding end determining at least one prediction point of the current node in each of the K prediction reference frames is the same. For the sake of convenience of description, the kth prediction reference frame among the K prediction reference frames is used as an example for explanation.
[0647] The specific process of determining at least one prediction node of the current node in the kth prediction reference frame in the above S201-A11 is introduced below.
[0648] The embodiment of the present application does not limit the specific manner in which the encoder determines at least one prediction node of the current node in the kth prediction reference frame.
[0649] Method 1: In the kth prediction reference frame, a prediction node of the current node is determined. For example, a node in the kth prediction reference frame that has the same partition depth as the current node is determined as the prediction node of the current node.
[0650] For example, assuming that the current node is located at the third level of the octree of the current frame to be encoded, the nodes at the third level of the octree in the kth prediction reference frame can be obtained, and then the prediction node of the current node can be determined from these nodes.
[0651] In one example, if the number of prediction nodes of the current node in the kth prediction reference frame is 1, then among the points at which the kth prediction reference frame and the current node are at the same division depth, a node whose occupancy information is the smallest different from that of the current node can be selected, recorded as node 1, and node 1 is determined as a prediction node of the current node in the kth prediction reference frame.
[0652] In another example, if the number of prediction nodes of the current node in the kth prediction reference frame is greater than 1, the node 1 determined above and at least one domain node of node 1 in the kth prediction reference frame, such as at least one domain node that is coplanar, colinear, or co-point with node 1, are determined as the prediction nodes of the current node in the kth prediction reference frame.
[0653] Method 2, in the above S201-A11, determining at least one prediction node of the current node in the k-th prediction reference frame includes the following steps S201-A11-a1 to S201-A113:
[0654] S201-A11-a1. In a current frame to be encoded, determine M domain nodes of a current node, where the M domain nodes include the current node, and M is a positive integer.
[0655] S201-A11-a2, for the i-th domain node among the M domain nodes, determine the corresponding node of the i-th domain node in the k-th prediction reference frame, where i is a positive integer less than or equal to M;
[0656] S201-A11-a3. Determine at least one prediction node of the current node in the k-th prediction reference frame based on the corresponding nodes of the M domain nodes in the k-th prediction reference frame.
[0657] In this implementation, before determining at least one prediction node of the current node in the kth prediction reference frame, the encoder first determines M domain nodes of the current node in the current frame to be encoded, and the M domain nodes include the current node itself.
[0658] It should be noted that in the embodiment of the present application, there is no restriction on the specific method of determining the M domain nodes of the current node.
[0659] In one example, the M domain nodes of the current node include at least one domain node among the domain nodes that are coplanar, colinear, and co-point with the current node in the current frame to be encoded. As shown in Figure 12, the current node includes 6 coplanar nodes, 12 colinear nodes, and 8 co-point nodes.
[0660] In another example, the M domain nodes of the current node may include other nodes within the reference neighborhood in addition to at least one domain node in the current frame to be encoded that is coplanar, colinear, and co-point with the current node. This embodiment of the present application does not impose any restrictions on this.
[0661] Based on the above steps, the encoding end determines the M domain nodes of the current node in the current frame to be encoded, determines the corresponding node of each of the M domain nodes in the k-th prediction reference frame, and then determines at least one prediction node of the current node in the k-th prediction reference frame based on the corresponding nodes of the M domain nodes in the k-th prediction reference frame.
[0662] The embodiment of the present application does not limit the specific implementation method of S201-A11-a3.
[0663] In one possible implementation, at least one corresponding node is selected from the corresponding nodes of the M domain nodes in the k-th prediction reference frame as the at least one prediction node of the current node in the k-th prediction reference frame. For example, at least one corresponding node whose placeholder information has the smallest difference between the placeholder information of the M domain nodes in the k-th prediction reference frame and the placeholder information of the current node is selected from the corresponding nodes of the M domain nodes in the k-th prediction reference frame as the at least one prediction node of the current node in the k-th prediction reference frame. The method for determining the difference between the placeholder information of the corresponding node and the placeholder information of the current node can refer to the above-mentioned process for determining the difference in placeholder information, for example, performing an XOR operation on the placeholder information of the corresponding node and the placeholder information of the current node, and using the XOR operation result as the difference between the placeholder information of the corresponding node and the placeholder information of the current node.
[0664] In another possible implementation, the encoder determines the corresponding nodes of the M domain nodes in the kth prediction reference frame as at least one prediction node for the current node in the kth prediction reference frame. For example, each of the M domain nodes has a corresponding node in the kth prediction reference frame, resulting in M corresponding nodes. These M corresponding nodes are determined as the prediction nodes for the current node in the kth prediction reference frame, for a total of M prediction nodes.
[0665] The above describes the process of determining at least one prediction node for the current node in the kth prediction reference frame. Thus, the encoder can use the same method as above to determine at least one prediction node for the current node in each of the K prediction reference frames.
[0666] For example, if the current frame to be encoded is a P frame, the K predicted reference frames include the forward frame of the current frame to be encoded. At this point, the encoding end can determine at least one prediction node of the current node in the forward frame based on the above steps. Exemplarily, as shown in Figure 13A, it is assumed that the current node includes three domain nodes, which are respectively recorded as node 11, node 12 (current node) and node 13. These three domain nodes correspond to a corresponding node in the forward frame, respectively recorded as node 21, node 22 and node 23, and then node 21, node 22 and node 23 are determined as the three prediction nodes of the current node in the forward frame, or 1 or 2 nodes are selected from node 21, node 22 and node 23 to be determined as 1 or 2 prediction nodes of the current node in the forward frame.
[0667] For another example, if the current frame to be encoded is a B frame, the K prediction reference frames include the forward frame and the backward frame of the current frame to be encoded. At this time, based on the above steps, the encoder can determine at least one prediction node of the current node in the forward frame, and at least one prediction node of the current node in the backward frame. For example, as shown in Figure 13B, it is assumed that the current node includes three domain nodes, respectively recorded as node 11, node 12, and node 13. These three domain nodes correspond to a corresponding node in the forward frame, respectively, recorded as node 21, node 22, and node 23. These three domain nodes correspond to a corresponding node in the backward frame, respectively, recorded as node 41, node 42, and node 43. In this way, the encoder can determine node 21, node 22, and node 23 as the three prediction nodes of the current node in the forward frame, or select one or two nodes from node 21, node 22, and node 23 to determine as one or two prediction nodes of the current node in the forward frame. Similarly, the encoding end can determine node 41, node 42 and node 43 as the three prediction nodes of the current node in the backward frame, or select one or two nodes from node 41, node 42 and node 43 as one or two prediction nodes of the current node in the backward frame.
[0668] After the encoder determines at least one prediction node of the current node in each of the K prediction reference frames, it performs the above steps S201-A12, that is, determines N prediction nodes of the current node based on at least one prediction node of the current node in the K prediction reference frames.
[0669] In one example, at least one prediction node of the current node in K prediction reference frames is determined as N prediction nodes of the current node.
[0670] For example, K=2, that is, the K prediction reference frames include the first prediction reference frame and the second prediction reference frame. Assume that the current node has 2 prediction nodes in the first prediction reference frame and 3 prediction nodes in the second prediction reference frame. In this way, it can be determined that the current node has 5 prediction nodes, and N=5.
[0671] In another example, N prediction nodes of the current node are screened out from at least one prediction node of the current node in K prediction reference frames.
[0672] Continuing with the above example, assume K = 2, meaning the K prediction reference frames include the first prediction reference frame and the second prediction reference frame. Assume the current node has two prediction nodes in the first prediction reference frame and three prediction nodes in the second prediction reference frame. From these five prediction nodes, select the IDCM node and determine it as the final prediction node for the current node.
[0673] In the second method, after the encoding end determines the M domain nodes of the current node in the current frame to be encoded, it determines the corresponding node of each of the M domain nodes in the kth prediction reference frame, and then determines at least one prediction point of the current node in the kth prediction reference frame based on the corresponding node of each of the M domain nodes.
[0674] Mode 3, in the above S201-A11, determining at least one prediction node of the current node in the k-th prediction reference frame includes the following steps S201-A11-b1 to S201-A11-b3:
[0675] S201-A11-b1, determining the corresponding node of the current node in the k-th prediction reference frame;
[0676] S201-A11-b2, determine at least one domain node of the corresponding node;
[0677] S201-A11-b3. Determine at least one domain node as at least one prediction node of the current node in the k-th prediction reference frame.
[0678] In this method 3, for each of the K predicted reference frames, the encoding end first determines the corresponding node of the current node in each predicted reference frame. For example, the corresponding node 1 of the current node in the predicted reference frame 1 is determined, and the corresponding node 2 of the current node in the predicted reference frame 2 is determined. Next, the encoding end determines at least one domain node of each corresponding node. For example, at least one domain node of the corresponding node 1 is determined in the predicted reference frame 1, and at least one domain node of the corresponding node 2 is determined in the predicted reference frame 2. In this way, at least one domain node of the corresponding node 1 in the predicted reference frame 1 can be determined as at least one predicted node of the current node in the predicted reference frame 1, and at least one domain node of the corresponding node 2 in the predicted reference frame 2 can be determined as at least one predicted node of the current node in the predicted reference frame 2.
[0679] Determining the corresponding node of the i-th domain node in the k-th prediction reference frame in S201-A11-b1 of the aforementioned method 3 is essentially the same as determining the corresponding node of the current node in the k-th prediction reference frame in S201-A11-a1 of the aforementioned method 2. For ease of description, the i-th domain node and the current node are referred to as the i-th node. The specific process of determining the corresponding node of the i-th node in the k-th prediction reference frame is described below.
[0680] The encoder determines the corresponding node of the i-th node in the k-th prediction reference frame in at least the following ways:
[0681] In method 1, a node in the k-th prediction reference frame that has the same division depth as the i-th node is determined as the corresponding node of the i-th node.
[0682] For example, assuming that the i-th node is located at the third level of the octree of the current frame to be encoded, the nodes at the third level of the octree in the k-th prediction reference frame can be obtained, and then the corresponding node of the i-th node can be determined from these nodes. For example, among the points in the k-th prediction reference frame that are at the same partition depth as the i-th node, the node whose placeholder information differs the least from the placeholder information of the i-th node is selected and determined as the corresponding node of the i-th node in the k-th prediction reference frame.
[0683] Mode 2: The above-mentioned S201-A11-a1 and S201-A11-b1 include the following steps:
[0684] Step 11: In the current frame to be encoded, determine the parent node of the i-th node as the i-th parent node;
[0685] Step 12: Determine the matching node of the i-th parent node in the k-th prediction reference frame as the i-th matching node;
[0686] Step 13: Determine one of the child nodes of the i matching nodes as the corresponding node of the i-th node in the k-th prediction reference frame.
[0687] In this method 2, for the i-th node, the encoding end determines the parent node of the i-th node in the current frame to be encoded, and then determines the matching node of the parent node of the i-th prediction domain node in the k-th prediction reference frame. For ease of description, the parent node of the i-th node is recorded as the i-th parent node, and the matching node of the parent node of the i-th node in the k-th prediction reference frame is determined as the i-th matching node. Then, a child node of the child node of the i-th matching node is determined as the corresponding node of the i-th node in the k-th prediction reference frame, thereby accurately determining the corresponding node of the i-th node in the k-th prediction reference frame.
[0688] The specific process of determining the matching node of the i-th parent node in the k-th prediction reference frame in the above step 12 is introduced below.
[0689] The embodiment of the present application does not limit the specific method by which the encoder determines the matching node of the i-th parent node in the k-th prediction reference frame.
[0690] In some embodiments, the partition depth of the i-th parent node in the current frame to be encoded is determined, for example, the i-th parent node is at the second level of the octree of the current frame to be encoded. In this way, the encoder can determine one of the nodes in the k-th prediction reference frame that have the same partition depth as the i-th parent node as the matching node of the i-th parent node in the k-th prediction reference frame. For example, one of the nodes in the second level of the k-th prediction reference frame can be determined as the matching node of the i-th parent node in the k-th prediction reference frame.
[0691] In some embodiments, the encoder determines a matching node for the i-th parent node in the k-th predicted reference frame based on the placeholder information of the i-th parent node. Specifically, since the placeholder information for the i-th parent node in the current frame to be encoded has been encoded, and the placeholder information for each node in the k-th predicted reference frame has also been encoded, the encoder can search for a matching node for the i-th parent node in the k-th predicted reference frame based on the placeholder information of the i-th parent node.
[0692] For example, the node with the smallest difference between the placeholder information of the k-th prediction reference frame and the placeholder information of the i-th parent node is determined as the matching node of the i-th parent node in the k-th prediction reference frame.
[0693] For example, assuming the placeholder information of the i-th parent node is 11001101, the k-th predicted reference frame is searched for the node whose placeholder information has the smallest difference from the placeholder information 11001101. Specifically, the encoder performs an XOR operation on the placeholder information of the i-th parent node and the placeholder information of each node in the k-th predicted reference frame. The node with the smallest XOR result in the k-th predicted reference frame is determined as the matching node of the i-th parent node in the k-th predicted reference frame.
[0694] For example, assuming that the occupancy information of node 1 in the k-th predicted reference frame is 10001101, 11001101 and 10001101 are XORed, where the first bit of 11001101 and the first bit of 10001101 are both 1. Therefore, the XOR result of the first bit of the two is 0, the second bit of 11001101 is different from the second bit of 10001111, so the XOR result of the second bit of the two is 1, and so on. The XOR result of 11001101 and 10001111 is 0+1+0+0+0+0+1+0=2. According to this method, the encoding end can determine the XOR operation result of the occupancy information of the i-th parent node and the occupancy information of each node in the k-th predicted reference frame, and then determine the node in the k-th predicted reference frame with the smallest XOR operation with the occupancy information of the i-th parent node as the matching node of the i-th parent node in the k-th predicted reference frame.
[0695] Based on the above steps, the encoder can determine the matching node of the i-th parent node in the k-th prediction reference frame. For ease of description, this matching node is recorded as the i-th matching node.
[0696] Next, the encoder determines one of the child nodes of the i-th matching node as the corresponding node of the i-th domain node in the k-th prediction reference frame.
[0697] For example, the encoder determines a default child node among the child nodes included in the i-th matching node as the corresponding node of the i-th node in the k-th prediction reference frame. Assume that the first child node of the i-th matching node is determined as the corresponding node of the i-th node in the k-th prediction reference frame.
[0698] For another example, the encoder determines the first sequence number of the i-th node among the child nodes included in the parent node; and determines the child node with the first sequence number among the child nodes of the i-th matching node as the corresponding node of the i-th node in the k-th prediction reference frame. For example, as shown in FIG14 , the i-th node is the second child node of the i-th parent node, and in this case, the first sequence number is 2. In this way, the second child node of the i-th matching node can be determined as the corresponding node of the i-th node.
[0699] The above describes the process of determining the corresponding node of the i-th domain node among M domain nodes in the k-th prediction reference frame, and the corresponding node of the current node in the k-th prediction reference frame. Thus, the encoder can use Method 2 or Method 3 to determine the N prediction nodes for the current node in the prediction reference frame.
[0700] Based on the above steps, the encoder determines N prediction nodes of the current node in the prediction reference frame of the current frame to be encoded, and then performs step S201-A2.
[0701] In the embodiment of the present application, the method of determining whether the current node meets the starting condition of the skip coding mode based on the number of points included in at least one prediction node among the N prediction nodes in S201-A2 includes at least the following examples:
[0702] Example 1: If the starting condition includes that the number of points included in the prediction node is greater than or equal to the first value, then S201-A2 includes:
[0703] S201-A2-11, obtaining the number of points included in N prediction nodes;
[0704] S201-A2-12: If the number of points included in at least one prediction node among the N prediction nodes is greater than or equal to the first value, it is determined that the current node meets the starting condition of the skip coding mode.
[0705] In Example 1, since the prediction node is an encoded node, the number of points included in the prediction node can be obtained. Thus, the number of points included in each of the N prediction nodes is compared with a first value, and at least one prediction node whose number of points is greater than or equal to the first value is selected. For example, the current node includes three prediction nodes. The first prediction node includes one point and no duplicate points. The second prediction node includes two points, both of which are duplicate points. The third prediction node includes two non-duplicate points. Assuming the first value is 1, it can be determined that the number of points included in these three prediction nodes is greater than or equal to the first value, thereby determining that the current node meets the conditions for initiating skip coding mode. If the first value is 2, it is determined that the number of points included in the second and third prediction nodes of these three prediction nodes is greater than or equal to the first value, thereby determining that the current node meets the conditions for initiating skip coding mode. If the first value is 3, it is determined that the number of points included in these three prediction nodes is less than the first value, thereby determining that the current node does not meet the conditions for initiating skip coding mode.
[0706] Example 2: If the starting condition includes that the number of points included in the predicted node is the same as the number of points included in the current node, then S201-A2 includes:
[0707] S201-A2-21, obtaining the number of points included in the current node and the number of points included in N predicted nodes;
[0708] S201-A2-22: If the number of points included in the current node is equal to the number of points included in at least one prediction node among the N prediction nodes, determine that the current node meets the starting condition of the skip coding mode.
[0709] In Example 2, since the predicted node is an encoded node, the number of points included in the predicted node can be obtained. Furthermore, the number of points included in the current node is encoded before encoding the geometric information of the current node. Thus, the encoder can compare the number of points included in each of the N predicted nodes with the number of points included in the current node. If at least one of the N predicted nodes has the same number of points as the current node, it can be determined that the current node meets the conditions for initiating skip coding mode. Otherwise, it is determined that the current node does not meet the conditions for initiating skip coding mode.
[0710] Example 3: If the starting condition includes that the number of points included in the predicted node is the same as the number of points included in the current node, and the direct encoding mode of the predicted node is the same as the direct encoding mode of the current node, then S201-A2 includes:
[0711] S201-A2-31, obtaining the number of points included in the current node and the direct encoding mode of the current node, as well as the number of points included in N prediction nodes and the direct encoding modes of the prediction nodes;
[0712] S201-A2-32. If the number of points included in the current node is equal to the number of points included in at least one prediction node among the N prediction nodes, and the direct encoding mode of the current node is the same as the direct encoding mode of at least one prediction node, then it is determined that the current node meets the starting conditions of the skip encoding mode.
[0713] In this example 3, since the prediction node is an encoded node, the number of points included in the prediction node and the direct encoding mode of the prediction node can be obtained. In addition, before encoding the geometric information of the current node, the number of points included in the current node and the direct encoding mode of the current node have been encoded. In this way, the encoding end can compare the number of points included in each of the N prediction nodes with the number of points included in the current node, and compare the direct encoding mode of each of the N prediction nodes with the direct encoding mode of the current node. As long as there is a prediction node in the N prediction nodes that has the same number of points as the current node, and the direct encoding mode of the prediction node is also the same as the direct encoding mode of the current node, it can be determined that the current node meets the start-up conditions of the skip coding mode. Otherwise, it is determined that the current node does not meet the start-up conditions of the skip coding mode.
[0714] In some embodiments, after the encoding end determines whether the current node meets the start conditions of the skip coding mode based on the above steps, it also indicates to the decoding end whether the current node meets the start conditions of the coding mode through a second flag such as skipCodeEligible.
[0715] Exemplarily, a second flag skipCodeEligible is written into the bitstream, and the second flag skipCodeEligible is used to indicate whether the current node meets the starting condition of the skip coding mode.
[0716] For example, if the current node meets the start condition of the skip coding mode, the value of the second flag skipCodeEligible is determined to be the third value;
[0717] For another example, if the current node does not meet the start condition of the skip coding mode, the value of the second flag skipCodeEligible is determined to be the fourth value.
[0718] The embodiment of the present application does not limit the specific values of the third value and the fourth value.
[0719] Optionally, the third value is 1 and the fourth value is 0.
[0720] Based on the above steps, the encoder can determine whether the current node meets the start condition of the skip coding mode. Then, the above step S201-B is executed.
[0721] In the above S201-B, according to whether the current node meets the starting condition of the skip coding mode, the specific manner of determining the coding mode of the current point includes at least the following:
[0722] Method 1: If the current node meets the starting condition of the skip coding mode, it is determined that the coding mode of the geometric information of at least one component of the current point is the skip coding mode.
[0723] As can be seen from the above, for non-lidar point clouds, the encoder encodes the geometric information of the current point's X, Y, and Z coordinate components separately. For lidar point clouds, the encoder encodes the geometric information of the current point's X and Y coordinate components, and also encodes the index of the laser ray corresponding to the current point (LaserIex) and the geometric residual of the current point's Z coordinate component.
[0724] It can be seen that if the current point is a point in a non-lidar point cloud, the at least one component of the current point includes at least one component among an X-coordinate component, a Y-coordinate component, and a Z-coordinate component.
[0725] If the current point is a point in a lidar point cloud, the at least one component of the current point includes at least one component of an X-coordinate component, a Y-coordinate component, an index of a laser ray, or a geometric residual of a Z-coordinate.
[0726] As can be seen from the above, in this embodiment of the present application, if the current node meets the conditions for starting the skip coding mode, the prediction nodes of the current node include at least one point. Therefore, for the current point in the current node, at least one prediction point can be found in the prediction nodes. Furthermore, based on the prediction point, the geometric information of at least one component of the current point can be skipped for coding, and it can be determined that the coding mode of the geometric information of at least one component of the current point can be skip coding mode.
[0727] Exemplarily, if the current node meets the conditions for starting the skip coding mode, it is determined that the coding mode of all components of the current point is the skip coding mode. For example, if the current point is not in a lidar point cloud, it is determined that the geometric information of the three coordinate components of the current point, X, Y, and Z, all adopt the skip coding mode. For another example, if the current point is in a lidar point cloud, it is determined that the geometric residual of the X coordinate component, Y coordinate component, laser ray index, and Z coordinate of the current point all adopt the skip coding mode.
[0728] Exemplarily, if the current node meets the start condition of the skip coding mode, it is determined that the coding mode of the geometric information of some components of the current point is the skip coding mode. For example, if the current point is a point in a non-lidar point cloud, it is determined that the coding mode of the geometric information under the Z coordinate component of the current point is the skip coding mode, or the coding mode of the geometric information under the X coordinate component of the current point is the skip coding mode, or the coding mode of the geometric information under the Y coordinate component of the current point is the skip coding mode. For another example, if the current point is a point in a non-lidar point cloud, it is determined that the coding mode of the geometric information under the X coordinate component of the current point is the skip coding mode, or the coding mode of the geometric information under the Y coordinate component of the current point is the skip coding mode, or the coding mode of the index of the laser ray of the current point is the skip coding mode, or the coding mode of the geometric residual of the Z coordinate of the current point is the skip coding mode.
[0729] In the second method, if the current node meets the starting conditions of the skip coding mode, the above S201-B includes the following steps:
[0730] S201-B1. Determine at least one prediction point of the current point among the points included in the N prediction nodes of the current node;
[0731] S201-B2, determining an error between the geometric information of the current point and the geometric information of the at least one predicted point;
[0732] S201-B3. Determine the encoding mode of the current point based on the error.
[0733] The embodiment of the present application does not limit the specific manner in which the encoder determines at least one prediction point of the current point among the points included in the N prediction nodes of the current node.
[0734] In some embodiments, the encoder selects, for each of the N prediction nodes, a prediction point corresponding to the current point from the points included in each prediction node.
[0735] In some embodiments, the above S201-B1 includes the following steps:
[0736] S201-B11, based on the start condition of the skip coding mode, select at least one prediction node from N prediction nodes, where M is a positive integer less than or equal to N;
[0737] S201-B12: Determine at least one predicted point of the current point based on the points included in at least one predicted node.
[0738] In this embodiment, in order to further improve the coding accuracy of the skip coding mode, the points included in the prediction node that is most relevant to the current node characteristics are selected to determine the prediction point of the current point, so as to improve the selection accuracy of the prediction point and thereby improve the geometric coding effect of the current point.
[0739] In this embodiment, based on the activation condition of the skip coding mode, the N prediction nodes of the current node may be screened to select a prediction node with a strong correlation with the current node.
[0740] Specifically, based on different starting conditions of the skip coding mode, the screening method of the N prediction nodes is also different.
[0741] In one example, if the activation condition for the skip coding mode is that the number of points included in the prediction node is greater than or equal to a first value, the encoder selects at least one prediction node including a number of points greater than or equal to the first value from the N prediction nodes.
[0742] In another example, if the condition for initiating the skip coding mode is that the number of points included in the prediction node is the same as the number of points included in the current node, the encoder selects at least one prediction node from the N prediction nodes that has the same number of points as the current node.
[0743] In another example, if the condition for enabling the skip coding mode is that the number of points included in the prediction node is the same as the number of points included in the current node, and the direct coding mode of the prediction node is the same as the direct coding mode of the current node, the encoder selects at least one prediction node from the N prediction nodes that includes the same number of points as the current node and has the same direct coding mode as the current node.
[0744] Based on the above method, after the encoder selects at least one prediction node from N prediction nodes, it executes the above steps S201-B12 to determine at least one prediction point of the current point based on the points included in the at least one prediction node.
[0745] In the embodiment of the present application, the method of determining the prediction point of the current point from the at least one prediction node is the same. For the convenience of description, the method of determining the prediction point of the current point from one prediction node is taken as an example for explanation.
[0746] In some embodiments, for each prediction node in at least one prediction node, if the current node includes one point and the prediction node includes two non-repeated points, all non-repeated points in the prediction node are used as prediction points for the current point. For example, if the prediction node includes two non-repeated points, the two non-repeated points are determined as the two prediction points for the current point.
[0747] In some embodiments, for each prediction node of the at least one prediction node, if the prediction node includes a point, the point included in the prediction node is determined as a prediction point of the current point.
[0748] In some embodiments, for each prediction node in at least one prediction node, if the prediction node includes multiple non-duplicate points, a point in the prediction node that has the same ranking as the current point in the current node is determined as a prediction point for the current point. For example, if the prediction node includes point 1 and point 2, and point 1 and point 2 are not duplicates, and the current node also includes two non-duplicate points, then if the current point is the first point in the current node, point 1 in the prediction node is determined as a prediction point for the current point. If the current point is the second point in the current node, point 2 in the prediction node is determined as a prediction point for the current point.
[0749] After determining at least one prediction point of the current point among the points included in the N prediction nodes of the current node, the encoder performs step S201-B2, that is, determining the error between the geometric information of the current point and the geometric information of the at least one prediction point.
[0750] The error between the geometric information of the current point and the geometric information of the at least one predicted point is introduced below.
[0751] In one example, for any one of the at least one prediction point, the error between the geometric information of the current point and the geometric information of the prediction point is determined to obtain the error corresponding to the prediction point; the average value of the errors corresponding to each prediction point in the at least one prediction point is determined as the error between the geometric information of the current point and the geometric information of the at least one prediction point.
[0752] For example, for each of the at least one predicted point, the error between the geometric information of the current point and the geometric information of the predicted point is determined based on formula (35): Dist = abs(predPoint[0]-curPoint[0])+abs(predPoint[1]-curPoint[1])+abs(predPoint[2]-curPoint[2]) (35)
[0753] Among them, predPoint[0], predPoint[1] and predPoint[2] are the geometric information of the current point, and curPoint[0], curPoint[1] and curPoint[2] are the geometric information of the predicted point.
[0754] In one example, first geometric information is obtained based on geometric information of at least one predicted point; and an error between the geometric information of the current point and the first geometric information is determined as an error between the geometric information of the current point and the geometric information of at least one predicted point.
[0755] The embodiment of the present application does not limit the specific method of obtaining the first geometric information based on the geometric information of at least one prediction point.
[0756] In one possible implementation, the average value of the geometric information of the at least one predicted point is used as the first geometric information. For example, the average value of the geometric information of the at least one predicted point on the X-axis is used as the geometric information on the X-axis in the first geometric information, the average value of the geometric information of the at least one predicted point on the Y-axis is used as the geometric information on the Y-axis in the first geometric information, and the average value of the geometric information of the at least one predicted point on the Z-axis is used as the geometric information on the Z-axis in the first geometric information.
[0757] In another possible implementation, a weighted average of the geometric information of the at least one predicted point is used as the first geometric information. For example, the weighted average of the geometric information of the at least one predicted point on the X-axis is used as the geometric information on the X-axis in the first geometric information, the weighted average of the geometric information of the at least one predicted point on the Y-axis is used as the geometric information on the Y-axis in the first geometric information, and the weighted average of the geometric information of the at least one predicted point on the Z-axis is used as the geometric information on the Z-axis in the first geometric information.
[0758] In the embodiment of the present application, there is no restriction on the weights of the above-mentioned prediction points.
[0759] In some embodiments, the weight of the prediction node where the prediction point is located may be determined, and the weight of the prediction node may be determined as the weight of the prediction point.
[0760] The following describes how to determine the weight of a prediction node.
[0761] In some embodiments, the weights corresponding to the above-mentioned prediction nodes are preset values. As can be seen from the above, in some embodiments, the above-mentioned N prediction nodes are determined based on the M domain nodes of the current node. Assuming that prediction node 1 is the prediction node corresponding to domain node 1, if domain node 1 is a coplanar node of the current node, then the weight of prediction node 1 is the preset weight 1. If domain node 1 is a colinear node of the current node, then the weight of prediction node 1 is the preset weight 2. If domain node 1 is a co-point node of the current node, then the weight of prediction node 1 is the preset weight 3.
[0762] In some embodiments, the weight corresponding to the prediction node is determined based on the distance between the domain node corresponding to the prediction node and the current node. For example, the smaller the distance between the domain node and the current node, the stronger the inter-frame correlation between the prediction node corresponding to the domain node and the current node, and thus the greater the weight of the prediction node.
[0763] For example, let's take prediction node 1 as an example. Assume that prediction node 1 is the corresponding point of domain node 1 in the prediction reference frame among the M domain nodes of the current node. In this way, the weight of prediction node 1 can be determined based on the distance between domain node 1 and the current node. For example, the reciprocal of the distance between domain node 1 and the current node is determined as the weight of prediction node 1.
[0764] In one example, if domain node 1 is a coplanar node of the current node, the weight of node 1 is predicted to be 1; if domain node 1 is a colinear node of the current node, the weight of node 1 is predicted to be the preset weight. If domain node 1 is a common node of the current node, the weight of predicted node 1 is the preset weight
[0765] In one example, if domain node 1 is a coplanar node of the current node, the weight of predicted node 1 is If domain node 1 is a collinear node of the current node, the weight of predicted node 1 is If domain node 1 is a common node of the current node, the weight of predicted node 1 is
[0766] Based on the above steps, after determining the weight of the prediction node where the prediction point is located, the weight of the prediction node is determined as the weight of the prediction point, and then based on the weight of the at least one prediction point, a weighted average operation is performed on the geometric information of the at least one prediction point to obtain the first geometric information.
[0767] Next, an error between the geometric information of the current point and the first geometric information is determined, and the error between the geometric information of the current point and the first geometric information is determined as an error between the geometric information of the current point and the geometric information of at least one predicted point.
[0768] Based on the above method, after determining the error between the geometric information of the current point and the geometric information of the at least one predicted point, execute S201-B3 to determine the encoding mode of the current point according to the error.
[0769] Specifically, the error between the geometric information of the current point and the geometric information of the at least one predicted point is compared with the second value to determine the encoding mode of the current point.
[0770] For example, if the error is less than or equal to the second value, it is determined that the encoding mode of the current point is the skip encoding mode.
[0771] For another example, if the error is greater than the second value, it is determined that the encoding mode of the current point is not the skip encoding mode.
[0772] The embodiment of the present application does not limit the specific value of the above-mentioned second numerical value.
[0773] In an example, the second value is 0, so that the encoding mode can be skipped to achieve lossless encoding.
[0774] In another example, the second value is the number of bits required to encode the geometric information of the current point.
[0775] For example, encoding the X-axis component of the current node requires nodeSizeLog2[0] bits, encoding the Y-axis component of the current node requires nodeSizeLog2[1] bits, and encoding the Y-axis component of the current node requires nodeSizeLog2[2] bits. In one example, the maximum value among nodeSizeLog2[0], nodeSizeLog2[1], and nodeSizeLog2[2] can be determined as the second value. In another example, the average value of nodeSizeLog2[0], nodeSizeLog2[1], and nodeSizeLog2[2] can be determined as the second value.
[0776] In some embodiments, after determining the encoding mode of the current point based on the above steps, the encoding end writes a first flag into the bitstream, where the first flag is used to indicate whether the current point adopts the skip encoding mode.
[0777] For example, if the current encoding mode is the skip encoding mode, the value of the first flag is set to the first value and then written into the code stream.
[0778] For another example, if the current encoding mode is not the skip encoding mode, the value of the first flag is set to the second value and then written into the code stream.
[0779] The embodiment of the present application does not limit the specific values of the first value and the second value.
[0780] Optionally, the first value is 1 and the second value is 0.
[0781] After the encoding end determines the encoding mode of the current point based on the above method, it performs the following step S202.
[0782] S202: If the encoding mode of the current point is the skip encoding mode, skip encoding the geometric information of the current point.
[0783] In this embodiment of the present application, if the current point is determined to be encoded using skip coding mode, the encoding of the geometric information of the current point is directly skipped. Accordingly, the decoding end does not need to encode the geometric information of the current point from the bitstream. Instead, it determines at least one predicted point for the current point from the N predicted nodes of the current node. Then, the geometric information of the current point is directly determined based on the geometric information of this at least one predicted point, thereby improving the geometric coding efficiency of the point cloud.
[0784] The embodiment of the present application does not limit the specific method of skipping encoding the geometric information of the current point.
[0785] In some embodiments, if the encoding mode of the current point is a skip encoding mode, the encoding end skips encoding geometric information of at least one component of the current point.
[0786] In some embodiments, if the encoding mode of all components of the current node is skip encoding mode, the encoding of the geometric information of all components of the current point is skipped. For example, if the current point is a non-lidar point cloud, the encoding of the geometric information of the X-coordinate component, Y-coordinate component, and Z-coordinate component of the current point is skipped. For another example, if the current point is a non-lidar point cloud, the encoding of the geometric information of the X-coordinate component and Y-coordinate component of the current point, as well as the index of the laser ray of the current point and the geometric residual of the Z coordinate of the current point are skipped.
[0787] In some embodiments, the geometric information of some components of the current point is encoded using the skip coding mode, while the geometric information of some components of the current point is not encoded using the skip coding mode. In this case, the above S202 includes the following steps:
[0788] S202-A1, skip encoding the geometric information of the current point under the i-th component;
[0789] S202-A2. Determine the coding mode used for the geometric information of the current point under the j-th component, and encode the geometric information of the current point under the j-th component based on the coding mode.
[0790] Wherein, if the point cloud is a non-lidar point cloud, the i-th component and the j-th component are the X-coordinate component, the Y-coordinate component, or the Z-coordinate component; if the point cloud is a non-lidar point cloud, the i-th component and the j-th component are the X-coordinate component, the Y-coordinate component, the index of the laser ray, or the geometric residual of the Z coordinate, and the i-th component is different from the j-th component.
[0791] For example, if the point cloud is a non-lidar point cloud, encoding of the geometric information of the X coordinate component, the Y coordinate component, or the Z coordinate component of the current point is skipped.
[0792] For another example, if the point cloud is a lidar point cloud, the encoding of the geometric information under the X coordinate component of the current point, the geometric information under the Y coordinate component, the index of the laser ray, or the geometric residual of the Z coordinate is skipped.
[0793] In some embodiments, the geometric information of the jth component of the current point is not encoded using the skip coding mode. In this case, the encoder also needs to determine the coding mode used for the geometric information of the jth component of the current point. For example, the default coding mode is determined as the coding mode used for the geometric information of the jth component of the current point (such as the direct coding mode), or based on the rate-distortion optimization cost, the coding mode used for the geometric information of the jth component of the current point is determined from several preset coding modes. Then, the geometric information of the jth component of the current point is encoded using this coding mode.
[0794] Through the above encoding process, the encoding end can encode the geometric information of each point in the current node, thereby realizing the encoding of the point cloud geometric information.
[0795] The above embodiment introduces the process of encoding the geometric information of the current point in the current node by the encoding end using the skip encoding mode.
[0796] It should be noted that the skip coding mode proposed in the embodiment of the present application can be applied not only to the coding process of geometric information, but also to the coding process of other information.
[0797] For example, in some embodiments, the skip coding mode proposed in the embodiments of the present application can be applied to the coding of the placeholder information of the geometric information. For example, when coding the current node, the predicted node of the current node is determined in the predicted reference frame of the current frame to be coded, and then the placeholder information of the current node is determined based on the placeholder information of the predicted node, thereby skipping the coding of the placeholder information of the geometric information.
[0798] For another example, in some embodiments, the skip coding mode proposed in the embodiments of the present application can be applied to the encoding of the node flags and node position information of the trisoup. For example, when encoding the current sub-block, the predicted sub-block of the current sub-block is determined in the predicted reference frame of the current frame to be encoded, and then the placeholder information of the current sub-block is determined based on the placeholder information of the predicted sub-block, thereby skipping the encoding of the node flags and node position information of the trisoup.
[0799] For another example, in some embodiments, the skip coding mode proposed in the embodiments of the present application can be applied to the residual coding in the prediction tree. For example, when encoding the current node, the prediction node of the current node is determined in the prediction reference frame of the current frame to be encoded, and then the residual information of the current node is determined based on the residual information of the prediction node, thereby skipping the encoding of the residual coding in the prediction tree.
[0800] For another example, in some embodiments, the skip coding mode proposed in the embodiments of the present application can be applied to the attribute residual coding of the point cloud. For example, when encoding the current node, the predicted node of the current node is determined in the predicted reference frame of the current frame to be encoded, and then the attribute residual information of the current node is determined based on the attribute residual information of the predicted node, thereby skipping the coding of the attribute residual information.
[0801] The point cloud coding method provided by the embodiment of the present application first determines the coding mode of the current point in the current node when encoding the geometric information of the current node. If the coding mode of the current point is the skip coding mode, the geometric information of the current point is skipped. The embodiment of the present application introduces a new coding mode, namely the skip coding mode, in the IDCM geometric coding process, which directly determines the geometric information of the current point based on the geometric information of the predicted point, further improving the coding efficiency.
[0802] It should be understood that Figures 9 to 15 are merely examples of the present application and should not be understood as limiting the present application.
[0803] The preferred embodiments of the present application are described in detail above in conjunction with the accompanying drawings. However, the present application is not limited to the specific details in the above embodiments. Within the technical concept of the present application, a variety of simple modifications can be made to the technical solution of the present application, and these simple modifications all fall within the scope of protection of the present application. For example, the various specific technical features described in the above specific embodiments can be combined in any suitable manner unless there is any contradiction. In order to avoid unnecessary repetition, the present application will not further explain various possible combinations. For another example, the various different embodiments of the present application can also be arbitrarily combined, and as long as they do not violate the ideas of the present application, they should also be regarded as the contents disclosed in the present application.
[0804] It should also be understood that in the various method embodiments of the present application, the size of the sequence numbers of the above-mentioned processes does not mean the order of execution, and the execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of the present application. In addition, in the embodiments of the present application, the term "and / or" is merely a description of the association relationship of associated objects, indicating that three types of relationships can exist. Specifically, A and / or B can represent: A exists alone, A and B exist at the same time, and B exists alone. In addition, the character " / " in this article generally indicates that the related objects before and after are in an "or" relationship.
[0805] The above describes in detail the method embodiment of the present application in conjunction with Figures 9 to 15, and the following describes in detail the device embodiment of the present application in conjunction with Figures 16 to 19.
[0806] Figure 16 is a schematic block diagram of the point cloud decoding device provided in an embodiment of the present application.
[0807] As shown in FIG16 , the point cloud decoding device 10 may include:
[0808] A mode determination unit 11 is configured to determine a decoding mode for a current point in a current node, where the current node is a node to be decoded in a current frame to be decoded;
[0809] a prediction point determination unit 12, configured to, if the decoding mode of the current point is a skip decoding mode, determine at least one prediction point of the current point from points included in N prediction nodes of the current node, where the prediction node is a node corresponding to the current node in a predicted reference frame of the current frame to be decoded, the skip decoding mode is a mode for skipping decoding of geometric information of the current point, and N is a positive integer;
[0810] The decoding unit 13 is configured to determine the geometric information of the current point based on the geometric information of the at least one prediction point.
[0811] In some embodiments, the mode determination unit 11 is specifically configured to determine whether the current node satisfies a start condition of the skip decoding mode; and determine the decoding mode of the current point according to whether the current node satisfies the start condition of the skip decoding mode.
[0812] In some embodiments, the mode determination unit 11 is specifically configured to determine that the decoding mode of the geometric information of at least one component of the current point is the skip decoding mode if the current node satisfies the starting condition of the skip decoding mode.
[0813] In some embodiments, the mode determination unit 11 is specifically used to decode the code stream and obtain a first flag if the current node meets the starting conditions of the skip decoding mode. The first flag is used to indicate whether the current point adopts the skip decoding mode. The first flag is determined based on the error between the geometric information of the current point and the geometric information of the at least one predicted point; based on the first flag, the decoding mode of the current point is determined.
[0814] In some embodiments, the mode determination unit 11 is specifically used to determine that the decoding mode of the current point is the skip decoding mode if the value of the first flag is a first value; if the value of the first flag is a second value, determine that the decoding mode of the current point is not the skip decoding mode.
[0815] In some embodiments, if the error between the geometric information of the current point and the geometric information of the predicted point is less than or equal to a second value, the value of the first flag is the first value.
[0816] In some embodiments, the second value is 0.
[0817] In some embodiments, the second value is the number of bits required to encode geometric information of the current point.
[0818] In some embodiments, the starting conditions of the skip decoding mode include any one of the following: the number of points included in the prediction node is greater than or equal to a first value; the number of points included in the prediction node is the same as the number of points included in the current node; the number of points included in the prediction node is the same as the number of points included in the current node, and the direct decoding mode of the prediction node is the same as the direct decoding mode of the current node.
[0819] In some embodiments, the mode determination unit 11 is specifically used to decode the code stream to obtain a second flag, where the second flag is used to indicate whether the current node meets the start-up conditions of the skip decoding mode; and determine whether the current node meets the start-up conditions of the skip decoding mode based on the second flag.
[0820] In some embodiments, the mode determination unit 11 is specifically used to determine that the current node meets the start-up conditions of the skip decoding mode if the value of the second flag is the third value; if the value of the second flag is the fourth value, determine that the current node does not meet the start-up conditions of the skip decoding mode.
[0821] In some embodiments, the mode determination unit 11 is specifically used to determine N prediction nodes of the current node in the predicted reference frame of the current frame to be decoded; and determine whether the current node meets the starting conditions of the skip decoding mode based on the number of points included in at least one prediction node among the N prediction nodes.
[0822] In some embodiments, if the starting condition includes that the number of points included in the prediction node is greater than or equal to the first value, the mode determination unit 11 is specifically used to obtain the number of points included in the N prediction nodes; if the number of points included in at least one prediction node among the N prediction nodes is greater than or equal to the first value, it is determined that the current node meets the starting condition of the skip decoding mode.
[0823] In some embodiments, the first value is a positive integer.
[0824] In some embodiments, if the starting condition includes that the number of points included in the prediction node is the same as the number of points included in the current node, the mode determination unit 11 is specifically used to obtain the number of points included in the current node and the number of points included in the N prediction nodes; if the number of points included in the current node is equal to the number of points included in at least one prediction node among the N prediction nodes, it is determined that the current node meets the starting condition of the skip decoding mode.
[0825] In some embodiments, if the starting condition includes that the number of points included in the prediction node is the same as the number of points included in the current node, and the direct decoding mode of the prediction node is the same as the direct decoding mode of the current node, then the mode determination unit 11 is specifically used to obtain the number of points included in the current node and the direct decoding mode of the current node, as well as the number of points included in the N prediction nodes and the direct decoding mode of the prediction nodes; if the number of points included in the current node is equal to the number of points included in at least one prediction node among the N prediction nodes, and the direct decoding mode of the current node is the same as the direct decoding mode of the at least one prediction node, then it is determined that the current node meets the starting condition of the skip decoding mode.
[0826] In some embodiments, the prediction unit determination unit 12 is further used to determine N prediction nodes of the current node in the prediction reference frame of the current frame to be decoded before determining at least one prediction point of the current point among the points included in the N prediction nodes of the current node; select at least one prediction node from the N prediction nodes based on the start condition of the skip decoding mode; and determine at least one prediction point of the current point based on the points included in the at least one prediction node.
[0827] In some embodiments, the current frame to be decoded includes K prediction reference frames, and the prediction unit determination unit 12 is specifically used to determine at least one prediction node of the current node in the kth prediction reference frame for the K prediction reference frames, where k is a positive integer less than or equal to K, and K is a positive integer; and determine N prediction nodes of the current node based on at least one prediction node of the current node in the K prediction reference frames.
[0828] In some embodiments, the prediction unit determination unit 12 is specifically used to determine the M domain nodes of the current node in the current frame to be decoded, where the M domain nodes include the current node, and M is a positive integer; for the i-th domain node among the M domain nodes, determine the corresponding node of the i-th domain node in the k-th prediction reference frame, where i is a positive integer less than or equal to M; based on the corresponding nodes of the M domain nodes in the k-th prediction reference frame, determine at least one prediction node of the current node in the k-th prediction reference frame.
[0829] In some embodiments, the prediction unit determination unit 12 is specifically used to determine the corresponding node of the current node in the k-th prediction reference frame; determine at least one domain node of the corresponding node; and determine the at least one domain node as at least one prediction node of the current node in the k-th prediction reference frame.
[0830] In some embodiments, the prediction unit determination unit 12 is also used to determine the parent node of the i-th node in the current frame to be decoded as the i-th parent node, the i-th node being the i-th domain node or the current node; determine the matching node of the i-th parent node in the k-th prediction reference frame as the i-th matching node; and determine one of the child nodes of the i-matching node as the corresponding node of the i-th node in the k-th prediction reference frame.
[0831] In some embodiments, the prediction unit determination unit 12 is specifically used to determine the node whose occupancy information in the kth prediction reference frame has the smallest difference with the occupancy information of the i-th parent node as the matching node of the i-th parent node in the k-th prediction reference frame.
[0832] In some embodiments, the prediction unit determination unit 12 is specifically used to determine the first serial number of the i-th node among the child nodes included in the parent node; and determine the child node with the first serial number among the child nodes of the i-th matching node as the corresponding node of the i-th node in the k-th prediction reference frame.
[0833] In some embodiments, if the current frame to be decoded is a P frame, the K prediction reference frames include a forward frame of the current frame to be decoded.
[0834] In some embodiments, if the current frame to be decoded is a B frame, the K prediction reference frames include at least one of a forward frame and a backward frame of the current frame to be decoded.
[0835] In some embodiments, the prediction single determination unit 12 is specifically used to, for any prediction node among the at least one prediction node, if the prediction node includes a point, determine the point included in the prediction node as a prediction point of the current point; if the prediction node includes multiple non-repeated points, then determine a point in the prediction node that has the same ranking as the current point in the current node as a prediction point of the current point.
[0836] In some embodiments, the decoding unit 13 is specifically configured to obtain first geometric information based on the geometric information of the at least one prediction point; and determine geometric information of at least one component of the current point based on the first geometric information.
[0837] In some embodiments, the decoding unit 13 is specifically configured to determine an average value of the geometric information of the at least one prediction point as the first geometric information.
[0838] In some embodiments, the decoding unit 13 is specifically configured to determine the first geometric information as the geometric information of the current point.
[0839] In some embodiments, the decoding unit 13 is specifically used to determine the geometric information of the first geometric information under the i-th component as the geometric information of the current point under the i-th component; determine the decoding mode used for the geometric information of the current point under the j-th component, and decode the geometric information of the current point under the j-th component based on the decoding mode; wherein, if the point cloud is a non-lidar point cloud, the i-th component and the j-th component are X-coordinate components, Y-coordinate components or Z-coordinate components; if the point cloud is a non-lidar point cloud, the i-th component and the j-th component are X-coordinate components, Y-coordinate components, indices of laser rays or geometric residuals of Z coordinates, and the i-th component is different from the j-th component.
[0840] It should be understood that the device embodiment and the method embodiment may correspond to each other, and similar descriptions can refer to the method embodiment. To avoid repetition, no further description is given here. Specifically, the point cloud decoding device 10 shown in FIG16 may correspond to the corresponding subject in the point cloud decoding method of the embodiment of the present application, and the aforementioned and other operations and / or functions of the various units in the point cloud decoding device 10 are respectively for implementing the corresponding processes in the point cloud decoding method. For the sake of brevity, no further description is given here.
[0841] Figure 17 is a schematic block diagram of the point cloud encoding device provided in an embodiment of the present application.
[0842] As shown in FIG17 , the point cloud encoding device 20 may include:
[0843] A mode determination unit 21 is configured to determine a coding mode for a current point in a current node, where the current node is a node to be coded in a current frame to be coded;
[0844] The encoding unit 22 is configured to skip encoding the geometric information of the current point if the encoding mode of the current point is a skip encoding mode.
[0845] In some embodiments, the mode determination unit 21 is specifically configured to determine whether the current node satisfies a start condition of the skip coding mode; and determine the coding mode of the current point according to whether the current node satisfies a start condition of the skip coding mode.
[0846] In some embodiments, the mode determination unit 21 is specifically used to determine N prediction nodes of the current node in the predicted reference frame of the current frame to be encoded, where the prediction node is the node corresponding to the current node in the predicted reference frame of the current frame to be encoded, and N is a positive integer; based on the number of points included in at least one prediction node among the N prediction nodes, determine whether the current node meets the start condition of the skip coding mode.
[0847] In some embodiments, the current frame to be decoded includes K prediction reference frames, and the mode determination unit 21 is specifically used to determine, for the kth prediction reference frame among the K prediction reference frames, at least one prediction node of the current node in the kth prediction reference frame, where k is a positive integer less than or equal to K, and K is a positive integer; and determine N prediction nodes of the current node based on at least one prediction node of the current node in the K prediction reference frames.
[0848] In some embodiments, the pattern determination unit 21 is specifically used to determine the M domain nodes of the current node in the current frame to be decoded, where the M domain nodes include the current node, and M is a positive integer; for the i-th domain node among the M domain nodes, determine the corresponding node of the i-th domain node in the k-th prediction reference frame, where i is a positive integer less than or equal to M; based on the corresponding nodes of the M domain nodes in the k-th prediction reference frame, determine at least one prediction node of the current node in the k-th prediction reference frame.
[0849] In some embodiments, the pattern determination unit 21 is specifically used to determine the corresponding node of the current node in the kth prediction reference frame; determine at least one domain node of the corresponding node; and determine the at least one domain node as at least one prediction node of the current node in the kth prediction reference frame.
[0850] In some embodiments, the pattern determination unit 21 is specifically used to determine the parent node of the i-th node in the current frame to be decoded as the i-th parent node, the i-th node being the i-th domain node or the current node; determine the matching node of the i-th parent node in the k-th prediction reference frame as the i-th matching node; and determine one of the child nodes of the i-matching node as the corresponding node of the i-th node in the k-th prediction reference frame.
[0851] In some embodiments, the pattern determination unit 21 is specifically configured to determine the node whose placeholder information in the k-th prediction reference frame has the smallest difference with the placeholder information of the i-th parent node as the matching node of the i-th parent node in the k-th prediction reference frame.
[0852] In some embodiments, the pattern determination unit 21 is specifically used to determine the first serial number of the i-th node among the child nodes included in the parent node; and determine the child node with the first serial number among the child nodes of the i-th matching node as the corresponding node of the i-th node in the k-th prediction reference frame.
[0853] In some embodiments, if the current frame to be decoded is a P frame, the K prediction reference frames include a forward frame of the current frame to be decoded.
[0854] In some embodiments, if the current frame to be decoded is a B frame, the K prediction reference frames include at least one of a forward frame and a backward frame of the current frame to be decoded.
[0855] In some embodiments, the starting conditions of the skip coding mode include any one of the following: the number of points included in the prediction node is greater than or equal to a first value; the number of points included in the prediction node is the same as the number of points included in the current node; the number of points included in the prediction node is the same as the number of points included in the current node, and the direct coding mode of the prediction node is the same as the direct coding mode of the current node.
[0856] In some embodiments, if the starting condition includes that the number of points included in the prediction node is greater than or equal to the first value, the mode determination unit 21 is specifically used to obtain the number of points included in the N prediction nodes; if the number of points included in at least one prediction node among the N prediction nodes is greater than or equal to the first value, it is determined that the current node meets the starting condition of the skip decoding mode.
[0857] In some embodiments, the first value is a positive integer greater than 0.
[0858] In some embodiments, if the starting condition includes that the number of points included in the prediction node is the same as the number of points included in the current node, the mode determination unit 21 is specifically used to obtain the number of points included in the current node and the number of points included in the N prediction nodes; if the number of points included in the current node is equal to the number of points included in at least one prediction node among the N prediction nodes, it is determined that the current node meets the starting condition of the skip decoding mode.
[0859] In some embodiments, if the starting condition includes that the number of points included in the prediction node is the same as the number of points included in the current node, and the direct encoding mode of the prediction node is the same as the direct encoding mode of the current node, then the mode determination unit 21 is specifically used to obtain the number of points included in the current node and the direct decoding mode of the current node, as well as the number of points included in the N prediction nodes and the direct decoding mode of the prediction nodes; if the number of points included in the current node is equal to the number of points included in at least one prediction node among the N prediction nodes, and the direct decoding mode of the current node is the same as the direct decoding mode of the at least one prediction node, then it is determined that the current node meets the starting condition of the skip decoding mode.
[0860] In some embodiments, the encoding unit 22 is further configured to write a second flag into the bitstream, where the second flag is configured to indicate whether the current node satisfies a start condition of the skip coding mode.
[0861] In some embodiments, the encoding unit 22 is further used to determine that the value of the second flag is a third value if the current node meets the starting condition of the skip coding mode; if the current node does not meet the starting condition of the skip coding mode, determine that the value of the second flag is a fourth value.
[0862] In some embodiments, the mode determination unit 21 is specifically configured to determine that the coding mode of the geometric information of at least one component of the current point is the skip coding mode if the current node meets the starting condition of the skip coding mode.
[0863] In some embodiments, the mode determination unit 21 is specifically used to determine at least one prediction point of the current point among the points included in the N prediction nodes of the current node if the current node meets the starting condition of the skip coding mode; determine the error between the geometric information of the current point and the geometric information of the at least one prediction point; and determine the coding mode of the current point based on the error.
[0864] In some embodiments, the mode determination unit 21 is specifically configured to select at least one prediction node from the N prediction nodes based on a start condition of the skip decoding mode; and determine at least one prediction point of the current point based on points included in the at least one prediction node.
[0865] In some embodiments, the pattern determination unit 21 is specifically used to determine, for any prediction point among the at least one prediction point, the error between the geometric information of the current point and the geometric information of the prediction point, to obtain the error corresponding to the prediction point; and determine the average value of the errors corresponding to each prediction point in the at least one prediction point as the error between the geometric information of the current point and the geometric information of the at least one prediction point.
[0866] In some embodiments, the pattern determination unit 21 is specifically used to determine the average value of the geometric information of the at least one predicted point to obtain first geometric information; and determine the error between the geometric information of the current point and the first geometric information as the error between the geometric information of the current point and the geometric information of the at least one predicted point.
[0867] In some embodiments, the mode determination unit 21 is specifically used to determine that the encoding mode of the current point is the skip coding mode if the error is less than or equal to a second value; if the error is greater than the second value, determine that the encoding mode of the current point is not the skip coding mode.
[0868] In some embodiments, the second value is 0.
[0869] In some embodiments, the second value is the number of bits required to encode geometric information of the current point.
[0870] In some embodiments, the encoding unit 22 is further configured to write a first flag into the bitstream, where the first flag is configured to indicate whether the current point adopts the skip encoding mode.
[0871] In some embodiments, the encoding unit 22 is specifically configured to skip encoding geometric information of at least one component of the current node.
[0872] In some embodiments, the encoding unit 22 is specifically configured to skip encoding of the geometric information of the current node.
[0873] In some embodiments, the encoding unit 22 is specifically used to skip encoding the geometric information of the current node under the i-th component; determine the encoding mode used for the geometric information of the current point under the j-th component, and encode the geometric information of the current point under the j-th component based on the encoding mode; wherein, if the point cloud is a non-lidar point cloud, the i-th component and the j-th component are X-coordinate components, Y-coordinate components or Z-coordinate components; if the point cloud is a non-lidar point cloud, the i-th component and the j-th component are X-coordinate components, Y-coordinate components, indices of laser rays or geometric residuals of Z coordinates, and the i-th component is different from the j-th component.
[0874] It should be understood that the device embodiment and the method embodiment may correspond to each other, and similar descriptions may refer to the method embodiment. To avoid repetition, no further description is given here. Specifically, the point cloud coding device 20 shown in FIG17 may correspond to the corresponding subject in the point cloud coding method of the embodiment of the present application, and the aforementioned and other operations and / or functions of each unit in the point cloud coding device 20 are respectively for implementing the corresponding processes in the point cloud coding method. For the sake of brevity, no further description is given here.
[0875] The above describes the apparatus and system of the embodiment of the present application from the perspective of functional units in conjunction with the accompanying drawings. It should be understood that the functional unit can be implemented in the form of hardware, can be implemented by instructions in the form of software, or can be implemented by a combination of hardware and software units. Specifically, the steps of the method embodiment in the embodiment of the present application can be completed by the hardware integrated logic circuit and / or software instructions in the processor, and the steps of the method disclosed in the embodiment of the present application can be directly embodied as being executed by a hardware decoding processor, or can be executed by a combination of hardware and software units in the decoding processor. Optionally, the software unit can be located in a mature storage medium in the art such as a random access memory, a flash memory, a read-only memory, a programmable read-only memory, an electrically erasable programmable memory, a register, etc. The storage medium is located in the memory, and the processor reads the information in the memory and completes the steps in the above method embodiment in conjunction with its hardware.
[0876] FIG18 is a schematic block diagram of an electronic device provided in an embodiment of the present application.
[0877] As shown in FIG18 , the electronic device 30 may be a point cloud decoding device or a point cloud encoding device as described in an embodiment of the present application. The electronic device 30 may include:
[0878] The memory 33 and the processor 32 are configured to store a computer program 34 and transmit the program code 34 to the processor 32. In other words, the processor 32 can call and run the computer program 34 from the memory 33 to implement the method in the embodiment of the present application.
[0879] For example, the processor 32 may be configured to execute the steps of the method 200 according to the instructions in the computer program 34 .
[0880] In some embodiments of the present application, the processor 32 may include but is not limited to:
[0881] General-purpose processor, Digital Signal Processor (DSP), Application Specific Integrated Circuit (ASIC), Field Programmable Gate Array (FPGA) or other programmable logic device, discrete gate or transistor logic device, discrete hardware components, etc.
[0882] In some embodiments of the present application, the memory 33 includes but is not limited to:
[0883] Volatile memory and / or non-volatile memory. Non-volatile memory can be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. Volatile memory can be 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 (DDR SDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link DRAM (SLDRAM), and direct RAM bus random access memory (DR RAM).
[0884] In some embodiments of the present application, the computer program 34 may be divided into one or more units, which are stored in the memory 33 and executed by the processor 32 to implement the method provided by the present application. The one or more units may be a series of computer program instruction segments capable of implementing specific functions, and the instruction segments are used to describe the execution process of the computer program 34 in the electronic device 30.
[0885] As shown in FIG18 , the electronic device 30 may further include:
[0886] The transceiver 33 may be connected to the processor 32 or the memory 33 .
[0887] The processor 32 can control the transceiver 33 to communicate with other devices. Specifically, it can send information or data to other devices or receive information or data sent by other devices. The transceiver 33 may include a transmitter and a receiver. The transceiver 33 may further include an antenna, and the number of antennas may be one or more.
[0888] It should be understood that the various components in the electronic device 30 are connected via a bus system, wherein the bus system includes not only a data bus but also a power bus, a control bus and a status signal bus.
[0889] Figure 19 is a schematic block diagram of the point cloud encoding and decoding system provided in an embodiment of the present application.
[0890] As shown in Figure 19, the point cloud encoding and decoding system 40 may include: a point cloud encoder 41 and a point cloud decoder 42, wherein the point cloud encoder 41 is used to execute the point cloud encoding method involved in the embodiment of the present application, and the point cloud decoder 42 is used to execute the point cloud decoding method involved in the embodiment of the present application.
[0891] The present application also provides a code stream, which is generated according to the above encoding method.
[0892] The present application also provides a computer storage medium having a computer program stored thereon, which, when executed by a computer, enables the computer to perform the method of the above-mentioned method embodiment. In other words, the present application also provides a computer program product containing instructions, which, when executed by a computer, enables the computer to perform the method of the above-mentioned method embodiment.
[0893] When implemented using software, it can be implemented in whole or in part in the form of a computer program product. The computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on a computer, the process or function according to the embodiment of the present application is generated in whole or in part. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another computer-readable storage medium. For example, the computer instructions can be transmitted from one website, computer, server or data center to another website, computer, server or data center via a wired (e.g., coaxial cable, optical fiber, digital subscriber line (DSL)) or wireless (e.g., infrared, wireless, microwave, etc.) method. The computer-readable storage medium can be any available medium that a computer can access or a data storage device such as a server or data center that includes one or more available media integrated. The available medium can be a magnetic medium (e.g., a floppy disk, a hard disk, a tape), an optical medium (e.g., a digital video disc (DVD)), or a semiconductor medium (e.g., a solid state drive (SSD)).
[0894] Those skilled in the art will appreciate that the units and algorithm steps of each example described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are performed in hardware or software depends on the specific application and design constraints of the technical solution. Professional and technical personnel can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.
[0895] In the several embodiments provided in this application, it should be understood that the disclosed systems, devices and methods can be implemented in other ways. For example, the device embodiments described above are merely schematic. For example, the division of the unit is only a logical function division. In actual implementation, there may be other division methods, such as multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be through some interfaces, indirect coupling or communication connection of devices or units, which can be electrical, mechanical or other forms.
[0896] The units described as separate components may or may not be physically separate, and the components shown as units may or may not be physical units, that is, they may be located in one place or distributed across multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution of this embodiment. For example, the functional units in the various embodiments of the present application may be integrated into a processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit.
[0897] The above content 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 the present application. Therefore, the scope of protection of the present application should be based on the scope of protection of the claims.
Claims
1. A point cloud decoding method, characterized in that: include: Determine a decoding mode of a current point in a current node, wherein the current node is a node to be decoded in a current frame to be decoded; If the decoding mode of the current point is a skip decoding mode, then at least one prediction point of the current point is determined among the points included in the N prediction nodes of the current node, the prediction node is a node corresponding to the current node in the prediction reference frame of the current frame to be decoded, the skip decoding mode is a mode for skipping decoding of geometric information of the current point, and N is a positive integer; Based on the geometric information of the at least one predicted point, the geometric information of the current point is determined.
2. The method according to claim 1, characterized in that The step of determining the decoding mode of the current point in the current node includes: Determining whether the current node satisfies a start condition of a skip decoding mode; The decoding mode of the current point is determined according to whether the current node meets the start condition of the skip decoding mode.
3. The method according to claim 2, characterized in that The step of determining the decoding mode of the current point according to whether the current node satisfies the start condition of the skip decoding mode comprises: If the current node satisfies the start condition of the skip decoding mode, it is determined that the decoding mode of the geometric information under at least one component of the current point is the skip decoding mode.
4. The method according to claim 2, characterized in that: The step of determining the decoding mode of the current point according to whether the current node satisfies the start condition of the skip decoding mode comprises: If the current node satisfies the start condition of the skip decoding mode, the bitstream is decoded to obtain a first flag, where the first flag is used to indicate whether the current point adopts the skip decoding mode, and the first flag is determined based on an error between geometric information of the current point and geometric information of the at least one prediction point; Based on the first flag, a decoding mode of the current point is determined.
5. The method according to claim 4, characterized in that The determining the decoding mode of the current point based on the first flag includes: If the value of the first flag is the first value, determining that the decoding mode of the current point is the skip decoding mode; If the value of the first flag is the second value, it is determined that the decoding mode of the current point is not the skip decoding mode.
6. The method according to claim 5, characterized in that If the error between the geometric information of the current point and the geometric information of the predicted point is less than or equal to a second value, the value of the first flag is the first value.
7. The method according to claim 6, characterized in that The second value is 0.
8. The method according to claim 6, characterized in that The second value is the number of bits required to encode the geometric information of the current point.
9. The method according to any one of claims 2 to 8, characterized in that: The starting conditions of the skip decoding mode include any one of the following: the number of points included in the prediction node is greater than or equal to a first value; the number of points included in the prediction node is the same as the number of points included in the current node; the number of points included in the prediction node is the same as the number of points included in the current node, and the direct decoding mode of the prediction node is the same as the direct decoding mode of the current node.
10. The method according to claim 9, characterized in that The determining whether the current node satisfies a start condition of the skip decoding mode includes: Decoding the code stream to obtain a second flag, where the second flag is used to indicate whether the current node meets the start condition of the skip decoding mode; According to the second flag, it is determined whether the current node satisfies a start condition of the skip decoding mode.
11. The method according to claim 10, characterized in that The determining, according to the second flag, whether the current node satisfies a start condition of the skip decoding mode includes: If the value of the second flag is the third value, it is determined that the current node meets the start condition of the skip decoding mode; If the value of the second flag is the fourth value, it is determined that the current node does not meet the start condition of the skip decoding mode.
12. The method according to claim 9, characterized in that The determining whether the current node satisfies a start condition of the skip decoding mode includes: Determine N prediction nodes of the current node in a prediction reference frame of the current frame to be decoded; Based on the number of points included in at least one prediction node among the N prediction nodes, it is determined whether the current node meets the start condition of the skip decoding mode.
13. The method according to claim 12, characterized in that If the start condition includes that the number of points included in the prediction node is greater than or equal to the first value, then determining whether the current node meets the start condition of the skip decoding mode based on the number of points included in at least one prediction node among the N prediction nodes includes: Obtain the number of points included in the N prediction nodes; If the number of points included in at least one prediction node among the N prediction nodes is greater than or equal to the first value, it is determined that the current node meets the start condition of the skip decoding mode.
14. The method according to claim 13, characterized in that The first value is a positive integer.
15. The method according to claim 12, characterized in that If the start condition includes that the number of points included in the prediction node is the same as the number of points included in the current node, then determining whether the current node meets the start condition of the skip decoding mode based on the number of points included in at least one prediction node among the N prediction nodes includes: Obtaining the number of points included in the current node and the number of points included in the N predicted nodes; If the number of points included in the current node is equal to the number of points included in at least one prediction node among the N prediction nodes, it is determined that the current node meets the start condition of the skip decoding mode.
16. The method according to claim 12, characterized in that If the start condition includes that the number of points included in the prediction node is the same as the number of points included in the current node, and the direct decoding mode of the prediction node is the same as the direct decoding mode of the current node, then determining whether the current node meets the start condition of the skip decoding mode based on the number of points included in at least one prediction node among the N prediction nodes includes: Acquire the number of points included in the current node and the direct decoding mode of the current node, as well as the number of points included in the N predicted nodes and the direct decoding modes of the predicted nodes; If the number of points included in the current node is equal to the number of points included in at least one prediction node among the N prediction nodes, and the direct decoding mode of the current node is the same as the direct decoding mode of the at least one prediction node, it is determined that the current node meets the start condition of the skip decoding mode.
17. The method according to claim 9, characterized in that Before determining at least one prediction point of the current point among the points included in the N prediction nodes of the current node, the method further includes: Determine N prediction nodes of the current node in a prediction reference frame of the current frame to be decoded; Determining at least one prediction point of the current point among the points included in the N prediction nodes of the current node comprises: Selecting at least one prediction node from the N prediction nodes based on a start condition of the skip decoding mode; At least one prediction point of the current point is determined according to the points included in the at least one prediction node.
18. The method according to claim 12 or 17, characterized in that The current frame to be decoded includes K prediction reference frames, and determining N prediction nodes of the current node in the prediction reference frames of the current frame to be decoded includes: For a k-th prediction reference frame among the K prediction reference frames, determining at least one prediction node of the current node in the k-th prediction reference frame, where k is a positive integer less than or equal to K, and K is a positive integer; Based on at least one prediction node of the current node in the K prediction reference frames, N prediction nodes of the current node are determined.
19. The method according to claim 18, characterized in that The determining at least one prediction node of the current node in the k-th prediction reference frame comprises: In the current frame to be decoded, determine M domain nodes of the current node, the M domain nodes include the current node, and M is a positive integer; For an i-th domain node among the M domain nodes, determine a corresponding node of the i-th domain node in the k-th prediction reference frame, where i is a positive integer less than or equal to M; Based on the corresponding nodes of the M domain nodes in the k-th prediction reference frame, at least one prediction node of the current node in the k-th prediction reference frame is determined.
20. The method according to claim 18, characterized in that The determining at least one prediction node of the current node in the k-th prediction reference frame comprises: Determine a corresponding node of the current node in the k-th prediction reference frame; Determining at least one domain node of the corresponding node; The at least one domain node is determined as at least one prediction node of the current node in the k-th prediction reference frame.
21. The method according to claim 19 or 20, characterized in that The method further comprises: In the current frame to be decoded, determine the parent node of the ith node as the ith parent node, the ith node being the ith domain node or the current node; Determine a matching node of the i-th parent node in the k-th prediction reference frame as the i-th matching node; One of the child nodes of the i matching nodes is determined as the corresponding node of the i-th node in the k-th prediction reference frame.
22. The method according to claim 21, characterized in that The determining a matching node of the i-th parent node in the k-th prediction reference frame includes: A node whose placeholder information in the k-th prediction reference frame has the smallest difference with the placeholder information of the i-th parent node is determined as a matching node of the i-th parent node in the k-th prediction reference frame.
23. The method according to claim 21, characterized in that The step of determining one of the child nodes of the i matching nodes as a corresponding node of the i-th node in the k-th prediction reference frame includes: Determine the first sequence number of the i-th node among the child nodes included in the parent node; The child node with the first sequence number among the child nodes of the i-th matching node is determined as the corresponding node of the i-th node in the k-th prediction reference frame.
24. The method according to claim 18, characterized in that If the current frame to be decoded is a P frame, the K prediction reference frames include a forward frame of the current frame to be decoded.
25. The method according to claim 18, characterized in that If the current frame to be decoded is a B frame, the K prediction reference frames include at least one of a forward frame and a backward frame of the current frame to be decoded.
26. The method according to claim 18, characterized in that The determining, according to the points included in the at least one prediction node, at least one prediction point of the current point comprises: For any prediction node among the at least one prediction node, if the prediction node includes a point, determining the point included in the prediction node as a prediction point of the current point; If the predicted node includes multiple non-repeated points, a point in the predicted node that has the same ranking as the current point in the current node is determined as a predicted point of the current point.
27. The method according to claim 1, characterized in that The determining the geometric information of the current point based on the geometric information of the at least one predicted point includes: Based on the geometric information of the at least one prediction point, obtaining first geometric information; Based on the first geometric information, geometric information of at least one component of the current point is determined.
28. The method according to claim 27, characterized in that The obtaining first geometric information based on the geometric information of the at least one prediction point includes: An average value of the geometric information of the at least one prediction point is determined as the first geometric information.
29. The method according to claim 27, characterized in that The determining, based on the first geometric information, geometric information of at least one component of the current point includes: The first geometric information is determined as the geometric information of the current point.
30. The method according to claim 27, characterized in that The determining, based on the first geometric information, geometric information of at least one component of the current point includes: Determine the geometric information of the current point under the i-th component by using the geometric information of the first geometric information under the i-th component; Determine a decoding mode used by the geometric information of the current point under the j-th component, and decode the geometric information of the current point under the j-th component based on the decoding mode; Wherein, if the point cloud is a non-lidar point cloud, the i-th component and the j-th component are X-coordinate components, Y-coordinate components or Z-coordinate components; if the point cloud is a non-lidar point cloud, the i-th component and the j-th component are X-coordinate components, Y-coordinate components, indices of laser rays or geometric residuals of Z coordinates, and the i-th component is different from the j-th component.
31. A point cloud encoding method, characterized in that: include: Determine a coding mode of a current point in a current node, wherein the current node is a node to be coded in a current frame to be coded; If the encoding mode of the current point is the skip encoding mode, encoding of the geometric information of the current point is skipped.
32. The method according to claim 31, characterized in that The determining of the encoding mode of the current point in the current node includes: Determining whether the current node satisfies a start condition of a skip coding mode; The coding mode of the current point is determined according to whether the current node meets the starting condition of the skip coding mode.
33. The method according to claim 32, characterized in that The determining whether the current node satisfies a start condition of the skip coding mode includes: In the prediction reference frame of the current frame to be encoded, determine N prediction nodes of the current node, where the prediction nodes are nodes corresponding to the current node in the prediction reference frame of the current frame to be encoded, and N is a positive integer; Based on the number of points included in at least one prediction node among the N prediction nodes, it is determined whether the current node meets the start condition of the skip coding mode.
34. The method according to claim 33, characterized in that The current frame to be decoded includes K prediction reference frames, and determining N prediction nodes of the current node in the prediction reference frames of the current frame to be decoded includes: For a k-th prediction reference frame among the K prediction reference frames, determining at least one prediction node of the current node in the k-th prediction reference frame, where k is a positive integer less than or equal to K, and K is a positive integer; Based on at least one prediction node of the current node in the K prediction reference frames, N prediction nodes of the current node are determined.
35. The method according to claim 34, characterized in that The determining at least one prediction node of the current node in the k-th prediction reference frame comprises: In the current frame to be decoded, determine M domain nodes of the current node, the M domain nodes include the current node, and M is a positive integer; For an i-th domain node among the M domain nodes, determine a corresponding node of the i-th domain node in the k-th prediction reference frame, where i is a positive integer less than or equal to M; Based on the corresponding nodes of the M domain nodes in the k-th prediction reference frame, at least one prediction node of the current node in the k-th prediction reference frame is determined.
36. The method according to claim 34, characterized in that The determining at least one prediction node of the current node in the k-th prediction reference frame comprises: Determine a corresponding node of the current node in the k-th prediction reference frame; Determining at least one domain node of the corresponding node; The at least one domain node is determined as at least one prediction node of the current node in the k-th prediction reference frame.
37. The method according to claim 35 or 36, characterized in that The method further comprises: In the current frame to be decoded, determine the parent node of the ith node as the ith parent node, the ith node being the ith domain node or the current node; Determine a matching node of the i-th parent node in the k-th prediction reference frame as the i-th matching node; One of the child nodes of the i matching nodes is determined as the corresponding node of the i-th node in the k-th prediction reference frame.
38. The method according to claim 37, characterized in that The determining a matching node of the i-th parent node in the k-th prediction reference frame includes: A node whose placeholder information in the k-th prediction reference frame has the smallest difference with the placeholder information of the i-th parent node is determined as a matching node of the i-th parent node in the k-th prediction reference frame.
39. The method according to claim 37, characterized in that The step of determining one of the child nodes of the i matching nodes as a corresponding node of the i-th node in the k-th prediction reference frame includes: Determine the first sequence number of the i-th node among the child nodes included in the parent node; The child node with the first sequence number among the child nodes of the i-th matching node is determined as the corresponding node of the i-th node in the k-th prediction reference frame.
40. The method according to claim 34, characterized in that If the current frame to be decoded is a P frame, the K prediction reference frames include a forward frame of the current frame to be decoded.
41. The method according to claim 34, characterized in that If the current frame to be decoded is a B frame, the K prediction reference frames include at least one of a forward frame and a backward frame of the current frame to be decoded.
42. The method according to claim 33, characterized in that The starting conditions of the skip coding mode include any one of the following: the number of points included in the prediction node is greater than or equal to a first value; the number of points included in the prediction node is the same as the number of points included in the current node; the number of points included in the prediction node is the same as the number of points included in the current node, and the direct coding mode of the prediction node is the same as the direct coding mode of the current node.
43. The method according to claim 42, characterized in that If the start condition includes that the number of points included in the prediction node is greater than or equal to the first value, then determining whether the current node meets the start condition of the skip coding mode based on the number of points included in at least one prediction node among the N prediction nodes includes: Obtain the number of points included in the N prediction nodes; If the number of points included in at least one prediction node among the N prediction nodes is greater than or equal to the first value, it is determined that the current node meets the start condition of the skip decoding mode.
44. The method according to claim 43, characterized in that The first value is a positive integer greater than 0.
45. The method according to claim 42, characterized in that If the start condition includes that the number of points included in the prediction node is the same as the number of points included in the current node, then determining whether the current node meets the start condition of the skip coding mode based on the number of points included in at least one prediction node among the N prediction nodes includes: Obtaining the number of points included in the current node and the number of points included in the N predicted nodes; If the number of points included in the current node is equal to the number of points included in at least one prediction node among the N prediction nodes, it is determined that the current node meets the start condition of the skip decoding mode.
46. The method according to claim 42, characterized in that If the start condition includes that the number of points included in the prediction node is the same as the number of points included in the current node, and the direct encoding mode of the prediction node is the same as the direct encoding mode of the current node, then determining whether the current node meets the start condition of the skip encoding mode based on the number of points included in at least one prediction node among the N prediction nodes includes: Acquire the number of points included in the current node and the direct decoding mode of the current node, as well as the number of points included in the N predicted nodes and the direct decoding modes of the predicted nodes; If the number of points included in the current node is equal to the number of points included in at least one prediction node among the N prediction nodes, and the direct decoding mode of the current node is the same as the direct decoding mode of the at least one prediction node, it is determined that the current node meets the start condition of the skip decoding mode.
47. The method according to claim 33, characterized in that The method further comprises: A second flag is written into the bitstream, where the second flag is used to indicate whether the current node satisfies a start condition of the skip coding mode.
48. The method according to claim 47, characterized in that The method further comprises: If the current node satisfies the start condition of the skip coding mode, determining that the value of the second flag is a third value; If the current node does not meet the start condition of the skip coding mode, it is determined that the value of the second flag is a fourth value.
49. The method according to claim 32, characterized in that The determining the coding mode of the current point according to whether the current node satisfies the start condition of the skip coding mode includes: If the current node satisfies the starting condition of the skip coding mode, it is determined that the coding mode of the geometric information of at least one component of the current point is the skip coding mode.
50. The method of claim 42, wherein: The determining the coding mode of the current point according to whether the current node satisfies the start condition of the skip coding mode includes: If the current node satisfies the start condition of the skip coding mode, determining at least one prediction point of the current point among the points included in the N prediction nodes of the current node; determining an error between the geometric information of the current point and the geometric information of the at least one predicted point; The encoding mode of the current point is determined according to the error.
51. The method according to claim 50, characterized in that Determining at least one prediction point of the current point among the points included in the N prediction nodes of the current node comprises: Selecting at least one prediction node from the N prediction nodes based on a start condition of the skip decoding mode; At least one prediction point of the current point is determined according to the points included in the at least one prediction node.
52. The method according to claim 50, characterized in that The determining an error between the geometric information of the current point and the geometric information of the at least one predicted point comprises: For any predicted point among the at least one predicted point, determining an error between the geometric information of the current point and the geometric information of the predicted point, to obtain an error corresponding to the predicted point; An average value of errors corresponding to each prediction point in the at least one prediction point is determined as the error between the geometric information of the current point and the geometric information of the at least one prediction point.
53. The method according to claim 50, characterized in that The error between the geometric information of the current point and the geometric information of the at least one predicted point includes: Determine an average value of the geometric information of the at least one prediction point to obtain first geometric information; The error between the geometric information of the current point and the first geometric information is determined as the error between the geometric information of the current point and the geometric information of the at least one predicted point.
54. The method according to claim 50, characterized in that The step of determining the encoding mode of the current point according to the error comprises: If the error is less than or equal to a second value, determining that the encoding mode of the current point is the skip encoding mode; If the error is greater than the second value, it is determined that the encoding mode of the current point is not the skip encoding mode.
55. The method according to claim 54, characterized in that The second value is 0.
56. The method according to claim 54, characterized in that The second value is the number of bits required to encode the geometric information of the current point.
57. The method according to claim 31, characterized in that The method further comprises: In the bitstream, a first flag is written, where the first flag is used to indicate whether the current point adopts the skip coding mode.
58. The method according to claim 31, characterized in that The step of skipping the encoding of the geometric information of the current point comprises: Skip encoding geometric information of at least one component of the current node.
59. The method according to claim 58, characterized in that The skipping encoding of geometric information of at least one component of the current node comprises: Skip encoding of geometric information for all components of the current node.
60. The method of claim 58, wherein: The skipping encoding of geometric information of at least one component of the current node comprises: Skipping encoding of geometric information of the current node under the i-th component; Determine a coding mode used for geometric information of the current point under the j-th component, and encode the geometric information of the current point under the j-th component based on the coding mode; Wherein, if the point cloud is a non-lidar point cloud, the i-th component and the j-th component are X-coordinate components, Y-coordinate components or Z-coordinate components; if the point cloud is a non-lidar point cloud, the i-th component and the j-th component are X-coordinate components, Y-coordinate components, indices of laser rays or geometric residuals of Z coordinates, and the i-th component is different from the j-th component.
61. A point cloud decoding device, characterized in that: include: A mode determination unit, used to determine a decoding mode of a current point in a current node, wherein the current node is a node to be decoded in a current frame to be decoded; a prediction point determination unit, configured to determine, if the decoding mode of the current point is a skip decoding mode, at least one prediction point of the current point among the points included in the N prediction nodes of the current node, the prediction node being a node corresponding to the current node in the prediction reference frame of the current frame to be decoded, the skip decoding mode being a mode for skipping decoding of geometric information of the current point, and N being a positive integer; A decoding unit is used to determine the geometric information of the current point based on the geometric information of the at least one prediction point.
62. A point cloud encoding device, characterized in that: include: A mode determination unit, used to determine a coding mode of a current point in a current node, wherein the current node is a node to be coded in a current frame to be coded; The encoding unit is used to skip encoding the geometric information of the current point if the encoding mode of the current point is a skip encoding mode.
63. An electronic device, characterized in that: include: Processor and memory; The memory is used to store computer programs; The processor is used to call and run the computer program stored in the memory to execute the method according to any one of claims 1 to 30 or 31 to 60.
64. A computer-readable storage medium, characterized in that Used to store a computer program, wherein the computer program causes a computer to execute the method according to any one of claims 1 to 30 or 31 to 60.