Point cloud coding and decoding method, device, equipment and storage medium

CN120958831APending Publication Date: 2025-11-14GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
CN202380096553.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-04-11
Publication Date
2025-11-14

Smart Images

  • Figure CN120958831A_ABST
    Figure CN120958831A_ABST
Patent Text Reader

Abstract

The invention provides a point cloud coding and decoding method, device and equipment and a storage medium, and the method comprises the steps: during attribute coding and decoding, firstly determining a first parameter which is used for indicating the maximum number M of reference points which can be cached by a prediction reference cache, and then determining M reference points based on the first parameter, the M reference points are stored in a prediction reference cache, and then the attribute prediction value of the current point is determined based on the reference points included in the prediction reference cache. According to the embodiment of the invention, the size of the prediction reference cache is indicated through the first parameter, so that the size of the prediction reference cache is fixed and does not change dynamically along with the change of the number of the reference points, the memory resources of coding and decoding equipment are saved, and the coding and decoding performance of the point cloud attribute is improved.
Need to check novelty before this filing date? Find Prior Art

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, also known as point cloud encoding, involves first identifying at least one neighboring point of the current point from the reference points in the prediction reference cache. Based on the attribute information of this neighboring point, the predicted attribute value of the current point is then determined. However, the performance of attribute encoding and decoding is poor, and there is room for further improvement.

[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 fix the cacheable size of the prediction reference cache, thereby saving memory resources of the decoding device and improving the decoding performance of point cloud attributes.

[0006] In a first aspect, an embodiment of the present application provides a point cloud decoding method, comprising:

[0007] Determine a first parameter, where the first parameter is used to indicate a maximum number M of reference points that can be cached in the prediction reference cache, where M is a positive integer;

[0008] Determine M reference points based on the first parameter, and store the M reference points in the prediction reference buffer;

[0009] Based on the reference points included in the prediction reference buffer, a property prediction value of the current point is determined.

[0010] In a second aspect, the present application provides a point cloud encoding method, comprising:

[0011] Determine a first parameter, where the first parameter is used to indicate a maximum number M of reference points that can be cached in the prediction reference cache, where M is a positive integer;

[0012] Determine M reference points based on the first parameter, and store the M reference points in the prediction reference buffer;

[0013] Based on the reference points included in the prediction reference buffer, a property prediction value of the current point is determined.

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

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

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

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

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

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

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

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

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

[0023] In a twelfth aspect, a code stream is provided, which is generated based on the method of the second aspect.

[0024] Based on the above technical solution, when encoding and decoding attributes, the decoder first determines a first parameter, which indicates the maximum number of reference points M that can be cached in the prediction reference cache. Then, based on this first parameter, M reference points are determined and stored in the prediction reference cache. Furthermore, based on the reference points included in the prediction reference cache, the attribute prediction value of the current point is determined. In other words, the embodiment of the present application uses the first parameter to indicate the size of the prediction reference cache, making the size of the prediction reference cache fixed and not changing dynamically with the number of reference points. This saves memory resources on the encoding and decoding device and improves the encoding and decoding performance of point cloud attributes. BRIEF DESCRIPTION OF THE DRAWINGS

[0025] Figure 1A is a schematic diagram of a point cloud;

[0026] Figure 1B is a partial enlarged view of the point cloud;

[0027] FIG2 is a schematic diagram of six viewing angles of a point cloud image;

[0028] FIG3 is a schematic block diagram of a point cloud encoding and decoding system according to an embodiment of the present application;

[0029] FIG4A is a schematic block diagram of a point cloud encoder provided in an embodiment of the present application;

[0030] FIG4B is a schematic block diagram of a point cloud decoder provided in an embodiment of the present application;

[0031] FIG5A is a schematic plan view;

[0032] FIG5B is a schematic diagram of node coding sequence;

[0033] FIG5C is a schematic diagram of a plane mark;

[0034] Figure 5D is a schematic diagram of sibling nodes;

[0035] Figure 5E is a schematic diagram of the intersection of the laser radar and the node;

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

[0037] FIG5G is a schematic diagram of neighboring nodes when the node is located at a lower plane position of the parent node;

[0038] FIG5H is a schematic diagram of neighboring nodes when the node is located at a high plane position of the parent node;

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

[0040] Figure 6 is a schematic diagram of IDCM encoding;

[0041] 7A to 7C are schematic diagrams of geometric information encoding based on triangular facets;

[0042] FIG8A is a schematic diagram of LOD construction based on distance;

[0043] FIG8B is a subjective schematic diagram of the distance-based LOD generation process;

[0044] FIG8C is a flowchart of the predicted encoding;

[0045] FIG8D is a schematic diagram of LOD division;

[0046] FIG8E is a schematic diagram of inter-layer nearest neighbor search;

[0047] FIG8F is a schematic diagram of a nearest neighbor search based on spatial relationships;

[0048] FIG8G is a schematic diagram of a nearest neighbor search for coplanar, colinear, and co-point features;

[0049] FIG8H is a schematic diagram of a neighbor point search;

[0050] FIG8I is a schematic diagram of a neighbor point search;

[0051] FIG8J is a schematic diagram of neighbor point search based on a fast search algorithm;

[0052] FIG8K is a schematic diagram of an inter-frame nearest neighbor search;

[0053] FIG8L is a flowchart of a lifting transformation;

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

[0055] FIG8N is a schematic diagram of a RAHT transformation;

[0056] FIG8O is a schematic diagram of a RAHT forward transform and inverse transform;

[0057] FIG9 is a schematic diagram of a point cloud decoding method according to an embodiment of the present application;

[0058] FIG10 is a schematic diagram of a prediction reference cache;

[0059] FIG11 is a schematic diagram of updating a reference prediction cache;

[0060] FIG12 is a schematic diagram of updating a reference prediction cache;

[0061] FIG13 is a schematic diagram of a point cloud encoding method according to an embodiment of the present application;

[0062] FIG14 is a schematic block diagram of a point cloud decoding device provided in an embodiment of the present application;

[0063] FIG15 is a schematic block diagram of a point cloud encoding device provided in an embodiment of the present application;

[0064] FIG16 is a schematic block diagram of an electronic device provided in an embodiment of the present application;

[0065] Figure 17 is a schematic block diagram of the point cloud encoding and decoding system provided in an embodiment of the present application. DETAILED DESCRIPTION

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

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

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

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

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

[0071] Table 1

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

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

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

[0075] Point clouds can be divided into dense point clouds and sparse point clouds according to the acquisition method.

[0076] Point clouds are divided into the following types according to the time series of the data:

[0077] The first type of static point cloud: the object is stationary and the device used to obtain the point cloud is also stationary;

[0078] The second type of dynamic point cloud: the object is moving, but the device that obtains the point cloud is stationary;

[0079] The third type of dynamic point cloud acquisition: the device that acquires the point cloud is moving.

[0080] Point clouds are divided into two categories according to their uses:

[0081] Category 1: Machine perception point cloud, which can be used in scenarios such as autonomous navigation systems, real-time inspection systems, geographic information systems, visual sorting robots, and disaster relief robots;

[0082] Category 2: Human eye perception point cloud, which can be used in point cloud application scenarios such as digital cultural heritage, free viewpoint broadcasting, 3D immersive communication, and 3D immersive interaction.

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

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

[0085] The following introduces the relevant knowledge of point cloud encoding and decoding.

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

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

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

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

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

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

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

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

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

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

[0096] In some embodiments, the decoding device 120 includes an input interface 121 and a point cloud decoder 122 .

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

[0098] The input interface 121 includes a receiver and / or a modem and can receive the encoded point cloud data via the channel 130 .

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

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

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

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

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

[0104] Figure 4A is a schematic block diagram of the point cloud encoder provided in an embodiment of the present application.

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

[0106] In the GPCC coding framework, the geometric information of the point cloud and the corresponding attribute information are encoded separately.

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

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

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

[0110] As shown in Figure 4A, position encoding can be achieved through the following units:

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

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

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

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

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

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

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

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

[0119] Attribute encoding can be achieved through the following units:

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

[0121] It should be noted that the point cloud encoder 200 may include more, fewer, or different functional components than those shown in FIG. 4A .

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

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

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

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

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

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

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

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

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

[0131] Figure 4B is a schematic block diagram of the point cloud decoder provided in an embodiment of the present application.

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

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

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

[0135] As shown in Figure 4B, position decoding can be achieved by the following units:

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

[0137] Attribute encoding can be achieved through the following units:

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

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

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

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

[0142] The following introduces octree-based geometric coding and prediction tree-based geometric coding.

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

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

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

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

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

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

[0149] The first method is to judge based on the plane probability of the node in each dimension.

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

[0151] 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). Next, 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)

[0152] 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)

[0153] Next, the update process of local_node_density and the update of Prob(i) are introduced.

[0154] In one example, Prob(i) is updated by the following formula (3): Prob(i) new = (Lx Prob(i) + δ(coded node)) / L + 1 (3)

[0155] where L = 255. When the coded node is a plane, it is 1; otherwise, it is 0.

[0156] In one example, local_node_density is updated by the following formula (4): local_node_density new = local_node_density + 4 * numSiblings (4)

[0157] where local_node_density is initialized to 4, and 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).

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

[0159] 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)

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

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

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

[0163] The following describes the predictive coding of plane identification information and plane position information for nodes that currently meet the plane coding conditions.

[0164] 1. Predictive Coding of Plane Marking Information

[0165] Currently, three contexts are used to encode plane identification information, that is, the plane representation in each dimension is designed separately.

[0166] The following introduces the encoding of planar position information of non-lidar point clouds and lidar point clouds respectively.

[0167] 1) Encoding of non-lidar point cloud planar position information

[0168] 1. Predictive coding of planar position information.

[0169] The plane position information is predictively coded based on the following information:

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

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

[0172] (3) The plane position of the node at the same partition depth and the same coordinates as the current node;

[0173] (4) Coordinate dimension (i=0, 1, 2).

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

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

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

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

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

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

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

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

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

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

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

[0185] 2) Coding of LiDAR point cloud plane position information

[0186] 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):

[0187] 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):

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

[0189] 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 6:

[0190] (1) The current node has no sibling child nodes, that is, the parent node of the current node has only one child node, and the parent node of the parent node of the current node has only two occupied child nodes, that is, the current node has at most one neighbor node.

[0191] (2) The parent node of the current node has only one child node, the current node, and the six neighbor nodes that share a face with the current node are all empty nodes.

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

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

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

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

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

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

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

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

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

[0201] 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 a three-dimensional coordinate represented by a d-bit binary number for each component, its three components can be expressed as formula (8):

[0202] Among them, x l ,y l ,z l ∈{0,1} are the binary values ​​corresponding to the highest bit (l=1) to the lowest bit (l=d) of x, y, and z respectively. The Morton code M is to cross-arrange x, y, and z starting from the highest bit. l ,y l ,z l To the lowest bit, the calculation formula of M is shown in the following formula (9):

[0203] Among them, m l′ ∈{0,1} are the values ​​of the highest bit (l′=1) to the lowest bit (l′=3d) of M. After obtaining the Morton code M of each point in the point cloud, the points in the point cloud are arranged in ascending order of the Morton code, and the weight w of each point is set to 1.

[0204] There are 4 general test conditions for GPCC:

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

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

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

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

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

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

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

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

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

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

[0215] Currently, the attribute prediction module of G-PCC adopts a nearest neighbor attribute prediction coding scheme based on a hierarchical (Level-of-details, LoDs) structure. The construction methods of LOD include the distance-based LOD construction scheme, the fixed sampling rate-based LOD construction scheme, and the 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 Figure 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 construction process of LOD is as follows: (1) First, mark all points in the point cloud as unvisited, and establish a set V to store the set of visited points; (2) For each iteration l, traverse the points in the point cloud. If the current point has been visited, ignore it. Otherwise, calculate the minimum distance D from the current point to the point set V. If D < dl, ignore the point; otherwise, mark the current point as visited and add the current point to the refinement level Rl and the point set V; (3) The points in the 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.

[0216] 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 LOD level. 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 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.

[0217] Exemplarily, based on the following formula (10), the attribute prediction value is determined:

[0218] where, N represents the number of prediction 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 after reconstruction of the nearest neighbor point m, and Attr i ′ represents the attribute prediction value of the current point i, and the number of points N is a preset value in advance.

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

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

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

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

[0223] Table 2 Samples of candidate prediction items for attribute coding

[0224] Finally, RDO is used to select the best predictor variable. The weighted average formula is shown in formula (11):

[0225] In formula (11) represents the spatial geometric weight from the neighboring point j to the current point i, and the calculation formula is shown in formula (12):

[0226] 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 ,yi ,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.

[0227] The following introduces the attribute prediction residuals and quantification.

[0228] 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 (13), the attribute residual (r i ) i∈0…k-1 Denoted as:

[0229] Furthermore, the prediction residual is quantized based on the following formula (14):

[0230] In formula (14), 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.

[0231] The encoding end reconstructs the attribute value

[0232] 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 (15), is the residual after inverse quantization:

[0233] Then, based on the following formula (16), and predicted value Add up to get the reconstruction value of point i

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

[0235] Intra-frame nearest neighbor search:

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

[0237] 1. Inter-layer nearest neighbor search

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

[0239] The following is a detailed description of the entire process of searching for the nearest neighbor within a frame:

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

[0241] (1) Initialization

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

[0243] O(k)←{}

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

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

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

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

[0248] Nearest neighbor search based on spatial relationships

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

[0250] Illustratively, the spatial relationships of coplanarity, colinearity, and copoint are shown in FIG8G .

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

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

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

[0254] 2. Nearest neighbor search within the layer

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

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

[0257] The above describes the nearest neighbor search within a frame. The following describes the nearest neighbor search between frames.

[0258] Inter-frame nearest neighbor search:

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

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

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

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

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

[0264] Finally, the predicted structure shown in Figure 8K is obtained.

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

[0266] First layer: BucketSize_0 = 2 5 =32;

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

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

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

[0270] 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 (17): idx_2=index / BucketSize_2 (17)

[0271] 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 (18): startIdx1=idx_2×BucketSize_1 endIdx=idx_2×BucketSize_1+BucketSize_1-1 (18)

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

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

[0274] 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 bounding box in three dimensions and maxPos is the maximum value of the bounding box in three dimensions. Then the distance D between the current point and the bounding box is calculated as shown in formula (19): 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 (19)

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

[0276] The following introduces the lifting transform encoding of point cloud attribute information.

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

[0278] Step 1: Segmentation Process

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

[0280] Step 2: Prediction Process

[0281] 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 (20): D(N) = H(N) - P(N) (20)

[0282] Step 3: Update Process

[0283] 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 (21): L′(N)=L(N)+U(N) (21)

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

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

[0286] The following is an introduction to region-adaptive hierarchical transformation.

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

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

[0289] 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 (22) is:

[0290] For example, where T w0,w1 The transformation matrix is ​​determined according to the following formula (23):

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

[0292] The above introduces the encoding and decoding technology of point cloud geometric information and attribute information.

