Point cloud coding method and device, equipment and storage medium

CN120958831BActive Publication Date: 2026-10-27GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202380096553.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2023-04-11
Publication Date
2026-10-27
Estimated Expiration
2043-04-11

AI Technical Summary

Technical Problem

但是,属性编解码的性能较差,还有进一步的提升空间

Benefits of technology

[0023]基于以上技术方案,在属性编解码时,解码端首先确定第一参数,该第一参数用于指示预测参考缓存可缓存的最大参考点数目M,接着,基于该第一参数,确定M个参考点,且将这M个参考点存入预测参考缓存中,进而基于预测参考缓存所包括的参考点,确定当前点的属性预测值。即本申请实施例通过第一参数来指示预测参考缓存大小,使得预测参考缓存的大小固定,不随参考点数目的变化而动态变化,进而节约编解码设备的内存资源,提升点云属性的编解性能。

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120958831B_ABST
    Figure CN120958831B_ABST
Patent Text Reader

Abstract

The application provides a point cloud coding method, device and equipment and a storage medium. The method comprises the following steps: in attribute coding, first, a first parameter is determined, the first parameter is used for indicating a maximum reference point number M that can be cached in a prediction reference cache; then, based on the first parameter, M reference points are determined, and the M reference points are stored in the prediction reference cache; and then, based on the reference points included in the prediction reference cache, an attribute prediction value of a current point is determined. That is, in the embodiment of the application, the first parameter is used to indicate the size of the prediction reference cache, so that the size of the prediction reference cache is fixed and does not dynamically change with the number of reference points, thereby saving the memory resources of a coding device and improving the coding performance of point cloud attributes.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of point cloud technology, and in particular to a point cloud encoding / decoding method, apparatus, device, and storage medium. Background Technology

[0002] Point cloud data is generated by collecting data from the surface of an object using acquisition devices. This data consists of hundreds of thousands or even more points. During video production, the point cloud data is transmitted between point cloud encoding and decoding devices as point cloud media files. However, the sheer number of points presents a challenge for transmission; therefore, the point cloud encoding device needs to compress the point cloud data before transmission.

[0003] Point cloud compression, also known as point cloud encoding, involves first determining at least one nearest neighbor from the reference points in the prediction reference cache, and then determining the predicted attribute value of the current point based on the attribute information of that nearest neighbor. However, attribute encoding and decoding performance is relatively poor and there is room for further improvement. Summary of the Invention

[0004] This application provides a point cloud encoding / decoding method, apparatus, device, and storage medium, which fixes 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.

[0005] In a first aspect, embodiments of this application provide a point cloud decoding method, including:

[0006] Determine a first parameter, which indicates the maximum number of reference points M that the prediction reference cache can cache, where M is a positive integer;

[0007] Based on the first parameter, M reference points are determined and stored in the prediction reference cache;

[0008] The attribute prediction value of the current point is determined based on the reference points included in the prediction reference cache.

[0009] Secondly, this application provides a point cloud encoding method, including:

[0010] Determine a first parameter, which indicates the maximum number of reference points M that the prediction reference cache can cache, where M is a positive integer;

[0011] Based on the first parameter, M reference points are determined and stored in the prediction reference cache;

[0012] The attribute prediction value of the current point is determined based on the reference points included in the prediction reference cache.

[0013] Thirdly, this application provides a point cloud decoding apparatus for executing the methods described in the first aspect or its various implementations. Specifically, the apparatus includes functional units for executing the methods described in the first aspect or its various implementations.

[0014] Fourthly, this application provides a point cloud encoding apparatus for performing the methods described in the second aspect or its various implementations. Specifically, the apparatus includes functional units for performing the methods described in the second aspect or its various implementations.

[0015] Fifthly, a point cloud decoder is provided, including a processor and a memory. The memory is used to store a computer program, and the processor is used to call and run the computer program stored in the memory to perform the methods in the first aspect or its various implementations described above.

[0016] In a sixth aspect, a point cloud encoder is provided, including a processor and a memory. The memory is used to store a computer program, and the processor is used to call and run the computer program stored in the memory to perform the methods in the second aspect or its implementations described above.

[0017] In a seventh aspect, a point cloud encoding and decoding system is provided, including a point cloud encoder and a point cloud decoder. The point cloud decoder is used to execute the methods in the first aspect or its implementations described above, and the point cloud encoder is used to execute the methods in the second aspect or its implementations described above.

[0018] Eighthly, a chip is provided for implementing the methods of any one of the first to second aspects or their respective implementations. Specifically, the chip includes a processor for calling and running a computer program from a memory, causing a device equipped with the chip to perform the methods of any one of the first to second aspects or their respective implementations.

[0019] Ninthly, a computer-readable storage medium is provided for storing a computer program that causes a computer to perform the methods of any one of the first to second aspects or their respective implementations.

[0020] In a tenth aspect, a computer program product is provided, including computer program instructions that cause a computer to perform the methods of any one of the first to second aspects or their respective implementations.

[0021] Eleventhly, a computer program is provided that, when run on a computer, causes the computer to perform the methods of any one of the first to second aspects or their respective implementations.

[0022] In the twelfth aspect, a bitstream is provided, which is generated based on the method described in the second aspect above.

[0023] Based on the above technical solution, during attribute encoding and decoding, the decoding end first determines a first parameter, which indicates the maximum number M of reference points that the prediction reference cache can cache. Then, based on this first parameter, M reference points are determined and stored in the prediction reference cache. Finally, based on the reference points included in the prediction reference cache, the attribute prediction value of the current point is determined. That is, this embodiment uses the first parameter to indicate the size of the prediction reference cache, making the size of the prediction reference cache fixed and not dynamically changing with the number of reference points, thereby saving memory resources of the encoding and decoding device and improving the encoding and decoding performance of point cloud attributes. Attached Figure Description

[0024] Figure 1A This is a schematic diagram of a point cloud.

[0025] Figure 1B This is a magnified view of a portion of the point cloud.

[0026] Figure 2 This is a schematic diagram of six viewing angles for a point cloud image;

[0027] Figure 3 This is a schematic block diagram of a point cloud encoding and decoding system according to an embodiment of this application;

[0028] Figure 4A This is a schematic block diagram of the point cloud encoder provided in the embodiments of this application;

[0029] Figure 4B This is a schematic block diagram of the point cloud decoder provided in the embodiments of this application;

[0030] Figure 5A It is a planar schematic diagram;

[0031] Figure 5B A diagram illustrating the node encoding order;

[0032] Figure 5C This is a schematic diagram of a planar sign.

[0033] Figure 5D A diagram illustrating sibling nodes;

[0034] Figure 5E This is a schematic diagram showing the intersection of the lidar and the node;

[0035] Figure 5F This is a schematic diagram of neighboring nodes at the same partition depth and with the same coordinates.

[0036] Figure 5G This is a schematic diagram of the neighboring nodes when a node is located in the lower plane of its parent node;

[0037] Figure 5H This is a schematic diagram of the neighboring nodes when a node is located in the high plane of its parent node;

[0038] Figure 5I A schematic diagram of predictive coding for planar position information of lidar point clouds;

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

[0040] Figures 7A to 7C This is a schematic diagram of geometric information encoding based on triangular facets;

[0041] Figure 8A This is a schematic diagram of distance-based LOD construction;

[0042] Figure 8B A subjective schematic diagram of the distance-based LOD generation process;

[0043] Figure 8C A flowchart of the coding process for prediction;

[0044] Figure 8D This is a schematic diagram illustrating one form of LOD (Level of Dimension).

[0045] Figure 8E This is a schematic diagram of the inter-layer nearest neighbor search.

[0046] Figure 8F This is a schematic diagram of a nearest neighbor search based on spatial relationships;

[0047] Figure 8G This is a schematic diagram of a nearest neighbor search method for coplanar, collinear, and concurrent points.

[0048] Figure 8H This is a schematic diagram of a nearest neighbor search method;

[0049] Figure 8I This is a schematic diagram of a nearest neighbor search method;

[0050] Figure 8J This is a schematic diagram of a nearest neighbor search based on a fast search algorithm;

[0051] Figure 8K This is a schematic diagram of an inter-frame nearest neighbor search.

[0052] Figure 8L This is a flowchart of a lifting transformation process;

[0053] Figure 8M This is a schematic diagram of a RAHT transformation process along the x, y, and z directions;

[0054] Figure 8N This is a schematic diagram of a RAHT transformation;

[0055] Figure 8O This is a schematic diagram of the RAHT forward and inverse transforms;

[0056] Figure 9 This is a schematic flowchart of a point cloud decoding method provided in an embodiment of this application;

[0057] Figure 10 This is a schematic diagram of a predictive reference cache;

[0058] Figure 11 This is a schematic diagram illustrating the update of a reference prediction cache.

[0059] Figure 12 This is a schematic diagram illustrating the update of a reference prediction cache.

[0060] Figure 13 This is a schematic diagram of a point cloud encoding method provided in an embodiment of this application;

[0061] Figure 14 This is a schematic block diagram of the point cloud decoding device provided in the embodiments of this application;

[0062] Figure 15 This is a schematic block diagram of the point cloud encoding device provided in the embodiments of this application;

[0063] Figure 16 This is a schematic block diagram of the electronic device provided in the embodiments of this application;

[0064] Figure 17 This is a schematic block diagram of the point cloud encoding and decoding system provided in the embodiments of this application. Detailed Implementation

[0065] This application can be applied to the field of point cloud upsampling technology, for example, to the field of point cloud compression technology.

[0066] To facilitate understanding of the embodiments of this application, the relevant concepts involved in the embodiments of this application will be briefly introduced as follows:

[0067] A point cloud is a set of discrete points in space that are randomly distributed and represent the spatial structure and surface properties of a three-dimensional object or scene. Figure 1A This is a schematic diagram of a 3D point cloud image. Figure 1B for Figure 1A A magnified view of a portion of the image, by Figure 1A and Figure 1B It can be seen that the surface of a point cloud is composed of densely distributed points.

[0068] Two-dimensional images contain information at each pixel and have a regular distribution, so there's no need to record their position information separately. However, the distribution of points in a point cloud in three-dimensional space is random and irregular, so it's necessary to record the position of each point in space to completely represent a point cloud. Similar to two-dimensional images, each location during the acquisition process has corresponding attribute information.

[0069] Point cloud data is a specific record of a point cloud. Points in a point cloud can include their location information and attribute information. For example, the location information can be the point's three-dimensional coordinates. This location information can also be referred to as the point's geometric information. Attribute information can include color information, reflectance information, normal vector information, etc. Color information reflects the color of an object, while reflectance information reflects the surface material of the object. The color information can be information from any color space. For example, the color information can be RGB. Alternatively, the color information can be luminance / chromaticity (YcbCr, YUV) information. For example, Y represents luminance (Luma), Cb (U) represents blue color difference, Cr (V) represents red, and U and V represent chromaticity (Chroma) used to describe color difference information. For example, a point cloud obtained based on laser measurement principles can include the point's three-dimensional coordinate information and the point's laser reflection intensity (reflectance). Similarly, a point cloud obtained based on photogrammetry principles can include the point's three-dimensional coordinate information and the point's color information. For example, point clouds can be obtained by combining laser measurement and photogrammetry principles. The points in the point cloud may include the point's three-dimensional coordinates, laser reflection intensity, and color information. Figure 2 A point cloud image is shown, in which, Figure 2 Six viewing angles of the point cloud image are shown. Table 1 shows the point cloud data storage format, which consists of the header information section and the data section:

[0070] Table 1

[0071]

[0072] Table 1 contains the data format, data representation type, total number of points in the point cloud, and the content represented by the point cloud. For example, the point cloud in this case is in ".ply" format, represented by ASCII code, with a total 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. Since point clouds are obtained by directly sampling real objects, they can provide a strong sense of realism 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] Point cloud data can be acquired through at least one of the following methods: (1) Computer equipment generation. Computer equipment can generate point cloud data based on virtual three-dimensional objects and virtual three-dimensional scenes. (2) 3D (3-Dimension) laser scanning. Point cloud data of static real-world three-dimensional objects or three-dimensional scenes can be acquired through 3D laser scanning, with millions of point cloud data acquired per second. (3) 3D photogrammetry. Point cloud data of real-world visual scenes can be acquired by collecting data from real-world visual scenes through 3D photography equipment (i.e., a set of cameras or camera equipment with multiple lenses and sensors). Point cloud data of dynamic real-world three-dimensional objects or three-dimensional scenes can be obtained through 3D photography. (4) Acquiring point cloud data of biological tissues and organs through medical equipment. In the medical field, point cloud data of biological tissues and organs can be acquired through medical equipment such as magnetic resonance imaging (MRI), computed tomography (CT), and electromagnetic positioning information.

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

[0076] Point clouds are classified according to the temporal type of the data as follows:

[0077] The first type of static point cloud: that is, the object is stationary and the device for acquiring the point cloud is also stationary;

[0078] The second type of dynamic point cloud: The object is in motion, but the device acquiring the point cloud is stationary;

[0079] The third type of dynamic point cloud acquisition: The device acquiring the point cloud is in motion.

[0080] Point clouds can be divided into two main categories based on their uses:

[0081] Category 1: Machine-perceived 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-perceived point clouds, 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 have reduced the cost and time required for point cloud data acquisition, while improving data accuracy. This transformation in point cloud data acquisition methods has made it possible to acquire large amounts of point cloud data. However, with the growth of application demands, the processing of massive amounts of 3D point cloud data is encountering bottlenecks due to limitations in storage space and transmission bandwidth.

[0084] Taking a point cloud video with a frame rate of 30fps (frames per second) as an example, each frame contains 700,000 points, and each point has coordinate information xyz (float) and color information RGB (uchar). Therefore, the data size of a 10-second point cloud video is approximately 0.7 million × (4 bytes × 3 + 1 byte × 3) × 30fps × 10s = 3.15GB. In contrast, a 10-second 1280×720 two-dimensional video with a YUV sampling format of 4:2:0 and a frame rate of 24fps has a data size of approximately 1280×720 × 12bit × 24 frames × 10s ≈ 0.33GB, and a 10-second two-view 3D video has a data size of approximately 0.33 × 2 = 0.66GB. It is evident that the data size of a point cloud video far exceeds that of two-dimensional and three-dimensional videos of the same duration. Therefore, to better manage data, save server storage space, and reduce transmission traffic and time between the server and client, point cloud compression has become a key issue in promoting the development of the point cloud industry.

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

[0086] Figure 3 This is a schematic block diagram of a point cloud encoding / decoding system according to an embodiment of this application. It should be noted that... Figure 3 This is merely an example; the point cloud encoding / decoding system in this application includes, but is not limited to, [other examples]. Figure 3 As shown. Figure 3 As shown, the point cloud encoding / decoding system 100 includes an encoding device 110 and a decoding device 120. The encoding device encodes (can be understood as compressing) the point cloud data to generate a bitstream, and transmits the bitstream to the decoding device. The decoding device decodes the bitstream generated by the encoding device to obtain the decoded point cloud data.

[0087] The encoding device 110 in this application embodiment can be understood as a device with point cloud encoding function, and the decoding device 120 can be understood as a device with point cloud decoding function. That is, the encoding device 110 and the decoding device 120 in this application embodiment include a wider range of devices, such as smartphones, desktop computers, mobile computing devices, laptops (e.g., laptop computers), tablet computers, set-top boxes, televisions, cameras, display devices, digital media players, point cloud game consoles, vehicle computers, etc.

[0088] In some embodiments, encoding device 110 may transmit encoded point cloud data (such as a bitstream) to decoding device 120 via channel 130. Channel 130 may include one or more media and / or means capable of transmitting encoded point cloud data from encoding device 110 to decoding device 120.

[0089] In one example, channel 130 includes one or more communication media that enable encoding device 110 to directly transmit encoded point cloud data to decoding device 120 in real time. In this example, encoding device 110 can modulate the encoded point cloud data according to a communication standard and transmit the modulated point cloud data to decoding device 120. The communication media includes wireless communication media, such as radio frequency spectrum; optionally, the communication media may 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 point cloud data encoded by encoding device 110. The storage medium includes various local access data storage media, such as optical discs, DVDs, flash memory, etc. In this example, decoding device 120 can retrieve the encoded point cloud data from this storage medium.

[0091] In another example, channel 130 may include a storage server that stores the point cloud data encoded by encoding device 110. In this example, decoding device 120 can download the stored encoded point cloud data from the storage server. Optionally, the storage server can store the encoded point cloud data and transmit the encoded point cloud data to 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, in addition to the point cloud encoder 112 and the output interface 113, the encoding device 110 may also include a point cloud source 111.