[0293] When G-PCC performs a nearest neighbor search for an attribute, it performs a fast nearest neighbor search on a block-by-block basis. First, the predicted reference point set is stored in a cache divided into three layers. Next, a fast nearest neighbor search is performed on a block-by-block basis. Finally, the nearest neighbor attributes found are used to perform a weighted prediction of the current point's attributes. However, existing algorithms do not restrict the cache contents of the current predicted reference point set. However, the cache memory is proportional to the number of predicted reference points. Therefore, existing algorithms create a dynamic, uncontrollable cache issue for hardware implementations. That is, when predicting the attributes of the current point, all reference points for the current point are cached in the predicted reference cache. A large number of reference points results in a large predicted reference cache, while a small number of reference points results in a small predicted reference cache. This makes the size of the predicted reference cache uncontrollable, resulting in poor attribute decoding performance.

[0294] To address the aforementioned technical issues, an embodiment of the present application determines a first parameter when encoding and decoding the attribute information of the current point. This first parameter is used to indicate the maximum number M of reference points that can be cached by the prediction reference cache. Then, based on this first parameter, M reference points are determined and stored in the prediction reference cache. Furthermore, based on the reference points included in the prediction reference cache, the attribute prediction value of the current point is determined. That is, the embodiment of the present application uses the first parameter to indicate the size of the prediction reference cache, so that the size of the prediction reference cache is fixed and does not change dynamically with changes in the number of reference points, thereby saving memory resources of the encoding and decoding device and improving the decoding performance of point cloud attributes.

[0295] The following describes the point cloud encoding and decoding method involved in the embodiments of the present application in conjunction with specific embodiments.

[0296] First, taking the decoding end as an example, the point cloud decoding method provided in the embodiment of the present application is introduced.

[0297] 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 above.

[0298] As shown in FIG9 , the point cloud decoding method of the embodiment of the present application includes:

[0299] S101: Determine a first parameter.

[0300] The first parameter is used to indicate the maximum number of reference points M that can be cached by the prediction reference cache, where M is a positive integer. In some embodiments, M is expressed as maxNumPoints.

[0301] 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 attribute decoding of a point cloud.

[0302] In this embodiment of the application, point cloud attribute decoding is performed after point cloud geometry decoding. That is, in this embodiment of the application, the point cloud's geometry information is first decoded to obtain a point cloud after geometry decoding. Next, based on the point cloud after geometry decoding, the point cloud's attribute information is decoded.

[0303] In some embodiments, when decoding the attribute information of a point cloud, the point cloud is divided into multiple layers based on the geometric information of the point cloud, and then the attribute information of each point in each layer is decoded layer by layer.

[0304] For example, the point cloud may be divided into multiple LOD layers based on the geometric information of the point cloud, and the attribute information of each point in each LOD layer may be decoded.

[0305] In some embodiments, before dividing the point cloud into multiple layers, the point cloud is first sorted. For example, based on the geometric information of each point in the point cloud, the Morton code of each point in the point cloud is determined, and then the points in the point cloud are sorted based on the Morton code to obtain a Morton-sorted point cloud.

[0306] In the embodiment of the present application, the decoding process of the attribute information of each point in each layer is basically the same. Taking a point in a certain layer of the point cloud as an example, first, determine and find N neighboring points of the current point whose attribute information has been decoded, where N is a positive integer. Then, based on the attribute information of these N neighboring points (i.e., the attribute reconstruction value), predict the attribute information of the current point. For example, the attribute information of one neighboring point among the N neighboring points is determined as the attribute prediction value of the current point, or the weighted average of the attribute information of these N neighboring points is determined as the attribute prediction value of the current point.

[0307] When determining the N neighboring points of the current point, it usually includes intra-frame nearest neighbor search and / or inter-frame nearest neighbor search.

[0308] For example, in some embodiments, only the intra-frame nearest neighbor search method is used to determine the N nearest neighbor points of the current point. In some embodiments, only the inter-frame nearest neighbor search method is used to determine the N nearest neighbor points of the current point.

[0309] For another example, in some embodiments, both the intra-frame nearest neighbor search and the inter-frame nearest neighbor search are used to determine N neighboring points of the current point.

[0310] Currently, when G-PCC performs a nearest neighbor search for an attribute, it performs a fast nearest neighbor search on a block-by-block basis. First, the predicted reference point set is stored in a cache, which is divided into three layers. Next, a fast nearest neighbor search is performed on a block-by-block basis. Finally, the nearest neighbor attributes found are used to perform a weighted prediction of the current point's attributes. However, existing algorithms do not restrict the cache contents of the current predicted reference point set. However, the cache memory is proportional to the number of predicted reference points. Therefore, existing algorithms create a dynamic, uncontrollable cache issue for hardware implementations. That is, when predicting the attributes of the current point, all reference points for the current point are cached in the predicted reference cache. A large number of reference points results in a large predicted reference cache, while a small number of reference points results in a small predicted reference cache. This makes the size of the predicted reference cache uncontrollable, resulting in poor attribute decoding performance.

[0311] In order to solve the above technical problems, the embodiment of the present application introduces a first parameter, which is used to control the number of parameter points stored in the prediction reference cache, thereby achieving controllable cache content on the decoding end, thereby saving memory resources of the encoding and decoding device and improving the decoding performance of point cloud attributes.

[0312] In some embodiments, the maximum number of reference points M that can be cached in the prediction reference cache can be understood as the size of the prediction reference cache being M, or as the maximum number of reference points that can be cached in the prediction reference cache. For example, if M = 100, then when the decoder performs attribute prediction, 100 reference points are cached in the prediction reference cache each time.

[0313] The specific process of determining the first parameter at the decoding end is introduced below.

[0314] In some embodiments, the first parameter may be a preset value or a default value. That is, the encoder and decoder determine the preset value or the default value as the maximum number of reference points that can be cached in the prediction reference cache, that is, the size of the prediction reference cache.

[0315] In some embodiments, the encoder determines a first parameter and writes the first parameter into the bitstream, so that the decoder obtains the first parameter by decoding the bitstream and further obtains the size of the prediction reference buffer or the maximum number of reference points M that can be cached based on the first parameter.

[0316] The embodiment of the present application does not limit the specific form of expression of the first parameter.

[0317] Exemplarily, the first parameter may be represented using the syntax element max_points_per_bucket_log2_plus1.

[0318] In some embodiments, the first parameter may be included in an attribute parameter set (APS).

[0319] The embodiment of the present application does not limit the specific position and specific form of the first parameter in the ASP.

[0320] In one example, the syntax of the attribute parameter set data unit is shown in Table 3:

[0321] Table 3

[0322] As shown in Table 3, max_points_per_bucket_log2_plus1 represents the first parameter.

[0323] In this example, the decoder obtains the first parameter max_points_per_bucket_log2_plus1 by decoding the syntax elements shown in FIG3 , and then obtains the size M of the prediction reference cache or the maximum number M of reference points that can be cached in the prediction reference cache based on the first parameter.

[0324] In some embodiments, the encoding end may also write the first parameter into other locations in the bitstream except the APS, which is not limited in this embodiment of the present application.

[0325] After the decoding end determines the first parameter based on the above steps, it executes the following step S102.

[0326] S102: Determine M reference points based on the first parameter, and store the M reference points in a prediction reference buffer.

[0327] After determining the first parameter based on the above steps, the decoder can determine the maximum number of reference points M that can be cached in the prediction reference cache. Furthermore, based on the points decoded from the current attribute, the decoder can determine M reference points and store these M reference points in the prediction reference cache. In other words, in this embodiment of the present application, the decoder uses the first parameter to cache a maximum of M reference points in the prediction reference cache, thereby controlling the number of points stored in the prediction reference cache.

[0328] The embodiment of the present application does not limit the specific method of determining M reference points based on the first parameter.

[0329] In some embodiments, as can be seen above, during point cloud attribute decoding, the point cloud geometry has already been decoded. Therefore, the point cloud is sorted based on the geometric decoded information of the point cloud, for example, by performing Morton code sorting. From the sorted point cloud, M points whose attribute information has been decoded are selected as M reference points for the current point, and these M reference points are stored in a prediction reference cache. For example, based on the sorting order of the point cloud, M reference points are selected from the points whose attribute information has been decoded. For another example, random sampling is performed from the sorted points whose attribute information has been decoded to obtain M attribute-decoded points as the M reference points.

[0330] In some embodiments, when performing attribute decoding on a point cloud, the point cloud is layered, for example, LOD construction is performed. In this way, when performing attribute decoding on the current point in a certain layer, M reference points can be selected from the current LOD layer where the current point is located. For example, the decoding end decodes the code stream to determine whether the current point cloud introduces intra-LOD layer prediction. If it is determined that the current point cloud starts intra-LOD layer prediction, the points in the same LOD layer can be used for attribute prediction, that is, M points with decoded attribute information are selected from the current LOD layer and stored in the prediction reference cache as M reference points for the current point. It should be noted that when the number of LOD layers is 1, intra-LOD layer prediction is always used.

[0331] In some embodiments, when predicting the attribute information of the current point, the decoder first determines a set of prediction reference points corresponding to the current point. In this case, determining the M reference points based on the first parameter in S102 includes the following steps:

[0332] S102-A1. Determine a predicted reference point set corresponding to the current point, where the predicted reference point set includes multiple reference points;

[0333] S102-A2. Based on the first parameter, select M reference points from the prediction reference point set.

[0334] In this embodiment, the decoder first determines multiple reference points corresponding to the current point and uses the set of these multiple reference points as the predicted reference point set corresponding to the current point. Existing methods store all reference points in this predicted reference point set in a predicted reference cache when predicting the attributes of the current point. This occupies a large amount of memory, leaving less memory for other calculations on the decoder, thereby reducing decoding efficiency. To address this technical problem, the embodiment of the present application controls the size of the predicted reference cache using a first parameter. When predicting the attribute information of each point in the point cloud, M reference points are stored in the predicted reference cache each time, avoiding excessive memory usage by the predicted reference cache and thereby improving decoding efficiency on the decoder.

[0335] Exemplarily, taking the nearest neighbor search within a frame as an example, in the entire LOD division process, there are three sets O(k), L(k) and I(k), where k is the index of the LOD layer during LOD division, and I(k) is the input point set during the current LOD layer division. After LOD division, the O(k) set and the 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. Exemplarily, 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. When performing inter-layer nearest neighbor search, the points in the L(k) set perform nearest neighbor search in the O(k) set.

[0336] In this embodiment of the present application, the current point is any point in the L(k) set whose attribute information is to be decoded, and the O(k) set is the set of prediction reference points corresponding to the current point. It should be noted that in this embodiment of the present application, the reference points included in the prediction reference set are all points whose attribute information has been decoded.

[0337] In some embodiments, during intra-frame prediction, the decoded point set of the same layer in the same LOD is added to the prediction reference point set.

[0338] In some embodiments, during inter-frame prediction, at least one point in a reference frame of a current point whose attribute has been decoded may be added to a prediction reference point set.

[0339] In the embodiment of the present application, the reference frame of the current point can be understood as the reference frame of the current frame where the current point is located.

[0340] The embodiment of the present application does not limit the number of reference frames of the current point, that is, the current point includes one or more reference frames.

[0341] In some embodiments, the reference frame of the current point includes a forward reference frame of the current frame.

[0342] In some embodiments, the reference frame of the current point includes a backward reference frame of the current frame.

[0343] In some embodiments, the reference frame of the current point includes a forward reference frame and a backward reference frame of the current frame.

[0344] From the above, it can be seen that no matter whether the current point adopts the intra-frame nearest neighbor search, the inter-frame nearest neighbor search, or both the intra-frame nearest neighbor search and the inter-frame nearest neighbor search, a prediction reference set can be determined. Usually, the prediction reference set includes more than M points whose attribute information has been decoded.

[0345] In an embodiment of the present application, after the decoding end determines the prediction reference set corresponding to the current point, it does not cache all points in the prediction reference set into the prediction reference cache. Instead, based on the first parameter, it selects M reference points from the prediction reference set and caches them into the prediction reference cache to avoid the prediction reference cache occupying more memory space and affecting the decoding efficiency.

[0346] In the embodiment of the present application, the methods for selecting M reference points from the prediction reference set include but are not limited to the following:

[0347] Method 1: Based on the distance between each point in the prediction reference set and the current point, the M reference points closest to the current point are selected from the prediction reference set.

[0348] Method 2: Based on the index of each reference point in the predicted reference point set, M reference points are selected from the predicted reference point set. For example, the points in the predicted reference point set are sorted according to the Morton code. This allows for selecting from the predicted reference point set several points with indexes greater than the index of the current point, as well as several points with indexes less than the index of the current point, for a total of M points to serve as the M reference points corresponding to the current point.

[0349] Method 3: To prevent frequent updates of points in the prediction reference cache, M reference points are selected in sequence according to the search of each point in the prediction reference point set and stored in the prediction reference cache.

[0350] In some embodiments, if the number of reference points included in the predicted reference set corresponding to the current point is equal to or less than the maximum number of reference points M that can be cached in the predicted reference cache indicated by the first parameter, the step of selecting M reference points from the predicted reference point set is skipped, and all reference points in the predicted reference set are cached in the predicted reference cache.

[0351] According to the above steps, the decoding end determines M reference points based on the first parameter and stores the M reference points in the prediction reference buffer, and then performs the following step S103.

[0352] S103: Determine the attribute prediction value of the current point based on the reference points included in the prediction reference cache.

[0353] Based on the first parameter, the decoding end selects M reference points from the points whose attributes have been decoded, and stores these M reference points in the prediction reference cache. Then, based on the reference points included in the prediction reference cache, the attribute prediction of the current point is performed to obtain the attribute prediction value of the current point.

[0354] The embodiment of the present application does not limit the specific manner in which the decoding end determines the attribute prediction value of the current point based on the reference points included in the prediction reference cache.

[0355] As can be seen from the above, in some embodiments, to reduce memory usage by the prediction reference cache, the present embodiments reduce the number of reference points included in the prediction reference cache, namely, a fixed number of M reference points are stored in the prediction reference cache at a time. Since the number of reference points included in the prediction reference cache is relatively small, the decoding end can directly use all or part of the reference points included in the prediction reference cache as neighboring points of the current point to predict the attribute information of the current point.

[0356] In some embodiments, the decoding end performs attribute prediction on the current point through the following steps S103-A and S103-B:

[0357] S103-A: Search for at least one neighboring point of the current point among the reference points included in the prediction reference cache.

[0358] S103-B: Determine the attribute prediction value of the current point based on the attribute information of at least one neighboring point.

[0359] In this embodiment, when the decoding end predicts the attributes of the current point, it searches for at least one neighboring point of the current point from the reference points included in the prediction reference cache, and then predicts the attribute information of the current point based on the attribute information of the at least one neighboring point (i.e., the attribute reconstruction value) to obtain the attribute prediction value of the current point.

[0360] In the embodiment of the present application, methods for searching for at least one neighboring point of a current point among the reference points included in the prediction reference cache include but are not limited to the following:

[0361] Method 1: In the intra-frame inter-layer nearest neighbor search, the reference points included in the prediction reference cache include points in the LOD layer decoded before the current LOD layer. Based on this, the decoder first uses the coordinates of the current point to obtain the corresponding spatial block as the current block, and then performs a nearest neighbor search in the LOD layer decoded before the current LOD layer, for example, searching for reference points included in the spatial block that are coplanar, colinear, and co-point with the current block as at least one neighbor point of the current point.

[0362] Method 2: The above S103-A includes the following steps:

[0363] S103-A1. Determine a first reference point corresponding to the current point in the predicted reference point set;

[0364] S103-A2: Based on the first reference point, search for at least one neighboring point of the current point among the reference points included in the prediction reference cache.

[0365] In method 2, the decoding end first determines a reference point among the reference points included in the prediction reference point set as the first reference point corresponding to the current point, and then, based on the first reference point, searches for at least one neighboring point of the current point among the reference points included in the prediction reference cache.

[0366] The embodiment of the present application does not limit the specific manner in which the decoding end determines the first reference point corresponding to the current point in the prediction reference point set.

[0367] In one example, any reference point in the predicted reference point set is determined as the first reference point corresponding to the current point.

[0368] In one example, the decoder and encoder use a reference point in the prediction reference point set as the first reference point corresponding to the current point by default. In one example, the reference points in the prediction reference point set are sorted based on an index, such that the first point, the second point, or the nth point in the prediction reference point set can be used as the first reference point corresponding to the current point, where n is a positive integer less than or equal to M.

[0369] In one example, the decoder determines the first reference point in the predicted reference point set whose index is greater than or equal to the current point's index as the first reference point. For example, if the current point's index is i, the decoder searches the predicted reference point set and finds the first reference point (j) whose index is greater than or equal to the current point's index, which is used as the first reference point for the current point.

[0370] The embodiment of the present application does not limit the specific form of the index of the current point and the reference point.

[0371] For example, if the embodiment of the present application sorts the point cloud based on the Morton code order, the index of the above point can be the Morton code index of the point.

[0372] For another example, if the embodiment of the present application sorts the point cloud based on the Hilbert order, the index of the above point may be the Hilbert index of the point.

[0373] After the decoding end determines the first reference point corresponding to the current point based on the above steps, it executes the above step S103-A2 to search for at least one neighboring point of the current point among the reference points included in the prediction reference cache based on the first reference point.

[0374] For example, as shown in FIG10 , assuming that the current point is the i-th point in the current point frame, or the index of the current point is i, the index of the first reference point is j, and assuming that the indexes of the M reference points included in the prediction reference cache are: P j-M / 2 ,……,P j-3 、P j-2 、Pj-1 、P j 、P j+1 、P j+2 ,……,P j+M / 2 The decoding end finds at least one neighboring point of the current point from these M reference points. For example, taking the first reference point as P j Center, search within the preset search range to obtain at least one neighboring point of the current point.

[0375] The embodiment of the present application does not limit the specific manner in which the decoding end searches for at least one neighboring point of the current point among the reference points included in the prediction reference buffer based on the first reference point.

[0376] In a possible implementation, the decoding end searches for at least one reference point closest to the current point near the first reference point in the prediction reference cache as at least one neighboring point of the current point.

[0377] In a possible implementation, the above S103-A2 includes the following steps S103-A21 to S103-A23:

[0378] S103-A21, based on the first reference point, determining whether to update the prediction reference cache;

[0379] S103-A22: If it is determined to update the prediction reference cache, then based on the remaining reference points in the prediction reference point set, update at least one reference point included in the prediction reference cache to obtain an updated prediction reference cache;

[0380] S103-A23: Search for at least one neighboring point of the current point among the reference points included in the updated prediction reference cache.

[0381] In this implementation, after determining the first reference point, the decoder first determines whether to update the prediction reference cache based on the first reference point. Specifically, the decoder determines whether, based on the first reference point, it can accurately determine at least one neighbor of the current point from the reference points currently cached in the prediction reference cache. If it is determined that at least one neighbor of the current point cannot be accurately determined from the reference points currently included in the prediction reference cache, then the current prediction reference cache is updated.

[0382] If the decoding end determines that the prediction reference buffer does not need to be updated, it searches for at least one neighboring point of the current point from the M reference points included in the current prediction reference buffer.

[0383] If the decoding end determines to update the prediction reference cache, it updates at least one reference point included in the prediction reference cache based on the remaining reference points in the prediction reference point set to obtain an updated prediction reference cache, and then searches for at least one neighboring point of the current point among the reference points included in the updated prediction reference cache.

[0384] The following describes a specific method for determining whether to update the prediction reference cache based on the first reference point in the above S103 - A21 .

[0385] The embodiment of the present application does not limit the specific manner in which the decoding end determines whether to update the prediction reference cache based on the first reference point.

[0386] In some embodiments, the above S103 - A21 includes: if the first reference point is the last reference point of the current prediction reference cache or one of the last reference points, determining to update the current prediction reference cache.

[0387] In some embodiments, the above S103-A21 includes:

[0388] S103-A211: If the sum of the index of the first reference point and the first value is greater than or equal to the index of the last reference point in the prediction reference cache, determine to update the prediction reference cache, where the first value is an integer.

[0389] In S103-A211, the decoding end adds the index of the first reference point and the first value K to obtain a sum value, which is recorded as A. Then, the sum value A is compared with the index B of the last reference point in the current prediction reference buffer to determine whether the sum value A is greater than or equal to the index B of the last reference point in the current prediction reference buffer.

[0390] If the sum value A is less than the index B of the last reference point in the current prediction reference cache, it means that the decoding end can search for at least one neighboring point of the current point among the reference points included in the current prediction reference cache. At this time, it is determined that the current prediction reference cache will not be updated.

[0391] If the sum A is greater than or equal to the index B of the last reference point in the current prediction reference buffer, then the reference points included in the current prediction reference buffer are insufficient to search for at least one neighboring point of the current point, or the reference points included in the current prediction reference buffer do not include any neighboring points of the current point, or the number of neighboring points included in the current prediction reference buffer is insufficient. In this case, it is determined that the current prediction reference buffer needs to be updated.

[0392] The embodiment of the present application does not limit the specific value of the above-mentioned first value K, as long as it is an integer, such as 0, 1, 2, 3, etc.

[0393] The following describes two cases: the first value is 0, and the first value is a preset search range value. It should be noted that the first value being 0 or the preset search range value is only an example, and the values ​​of the first value in the embodiment of the application include but are not limited to these two cases.

[0394] Case 1: If the first value is 0, then the above S103-A211 includes the step S103-A211-a:

[0395] S103-A211-a: If the index of the first reference point is greater than or equal to the index of the last reference point in the prediction reference cache, determine to update the prediction reference cache.

[0396] In case 1, the decoder determines the first reference point corresponding to the current point based on the above steps, and then compares the index of the first reference point with the index of the last reference point among the reference points included in the current prediction reference buffer.

[0397] In some embodiments, if the index of the first reference point is smaller than the index of the last reference point among the reference points included in the current prediction reference cache, it is determined not to update the prediction reference cache, but to directly search for at least one neighboring point of the current point among the reference points included in the current prediction reference cache.

[0398] In some embodiments, if the index of the first reference point is greater than or equal to the index of the last reference point among the reference points included in the current prediction reference cache, then it is determined that the current prediction reference cache needs to be updated. As shown in Figure 11, assuming that the index of the first reference point is j and the index of the last reference point among the reference points included in the current prediction reference cache is also j, the decoding end determines that the current prediction reference cache needs to be updated.

[0399] In this case 1, after the decoding end determines to update the current prediction reference cache, it executes the above steps S103-A22, updates at least one reference point in the prediction reference cache based on the remaining reference points in the prediction reference point set, and obtains an updated prediction reference cache.

[0400] In the embodiment of the present application, the decoding end updates at least one reference point among the M reference points included in the prediction reference cache to obtain the updated prediction reference cache without limiting the specific method.

[0401] In one possible implementation, the decoder directly deletes all reference points from the current prediction reference cache, selects M new reference points from the remaining reference points in the prediction reference point set, and stores these M new reference points in the prediction reference set. Specifically, in this implementation, if the index of the last reference point in the current prediction reference cache is less than or equal to the index of the first reference point, the decoder directly deletes all M reference points from the prediction reference cache and selects M new reference points to store in the prediction reference cache, thus rapidly updating the entire prediction reference cache. This allows the decoder to locate at least one neighboring point of the current point from the fully updated prediction reference cache.

[0402] In an example of this implementation, the decoding end selects M reference points with indexes less than or equal to the first reference point index from the remaining reference points in the prediction reference point set, and stores them in the prediction reference point set as new reference points.

[0403] For example, the M points included in the prediction reference point set are sorted from smallest to largest in index as follows: P0, P1, ....., Pj-1, Pj, Pj+1, ..... Assume that the M reference points in the current prediction reference cache are: P0, P1, ....., PM-1, and the first reference point corresponding to the current point is Pj, where j is greater than M-1. In this case, the index j of the first reference point Pj corresponding to the current point is greater than the index M-1 of the last reference point PM-1 in the current prediction reference cache, so it is determined that the current prediction reference cache needs to be updated.

[0404] In this example, the decoder updates the current prediction reference cache by deleting the M reference points P0, P1, ..., and PM-1 contained in the current prediction reference cache. Then, from the remaining reference points in the prediction reference point set, M reference points with indexes less than or equal to the first reference point index are selected. That is, M new reference points Pj, Pj+1, ..., and Pj+M-1 are selected and stored in the prediction reference cache, thus updating the entire prediction reference cache.

[0405] In an example of this implementation, the decoding end and the encoding end use the same sampling method to sample M reference points from the remaining reference points in the prediction reference point set, and store them in the prediction reference point set as new reference points.

[0406] In a possible implementation, the above S103-A22 includes the following steps S103-A22-a1 and S103-A22-a2:

[0407] S103-A22-a1. Based on the index of the first reference point, obtain at least one second reference point from the remaining reference points in the prediction reference set;

[0408] S103-A22-a2: Use at least one second reference point to update at least one reference point in the prediction reference cache to obtain an updated prediction reference cache.

[0409] In this implementation, if the decoding end determines that the index of the first reference point is greater than or equal to the index of the last reference point in the current prediction reference cache, then based on the index of the first reference point, at least one reference point is selected from the remaining reference points of the prediction reference set. For example, at least one reference point with an index greater than the index of the first reference point is selected from the remaining reference points of the prediction reference set, recorded as at least one second reference point, and the at least one second reference point is used to update at least one reference point in the prediction reference cache to obtain an updated prediction reference cache.

[0410] In this implementation, there is no restriction on the number of second reference points selected by the decoding end from the remaining reference points in the prediction reference set based on the index of the first reference point.

[0411] In some embodiments, the decoder selects M second reference points from the remaining reference points in the prediction reference set based on the index of the first reference point. That is, in this embodiment, the decoder selects M second reference points from the remaining reference points in the reference point set based on the index of the first reference point, and then uses these M second reference points to completely replace the M reference points currently included in the prediction reference cache. For example, the decoder directly deletes the M reference points currently included in the prediction reference cache and stores the M selected second reference points in the prediction reference cache. In this way, the decoder searches for at least one neighboring point of the current point from the M second reference points included in the updated prediction reference cache.

[0412] The embodiment of the present application does not limit the specific manner in which the decoding end selects M second reference points from the remaining reference points in the prediction reference set based on the index of the first reference point.

[0413] In one example, the decoding end selects M reference points with indexes greater than or equal to the index of the first reference point from the remaining reference points in the prediction reference set as M second reference points.

[0414] In one example, the index of the point with the smallest index among the M second reference points is greater than or equal to the index of the first reference point.

[0415] In one example, the index of the point with the largest index among the M second reference points is greater than or equal to the sum of the index of the first reference point and M.

[0416] In one example, if the decoding end determines that the index j of the first reference point is greater than or equal to the index of the last reference point in the prediction reference cache, the reference point with index [j, j+M] is selected from the prediction reference set as M second reference points.

[0417] In this embodiment, the decoding end selects M second reference points from the remaining reference points in the prediction reference set based on the index of the first reference point, and then performs the above-mentioned step S103-A22-a2, that is, deleting the M reference points in the prediction reference cache and adding the above-mentioned determined M second reference points to the prediction reference cache, thereby obtaining an updated prediction reference cache as shown in Figure 12.

[0418] The above describes the process in which the decoding end updates the prediction reference buffer when the first value is 0 in case 1.

[0419] Case 2: If the first value is a preset search range value, then the above S103-A211 includes steps S103-A211-b1 and S103-A211-b2:

[0420] S103-A211-b1, adding the index of the first reference point to the preset search range value to obtain a first sum value;

[0421] S103-A211-b2: If the first sum is greater than or equal to the index of the last reference point in the prediction reference cache, determine to update the prediction reference cache.

[0422] In this scenario 2, after determining the first reference point corresponding to the current point based on the above steps, the decoder adds the index j of the first reference point to the preset search range value searchRange to obtain a first sum value j + searchRange. The decoder then compares the first sum value j + searchRange with the index of the last reference point in the current prediction reference cache to determine whether to update the current prediction reference cache.

[0423] In some embodiments, if the first sum value j+searchRange is less than the index of the last reference point among the reference points included in the current prediction reference cache, it is determined not to update the prediction reference cache, but to directly search for at least one neighboring point of the current point among the reference points included in the current prediction reference cache.

[0424] In some embodiments, if the first sum value j + searchRange is greater than or equal to the index of the last reference point among the reference points included in the current prediction reference cache, then it is determined that the current prediction reference cache needs to be updated. Assuming that the index of the first reference point is j, the preset search range value is searchRange, and the first sum value j + searchRange, if the index of the last reference point among the reference points included in the current prediction reference cache is also j + searchRange, then the decoding end determines that the current prediction reference cache needs to be updated.

[0425] In this case 1, after the decoding end determines to update the current prediction reference cache, it executes the above steps S103-A22, updates at least one reference point in the prediction reference cache based on the remaining reference points in the prediction reference point set, and obtains an updated prediction reference cache.

[0426] In the embodiment of the present application, the decoding end updates at least one reference point among the M reference points included in the prediction reference cache to obtain the updated prediction reference cache without limiting the specific method.

[0427] In one possible implementation, the decoder directly deletes all reference points from the current prediction reference cache, selects M new reference points from the remaining reference points in the prediction reference point set, and stores these M new reference points in the prediction reference set. Specifically, in this implementation, if the index of the last reference point in the current prediction reference cache is less than or equal to the first sum, the decoder directly deletes all M reference points from the prediction reference cache and selects M new reference points to store in the prediction reference cache, thus rapidly updating the entire prediction reference cache. This allows the decoder to locate at least one neighboring point of the current point from the fully updated prediction reference cache.

[0428] In an example of this implementation, the decoding end selects M reference points with indexes less than or equal to the first reference point index from the remaining reference points in the prediction reference point set, and stores them in the prediction reference point set as new reference points.