[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 bitstream. 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 a 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, in addition to the input interface 121 and the point cloud decoder 122, the decoding device 120 may also include a display device 123.

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

[0099] The point cloud decoder 122 is used to decode the encoded point cloud data to obtain the decoded point cloud data, and transmit the decoded point cloud data to the display device 123.

[0100] Display device 123 displays the decoded point cloud data. Display device 123 may be integrated with decoding device 120 or external to decoding device 120. Display device 123 may include various display devices, such as liquid crystal display (LCD), plasma display, organic light-emitting diode (OLED) display, or other types of display devices.

[0101] also, Figure 3 This is merely an example; the technical solutions in the embodiments of this application are not limited to... Figure 3 For example, the technology of this application can also be applied to one-sided point cloud encoding or one-sided point cloud decoding.

[0102] Current point cloud encoders can employ two point cloud compression coding techniques proposed by the Moving Picture Experts Group (MPEG): Video-based Point Cloud Compression (VPCC) and Geometry-based Point Cloud Compression (GPCC). VPCC projects a 3D point cloud onto a 2D model and encodes the projected 2D image using existing 2D encoding tools. GPCC utilizes 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 this application.

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

[0105] As mentioned above, points in a point cloud can include both location information and 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 a point cloud can also be called geometric encoding.

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

[0107] as follows Figure 4A As shown, 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 location encoding process includes: preprocessing the points in the point cloud, such as coordinate transformation, quantization, and removal of duplicate points; then, performing geometric encoding on the preprocessed point cloud, such as constructing an octree or a prediction tree, and forming a geometric bitstream based on the constructed octree or prediction tree. Simultaneously, based on the location information output by the constructed octree or prediction tree, the location information of each point in the point cloud data is reconstructed to obtain the reconstructed location values ​​of each point.

[0109] The attribute encoding process includes: using the reconstructed information of the location information and the original values ​​of the attribute information of the given input point cloud, selecting one of three prediction modes to perform point cloud prediction, quantizing the prediction results, and performing arithmetic encoding to form an attribute code stream.

[0110] like Figure 4A As shown, position encoding can be implemented using the following units:

[0111] Unit 201: Coordinate Transformation; Unit 202: Voxelize; Unit 203: Analyze Octree; Unit 204: Reconstruct Geometry; Unit 205: Arithmetic Encoding; Unit 206: Analyze Surface Approximation; and Unit 207: Prediction Tree Construction.

[0112] The coordinate transformation unit 201 can be used to transform the world coordinates of points in a point cloud into relative coordinates. For example, subtracting the minimum value of the xyz coordinate axis from the geometric coordinates of a point is equivalent to a de-DC operation, thereby converting the coordinates of points in the point cloud from world coordinates to relative coordinates.

[0113] The voxelization unit 202, also known as the quantize and removepoints 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 location but different attribute information can be merged into one cloud through attribute transformation. In some embodiments of this application, the voxelization unit 202 is an optional unit module.

[0114] The octree partitioning unit 203 can use octree encoding to encode the position information of quantized points. For example, the point cloud can be partitioned in the form of an octree, so that the position of the point can correspond one-to-one with the position of the octree. By counting the positions of points in the octree and marking their flags as 1, geometric encoding can be performed.

[0115] In some embodiments, during the geometric information encoding process based on trianglesoup (trisoup), the point cloud is also divided into octrees by octree partitioning unit 203. However, unlike the geometric information encoding based on octree, this trisoup does not need to divide the point cloud into unit cubes with side length 1×1×1 step by step. Instead, it stops partitioning when the side length of the block (sub-block) is W. Based on the surface formed by the distribution of the point cloud in each block, at most twelve vertices (intersection points) generated by the surface and the twelve edges of the block are obtained. The intersection points are surface fitted by surface fitting unit 206, and the fitted intersection points are geometrically encoded.

[0116] The prediction tree construction unit 207 can use prediction tree encoding to encode the quantized point location information. For example, the point cloud is divided into a prediction tree structure, so that the position of each point can correspond one-to-one with the position of a node in the prediction tree. By statistically analyzing the positions of points in the prediction tree, different prediction modes are selected to predict the geometric position information of the nodes to obtain prediction residuals, and quantization parameters are used to quantize the geometric prediction residuals. 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 code stream.

[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, thereby obtaining the reconstructed values ​​of the position information of each point in the point cloud data. Alternatively, it can perform position reconstruction based on the position information output by the prediction tree construction unit 207, thereby obtaining the reconstructed values ​​of the position information of each point in the point cloud data.

[0118] Arithmetic coding unit 205 can use entropy coding to perform arithmetic coding on the position information output by octree partitioning unit 203, the intersection points fitted by surface fitting unit 206, or the geometric prediction residual values ​​output by prediction tree construction unit 207 to generate a geometric bitstream; the geometric bitstream can also be called a geometric bitstream.

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

[0120] The color transformation unit 210, the attribute transfer unit 211, the region adaptive hierarchical transformation (RAHT) unit 212, the LOD generation unit 213, the lifting transform unit 214, the quantize coefficients unit 215, and the arithmetic coding unit 216.

[0121] It should be noted that the point cloud encoder 200 can contain more than Figure 4A More, fewer, or different functional components.

[0122] The color conversion unit 210 can be used to convert the RGB color space of points in a point cloud to YCbCr format or other formats.

[0123] The recoloring unit 211 uses the reconstructed geometric information to recolor the color information, so that the unencoded attribute information corresponds to the reconstructed geometric information.

[0124] After the original values ​​of the point attribute information are obtained through the reshaping unit 211, any transformation unit can be selected to transform the points in the point cloud. The transformation unit may include: RAHT transformation 212 and lifting transform unit 214. Among them, the lifting transformation depends 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 points in a point cloud, to obtain the predicted values ​​of the point's attribute information, and then to obtain the residual values ​​of the point's attribute information based on the predicted values. For example, the residual value of the point's attribute information can be the original value of the point's attribute information minus the predicted value of the point's attribute information.

[0126] In one embodiment of this application, the process of generating a Level of Detail (LOD) unit includes: obtaining the Euclidean distance between points based on the position information of points in the point cloud; and dividing the points into different detail representation layers based on the Euclidean distance. In one embodiment, the Euclidean distances can be sorted, and different ranges of Euclidean distances can be divided into different detail representation layers. For example, a point can be randomly selected as the first detail representation layer. Then, the Euclidean distances between the remaining points and this point are calculated, and points whose Euclidean distances meet a first threshold requirement are assigned to the second detail representation layer. The centroids of the points in the second detail representation layer are obtained, and the Euclidean distances between the points other than those in the first and second detail representation layers and the centroids are calculated. Points whose Euclidean distances meet the second threshold are assigned to the third detail representation layer. This process is repeated until all points are assigned to detail representation layers. By adjusting the threshold of the Euclidean distance, the number of points in each LOD layer can be increased. It should be understood that other methods can also be used for LOD division, and this application does not limit this.

[0127] It should be noted that the point cloud can be directly divided into one or more detail representation 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 chunks, each containing between 550,000 and 1,100,000 points. Each point cloud chunk can be viewed as a separate point cloud. Each point cloud chunk can also be divided into multiple detail representation layers, each containing multiple points. In one embodiment, the detail representation layers can be divided based on the Euclidean distance between the points.

[0129] The quantization unit 215 can be used to quantize the residual values ​​of the attribute information of the points. For example, if the quantization unit 215 is connected to the RAHT transformation unit 212, the quantization unit 215 can be used to quantize the residual values ​​of the attribute information of the points output by the RAHT transformation unit 212.

[0130] Arithmetic coding unit 216 can use zero-run-length coding to entropy-encode the residual values ​​of the attribute information of the points to obtain an attribute bitstream. The attribute bitstream can be bitstream information.

[0131] Figure 4BThis is a schematic block diagram of the point cloud decoder provided in the embodiments of this application.

[0132] like Figure 4B As shown, the decoder 300 can acquire the point cloud bitstream from the encoding device and obtain the position and attribute information of the points in the point cloud through the parsing code. Point cloud decoding includes position decoding and attribute decoding.

[0133] The location decoding process includes: performing arithmetic decoding on the geometric bitstream; constructing and merging octrees to reconstruct the point location information; and performing coordinate transformation on the reconstructed point location information to obtain the point's actual location information. The point's location information can also be referred to as its geometric information.

[0134] The attribute decoding process includes: obtaining the residual values ​​of the attribute information of points in the point cloud by parsing the attribute bitstream; obtaining the residual values ​​of the attribute information of points by inverse quantization; based on the reconstructed information of the point's position information obtained during the position decoding process, selecting one of the following inverse RAHT transform and inverse lifting transform to perform point cloud prediction, obtaining the predicted value, adding the predicted value to the residual value to obtain the reconstructed value of the point's attribute information; and performing an inverse color space transformation on the reconstructed value of the point's attribute information to obtain the decoded point cloud.

[0135] like Figure 4B As shown, position decoding can be implemented using the following unit:

[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 decoding can be implemented through the following units:

[0138] Arithmetic decoding unit 310, inverse quantize unit 311, RAHT inverse transform unit 312, generate LOD unit 313, inverse lifting unit 314, and inverse transform colors unit 315.

[0139] It should be noted that decompression is the reverse process of compression. Similarly, the functions of each unit in the decoder 300 can be found in the functions of the corresponding units in the encoder 200. Additionally, the point cloud decoder 300 may contain more than... Figure 4B More, fewer, or different functional components.

[0140] For example, decoder 300 can divide the point cloud into multiple Levels of Distance (LODs) based on the Euclidean distance between points in the point cloud; then, it sequentially decodes the attribute information of the points in the LODs; for example, it calculates the number of zeros (zero_cnt) in zero-run-length coding to decode the residuals based on zero_cnt; next, decoding framework 200 can perform inverse quantization based on the decoded residual values, and add the inverse quantized 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 point in subsequent LODs, and the reconstructed value of the current point will be used to predict the attribute information of subsequent points.

[0141] The above describes the basic process of a point cloud codec based on the GPCC encoding and decoding framework. With the development of technology, some modules or steps of this framework or process may be optimized. This application applies to the basic process of the point cloud codec based on the GPCC encoding and decoding framework, but is not limited to this framework and process.

[0142] The following section introduces geometric coding based on octrees and geometric coding based on prediction trees.

[0143] Octree-based geometric encoding involves: first, performing coordinate transformation on the geometric information so that the entire point cloud is contained within a bounding box. Then, quantization is performed; this step primarily serves a scaling function. Due to quantization rounding, some points have identical geometric information. Whether to remove duplicate points is determined based on parameters. This process of quantization and duplicate point removal is also known as voxelization. Next, the bounding box is continuously partitioned into trees (octree / quadtree / binary tree) in breadth-first search order, and the placeholder code for each node is encoded. In an implicit geometric partitioning method, the bounding box of the point cloud is first calculated. Assuming that The bounding box corresponds to a cuboid. During geometric partitioning, a binary tree partition is first performed based on the x-axis, resulting in two child nodes; this continues until the condition is met. Only when the condition is met will the quadtree be continuously partitioned based on the x and y axes to obtain four child nodes; when the condition is finally met... Under certain conditions, the octree partitioning process will continue until the resulting leaf nodes form a 1x1x1 unit cube. The partitioning then stops, and the nodes in the leaf nodes are encoded to generate a binary code stream. In the binary / quadtree / octree partitioning process, two parameters are introduced: K and M. Parameter K indicates the maximum number of binary / quadtree partitions performed before octree partitioning; parameter M indicates the minimum block side length required for the binary / quadtree partitioning process. At the same time, K and M must satisfy the following conditions: Assume The parameter K satisfies: ; Parameter M satisfies: The reason why parameters K and M satisfy the above conditions is that in the current geometric implicit partitioning process of G-PCC, the priority of partitioning method is binary tree, quadtree and octree. When the node block size does not meet the binary tree / quadtree condition, the node will be partitioned into an octree until the smallest unit of leaf node 1×1×1 is reached.

[0144] Octree-based geometric information encoding can effectively encode the geometric information of point clouds by utilizing the correlation between adjacent points in space. However, for some relatively flat nodes or nodes with planar characteristics, planar encoding can further improve the encoding efficiency of point cloud geometric information.

[0145] For example, such as Figure 5A As shown, series (a) belong to the low plane positions in the Z-axis direction, and series (b) belong to the high plane positions in the Z-axis direction. Taking (a) as an example, we can see that the four occupied child nodes of the current node are all located in the low plane positions of the current node in the Z-axis direction. Therefore, we can consider the current node to belong to a Z-plane and be a low plane in the Z-axis direction. Similarly, (b) indicates that the occupied child nodes of the current node are located in the high plane positions of the current node in the Z-axis direction.

[0146] The following example (a) compares the efficiency of octree coding and planar coding. Figure 5B As shown, for Figure 5AIn (a), the octree coding mode is adopted, then the occupancy information of the current node is represented as: 11001100. However, if the planar coding mode is adopted, an identifier needs to be coded first to indicate that the current node is a plane in the Z-axis direction, and then if the current node is a plane in the Z-axis direction, the plane position of the current node needs to be represented. Then, only the occupancy information of the low-plane nodes in the Z-axis direction (that is, the occupancy information of the four child nodes 0, 2, 4, and 6) needs to be coded. Therefore, coding the current node based on the planar coding mode only requires coding 6 bits, which can reduce the representation by 2 bits compared with the original octree coding. Based on this analysis, planar coding has significantly higher coding efficiency than octree coding. Therefore, for an occupied node, if the planar coding mode is adopted for coding in a certain dimension, then as Figure 5C shown, it is first necessary to represent the planar identifier (planarMode) and plane position (PlanePos) information of the current node in this dimension, and then code the occupancy information of the current node 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 i-axis direction; when the node is a plane in the i-axis direction, PlanePosition i : 0 means the current node is a plane in the i-axis direction and the plane position is a low plane, and 1 means the current node is a high plane in the i-axis direction. For example, i=0 represents the X-axis, i=1 represents the Y-axis, and i=2 represents the Z-axis.

[0147] The following will describe in detail the conditions for judging whether a node satisfies planar coding in the current G-PCC standard, and the predictive coding of the node's planar identifier and plane position information when the node satisfies the planar coding condition.

[0148] There are three judgment conditions in the current G-PCC for judging whether a node satisfies planar coding, which will be introduced one by one in the following:

[0149] The first type: judgment is performed according to the plane probability of the node in each dimension.

[0150] First, determine the local region density (local_node_density) of the current node, and the probability Prob(i) of the current node in each dimension.

[0151] When the local region density of the 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). In the following, Eligiblei (i=0,1,2) indicates whether planar coding is enabled in each dimension, where Eligible i The judgment process is shown in formula (1). For example, if Eligible i If the value is greater than or equal to the threshold, then planar encoding is initiated in the i-th dimension.

[0152] (1)

[0153] It should be noted that the threshold is adaptively changed. For example, when Prob(0) > Prob(1) > Prob(2), the threshold value is as shown in formula (2):

[0154]

[0155]

[0156] (2)

[0157] The following describes the update process of local_node_density and the update of Prob(i).

[0158] In one example, Update using the following formula (3):

[0159] (3)

[0160] Where L=255, it is 1 when the coded node is a plane, otherwise it is 0.

[0161] In one example, local_node_density is updated using the following formula (4):

[0162] (4)

[0163] In this context, `local_node_density` is initialized to 4, and `numSiblings` represents the number of sibling nodes of a node. Figure 5D As shown, the current node is the left node, and the right node is the sibling node of the current node. Therefore, the number of sibling nodes of the current node is 5 (including itself).

[0164] The second method is to determine whether the nodes in the current layer satisfy planar encoding based on the point cloud density of the current layer.

[0165] The density of points in the current layer is used to determine whether to perform planar encoding on the nodes of the current layer. Assume the number of points in the current point cloud to be encoded is pointCount, and the number of points reconstructed after IDCM encoding is numPointCountRecon. Since the octree is encoded based on breadth-first traversal, the number of nodes to be encoded in the current layer can be assumed to be nodeCount. Then, assume that planarEligibleKOctreeDepth indicates whether planar encoding should be initiated in the current layer. The determination process of planarEligibleKOctreeDepth is shown in formula (5):

[0166] (5)

[0167] When planarEligibleKOctreeDepth is true, all nodes in the current layer are encoded using planar encoding; otherwise, no planar encoding is performed, and only octree encoding is used.

[0168] The third method: Determine whether the current node meets the planar coding requirements based on the acquisition parameters of the lidar point cloud.

[0169] like Figure 5E As shown, the larger cube node at the top is traversed by two lasers simultaneously, indicating that the current node is not planar in the vertical direction of the Z-axis. The smaller cube node at the bottom is small enough that it cannot be traversed by two nodes simultaneously, thus it may be planar. Therefore, we can determine whether the current node satisfies planar encoding based on the number of lasers corresponding to the current node.

[0170] The following section will introduce the current predictive coding for nodes that meet the conditions for planar coding, including planar identification information and planar location information.

[0171] I. Predictive Coding of Flat Signage Information

[0172] Currently, three contexts are used to encode planar identification information, that is, the planar representation in each dimension is designed in separate contexts.

[0173] The encoding of planar position information for non-LiDAR point clouds and LiDAR point clouds will be introduced separately below.

[0174] 1) Encoding of non-LiDAR point cloud planar position information

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

[0176] Planar position information is predicted and encoded based on the following information:

[0177] (1) The planar position information of the current node is obtained by using the occupancy information of neighboring nodes. The three elements are: predicted as low plane, predicted as high plane, and cannot be predicted.

[0178] (2) The spatial distance between the current node and other nodes at the same partition depth and coordinates is considered "near" and "far".

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

[0180] (4) Coordinate dimension .

[0181] like Figure 5F As shown, if the current node to be encoded is the left node, then under the same octree partitioning depth level and the same vertical coordinate, the neighboring node is found to be the right node. The distance between the two nodes is determined as "near" and "far", and the planar position of the reference node is taken into account.

[0182] In one example, such as Figure 5G As shown, the black node is the current node. If the current node is located in the lower plane of its parent node, its planar position is determined as follows:

[0183] a) If any of the child nodes 4 to 7 of the slash node are occupied, while all the point nodes are unoccupied, then it is highly likely that there is a plane in the current node, and that plane is located at a low position.

[0184] b) If the child nodes 4 to 7 of the slash node are not occupied, while any point node is occupied, then it is highly likely that there is a plane in the current node, and that plane is at a higher position.

[0185] c) If the child nodes 4 to 7 of the slash node are all empty nodes, and the dot nodes are all empty nodes, then the planar position cannot be inferred, so it is marked as unknown.