[0429] For example, the M points included in the prediction reference point set are sorted from smallest to largest index as follows: P0, P1, ....., Pj-1, Pj, Pj+1, ..... Assume that the M reference points in the current prediction reference cache are: P0, P1, ....., PM-1, the first reference point corresponding to the current point is Pj, and the first sum j+searchRange is greater than M-1. At this time, the first sum j+searchRange of the index j of the first reference point Pj corresponding to the current point and the preset search range value searchRange is greater than the index M-1 of the last reference point PM-1 in the current prediction reference cache, so it is determined that the current prediction reference cache needs to be updated.

[0430] In this example, the decoder updates the current prediction reference cache by deleting the M reference points P0, P1, ..., and PM-1 contained in the current prediction reference cache. Then, from the remaining reference points in the prediction reference point set, M reference points with indexes less than or equal to the first reference point index are selected. That is, M new reference points Pj, Pj+1, ..., and Pj+M-1 are selected and stored in the prediction reference cache, thus updating the entire prediction reference cache.

[0431] In an example of this implementation, the decoding end and the encoding end use the same sampling method to sample M reference points from the remaining reference points in the prediction reference point set, and store them in the prediction reference point set as new reference points.

[0432] In a possible implementation, the above S103-A22 includes the following steps S103-A22-b1 and S103-A22-b2:

[0433] S103-A22-b1. Based on the index of the first reference point, obtain at least one third reference point from the remaining reference points in the prediction reference set;

[0434] S103-A22-b2. Use at least one third reference point to update at least one reference point included in the prediction reference cache to obtain an updated prediction reference cache.

[0435] In this implementation, if the decoding end determines that the first sum is greater than or equal to the index of the last reference point in the current prediction reference cache, then based on the index of the first reference point, at least one reference point is selected from the remaining reference points of the prediction reference set. For example, at least one reference point with an index greater than the index of the first reference point is selected from the remaining reference points of the prediction reference set, recorded as at least one third reference point, and the at least one third reference point is used to update at least one reference point in the prediction reference cache to obtain an updated prediction reference cache.

[0436] In this implementation, there is no restriction on the number of third reference points selected by the decoding end from the remaining reference points in the prediction reference set based on the index of the first reference point.

[0437] In some embodiments, the decoder selects M third reference points from the remaining reference points in the prediction reference set based on the index of the first reference point. That is, in this embodiment, the decoder selects M third reference points from the remaining reference points in the reference point set based on the index of the first reference point, and then uses these M third reference points to completely replace the M reference points currently included in the prediction reference cache. For example, the decoder directly deletes the M reference points currently included in the prediction reference cache and stores the M selected third reference points in the prediction reference cache. In this way, the decoder searches for at least one neighboring point of the current point from the M third reference points included in the updated prediction reference cache.

[0438] The embodiment of the present application does not limit the specific manner in which the decoding end selects at least one third reference point from the remaining reference points in the prediction reference set based on the index of the first reference point.

[0439] In one example, the decoding end selects at least one reference point having an index greater than or equal to the index of the first reference point from the remaining reference points in the prediction reference set as at least one third reference point.

[0440] In one example, the decoding end selects P third reference points from the remaining reference points in the prediction reference set based on the index of the first reference point, where P is equal to the difference between the index of the first reference point and the index of the first reference point in the prediction reference cache.

[0441] In one example, the index of the point with the smallest index among the P third reference points is greater than or equal to the index of the last reference point in the prediction reference buffer plus 1. For example, if the index of the last reference point in the prediction reference buffer is 99, then the index of the point with the smallest index among the P third reference points is 100 or greater.

[0442] In one example, the index of the point with the largest index among the P third reference points is greater than or equal to the sum of the index of the first reference point and M minus 1. For example, if the index of the first reference point is 67 and M=100, then the index of the point with the largest index among the P third reference points is 166 or greater.

[0443] For example, assuming the prediction reference cache contains 100 points, indexed from 0 to 99, and the first reference point has an index of 67 and a preset search range of 40, the sum of the first reference point's index and the preset search range is 107. Since the first sum of 107 is greater than the index of the last reference point in the prediction reference cache, the current prediction reference cache is updated. Next, based on the index j of the first reference point, the decoder selects 67 third reference points with indices from 100 to 166 from the remaining reference points in the prediction reference set.

[0444] In this embodiment, the decoding end selects P third reference points from the remaining reference points in the prediction reference set based on the index of the first reference point, and then performs the above-mentioned S103-A22-b2 steps, for example, deleting the P points before the first reference point in the prediction reference cache, and adding the P third reference points to the prediction reference cache to obtain an updated prediction reference cache.

[0445] As can be seen from the above, in one example of Case 2, if the first value is a preset search range value, the decoder adds the index of the first reference point to the preset search range value to obtain a first sum. If the first sum is greater than or equal to the index of the last reference point in the prediction reference cache, the decoder selects P third reference points from the remaining reference points in the prediction reference set based on the index of the first reference point. The decoder then deletes the P points preceding the first reference point in the prediction cache and adds the P third reference points determined above to the prediction reference cache, thereby updating the prediction reference cache.

[0446] In this example, the decoding end uses P third reference points to update the prediction reference buffer in the following ways, but is not limited to:

[0447] In Example 1, the decoder deletes P points before the first reference point in the prediction reference cache and shifts MP points after the first reference point forward. Then, the decoder stores the P third reference points determined above after the first reference point to obtain an updated prediction reference cache. The updated prediction reference cache now includes M reference points, which include the MP old reference points and the P third reference points determined above.

[0448] In Example 2, the decoder deletes the P points before the first reference point in the prediction reference cache, does not move the MP points after the first reference point in the prediction reference cache, and instead directly stores the P third reference points determined above in positions before the first reference point, thereby obtaining an updated prediction reference cache. In this case, the updated prediction reference cache includes M reference points, including the MP old reference points and the P third reference points determined above. The positions of the MP old reference points in the prediction reference cache remain unchanged.

[0449] In some embodiments of this scenario 2, when the decoding end determines that the first sum is greater than or equal to the index of the last reference point in the prediction reference cache, it deletes all reference points in the current prediction reference cache and selects M new reference points from the prediction reference set and stores them in the prediction reference cache. In one example, the minimum index of these M new reference points is less than or equal to the index of the first parameter. In another example, the minimum index of these M new reference points is greater than or equal to the index of the last point in the current prediction reference cache.

[0450] The above description uses the first value being 0 or the preset search range value as an example to illustrate updating the prediction reference buffer at the decoding end. It should be noted that the embodiment of the present application does not limit the specific process of updating the prediction reference buffer at the decoding end.

[0451] In some embodiments, in order to increase the update speed, when the decoding end determines that the prediction reference cache needs to be updated, the decoding end can reselect M reference points from the reference points included in the prediction reference set based on the index of the first parameter, and update all points in the prediction reference cache.

[0452] In some embodiments, when the decoding end determines that the prediction reference cache needs to be updated, the decoding end may update the points in the prediction reference cache one by one based on the index of the first parameter.

[0453] After updating the prediction reference cache based on the above steps, the decoding end executes the above steps S103 - A23 to search for at least one neighboring point of the current point among the reference points included in the updated prediction reference cache.

[0454] In the embodiment of the present application, the decoding end searches for at least one neighboring point of the current point from the prediction reference cache in the same manner as searching for at least one neighboring point of the current point from the updated prediction reference cache. The following description uses the decoding end's search for at least one neighboring point of the current point from the prediction reference cache as an example.

[0455] The embodiment of the present application does not limit the specific manner in which the decoding end searches for at least one neighboring point of the current point from the prediction reference buffer.

[0456] In one example, if in the inter-layer nearest neighbor search, the above-mentioned prediction reference cache includes the inter-layer decoded point of the current point, the decoding end obtains the corresponding spatial block from the coordinates of the current point, and then performs a nearest neighbor search in the previously decoded LOD layer to search for spatial blocks that are coplanar, colinear, and co-point with the current block to obtain at least one neighboring point of the current point.

[0457] In one example, if, in the nearest neighbor search within a layer, the prediction reference cache includes decoded points within the layer, the decoding end searches for at least one neighboring point of the current point from among the decoded points within the layer.

[0458] In one example, if, in an inter-frame nearest neighbor search, the prediction reference cache includes decoded points in the reference frame of the current point, the decoding end can find at least one neighboring point of the current point from these inter-frame decoded points.

[0459] It should be noted that the specific manner in which the decoding end searches for at least one neighboring point of the current point from the prediction reference buffer can be referred to the description of the above embodiment and will not be repeated here.

[0460] When the decoding end determines at least one neighboring point of the current point based on the above steps, it executes the above step S103-B to determine the attribute prediction value of the current point based on the attribute information of the at least one neighboring point.

[0461] The embodiment of the present application does not limit the specific manner in which the decoding end determines the attribute prediction value of the current point based on the attribute information of at least one neighboring point.

[0462] In one example, if the at least one neighboring point includes a neighboring point, the decoding end determines the attribute information (ie, the attribute reconstruction value) of the neighboring point as the attribute prediction value of the current point.

[0463] For another example, if the at least one neighboring point includes multiple neighboring points, the average value of the attribute information of the multiple neighboring points is determined as the attribute prediction value of the current point.

[0464] For another example, if the at least one neighboring point includes multiple neighboring points, a weighted average value of the attribute information of the multiple neighboring points is determined as the attribute prediction value of the current point.

[0465] Exemplarily, the decoding end determines the attribute prediction value of the current point based on the following formula (24):

[0466] in, Represents the attribute prediction value of the current point i, j represents the index of the jth neighbor point, represents the attribute information of the jth neighbor point (i.e., attribute reconstruction value), Represents the spatial geometric weight from the jth neighbor point to the current point i.

[0467] For example, the spatial geometric weight of the jth neighbor point to the current point i can be determined by the following formula (25):

[0468] Among them, (x i ,y i ,z i ) is the geometric coordinate of the current point i, (x ij ,y ij ,z ij ) is the geometric coordinate of the jth neighbor point.

[0469] As can be seen from the above, in this embodiment of the present application, the size of the prediction reference cache is controlled by a first parameter. Based on the first parameter, M reference points are determined and stored in the prediction reference cache. The attribute prediction value of the current point is then determined based on the reference points included in the prediction reference cache. In other words, this embodiment of the present application uses the first parameter to indicate the size of the prediction reference cache, making the size of the prediction reference cache fixed and independent of the number of reference points. This saves memory resources on the codec and improves point cloud attribute decoding performance.

[0470] In order to further illustrate the decoding effect of the point cloud decoding method proposed in the embodiment of the present application, the decoding efficiency of the attributes when the first parameter max_points_per_bucket_log2_plus1 is set to different values ​​is demonstrated below.

[0471] In one example, when max_points_per_bucket_log2_plus1 is 16, the decoding efficiency of the attribute is as shown in Table 4:

[0472] Table 4

[0473] It can be seen from Table 4 above that if the first parameter is 16, the solution of the embodiment of the present application can bring a gain of 12% to 15%.

[0474] In one example, when max_points_per_bucket_log2_plus1 is 20, the decoding efficiency of the attribute is as shown in Table 5:

[0475] Table 5

[0476] It can be seen from Table 4 and Table 5 above that the smaller the first parameter max_points_per_bucket_log2_plus1 is set, the greater the impact on attribute decoding efficiency.

[0477] In the point cloud decoding method provided in an embodiment of the present application, when decoding attributes, the decoding end first determines a first parameter, which is used to indicate the maximum number of reference points M that can be cached in the prediction reference cache. Then, based on the first parameter, M reference points are determined and stored in the prediction reference cache. Furthermore, based on the reference points included in the prediction reference cache, the attribute prediction value of the current point is determined. In other words, the embodiment of the present application uses the first parameter to indicate the size of the prediction reference cache, so that the size of the prediction reference cache is fixed and does not change dynamically with changes in the number of reference points, thereby saving memory resources of the decoding device and improving the decoding performance of point cloud attributes.

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

[0479] Figure 13 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 or Figure 4A above.

[0480] As shown in FIG13 , the point cloud encoding method of the embodiment of the present application includes:

[0481] S201: Determine a first parameter.

[0482] The first parameter is used to indicate the maximum number M of reference points that can be cached in the prediction reference cache, where M is a positive integer.

[0483] 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 attribute encoding of a point cloud.

[0484] In the embodiment of the present application, point cloud attribute encoding is performed after point cloud geometry encoding. That is, in the embodiment of the present application, the geometric information of the point cloud is encoded first. Then, based on the point cloud after the geometric information encoding, the attribute information of the point cloud is encoded.

[0485] In some embodiments, when encoding the attribute information of a point cloud, the point cloud is divided into multiple layers based on the geometric information of the point cloud, and the attribute information of each point in each layer is encoded layer by layer.

[0486] For example, the point cloud may be divided into multiple LOD layers based on the geometric information of the point cloud, and the attribute information of each point in each LOD layer may be encoded.

[0487] In some embodiments, before dividing the point cloud into multiple layers, the point cloud is first sorted. For example, based on the geometric information of each point in the point cloud, the Morton code of each point in the point cloud is determined, and then the points in the point cloud are sorted based on the Morton code to obtain a Morton-sorted point cloud.

[0488] In the embodiment of the present application, the encoding process of the attribute information of each point in each layer is basically the same. Taking a point in a certain layer of the point cloud as an example, first, the N neighboring points whose attribute information has been encoded are determined, where N is a positive integer. Then, based on the attribute information of these N neighboring points (i.e., the attribute reconstruction value), the attribute information of the current point is predicted. For example, the attribute information of one neighboring point among the N neighboring points is determined as the attribute prediction value of the current point, or the weighted average of the attribute information of these N neighboring points is determined as the attribute prediction value of the current point.

[0489] When determining the N neighboring points of the current point, it usually includes intra-frame nearest neighbor search and / or inter-frame nearest neighbor search.

[0490] For example, in some embodiments, only the intra-frame nearest neighbor search method is used to determine the N nearest neighbor points of the current point. In some embodiments, only the inter-frame nearest neighbor search method is used to determine the N nearest neighbor points of the current point.

[0491] For another example, in some embodiments, both the intra-frame nearest neighbor search and the inter-frame nearest neighbor search are used to determine N neighboring points of the current point.

[0492] Currently, when G-PCC performs a nearest neighbor search for an attribute, it performs a fast nearest neighbor search based on a block. First, the predicted reference point set is stored in a cache, which is divided into three layers. Next, a fast nearest neighbor search is performed based on the block. Finally, the nearest neighbor attributes found are used to perform a weighted prediction of the current point's attributes. However, existing algorithms do not restrict the cache contents of the current predicted reference point set. However, the cache memory is proportional to the number of predicted reference points. Therefore, existing algorithms create a dynamic and uncontrollable cache issue for hardware implementations. That is, when predicting the attributes of the current point, all reference points of the current point are cached in the prediction reference cache. If there are many reference points, the prediction reference cache will be large, while if there are few reference points, the prediction reference cache will be small. This makes the size of the prediction reference cache uncontrollable, resulting in poor attribute encoding performance.