[0186] d) If any of the child nodes 4 to 7 of the slash node are occupied, and any of the dot nodes are occupied, the planar position cannot be inferred, so it is marked as unknown.

[0187] In another example, such as Figure 5H As shown, the black node is the current node. If the node is in the height plane of its parent node, the plane position of the current node is determined as follows:

[0188] a) If any of the child nodes 4 to 7 of the dot node are occupied, while the slash node is not occupied, then it is highly likely that there is a plane in the current node, and the plane is located at a low position.

[0189] b) If the child nodes 4 to 7 of the dot node are not occupied, but the slash node is occupied, then it is highly likely that there is a plane in the current node, and the plane is at a high position.

[0190] c) If the child nodes 4 to 7 of the point node are all unoccupied, and the slash node is also unoccupied, the planar position cannot be inferred, so it is marked as unknown.

[0191] d) If one of the child nodes 4-7 of the point node is occupied, and the slash node is occupied, the planar position cannot be inferred, so it is marked as unknown.

[0192] II. Encoding of LiDAR point cloud planar position information

[0193] Figure 5I Predictive encoding of the planar position information of the lidar point cloud is performed by using lidar acquisition parameters to predict the planar position of the current node. The position is quantized into four intervals using the intersection of the current node and the lidar ray, which are then used as the context for the current node's planar position. The specific calculation process is as follows: Assume the lidar coordinates are ( , , The geometric coordinates of the current point are (x, y, ...). First, calculate the vertical tangent of the current point relative to the lidar. The calculation process is shown in formula (6):

[0194] (6)

[0195] Since each laser has a certain offset angle relative to the lidar, the relative tangent value of the current node relative to the laser is calculated. The specific calculation process is shown in formula (7):

[0196] (7)

[0197] Ultimately, the corrected tangent value of the current node will be used to predict the planar position of the current node. Specifically, assuming 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), based on... The planar position is quantized into four quantization intervals, which are the context of the planar position.

[0198] However, the octree-based geometric information encoding mode only achieves efficient compression rates for points that are correlated in space. For points in isolated locations within the geometric space, the Direct Coding Model (DCM) can significantly reduce complexity. For all nodes in the octree, the use of DCM is not represented by flag information, but rather inferred from the current node's parent node and neighbor information. There are three ways to determine whether the current node is eligible for DCM encoding, such as... Figure 6 As shown:

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

[0200] (2) The current node’s parent node has only one child node, and the six neighboring nodes that share a face with the current node are all empty nodes.

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

[0202] If the current node is not eligible for DCM encoding, it will be partitioned into an octree. If it is eligible, the number of points it contains will be further determined. If the number of points is less than a threshold of 2, the node will be DCM encoded; otherwise, octree partitioning will continue. When applying the DCM encoding mode, it is first necessary to encode whether the current node is a true isolated point, i.e., IDCM_flag. If IDCM_flag is true, the current node will use DCM encoding; otherwise, octree encoding will still be used. When the current node satisfies DCM encoding, the DCM encoding mode of the current node needs to be encoded. Currently, there are two DCM modes: 1: Only one point exists (or multiple points, but they are duplicate points); 2: Contains two points. Finally, the geometric information of each point needs to be encoded. Assuming the side length of the node is... Encoding each component of the geometric coordinates of a node requires d bits, and this bit information is directly encoded into the bitstream. It's important to note that when encoding LiDAR point clouds, predictive encoding of the three-dimensional coordinate information is performed using LiDAR acquisition parameters, which further improves the encoding efficiency of geometric information.

[0203] It's important to note that when partitioning nodes down to leaf nodes, in the case of geometrically lossless encoding, the number of duplicate points in the leaf nodes needs to be encoded. Finally, the placeholder information of all nodes is encoded to generate a binary code stream. Additionally, G-PCC currently introduces a planar encoding mode. During the geometric partitioning process, it determines whether the child nodes of the current node are on the same plane. If the child nodes of the current node satisfy the condition of being on the same plane, that plane will be used to represent the child nodes of the current node.

[0204] In octree-based geometric decoding, the decoding end follows a breadth-first traversal. Before decoding the placeholder information of each node, it first uses the reconstructed geometric information to determine whether the current node should undergo planar decoding or IDCM decoding. If the current node meets the conditions for planar decoding, its planar identifier and planar position information are decoded first, followed by decoding the placeholder information based on the planar information. If the current node meets the conditions for IDCM decoding, it first decodes whether it is a true IDCM node. If it is, 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 the conditions for planar decoding or DCM decoding, the placeholder information of the current node is decoded. By continuously parsing the placeholder code of each node in this way, and continuously dividing the nodes until a 1×1×1 unit cube is obtained, the division stops. The number of points contained in each leaf node is then obtained, and finally, the geometrically reconstructed point cloud information is recovered.

[0205] In the trisoup (triangle soup)-based geometric information encoding framework, geometric partitioning is also performed first. However, unlike binary / quadtree / octree-based geometric information encoding, this method does not need to partition the point cloud into 1x1x1 unit cubes step by step. Instead, partitioning stops when the side length of a block (sub-block) reaches W. Based on the surface formed by the distribution of the point cloud in each block, at most twelve vertices (intersection points) are obtained between this surface and the twelve edges of the block. The vertex coordinates of each block are encoded sequentially to generate a binary bitstream.

[0206] Point cloud geometry reconstruction based on Trisoup involves first decoding the vertex coordinates at the decoding end to reconstruct the triangular facets. This process is as follows: Figures 7A to 7C As shown. Figure 7AThe block shown contains three vertices (v1, v2, v3). The set of triangular facets formed by these three vertices in a certain order is called a triangle soup, or trisoup. Figure 7B As shown. Then, sampling is performed on this set of triangular faces, and the obtained sampled points are used as the reconstructed point cloud within this block, as shown. Figure 7C As shown.

[0207] Geometric encoding based on prediction trees involves the following steps: First, the input point cloud is sorted. Currently, sorting methods include unordered, Morton order, azimuth order, and radial distance order. At the encoding end, the prediction tree structure is built using two different methods: KD-Tree (high-latency, slow mode) and using LiDAR calibration information to assign each point to a different laser and build the prediction structure according to the different lasers (low-latency, fast mode). Next, based on the prediction tree structure, each node in the prediction tree is traversed. By selecting different prediction modes, the geometric position information of the node is predicted to obtain the prediction residual, and the geometric prediction residual is quantized using quantization parameters. 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.

[0208] Geometric decoding based on prediction trees involves the decoder continuously parsing the bitstream to reconstruct the prediction tree structure. Then, it obtains the geometric position prediction residual information and quantization parameters of each prediction node through parsing. Finally, it performs inverse quantization on the prediction residuals to recover the reconstructed geometric position information of each node, thus completing the geometric reconstruction at the decoder.

[0209] After geometric encoding is completed, the geometric information is reconstructed. Currently, attribute encoding mainly targets color information. First, the color information is converted from the RGB color space to the YUV color space. Then, the reconstructed geometric information is used to recolor the point cloud, so that the unencoded attribute information corresponds to the reconstructed geometric information. In color information encoding, there are two main transformation methods: one is distance-based lifting transformation that relies on LOD (Level of Detail) partitioning, and the other is direct RAHT (Region Adaptive Hierarchical Transform) transformation. Both methods transform the color information from the spatial domain to the frequency domain, obtaining high-frequency and low-frequency coefficients through the transformation. Finally, the coefficients are quantized and encoded to generate a binary code stream.

[0210] When using geometric information to predict attribute information, Morton codes can be used for nearest neighbor search. The Morton code corresponding to each point in the point cloud can be obtained from the geometric coordinates of that point. The specific method for calculating the Morton code is described below. For each component represented by a d-bit binary number in three-dimensional coordinates, its three components can be expressed as formula (8):

[0211] (8)

[0212] in, They are , , The highest bit ( ) to the lowest bit ( The corresponding binary value. Morton code M is a set of... , , Starting from the highest position, arrange in alternating order. Up to the lowest bit, the formula for calculating M is as shown in formula (9):

[0213] (9)

[0214] in, These are the highest bits of M. To the lowest bit ( The value of ) is determined by the Morton code M of each point in the point cloud. After obtaining the Morton code M, the points in the point cloud are arranged in ascending order of Morton code, and the weight w of each point is set to 1.

[0215] There are four general test conditions for GPCC:

[0216] Condition 1: Geometric position is finitely lossy, and properties are lossy;

[0217] Condition 2: Geometric position is lossless, but attributes are lossy;

[0218] Condition 3: Geometric position is lossless, but attribute loss is limited;

[0219] Condition 4: Geometric position is lossless and attribute is lossless.

[0220] The general test sequence includes four types: Cat1A, Cat1B, Cat3-fused, and Cat3-frame. Among them, Cat2-frame point clouds only contain reflectance attribute information, Cat1A and Cat1B point clouds only contain color attribute information, and Cat3-fused point clouds contain both color and reflectance attribute information.

[0221] There are two technical approaches to GPCC, distinguished by the algorithm used in geometric compression: octree coding and predictive tree coding.

[0222] In the octree coding branch, at the encoding end, the bounding box is sequentially divided into sub-cubes. Non-empty sub-cubes (containing points from the point cloud) are further divided until a 1x1x1 unit cube is obtained as a leaf node. In the case of geometrically lossless coding, the number of points contained in each leaf node needs to be encoded, ultimately completing the geometric octree coding and generating a binary bitstream. At the decoding end, following a breadth-first traversal, the placeholder code for each node is continuously parsed, and the nodes are sequentially divided until a 1x1x1 unit cube is obtained. In the case of geometrically lossless decoding, the number of points contained in each leaf node needs to be parsed, ultimately recovering the geometrically reconstructed point cloud information.

[0223] In the prediction tree coding branch, the prediction tree structure is built at the encoding end using two different methods: KD-Tree (high latency, slow mode) and using LiDAR calibration information to assign each point to a different laser and build the prediction structure according to the different lasers (low latency, fast mode). Next, based on the prediction tree structure, each node in the prediction tree is traversed, and the geometric position information of the node is predicted using different prediction modes to obtain the prediction residual. The geometric prediction residual is then quantized using quantization parameters. Finally, through continuous iteration, the prediction residual of the prediction tree node position information, the prediction tree structure, and the quantization parameters are encoded to generate a binary bitstream. At the decoding end, the prediction tree structure is reconstructed by continuously parsing the bitstream. Then, the geometric position prediction residual information and quantization parameters of each prediction node are obtained through parsing. The prediction residual is then dequantized to recover the reconstructed geometric position information of each node, ultimately completing the geometric reconstruction at the decoding end.

[0224] The previous section introduced geometric encoding and decoding under the G-PCC encoding framework. The following section introduces attribute encoding and decoding under the G-PCC encoding framework.

[0225] like Figure 4A As shown, 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 of LOD generation, while RAHT adaptively transforms attribute information from bottom to top based on the octree construction hierarchy. These three point cloud attribute encoding methods will be described in detail below.

[0226] At present, the attribute prediction module of G-PCC adopts a nearest neighbor attribute prediction coding scheme based on a Level-of-details (LoDs) structure, and the LOD construction methods include a distance-based LOD construction scheme, a fixed sampling rate-based LOD construction scheme, an octree-based LOD construction scheme, and the like. In the LOD construction scheme based on distance thresholds, before constructing the LOD, the point cloud is first subjected to Morton sorting to ensure strong attribute correlation between adjacent points. As shown in Figure 8A an example of a distance-based LOD construction process is given, according to L Manhattan distances preset in advance by the user the point cloud is divided into L different point cloud detail layers , where satisfies . The construction process of LOD is described as follows: (1) First, all points in the point cloud are marked as unvisited, and a set V is established 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, the point is ignored; otherwise, the minimum distance D from the current point to the point set V is calculated. If D<dl, the point is ignored; otherwise, the current point is marked as visited, and the current point is added to the refinement layer Rl and the point set V; (3) The points in the level of detail LODl are composed of the points in the refinement layers R0, R1, R2...Rl; (4) The above steps are repeated continuously until all points are marked as visited.

[0227] On the basis of the LOD structure, the attribute value of each point is predicted by linear weighting using the reconstructed attribute values of points in the same layer or a higher layer of LOD, where the maximum number of reference prediction neighbors is determined by the high-level syntax element of the encoder. For the attribute of each point, the rate-distortion optimization algorithm is used at the encoding end to select weighted prediction using the attributes of N searched nearest neighbor points or select prediction using the attribute of a single nearest neighbor point, and finally the selected prediction mode and prediction residual are encoded.

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

[0229] (10)

[0230] where N represents the number of prediction points in the nearest neighbor point set of point i, P i represents the set of N nearest neighbor points of point i, D m represents the spatial geometric distance from the nearest neighbor point m to the current point i, Attr m represents the reconstructed attribute value of the nearest neighbor point m, represents the attribute prediction value of the current point i, and the number of points N is a preset value.

[0231] To balance attribute encoding efficiency and parallel processing across different LOD layers, a switch is introduced in the encoder's high-level syntax elements to control whether in-LOD layer prediction is used. If enabled, in-LOD layer prediction is initiated, allowing prediction to utilize points within the same LOD layer. It's important to note that when the number of LOD layers is one, in-LOD layer prediction is always used.

[0232] In one example, Figure 8B The image shows the visualization result of the Level of Detail (LOD). The points in the first layer represent the outer contour of the point cloud. As more detail layers are added, the details of the point cloud gradually become clearer.

[0233] In one example, such as Figure 8C The diagram shows the flowchart for G-PCC attribute prediction. For the k-th point in the point cloud, firstly, the three nearest neighbors of the k-th point are determined, and based on the attribute reconstruction information of these three neighbors, the predicted attribute value of the k-th point is determined. Next, based on the original attribute value and the predicted attribute value of the k-th point, the attribute prediction residual of the k-th point is obtained. After quantizing the attribute prediction residual, arithmetic coding is performed to obtain the attribute bitstream.

[0234] In some embodiments, after the LOD is constructed, according to the LOD generation order, the three nearest neighbors of the current point to be encoded are first found from the encoded data points. The attribute reconstruction values ​​of these three nearest neighbors are used as candidate predicted values ​​for the current point to be encoded; then, rate-distortion optimization is performed. Choose the optimal predicted value from the attribute reconstruction values ​​of the three nearest neighbors. For example, when encoding... Figure 8A When determining the attribute value of the midpoint P2, the predictor index of the attribute value of the nearest neighbor P4 is set to 1; the predictor indices of the attributes of the second nearest neighbor P5 and the third nearest neighbor P0 are set to 2 and 3 respectively; and the predictor index of the weighted average of points P0, P5, and P4 is set to 0, as shown in Table 2.

[0235] Table 2. Sample candidate prediction items for attribute coding

[0236]

[0237] Finally, the optimal predictor variable is selected using RDO. The formula for the weighted average is shown in Equation (11):

[0238] (11)

[0239] In formula (11) Indicates nearest neighbor points To the current point The spatial geometric weights are calculated using the formula shown in formula (12):

[0240] (12)

[0241] in, Indicates the current point The predicted value of the attribute. This represents the index of the three neighboring points. This represents the attribute values ​​after the nearest neighbor points are reconstructed. The current point geometric position coordinates, Nearest neighbor The geometric coordinates.

[0242] The following section introduces attribute prediction residuals and quantification.

[0243] The current point is obtained through the above prediction. Attribute prediction values ( (This represents the total number of points in the point cloud). Let... Given the original attribute values ​​of the current point, the attribute residuals are as shown in formula (13). Recorded as:

[0244] (13)

[0245] Furthermore, the prediction residuals are quantified based on the following formula (14):

[0246] (14)

[0247] In formula (14) Indicates the current point The quantized attribute residuals, Quantization step size Quantization parameters can be specified by CTC. The calculation yielded the result.

[0248] Reconstructing attribute values ​​at the encoding end

[0249] The purpose of encoding-end reconstruction is for the prediction of subsequent points. Before reconstructing attribute values, the residuals need to be dequantized, as shown in formula (15), denoted as... The residual after dequantization:

[0250] (15)

[0251] Next, based on the following formula (16), Compared with the predicted value Adding them together gives the point. Reconstruction value :

[0252] (16)

[0253] When performing attribute nearest neighbor search based on LOD partitioning, there are currently two main categories of algorithms: intra-frame nearest neighbor search and inter-frame nearest neighbor search. Intra-frame nearest neighbor search is further divided into inter-layer nearest neighbor search and intra-layer nearest neighbor search algorithms.

[0254] Intra-frame nearest neighbor search:

[0255] Intra-frame nearest neighbor search is divided into two algorithms: inter-layer nearest neighbor search and intra-layer nearest neighbor search. After LOD partitioning, similar to... Figure 8D The image shows a pyramid structure.

[0256] 1. Inter-layer nearest neighbor search

[0257] like Figure 8E and Figure 8A As shown, different LOD layers are obtained based on geometric information, resulting in LOD0, LOD1, and LOD2. Points in LOD0 are used to predict the attributes of points in the next LOD layer during the inter-layer nearest neighbor search process.

[0258] The following will provide a detailed explanation of the entire process of intra-frame nearest neighbor search:

[0259] During the entire LOD partitioning process, there are three sets: O(k), L(k), and I(k). Here, k is the index of the LOD layer during partitioning, I(k) is the input point set for the current LOD layer, and after LOD partitioning, we obtain sets O(k) and L(k). Set O(k) stores the sampled point set, and L(k) is the point set in the current LOD layer. The entire LOD partitioning process is as follows:

[0260] (1) Initialization

[0261]

[0262]

[0263] (2) Using the LOD partitioning algorithm, the sampling points are stored in The remaining points are divided into ;

[0264] (3) When performing the next iteration .

[0265] It is important to note here that since the entire LOD partitioning process is based on Morton codes, therefore... , as well as It stores the Morton code index corresponding to the point.

[0266] When performing inter-layer nearest neighbor search, i.e. Points in the set The nearest neighbor search is performed on the set, and the specific search algorithm is as follows:

[0267] Nearest neighbor search based on spatial relationships

[0268] When making a prediction for the current point P, a neighbor search is performed using the parent block (Block B) corresponding to point P, such as... Figure 8F As shown, points within neighboring blocks that are coplanar or collinear with the current parent block are searched for to predict attributes.

[0269] For example, spatial relationships such as coplanarity, collinearity, and concurrent points are as follows: Figure 8G As shown.

[0270] First, the corresponding spatial block is obtained using the coordinates of the current point. Then, a nearest neighbor search is performed in the previously encoded LOD layer to find spatial blocks that are coplanar, collinear, or share a point with the current block to obtain the N nearest neighbors of the current point.

[0271] If the N nearest neighbors of the current point are still not found after performing coplanar, collinear, and concurrent nearest neighbor searches, a fast search algorithm will be used to find the N nearest neighbors of the current point. The specific algorithm... Figure 8H As shown. When performing inter-attribute prediction, the Morton code corresponding to the current point is first obtained using the geometric coordinates of the current point to be encoded. Then, based on the Morton code of the current point, the first reference point in the reference frame with a Morton code greater than that of the current point is found. Secondly, Perform nearest neighbor search within the specified range.

[0272] The other specific algorithms for updating the nearest neighbor are the same as those for inter-frame nearest neighbor search, and will not be repeated here. The specific algorithms will be mentioned in the section on inter-frame nearest neighbor search.

[0273] 2. Intra-layer nearest neighbor search

[0274] like Figure 8I As shown, when the intra-layer prediction algorithm is enabled, it will perform nearest neighbor search in the set of already encoded points in the same layer of LOD to obtain the N nearest neighbors of the current point (the same applies to inter-layer nearest neighbor search).

[0275] When performing prediction within the attribute layer, nearest neighbor search is performed based on a fast search algorithm. The specific algorithm is as follows: Figure 8J As shown, assuming the current point's Morton code index is i, then it will... Perform nearest neighbor search. The specific nearest neighbor search algorithm is the same as the inter-frame block-based fast search algorithm, so it will not be repeated here, but will be discussed in detail later.

[0276] The above section introduced intra-frame nearest neighbor search. The following section introduces inter-frame nearest neighbor search.

[0277] Inter-frame nearest neighbor search:

[0278] like Figure 8H As shown, when performing attribute inter-frame prediction, the Morton code corresponding to the current point is first obtained using the geometric coordinates of the current point to be encoded. Then, based on the Morton code of the current point, the first reference point in the reference frame with a Morton code greater than that of the current point is found. Secondly, Perform nearest neighbor search within the specified range.

[0279] Currently, intra-frame and inter-frame nearest neighbor searches are performed based on block-level neighborhood searches, as detailed below. Figure 8K As shown. When performing a neighborhood search on the current point (Morton code index i), the points in the reference frame are first divided according to their Morton codes. There are several layers, and the specific partitioning algorithm is as follows:

[0280] First layer: Assuming the points in the reference frame are numPoints, first, each point in the reference frame... Each point is divided into one block;

[0281] Second layer: Based on the first layer, the blocks of the first layer are processed in the same order as the Morton code. Each block is divided into one block;

[0282] Third layer: Based on the second layer, the blocks of the first layer are processed in the same order as the Morton code. Each block is divided into one block;

[0283] The final result is as follows Figure 8K The prediction structure is shown.

[0284] Based on such Figure 8K The prediction structure shown is used for attribute prediction. Assuming the Morton code index of the current point to be encoded is i, firstly, the first point in the reference frame with an index j greater than or equal to the current point's Morton code is obtained. Secondly, the block index of the reference point is calculated based on j, as follows:

[0285] First layer: ;

[0286] Second layer: ;

[0287] Third layer: .

[0288] Assuming the reference range in the prediction frame of the current point is [j-searchRange, j+searchRange], the starting index of the third layer is calculated using j-searchRange, and the ending index of the third layer is calculated using j+searchRange. Next, it is first determined in the blocks of the third layer whether some blocks of the second layer need to perform nearest neighbor lookup. Then, in the second layer, it is determined whether each block in the first layer needs to perform a lookup. If some blocks in the first layer need to perform nearest neighbor lookup, then the nearest neighbors of some blocks in the first layer will be updated by checking each point.

[0289] The following describes the algorithm for calculating blocks based on indexes. Assuming the Morton code index corresponding to the current point is index, the index of the corresponding third-layer block is shown in formula (17):

[0290] (17)

[0291] After obtaining the block index idx_2 of the third level, we can use idx_2 to obtain the start index and end index of the block corresponding to the current block in the second level, as shown in formula (18):

[0292]

[0293] (18)

[0294] Similarly, the index of the first-level block is obtained from the index of the second-level block using the same algorithm.

[0295] When performing nearest neighbor lookup based on blocks, the first step is to determine whether the current block needs to undergo nearest neighbor lookup, which is essentially filtering the nearest neighbor lookup for blocks. Each spatial block can be represented by two variables: minPos and maxPos. minPos represents the minimum value of the block, and maxPos represents the maximum value of the block.

[0296] Assuming the distance to the farthest point among the N nearest neighbors of the current point is Dist, the coordinates of the point to be encoded are (x, y, z), and the current block is represented as (minPos, maxPos), where minPos is the minimum value in the three dimensions of the bounding box and maxPos is the maximum value in the three dimensions of the bounding box, then the distance D between the current point and the bounding box is calculated as shown in formula (19):

[0297] (19)

[0298] The current block will only be traversed if D is less than or equal to Dist.

[0299] The following section introduces the enhancement transformation encoding of point cloud attribute information.

[0300] Figure 8L To improve the encoding process of the lift transform, which also uses Level of Detail (LOD) to predict and encode point cloud attributes, the lift transform first divides the LOD into high and low layers. It then performs predictions in reverse order of the LOD generation layers and introduces an update operator to update the quantization weights of points in the lower-level LODs to improve prediction accuracy. This is because the attribute values ​​of points in the lower-level LODs are frequently used to predict the attribute values ​​of points in the higher-level LODs, thus the points in the lower-level LODs should have a greater influence.

[0301] Step 1: Segmentation Process

[0302] The segmentation process involves dividing a complete LOD layer into lower LOD layers. and higher LOD layers If a point cloud has three levels of LOD, that is... After being segmented, For higher LOD levels, denoted as , The lower LOD level is denoted as .

[0303] Step 2: Prediction Process

[0304] In higher-level LOD, the attribute information of the nearest neighbor of a point in the lower level is selected as the attribute prediction value of the current point to be encoded. Predicting residuals As shown in formula (20):

[0305] (20)

[0306] Step 3: Update Process

[0307] Attribute prediction residuals in high-level LOD Update and get and utilize The attribute values ​​of points in the lower-level LOD are boosted, as shown in equation (21):

[0308] (twenty one)

[0309] The above process will iterate continuously from high to low LOD until the lowest LOD level is reached.

[0310] Since LOD-based prediction schemes give greater influence to points in the lower LOD layers, lift wavelet transform-based schemes introduce quantization weights and update the prediction residuals based on the prediction residuals D(N) and the distances between predicted points and their neighbors. Finally, the quantization weights from the transform process are used for adaptive quantization of the prediction residuals. It's important to note that the quantization weights for each point can be determined through geometric reconstruction at the decoding end; therefore, the quantization weights should not be encoded.

[0311] The following section introduces the region-adaptive hierarchical transformation.

[0312] Region 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 use a bottom-up approach, following an octree structure, to transform the nodes in each layer from the x, y, and z dimensions (e.g., ...). Figure 8M The transformation is performed and iterated until the root node of the octree is reached. For example... Figure 8N As shown, the basic idea is to perform wavelet transform based on the hierarchical structure of an octree, associating attribute information with octree nodes. For the attributes of occupied nodes within the same parent node, the transformation is performed recursively from bottom to top. For each node in each level, the transformation is performed along the x, y, and z dimensions, until the root node of the octree is reached. During the hierarchical transformation process, the low-pass (DC) coefficients obtained after transforming nodes in the same level are passed to the nodes in the next level for further transformation, while all high-pass (AC) coefficients are encoded using an arithmetic encoder.

[0313] During the transformation process, the DC coefficients (direct current components) after transformation at the same layer node will be passed to the next layer for further transformation, while the AC coefficients (alternating current components) after transformation at each layer will be quantized and encoded. The main transformation process will be described below.

[0314] Figure 8O This refers to the corresponding transformation and inverse transformation processes. Assume, and Let DC be the coefficients of two attributes that are neighbors in layer L. After linear transformation, the information in layer L-1 is the AC coefficients. and DC coefficient ;Then, No further transformation will be performed; quantization encoding will proceed directly. The process will continue searching for nearest neighbors for transformation. If no neighbors are found, the node will be directly passed to layer L-2. In other words, the RAHT transformation is only effective for nodes with neighbors; nodes without neighbors will be directly passed to the next higher layer. During this transformation process, and The corresponding weights (the number of non-empty child nodes within this node) are respectively and (abbreviated as) and ), The weight is Then the general transformation formula (22) is:

[0315] (twenty two)

[0316] For example, in the formula The transformation matrix is ​​determined according to the following formula (23):

[0317] (twenty three)

[0318] The transformation matrix adaptively changes and updates according to the weights corresponding to each point. The above process iterates and updates continuously based on the partitioning structure of the octree until the root node of the octree is reached.

[0319] The above section introduces the encoding and decoding techniques for geometric information and attribute information of point clouds.

[0320] When G-PCC performs nearest neighbor lookup for attributes, it uses a block-based approach for fast nearest neighbor search. First, the set of prediction reference points is stored in a three-layer cache. Then, a block-based fast nearest neighbor lookup is performed. Finally, the found nearest neighbor attributes are used to perform a weighted prediction of the current point's attributes. However, existing algorithms do not limit the cache size of the current prediction reference point set, but the cache memory is proportional to the number of prediction reference points. Therefore, existing algorithms introduce a dynamic and uncontrollable problem regarding hardware-implemented caching. In other words, when predicting attributes for the current point, all reference points for the current point are cached in the prediction reference cache. A large number of reference points results in a large prediction reference cache, while a small number results in a small one, making the size of the prediction reference cache uncontrollable and leading to low attribute decoding performance.

[0321] To address the aforementioned technical problems, this embodiment of the application, when encoding and decoding the attribute information of the current point, determines a first parameter. This first parameter indicates the maximum number M of reference points that the prediction reference cache can cache. Then, based on this first parameter, M reference points are determined and stored in the prediction reference cache. Finally, based on the reference points included in the prediction reference cache, the attribute prediction value of the current point is determined. In other words, this embodiment of the application uses the first parameter to indicate the size of the prediction reference cache, ensuring that the size of the prediction reference cache is fixed and does not dynamically change with the number of reference points. This saves memory resources of the encoding and decoding device and improves the decoding performance of point cloud attributes.

[0322] The point cloud encoding and decoding method involved in the embodiments of this application will be described below with reference to specific examples.

[0323] First, taking the decoding end as an example, the point cloud decoding method provided in the embodiments of this application will be introduced.

[0324] Figure 9 This is a schematic flowchart of a point cloud decoding method provided in an embodiment of this application. The point cloud decoding method in this embodiment can be derived from the above... Figure 3 or Figure 4B The point cloud decoding device or point cloud decoder shown is complete.

[0325] like Figure 9 As shown, the point cloud decoding method in this application includes:

[0326] S101, Determine the first parameter.

[0327] The first parameter indicates the maximum number of reference points M that the prediction reference cache can cache, where M is a positive integer. In some embodiments, M is represented as... .

[0328] As described above, point clouds include geometric information and attribute information, and decoding point clouds includes geometric decoding and attribute decoding. This application's embodiments relate to attribute decoding of point clouds.

[0329] In this embodiment, point cloud attribute decoding is performed after point cloud geometric decoding. That is, in this embodiment, the geometric information of the point cloud is first decoded to obtain a point cloud with decoded geometric information. Then, based on the point cloud with decoded geometric information, the attribute information of the point cloud is decoded.

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

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

[0332] 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 the Morton sorted point cloud.

[0333] In this embodiment, the decoding process for 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, firstly, the N nearest neighbors whose attribute information has been decoded are identified, where N is a positive integer. Next, the attribute information of the current point is predicted based on the attribute information (i.e., attribute reconstruction values) of these N nearest neighbors. For example, the attribute information of one of the N nearest neighbors is determined as the predicted attribute value of the current point, or the weighted average of the attribute information of these N nearest neighbors is determined as the predicted attribute value of the current point.

[0334] When determining the N nearest neighbors of the current point, it is usually necessary to include intra-frame nearest neighbor lookup and / or inter-frame nearest neighbor lookup.

[0335] For example, in some embodiments, only intra-frame nearest neighbor lookup is used to determine the N nearest neighbors of the current point. In some embodiments, only inter-frame nearest neighbor lookup is used to determine the N nearest neighbors of the current point.

[0336] For example, in some embodiments, both intra-frame nearest neighbor lookup and inter-frame nearest neighbor lookup are used simultaneously to determine the N nearest neighbor points of the current point.

[0337] Currently, G-PCC performs nearest neighbor lookups on attributes using a block-based fast approach. First, the set of prediction reference points is stored in a three-layered cache. Then, a fast nearest neighbor lookup is performed on the block, and finally, the found nearest neighbor attributes are used to perform a weighted prediction of the current point's attributes. However, existing algorithms do not limit the cache size of the current prediction reference point set, but the cache memory is proportional to the number of prediction reference points. Therefore, existing algorithms introduce a dynamic and uncontrollable problem regarding hardware-implemented caching. In other words, when predicting attributes for the current point, all reference points for the current point are cached in the prediction reference cache. A large number of reference points results in a large prediction reference cache, while a small number results in a small one, making the size of the prediction reference cache uncontrollable and leading to low attribute decoding performance.

[0338] To address the aforementioned technical issues, this application introduces a first parameter. This first parameter is used to control the number of parameter points stored in the prediction reference cache, thereby enabling controllability of the cached content at the decoding end, saving memory resources of the encoding and decoding equipment, and improving the decoding performance of point cloud attributes.

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

[0340] The following describes the specific process by which the decoding end determines the first parameter.

[0341] In some embodiments, the first parameter mentioned above can be a preset value or a default value. That is, the encoding end and the decoding end determine the preset value or default value as the maximum number of reference points that can be cached in the prediction reference buffer, i.e., the size of the prediction reference buffer.

[0342] In some embodiments, the encoder determines a first parameter and writes the first parameter into the bitstream. The decoder then obtains the first parameter by decoding the bitstream, and based on the first parameter, determines the size of the prediction reference buffer or the maximum number of bufferable reference points M.

[0343] The embodiments of this application do not limit the specific form of the first parameter.

[0344] For example, syntax elements can be used This indicates the first parameter.

[0345] In some embodiments, the first parameter may be included in the attribute parameter set. middle.

[0346] This application does not limit the specific location or specific form of the first parameter in the ASP.

[0347] In one example, the syntax for the attribute parameter set data cell is shown in Table 3:

[0348] Table 3

[0349]

[0350]

[0351]

[0352] As shown in Table 3 This indicates the first parameter.

[0353] In this example, the decoding end obtains the first parameter by decoding the syntax elements shown in Table 3 above. Then, based on the first parameter, the size M of the prediction reference cache is obtained, or the maximum number of reference points M that the prediction reference cache can cache is obtained.

[0354] In some embodiments, the encoding end may also write the first parameter to other locations in the bitstream besides APS, and this application embodiment does not limit this.

[0355] After determining the first parameter based on the above steps, the decoding end executes the following step S102.

[0356] S102. Based on the first parameter, determine M reference points and store the M reference points in the prediction reference cache.

[0357] Based on the above steps, after determining the first parameter, the decoding end can determine the maximum number of reference points M that the prediction reference cache can cache. Then, based on the points already decoded from the current attributes, it determines M reference points and stores these M reference points in the prediction reference cache. In other words, in this embodiment, the decoding end, through the first parameter, caches a maximum of M reference points in the prediction reference cache, thereby controlling the number of points stored in the prediction reference cache.

[0358] The embodiments of this application do not limit the specific method of determining M reference points based on the first parameter.

[0359] In some embodiments, as described above, the point cloud geometry has already been decoded during point cloud attribute decoding. Therefore, the point cloud is sorted according to its geometric decoding information, for example, by sorting the point cloud using Morton codes. From the sorted point cloud, M points with decoded attribute information are selected as the M reference points for the current point, and these M reference points are stored in the prediction reference cache. For example, M reference points are selected from the points with decoded attribute information according to the sorting order of the point cloud. Another example is to randomly sample from the sorted points with decoded attribute information to obtain M attribute-decoded points as the M reference points.

[0360] In some embodiments, when decoding the attributes of a point cloud, the point cloud is layered, for example, by constructing a Level of Detail (LOD). This way, when decoding the attributes of the current point in a certain layer, M reference points can be selected from the current LOD layer containing the current point. For example, the decoder decodes the bitstream to determine whether the current point cloud should initiate intra-LOD layer prediction. If it is determined that intra-LOD layer prediction is initiated, then points within 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 as M reference points for the current point in the prediction reference cache. It should be noted that when the number of LOD layers is 1, intra-LOD layer prediction is always used.

[0361] In some embodiments, when the decoding end predicts the attribute information of the current point, it first determines the set of prediction reference points corresponding to the current point. At this time, the determination of M reference points based on the first parameter in S102 above includes the following steps:

[0362] S102-A1 Determine the set of prediction reference points corresponding to the current point. The set of prediction reference points includes multiple reference points.

[0363] S102-A2: Based on the first parameter, select M reference points from the set of predicted reference points.

[0364] 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 prediction reference point set corresponding to the current point. Existing methods, when predicting the attributes of the current point, store all reference points in this prediction reference point set into a prediction reference cache, which consumes a large amount of memory, leaving less memory for other calculations on the decoder and thus reducing decoding efficiency. To solve this technical problem, this embodiment controls the size of the prediction reference cache through a first parameter. When predicting the attribute information of each point in the point cloud, M reference points are stored in the prediction reference cache each time, avoiding excessive memory consumption by the prediction reference cache and thus improving the decoding efficiency of the decoder.

[0365] For example, taking intra-frame nearest neighbor lookup as an example, during the entire LOD partitioning process, there are three sets: O(k), L(k), and I(k). Here, k is the index of the LOD layer during partitioning, and I(k) is the input point set during the current LOD layer partitioning. After LOD partitioning, sets O(k) and L(k) are obtained. Set O(k) stores the sampled point set, and L(k) is the point set in the current LOD layer. For example, since the entire LOD partitioning process is based on Morton codes, O(k), L(k), and I(k) store the Morton code indices corresponding to the points. During inter-layer nearest neighbor lookup, points in set L(k) are searched for their nearest neighbors in set O(k).

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

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

[0368] In some embodiments, during inter-frame prediction, at least one point in the reference frame of the current point whose attributes have been decoded can be added to the prediction reference point set.

[0369] In the embodiments of this application, the reference frame of the current point can be understood as the reference frame of the current frame in which the current point is located.

[0370] The embodiments of this application do not limit the number of reference frames for the current point; that is, the current point includes one or more reference frames.

[0371] In some embodiments, the reference frame for the current point includes the forward reference frame of the current frame.

[0372] In some embodiments, the reference frame for the current point includes the backward reference frame of the current frame.

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

[0374] As shown above, regardless of whether intra-frame nearest neighbor lookup, inter-frame nearest neighbor lookup, or a combination of both, the set of prediction reference points can be determined for the current point. This set of prediction reference points typically includes more than M points whose attribute information has been decoded.

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

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

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

[0378] Method 2: Select M reference points from the prediction reference point set based on the indices of each reference point in the prediction reference point set. For example, if the points in the prediction reference point set are sorted according to the Morton code, then several points with indices larger than the current point's index and several points with indices smaller than the current point's index can be selected from the prediction reference point set, for a total of M points as the M reference points corresponding to the current point.

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

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

[0381] The decoding end determines M reference points based on the first parameter according to the above steps, and stores the M reference points in the prediction reference cache, and then executes the following step S103.

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

[0383] 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, it performs attribute prediction on the current point to obtain the attribute prediction value of the current point.

[0384] This application embodiment does not limit the specific method by which the decoding end determines the attribute prediction value of the current point based on the reference points included in the prediction reference cache.

[0385] In some embodiments, as described above, in order to reduce the memory footprint of the prediction reference cache, the number of reference points included in the prediction reference cache is reduced; that is, a fixed number of M reference points are stored in the prediction reference cache each 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 the nearest neighbors of the current point to predict the attribute information of the current point.

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

[0387] S103-A: Among the reference points included in the prediction reference cache, find at least one nearest neighbor point of the current point.

[0388] S103-B: Determine the predicted attribute value of the current point based on the attribute information of at least one nearest neighbor point.

[0389] In this embodiment, when the decoding end performs attribute prediction on the current point, it searches for at least one nearest neighbor 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 (i.e. attribute reconstruction value) of the at least one nearest neighbor point to obtain the attribute prediction value of the current point.

[0390] In the embodiments of this application, the methods for finding at least one nearest neighbor of the current point among the reference points included in the prediction reference cache include, but are not limited to, the following:

[0391] Method 1: In the intra-frame inter-layer nearest neighbor lookup, the reference points included in the prediction reference buffer include points from LOD layers previously 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. Then, it performs a nearest neighbor lookup in the LOD layers previously decoded before the current LOD layer, for example, searching for reference points included in spatial blocks that are coplanar, collinear, or inter-point with the current block, as at least one nearest neighbor of the current point.

[0392] Method 2, S103-A above includes the following steps:

[0393] S103-A1. In the set of predicted reference points, determine the first reference point corresponding to the current point;

[0394] S103-A2: Based on the first reference point, find at least one nearest neighbor point of the current point among the reference points included in the prediction reference cache.

[0395] In this method 2, the decoder first determines a reference point from the reference points included in the prediction reference point set as the first reference point corresponding to the current point. Then, based on the first reference point, it searches for at least one nearest neighbor point of the current point from the reference points included in the prediction reference cache.

[0396] This application does not limit the specific method by which the decoding end determines the first reference point corresponding to the current point in the set of prediction reference points.

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

[0398] In one example, the decoder and encoder default to using one of the reference points in the predicted reference point set as the first reference point for the current point. In another example, the reference points in the predicted reference point set are sorted based on their indices, so that the first, second, or nth point in the predicted reference point set can be used as the first reference point for the current point, where n is a positive integer less than or equal to M.

[0399] In one example, the decoder identifies 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 instance, 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, and uses this as the current point's first reference point.

[0400] The embodiments of this application do not limit the specific representation of the indexes for the current point and the reference point.

[0401] For example, if the point cloud is sorted based on the Morton code order in this application embodiment, then the index of the point can be the Morton code index of the point.

[0402] For example, if the point cloud is sorted based on Hilbert order in the embodiments of this application, the index of the point can be the Hilbert index of the point.

[0403] After determining the first reference point corresponding to the current point based on the above steps, the decoding end executes the above steps S103-A2, and based on the first reference point, searches for at least one nearest neighbor point of the current point among the reference points included in the prediction reference cache.

[0404] For example, such as Figure 10 As shown, assuming the current point is the i-th point in the current frame, or in other words, the index of the current point is i, and the index of the first reference point is j, and assuming the indices of the M reference points included in the prediction reference buffer are: ... , , , , , ... The decoding end finds at least one nearest neighbor of the current point from these M reference points. For example, let the first reference point be P. j The center searches within a preset search range to obtain at least one nearest neighbor of the current point.

[0405] The embodiments of this application do not limit the specific method by which the decoding end searches for at least one nearest neighbor point of the current point among the reference points included in the prediction reference cache based on the first reference point.

[0406] In one possible implementation, the decoder searches for at least one reference point closest to the current point in the prediction reference buffer near the first reference point, and uses it as at least one nearest neighbor of the current point.

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

[0408] S103-A21. Based on the first reference point, determine whether to update the prediction reference cache;

[0409] S103-A22. If it is determined that the prediction reference cache needs to be updated, then based on the remaining reference points in the prediction reference point set, at least one reference point included in the prediction reference cache is updated to obtain the updated prediction reference cache.

[0410] S103-A23. Among the reference points included in the updated prediction reference cache, find at least one nearest neighbor of the current point.

[0411] 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. That is, the decoder determines whether at least one nearest neighbor of the current point can be accurately determined from the reference points currently cached in the prediction reference cache, based on the first reference point. If it is determined that at least one nearest neighbor of the current point cannot be determined from the reference points included in the current prediction reference cache, then the current prediction reference cache is updated.

[0412] If the decoder determines that the prediction reference cache does not need to be updated, it searches for at least one nearest neighbor of the current point from the M reference points included in the current prediction reference cache.

[0413] 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 the updated prediction reference cache. Then, it searches for at least one nearest neighbor point of the current point among the reference points included in the updated prediction reference cache.

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

[0415] The embodiments of this application do not limit the specific method by which the decoding end determines whether to update the prediction reference cache based on the first reference point.

[0416] In some embodiments, S103-A21 includes: if the first reference point is the last reference point or one of the last few reference points in the current prediction reference cache, then determine to update the current prediction reference cache.

[0417] In some embodiments, S103-A21 includes:

[0418] 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, then it is determined that the prediction reference cache should be updated, where the first value is an integer.

[0419] In step S103-A211, the decoder adds the index of the first reference point to the first value K to obtain a sum, denoted as A. Then, it compares this sum A with the index B of the last reference point in the current prediction reference cache to determine whether the sum A is greater than or equal to the index B of the last reference point in the current prediction reference cache.

[0420] If the sum A is less than the index B of the last reference point in the current prediction reference cache, it means that the decoder can find at least one nearest neighbor of the current point among the reference points included in the current prediction reference cache. In this case, it is determined not to update the current prediction reference cache.

[0421] If the sum A is greater than or equal to the index B of the last reference point in the current prediction reference cache, it indicates that the reference points included in the current prediction reference cache are insufficient to find at least one nearest neighbor of the current point, or that the reference points included in the current prediction reference cache do not include the nearest neighbor of the current point, or that the number of nearest neighbors included in the current point is insufficient. In this case, it is determined that the current prediction reference cache needs to be updated.

[0422] In this application embodiment, there is no restriction on the specific value of the first numerical value K, as long as it is an integer, such as 0, 1, 2, 3, etc.

[0423] The following description uses 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 a preset search range value is only an example, and the value of the first value in the embodiments of this application includes, but is not limited to, these two cases.

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

[0425] 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, then it is determined that the prediction reference cache should be updated.

[0426] In case 1, after determining the first reference point corresponding to the current point based on the above steps, the decoding end compares the index of the first reference point with the index of the last reference point in the reference points included in the current prediction reference cache.

[0427] In some embodiments, if the index of the first reference point is less than the index of the last reference point in the reference points included in the current prediction reference cache, it is determined that the prediction reference cache will not be updated, and instead, at least one nearest neighbor point of the current point will be found directly among the reference points included in the current prediction reference cache.

[0428] 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. Figure 11As shown, assuming the index of the first reference point is j, and the index of the last reference point in the current prediction reference cache is also j, the decoder determines to update the current prediction reference cache.

[0429] In Case 1, after the decoding end determines that the current prediction reference cache needs to be updated, it executes the steps S103-A22 above, 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 the updated prediction reference cache.

[0430] In this embodiment of the application, the decoding end updates at least one of the M reference points included in the prediction reference cache, and the specific method for obtaining the updated prediction reference cache is not limited.

[0431] In one possible implementation, the decoder directly deletes all reference points in the current prediction reference cache and selects M new reference points from the remaining reference points in the prediction reference point set. These M new reference points are then stored in the prediction reference point set. In other words, 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 in the prediction reference cache and selects M new reference points to store in the prediction reference cache, thus achieving a fast update of the entire prediction reference cache. In this way, the decoder can find at least one nearest neighbor point of the current point from the completely updated prediction reference cache.

[0432] In one example of this implementation, the decoder selects M reference points from the remaining reference points in the prediction reference point set whose indices are less than or equal to the index of the first reference point, and stores them as new reference points in the prediction reference point set.

[0433] For example, the prediction reference point set includes M points, sorted by index from smallest to largest as follows: P0, P1, ..., Pj-1, Pj, Pj+1, ... Assume the current prediction reference cache has M reference points: 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. Therefore, it is determined that the current prediction reference cache needs to be updated.

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

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

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

[0437] 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 predicted reference point set;

[0438] S103-A22-a2: Using at least one second reference point, update at least one reference point in the prediction reference cache to obtain the updated prediction reference cache.

[0439] 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 in the prediction reference point 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 in the prediction reference point set and denoted as at least one second reference point. Then, at least one second reference point is used to update at least one reference point in the prediction reference cache to obtain the updated prediction reference cache.

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

[0441] In some embodiments, the decoding end selects M second reference points from the remaining reference points in the prediction reference point set based on the index of the first reference point. That is, in this embodiment, the decoding end 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 decoding end directly deletes the M reference points currently included in the prediction reference cache and stores the selected M second reference points into the prediction reference cache. In this way, the decoding end searches for at least one nearest neighbor point of the current point from the M second reference points included in the updated prediction reference cache.

[0442] This application does not restrict the specific method by which the decoding end selects M second reference points from the remaining reference points in the set of predicted reference points based on the index of the first reference point.

[0443] In one example, the decoder selects M reference points from the remaining reference points in the predicted reference point set, whose indices are greater than or equal to the index of the first reference point, as M second reference points.

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

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

[0446] In one example, if the decoder 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, then the reference point with index [j, j+M] is selected from the set of prediction reference points as M second reference points.

[0447] In this embodiment, the decoding end selects M second reference points from the remaining reference points in the prediction reference point set based on the index of the first reference point, and then executes the steps S103-A22-a2 described above, that is, deleting the M reference points in the prediction reference cache and adding the M determined second reference points to the prediction reference cache, as follows. Figure 12 The updated prediction reference cache is shown.

[0448] The above describes the process of updating the prediction reference cache at the decoding end when the first value is 0 in case 1.

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

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

[0451] 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, then it is determined that the prediction reference cache should be updated.

[0452] In scenario 2, based on the steps described above, the decoding end determines the first reference point corresponding to the current point, then adds the index j of the first reference point to the preset search range value searchRange to obtain a first sum j + searchRange. Next, the first sum j + searchRange is compared with the index of the last reference point included in the current prediction reference cache to determine whether to update the current prediction reference cache.

[0453] In some embodiments, if the first sum 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 that the prediction reference cache will not be updated, and instead, at least one nearest neighbor point of the current point will be searched directly among the reference points included in the current prediction reference cache.

[0454] In some embodiments, if the first sum 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 the index of the first reference point is j, the preset search range value is searchRange, and the first sum 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.

[0455] In case 2, after the decoding end determines that the current prediction reference cache needs to be updated, it executes the steps S103-A22 above, 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 the updated prediction reference cache.

[0456] In this embodiment of the application, the decoding end updates at least one of the M reference points included in the prediction reference cache, and the specific method for obtaining the updated prediction reference cache is not limited.

[0457] In one possible implementation, the decoder directly deletes all reference points in the current prediction reference cache and selects M new reference points from the remaining reference points in the prediction reference point set. These M new reference points are then stored in the prediction reference point set. In other words, 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 value, the decoder directly deletes all M reference points in the prediction reference cache and selects M new reference points to store in the prediction reference cache, thus achieving a fast update of the entire prediction reference cache. In this way, the decoder can find at least one nearest neighbor point of the current point from the completely updated prediction reference cache.

[0458] In one example of this implementation, the decoder selects M reference points from the remaining reference points in the prediction reference point set whose indices are less than or equal to the index of the first reference point, and stores them as new reference points in the prediction reference point set.

[0459] For example, the set of prediction reference points includes M points, sorted by index from smallest to largest as follows: P0, P1, ..., Pj-1, Pj, Pj+1, ... Assume the current prediction reference cache contains M reference points: P0, P1, ..., PM-1, with the first reference point corresponding to the current point being Pj, and the first sum j + searchRange being greater than M-1. In this case, 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. Therefore, it is determined that the current prediction reference cache needs to be updated.

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

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

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

[0463] 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 predicted reference point set;

[0464] S103-A22-b2, Using at least one third reference point, update at least one reference point included in the prediction reference cache to obtain the updated prediction reference cache.

[0465] 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 in the prediction reference point 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 in the prediction reference point set and is denoted as at least one third reference point. Then, at least one third reference point is used to update at least one reference point in the prediction reference cache to obtain the updated prediction reference cache.

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

[0467] In some embodiments, the decoding end selects M third reference points from the remaining reference points in the prediction reference point set based on the index of the first reference point. That is, in this embodiment, the decoding end 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 decoding end directly deletes the M reference points currently included in the prediction reference cache and stores the aforementioned M selected third reference points into the prediction reference cache. In this way, the decoding end searches for at least one nearest neighbor point of the current point from the M third reference points included in the updated prediction reference cache.

[0468] This application does not limit the specific method by which the decoding end selects at least one third reference point from the remaining reference points in the set of predicted reference points based on the index of the first reference point.

[0469] In one example, the decoder selects at least one reference point from the remaining reference points in the predicted reference point set, whose index is greater than or equal to the index of the first reference point, as at least one third reference point.

[0470] In one example, the decoder selects P third reference points from the remaining reference points in the predicted reference point 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 predicted reference cache.

[0471] 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 cache plus 1. For example, if the index of the last reference point in the prediction reference cache is 99, then the index of the point with the smallest index among these P third reference points is 100 or greater than 100.

[0472] 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 than 166.

[0473] For example, suppose the prediction reference cache contains 100 points, with indices ranging from 0 to 99. Assume the index of the first reference point is 67, and the preset search range is 40. The sum of the first reference point's index and the preset search range is 107. Since this sum is greater than the index of the last reference point in the prediction reference cache, an update to the current prediction reference cache is determined. Next, the decoder, based on the index j of the first reference point, selects 67 third reference points with indices from 100 to 166 from the remaining reference points in the prediction reference point set.

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

[0475] As described 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 this first sum is greater than or equal to the index of the last reference point in the prediction reference cache, then based on the index of the first reference point, P third reference points are selected from the remaining reference points in the prediction reference point set. Next, the decoder deletes the P points preceding the first reference point from the prediction cache and adds the aforementioned P third reference points to the prediction reference cache, thus updating the prediction reference cache.

[0476] In this example, the decoding end updates the prediction reference buffer using P third reference points in ways including but not limited to the following:

[0477] 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, it stores the P third reference points determined above after the first reference point, resulting in an updated prediction reference cache. At this point, the updated prediction reference cache includes M reference points, which include MP old reference points and the P third reference points determined above.

[0478] Example 2: The decoder deletes P points before the first reference point in the prediction reference cache. It does not move the MP points after the first reference point in the prediction reference cache; instead, it directly stores the P determined third reference points in the positions before the first reference point, resulting in an updated prediction reference cache. At this point, the updated prediction reference cache includes M reference points, including MP old reference points and the aforementioned P determined third reference points. The positions of these MP old reference points in the prediction reference cache remain unchanged.

[0479] In some embodiments of Case 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 set of prediction reference points, storing them in the prediction reference cache. In one example, the smallest index among these M new reference points is less than or equal to the index of the first parameter. In another example, the smallest index among these M new reference points is greater than or equal to the index of the last point in the current prediction reference cache.

[0480] The above description uses an example of a first value of 0 or a preset search range value to illustrate the process of updating the prediction reference cache at the decoding end. It should be noted that the embodiments of this application do not limit the specific process of updating the prediction reference cache at the decoding end.

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

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

[0483] Based on the above steps, the decoding end updates the prediction reference cache and then executes the steps S103-A23 above to find at least one nearest neighbor point of the current point among the reference points included in the updated prediction reference cache.

[0484] In this embodiment, the decoding end searches for at least one nearest neighbor of the current point from the prediction reference cache in the same way as searching for at least one nearest neighbor of the current point from the updated prediction reference cache. The following description uses the example of the decoding end searching for at least one nearest neighbor of the current point from the prediction reference cache.

[0485] The embodiments of this application do not limit the specific method by which the decoding end searches for at least one nearest neighbor of the current point in the prediction reference cache.

[0486] In one example, if the predicted reference cache includes the currently decoded points in the inter-layer nearest neighbor lookup, the decoder obtains the corresponding spatial block from the coordinates of the current point. Then, it performs a nearest neighbor lookup in the previously decoded LOD layer to find spatial blocks that are coplanar, collinear, or inter-point with the current block to obtain at least one nearest neighbor point of the current point.

[0487] In one example, if the predicted reference cache includes decoded points within the layer during the intra-layer nearest neighbor lookup, the decoder searches for at least one nearest neighbor of the current point from these intra-layer decoded points.

[0488] In one example, if the predicted reference buffer includes decoded points in the reference frame of the current point during the inter-frame nearest neighbor lookup, the decoding end can find at least one nearest neighbor of the current point from these decoded inter-frame points.

[0489] It should be noted that the specific method by which the decoding end searches for at least one nearest neighbor of the current point in the prediction reference cache can be referred to the description in the above embodiment, and will not be repeated here.

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

[0491] This application does not limit the specific method by which the decoding end determines the attribute prediction value of the current point based on the attribute information of at least one nearest neighbor point.

[0492] In one example, if the above-mentioned at least one nearest neighbor includes a nearest neighbor, the decoding end determines the attribute information (i.e., attribute reconstruction value) of the nearest neighbor as the attribute prediction value of the current point.

[0493] For example, if the above-mentioned at least one nearest neighbor includes multiple nearest neighbors, then the average value of the attribute information of these multiple nearest neighbors is determined as the attribute prediction value of the current point.

[0494] For example, if the above-mentioned at least one nearest neighbor includes multiple nearest neighbors, then the weighted average of the attribute information of these multiple nearest neighbors is determined as the attribute prediction value of the current point.

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

[0496] (twenty four)

[0497] in, Indicates the current point The predicted value of the attribute. This represents the index of the j-th nearest neighbor. This represents the attribute information (i.e., the attribute reconstruction value) of the j-th nearest neighbor. This represents the distance from the j-th nearest neighbor to the current point. Spatial geometric weights.

[0498] For example, the distance from the j-th nearest neighbor to the current point can be determined using the following formula (25). Spatial geometric weights:

[0499] (25)

[0500] in,( () is the current point geometric coordinates, ( (j) represents the geometric coordinates of the j-th nearest neighbor.

[0501] As described above, in this embodiment, 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. Then, based on the reference points included in the prediction reference cache, the attribute prediction value of the current point is determined. In other words, this embodiment uses the first parameter to indicate the size of the prediction reference cache, making the size of the prediction reference cache fixed and not dynamically changing with the number of reference points. This saves memory resources of the encoding / decoding device and improves the decoding performance of point cloud attributes.

[0502] To further illustrate the decoding effect of the point cloud decoding method proposed in the embodiments of this application, the first parameter is described below. The decoding efficiency of the attribute is demonstrated when different values ​​are set.

[0503] In one example, when When the value is 16, the decoding efficiency of the attribute is shown in Table 4:

[0504] Table 4

[0505]

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

[0507] In one example, when When the value is 20, the decoding efficiency of the attributes is shown in Table 5:

[0508] Table 5

[0509]

[0510] As can be seen from Tables 4 and 5 above, the first parameter The smaller the value, the greater the impact on attribute decoding efficiency.

[0511] The point cloud decoding method provided in this application first determines a first parameter during attribute decoding. This first parameter indicates the maximum number M of reference points that the prediction reference cache can cache. Then, based on the first parameter, M reference points are determined and stored in the prediction reference cache. Finally, based on the reference points included in the prediction reference cache, the attribute prediction value of the current point is determined. In other words, this application embodiment uses the first parameter to indicate the size of the prediction reference cache, making the size of the prediction reference cache fixed and not dynamically changing with the number of reference points. This saves memory resources of the decoding device and improves the decoding performance of point cloud attributes.

[0512] The above describes the point cloud decoding method provided in this application embodiment using the decoding end as an example. The following describes the point cloud encoding method provided in this application embodiment using the encoding end as an example.

[0513] Figure 13 This is a schematic flowchart of a point cloud encoding method provided in an embodiment of this application. The point cloud encoding method in this embodiment can be derived from the above... Figure 3 or Figure 4A The point cloud encoding device shown has been completed.

[0514] like Figure 13 As shown, the point cloud encoding method in this application embodiment includes:

[0515] S201, Determine the first parameter.

[0516] The first parameter indicates the maximum number of reference points M that the prediction reference cache can cache, where M is a positive integer.

[0517] As described above, point clouds include geometric information and attribute information, and the encoding of point clouds includes geometric encoding and attribute encoding. This application's embodiments relate to the attribute encoding of point clouds.

[0518] In this embodiment, point cloud attribute encoding is performed after point cloud geometric encoding. That is, in this embodiment, the geometric information of the point cloud is encoded first. Then, based on the geometrically encoded point cloud, the attribute information of the point cloud is encoded.

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

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

[0521] 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 the Morton sorted point cloud.

[0522] In this embodiment, the encoding process for 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, firstly, the N nearest neighbors whose attribute information has been encoded are identified, where N is a positive integer. Next, the attribute information of the current point is predicted based on the attribute information (i.e., attribute reconstruction values) of these N nearest neighbors. For example, the attribute information of one of the N nearest neighbors is determined as the predicted attribute value of the current point, or the weighted average of the attribute information of these N nearest neighbors is determined as the predicted attribute value of the current point.

[0523] When determining the N nearest neighbors of the current point, it is usually necessary to include intra-frame nearest neighbor lookup and / or inter-frame nearest neighbor lookup.

[0524] For example, in some embodiments, only intra-frame nearest neighbor lookup is used to determine the N nearest neighbors of the current point. In some embodiments, only inter-frame nearest neighbor lookup is used to determine the N nearest neighbors of the current point.

[0525] For example, in some embodiments, both intra-frame nearest neighbor lookup and inter-frame nearest neighbor lookup are used simultaneously to determine the N nearest neighbor points of the current point.

[0526] Currently, G-PCC performs nearest neighbor lookups on attributes using a block-based approach. First, the set of prediction reference points is stored in a three-layered cache. Then, a fast nearest neighbor lookup is performed on the block, and finally, the found nearest neighbor attributes are used to perform a weighted prediction of the current point's attributes. However, existing algorithms do not limit the cache size of the current prediction reference point set, but the cache memory is proportional to the number of prediction reference points. Therefore, existing algorithms introduce a dynamic and uncontrollable problem regarding hardware-implemented caching. In other words, when predicting attributes for the current point, all reference points are cached in the prediction reference cache. A large number of reference points results in a large prediction reference cache, while a small number results in a small one, making the size of the prediction reference cache uncontrollable and leading to low attribute encoding performance.

[0527] To address the aforementioned technical issues, this application introduces a first parameter. This first parameter is used to control the number of parameter points stored in the prediction reference cache, thereby enabling controllability of the cached content at the encoding end, saving memory resources of the encoding device, and improving the encoding performance of point cloud attributes.

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

[0529] The following describes the specific process by which the encoder determines the first parameter.

[0530] In some embodiments, the first parameter mentioned above can be a preset value or a default value. That is, the encoding end and the decoding end determine the preset value or default value as the maximum number of reference points that can be cached in the prediction reference buffer, i.e., the size of the prediction reference buffer.

[0531] In some embodiments, the encoder determines a first parameter and writes the first parameter into the bitstream. The encoder then obtains the first parameter by encoding the bitstream, and based on the first parameter, determines the size of the prediction reference buffer or the maximum number of cacheable reference points M.

[0532] The embodiments of this application do not limit the specific form of the first parameter.

[0533] For example, the first parameter can be represented by the syntax element max_points_per_bucket_log2_pluS2.

[0534] In some embodiments, the first parameter may be included in the attribute parameter set. middle.

[0535] This application does not limit the specific location or specific form of the first parameter in the ASP.

[0536] In one example, the syntax for the attribute parameter set data cell is shown in Table 3.

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

[0538] In some embodiments, the encoding end may also write the first parameter to other locations in the bitstream besides APS, and this application embodiment does not limit this.

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

[0540] S202. Based on the first parameter, determine M reference points and store the M reference points in the prediction reference cache.

[0541] Based on the above steps, after determining the first parameter, the encoding end can determine the maximum number of reference points M that the prediction reference cache can cache. Then, based on the points whose attributes have already been encoded, it determines M reference points and stores these M reference points in the prediction reference cache. In other words, in this embodiment, the encoding end, through the first parameter, can cache a maximum of M reference points in the prediction reference cache, thereby controlling the number of points stored in the prediction reference cache.

[0542] The embodiments of this application do not limit the specific method of determining M reference points based on the first parameter.

[0543] In some embodiments, as described above, the point cloud geometry is already encoded during point cloud attribute encoding. Therefore, the point cloud is sorted according to its geometric information, for example, by Morton code sorting. From the sorted point cloud, M points with encoded attribute information are selected as the M reference points for the current point, and these M reference points are stored in the prediction reference cache. For example, M reference points are selected from the points with encoded attribute information according to the sorting order of the point cloud. Another example is to randomly sample from the sorted points with encoded attribute information to obtain M attribute-encoded points as the M reference points.

[0544] In some embodiments, when encoding attributes of a point cloud, the point cloud is layered, for example, by constructing a Level of Detail (LOD). When encoding attributes of the current point in a certain layer, M reference points can be selected from the current LOD layer containing the current point. For example, the encoder determines whether the current point cloud should incorporate in-LOD layer prediction. If it is determined that in-LOD layer prediction is initiated, then points within 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 as M reference points for the current point in the prediction reference cache. It is important to note that when the number of LOD layers is 1, in-LOD layer prediction is always used.

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

[0546] S202-A1. Determine the set of prediction reference points corresponding to the current point. The set of prediction reference points includes multiple reference points.

[0547] S202-A2: Based on the first parameter, select M reference points from the set of predicted reference points.

[0548] 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 prediction reference point set corresponding to the current point. Existing methods, when predicting the attributes of the current point, store all reference points in this prediction reference point set into a prediction reference cache, which consumes a large amount of memory, leaving less memory for other calculations on the encoder and thus reducing encoding efficiency. To solve this technical problem, this embodiment controls the size of the prediction reference cache through a first parameter. When predicting the attribute information of each point in the point cloud, M reference points are stored in the prediction reference cache each time, avoiding excessive memory consumption by the prediction reference cache and thus improving the encoding efficiency of the encoder.

[0549] For example, taking intra-frame nearest neighbor lookup as an example, during the entire LOD partitioning process, there are three sets: O(k), L(k), and I(k). Here, k is the index of the LOD layer during partitioning, and I(k) is the input point set during the current LOD layer partitioning. After LOD partitioning, sets O(k) and L(k) are obtained. Set O(k) stores the sampled point set, and L(k) is the point set in the current LOD layer. For example, since the entire LOD partitioning process is based on Morton codes, O(k), L(k), and I(k) store the Morton code indices corresponding to the points. During inter-layer nearest neighbor lookup, points in set L(k) are searched for their nearest neighbors in set O(k).

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

[0551] In some embodiments, during intra-frame prediction, the set of points already encoded in the same layer of LOD is added to the set of prediction reference points.

[0552] In some embodiments, during inter-frame prediction, at least one point with encoded attributes in the reference frame of the current point can be added to the prediction reference point set.

[0553] In the embodiments of this application, the reference frame of the current point can be understood as the reference frame of the current frame in which the current point is located.

[0554] The embodiments of this application do not limit the number of reference frames for the current point; that is, the current point includes one or more reference frames.

[0555] In some embodiments, the reference frame for the current point includes the forward reference frame of the current frame.

[0556] In some embodiments, the reference frame for the current point includes the backward reference frame of the current frame.

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

[0558] As shown above, regardless of whether intra-frame nearest neighbor lookup, inter-frame nearest neighbor lookup, or a combination of both, the set of prediction reference points can be determined for the current point. This set of prediction reference points typically includes more than M points whose attribute information has been encoded.

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

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

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

[0562] Method 2: Select M reference points from the prediction reference point set based on the indices of each reference point in the prediction reference point set. For example, if the points in the prediction reference point set are sorted according to the Morton code, then several points with indices larger than the current point's index and several points with indices smaller than the current point's index can be selected from the prediction reference point set, for a total of M points as the M reference points corresponding to the current point.

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

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

[0565] The encoding end determines M reference points based on the first parameter according to the above steps, and stores the M reference points in the prediction reference cache, and then executes the following step S203.

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

[0567] Based on the first parameter, the encoding end 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 current point is used to predict the attribute and obtain the attribute prediction value of the current point.

[0568] This application does not limit the specific method by which the encoding end determines the attribute prediction value of the current point based on the reference points included in the prediction reference cache.

[0569] In some embodiments, as described above, in order to reduce the memory footprint of the prediction reference cache, the number of reference points included in the prediction reference cache is reduced; that is, a fixed number of M reference points are stored in the prediction reference cache each 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 the nearest neighbors of the current point to predict the attribute information of the current point.

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

[0571] S203-A: Among the reference points included in the prediction reference cache, find at least one nearest neighbor of the current point.

[0572] S203-B: Determine the predicted attribute value of the current point based on the attribute information of at least one nearest neighbor point.

[0573] In this embodiment, when the encoder performs attribute prediction on the current point, it searches for at least one nearest neighbor 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 (i.e. attribute reconstruction value) of the at least one nearest neighbor point to obtain the attribute prediction value of the current point.

[0574] In the embodiments of this application, the methods for finding at least one nearest neighbor of the current point among the reference points included in the prediction reference cache include, but are not limited to, the following:

[0575] Method 1: In the intra-frame inter-layer nearest neighbor lookup, the reference points included in the prediction reference buffer include points from LOD layers previously 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 lookup in the LOD layers previously encoded before the current LOD layer. For example, it searches for reference points included in spatial blocks that are coplanar, collinear, or inter-point with the current block, and uses these reference points as at least one nearest neighbor of the current point.

[0576] Method 2, the above S203-A includes the following steps:

[0577] S203-A1. In the set of predicted reference points, determine the first reference point corresponding to the current point;

[0578] S203-A2: Based on the first reference point, find at least one nearest neighbor point of the current point among the reference points included in the prediction reference cache.

[0579] In this method 2, the encoder first determines a reference point from the reference points included in the prediction reference point set as the first reference point corresponding to the current point. Then, based on the first reference point, it searches for at least one nearest neighbor point of the current point from the reference points included in the prediction reference cache.

[0580] This application does not limit the specific method by which the encoding end determines the first reference point corresponding to the current point in the set of prediction reference points.

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

[0582] In one example, the encoder and decoder default to using one of the reference points in the predicted reference point set as the first reference point for the current point. In another example, the reference points in the predicted reference point set are sorted based on their indices, so that the first, second, or nth point in the predicted reference point set can be used as the first reference point for the current point, where n is a positive integer less than or equal to M.

[0583] In one example, the encoder identifies 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 instance, if the current point's index is i, a search is performed in the predicted reference point set, and the first reference point (j) whose index is greater than or equal to the current point's index is selected as the current point's first reference point.

[0584] The embodiments of this application do not limit the specific representation of the indexes for the current point and the reference point.

[0585] For example, if the point cloud is sorted based on the Morton code order in this application embodiment, then the index of the point can be the Morton code index of the point.

[0586] For example, if the point cloud is sorted based on Hilbert order in the embodiments of this application, the index of the point can be the Hilbert index of the point.

[0587] After determining the first reference point corresponding to the current point based on the above steps, the encoding end executes the above steps S203-A2, and based on the first reference point, searches for at least one nearest neighbor point of the current point among the reference points included in the prediction reference cache.

[0588] For example, such as Figure 10 As shown, assuming the current point is the i-th point in the current frame, or in other words, the index of the current point is i, and the index of the first reference point is j, and assuming the indices of the M reference points included in the prediction reference buffer are: ... , , , , , ... The encoder finds at least one nearest neighbor of the current point from these M reference points. For example, let the first reference point be P. j The center searches within a preset search range to obtain at least one nearest neighbor of the current point.

[0589] The embodiments of this application do not limit the specific method by which the encoding end searches for at least one nearest neighbor point of the current point among the reference points included in the prediction reference cache based on the first reference point.

[0590] In one possible implementation, the encoder searches for at least one reference point closest to the current point in the prediction reference cache near the first reference point, and uses it as at least one nearest neighbor of the current point.

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

[0592] S203-A21. Based on the first reference point, determine whether to update the prediction reference cache;

[0593] S203-A22. If it is determined that the prediction reference cache needs to be updated, then based on the remaining reference points in the prediction reference point set, at least one reference point included in the prediction reference cache is updated to obtain the updated prediction reference cache.

[0594] S203-A23. Among the reference points included in the updated prediction reference cache, find at least one nearest neighbor of the current point.

[0595] 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. That is, the encoder determines whether at least one nearest neighbor of the current point can be accurately determined from the reference points currently cached in the prediction reference cache. If it is determined that at least one nearest neighbor of the current point cannot be determined from the reference points included in the current prediction reference cache, then the current prediction reference cache is updated.

[0596] If the encoder determines that the prediction reference cache does not need to be updated, then it searches for at least one nearest neighbor of the current point from the M reference points included in the current prediction reference cache.

[0597] If the encoder 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 the updated prediction reference cache. Then, it searches for at least one nearest neighbor point of the current point among the reference points included in the updated prediction reference cache.

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

[0599] This application does not limit the specific method by which the encoding end determines whether to update the prediction reference cache based on the first reference point.

[0600] In some embodiments, S203-A21 includes: if the first reference point is the last reference point or one of the last few reference points in the current prediction reference cache, then determine to update the current prediction reference cache.

[0601] In some embodiments, S203-A21 includes:

[0602] 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, then it is determined that the prediction reference cache should be updated, where the first value is an integer.

[0603] In step S203-A211, the encoder adds the index of the first reference point to the first numerical value K to obtain a sum, denoted as A. Then, it compares this sum A with the index B of the last reference point in the current prediction reference cache to determine whether the sum A is greater than or equal to the index B of the last reference point in the current prediction reference cache.

[0604] If the sum A is less than the index B of the last reference point in the current prediction reference cache, it means that the encoder can find at least one nearest neighbor of the current point among the reference points included in the current prediction reference cache. In this case, it is determined not to update the current prediction reference cache.

[0605] If the sum A is greater than or equal to the index B of the last reference point in the current prediction reference cache, it indicates that the reference points included in the current prediction reference cache are insufficient to find at least one nearest neighbor of the current point, or that the reference points included in the current prediction reference cache do not include the nearest neighbor of the current point, or that the number of nearest neighbors included in the current point is insufficient. In this case, it is determined that the current prediction reference cache needs to be updated.

[0606] In this application embodiment, there is no restriction on the specific value of the first numerical value K, as long as it is an integer, such as 0, 1, 2, 3, etc.

[0607] The following description uses 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 a preset search range value is only an example, and the value of the first value in the embodiments of this application includes, but is not limited to, these two cases.

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

[0609] 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, then it is determined that the prediction reference cache should be updated.

[0610] In Case 1, after determining the first reference point corresponding to the current point based on the above steps, the encoder compares the index of the first reference point with the index of the last reference point in the reference points included in the current prediction reference cache.

[0611] In some embodiments, if the index of the first reference point is less than the index of the last reference point in the reference points included in the current prediction reference cache, it is determined that the prediction reference cache will not be updated, and instead, at least one nearest neighbor point of the current point will be found directly among the reference points included in the current prediction reference cache.

[0612] 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. Figure 11 As shown, assuming the index of the first reference point is j, and the index of the last reference point in the current prediction reference cache is also j, the encoder determines to update the current prediction reference cache.

[0613] In Case 1, after the encoder determines that the current prediction reference cache needs to be updated, it executes the steps S203-A22 above, updating at least one reference point in the prediction reference cache based on the remaining reference points in the prediction reference point set, to obtain the updated prediction reference cache.

[0614] In this embodiment of the application, the encoding end updates at least one of the M reference points included in the prediction reference cache, and the specific method for obtaining the updated prediction reference cache is not limited.

[0615] In one possible implementation, the encoder directly deletes all reference points in the current prediction reference cache and selects M new reference points from the remaining reference points in the prediction reference point set. These M new reference points are then stored in the prediction reference point set. In other words, 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 in the prediction reference cache and selects M new reference points to store in the prediction reference cache, achieving a fast update of the entire prediction reference cache. This allows the encoder to find at least one nearest neighbor point of the current point from the completely updated prediction reference cache.

[0616] In one example of this implementation, the encoder selects M reference points from the remaining reference points in the prediction reference point set whose indices are less than or equal to the index of the first reference point, and stores them as new reference points in the prediction reference point set.

[0617] For example, the prediction reference point set includes M points, sorted by index from smallest to largest as follows: P0, P1, ..., Pj-1, Pj, Pj+1, ... Assume the current prediction reference cache has M reference points: 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. Therefore, it is determined that the current prediction reference cache needs to be updated.

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

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

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

[0621] 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 predicted reference point set;

[0622] S203-A22-a2: Using at least one second reference point, update at least one reference point in the prediction reference cache to obtain the updated prediction reference cache.

[0623] In this implementation, if the encoder 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 in the prediction reference point 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 in the prediction reference point set and denoted as at least one second reference point. Then, at least one second reference point is used to update at least one reference point in the prediction reference cache to obtain the updated prediction reference cache.

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

[0625] In some embodiments, the encoder selects M second reference points from the remaining reference points in the prediction reference point 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 selected M second reference points into the prediction reference cache. In this way, the encoder finds at least one nearest neighbor point of the current point from the M second reference points included in the updated prediction reference cache.

[0626] This application does not restrict the specific method by which the encoding end selects M second reference points from the remaining reference points in the prediction reference point set based on the index of the first reference point.

[0627] In one example, the encoder selects M reference points from the remaining reference points in the predicted reference point set whose indices are greater than or equal to the index of the first reference point, and uses them as M second reference points.

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

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

[0630] 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, then the reference point with index [j, j+M] is selected from the set of prediction reference points as M second reference points.

[0631] In this embodiment, the encoding end selects M second reference points from the remaining reference points in the prediction reference point set based on the index of the first reference point, and then executes the steps S203-A22-a2 described above, that is, deleting the M reference points in the prediction reference cache and adding the M determined second reference points to the prediction reference cache, as follows. Figure 12 The updated prediction reference cache is shown.

[0632] The above describes the process of updating the prediction reference cache at the encoding end when the first value is 0 in case 1.

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

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

[0635] 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, then it is determined that the prediction reference cache should be updated.

[0636] In scenario 2, based on the steps described above, the encoder determines the first reference point corresponding to the current point, then adds the index j of the first reference point to the preset search range value searchRange to obtain a first sum j + searchRange. Next, the first sum j + searchRange is compared with the index of the last reference point included in the current prediction reference cache to determine whether to update the current prediction reference cache.

[0637] In some embodiments, if the first sum 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 that the prediction reference cache will not be updated, and instead, at least one nearest neighbor point of the current point will be searched directly among the reference points included in the current prediction reference cache.

[0638] In some embodiments, if the first sum 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 the index of the first reference point is j, the preset search range value is searchRange, and the first sum 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.

[0639] In case 2, after the encoder determines that the current prediction reference cache needs to be updated, it executes the steps S203-A22 above, 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 the updated prediction reference cache.

[0640] In this embodiment of the application, the encoding end updates at least one of the M reference points included in the prediction reference cache, and the specific method for obtaining the updated prediction reference cache is not limited.

[0641] In one possible implementation, the encoder directly deletes all reference points in the current prediction reference cache and selects M new reference points from the remaining reference points in the prediction reference point set. These M new reference points are then stored in the prediction reference point set. In other words, 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 value, the encoder directly deletes all M reference points in the prediction reference cache and selects M new reference points to store in the prediction reference cache, thus achieving a fast update of the entire prediction reference cache. In this way, the encoder can find at least one nearest neighbor point of the current point from the completely updated prediction reference cache.

[0642] In one example of this implementation, the encoder selects M reference points from the remaining reference points in the prediction reference point set whose indices are less than or equal to the index of the first reference point, and stores them as new reference points in the prediction reference point set.

[0643] For example, the set of prediction reference points includes M points, sorted by index from smallest to largest as follows: P0, P1, ..., Pj-1, Pj, Pj+1, ... Assume the current prediction reference cache contains M reference points: P0, P1, ..., PM-1, with the first reference point corresponding to the current point being Pj, and the first sum j + searchRange being greater than M-1. In this case, 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. Therefore, it is determined that the current prediction reference cache needs to be updated.

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

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

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

[0647] 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 predicted reference point set;

[0648] S203-A22-b2, Using at least one third reference point, update at least one reference point included in the prediction reference cache to obtain the updated prediction reference cache.

[0649] In this implementation, if the encoder 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 in the prediction reference point 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 in the prediction reference point set and is denoted as at least one third reference point. Then, at least one reference point in the prediction reference cache is updated using these at least one third reference point to obtain the updated prediction reference cache.

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

[0651] In some embodiments, the encoder selects M third reference points from the remaining reference points in the prediction reference point 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 selected M third reference points into the prediction reference cache. In this way, the encoder searches for at least one nearest neighbor point of the current point from the M third reference points included in the updated prediction reference cache.

[0652] This application does not limit the specific method by which the encoding end selects at least one third reference point from the remaining reference points in the set of predicted reference points based on the index of the first reference point.

[0653] In one example, the encoder selects at least one reference point from the remaining reference points in the predicted reference point set, whose index is greater than or equal to the index of the first reference point, as at least one third reference point.

[0654] In one example, the encoder selects P third reference points from the remaining reference points in the predicted reference point 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 predicted reference cache.

[0655] 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 cache plus 1. For example, if the index of the last reference point in the prediction reference cache is 99, then the index of the point with the smallest index among these P third reference points is 100 or greater than 100.

[0656] 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 than 166.

[0657] For example, suppose the prediction reference cache contains 100 points, with indices ranging from 0 to 99. Assume the index of the first reference point is 67, and the preset search range is 40. The sum of the first reference point's index and the preset search range is 107. Since this sum is greater than the index of the last reference point in the prediction reference cache, an update to the current prediction reference cache is determined. 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 point set.

[0658] In this embodiment, the encoding end selects P third reference points from the remaining reference points in the prediction reference point set based on the index of the first reference point, and then performs the steps S203-A22-b2 described above. For example, it deletes the P points before the first reference point in the prediction reference cache and adds the P third reference points to the prediction reference cache to obtain the updated prediction reference cache.

[0659] As described 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 this first sum is greater than or equal to the index of the last reference point in the prediction reference cache, then based on the index of the first reference point, P third reference points are selected from the remaining reference points in the prediction reference point set. Next, the encoder deletes the P points preceding the first reference point from the prediction cache and adds the aforementioned P third reference points to the prediction reference cache, thus updating the prediction reference cache.

[0660] In this example, the ways in which the encoder updates the prediction reference cache using P third reference points include, but are not limited to, the following examples:

[0661] 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, it stores the P third reference points determined above after the first reference point, resulting in an updated prediction reference cache. At this point, the updated prediction reference cache includes M reference points, which include MP old reference points and the P third reference points determined above.

[0662] Example 2: The encoder deletes P points before the first reference point in the prediction reference cache. The MP points after the first reference point are not moved; instead, the P determined third reference points are directly stored in the positions before the first reference point, resulting in an updated prediction reference cache. At this point, the updated prediction reference cache includes M reference points, including MP old reference points and the aforementioned P determined third reference points. The positions of these MP old reference points in the prediction reference cache remain unchanged.

[0663] In some embodiments of Case 2, when the encoder 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 set of prediction reference points, storing them in the prediction reference cache. In one example, the smallest index among these M new reference points is less than or equal to the index of the first parameter. In another example, the smallest index among these M new reference points is greater than or equal to the index of the last point in the current prediction reference cache.

[0664] The above description uses an example of a first value of 0 or a preset search range value to illustrate the updating of the prediction reference cache at the encoding end. It should be noted that the embodiments of this application do not limit the specific process of updating the prediction reference cache at the encoding end.

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

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

[0667] Based on the above steps, the encoding end updates the prediction reference cache and then executes the steps S203-A23 above, searching for at least one nearest neighbor point of the current point among the reference points included in the updated prediction reference cache.

[0668] In this embodiment, the encoding end searches for at least one nearest neighbor of the current point from the prediction reference cache in the same way as searching for at least one nearest neighbor of the current point from the updated prediction reference cache. The following description uses the example of the encoding end searching for at least one nearest neighbor of the current point from the prediction reference cache.

[0669] The embodiments of this application do not limit the specific method by which the encoding end searches for at least one nearest neighbor of the current point from the prediction reference cache.

[0670] In one example, if the predicted reference cache includes the inter-layer encoded points of the current point in the inter-layer nearest neighbor lookup, the encoder obtains the corresponding spatial block from the coordinates of the current point. Then, it performs a nearest neighbor lookup in the previously encoded LOD layer to find spatial blocks that are coplanar, collinear, or inter-point with the current block to obtain at least one nearest neighbor point of the current point.

[0671] In one example, if the predicted reference cache includes encoded points within the layer during the intra-layer nearest neighbor lookup, the encoder searches for at least one nearest neighbor of the current point from among these intra-layer encoded points.

[0672] In one example, if the predicted reference buffer includes encoded points in the reference frame of the current point during the inter-frame nearest neighbor lookup, the encoder can find at least one nearest neighbor of the current point from these inter-frame encoded points.

[0673] It should be noted that the specific method by which the encoder searches for at least one nearest neighbor of the current point in the prediction reference cache can be referred to the description in the above embodiments, and will not be repeated here.

[0674] When the encoding end determines at least one nearest neighbor of the current point based on the above steps, it executes step S203-B above to determine the attribute prediction value of the current point based on the attribute information of at least one nearest neighbor.

[0675] This application does not limit the specific method by which the encoding end determines the attribute prediction value of the current point based on the attribute information of at least one nearest neighbor point.

[0676] In one example, if the above-mentioned at least one nearest neighbor includes a nearest neighbor, the encoder determines the attribute information (i.e., attribute reconstruction value) of that nearest neighbor as the attribute prediction value of the current point.

[0677] For example, if the above-mentioned at least one nearest neighbor includes multiple nearest neighbors, then the average value of the attribute information of these multiple nearest neighbors is determined as the attribute prediction value of the current point.

[0678] For example, if the above-mentioned at least one nearest neighbor includes multiple nearest neighbors, then the weighted average of the attribute information of these multiple nearest neighbors is determined as the attribute prediction value of the current point.

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

[0680] The point cloud encoding method provided in this application embodiment, during attribute encoding, first determines a first parameter, which indicates the maximum number M of reference points that the prediction reference cache can cache. Then, based on the first parameter, M reference points are determined and stored in the prediction reference cache. Finally, based on the reference points included in the prediction reference cache, the attribute prediction value of the current point is determined. That is, this application embodiment uses the first parameter to indicate the size of the prediction reference cache, making the size of the prediction reference cache fixed and not dynamically changing with the number of reference points, thereby saving memory resources of the encoding device and improving the encoding performance of point cloud attributes.

[0681] The preferred embodiments of this application have been described in detail above with reference to the accompanying drawings. However, this application is not limited to the specific details of the above embodiments. Within the scope of the technical concept of this application, various simple modifications can be made to the technical solutions of this application, and these simple modifications all fall within the protection scope of this application. For example, the various specific technical features described in the above specific embodiments can be combined in any suitable manner without contradiction. To avoid unnecessary repetition, this application will not describe the various possible combinations separately. Furthermore, various different embodiments of this application can also be arbitrarily combined, as long as they do not violate the spirit of this application, they should also be considered as the content disclosed in this application.

[0682] It should also be understood that, in the various method embodiments of this application, the sequence number of each process does not imply the order of execution. 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 this application. Furthermore, in the embodiments of this application, the term "and / or" is merely a description of the relationship between related objects, indicating that three relationships can exist. Specifically, A and / or B can represent: A existing alone, A and B existing simultaneously, and B existing alone. Additionally, the character " / " in this document generally indicates that the preceding and following related objects have an "or" relationship.

[0683] The above text combined Figures 9 to 13 The method embodiments of this application are described in detail below, in conjunction with... Figures 14 to 15 The following describes in detail the device embodiments of this application.

[0684] Figure 14 This is a schematic block diagram of the point cloud decoding device provided in the embodiments of this application.

[0685] like Figure 14 As shown, the point cloud decoding device 10 may include:

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

[0687] The cache unit 12 is used to determine M reference points based on the first parameter and store the M reference points in the prediction reference cache;

[0688] The prediction unit 13 is used to determine the attribute prediction value of the current point based on the reference points included in the prediction reference cache.

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

[0690] In some embodiments, the prediction unit 13 is specifically configured to find at least one nearest neighbor of the current point among the reference points included in the prediction reference cache; and determine the attribute prediction value of the current point based on the attribute information of the at least one nearest neighbor.

[0691] In some embodiments, the prediction unit 13 is specifically configured to determine a first reference point corresponding to the current point in the set of prediction reference points; and based on the first reference point, to find at least one nearest neighbor point of the current point among the reference points included in the prediction reference cache.

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

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

[0694] In some embodiments, the prediction unit 13 is specifically configured to determine, based on the first reference point, whether to update the prediction reference cache; if it is determined that the prediction reference cache should be updated, 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; and among the reference points included in the updated prediction reference cache, at least one nearest neighbor point of the current point is searched.

[0695] 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 the first value is greater than or equal to the index of the last reference point in the prediction reference cache, wherein the first value is an integer.

[0696] In some embodiments, if the first value is 0, the prediction unit 13 is specifically used 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.

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

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

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

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

[0701] In some embodiments, the prediction unit 13 is specifically used to delete 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.

[0702] In some embodiments, the prediction unit 13 is specifically configured to determine that the prediction reference cache should not be updated if the index of the first reference point is less than the index of the last reference point in the prediction reference cache.

[0703] In some embodiments, the first value is a preset search range value. 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 prediction reference cache, then it is determined to update the prediction reference cache.

[0704] In some embodiments, the prediction unit 13 is specifically used to obtain at least one third reference point from the remaining reference points in the prediction reference point set based on the index of the first reference point; and to update 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.

[0705] In some embodiments, the prediction unit 13 is specifically used to select P third reference points from the remaining reference points in the prediction reference point set based on the index of the first reference point, wherein 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.

[0706] 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 cache plus 1.

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

[0708] In some embodiments, the prediction unit 13 is specifically used 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.

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

[0710] In some embodiments, the parameter determination unit 11 is specifically used to decode the bitstream to obtain the first parameter.

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

[0712] It should be understood that the device embodiments and method embodiments can correspond to each other, and similar descriptions can be found in the method embodiments. To avoid repetition, further details are omitted here. Specifically, Figure 14 The point cloud decoding device 10 shown can correspond to the corresponding subject in the point cloud decoding method of the present application embodiment, and the aforementioned and other operations and / or functions of each unit in the point cloud decoding device 10 are respectively to implement the corresponding process in the point cloud decoding method. For the sake of brevity, they will not be described in detail here.

[0713] Figure 15This is a schematic block diagram of the point cloud encoding device provided in the embodiments of this application.

[0714] like Figure 15 As shown, the point cloud encoding device 20 includes:

[0715] The parameter determination unit 21 is used to determine a first parameter, which indicates the maximum number of reference points M that the prediction reference cache can cache, where M is a positive integer.

[0716] Cache unit 22 is used to determine M reference points based on the first parameter and store the M reference points in the prediction reference cache;

[0717] The prediction unit 23 is used to determine the attribute prediction value of the current point based on the reference points included in the prediction reference cache.

[0718] In some embodiments, the caching unit 22 is specifically used to determine the set of predicted reference points corresponding to the current point, the set of predicted reference points including multiple reference points; and to select M reference points from the set of predicted reference points based on the first parameter.

[0719] In some embodiments, the prediction unit 23 is specifically configured to find at least one nearest neighbor of the current point among the reference points included in the prediction reference cache; and determine the attribute prediction value of the current point based on the attribute information of the at least one nearest neighbor.

[0720] In some embodiments, the prediction unit 23 is specifically configured to determine a first reference point corresponding to the current point in the set of prediction reference points; and based on the first reference point, to find at least one nearest neighbor point of the current point among the reference points included in the prediction reference cache.

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

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

[0723] In some embodiments, the prediction unit 23 is specifically configured to determine whether to update the prediction reference cache based on the first reference point; if it is determined that the prediction reference cache should be updated, 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; and among the reference points included in the updated prediction reference cache, at least one nearest neighbor point of the current point is searched.

[0724] 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, wherein the first value is an integer.

[0725] In some embodiments, if the first value is 0, the prediction unit 23 is specifically used 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.

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

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

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

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

[0730] In some embodiments, the prediction unit 23 is specifically used to delete 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.

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

[0732] In some embodiments, the first value is a preset search range value. 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 prediction reference cache, then it is determined to update the prediction reference cache.

[0733] In some embodiments, the prediction unit 23 is specifically used to obtain at least one third reference point from the remaining reference points in the prediction reference point set based on the index of the first reference point; and to update 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.

[0734] In some embodiments, the prediction unit 23 is specifically used to select P third reference points from the remaining reference points in the prediction reference point set based on the index of the first reference point, wherein 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.

[0735] 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 cache plus 1.

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

[0737] In some embodiments, the prediction unit 23 is specifically used 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.

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

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

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

[0741] It should be understood that the device embodiments and method embodiments can correspond to each other, and similar descriptions can be found in the method embodiments. To avoid repetition, further details are omitted here. Specifically, Figure 15 The point cloud encoding device 20 shown can correspond to the corresponding subject in the point cloud encoding method of the present application embodiment, and the aforementioned and other operations and / or functions of each unit in the point cloud encoding device 20 are respectively to implement the corresponding process in the point cloud encoding method. For the sake of brevity, they will not be described in detail here.

[0742] The apparatus and system of the embodiments of this application have been described above from the perspective of functional units in conjunction with the accompanying drawings. It should be understood that these functional units can be implemented in hardware, in software instructions, or in a combination of hardware and software units. Specifically, the steps of the method embodiments in this application can be completed by integrated logic circuits in the processor's hardware and / or by software instructions. The steps of the methods disclosed in the embodiments of this application can be directly embodied as being executed by a hardware decoding processor, or 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 random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, etc. This storage medium is located in memory, and the processor reads information from the memory and, in conjunction with its hardware, completes the steps in the above method embodiments.

[0743] Figure 16 This is a schematic block diagram of the electronic device provided in the embodiments of this application.

[0744] like Figure 16 As shown, the electronic device 30 can be the point cloud decoding device or the point cloud encoding device described in the embodiments of this application. The electronic device 30 may include:

[0745] The system includes a memory 31 and a processor 32. The memory 31 stores a computer program 34 and transfers the computer program 34 to the processor 32. In other words, the processor 32 can retrieve and run the computer program 34 from the memory 31 to implement the methods described in the embodiments of this application.

[0746] For example, the processor 32 can be used to execute the steps in the method 200 described above according to the instructions in the computer program 34.

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

[0748] General purpose processors, digital signal processors Application-Specific Integrated Circuits Field Programmable Gate Array Or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc.

[0749] In some embodiments of this application, the memory 31 includes, but is not limited to:

[0750] 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), used as an external cache. By way of example, but not limitation, many forms of RAM are available, such as Static RAM (SRAM), Dynamic RAM (DRAM), Synchronous DRAM (SDRAM), Double Data Rate SDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM), Synchronous Link DRAM (SLDRAM), and Direct Rambus RAM (DR RAM).

[0751] In some embodiments of this application, the computer program 34 may be divided into one or more units, which are stored in the memory 31 and executed by the processor 32 to perform the method provided in this application. The one or more units may be a series of computer program instruction segments capable of performing a specific function, which describe the execution process of the computer program 34 in the electronic device 30.

[0752] like Figure 16 As shown, the electronic device 30 may further include:

[0753] Transceiver 33, which can be connected to processor 32 or memory 31.

[0754] 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 antennas, and the number of antennas may be one or more.

[0755] It should be understood that the various components in the electronic device 30 are connected through a bus system, which includes a data bus, a power bus, a control bus, and a status signal bus.

[0756] Figure 17 This is a schematic block diagram of the point cloud encoding and decoding system provided in the embodiments of this application.

[0757] like Figure 17 As shown, 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 embodiments of this application, and the point cloud decoder 42 is used to execute the point cloud decoding method involved in the embodiments of this application.

[0758] This application also provides a bitstream generated according to the above encoding method.

[0759] This application also provides a computer storage medium storing a computer program thereon, which, when executed by a computer, enables the computer to perform the methods of the above-described method embodiments. Alternatively, embodiments of this application also provide a computer program product containing instructions that, when executed by a computer, cause the computer to perform the methods of the above-described method embodiments.

[0760] When implemented using software, it can be implemented entirely or partially as a computer program product. This computer program product includes one or more computer instructions. When these computer program instructions are loaded and executed on a computer, all or part of the processes or functions described in the embodiments of this application are generated. 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. For example, the computer instructions can be transmitted from one website, computer, server, or data center to another via wired (e.g., coaxial cable, fiber optic, digital subscriber line (DSL)) or wireless (e.g., infrared, wireless, microwave, etc.) means. The computer-readable storage medium can be any available medium accessible to a computer or a data storage device such as a server or data center that integrates one or more available media. The available medium can be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), an optical medium (e.g., digital video disc (DVD)), or a semiconductor medium (e.g., solid-state disk (SSD)).