[0493] In order to solve the above technical problems, the embodiment of the present application introduces a first parameter, which is used to control the number of parameter points stored in the prediction reference cache, thereby achieving controllable cache content on the encoding side, thereby saving memory resources of the encoding device and improving the encoding performance of point cloud attributes.

[0494] In some embodiments, the maximum number of reference points M that can be cached in the prediction reference cache can be understood as the size of the prediction reference cache being M, or as the maximum number of reference points that can be cached in the prediction reference cache. For example, if M = 100, then when the encoder performs attribute prediction, it caches 100 reference points in the prediction reference cache each time.

[0495] The specific process of determining the first parameter at the encoding end is introduced below.

[0496] In some embodiments, the first parameter may be a preset value or a default value. That is, the encoder and decoder determine the preset value or the default value as the maximum number of reference points that can be cached in the prediction reference cache, that is, the size of the prediction reference cache.

[0497] In some embodiments, the encoder determines a first parameter and writes the first parameter into the bitstream. Thus, the encoder obtains the first parameter by encoding the bitstream and further obtains the size of the prediction reference buffer or the maximum number of reference points M that can be cached based on the first parameter.

[0498] The embodiment of the present application does not limit the specific form of expression of the first parameter.

[0499] Exemplarily, the first parameter may be represented using the syntax element max_points_per_bucket_log2_pluS2.

[0500] In some embodiments, the first parameter may be included in an attribute parameter set (APS).

[0501] The embodiment of the present application does not limit the specific position and specific form of the first parameter in the ASP.

[0502] In one example, the syntax of the attribute parameter set data unit is shown in Table 3.

[0503] In this example, the encoder obtains the first parameter max_points_per_bucket_log2_pluS2 by encoding the syntax elements shown in FIG. 3 , and then obtains the size M of the prediction reference cache or the maximum number M of reference points that can be cached in the prediction reference cache based on the first parameter.

[0504] In some embodiments, the encoding end may also write the first parameter into other locations in the bitstream except the APS, which is not limited in this embodiment of the present application.

[0505] After determining the first parameter based on the above steps, the encoding end performs the following step S202.

[0506] S202: Determine M reference points based on the first parameter, and store the M reference points in a prediction reference cache.

[0507] After determining the first parameter based on the above steps, the encoder can determine the maximum number of reference points M that can be cached in the prediction reference cache. Furthermore, based on the points encoded for the current attribute, the encoder can determine M reference points and store these M reference points in the prediction reference cache. In other words, in this embodiment of the present application, the encoder uses the first parameter to cache a maximum of M reference points in the prediction reference cache, thereby controlling the number of points stored in the prediction reference cache.

[0508] The embodiment of the present application does not limit the specific method of determining M reference points based on the first parameter.

[0509] In some embodiments, as can be seen above, during point cloud attribute encoding, the point cloud geometry is already encoded. Therefore, the point cloud is sorted based on its geometric information, for example, by performing Morton code sorting. From the sorted point cloud, M points with encoded attribute information are selected as M reference points for the current point, and these M reference points are stored in a prediction reference cache. For example, based on the sorting order of the point cloud, M reference points are selected from the points with encoded attribute information. For another example, random sampling is performed from the sorted points with encoded attribute information to obtain M attribute-encoded points as the M reference points.

[0510] In some embodiments, when performing attribute encoding on a point cloud, the point cloud is layered, for example, LOD construction is performed. In this way, when performing attribute encoding on the current point in a certain layer, M reference points can be selected from the current LOD layer where the current point is located. For example, the encoding end determines whether the current point cloud introduces intra-LOD layer prediction. If it is determined that the current point cloud starts intra-LOD layer prediction, the points in the same LOD layer can be used for attribute prediction, that is, M points with encoded attribute information are selected from the current LOD layer and stored in the prediction reference cache as M reference points for the current point. It should be noted that when the number of LOD layers is 1, intra-LOD layer prediction is always used.

[0511] In some embodiments, when predicting attribute information of the current point, the encoder first determines a set of prediction reference points corresponding to the current point. In this case, determining M reference points based on the first parameter in S202 includes the following steps:

[0512] S202-A1. Determine a predicted reference point set corresponding to the current point, where the predicted reference point set includes multiple reference points;

[0513] S202-A2: Based on the first parameter, select M reference points from the prediction reference point set.

[0514] In this embodiment, the encoder first determines multiple reference points corresponding to the current point and uses the set of these multiple reference points as the predicted reference point set corresponding to the current point. Existing methods store all reference points in this predicted reference point set in a predicted reference cache when predicting the attributes of the current point. This occupies a large amount of memory, leaving less memory for other calculations on the encoder, thereby reducing encoding efficiency. To address this technical problem, the embodiment of the present application controls the size of the predicted reference cache using a first parameter. When predicting the attribute information of each point in the point cloud, M reference points are stored in the predicted reference cache each time, avoiding excessive memory usage by the predicted reference cache and improving encoding efficiency on the encoder.

[0515] Exemplarily, taking the nearest neighbor search within a frame as an example, in the entire LOD division process, there are three sets O(k), L(k) and I(k), where k is the index of the LOD layer during LOD division, and I(k) is the input point set during the current LOD layer division. After LOD division, the O(k) set and the 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. Exemplarily, 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. When performing inter-layer nearest neighbor search, the points in the L(k) set perform nearest neighbor search in the O(k) set.

[0516] In this embodiment of the present application, the current point is any point in the L(k) set whose attribute information is to be encoded, and the O(k) set is recorded as the set of prediction reference points corresponding to the current point. It should be noted that in this embodiment of the present application, the reference points included in the prediction reference set are all points whose attribute information has been encoded.

[0517] In some embodiments, during intra-frame prediction, the coded point set of the same layer in the same LOD is added to the prediction reference point set.

[0518] In some embodiments, during inter-frame prediction, at least one point with an encoded attribute in a reference frame of the current point may be added to a prediction reference point set.

[0519] In the embodiment of the present application, the reference frame of the current point can be understood as the reference frame of the current frame where the current point is located.

[0520] The embodiment of the present application does not limit the number of reference frames of the current point, that is, the current point includes one or more reference frames.

[0521] In some embodiments, the reference frame of the current point includes a forward reference frame of the current frame.

[0522] In some embodiments, the reference frame of the current point includes a backward reference frame of the current frame.

[0523] In some embodiments, the reference frame of the current point includes a forward reference frame and a backward reference frame of the current frame.

[0524] From the above, it can be seen that no matter whether the current point adopts the intra-frame nearest neighbor search, the inter-frame nearest neighbor search, or both the intra-frame nearest neighbor search and the inter-frame nearest neighbor search, a prediction reference set can be determined. Usually, the prediction reference set includes more than M points whose attribute information has been encoded.

[0525] In an embodiment of the present application, after the encoding end determines the prediction reference set corresponding to the current point, it does not cache all points in the prediction reference set into the prediction reference cache, but selects M reference points from the prediction reference set based on the first parameter and caches them into the prediction reference cache, so as to avoid the prediction reference cache occupying more memory space and affecting the encoding efficiency.

[0526] In the embodiment of the present application, the methods for selecting M reference points from the prediction reference set include but are not limited to the following:

[0527] Method 1: Based on the distance between each point in the prediction reference set and the current point, the M reference points closest to the current point are selected from the prediction reference set.

[0528] Method 2: Based on the index of each reference point in the predicted reference point set, M reference points are selected from the predicted reference point set. For example, the points in the predicted reference point set are sorted according to the Morton code. This allows for selecting from the predicted reference point set several points with indexes greater than the index of the current point, as well as several points with indexes less than the index of the current point, for a total of M points to serve as the M reference points corresponding to the current point.

[0529] Method 3: To prevent frequent updates of points in the prediction reference cache, M reference points are selected in sequence according to the search of each point in the prediction reference point set and stored in the prediction reference cache.

[0530] In some embodiments, if the number of reference points included in the predicted reference set corresponding to the current point is equal to or less than the maximum number of reference points M that can be cached in the predicted reference cache indicated by the first parameter, the step of selecting M reference points from the predicted reference point set is skipped, and all reference points in the predicted reference set are cached in the predicted reference cache.

[0531] According to the above steps, the encoder determines M reference points based on the first parameter and stores the M reference points in the prediction reference buffer, and then performs the following step S203.

[0532] S203: Determine the attribute prediction value of the current point based on the reference points included in the prediction reference cache.

[0533] Based on the first parameter, the encoder selects M reference points from the points whose attributes have been encoded, and stores these M reference points in the prediction reference cache. Then, based on the reference points included in the prediction reference cache, the encoder performs attribute prediction on the current point to obtain the attribute prediction value of the current point.

[0534] The embodiment of the present application does not limit the specific manner in which the encoder determines the attribute prediction value of the current point based on the reference points included in the prediction reference cache.

[0535] As can be seen from the above, in some embodiments, to reduce memory usage of the prediction reference cache, the present embodiments reduce the number of reference points included in the prediction reference cache, namely, a fixed number of M reference points are stored in the prediction reference cache at a time. Since the number of reference points included in the prediction reference cache is relatively small, the encoder can directly use all or part of the reference points included in the prediction reference cache as neighboring points of the current point to predict the attribute information of the current point.

[0536] In some embodiments, the encoder performs attribute prediction on the current point through the following steps S203-A and S203-B:

[0537] S203-A: Search for at least one neighboring point of the current point among the reference points included in the prediction reference cache.

[0538] S203-B. Determine the attribute prediction value of the current point based on the attribute information of at least one neighboring point.

[0539] In this embodiment, when the encoding end predicts the attributes of the current point, it searches for at least one neighboring point of the current point from the reference points included in the prediction reference cache, and then predicts the attribute information of the current point based on the attribute information of the at least one neighboring point (i.e., the attribute reconstruction value) to obtain the attribute prediction value of the current point.

[0540] In the embodiment of the present application, methods for searching for at least one neighboring point of a current point among the reference points included in the prediction reference cache include but are not limited to the following:

[0541] Method 1: In the intra-frame inter-layer nearest neighbor search, the reference points included in the prediction reference cache include points in the LOD layer that was encoded before the current LOD layer. Based on this, the encoder first uses the coordinates of the current point to obtain the corresponding spatial block as the current block, and then performs a nearest neighbor search in the LOD layer that was encoded before the current LOD layer. For example, it searches for reference points included in the spatial blocks that are coplanar, colinear, and co-point with the current block as at least one neighbor point of the current point.

[0542] Method 2: The above S203-A includes the following steps:

[0543] S203-A1. Determine a first reference point corresponding to the current point in the predicted reference point set;

[0544] S203-A2: Based on the first reference point, search for at least one neighboring point of the current point among the reference points included in the prediction reference cache.

[0545] In method 2, the encoding end first determines a reference point among the reference points included in the prediction reference point set as the first reference point corresponding to the current point, and then, based on the first reference point, searches for at least one neighboring point of the current point among the reference points included in the prediction reference cache.

[0546] The embodiment of the present application does not limit the specific manner in which the encoder determines the first reference point corresponding to the current point in the prediction reference point set.

[0547] In one example, any reference point in the predicted reference point set is determined as the first reference point corresponding to the current point.

[0548] In one example, the encoder and decoder use a reference point in the prediction reference point set as the first reference point corresponding to the current point by default. In one example, the reference points in the prediction reference point set are sorted based on an index, such that the first point, the second point, or the nth point in the prediction reference point set can be used as the first reference point corresponding to the current point, where n is a positive integer less than or equal to M.

[0549] In one example, the encoder determines the first reference point in the predicted reference point set whose index is greater than or equal to the current point's index as the first reference point. For example, if the current point's index is i, the encoder searches the predicted reference point set and finds the first reference point (j) whose index is greater than or equal to the current point's index as the first reference point for the current point.

[0550] The embodiment of the present application does not limit the specific form of the index of the current point and the reference point.

[0551] For example, if the embodiment of the present application sorts the point cloud based on the Morton code order, the index of the above point can be the Morton code index of the point.

[0552] For another example, if the embodiment of the present application sorts the point cloud based on the Hilbert order, the index of the above point may be the Hilbert index of the point.

[0553] After the encoder determines the first reference point corresponding to the current point based on the above steps, it executes the above step S203-A2 to search for at least one neighboring point of the current point among the reference points included in the prediction reference cache based on the first reference point.

[0554] For example, as shown in FIG10 , assuming that the current point is the i-th point in the current point frame, or the index of the current point is i, the index of the first reference point is j, and assuming that the indexes of the M reference points included in the prediction reference cache are: P j-M / 2 ,……,P j-3 、P j-2 、P j-1 、P j 、P j+1 、P j+2 ,……,P j+M / 2 The encoder finds at least one neighboring point of the current point from these M reference points. For example, taking the first reference point as P j Center, search within the preset search range to obtain at least one neighboring point of the current point.

[0555] The embodiment of the present application does not limit the specific manner in which the encoder searches for at least one neighboring point of the current point among the reference points included in the prediction reference cache based on the first reference point.

[0556] In a possible implementation, the encoder searches for at least one reference point closest to the current point near the first reference point in the prediction reference cache as at least one neighboring point of the current point.

[0557] In a possible implementation, the above S203-A2 includes the following steps S203-A21 to S203-A23:

[0558] S203-A21, based on the first reference point, determine whether to update the prediction reference cache;

[0559] S203-A22: If it is determined to update the prediction reference cache, then based on the remaining reference points in the prediction reference point set, update at least one reference point included in the prediction reference cache to obtain an updated prediction reference cache;

[0560] S203-A23: Search for at least one neighboring point of the current point among the reference points included in the updated prediction reference cache.

[0561] In this implementation, after determining the first reference point, the encoder first determines whether to update the prediction reference cache based on the first reference point. Specifically, the encoder determines whether, based on the first reference point, it can accurately determine at least one neighbor of the current point from the reference points currently cached in the prediction reference cache. If it is determined that at least one neighbor of the current point cannot be accurately determined from the reference points currently included in the prediction reference cache, the encoder determines to update the current prediction reference cache.

[0562] If the encoder determines that the prediction reference buffer does not need to be updated, it searches for at least one neighboring point of the current point from the M reference points included in the current prediction reference buffer.

[0563] If the encoding end determines to update the prediction reference cache, it updates at least one reference point included in the prediction reference cache based on the remaining reference points in the prediction reference point set to obtain an updated prediction reference cache, and then searches for at least one neighboring point of the current point among the reference points included in the updated prediction reference cache.

[0564] The following describes a specific method for determining whether to update the prediction reference cache based on the first reference point in the above S203 - A21 .

[0565] The embodiment of the present application does not limit the specific manner in which the encoder determines whether to update the prediction reference cache based on the first reference point.

[0566] In some embodiments, the above S203 - A21 includes: if the first reference point is the last reference point of the current prediction reference cache or one of the last reference points, determining to update the current prediction reference cache.