[0761] Those skilled in the art will recognize that the units and algorithm steps of the various examples 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 implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art 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.

[0762] In the several embodiments provided in this application, it should be understood that the disclosed systems, apparatuses, and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed. Furthermore, the coupling or direct coupling or communication connection shown or discussed may be through some interfaces; the indirect coupling or communication connection between apparatuses or units may be electrical, mechanical, or other forms.

[0763] The units described as separate components may or may not be physically separate. 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 can be selected to achieve the purpose of this embodiment according to actual needs. For example, the functional units in the various embodiments of this application may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit.

[0764] The above description is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any variations or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this application should be included within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.

Claims

1. A point cloud decoding method, characterized in that, include: Determine a first parameter, which indicates the maximum number of reference points M that the prediction reference cache can cache, where M is a positive integer; Based on the first parameter, M reference points are determined and stored in the prediction reference cache; Based on the reference points included in the prediction reference cache, the attribute prediction value of the current point is determined.

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

3. The method according to claim 2, characterized in that, Determining the attribute prediction value of the current point based on the reference points included in the prediction reference cache includes: Among the reference points included in the prediction reference cache, at least one nearest neighbor of the current point is found; Based on the attribute information of the at least one nearest neighbor point, determine the attribute prediction value of the current point.

4. The method according to claim 3, characterized in that, The step of finding at least one nearest neighbor of the current point among the reference points included in the prediction reference cache includes: In the set of predicted reference points, determine the first reference point corresponding to the current point; Based on the first reference point, at least one nearest neighbor of the current point is found among the reference points included in the prediction reference cache.

5. The method according to claim 4, characterized in that, Determining the first reference point corresponding to the current point from the set of predicted reference points includes: The first reference point in the set of predicted reference points 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 step of finding at least one nearest neighbor of the current point among the reference points included in the prediction reference cache based on the first reference point includes: Based on the first reference point, determine whether to update the prediction reference cache; If it is determined that the prediction reference cache needs to be updated, 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 the updated prediction reference cache. Among the reference points included in the updated prediction reference cache, find at least one nearest neighbor of the current point.

8. The method according to claim 7, characterized in that, The step of determining whether to update the prediction reference cache based on the first reference point includes: 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, then it is determined that the prediction reference cache should be updated, where the first value is an integer.

9. The method according to claim 8, characterized in that, If the first value is 0, then 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, then it is determined to update the prediction reference cache, including: 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, then it is determined that the prediction reference cache should be updated.

10. The method according to claim 9, characterized in that, The step of updating 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, at least one second reference point is obtained from the remaining reference points in the predicted reference point set; Using the at least one second reference point, at least one reference point in the prediction reference cache is updated to obtain the updated prediction reference cache.

11. The method according to claim 10, characterized in that, The step of obtaining at least one second reference point from the remaining reference points in the predicted reference point set based on the index of the first reference point includes: Based on the index of the first reference point, M second reference points are selected from the remaining reference points in the predicted reference point 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 M.