[0567] In some embodiments, the above S203-A21 includes:

[0568] S203-A211: If the sum of the index of the first reference point and the first value is greater than or equal to the index of the last reference point in the prediction reference cache, determine to update the prediction reference cache, where the first value is an integer.

[0569] In S203-A211, the encoder adds the index of the first reference point and the first value K to obtain a sum value, which is recorded as A. Then, the encoder compares the sum value A with the index B of the last reference point in the current prediction reference buffer to determine whether the sum value A is greater than or equal to the index B of the last reference point in the current prediction reference buffer.

[0570] If the sum value A is less than the index B of the last reference point in the current prediction reference cache, it means that the encoding end can search for at least one neighboring point of the current point among the reference points included in the current prediction reference cache. At this time, it is determined not to update the current prediction reference cache.

[0571] If the sum A is greater than or equal to the index B of the last reference point in the current prediction reference buffer, then the reference points included in the current prediction reference buffer are insufficient to search for at least one neighboring point of the current point, or the reference points included in the current prediction reference buffer do not include any neighboring points of the current point, or the number of neighboring points included in the current prediction reference buffer is insufficient. In this case, it is determined that the current prediction reference buffer needs to be updated.

[0572] The embodiment of the present application does not limit the specific value of the above-mentioned first value K, as long as it is an integer, such as 0, 1, 2, 3, etc.

[0573] The following describes two cases: the first value is 0, and the first value is a preset search range value. It should be noted that the first value being 0 or the preset search range value is only an example, and the values ​​of the first value in the embodiment of the application include but are not limited to these two cases.

[0574] Case 1: If the first value is 0, then the above S203-A211 includes the step S203-A211-a:

[0575] S203-A211-a. If the index of the first reference point is greater than or equal to the index of the last reference point in the prediction reference cache, determine to update the prediction reference cache.

[0576] In case 1, the encoder determines the first reference point corresponding to the current point based on the above steps, and then compares the index of the first reference point with the index of the last reference point among the reference points included in the current prediction reference buffer.

[0577] In some embodiments, if the index of the first reference point is smaller than the index of the last reference point among the reference points included in the current prediction reference cache, it is determined not to update the prediction reference cache, but to directly search for at least one neighboring point of the current point among the reference points included in the current prediction reference cache.

[0578] In some embodiments, if the index of the first reference point is greater than or equal to the index of the last reference point among the reference points included in the current prediction reference cache, then it is determined that the current prediction reference cache needs to be updated. As shown in Figure 11, assuming that the index of the first reference point is j and the index of the last reference point among the reference points included in the current prediction reference cache is also j, the encoder determines that the current prediction reference cache needs to be updated.

[0579] In this case 1, after the encoder determines to update the current prediction reference cache, it executes the above steps S203-A22 to update at least one reference point in the prediction reference cache based on the remaining reference points in the prediction reference point set to obtain an updated prediction reference cache.

[0580] In the embodiment of the present application, the encoding end updates at least one reference point among the M reference points included in the prediction reference cache to obtain the updated prediction reference cache without limiting the specific method.

[0581] In one possible implementation, the encoder directly deletes all reference points from the current prediction reference cache, selects M new reference points from the remaining reference points in the prediction reference point set, and stores these M new reference points in the prediction reference set. Specifically, in this implementation, if the index of the last reference point in the current prediction reference cache is less than or equal to the index of the first reference point, the encoder directly deletes all M reference points from the prediction reference cache and selects M new reference points to store in the prediction reference cache, thus rapidly updating the entire prediction reference cache. This allows the encoder to locate at least one neighboring point of the current point from the fully updated prediction reference cache.

[0582] In an example of this implementation, the encoder selects M reference points with indexes less than or equal to the first reference point index from the remaining reference points in the prediction reference point set, and stores them in the prediction reference point set as new reference points.

[0583] For example, the M points included in the prediction reference point set are sorted from smallest to largest in index as follows: P0, P1, ....., Pj-1, Pj, Pj+1, ..... Assume that the M reference points in the current prediction reference cache are: P0, P1, ....., PM-1, and the first reference point corresponding to the current point is Pj, where j is greater than M-1. In this case, the index j of the first reference point Pj corresponding to the current point is greater than the index M-1 of the last reference point PM-1 in the current prediction reference cache, so it is determined that the current prediction reference cache needs to be updated.

[0584] In this example, the encoder updates the current prediction reference cache by deleting the M reference points P0, P1, ..., and PM-1 contained in the current prediction reference cache. Then, from the remaining reference points in the prediction reference point set, it selects M reference points with indexes less than or equal to the index of the first reference point, namely, M new reference points Pj, Pj+1, ..., and Pj+M-1, and stores them in the prediction reference cache, thus updating the entire prediction reference cache.

[0585] In an example of this implementation, the encoding end and the decoding end use the same sampling method to sample M reference points from the remaining reference points in the prediction reference point set, and store them in the prediction reference point set as new reference points.

[0586] In a possible implementation, the above S203-A22 includes the following steps S203-A22-a1 and S203-A22-a2:

[0587] S203-A22-a1. Based on the index of the first reference point, obtain at least one second reference point from the remaining reference points in the prediction reference set;

[0588] S203-A22-a2: Use at least one second reference point to update at least one reference point in the prediction reference cache to obtain an updated prediction reference cache.

[0589] In this implementation, if the encoding end determines that the index of the first reference point is greater than or equal to the index of the last reference point in the current prediction reference cache, then based on the index of the first reference point, at least one reference point is selected from the remaining reference points of the prediction reference set. For example, at least one reference point whose index is greater than the index of the first reference point is selected from the remaining reference points of the prediction reference set, and recorded as at least one second reference point. The at least one second reference point is used to update at least one reference point in the prediction reference cache to obtain an updated prediction reference cache.

[0590] In this implementation, there is no restriction on the number of second reference points that the encoder selects from the remaining reference points in the prediction reference set based on the index of the first reference point.

[0591] In some embodiments, the encoder selects M second reference points from the remaining reference points in the prediction reference set based on the index of the first reference point. That is, in this embodiment, the encoder selects M second reference points from the remaining reference points in the reference point set based on the index of the first reference point, and then uses these M second reference points to completely replace the M reference points currently included in the prediction reference cache. For example, the encoder directly deletes the M reference points currently included in the prediction reference cache and stores the M selected second reference points in the prediction reference cache. In this way, the encoder searches for at least one neighboring point of the current point from the M second reference points included in the updated prediction reference cache.

[0592] The embodiment of the present application does not limit the specific manner in which the encoder selects M second reference points from the remaining reference points in the prediction reference set based on the index of the first reference point.

[0593] In one example, the encoder selects M reference points whose indexes are greater than or equal to the index of the first reference point from the remaining reference points in the prediction reference set as M second reference points.

[0594] In one example, the index of the point with the smallest index among the M second reference points is greater than or equal to the index of the first reference point.

[0595] In one example, the index of the point with the largest index among the M second reference points is greater than or equal to the sum of the index of the first reference point and M.

[0596] In one example, if the encoder determines that the index j of the first reference point is greater than or equal to the index of the last reference point in the prediction reference cache, the reference point with index [j, j+M] is selected from the prediction reference set as M second reference points.

[0597] In this embodiment, the encoding end selects M second reference points from the remaining reference points in the prediction reference set based on the index of the first reference point, and then performs the above-mentioned step S203-A22-a2, that is, deleting the M reference points in the prediction reference cache, and adding the above-mentioned determined M second reference points to the prediction reference cache, to obtain an updated prediction reference cache as shown in Figure 12.

[0598] The above describes the process in which the encoder updates the prediction reference buffer when the first value is 0 in case 1.

[0599] Case 2: If the first value is a preset search range value, then the above S203-A211 includes steps S203-A211-b1 and S203-A211-b2:

[0600] S203-A211-b1. Add the index of the first reference point to the preset search range value to obtain a first sum value;

[0601] S203-A211-b2: If the first sum is greater than or equal to the index of the last reference point in the prediction reference cache, determine to update the prediction reference cache.

[0602] In this scenario 2, after determining the first reference point corresponding to the current point based on the above steps, the encoder adds the index j of the first reference point to the preset search range value searchRange to obtain a first sum value j + searchRange. The encoder then compares the first sum value j + searchRange with the index of the last reference point in the current prediction reference cache to determine whether to update the current prediction reference cache.

[0603] In some embodiments, if the first sum value j+searchRange is less than the index of the last reference point among the reference points included in the current prediction reference cache, it is determined not to update the prediction reference cache, but to directly search for at least one neighboring point of the current point among the reference points included in the current prediction reference cache.

[0604] In some embodiments, if the first sum value j + searchRange is greater than or equal to the index of the last reference point among the reference points included in the current prediction reference cache, then it is determined that the current prediction reference cache needs to be updated. Assuming that the index of the first reference point is j, the preset search range value is searchRange, and the first sum value j + searchRange, if the index of the last reference point among the reference points included in the current prediction reference cache is also j + searchRange, then the encoder determines that the current prediction reference cache needs to be updated.

[0605] In this case 1, after the encoder determines to update the current prediction reference cache, it executes the above steps S203-A22 to update at least one reference point in the prediction reference cache based on the remaining reference points in the prediction reference point set to obtain an updated prediction reference cache.

[0606] In the embodiment of the present application, the encoding end updates at least one reference point among the M reference points included in the prediction reference cache to obtain the updated prediction reference cache without limiting the specific method.

[0607] In one possible implementation, the encoder directly deletes all reference points from the current prediction reference cache, selects M new reference points from the remaining reference points in the prediction reference point set, and stores these M new reference points in the prediction reference set. Specifically, in this implementation, if the index of the last reference point in the current prediction reference cache is less than or equal to the first sum, the encoder directly deletes all M reference points from the prediction reference cache and selects M new reference points to store in the prediction reference cache, thus rapidly updating the entire prediction reference cache. This allows the encoder to locate at least one neighboring point of the current point from the entire updated prediction reference cache.

[0608] In an example of this implementation, the encoder selects M reference points with indexes less than or equal to the first reference point index from the remaining reference points in the prediction reference point set, and stores them in the prediction reference point set as new reference points.

[0609] For example, the M points included in the prediction reference point set are sorted from smallest to largest index as follows: P0, P1, ....., Pj-1, Pj, Pj+1, ..... Assume that the M reference points in the current prediction reference cache are: P0, P1, ....., PM-1, the first reference point corresponding to the current point is Pj, and the first sum j+searchRange is greater than M-1. At this time, the first sum j+searchRange of the index j of the first reference point Pj corresponding to the current point and the preset search range value searchRange is greater than the index M-1 of the last reference point PM-1 in the current prediction reference cache, so it is determined that the current prediction reference cache needs to be updated.

[0610] In this example, the encoder updates the current prediction reference cache by deleting the M reference points P0, P1, ..., and PM-1 contained in the current prediction reference cache. Then, from the remaining reference points in the prediction reference point set, it selects M reference points with indexes less than or equal to the index of the first reference point, namely, M new reference points Pj, Pj+1, ..., and Pj+M-1, and stores them in the prediction reference cache, thus updating the entire prediction reference cache.

[0611] In an example of this implementation, the encoding end and the decoding end use the same sampling method to sample M reference points from the remaining reference points in the prediction reference point set, and store them in the prediction reference point set as new reference points.

[0612] In a possible implementation, the above S203-A22 includes the following steps S203-A22-b1 and S203-A22-b2:

[0613] S203-A22-b1. Based on the index of the first reference point, obtain at least one third reference point from the remaining reference points in the prediction reference set;

[0614] S203-A22-b2. Use at least one third reference point to update at least one reference point included in the prediction reference cache to obtain an updated prediction reference cache.

[0615] In this implementation, if the encoding end determines that the first sum is greater than or equal to the index of the last reference point in the current prediction reference cache, then based on the index of the first reference point, at least one reference point is selected from the remaining reference points of the prediction reference set. For example, at least one reference point whose index is greater than the index of the first reference point is selected from the remaining reference points of the prediction reference set, and recorded as at least one third reference point. The at least one third reference point is used to update at least one reference point in the prediction reference cache to obtain an updated prediction reference cache.

[0616] In this implementation, there is no restriction on the number of third reference points selected by the encoder from the remaining reference points in the prediction reference set based on the index of the first reference point.

[0617] In some embodiments, the encoder selects M third reference points from the remaining reference points in the prediction reference set based on the index of the first reference point. That is, in this embodiment, the encoder selects M third reference points from the remaining reference points in the reference point set based on the index of the first reference point, and then uses these M third reference points to completely replace the M reference points currently included in the prediction reference cache. For example, the encoder directly deletes the M reference points currently included in the prediction reference cache and stores the M selected third reference points in the prediction reference cache. In this way, the encoder searches for at least one neighboring point of the current point from the M third reference points included in the updated prediction reference cache.

[0618] The embodiment of the present application does not limit the specific manner in which the encoder selects at least one third reference point from the remaining reference points in the prediction reference set based on the index of the first reference point.

[0619] In one example, the encoder selects at least one reference point with an index greater than or equal to the index of the first reference point from the remaining reference points in the prediction reference set as at least one third reference point.

[0620] In one example, the encoder selects P third reference points from the remaining reference points in the prediction reference set based on the index of the first reference point, where P is equal to the difference between the index of the first reference point and the index of the first reference point in the prediction reference cache.

[0621] In one example, the index of the point with the smallest index among the P third reference points is greater than or equal to the index of the last reference point in the prediction reference buffer plus 1. For example, if the index of the last reference point in the prediction reference buffer is 99, then the index of the point with the smallest index among the P third reference points is 100 or greater.

[0622] In one example, the index of the point with the largest index among the P third reference points is greater than or equal to the sum of the index of the first reference point and M minus 1. For example, if the index of the first reference point is 67 and M=100, then the index of the point with the largest index among the P third reference points is 166 or greater.

[0623] For example, assuming the prediction reference cache contains 100 points, indexed from 0 to 99, and the first reference point has an index of 67 and a preset search range of 40, the sum of the first reference point's index and the preset search range is 107. Because the first sum of 107 is greater than the index of the last reference point in the prediction reference cache, the current prediction reference cache is updated. Next, based on the index j of the first reference point, the encoder selects 67 third reference points with indices from 100 to 166 from the remaining reference points in the prediction reference set.

[0624] In this embodiment, the encoding end selects P third reference points from the remaining reference points in the prediction reference set based on the index of the first reference point, and then performs the above-mentioned S203-A22-b2 step, for example, deleting the P points before the first reference point in the prediction reference cache, and adding the P third reference points to the prediction reference cache to obtain an updated prediction reference cache.

[0625] As can be seen from the above, in one example of Case 2, if the first value is a preset search range value, the encoder adds the index of the first reference point to the preset search range value to obtain a first sum. If the first sum is greater than or equal to the index of the last reference point in the prediction reference cache, the encoder selects P third reference points from the remaining reference points in the prediction reference set based on the index of the first reference point. The encoder then deletes the P points preceding the first reference point in the prediction cache and adds the P third reference points determined above to the prediction reference cache, thereby updating the prediction reference cache.