14. The method according to claim 11, characterized in that, The step of updating the prediction reference cache using the at least one second reference point to obtain the updated prediction reference cache includes: Delete M reference points from the prediction reference cache and add the M second reference points to the prediction reference cache to obtain the updated prediction reference cache.

15. The method according to claim 7, characterized in that, The step of determining whether to update the prediction reference cache based on the first reference point includes: If the index of the first reference point is less than the index of the last reference point in the prediction reference cache, then it is determined that the prediction reference cache will not be updated.

16. The method according to claim 8, characterized in that, The first value is a preset search range value. The step of determining 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 includes: Add the index of the first reference point to the preset search range value to obtain the 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, then it is determined that the prediction reference cache should be updated.

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

18. The method according to claim 17, characterized in that, The step of obtaining at least one third reference point from the remaining reference points in the predicted reference point set based on the index of the first reference point includes: Based on the index of the first reference point, P third reference points are selected from the remaining reference points in the predicted reference point 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 predicted 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 cache 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 step of updating at least one reference point included in the prediction reference cache using the at least one third reference point to obtain the updated prediction reference cache includes: Delete the P points preceding 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.

22. The method according to claim 16, characterized in that, The step of determining whether to update the prediction reference cache based on the first reference point includes: Based on the first reference point and the first parameter, determine whether to update the prediction reference cache; The step of determining whether to update the prediction reference cache based on the first reference point and the first parameter includes: If the first sum is less than the index of the last reference point in the prediction reference cache, then it is determined that the prediction reference cache will not be updated.