[0626] In this example, the encoder uses the P third reference points to update the prediction reference buffer in the following ways, but is not limited to:

[0627] In Example 1, the encoder deletes P points before the first reference point in the prediction reference cache and shifts MP points after the first reference point forward. Then, the encoder stores the P third reference points determined above after the first reference point to obtain an updated prediction reference cache. The updated prediction reference cache now includes M reference points, which include the MP old reference points and the P third reference points determined above.

[0628] In Example 2, the encoder deletes the P points before the first reference point in the prediction reference cache. The encoder does not move the MP points after the first reference point in the prediction reference cache, but instead directly stores the P third reference points determined above in positions before the first reference point, thereby obtaining an updated prediction reference cache. In this case, the updated prediction reference cache includes M reference points, including the MP old reference points and the P third reference points determined above. The positions of the MP old reference points in the prediction reference cache remain unchanged.

[0629] In some embodiments of this scenario 2, upon determining that the first sum is greater than or equal to the index of the last reference point in the prediction reference cache, the encoder deletes all reference points in the current prediction reference cache and selects M new reference points from the prediction reference set and stores them in the prediction reference cache. In one example, the minimum index of these M new reference points is less than or equal to the index of the first parameter. In another example, the minimum index of these M new reference points is greater than or equal to the index of the last point in the current prediction reference cache.

[0630] The above description uses the first value being 0 or the preset search range value as an example to illustrate the updating of the prediction reference cache by the encoder. It should be noted that the embodiment of the present application does not limit the specific process of updating the prediction reference cache by the encoder.

[0631] In some embodiments, in order to increase the update speed, when the encoding end determines that the prediction reference cache needs to be updated, the encoding end can reselect M reference points from the reference points included in the prediction reference set based on the index of the first parameter, and update all points in the prediction reference cache.

[0632] In some embodiments, when the encoder determines that the prediction reference cache needs to be updated, the encoder may update the points in the prediction reference cache one by one based on the index of the first parameter.

[0633] After updating the prediction reference cache based on the above steps, the encoder performs the above steps S203 - A23 to search for at least one neighboring point of the current point among the reference points included in the updated prediction reference cache.

[0634] In this embodiment of the present application, the encoder searches for at least one neighboring point of the current point from the prediction reference cache in the same manner as searching for at least one neighboring point of the current point from the updated prediction reference cache. The following description uses the encoder's search for at least one neighboring point of the current point from the prediction reference cache as an example.

[0635] The embodiment of the present application does not limit the specific method in which the encoder searches for at least one neighboring point of the current point from the prediction reference buffer.

[0636] In one example, if in the inter-layer nearest neighbor search, the above-mentioned prediction reference cache includes the inter-layer encoded point of the current point, the encoding end obtains the corresponding spatial block from the coordinates of the current point, and then performs a nearest neighbor search in the previously encoded LOD layer to search for spatial blocks that are coplanar, colinear, and co-point with the current block to obtain at least one neighboring point of the current point.

[0637] In one example, if, in the nearest neighbor search within a layer, the prediction reference cache includes coded points within the layer, the encoder searches for at least one neighboring point of the current point from among the coded points within the layer.

[0638] In one example, if, in the inter-frame nearest neighbor search, the prediction reference cache includes encoded points in the reference frame of the current point, the encoder can find at least one neighboring point of the current point from these inter-frame encoded points.

[0639] It should be noted that the specific manner in which the encoder searches for at least one neighboring point of the current point from the prediction reference buffer can be referred to the description of the above embodiment and will not be repeated here.

[0640] When the encoder determines at least one neighboring point of the current point based on the above steps, it executes the above step S203-B to determine the attribute prediction value of the current point based on the attribute information of the at least one neighboring point.

[0641] The embodiment of the present application does not limit the specific manner in which the encoder determines the attribute prediction value of the current point based on the attribute information of at least one neighboring point.

[0642] In one example, if the at least one neighboring point includes a neighboring point, the encoder determines the attribute information (ie, the attribute reconstruction value) of the neighboring point as the attribute prediction value of the current point.

[0643] For another example, if the at least one neighboring point includes multiple neighboring points, the average value of the attribute information of the multiple neighboring points is determined as the attribute prediction value of the current point.

[0644] For another example, if the at least one neighboring point includes multiple neighboring points, a weighted average value of the attribute information of the multiple neighboring points is determined as the attribute prediction value of the current point.

[0645] Exemplarily, the encoder determines the attribute prediction value of the current point based on the following formula (24).

[0646] In the point cloud encoding method provided in an embodiment of the present application, during attribute encoding, the encoding end first determines a first parameter, which is used to indicate the maximum number M of reference points that can be cached in the prediction reference cache. Then, based on the first parameter, M reference points are determined and stored in the prediction reference cache. Furthermore, based on the reference points included in the prediction reference cache, the attribute prediction value of the current point is determined. In other words, the embodiment of the present application uses the first parameter to indicate the size of the prediction reference cache, so that the size of the prediction reference cache is fixed and does not change dynamically with changes in the number of reference points, thereby saving memory resources of the encoding device and improving the encoding performance of point cloud attributes.

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

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

[0649] The above describes in detail the method embodiment of the present application in conjunction with Figures 9 to 13 , and the following describes in detail the device embodiment of the present application in conjunction with Figures 14 to 15 .

[0650] Figure 14 is a schematic block diagram of the point cloud decoding device provided in an embodiment of the present application.

[0651] As shown in FIG14 , the point cloud decoding device 10 may include:

[0652] A parameter determination unit 11 is configured to determine a first parameter, where the first parameter is used to indicate a maximum number M of reference points that can be cached in a prediction reference cache, where M is a positive integer;

[0653] a cache unit 12, configured to determine M reference points based on the first parameter, and store the M reference points in the prediction reference cache;

[0654] The prediction unit 13 is configured to determine a property prediction value of the current point based on the reference points included in the prediction reference buffer.

[0655] In some embodiments, the cache unit 12 is specifically configured to determine a predicted reference point set corresponding to the current point, the predicted reference point set including multiple reference points; and select M reference points from the predicted reference point set based on the first parameter.

[0656] In some embodiments, the prediction unit 13 is specifically configured to search for at least one neighboring point of the current point among the reference points included in the prediction reference cache; and determine an attribute prediction value of the current point based on attribute information of the at least one neighboring point.

[0657] In some embodiments, the prediction unit 13 is specifically used to determine a first reference point corresponding to the current point in the prediction reference point set; based on the first reference point, search for at least one neighboring point of the current point in the reference points included in the prediction reference cache.

[0658] In some embodiments, the prediction unit 13 is specifically configured to determine, in the set of predicted reference points, a first reference point whose index is greater than or equal to the index of the current point as the first reference point.

[0659] Optionally, the index is a Morton code index.

[0660] In some embodiments, the prediction unit 13 is specifically used to determine whether to update the prediction reference cache based on the first reference point; if it is determined to update the prediction reference cache, then based on the remaining reference points in the prediction reference point set, at least one reference point in the prediction reference cache is updated to obtain an updated prediction reference cache; among the reference points included in the updated prediction reference cache, at least one neighboring point of the current point is searched.

[0661] In some embodiments, the prediction unit 13 is specifically configured to determine to update the prediction reference cache if the sum of the index of the first reference point and a first value is greater than or equal to the index of the last reference point in the prediction reference cache, and the first value is an integer.

[0662] In some embodiments, if the first value is 0, the prediction unit 13 is specifically configured to determine to update the prediction reference cache if the index of the first reference point is greater than or equal to the index of the last reference point in the prediction reference cache.

[0663] In some embodiments, the prediction unit 13 is specifically used to obtain at least one second reference point from the remaining reference points of the prediction reference set based on the index of the first reference point; and use the at least one second reference point to update at least one reference point in the prediction reference cache to obtain an updated prediction reference cache.

[0664] In some embodiments, the prediction unit 13 is specifically configured to select M second reference points from the remaining reference points in the prediction reference set based on the index of the first reference point.

[0665] In some embodiments, the index of the point with the smallest index among the M second reference points is greater than or equal to the index of the first reference point.

[0666] In some embodiments, the index of the point with the largest index among the M second reference points is greater than or equal to the sum of the index of the first reference point and the M.

[0667] In some embodiments, the prediction unit 13 is specifically configured to delete the M reference points in the prediction reference cache, and add the M second reference points to the prediction reference cache to obtain the updated prediction reference cache.

[0668] In some embodiments, the prediction unit 13 is specifically configured to determine not to update the prediction reference cache if the index of the first reference point is smaller than the index of the last reference point in the prediction reference cache.

[0669] In some embodiments, the first value is a preset search range value, and the prediction unit 13 is specifically used to add the index of the first reference point to the preset search range value to obtain a first sum value; if the first sum value is greater than or equal to the index of the last reference point in the predicted reference cache, it is determined to update the predicted reference cache.

[0670] In some embodiments, the prediction unit 13 is specifically used to obtain at least one third reference point from the remaining reference points of the prediction reference set based on the index of the first reference point; and use the at least one third reference point to update at least one reference point included in the prediction reference cache to obtain an updated prediction reference cache.

[0671] In some embodiments, the prediction unit 13 is specifically used to select P third reference points from the remaining reference points of the prediction reference set based on the index of the first reference point, where P is equal to the difference between the index of the first reference point and the index of the first reference point in the prediction reference cache.

[0672] In some embodiments, the index of the point with the smallest index among the P third reference points is greater than or equal to the index of the last reference point in the prediction reference buffer plus 1.

[0673] In some embodiments, the index of the point with the largest index among the P third reference points is greater than or equal to the sum of the index of the first reference point and M minus 1.

[0674] In some embodiments, the prediction unit 13 is specifically configured to delete P points before the first reference point in the prediction reference cache, and add the P third reference points to the prediction reference cache to obtain the updated prediction reference cache.

[0675] In some embodiments, the prediction unit 13 is specifically configured to determine not to update the prediction reference cache if the first sum value is less than the index of the last reference point in the prediction reference cache.

[0676] In some embodiments, the parameter determination unit 11 is specifically configured to decode the code stream to obtain the first parameter.

[0677] In some embodiments, the cache unit 12 is further configured to skip the step of selecting M reference points from the predicted reference point set if the number of points included in the predicted reference point set is less than or equal to the first parameter.

[0678] 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 FIG14 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 each unit 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.

[0679] Figure 15 is a schematic block diagram of the point cloud encoding device provided in an embodiment of the present application.

[0680] As shown in FIG15 , the point cloud encoding device 20 includes:

[0681] A parameter determination unit 21 is configured to determine a first parameter, where the first parameter is used to indicate a maximum number M of reference points that can be cached in a prediction reference cache, where M is a positive integer;

[0682] a cache unit 22, configured to determine M reference points based on the first parameter, and store the M reference points in the prediction reference cache;

[0683] The prediction unit 23 is configured to determine a property prediction value of the current point based on the reference points included in the prediction reference buffer.

[0684] In some embodiments, the cache unit 22 is specifically configured to determine a predicted reference point set corresponding to the current point, where the predicted reference point set includes multiple reference points; and select M reference points from the predicted reference point set based on the first parameter.

[0685] In some embodiments, the prediction unit 23 is specifically configured to search for at least one neighboring point of the current point among the reference points included in the prediction reference cache; and determine an attribute prediction value of the current point based on attribute information of the at least one neighboring point.

[0686] In some embodiments, the prediction unit 23 is specifically used to determine a first reference point corresponding to the current point in the predicted reference point set; based on the first reference point, search for at least one neighboring point of the current point in the reference points included in the predicted reference cache.

[0687] In some embodiments, the prediction unit 23 is specifically configured to determine, in the set of predicted reference points, a first reference point whose index is greater than or equal to the index of the current point as the first reference point.

[0688] Optionally, the index is a Morton code index.

[0689] In some embodiments, the prediction unit 23 is specifically used to determine whether to update the prediction reference cache based on the first reference point; if it is determined to update the prediction reference cache, then based on the remaining reference points in the prediction reference point set, at least one reference point in the prediction reference cache is updated to obtain an updated prediction reference cache; among the reference points included in the updated prediction reference cache, at least one neighboring point of the current point is searched.

[0690] In some embodiments, the prediction unit 23 is specifically configured to determine to update the prediction reference cache if the sum of the index of the first reference point and the first value is greater than or equal to the index of the last reference point in the prediction reference cache, and the first value is an integer.

[0691] In some embodiments, if the first value is 0, the prediction unit 23 is specifically configured to determine to update the prediction reference cache if the index of the first reference point is greater than or equal to the index of the last reference point in the prediction reference cache.

[0692] In some embodiments, the prediction unit 23 is specifically used to obtain at least one second reference point from the remaining reference points of the prediction reference set based on the index of the first reference point; and use the at least one second reference point to update at least one reference point in the prediction reference cache to obtain an updated prediction reference cache.

[0693] In some embodiments, the prediction unit 23 is specifically configured to select M second reference points from the remaining reference points in the prediction reference set based on the index of the first reference point.

[0694] In some embodiments, the index of the point with the smallest index among the M second reference points is greater than or equal to the index of the first reference point.

[0695] In some embodiments, the index of the point with the largest index among the M second reference points is greater than or equal to the sum of the index of the first reference point and the M.

[0696] In some embodiments, the prediction unit 23 is specifically configured to delete the M reference points in the prediction reference cache, and add the M second reference points to the prediction reference cache to obtain the updated prediction reference cache.

[0697] In some embodiments, the prediction unit 23 is specifically configured to determine not to update the prediction reference cache if the index of the first reference point is less than the index of the last reference point in the prediction reference cache.

[0698] In some embodiments, the first value is a preset search range value, and the prediction unit 23 is specifically used to add the index of the first reference point to the preset search range value to obtain a first sum value; if the first sum value is greater than or equal to the index of the last reference point in the predicted reference cache, it is determined to update the predicted reference cache.

[0699] In some embodiments, the prediction unit 23 is specifically used to obtain at least one third reference point from the remaining reference points of the prediction reference set based on the index of the first reference point; and use the at least one third reference point to update at least one reference point included in the prediction reference cache to obtain an updated prediction reference cache.

[0700] In some embodiments, the prediction unit 23 is specifically used to select P third reference points from the remaining reference points of the prediction reference set based on the index of the first reference point, where P is equal to the difference between the index of the first reference point and the index of the first reference point in the prediction reference cache.

[0701] In some embodiments, the index of the point with the smallest index among the P third reference points is greater than or equal to the index of the last reference point in the prediction reference buffer plus 1.

[0702] In some embodiments, the index of the point with the largest index among the P third reference points is greater than or equal to the sum of the index of the first reference point and M minus 1.

[0703] In some embodiments, the prediction unit 23 is specifically configured to delete P points before the first reference point in the prediction reference cache, and add the P third reference points to the prediction reference cache to obtain the updated prediction reference cache.

[0704] In some embodiments, the prediction unit 23 is specifically configured to determine not to update the prediction reference cache if the first sum value is less than the index of the last reference point in the prediction reference cache.

[0705] In some embodiments, the parameter determination unit 21 specifically writes the first parameter into the bitstream.

[0706] In some embodiments, the cache unit 22 is further configured to skip the step of selecting M reference points from the prediction reference point set if the number of points included in the prediction reference point set is less than or equal to the first parameter.

[0707] 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 FIG15 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.

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

[0709] FIG16 is a schematic block diagram of an electronic device provided in an embodiment of the present application.

[0710] As shown in FIG16 , 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:

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

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

[0713] In some embodiments of the present application, the processor 32 may include but is not limited to:

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

[0715] In some embodiments of the present application, the memory 33 includes but is not limited to:

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

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

[0718] As shown in FIG16 , the electronic device 30 may further include:

[0719] The transceiver 33 may be connected to the processor 32 or the memory 33 .

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

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

[0722] Figure 17 is a schematic block diagram of the point cloud encoding and decoding system provided in an embodiment of the present application.

[0723] As shown in Figure 17, 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.

[0724] The present application also provides a code stream, which is generated according to the above encoding method.

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

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

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

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

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

[0730] 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 first parameter, where the first parameter is used to indicate a maximum number M of reference points that can be cached in the prediction reference cache, where M is a positive integer; Based on the first parameter, determine M reference points, and store the M reference points in the prediction reference cache; Based on the reference points included in the prediction reference buffer, a property prediction value of the current point is determined.

2. The method according to claim 1, characterized in that The determining M reference points based on the first parameter includes: Determine a predicted reference point set corresponding to the current point, wherein the predicted reference point set includes a plurality of reference points; Based on the first parameter, M reference points are selected from the prediction reference point set.

3. The method according to claim 2, characterized in that The determining the attribute prediction value of the current point based on the reference points included in the prediction reference cache includes: Searching for at least one neighboring point of the current point among the reference points included in the prediction reference cache; Based on the attribute information of the at least one neighboring point, a predicted attribute value of the current point is determined.

4. The method according to claim 3, characterized in that The searching at least one neighboring point of the current point among the reference points included in the prediction reference cache comprises: Determine a first reference point corresponding to the current point in the predicted reference point set; Based on the first reference point, at least one neighboring point of the current point is searched among the reference points included in the prediction reference buffer.

5. The method according to claim 4, characterized in that The step of determining a first reference point corresponding to the current point in the predicted reference point set includes: A first reference point in the predicted reference point set whose index is greater than or equal to the current point index is determined as the first reference point.

6. The method according to claim 5, characterized in that The index is a Morton code index.

7. The method according to claim 4, characterized in that The searching, based on the first reference point, for at least one neighboring point of the current point in the reference points included in the prediction reference cache comprises: Based on the first reference point, determining whether to update the prediction reference cache; If it is determined to update the prediction reference cache, then based on the remaining reference points in the prediction reference point set, at least one reference point in the prediction reference cache is updated to obtain an updated prediction reference cache; Among the reference points included in the updated prediction reference cache, at least one neighboring point of the current point is searched.

8. The method according to claim 7, characterized in that The determining, based on the first reference point, whether to update the prediction reference cache comprises: If the sum of the index of the first reference point and a first value is greater than or equal to the index of the last reference point in the prediction reference cache, it is determined to update the prediction reference cache, and the first value is an integer.

9. The method according to claim 8, characterized in that If the first value is 0, if the sum of the index of the first reference point and the first value is greater than or equal to the index of the last reference point in the prediction reference cache, determining to update the prediction reference cache includes: If the index of the first reference point is greater than or equal to the index of the last reference point in the prediction reference cache, it is determined to update the prediction reference cache.

10. The method according to claim 9, characterized in that The updating of at least one reference point in the prediction reference cache based on the remaining reference points in the prediction reference point set to obtain an updated prediction reference cache includes: Based on the index of the first reference point, acquiring at least one second reference point from the remaining reference points in the prediction reference set; At least one reference point in the prediction reference cache is updated using the at least one second reference point to obtain an updated prediction reference cache.

11. The method according to claim 10, characterized in that The acquiring, based on the index of the first reference point, at least one second reference point from the remaining reference points of the prediction reference set comprises: Based on the index of the first reference point, M second reference points are selected from the remaining reference points in the prediction reference set.

12. The method according to claim 11, characterized in that The index of the point with the smallest index among the M second reference points is greater than or equal to the index of the first reference point.

13. The method according to claim 11, characterized in that The index of the point with the largest index among the M second reference points is greater than or equal to the sum of the index of the first reference point and the M points.

14. The method according to claim 11, characterized in that The updating of at least one reference point included in the prediction reference cache using the at least one second reference point to obtain an updated prediction reference cache includes: The M reference points in the prediction reference cache are deleted, and the M second reference points are added to the prediction reference cache to obtain the updated prediction reference cache.

15. The method according to claim 7, characterized in that The determining, based on the first reference point, whether to update the prediction reference cache comprises: If the index of the first reference point is smaller than the index of the last reference point in the prediction reference cache, it is determined not to update the prediction reference cache.

16. The method according to claim 8, characterized in that The first value is a preset search range value, and if the sum of the index of the first reference point and the first value is greater than or equal to the index of the last reference point in the prediction reference cache, determining to update the prediction reference cache includes: Adding the index of the first reference point to the preset search range value to obtain a first sum value; If the first sum is greater than or equal to the index of the last reference point in the prediction reference cache, it is determined to update the prediction reference cache.

17. The method according to claim 16, characterized in that The updating of at least one reference point included in the prediction reference cache to obtain an updated prediction reference cache includes: Based on the index of the first reference point, acquiring at least one third reference point from the remaining reference points of the prediction reference set; At least one reference point included in the prediction reference cache is updated using the at least one third reference point to obtain an updated prediction reference cache.

18. The method according to claim 17, characterized in that The acquiring, based on the index of the first reference point, at least one third reference point from the remaining reference points of the prediction reference set comprises: Based on the index of the first reference point, P third reference points are selected from the remaining reference points in the prediction reference set, where P is equal to the difference between the index of the first reference point and the index of the first reference point in the prediction reference cache.

19. The method according to claim 18, characterized in that The index of the point with the smallest index among the P third reference points is greater than or equal to the index of the last reference point in the prediction reference buffer plus 1.

20. The method according to claim 19, characterized in that The index of the point with the largest index among the P third reference points is greater than or equal to the sum of the index of the first reference point and M minus 1.

21. The method according to claim 18, characterized in that The updating of at least one reference point included in the prediction reference cache using the at least one third reference point to obtain an updated prediction reference cache includes: P points before the first reference point in the prediction reference cache are deleted, and the P third reference points are added to the prediction reference cache to obtain the updated prediction reference cache.

22. The method according to claim 16, characterized in that The determining, based on the first reference point and the first parameter, whether to update the prediction reference cache comprises: If the first sum is smaller than the index of the last reference point in the prediction reference cache, it is determined not to update the prediction reference cache.

23. The method according to any one of claims 1 to 22, characterized in that: The determining of the first parameter comprises: Decode the code stream to obtain the first parameter.

24. The method according to any one of claims 1 to 22, characterized in that: The method further comprises: If the number of points included in the prediction reference point set is less than or equal to the first parameter, the step of selecting M reference points from the prediction reference point set is skipped.

25. A point cloud encoding method, characterized in that: include: Determine a first parameter, where the first parameter is used to indicate a maximum number M of reference points that can be cached in the prediction reference cache, where M is a positive integer; Based on the first parameter, determine M reference points, and store the M reference points in the prediction reference cache; Based on the reference points included in the prediction reference buffer, a property prediction value of the current point is determined.

26. The method according to claim 25, characterized in that The determining M reference points based on the first parameter includes: Determine a predicted reference point set corresponding to the current point, wherein the predicted reference point set includes a plurality of reference points; Based on the first parameter, M reference points are selected from the prediction reference point set.

27. The method according to claim 26, characterized in that The determining the attribute prediction value of the current point based on the reference points included in the prediction reference cache includes: Searching for at least one neighboring point of the current point among the reference points included in the prediction reference cache; Based on the attribute information of the at least one neighboring point, a predicted attribute value of the current point is determined.

28. The method according to claim 27, characterized in that The searching at least one neighboring point of the current point among the reference points included in the prediction reference cache comprises: Determine a first reference point corresponding to the current point in the predicted reference point set; Based on the first reference point, at least one neighboring point of the current point is searched among the reference points included in the prediction reference buffer.

29. The method according to claim 28, characterized in that The step of determining a first reference point corresponding to the current point in the predicted reference point set includes: A first reference point in the predicted reference point set whose index is greater than or equal to the current point index is determined as the first reference point.

30. The method according to claim 29, characterized in that The index is a Morton code index.

31. The method according to claim 28, characterized in that The searching, based on the first reference point, for at least one neighboring point of the current point in the reference points included in the prediction reference cache comprises: Based on the first reference point, determining whether to update the prediction reference cache; If it is determined to update the prediction reference cache, then based on the remaining reference points in the prediction reference point set, at least one reference point in the prediction reference cache is updated to obtain an updated prediction reference cache; Among the reference points included in the updated prediction reference cache, at least one neighboring point of the current point is searched.

32. The method according to claim 31, characterized in that The determining, based on the first reference point, whether to update the prediction reference cache comprises: If the sum of the index of the first reference point and a first value is greater than or equal to the index of the last reference point in the prediction reference cache, it is determined to update the prediction reference cache, and the first value is an integer.

33. The method according to claim 32, characterized in that If the first value is 0, if the sum of the index of the first reference point and the first value is greater than or equal to the index of the last reference point in the prediction reference cache, determining to update the prediction reference cache includes: If the index of the first reference point is greater than or equal to the index of the last reference point in the prediction reference cache, it is determined to update the prediction reference cache.

34. The method according to claim 33, characterized in that The updating of at least one reference point in the prediction reference cache based on the remaining reference points in the prediction reference point set to obtain an updated prediction reference cache includes: Based on the index of the first reference point, acquiring at least one second reference point from the remaining reference points in the prediction reference set; At least one reference point in the prediction reference cache is updated using the at least one second reference point to obtain an updated prediction reference cache.

35. The method according to claim 34, characterized in that The acquiring, based on the index of the first reference point, at least one second reference point from the remaining reference points of the prediction reference set comprises: Based on the index of the first reference point, M second reference points are selected from the remaining reference points in the prediction reference set.

36. The method according to claim 35, characterized in that The index of the point with the smallest index among the M second reference points is greater than or equal to the index of the first reference point.

37. The method according to claim 35, characterized in that The index of the point with the largest index among the M second reference points is greater than or equal to the sum of the index of the first reference point and the M points.

38. The method according to claim 35, characterized in that The updating of at least one reference point included in the prediction reference cache using the at least one second reference point to obtain an updated prediction reference cache includes: The M reference points in the prediction reference cache are deleted, and the M second reference points are added to the prediction reference cache to obtain the updated prediction reference cache.

39. The method according to claim 31, characterized in that The determining, based on the first reference point, whether to update the prediction reference cache comprises: If the index of the first reference point is smaller than the index of the last reference point in the prediction reference cache, it is determined not to update the prediction reference cache.

40. The method according to claim 32, characterized in that The first value is a preset search range value, and if the sum of the index of the first reference point and the first value is greater than or equal to the index of the last reference point in the prediction reference cache, determining to update the prediction reference cache includes: Adding the index of the first reference point to the preset search range value to obtain a first sum value; If the first sum is greater than or equal to the index of the last reference point in the prediction reference cache, it is determined to update the prediction reference cache.

41. The method according to claim 40, characterized in that The updating of at least one reference point included in the prediction reference cache to obtain an updated prediction reference cache includes: Based on the index of the first reference point, acquiring at least one third reference point from the remaining reference points of the prediction reference set; At least one reference point included in the prediction reference cache is updated using the at least one third reference point to obtain an updated prediction reference cache.

42. The method according to claim 41, characterized in that The acquiring, based on the index of the first reference point, at least one third reference point from the remaining reference points of the prediction reference set comprises: Based on the index of the first reference point, P third reference points are selected from the remaining reference points in the prediction reference set, where P is equal to the difference between the index of the first reference point and the index of the first reference point in the prediction reference cache.

43. The method according to claim 42, characterized in that The index of the point with the smallest index among the P third reference points is greater than or equal to the index of the last reference point in the prediction reference buffer plus 1.

44. The method according to claim 43, characterized in that The index of the point with the largest index among the P third reference points is greater than or equal to the sum of the index of the first reference point and M minus 1.

45. The method according to claim 42, characterized in that The updating of at least one reference point included in the prediction reference cache using the at least one third reference point to obtain an updated prediction reference cache includes: P points before the first reference point in the prediction reference cache are deleted, and the P third reference points are added to the prediction reference cache to obtain the updated prediction reference cache.

46. ​​The method according to claim 40, characterized in that The determining, based on the first reference point and the first parameter, whether to update the prediction reference cache comprises: If the first sum is smaller than the index of the last reference point in the prediction reference cache, it is determined not to update the prediction reference cache.

47. The method according to any one of claims 25 to 46, characterized in that The method further comprises: The first parameter is written into the bitstream.

48. The method according to any one of claims 25 to 46, characterized in that The method further comprises: If the number of points included in the prediction reference point set is less than or equal to the first parameter, the step of selecting M reference points from the prediction reference point set is skipped.

49. A point cloud decoding device, characterized in that: include: a parameter determination unit, configured to determine a first parameter, wherein the first parameter is used to indicate a maximum number M of reference points that can be cached in the prediction reference cache, where M is a positive integer; a cache unit, configured to determine M reference points based on the first parameter, and store the M reference points in the prediction reference cache; The prediction unit is used to determine the attribute prediction value of the current point based on the reference points included in the prediction reference cache.

50. A point cloud encoding device, characterized in that: include: a parameter determination unit, configured to determine a first parameter, wherein the first parameter is used to indicate a maximum number M of reference points that can be cached in the prediction reference cache, where M is a positive integer; a cache unit, configured to determine M reference points based on the first parameter, and store the M reference points in the prediction reference cache; The prediction unit is used to determine the attribute prediction value of the current point based on the reference points included in the prediction reference cache.

51. An electronic device, characterized in that: include: Processor and memory; The memory is used to store computer programs; The processor is configured to call and run the computer program stored in the memory to execute the method according to any one of claims 1 to 24 or 25 to 48.

52. A computer-readable storage medium, characterized in that: Used to store a computer program, the computer program causing a computer to execute the method according to any one of claims 1 to 24 or 25 to 48.

Citation Information

Patent Citations

  • Point cloud attribute encoding method, device and system

    CN113179410A

  • Image component prediction method, encoder, decoder, and storage medium

    CN114041288A

  • Point cloud coding method, point cloud decoding method, point cloud coding device, point cloud decoding device and storage medium

    CN114793484A

  • Data processing method and device for immersion media, equipment and storage medium

    CN115396645A

  • Point cloud attribute prediction method and apparatus, and codec

    WO2022257145A1