23. The method according to any one of claims 1-22, characterized in that, Determining the first parameter includes: Decode the bitstream to obtain the first parameter.

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

25. A point cloud encoding method, characterized in that, include: Determine a first parameter, which indicates the maximum number of reference points M that the prediction reference cache can cache, where M is a positive integer; Based on the first parameter, M reference points are determined and stored in the prediction reference cache; Based on the reference points included in the prediction reference cache, the attribute prediction value of the current point is determined.

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

27. The method according to claim 26, characterized in that, Determining the attribute prediction value of the current point based on the reference points included in the prediction reference cache includes: Among the reference points included in the prediction reference cache, at least one nearest neighbor of the current point is found; Based on the attribute information of the at least one nearest neighbor point, determine the attribute prediction value of the current point.

28. The method according to claim 27, characterized in that, The step of finding at least one nearest neighbor of the current point among the reference points included in the prediction reference cache includes: In the set of predicted reference points, determine the first reference point corresponding to the current point; Based on the first reference point, at least one nearest neighbor of the current point is found among the reference points included in the prediction reference cache.

29. The method according to claim 28, characterized in that, Determining the first reference point corresponding to the current point from the set of predicted reference points includes: The first reference point in the set of predicted reference points 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 step of finding at least one nearest neighbor of the current point among the reference points included in the prediction reference cache based on the first reference point includes: Based on the first reference point, determine whether to update the prediction reference cache; If it is determined that the prediction reference cache needs to be updated, 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 the updated prediction reference cache. Among the reference points included in the updated prediction reference cache, find at least one nearest neighbor of the current point.

32. The method according to claim 31, characterized in that, The step of determining whether to update the prediction reference cache based on the first reference point includes: 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, then it is determined that the prediction reference cache should be updated, where the first value is an integer.

33. The method according to claim 32, characterized in that, If the first value is 0, then 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, then it is determined to update the prediction reference cache, including: 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, then it is determined that the prediction reference cache should be updated.

34. The method according to claim 33, characterized in that, The step of updating 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, at least one second reference point is obtained from the remaining reference points in the predicted reference point set; Using the at least one second reference point, at least one reference point in the prediction reference cache is updated to obtain the updated prediction reference cache.

35. The method according to claim 34, characterized in that, The step of obtaining at least one second reference point from the remaining reference points in the predicted reference point set based on the index of the first reference point includes: Based on the index of the first reference point, M second reference points are selected from the remaining reference points in the predicted reference point 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 M.

38. The method according to claim 35, characterized in that, The step of updating the prediction reference cache using the at least one second reference point to obtain the updated prediction reference cache includes: Delete M reference points from the prediction reference cache and add the M second reference points to the prediction reference cache to obtain the updated prediction reference cache.

39. The method according to claim 31, characterized in that, The step of determining whether to update the prediction reference cache based on the first reference point includes: If the index of the first reference point is less than the index of the last reference point in the prediction reference cache, then it is determined that the prediction reference cache will not be updated.

40. The method according to claim 32, characterized in that, The first value is a preset search range value. The step of determining 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 includes: Add the index of the first reference point to the preset search range value to obtain the 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, then it is determined that the prediction reference cache should be updated.

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

42. The method according to claim 41, characterized in that, The step of obtaining at least one third reference point from the remaining reference points in the predicted reference point set based on the index of the first reference point includes: Based on the index of the first reference point, P third reference points are selected from the remaining reference points in the predicted reference point 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 predicted 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 cache 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 step of updating at least one reference point included in the prediction reference cache using the at least one third reference point to obtain the updated prediction reference cache includes: Delete the P points preceding 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.

46. ​​The method according to claim 40, characterized in that, The step of determining whether to update the prediction reference cache based on the first reference point includes: Based on the first reference point and the first parameter, determine whether to update the prediction reference cache; The step of determining whether to update the prediction reference cache based on the first reference point and the first parameter includes: If the first sum is less than the index of the last reference point in the prediction reference cache, then it is determined that the prediction reference cache will not be updated.

47. The method according to any one of claims 25-46, characterized in that, The method further includes: Write the first parameter into the bitstream.

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

49. A point cloud decoding device, characterized in that, include: A parameter determination unit is used to determine a first parameter, which indicates the maximum number of reference points M that the prediction reference cache can cache, where M is a positive integer. A caching unit is 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 is used to determine a first parameter, which indicates the maximum number of reference points M that the prediction reference cache can cache, where M is a positive integer. A caching unit is 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 used to invoke and run a computer program stored in the memory to perform the method as described in any one of claims 1 to 24 or 25 to 48.

52. A computer-readable storage medium, characterized in that, The computer-readable storage medium stores a computer program and a bitstream, wherein the computer program, when executed by a processor, implements the steps of the point cloud encoding method as described in any one of claims 25 to 48 to generate the bitstream.

Citation Information

Patent Citations

  • Point cloud attribute encoding method, device and system

    CN113179410A

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

    CN114041288A