Point cloud coding method, point cloud decoding method, coders, decoders and storage medium

By determining the filtering coefficients on a point set basis and applying Wiener filtering in point cloud encoding and decoding, the problem of insufficient point cloud reconstruction quality is solved, and the encoding and decoding performance and image quality of point clouds are improved.

WO2026085893A1PCT designated stage Publication Date: 2026-04-30GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 3 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
Filing Date
2024-10-27
Publication Date
2026-04-30

AI Technical Summary

Technical Problem

Existing technologies for point cloud encoding and decoding suffer from insufficient performance in encoding and decoding attribute information, especially in terms of the quality of reconstructed point clouds and the distortion of color attributes, which significantly affects the overall quality of point clouds.

Method used

The filtering coefficients are determined by using point sets of the same type as units, and the reconstructed attribute information is filtered by methods such as Wiener filtering to improve the filtering quality. The filtering coefficients are also reused in multi-frame point clouds to reduce storage and computational overhead.

Benefits of technology

It improves the quality of reconstructed point clouds and encoding/decoding performance, reduces the time and storage resources required for filtering, and enhances the image quality of point clouds.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024127567_30042026_PF_FP_ABST
    Figure CN2024127567_30042026_PF_FP_ABST
Patent Text Reader

Abstract

Provided in the embodiments of the present application are a point cloud coding method, a point cloud decoding method, coders, decoders, and a storage medium. The point cloud decoding method comprises: parsing a code stream, and determining a plurality of groups of filter coefficients of a current frame, the plurality of groups of filter coefficients being in one-to-one correspondence with a plurality of point sets of the current frame; determining whether to perform a filtering operation on a first point set of the current frame, the first point set corresponding to a first group of filtering coefficients among the plurality of groups of filtering coefficients; and if it is determined to perform the filtering operation on the first point set, filtering reconstruction attribute values of points in the first point set on the basis of the first group of filtering coefficients.
Need to check novelty before this filing date? Find Prior Art

Description

Point cloud encoding / decoding methods, codecs, and storage media Technical Field

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

[0002] In geometry-based point cloud compression (G-PCC) encoding and decoding frameworks, the geometric information and attribute information of point clouds are encoded and decoded separately. Improving the encoding and decoding performance of attribute information is a problem that needs to be solved.

[0003] Summary of the Invention

[0004] This application provides a point cloud encoding / decoding method, an encoder / decoder, and a storage medium. The various aspects involved in this application are described below.

[0005] Firstly, a point cloud decoding method is provided, applied to a decoder, including: parsing the bitstream, determining multiple sets of filtering coefficients for the current frame, wherein the multiple sets of filtering coefficients correspond one-to-one with multiple point sets for the current frame; determining whether to perform a filtering operation on the first point set of the current frame, wherein the first point set corresponds to the first set of filtering coefficients in the multiple sets of filtering coefficients; if it is determined that a filtering operation should be performed on the first point set, then filtering the reconstructed attribute values ​​of the points in the first point set according to the first set of filtering coefficients.

[0006] Secondly, a point cloud encoding method is provided for use in an encoder, comprising: determining multiple sets of filtering coefficients based on multiple point sets of the current frame, wherein the multiple sets of filtering coefficients correspond one-to-one with the multiple point sets of the current frame; determining whether to perform a filtering operation on the first point set of the current frame, wherein the first point set corresponds to the first set of filtering coefficients in the multiple sets of filtering coefficients; and if it is determined that a filtering operation should be performed on the first point set, then determining the reconstructed attribute values ​​of the points in the first point set based on the first set of filtering coefficients.

[0007] Thirdly, a decoder is provided, comprising: a first determining unit configured to parse the bitstream and determine multiple sets of filtering coefficients for the current frame, wherein the multiple sets of filtering coefficients correspond one-to-one with multiple point sets of the current frame; a second determining unit configured to determine whether to perform a filtering operation on a first point set of the current frame, wherein the first point set corresponds to the first set of filtering coefficients in the multiple sets of filtering coefficients; and a filtering unit configured to, if it is determined that a filtering operation will be performed on the first point set, filter the reconstructed attribute values ​​of the points in the first point set according to the first set of filtering coefficients.

[0008] Fourthly, a decoder is provided, comprising: a memory for storing a computer program; and a processor for executing the method of the first aspect when running the computer program.

[0009] Fifthly, an encoder is provided, comprising: a first determining unit configured to determine multiple sets of filtering coefficients based on multiple point sets of a current frame, wherein the multiple sets of filtering coefficients correspond one-to-one with the multiple point sets of the current frame; a second determining unit configured to determine whether to perform a filtering operation on a first point set of the current frame, wherein the first point set corresponds to the first set of filtering coefficients in the multiple sets of filtering coefficients; and a third determining unit configured to determine the reconstructed attribute values ​​of points in the first point set based on the first set of filtering coefficients if it is determined that a filtering operation will be performed on the first point set.

[0010] In a sixth aspect, an encoder is provided, the encoder comprising: a memory for storing a computer program; and a processor for executing the method of the second aspect when running the computer program.

[0011] In a seventh aspect, a computer-readable storage medium is provided, wherein the computer-readable storage medium stores a computer program that, when executed, implements the method as described in the first or second aspect.

[0012] Eighthly, a non-volatile computer-readable storage medium is provided for storing a bit stream, the bit stream being generated by an encoding method using an encoder, or the bit stream being decoded by a decoding method using a decoder, wherein the decoding method is as described in the first aspect and the encoding method is as described in the second aspect.

[0013] Ninth aspect, a computer-readable storage medium is provided, which stores a bitstream generated according to the method of the second aspect.

[0014] After point cloud reconstruction, the reconstructed attribute information can be filtered to improve the quality of the reconstructed point cloud. In this embodiment, the filtering coefficients are determined not on a frame-by-frame basis, but rather on a set of points of the same type. Filtering coefficients determined based on points of the same type result in higher filtering quality. Furthermore, points of the same type exhibit more similar stationarity across multiple frames of point clouds, leading to more similar filtering coefficients. Therefore, applying the same filtering coefficients to multiple point sets across multiple frames helps improve the filtering quality of the reconstructed point cloud, thereby enhancing encoding and decoding performance. Attached Figure Description

[0015] Figure 1 is a schematic diagram of a network architecture for point cloud encoding and decoding.

[0016] Figure 2A is a schematic diagram of the component framework of a G-PCC encoder.

[0017] Figure 2B is a schematic diagram of the component framework of a G-PCC decoder.

[0018] Figure 3 is a schematic diagram of a Wiener filtering process for reconstructing point cloud frames.

[0019] Figure 4 is a flowchart illustrating a Wiener filter coefficient inter-frame inheritance scheme.

[0020] Figure 5 is a schematic diagram of the encoding process for a Wiener filter coefficient inter-frame inheritance scheme.

[0021] Figure 6 is a schematic diagram of the decoding process for a Wiener filter coefficient inter-frame inheritance scheme.

[0022] Figure 7 is a flowchart illustrating the decoding method provided in an embodiment of this application.

[0023] Figure 8 is a schematic diagram of the adjacent positions of the current point.

[0024] Figure 9 is a flowchart illustrating the encoding method provided in an embodiment of this application.

[0025] Figure 10 is a schematic diagram of the process of filtering the reconstructed point cloud by the encoding end provided in the embodiment of this application.

[0026] Figure 11 is a schematic diagram of the process of filtering the reconstructed point cloud by the decoding end provided in the embodiment of this application.

[0027] Figure 12 is a schematic diagram of the process for determining nearest neighbors based on Morton code according to an embodiment of this application.

[0028] Figure 13 is a schematic diagram of the structure of a decoder provided in an embodiment of this application.

[0029] Figure 14 is a schematic diagram of the structure of a decoder provided in another embodiment of this application.

[0030] Figure 15 is a schematic diagram of the encoder provided in an embodiment of this application.

[0031] Figure 16 is a schematic diagram of the encoder provided in another embodiment of this application. Detailed Implementation

[0032] In order to gain a more detailed understanding of the features and technical content of the embodiments of this application, the implementation of the embodiments of this application will be described in detail below with reference to the accompanying drawings. The accompanying drawings are for reference and illustration only and are not intended to limit the embodiments of this application.

[0033] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this application belongs. The terminology used herein is for the purpose of describing embodiments of this application only and is not intended to limit this application.

[0034] In the following description, “some implementations” are referred to, which describe a subset of all possible embodiments. However, it is understood that “some implementations” may be the same subset or different subsets of all possible embodiments and may be combined with each other without conflict.

[0035] It should also be noted that the terms "first, second, and third" used in the embodiments of this application are only used to distinguish similar objects and do not represent a specific order of objects. It is understood that "first, second, and third" can be interchanged in a specific order or sequence where permitted, so that the embodiments of this application described herein can be implemented in an order other than that illustrated or described herein.

[0036] A point cloud is a set of randomly distributed discrete points in space that represent the spatial structure and surface properties of a three-dimensional object or scene. These points contain geometric information representing spatial location and attribute information representing the appearance and texture of the point cloud.

[0037] Two-dimensional images contain information at each pixel, and their distribution is regular, so there's no need to record their positional information separately. However, the distribution of points in a point cloud in three-dimensional space is random and irregular, so the position of each point in space needs to be recorded to fully represent a point cloud. Similar to two-dimensional images, each location during acquisition has corresponding attribute information, usually RGB color values, reflecting the color of an object. For point clouds, in addition to color information, the most common attribute information for each point is reflectance, which reflects the surface material of the object. Therefore, point cloud data typically includes point position information and point attribute information. Point position information can also be called point geometric information. For example, point geometric information can be the three-dimensional coordinates (x, y, z). Point attribute information can include color information and / or reflectance, etc. For example, reflectance can be one-dimensional reflectance information (r); color information can be information in any color space, or it can be three-dimensional color information, such as RGB information. Here, R represents red (red, R), G represents green (green, G), and B represents blue (blue, B). For example, color information can be luminance and chromaticity (YCbCr, YUV) information. Here, Y represents luminance (luma), Cb (U) represents blue color difference, and Cr (V) represents red color difference.

[0038] Point clouds obtained based on laser measurement principles can include the three-dimensional coordinates and reflectance values ​​of each point. Similarly, point clouds obtained based on photogrammetry principles can include the three-dimensional coordinates and three-dimensional color information of each point. Furthermore, point clouds obtained by combining laser measurement and photogrammetry principles can include the three-dimensional coordinates, reflectance values, and three-dimensional color information of each point.

[0039] Currently, point cloud encoding frameworks capable of compressing point clouds can include the G-PCC codec framework provided by the Moving Picture Experts Group (MPEG) or the video-based point cloud compression (V-PCC) codec framework, as well as the AVS-PCC codec framework provided by AVS or the geometry-based solid content test model (GES-TM). The G-PCC codec framework can be used to compress both static point clouds (Type 1) and dynamically acquired point clouds (Type 3), and it can be based on a point cloud compression test platform (test model compression 13, TMC13). The V-PCC codec framework can be used to compress dynamic point clouds (Type 2), and it can be based on a point cloud compression test platform (test model compression 2, TMC2). Therefore, the G-PCC codec framework is also called the point cloud codec TMC13, and the V-PCC codec framework is also called the point cloud codec TMC2. GES-TM is an encoding and decoding framework proposed for dense point clouds (such as point clouds acquired in augmented reality (AR) or virtual reality (VR) scenes).

[0040] This application provides a network architecture for a point cloud encoding / decoding system that includes decoding and encoding methods. Figure 1 is a schematic diagram of such a network architecture. As shown in Figure 1, the network architecture includes one or more electronic devices 13 to 1N and a communication network 01. The electronic devices 13 to 1N can perform video interaction through the communication network 01. The electronic devices can be various types of devices with point cloud encoding / decoding capabilities, such as mobile phones, tablets, personal computers, personal digital assistants, navigators, digital phones, video phones, televisions, sensing devices, servers, etc. This application does not impose any limitations. The decoder or encoder in this application can be one of the aforementioned electronic devices.

[0041] The electronic device in this application embodiment has point cloud encoding and decoding functions, and generally includes a point cloud encoder (i.e., encoder) and a point cloud decoder (i.e. decoder).

[0042] The following section uses the G-PCC and AVS codec frameworks as examples to explain the relevant technologies.

[0043] As can be understood, in the G-PCC encoding and decoding framework for point clouds, the point cloud data to be encoded is first divided into multiple slices. Within each slice, the geometric information of the point cloud and the attribute information corresponding to each point are encoded separately.

[0044] Figure 2A illustrates a schematic diagram of the component framework of a G-PCC encoder. As shown in Figure 2A, during the geometric encoding process, coordinate transformation is performed on the geometric information to ensure 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 point clouds have identical geometric information, so parameters are used to determine whether to remove duplicate points. This process of quantization and removing duplicate points is also known as voxelization. Next, the bounding box is partitioned into an octree or a prediction tree is constructed. During this process, arithmetic encoding is performed on the points in the leaf nodes of the partition to generate a binary geometric bitstream; or, arithmetic encoding is performed on the vertices generated by the partition (surface fitting based on the vertices) to generate a binary geometric bitstream. During the attribute encoding process, after geometric encoding is completed and the geometric information is reconstructed, color conversion is performed to convert the color information (i.e., attribute information) from the RGB color space to the YUV color space. Then, the reconstructed geometric information is used to recolor the point cloud, so that the unencoded attribute information corresponds to the reconstructed geometric information. Attribute encoding is mainly performed on color information. In the process of color information encoding, there are three main transformation methods. The first two methods rely on the level of detail (LOD) partitioning, namely distance-based lifting transformation and prediction transformation. The third method is to directly perform RAHT. All three methods will transform the color information from the spatial domain to the frequency domain, obtain high-frequency coefficients and low-frequency coefficients through transformation, and finally quantize the coefficients and then perform arithmetic encoding on the quantized coefficients to generate a binary attribute bit stream.

[0045] Figure 2B illustrates a schematic diagram of the G-PCC decoder's structural framework. As shown in Figure 2B, for the acquired binary bitstream, the geometric bitstream and attribute bitstream within the binary bitstream are first decoded independently. During the decoding of the geometric bitstream, arithmetic decoding—reconstructing the octree / reconstructing the prediction tree—reconstructing geometry—inverse coordinate transformation is used to obtain the geometric information of the point cloud. During the decoding of the attribute bitstream, arithmetic decoding—inverse quantization—LOD partitioning / RAHT—inverse color transformation is used to obtain the attribute information of the point cloud. Based on the geometric and attribute information, the point cloud data to be encoded (i.e., the output point cloud) is reconstructed.

[0046] It should be noted that, as shown in Figure 2A or Figure 2B, the current geometric coding and decoding of G-PCC can be divided into octree-based geometric coding and decoding (marked with dashed boxes) and prediction tree-based geometric coding and decoding (marked with dotted-dash boxes).

[0047] For octree-based geometry encoding (OctGeomEnc), the process involves: first, performing coordinate transformation on the geometric information to ensure that all points in the point cloud are contained within a single bounding box; then, quantization is performed, and due to rounding, some points may have identical geometric information. Whether to remove duplicate points is determined based on parameters; this process of quantization and removal of duplicate points is also known as voxelization. Next, the bounding boxes are continuously partitioned into tree types (e.g., octree, quadtree, binary tree) using a breadth-first search, and the placeholder code for each node is encoded. In related technologies, an implicit geometric partitioning method has been proposed, which first calculates the bounding box of the point cloud. Assume d x >d y >d z 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 d is satisfied. x =d y >d z Only when the condition is met will the quadtree be partitioned based on the x and y axes to obtain four child nodes; when d is finally satisfied x =d y =d z Under certain conditions, the octree partitioning will continue until the resulting leaf nodes form a 1×1×1 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 that the minimum block side length during binary / quadtree partitioning is 2. MAt the same time, K and M must satisfy the following condition: Assume d max =max(d x ,d y ,d z ), d min =min(d x ,d y ,d z The parameter K satisfies: K ≥ d max ―d min The parameter M satisfies: M ≥ d min The reason why parameters K and M satisfy the above conditions is that in the current G-PCC implicit partitioning process, the priority of partitioning methods is binary tree, quadtree, and octree. Only when the node block size does not meet the binary / quadtree condition will the node be continuously partitioned into an octree until the smallest leaf node unit of 1×1×1 is reached. The octree-based geometric information encoding mode can effectively encode the geometric information of the point cloud by utilizing the correlation between nearest neighbors in space.

[0048] After reconstructing the point cloud at the encoding and decoding end, the G-PCC encoding and decoding framework only performs a basic reconstruction of the point cloud sequence. For lossy attribute encoding, no post-processing operations are performed to further improve the quality of the reconstructed point cloud's color attributes. This may result in a significant difference between the reconstructed and original point clouds, leading to severe distortion and affecting the overall quality of the point cloud. Therefore, related technologies propose filtering the attribute information of the reconstructed point cloud to enhance its image quality.

[0049] For example, taking Wiener filtering of the attribute information of the reconstructed point cloud as an example, as shown in Figure 3, at the encoding end, the original point cloud and the reconstructed point cloud are used as inputs, and the order of the Wiener filter is K. Then, the neighborhood of each point is the K nearest neighbor of that point. Then, using the Wiener filtering principle, the optimal filtering coefficient of the Wiener filter is calculated for each channel of the color attribute (such as Y, U, and V), and the filtering coefficient is used to filter the reconstructed point cloud to obtain a point cloud with enhanced quality. The calculation method of the filtering coefficient and the filtering principle during the filtering process are introduced below.

[0050] Assuming the Wiener filter has order K and the point cloud contains n points, the original point cloud can be represented as (p1, p2, p3, c1, c2, c3) ∈ R. n×6 The geometric position and color attributes of the original point cloud are represented by the first three column vectors {p1, p2, p3} and the last three column vectors {c1, c2, c3}, respectively. In this method, the color of the current point is updated by itself and its k-1 nearest neighbors. These nearest neighbors can be obtained through K-nearest neighbors (KNN) search. A matrix is ​​used... This represents the color components of the k nearest neighbors of all n points in the reconstructed point cloud P. The optimal coefficients of the Wiener filter are a vector h∈R k×1 Apply h to the color components of the reconstructed point cloud, i.e., c. i For i∈{1,2,3}, the filtered color attributes can be obtained.

[0051] It can be determined based on the following formula:

[0052] Based on the color attributes of the original point cloud and the filtered color attributes, the error y∈R can be obtained. n×1 :

[0053] The goal of the Wiener filter is to find an optimal set of coefficients h. opt To minimize the objective function E(y) 2 ):

[0054] Where E(·) represents the operation of averaging (approximately the expected value) the elements of the vector. To calculate h... opt The objective function E(y) 2 The derivative of h is set to 0, that is:

[0055] That is to say:

[0056] Then let the cross-correlation vector Autocorrelation matrix We can obtain: b―A×h=0 (6)

[0057] Therefore, we can obtain h opt : h opt =A ―1 ×b (7)

[0058] After obtaining the optimal filter coefficients, the peak signal-to-noise ratio (PSNR) of the reconstructed point cloud for each channel and the filtered reconstructed point cloud relative to the original point cloud is calculated. If the PSNR of the filtered reconstructed point cloud increases, it is considered that the Wiener filtering improves the quality of that color component. At this point, the decision array (i.e., the channel corresponding to the color component) and the filter coefficients are written into the bitstream. At the decoding end, the decision array is first decoded to determine the channel of the color component that needs to be filtered; then, the filter coefficients are decoded, and the reconstructed point cloud is filtered using these coefficients. The resulting value is then overwritten with the value of the reconstructed point cloud to obtain the improved point cloud.

[0059] In the related techniques shown in Figure 3 above, the reconstructed attribute information is filtered in a single frame of reconstructed point cloud to enhance the image quality of the reconstructed point cloud. In another related technique, an inter-frame inheritance scheme for filter coefficients is introduced, extending the filtering scheme for reconstructed attribute information from intra-frame coding to inter-frame coding. Compared to filtering under intra-frame coding, this results in better quality enhancement. As shown in Figure 4, the same filter coefficients are used for adjacent point clouds in a dynamic point cloud. This reduces the number of times filter coefficients are calculated and stored, thereby reducing the filtering time and improving filtering performance. Figures 5 and 6 respectively show schematic diagrams of the filtering process for reconstructed point clouds based on this inter-frame inheritance scheme at the encoding / decoding end.

[0060] However, some problems still need to be solved in the filtering schemes of related technologies. For example, in the inter-frame inheritance scheme of filtering coefficients mentioned above, multiple frames of reconstructed point clouds share the same set of filtering coefficients. However, this set of filtering coefficients cannot guarantee that the filtering effect of each component of the attribute information (such as the Y component, U component, and V component) will meet the requirements. For example, after filtering based on the same set of filtering coefficients, the quality enhancement effect of the Y component attribute information may be less than that of the U component attribute information (or the V component attribute information). However, in the encoding and decoding of color attributes, the attribute information of the Y component is the most important.

[0061] To address the aforementioned issues, this application provides an encoding method comprising: determining multiple sets of filtering coefficients based on multiple point sets of the current frame, wherein the multiple sets of filtering coefficients correspond one-to-one with the multiple point sets of the current frame; determining whether to perform a filtering operation on a first point set of the current frame, wherein the first point set corresponds to the first set of filtering coefficients in the multiple sets of filtering coefficients; and if it is determined that a filtering operation will be performed on the first point set, determining the reconstructed attribute values ​​of the points in the first point set based on the first set of filtering coefficients.

[0062] This application also provides a decoding method, including: parsing the bitstream, determining multiple sets of filtering coefficients for the current frame, wherein the multiple sets of filtering coefficients correspond one-to-one with multiple point sets for the current frame; determining whether to perform a filtering operation on a first point set for the current frame, wherein the first point set corresponds to the first set of filtering coefficients in the multiple sets of filtering coefficients; if it is determined that a filtering operation should be performed on the first point set, then filtering the reconstructed attribute values ​​of the points in the first point set according to the first set of filtering coefficients.

[0063] After point cloud reconstruction, the reconstructed attribute information can be filtered to improve the quality of the reconstructed point cloud. In this embodiment, the filtering coefficients are determined not on a frame-by-frame basis, but rather on a set of points of the same type. Filtering coefficients determined based on points of the same type result in higher filtering quality. Furthermore, points of the same type exhibit more similar stationarity across multiple frames of point clouds, leading to more similar filtering coefficients. Applying the same filtering coefficients to multiple point sets across multiple frames helps improve the filtering quality of the reconstructed point cloud, thereby enhancing encoding and decoding performance.

[0064] The decoding method provided in the embodiments of this application will be described in detail below with reference to the accompanying drawings.

[0065] Figure 7 is a flowchart illustrating the decoding method provided in an embodiment of this application. The decoding method in Figure 7 can be applied to a decoder. The decoding method in Figure 7 can be used to decode the attribute information of point clouds. In some implementations, this decoding method can be applied to G-PCC. Alternatively, in other implementations, this decoding method can be applied to a geometry-based solid content test model (GES-TM). GES-TM is an encoding and decoding framework proposed for dense point clouds (such as point clouds acquired in augmented reality (AR) or virtual reality (VR) scenes).

[0066] Referring to Figure 7, in step S710, the bitstream is parsed to determine multiple sets of filter coefficients for the current frame. These multiple sets of filter coefficients correspond one-to-one with multiple point sets in the current frame.

[0067] The multiple sets of filtering coefficients mentioned above can be used to filter the reconstructed attribute values ​​of points in the point set. The filtering in this embodiment can be any weighted calculation of the reconstructed attribute values ​​within the neighborhood. In some implementations, the filtering type can be Wiener filtering. For example, filtering can be performed based on the methods in formulas (1) to (7) above.

[0068] The embodiments of this application do not limit the method of obtaining the above-mentioned multiple sets of filter coefficients. For example, the multiple sets of filter coefficients can be obtained by parsing from the bitstream. Or, the multiple sets of filter coefficients can be predefined as fixed values ​​at the encoding and decoding end.

[0069] There are several ways to determine multiple sets of points in the current frame. For example, points with similar depth information or texture features can be grouped into the same set. Alternatively, in some implementations, points whose reconstructed attribute values ​​differ from those of their nearest neighbors within the same range can be grouped into the same set. These differences will be consistently referred to as gradients in the following text.

[0070] There are several ways to determine the gradient. For example, in method one, the gradient can be the average difference between the reconstructed attribute value of the current point and the reconstructed attribute value of at least one nearest neighbor point. Here, the current point can be any point in the point set.

[0071] For example, assuming the current point has n nearest neighbors, the gradient can be calculated as follows:

[0072] Where Yc is the reconstructed attribute value of the current point, Yi is the reconstructed attribute value of the i-th nearest neighbor of the current point, and G is the gradient corresponding to the current point.

[0073] For example, in Method 2, the variance between the reconstructed attribute value of the current point and the reconstructed attribute value of at least one nearest neighbor point can be used as the gradient.

[0074] Where Ya is the average of the reconstructed attribute values ​​of the n nearest neighbors and the reconstructed attribute value of the current point, Yi is the reconstructed attribute value of the i-th nearest neighbor of the current point, and K is the gradient corresponding to the current point.

[0075] For example, the gradient can be determined by combining the average value from Method 1 and the variance from Method 2. For instance, different weights can be assigned to the average value from Method 1 and the variance from Method 2, and the weighted value can be used as the gradient.

[0076] Multiple value ranges can be set based on the gradient between a point's reconstructed attribute value and the reconstructed attribute values ​​of its nearest neighbors. Each of these ranges corresponds to a different point set. For the current point in the point cloud, the gradient value of the current point is first determined; then, the corresponding point set is determined based on this gradient value.

[0077] For example, suppose the multiple value ranges are set to 5, where the first value range corresponds to the first point set, the second value range corresponds to the second point set, the third value range corresponds to the third point set, the fourth value range corresponds to the fourth point set, and the fifth value range corresponds to the fifth point set; the first value range can be set to less than 1, the second value range to 1 to 2, the third value range to 3 to 4, and the fourth value range to be greater than or equal to 4. For example, if the gradient of the current point is 1.5, then the current point is assigned to the second point set.

[0078] In step S720, it is determined whether to perform a filtering operation on the first point set of the current frame. Here, the first point set is one of the multiple point sets determined in step S710. Accordingly, the first point set may correspond to the first set of filter coefficients in the multiple sets of filter coefficients in step S710.

[0079] This application does not specifically limit the method for determining whether to filter the first point set. For example, at the encoding / decoding end, it can determine whether to perform filtering on the first point set based on default predefined rules. In some implementations, it can also indicate whether to perform filtering on the first point set based on auxiliary information of the bitstream (such as syntax elements).

[0080] For example, the first identifier information obtained from parsing the bitstream can be used to determine whether to perform a filtering operation on the first point set. If the first identifier information indicates that a filtering operation should be performed on the first point set, then the reconstructed attribute values ​​of the points in the first point set are filtered according to the first set of filtering coefficients; otherwise, the reconstructed attribute values ​​of the points in the first point set are not filtered. Accordingly, the multiple point sets in step S710 can each correspond to an identifier information, used to indicate whether a filtering operation should be performed on each point set.

[0081] For example, the value of the first identifier information can be 1 or 0 (true or false). A value of 1 indicates that a filtering operation is performed on the first point set; a value of 0 indicates that no filtering operation is performed on the first point set.

[0082] Furthermore, the first identification information can indicate whether the reconstructed attribute values ​​of one or more components of the points in the first point set are filtered. For example, the first identification information can indicate only whether the reconstructed attribute values ​​of the Y component of the points in the first point set are filtered. Alternatively, the first identification information can jointly indicate whether the reconstructed attribute values ​​of the U component and the V component of the points in the first point set are filtered.

[0083] In step S730, if it is determined that a filtering operation will be performed on the first point set, the reconstructed attribute values ​​of the points in the first point set are filtered according to the first set of filtering coefficients.

[0084] In this embodiment, the filtering coefficients are no longer calculated on a frame-by-frame basis, but rather on a set of points of the same type. Filtering coefficients determined based on points of the same type result in higher filtering quality, thus improving decoding performance.

[0085] In the embodiments of this application, the filtering method mentioned above can be applied to attribute information of some or all components. For example, the attribute information of all components here can refer to the attribute information of the Y component, the attribute information of the U component, and the attribute information of the V component; the attribute information of some components here can refer to the attribute information of the Y component, while the attribute information of the U component and the attribute information of the V component can be filtered based on other methods. For example, the filtering method shown in Figure 7 may further include: filtering the reconstructed attribute information (U component or V component) of all points in a frame based on the same set of filtering coefficients.

[0086] In some scenarios, the attribute information of a point cloud includes the attribute information of the Y component, the attribute information of the U component, and the attribute information of the V component. The first set of filtering coefficients in step S730 can be used to filter one of these three attribute information. Alternatively, in some implementations, the first set of filtering coefficients can be used to filter at least two of the three attribute information. For example, research has found that the stationarity of the U component and the V component in the color attribute components of a point cloud is quite similar. Therefore, in the same point set, the same set of filtering coefficients can be used to filter the attribute information of both components.

[0087] In this embodiment, the point sets in other multi-frame point clouds can also be filtered based on the multiple sets of filtering coefficients in step S710. For example, in terms of decoding order, if the current frame is the Kth frame point cloud, the multiple sets of filtering coefficients are also used to filter multiple point sets in the K+Nth frame point cloud. Here, the Kth frame point cloud and the K+Nth frame point cloud are two frames of point clouds in a sequence of consecutive point cloud frames, where K and N are both positive integers. That is, multiple frames of point clouds can reuse multiple sets of filters to filter the points in their respective point sets, so as to avoid writing the filtering coefficients into the bitstream as much as possible, thereby saving bitstream overhead and helping to improve decoding efficiency.

[0088] Furthermore, within consecutive point cloud frames of the same sequence, the reconstructed attribute values ​​of two different frames are more similar, and their stationarity is also more similar. Therefore, reusing multiple sets of filters to filter the reconstructed attribute values ​​of multiple frames of point clouds can save bitstream overhead while ensuring filtering effectiveness. For example, the Kth frame point cloud and the K+Nth frame point cloud mentioned above belong to the same frame group; the Kth frame point cloud can be an I-frame point cloud, and the K+Nth frame point cloud can be a P-frame point cloud.

[0089] Alternatively, the point cloud in frame K+N may not use the multiple sets of filtering coefficients corresponding to the current frame; that is, each frame of point cloud can have its own set of filtering coefficients.

[0090] Taking the second point set in the point cloud of frame K+N as an example, the second point set can share the same set of filter coefficients (i.e., the first set of filter coefficients) as the first point set in the point cloud of frame K. The range of values ​​for the gradients corresponding to points in the second point set can be the same as the range of values ​​for the gradients corresponding to points in the first point set. For example, if the gradient of the current point is within the first range in the first point set, then the gradient of the current point is also within the first range in the second point set. Points of the same type (such as points with gradients within the same range) exhibit more similar stationarity across multiple frames of point clouds, leading to more similar filter coefficients. This helps improve the filtering quality of the reconstructed point cloud and thus improves decoding performance.

[0091] The second point set mentioned above can also indicate whether to perform filtering operations based on auxiliary information in the bitstream (such as syntax elements). Alternatively, in some implementations, determining whether to perform filtering operations on the second point set can be done as follows: if it is determined that filtering operations should be performed on the first point set, then filtering operations should be performed on the second point set; or, if it is determined that filtering operations should not be performed on the first point set, then filtering operations should not be performed on the second point set. For example, if the first identification information indicates that filtering operations should be performed on the first point set, then filtering operations should be performed on the second point set. In this way, in multi-frame point clouds (such as a sequence of consecutive point cloud frames), only the identification information related to filtering in the current frame can be written into the bitstream, while the point clouds of other frames can determine whether to filter based on the identification information of the current frame, thereby reducing the identification information encoded into the bitstream and thus helping to improve decoding efficiency.

[0092] After filtering the reconstructed attribute values ​​of the current frame, the filtered reconstructed point cloud frame can be used as a reference frame to perform inter-frame prediction of the attribute values ​​of other point cloud frames (such as the next point cloud frame in the decoding order). The image quality of the filtered reconstructed point cloud frame is better, and using it as a reference point cloud frame helps to improve the prediction effect of point cloud attribute information, thereby helping to improve the decoding performance of point cloud attribute information.

[0093] In some implementations, the second identification information can be determined by parsing the bitstream; then, based on the second identification information, it can be determined whether to enable filtering for the first attribute information of the current frame. For example, the first attribute information here can be attribute information of the Y component, the U component, or the V component.

[0094] For example, the value of the second identifier information can be 1 or 0 (true or false). A value of 1 indicates that filtering is enabled for the first attribute information of the current frame; a value of 0 indicates that filtering is not enabled for the first attribute information of the current frame.

[0095] In some implementations, the third identifier information can be determined by parsing the bitstream; then, based on the third identifier information, it can be determined whether to enable filtering for the current point cloud. For example, the value of the third identifier information can be 1 or 0 (true or false), where a value of 1 indicates that filtering is enabled for the current point cloud; a value of 0 indicates that filtering is not enabled for the current point cloud.

[0096] It should be noted that the filtering in Figure 7 can be any one of the attribute information of multiple components in the current point cloud. If the current point cloud includes attribute information of the Y component, attribute information of the U component, and attribute information of the V component, then the first identification information (or the second identification information) can be three identification information, used to correspond to the reconstructed attribute values ​​of different components respectively.

[0097] The various identifiers mentioned above can be represented by any numbers and / or letters, and this application does not impose any restrictions on this. For example, the first identifier could be Y_pointset_n, used to indicate whether filtering is performed on the n point sets of the current frame. As another example, the second identifier could be Wiener_flag_Y, Wiener_flag_Cb, and Wiener_flag_Cr, used to indicate whether the reconstructed attribute values ​​of the Y component, U component, and V component of the current frame are filtered, respectively. Furthermore, the third identifier could be enabled_Wiener_flag, used to indicate whether filtering is enabled in the current point cloud.

[0098] Among the various identification information mentioned above, the positions of different levels of identification information in the bitstream also differ. For example, the first and second identification information mentioned above can be carried in the attribute block header (ABH). Similarly, the third identification information mentioned above can be carried in the attribute parameter set (APS).

[0099] As described in step S730 above, the reconstructed attribute values ​​of points in the first point set can be filtered based on the first set of filtering coefficients. The filtering method here may include, for example, filtering the first reconstructed attribute value of the current point based on the first set of filtering coefficients and the reconstructed attribute values ​​of the current point's nearest neighbors to determine the second reconstructed attribute value.

[0100] For example, the reconstructed attribute values ​​of the current point's nearest neighbors can be used as the input to the Wiener filter, combined with the first set of filter coefficients for filtering, and the output of the Wiener filter can be used as the second reconstructed attribute value.

[0101] The second reconstruction attribute value can be determined based on the following formula:

[0102] in, Indicates the value of the second reconstruction attribute; h represents the reconstructed attribute values ​​of the k nearest neighbors; opt This represents the first set of filter coefficients.

[0103] There are several ways to determine the nearest neighbors of the current point. For example, the nearest neighbors can be determined based on neural networks or KNN. Alternatively, the nearest neighbors can be determined based on Morton codes. It should be noted that if the decoding method shown in Figure 7 includes multiple methods for searching nearest neighbors, then the method used can be determined based on the identification information in the bitstream.

[0104] The current method for searching nearest neighbors based on Morton codes still has a relatively large search range. Taking a 3×3×3 cube as an example, the current method might need to search all adjacent positions within the cube (e.g., 26 adjacent positions). Furthermore, confirming the existence of nearest neighbors may require comparing the Morton codes of adjacent positions with the Morton codes of multiple points in the point cloud. Therefore, the current method for searching nearest neighbors based on Morton codes still needs improvement.

[0105] To address the aforementioned issues, in some implementations, the nearest neighbors of the current point can be determined based on a first mapping relationship and the geometric position information of the current point's first location. This geometric position information can be, for example, a Morton code or three-dimensional coordinates.

[0106] The aforementioned first mapping relationship includes both the mapping relationship between geometric position information and the nearest neighbor of the current point, and the mapping relationship between geometric position information and the first adjacent position of the current point. The first adjacent position does not correspond to a point in the current frame, or in other words, there is no point in the current frame at the first adjacent position.

[0107] When determining whether a nearest neighbor exists at a first position, the geometric position information of the first position can be used to determine whether a nearest neighbor exists at that adjacent position in a first mapping relationship. For example, if the geometric position information of the first position is the same as the geometric position information of the nearest neighbor in the first mapping relationship, then it means that a nearest neighbor exists at the first position. Alternatively, if the geometric position information of the first position is the same as the geometric position information of the first adjacent position in the first mapping relationship, then it means that no nearest neighbor exists at the first position. This approach avoids comparing the geometric position information of adjacent positions (such as Morton codes) with the geometric position information of multiple points in the current frame, as is done in related technologies, thus improving the efficiency of nearest neighbor search and consequently improving the efficiency of filtering.

[0108] In some implementations, the first mapping relationship may also include a mapping relationship between geometric position information and all adjacent positions of the current point. Here, "all adjacent positions" includes both adjacent positions with nearest neighbors and those without. Since the first mapping relationship includes the geometric information of all adjacent positions of the current point, when determining whether an adjacent position has a nearest neighbor, it is only necessary to find the corresponding geometric position information in the first mapping relationship based on the geometric position information of that adjacent position to determine whether a nearest neighbor exists.

[0109] The first mapping relationship can be determined based on the geometric position information of points in the current frame. For example, the mapping relationship between multiple points in the current frame and their corresponding geometric position information can be used as part of the first mapping relationship; then, based on the geometric position information of multiple points in the current frame, the geometric position information corresponding to multiple adjacent positions (excluding adjacent positions of points) is determined; next, the mapping relationship between the multiple adjacent positions and their corresponding geometric position information is used as another part of the first mapping relationship. Here, "multiple points" can refer to, for example, all points in the current frame.

[0110] For example, taking Morton codes as the geometric location information, assume the Morton codes for all points in the current frame are {2,4,5,7,8,10,11,13,15}. Then, the point cloud is sorted according to the Morton code size to obtain indices 1 to 9, where each index corresponds to a point in the point cloud. The mapping relationship between points and Morton codes is obtained based on the indices and Morton codes, i.e., {2:1,4:2,5:3,7:4,8:5,10:6,11:7,13:8,15:9}. In the above mapping relationship, the discontinuity of the Morton codes is due to the absence of points in some adjacent positions of the current point. The missing Morton codes in the above mapping relationship are the Morton codes of the adjacent positions of the non-existent points. By supplementing the missing Morton codes into the above mapping relationship and setting a preset value (e.g., -1) for the index of the adjacent positions of non-existent points, the resulting first mapping relationship is {0:-1,1:-1,2:1,3:-1,4:2,5:3,6:-1,7:4,8:5,9:-1,10:6,11:7,12:-1,13:8,14:-1,15:9}. If the Morton code of the first position of the current point is 1, it corresponds to index -1 in the first mapping relationship, indicating that there is no nearest neighbor point at this adjacent position; if the Morton code of the first position of the current point is 11, it corresponds to index 7 in the first mapping relationship, indicating that there is a nearest neighbor point with index 7 at this adjacent position.

[0111] To further reduce the search range when searching for nearest neighbors, in some implementations, the first position to search for the current point can be either a coplanar adjacent position to the current position (i.e., the current point) or the current position itself. For example, the positional relationship between the first position and the current position includes any of the following: the first position is directly in front of the current position; the first position is directly behind the current position; the first position is directly to the left of the current position; the first position is directly to the right of the current position; the first position is directly above the current position; the first position is directly below the current position; or the first position is the current position itself. Since coplanar adjacent positions have a higher similarity to the current volume position, the probability of finding nearest neighbors is greater, thus helping to improve search efficiency.

[0112] If the search for nearest neighbors that are coplanar with the current position is insufficient, then the search for adjacent neighbors that are collinear with the current position can be performed.

[0113] This application does not specifically limit the number of nearest neighbors of the current point. The number of nearest neighbors can correspond to the order K of the filter. For example, if the order of the Wiener filter is 7, then at least 7 nearest neighbors of the current point need to be determined.

[0114] As described above, filtering the reconstructed attribute values ​​of the reconstructed point cloud requires determining at least K nearest neighbors. If the number of determined nearest neighbors is less than K, for example, points at some edge positions in the point cloud may not have enough K nearest neighbors, then the decoding method shown in Figure 7 can also determine the remaining nearest neighbors (or first nearest neighbors) based on other methods.

[0115] In some implementations, the reconstruction attribute value of the first nearest neighbor can be determined based on the reconstruction attribute values ​​of the known nearest neighbors. For example, the average of the reconstruction attribute values ​​of all known nearest neighbors can be used as the reconstruction attribute value of the first nearest neighbor. Alternatively, the reconstruction attribute value of a single known nearest neighbor can be used as the reconstruction attribute value of the first nearest neighbor.

[0116] In some implementations, the decoding method provided in this application embodiment can be applied to geometrically lossless but attribute-lossy conditions, or it can also be applied to geometrically lossy and attribute-lossy conditions.

[0117] In some implementations, a single frame of reconstructed point cloud can correspond to one or more filters. For example, if a single frame of reconstructed point cloud corresponds to multiple filters, the target filter can be determined based on the difference between the reconstructed attribute values ​​of the current point's nearest neighbors and the current point's reconstructed attribute value. These multiple filters can correspond to multiple sets of filter coefficients.

[0118] For example, multiple filters can correspond to different neighborhood difference ranges. For instance, the multiple filters may include a first filter and a second filter. If the neighborhood difference between the reconstructed attribute value of the current point and the reconstructed attribute values ​​of its nearest neighbors is within a first range, the first filter can be selected; or, if the neighborhood difference between the reconstructed attribute value of the current point and the reconstructed attribute values ​​of its nearest neighbors is within a second range, the second filter can be selected.

[0119] In some implementations, the determination of multiple sets of filter coefficients in step S710 can be achieved by calculating the average value or by using a neural network learning method.

[0120] The test results obtained by testing the encoding and decoding method provided in the embodiments of this application will be compared with the performance test results obtained by testing based on related technologies to verify the performance improvement brought by the embodiments of this application.

[0121] Table 1: Test results obtained based on the encoding / decoding method of this application under the condition K=7, C1.

[0122] Table 2: Test results of encoding / decoding methods based on related technologies under the condition K=7 and C1.

[0123] Table 3: Test results of encoding / decoding methods based on related technologies under the condition K=8 and C1.

[0124] The test results in Tables 1, 2, and 3 were obtained by testing 32 frames of each class of the multi-frame dynamic point cloud sequence required by MPEG under C1 test conditions in the GPCC reference software ges-tm v4.0-rc1. In Tables 1 and 2, K=7 indicates that the order of the Wiener filter is 7; in Table 3, K=8 indicates that the order of the Wiener filter is 8. It should be noted that the relevant technique in Table 2 is Wiener filtering based on fast Morton code nearest neighbor search and inter-frame inheritance of filter coefficients to obtain attribute information; the relevant technique in Table 3 is Wiener filtering based on Morton code nearest neighbor search to obtain attribute information.

[0125] C1 conditions define a lossless geometry, lossy attribute encoding scheme. End-to-End BD-AttrRate represents the end-to-end attribute value BD-Rate for the attribute bitstream. BD-Rate reflects the difference in PSNR curves between the two cases (i.e., with and without filtering). A decrease in BD-Rate indicates improved performance with a lower bitrate while maintaining the same PSNR; conversely, an increase in bitrate indicates decreased performance. In other words, a greater decrease in BD-Rate results in better point cloud compression. Cat2-A average, Cat2-B average, and Cat2-C average represent the average test results of point cloud sequences for each of the three datasets in Cat2, respectively. The Overall average is the average test result for all sequences.

[0126] A comparison of the test results in Tables 1, 2, and 3 shows that the encoding / decoding method provided in this application embodiment can significantly improve the encoding / decoding performance of the Y component's attribute information. Because more Wiener filter coefficients are stored, the total number of bitstreams for attribute information increases, resulting in a slight deterioration in the encoding / decoding performance of the U and V component attribute information. However, in color attributes, the importance of the Y component's attribute information is far greater than that of the U and V component attribute information, so the overall performance is still significantly improved.

[0127] The decoding method provided by the embodiments of this application has been described in detail above with reference to Figure 7. The encoding method provided by the embodiments of this application will be described in detail below with reference to Figure 9.

[0128] Figure 9 is a flowchart illustrating the encoding method provided in an embodiment of this application. The encoding method in Figure 9 can be applied to an encoder. The encoding method in Figure 9 can be used to encode the attribute information of a point cloud. In some implementations, this encoding method can be applied to G-PCC. Alternatively, in other implementations, this encoding method can be applied to a geometry-based solid content test model (GES-TM). GES-TM is an encoding and decoding framework proposed for dense point clouds (such as point clouds acquired in augmented reality (AR) or virtual reality (VR) scenes).

[0129] Referring to Figure 9, in step S910, multiple sets of filtering coefficients are determined based on multiple point sets in the current frame. Here, each set of point sets corresponds one-to-one with a set of filtering coefficients.

[0130] The multiple sets of filtering coefficients mentioned above can be used to filter the reconstructed attribute values ​​of points in the point set. The filtering in this embodiment can be any weighted calculation of the reconstructed attribute values ​​within the neighborhood. In some implementations, the filtering type can be Wiener filtering. For example, filtering can be performed based on formulas (1) to (7) mentioned above.

[0131] The embodiments of this application do not limit the method of obtaining the above-mentioned multiple sets of filter coefficients. For example, the multiple sets of filter coefficients can be calculated at the encoding end. Or, the multiple sets of filter coefficients can be predefined as fixed values ​​at the encoding and decoding end.

[0132] There are several ways to determine multiple point sets in the current frame. For example, points with similar depth information or texture features can be grouped into the same point set. Alternatively, in some implementations, points whose reconstructed attribute values ​​differ from those of their nearest neighbors within the same range can be grouped into the same point set. These differences will be consistently referred to as gradients in the following text.

[0133] There are several ways to determine the gradient. For example, in method one, the gradient can be the average difference between the reconstructed attribute value of the current point and the reconstructed attribute value of at least one nearest neighbor point. Here, the current point can be any point in the point set.

[0134] For example, assuming the current point has n nearest neighbors, the gradient can be calculated as follows:

[0135] Where Yc is the reconstructed attribute value of the current point, Yi is the reconstructed attribute value of the i-th nearest neighbor of the current point, and G is the gradient corresponding to the current point.

[0136] For example, in Method 2, the variance between the reconstructed attribute value of the current point and the reconstructed attribute value of at least one nearest neighbor point can be used as the gradient.

[0137] Where Ya is the average of the reconstructed attribute values ​​of the n nearest neighbors and the reconstructed attribute value of the current point, Yi is the reconstructed attribute value of the i-th nearest neighbor of the current point, and K is the gradient corresponding to the current point.

[0138] For example, the gradient can be determined by combining the average value from Method 1 and the variance from Method 2. For instance, different weights can be assigned to the average value from Method 1 and the variance from Method 2, and the weighted value can be used as the gradient.

[0139] Multiple value ranges can be set based on the gradient between a point's reconstructed attribute value and the reconstructed attribute values ​​of its nearest neighbors. Each of these ranges corresponds to a different point set. For the current point in the point cloud, the gradient value of the current point is first determined; then, the corresponding point set is determined based on this gradient value.

[0140] For example, suppose the multiple value ranges are set to 5, where the first value range corresponds to the first point set, the second value range corresponds to the second point set, the third value range corresponds to the third point set, the fourth value range corresponds to the fourth point set, and the fifth value range corresponds to the fifth point set; the first value range can be set to less than 1, the second value range to 1 to 2, the third value range to 3 to 4, and the fourth value range to be greater than or equal to 4. If the gradient of the current point is 1.5, then the current point is assigned to the second point set.

[0141] In step S920, it is determined whether to perform a filtering operation on the first point set of the current frame. Here, the first point set is one of the multiple point sets in step S910. Accordingly, the first point set may correspond to the first set of filter coefficients in the multiple sets of filter coefficients in step S910.

[0142] This application does not specifically limit the method for determining whether to filter the first point set. For example, at the encoding / decoding end, it can determine whether to perform filtering on the first point set based on default predefined rules. In some implementations, it can also determine whether to perform filtering on the first point set based on rate-distortion cost.

[0143] In some implementations, determining whether to perform a filtering operation on the first point set can include: determining a first rate-distortion cost based on the reconstructed attribute values ​​of the first point set before filtering; determining a second rate-distortion cost based on the reconstructed attribute values ​​of the first point set after filtering; and determining whether to perform a filtering operation on the first point set based on the first and second rate-distortion costs. It should be understood that the first rate-distortion cost is calculated based on the initial reconstructed attribute values ​​of all points in the first point set. The second rate-distortion cost is calculated based on the reconstructed attribute values ​​of all points in the first point set after filtering. The rate-distortion cost mentioned here can be determined based on a rate-distortion optimization algorithm.

[0144] When determining whether to filter the first point set based on rate-distortion cost, the magnitudes of the first rate-distortion cost and the second rate-distortion cost can be compared. If the first rate-distortion cost is less than or equal to the second rate-distortion cost, no filtering operation is performed on the first point set; if the first rate-distortion cost is greater than the second rate-distortion cost, then filtering is performed on the first point set. Alternatively, the rate-distortion cost can be combined with other performance metrics (such as PSNR) to comprehensively consider whether to filter the first point set.

[0145] In some implementations, the first identification information can be written into the bitstream. The first identification information is used to determine whether to perform a filtering operation on the first point set. Accordingly, the multiple point sets in step S910 can each correspond to an identification information, used to indicate whether a filtering operation is performed on each point set.

[0146] For example, the value of the first identifier information can be 1 or 0 (true or false). A value of 1 indicates that a filtering operation is performed on the first point set; a value of 0 indicates that no filtering operation is performed on the first point set.

[0147] Furthermore, the first identification information can indicate whether the reconstructed attribute values ​​of one or more components of the points in the first point set are filtered. For example, the first identification information can indicate only whether the reconstructed attribute values ​​of the Y component of the points in the first point set are filtered. Alternatively, the first identification information can jointly indicate whether the reconstructed attribute values ​​of the U component and the V component of the points in the first point set are filtered.

[0148] In step S930, if it is determined that a filtering operation will be performed on the first point set, the reconstructed attribute values ​​of the points in the first point set are determined based on the first set of filtering coefficients. Alternatively, the initial reconstructed attribute values ​​of the points in the first point set are filtered based on the first set of filtering coefficients to determine the target reconstructed attribute values.

[0149] In this embodiment, the filtering coefficients are no longer calculated on a frame-by-frame basis, but rather on a set of points of the same type. Filtering coefficients determined based on points of the same type result in higher filtering quality, thus improving coding performance.

[0150] In the embodiments of this application, the filtering method mentioned above can be applied to attribute information of some or all components. For example, the attribute information of all components here can refer to the attribute information of the Y component, the attribute information of the U component, and the attribute information of the V component; the attribute information of some components here can refer to the attribute information of the Y component, while the attribute information of the U component and the attribute information of the V component can be filtered based on other methods. For example, the filtering method shown in Figure 9 may further include: filtering the reconstructed attribute information (U component or V component) of all points in a frame based on the same set of filtering coefficients.

[0151] In some scenarios, the attribute information of a point cloud includes the attribute information of the Y component, the attribute information of the U component, and the attribute information of the V component. The first set of filtering coefficients in step S930 can be used to filter one of these three attribute information. Alternatively, in some implementations, the first set of filtering coefficients can be used to filter at least two of the three attribute information. For example, research has found that the stationarity of the U component and the V component in the color attribute components of a point cloud is quite similar. Therefore, in the same point set, the same set of filtering coefficients can be used to filter the attribute information of both components.

[0152] In this embodiment, the point sets in other multi-frame point clouds can also be filtered based on the multiple sets of filtering coefficients in step S910. For example, in terms of encoding order, if the current frame is the Kth frame point cloud, the multiple sets of filtering coefficients are also used to filter multiple point sets in the K+Nth frame point cloud. Here, the Kth frame point cloud and the K+Nth frame point cloud are two frames of point clouds in a sequence of consecutive point cloud frames, where K and N are both positive integers. That is, multiple frames of point clouds can reuse multiple sets of filters to filter the points in their respective point sets, so as to avoid writing the filtering coefficients into the bitstream as much as possible, thereby saving bitstream overhead and helping to improve encoding efficiency.

[0153] Furthermore, within consecutive point cloud frames of the same sequence, the reconstructed attribute values ​​of two different frames are more similar, and their stationarity is also more similar. Therefore, reusing multiple sets of filters to filter the reconstructed attribute values ​​of multiple frames of point clouds can save bitstream overhead while ensuring filtering effectiveness. For example, the Kth frame point cloud and the K+Nth frame point cloud mentioned above belong to the same frame group; the Kth frame point cloud can be an I-frame point cloud, and the K+Nth frame point cloud can be a P-frame point cloud.

[0154] Alternatively, the point cloud in frame K+N may not use the multiple sets of filtering coefficients corresponding to the current frame; that is, each frame of point cloud can have its own set of filtering coefficients.

[0155] Taking the second point set in the point cloud of frame K+N as an example, the second point set can share the same set of filter coefficients (i.e., the first set of filter coefficients) as the first point set in the point cloud of frame K. The range of values ​​for the gradients corresponding to points in the second point set can be the same as the range of values ​​for the gradients corresponding to points in the first point set. For example, if the gradient corresponding to the current point is within the first range in the first point set, then the gradient corresponding to the current point is also within the first range in the second point set. Points of the same type (such as points with gradients within the same range) exhibit more similar stationarity across multiple frames of point clouds, resulting in more similar filter coefficients. This helps improve the filtering quality of the reconstructed point cloud and thus improves coding performance.

[0156] The second point set mentioned above can also be used to determine whether to perform filtering operations based on rate-distortion costs. Accordingly, relevant identification information can be written into the bitstream to indicate whether the decoding side should perform filtering operations on the second point set.

[0157] Alternatively, in some implementations, determining whether to perform filtering on the second point set can be done as follows: if it is determined that filtering should be performed on the first point set, then filtering should be performed on the second point set; or, if it is determined that filtering should not be performed on the first point set, then filtering should not be performed on the second point set. For example, if the first identification information indicates that filtering should be performed on the first point set, then filtering should be performed on the second point set. In this way, in multi-frame point clouds (such as a sequence of consecutive point cloud frames), only the identification information related to filtering in the current frame can be written into the bitstream, while the point clouds of other frames can determine whether to filter based on the identification information of the current frame. This reduces the amount of identification information encoded into the bitstream, thereby helping to improve coding efficiency.

[0158] After filtering the reconstructed attribute values ​​of the current frame, the filtered reconstructed point cloud frame can be used as a reference frame to perform inter-frame prediction of the attribute values ​​of other point cloud frames (such as the next point cloud frame in the decoding order). The image quality of the filtered reconstructed point cloud frame is better, and using it as a reference point cloud frame helps to improve the prediction effect of point cloud attribute information, thereby helping to improve the decoding performance of point cloud attribute information.

[0159] In some implementations, the second identification information can be written into the bitstream. This second identification information is used to determine whether filtering is enabled for the first attribute information of the current frame. For example, the first attribute information can be attribute information of the Y component, the U component, or the V component.

[0160] For example, the value of the second identifier information can be 1 or 0 (true or false). A value of 1 indicates that filtering is enabled for the first attribute information of the current frame; a value of 0 indicates that filtering is not enabled for the first attribute information of the current frame.

[0161] In some implementations, third identification information can be written into the bitstream. This third identification information is used to determine whether filtering is enabled for the current point cloud. For example, the value of the third identification information can be 1 or 0 (true or false), where a value of 1 indicates that filtering is enabled for the current point cloud, and a value of 0 indicates that filtering is not enabled for the current point cloud.

[0162] It should be noted that the filtering in Figure 9 can be any one of the attribute information of multiple components in the current point cloud. If the current point cloud includes attribute information of the Y component, attribute information of the U component, and attribute information of the V component, then the first identification information (or the second identification information) can be three identification information, used to correspond to the reconstructed attribute values ​​of different components respectively.

[0163] The various identifiers mentioned above can be represented by any numbers and / or letters, and this application does not impose any restrictions on this. For example, the first identifier could be Y_pointset_n, used to indicate whether filtering is performed on the n point sets of the current frame. As another example, the second identifier could be Wiener_flag_Y, Wiener_flag_Cb, and Wiener_flag_Cr, used to indicate whether the reconstructed attribute values ​​of the Y component, U component, and V component of the current frame are filtered, respectively. Furthermore, the third identifier could be enabled_Wiener_flag, used to indicate whether filtering is enabled in the current point cloud.

[0164] Among the various identification information mentioned above, the positions of different levels of identification information in the bitstream also differ. For example, the first and second identification information mentioned above can be carried in the attribute block header (ABH). Similarly, the third identification information mentioned above can be carried in the attribute parameter set (APS).

[0165] As described in step S930 above, the reconstructed attribute values ​​of points in the first point set can be determined based on the first set of filtering coefficients. The filtering method here may include: filtering the first reconstructed attribute value of the current point based on the first set of filtering coefficients and the reconstructed attribute values ​​of the current point's nearest neighbors to determine the second reconstructed attribute value.

[0166] For example, the reconstructed attribute values ​​of the current point's nearest neighbors can be used as the input to the Wiener filter, combined with the first set of filter coefficients for filtering, and the output of the Wiener filter can be used as the second reconstructed attribute value.

[0167] The second reconstruction attribute value can be determined based on the following formula:

[0168] in, Indicates the value of the second reconstruction attribute; h represents the reconstructed attribute values ​​of the k nearest neighbors; opt This represents the first set of filter coefficients.

[0169] There are several ways to determine the nearest neighbors of the current point. For example, the nearest neighbors can be determined based on neural networks or KNN. Alternatively, the nearest neighbors can be determined based on Morton codes. It should be noted that if the encoding method shown in Figure 9 includes multiple methods for searching nearest neighbors, then the identification information corresponding to the determined target method can be written into the bitstream.

[0170] The current method for searching nearest neighbors based on Morton codes still has a relatively large search range. Taking a 3×3×3 cube as an example, the current method might need to search all adjacent positions within the cube (e.g., 26 adjacent positions). Furthermore, confirming the existence of nearest neighbors may require comparing the Morton codes of adjacent positions with the Morton codes of multiple points in the point cloud. Therefore, the current method for searching nearest neighbors based on Morton codes still needs improvement.

[0171] To address the aforementioned issues, in some implementations, the nearest neighbors of the current point can be determined based on a first mapping relationship and the geometric position information of the current point's first location. This geometric position information can be, for example, a Morton code or three-dimensional coordinates.

[0172] The aforementioned first mapping relationship includes both the mapping relationship between geometric position information and the nearest neighbor of the current point, and the mapping relationship between geometric position information and the first adjacent position of the current point. The first adjacent position does not correspond to a point in the current frame, or in other words, there is no point in the current frame at the first adjacent position.

[0173] When determining whether a nearest neighbor exists at a first position, the geometric position information of the first position can be used to determine whether a nearest neighbor exists at that adjacent position in a first mapping relationship. For example, if the geometric position information of the first position is the same as the geometric position information of the nearest neighbor in the first mapping relationship, then it means that a nearest neighbor exists at the first position. Alternatively, if the geometric position information of the first position is the same as the geometric position information of the first adjacent position in the first mapping relationship, then it means that no nearest neighbor exists at the first position. This approach avoids comparing the geometric position information of adjacent positions (such as Morton codes) with the geometric position information of multiple points in the current frame, as is done in related technologies, thus improving the efficiency of nearest neighbor search and consequently improving the efficiency of filtering.

[0174] In some implementations, the first mapping relationship may also include a mapping relationship between geometric position information and all adjacent positions of the current point. Here, "all adjacent positions" includes both adjacent positions with nearest neighbors and those without. Since the first mapping relationship includes the geometric information of all adjacent positions of the current point, when determining whether an adjacent position has a nearest neighbor, it is only necessary to find the corresponding geometric position information in the first mapping relationship based on the geometric position information of that adjacent position to determine whether a nearest neighbor exists.

[0175] The first mapping relationship can be determined based on the geometric position information of points in the current frame. For example, the mapping relationship between multiple points in the current frame and their corresponding geometric position information can be used as part of the first mapping relationship; then, based on the geometric position information of multiple points in the current frame, the geometric position information corresponding to multiple adjacent positions (excluding adjacent positions of points) is determined; next, the mapping relationship between the multiple adjacent positions and their corresponding geometric position information is used as another part of the first mapping relationship. Here, "multiple points" can refer to, for example, all points in the current frame.

[0176] For example, taking Morton codes as the geometric location information, assume the Morton codes for all points in the current frame are {2,4,5,7,8,10,11,13,15}. Then, the point cloud is sorted according to the Morton code size to obtain indices 1 to 9, where each index corresponds to a point in the point cloud. The mapping relationship between points and Morton codes is obtained based on the indices and Morton codes, i.e., {2:1,4:2,5:3,7:4,8:5,10:6,11:7,13:8,15:9}. In the above mapping relationship, the discontinuity of the Morton codes is due to the absence of points in some adjacent positions of the current point. The missing Morton codes in the above mapping relationship are the Morton codes of the adjacent positions of the non-existent points. By supplementing the missing Morton codes into the above mapping relationship and setting a preset value (e.g., -1) for the index of the adjacent positions of non-existent points, the resulting first mapping relationship is {0:-1,1:-1,2:1,3:-1,4:2,5:3,6:-1,7:4,8:5,9:-1,10:6,11:7,12:-1,13:8,14:-1,15:9}. If the Morton code of the first position of the current point is 1, it corresponds to index -1 in the first mapping relationship, indicating that there is no nearest neighbor point at this adjacent position; if the Morton code of the first position of the current point is 11, it corresponds to index 7 in the first mapping relationship, indicating that there is a nearest neighbor point with index 7 at this adjacent position.

[0177] To further reduce the search range when searching for nearest neighbors, in some implementations, the first position to search for the current point can be either a coplanar adjacent position to the current position (i.e., the current point) or the current position itself. For example, the positional relationship between the first position and the current position includes any of the following: the first position is directly in front of the current position; the first position is directly behind the current position; the first position is directly to the left of the current position; the first position is directly to the right of the current position; the first position is directly above the current position; the first position is directly below the current position; or the first position is the current position itself. Since coplanar adjacent positions have a higher similarity to the current volume position, the probability of finding nearest neighbors is greater, thus helping to improve search efficiency.

[0178] If the search for nearest neighbors that are coplanar with the current position is insufficient, then the search for adjacent neighbors that are collinear with the current position can be performed.

[0179] This application does not specifically limit the number of nearest neighbors of the current point. The number of nearest neighbors can correspond to the order K of the filter. For example, if the order of the Wiener filter is 7, then at least 7 nearest neighbors of the current point need to be determined.

[0180] As described above, filtering the reconstructed attribute values ​​of the reconstructed point cloud requires determining at least K nearest neighbors. If the number of determined nearest neighbors is less than K, for example, points at some edge positions in the point cloud may not have enough K nearest neighbors, then the encoding method shown in Figure 7 can also determine the remaining nearest neighbors (or first nearest neighbors) based on other methods.

[0181] In some implementations, the reconstruction attribute value of the first nearest neighbor can be determined based on the reconstruction attribute values ​​of the known nearest neighbors. For example, the average of the reconstruction attribute values ​​of all known nearest neighbors can be used as the reconstruction attribute value of the first nearest neighbor. Alternatively, the reconstruction attribute value of a single known nearest neighbor can be used as the reconstruction attribute value of the first nearest neighbor.

[0182] In some implementations, the encoding method provided in this application embodiment can be applied to geometrically lossless but attribute-lossy conditions, or it can also be applied to geometrically lossy and attribute-lossy conditions.

[0183] In some implementations, the determination of multiple sets of filter coefficients in step S910 can be achieved by calculating the average value or by using a neural network learning method.

[0184] In some implementations, a single frame of reconstructed point cloud can correspond to one or more filters. For example, if a single frame of reconstructed point cloud corresponds to multiple filters, the target filter can be determined based on the difference between the reconstructed attribute values ​​of the current point's nearest neighbors and the current point's reconstructed attribute value. These multiple filters can correspond to multiple sets of filter coefficients.

[0185] For example, multiple filters can correspond to different neighborhood difference ranges. For instance, the multiple filters may include a first filter and a second filter. If the neighborhood difference between the reconstructed attribute value of the current point and the reconstructed attribute values ​​of its nearest neighbors is within a first range, the first filter can be selected; or, if the neighborhood difference between the reconstructed attribute value of the current point and the reconstructed attribute values ​​of its nearest neighbors is within a second range, the second filter can be selected.

[0186] The embodiments of this application are described in more detail below with specific examples. It should be noted that the examples below are merely to help those skilled in the art understand the embodiments of this application, and are not intended to limit the embodiments of this application to the specific numerical values ​​or scenarios illustrated. Those skilled in the art can obviously make various equivalent modifications or variations based on the examples given below, and such modifications or variations also fall within the scope of the embodiments of this application.

[0187] In the example scheme, the gradient calculation depends on the average difference between the reconstructed attribute value of the Y component of the current point and the Y attribute classification values ​​of its seven nearest neighbors (including the current point). In this example scheme, five gradient value classes are set: gradient < 1, 1 ≤ gradient < 2, 2 ≤ gradient < 3, 3 ≤ gradient < 4, and gradient ≥ 4. Therefore, five sets of filtering coefficients are calculated for the reconstructed attribute value of the Y component. Verification shows that after gradient partitioning of the reconstructed attribute value of the Y component, the difference in Wiener filtering coefficients calculated based on the same class of points in adjacent point cloud frames is significantly reduced. In this case, applying the same set of filtering coefficients to multiple frames of point clouds still yields better performance gains, even though more parameter information is stored in the bitstream. For the reconstructed attribute values ​​of the U or V components, gradient partitioning can be omitted, and the same set of filtering coefficients can be used to filter the reconstructed attribute values ​​of the entire frame of point cloud.

[0188] In the example scheme, to calculate the Wiener filter coefficients and perform the Wiener filter operation, each point needs to be traversed at both the encoding and decoding ends to obtain the indices of each point's nearest neighbors, thereby obtaining the reconstructed attribute values ​​of all nearest neighbors for each point. During encoding and decoding, the encoding end needs to search for K1 nearest neighbors, and the decoding end needs to search for K2 nearest neighbors. Because the Wiener filter order and the number of nearest neighbors need to match, K1 ≥ K2. In the actual operation of this example, to ensure consistency between encoding and decoding, it is necessary to set K1 = K2 = K, and the nearest neighbors found for each point are the same.

[0189] Figures 10 and 11 illustrate a filtering scheme for reconstructing point clouds provided in this example. As shown in Figure 10, at the encoding end, firstly, for each L frames of point clouds (i.e., a frame group, where L is 8 in this example), the current frame is reconstructed through point cloud encoding. Then, each point in the reconstructed point cloud is traversed to obtain the attribute values ​​of the K1 nearest neighbors of all points in the reconstructed point cloud. The method for searching for nearest neighbors can be found in the description above and will not be repeated here.

[0190] After obtaining the K1 nearest neighbors for each point, the average (i.e., gradient) of the differences between the reconstructed attribute value of the current point's Y component and the reconstructed attribute values ​​of the Y components of the other K1 nearest neighbors (including the current point) is calculated. For example, if the average value is less than 1, the point is assigned to the first class, and so on, resulting in a total of five class sets. After traversing all points to obtain the complete point set, Wiener filter coefficients are calculated for each of the five class sets, and rate-distortion optimization is performed on each set to determine whether Wiener filtering is used for each of the five class sets. Accordingly, a flag is set for each of the five point sets to indicate whether the Wiener filter coefficients are used for filtering. For the U and V components, Wiener filtering is still performed using the reconstructed attribute values ​​of the overall point cloud, and rate-distortion optimization is also performed to determine whether Wiener filtering is used. Finally, the filtering flags of the five point sets of attribute values ​​of the Y component and the filtering flags of the attribute values ​​of the U and V components are encoded first; then the Wiener filtering coefficients of the five classes of attribute values ​​of the Y component and the Wiener filtering coefficients of the attribute values ​​of the U and V components are encoded.

[0191] For frames 2 through L in the L-frame point cloud, the reconstructed point cloud from the previous frame, enhanced with higher quality, is used for inter-frame prediction of the next frame, thus obtaining the reconstructed point cloud for the next frame. For this reconstructed point cloud, the nearest neighbor search method described above is used to obtain the reconstructed attribute values ​​of the K nearest neighbors for all points. Then, the reconstructed attribute values ​​of the Y component of each point in the point cloud are classified using the classification method described above, traversing all points to obtain five types of point sets. Rate-distortion optimization is then performed using the corresponding Wiener filter coefficients based on the correspondence, determining whether Wiener filtering is used for these five types of point sets, and setting a flag indicating whether Wiener filtering is used for each of these five point sets. For the U and V components, Wiener filtering is performed using the reconstructed attribute values ​​of the overall point cloud, and rate-distortion optimization calculations are performed to determine the flag indicating whether Wiener filtering is used. Finally, this enhanced point cloud is overlaid on the reconstructed point cloud, and the filtering-related flags are encoded.

[0192] For the next set of L-frame point clouds, repeat the process described above until all point cloud frames have been encoded.

[0193] As shown in Figure 11, firstly, for each L-frame point cloud (i.e., a frame group, where L is 8 in this example), the current frame is decoded to reconstruct the reconstructed point cloud. Then, each point in the reconstructed point cloud is traversed to obtain the attribute values ​​of the K1 nearest neighbors of all points in the reconstructed point cloud. The method for searching for nearest neighbors can be found in the description above, and will not be repeated here.

[0194] After obtaining the K2 nearest neighbors of each point, the points in the reconstructed point cloud are classified by gradient, similar to the encoding scheme shown in Figure 10, resulting in five point sets. Then, at the decoding end, the five flag bits corresponding to the attribute values ​​of the five point sets (applied to the Y component) and the flag bits for the attribute values ​​of the U and V components are decoded first. Next, the five sets of filter coefficients applied to the attribute values ​​of the Y component and the filter coefficients applied to the attribute values ​​of the U and V components are decoded. Then, the quality of the reconstructed point cloud is enhanced according to the flag bit indications, and this enhanced point cloud is used to overlay the original decoded point cloud.

[0195] For frames 2 through 1 in the L-frame point cloud, the reconstructed point cloud from the previous frame, enhanced in quality, is used for inter-frame prediction of the next frame, thus obtaining the reconstructed points of the next frame. For this point cloud, the nearest neighbor search method described above is used to obtain the reconstructed attribute values ​​of the K nearest neighbors of all points. Similar to the scheme at the encoding end shown in Figure 10, gradient classification is performed on the points in the reconstructed point cloud to obtain five point sets. Then, the five flag bits corresponding to the attribute values ​​applied to the Y component and the attribute values ​​applied to the U and V components are decoded. Based on the flag bit indications, the point cloud is enhanced in quality, and this enhanced point cloud overwrites the original decoded point cloud.

[0196] For the next set of L-frame point clouds, repeat the process described above until all point cloud frames have been decoded.

[0197] The improvements to the bitstream structure involve two parts: First, a higher-level control bit, `enable_Wiener_flag`, is added to the Attribute Parameter Set (APS) to indicate whether the Wiener filter is enabled. A value of 1 indicates the scheme used in this example is employed, while 0 indicates it is disabled. Second, in the ABH, filter flags `Wiener_flag_Y`, `Wiener_flag_Cb`, and `Wiener_flag_Cr` are stored for the three YUV channels. Their values ​​range from 0 to 1, where 0 indicates that the channel does not require filtering, and 1 indicates that the channel requires filtering. If `Wiener_flag_Y` is 1, the ABH continues to store filter flags `Y_pointset_1`, `Y_pointset_2`, `Y_pointset_3`, `Y_pointset_4`, and `Y_pointset_5` for five point sets of Y, with values ​​ranging from 0 to 1. Again, 0 indicates that the point set does not require filtering, and 1 indicates that the point set requires filtering. Furthermore, the optimal filtering coefficients for k filter taps are encoded in the ABH. Because the scheme contains an inter-frame inheritance scheme, the encoder needs to encode the five sets of filter coefficients for the Y component and the two sets of filter coefficients for the UV component into the ABH when encoding the first frame of each GOF.

[0198] For each frame of point cloud, the filtering flags Wiener_flag_Y, Wiener_flag_Cb, and Wiener_flag_Cr for the YUV three channels need to be stored in the attribute ABH. The storage of the “Y_pointset_1 / 2 / 3 / 4 / 5” flags depends on the value of Wiener_flag_Y, and the storage of “Wiener coefficients” depends on the position of the current frame in the GOF.

[0199] While the Merton code-based nearest neighbor search technique significantly accelerates the nearest neighbor search process, testing revealed that determining whether a nearest neighbor location is empty consumes considerable time and can be optimized. Furthermore, to further reduce the search time, the search area can be narrowed. The solution for searching nearest neighbors provided in this example will be described in detail below.

[0200] (1) Narrowing the nearest neighbor search range. Since the closer the region is to the current point (i.e., the center point), the denser the nearest neighbor points may be, and the more likely there are nearest neighbors with similar attribute values ​​to the current point, in order to end the search as quickly as possible and to obtain more accurate results, only the nearest neighbor positions coplanar with the current point (i.e., the nearest neighbors directly in front, behind, to the left, to the right, above, and below the current point) and the current point are considered during the process of writing the offset into the search table, for a total of seven positions. After obtaining the search table, the search process is as follows: For any target point, the Morton code of its first adjacent position is calculated according to the search table. If this position is not empty, that is, a point exists, then this point is one of the nearest neighbors of the target point; if this position is empty, that is, no point exists, then the attribute value of the current point is assigned to the attribute value of the nearest neighbor position. Through this nearest neighbor search method, it can be guaranteed that for each point, seven nearest neighbor position attribute values ​​can be found for Wiener filtering.

[0201] (2) Optimize the hole location determination process. In the previous scheme, a correspondence table between Morton codes and point numbers was established for each frame of point cloud. For each calculated nearest neighbor Morton code, it was necessary to search this correspondence table to find a corresponding Morton code, and then index the nearest point number. Tests showed that because the Morton codes of 3D point clouds are not continuous, the search process in the correspondence table would take a long time. Therefore, a different hole location determination scheme could be adopted. In the process of establishing the correspondence table between Morton codes and point numbers, for a hole Morton code (i.e., the corresponding point position is empty, there is no point), the corresponding point number is set to -1. After obtaining this correspondence table, for each point in the point cloud, the Morton code of the adjacent position of this point can be used for indexing. If the index returns -1, it proves that this adjacent position is a hole point. If the index returns a value other than -1, it proves that it is not a hole point and can be stored as a nearest neighbor point in the nearest neighbor point table.

[0202] Based on the above improvements, the specific data flow for searching the K nearest neighbors is described below:

[0203] (1) Correspondence table construction: Before traversing and reconstructing each point in the point cloud and performing nearest neighbor search, a correspondence table needs to be constructed. The construction process of the correspondence table is as follows: ① In the previous attribute information encoding process, a sequence of points sorted according to the Morton code size of the points in the point cloud was used, from which the maximum Morton code number among all points can be obtained. Then, a correspondence table is constructed. The index of the correspondence table is 0 to the maximum Morton code number, and all the values ​​indexed in the correspondence table are set to -1 (for example, if the maximum Morton code number is 100, then the constructed correspondence table is {0: -1, ..., 100: -1}). ② Iterate through all points in the point cloud. For each point in the point cloud, the index is the Morton code of that point, and the value obtained from the index is the sequence number of that point (for example, if the sequence number of the first point in the sequence is 1 and its Morton code is 4, and the sequence number of the second point is 2 and its Morton code is 6, then the corresponding table is {0: -1, 1: -1, 2: -1, 3: -1, 4: 1, 5: -1, 6: 2, ..., 100: -1}).

[0204] (2) Search table construction: The search table stores only seven values, namely the current point position and the offset between the current point position and the nearest neighbor positions coplanar with the current point position (i.e., the nearest neighbor positions directly in front of, behind, to the left, to the right, above, and below the current point). The offsets are written into the search table.

[0205] (3) Nearest neighbor search process: Traverse each point in the point cloud. For each point, calculate the Morton code of its first neighboring position according to the search table. If the value indexed in the corresponding table for this position is not -1, it means that a point exists. Then store the indexed sequence number, and this point is one of the nearest neighbor points of the target point. If the value indexed in the corresponding table for this position is -1, it means that no point exists at this position. Then assign the attribute value of the current point to the attribute value of the nearest neighbor position.

[0206] The following section, with reference to Figure 12, provides a detailed explanation of how this example determines the nearest neighbor.

[0207] Referring to Figure 12, in step S1210a, the search begins.

[0208] In step S1210b, input the current point in the point cloud.

[0209] In step S1220a, the Morton code of the current point is determined.

[0210] In step S1220b, determine whether the current point has K nearest neighbors. If the current point has K nearest neighbors, proceed to step S1230, i.e., the search ends; otherwise, proceed to step S1240.

[0211] In step S1240, the Morton codes at adjacent positions are determined based on the offset values ​​in the search table. The method for determining the Morton codes at adjacent positions has been described above and will not be repeated here.

[0212] In step S1250, it is determined whether the adjacent position is empty. If the adjacent position is empty, step S1240 is executed; otherwise, it is determined that there is a nearest neighbor point at the adjacent position, and step S1270 is executed.

[0213] In step S1260, the nearest neighbor points are added to the nearest neighbor list of the current point.

[0214] In step S1270, the attribute value of the current point is used as the attribute value of the nearest neighbor.

[0215] In step S1280, the search ends.

[0216] In this example, to further improve the encoding and decoding performance of the attribute values ​​of the Y component, the attribute values ​​of the Y component in the dynamic point cloud are classified based on gradient, and the Wiener filter coefficients of the point sets obtained after each classification are calculated, stored, transmitted and applied.

[0217] The method embodiments of this application have been described in detail above with reference to Figures 1 to 12. The apparatus embodiments of this application will be described in detail below with reference to Figures 13 to 16. It should be understood that the descriptions of the method embodiments correspond to the descriptions of the apparatus embodiments; therefore, any parts not described in detail can be referred to the preceding method embodiments.

[0218] Figure 13 is a schematic diagram of the structure of a decoder provided in an embodiment of this application. As shown in Figure 13, the decoder 1300 may include a first determining unit 1310, a second determining unit 1320, and a filtering unit 1330.

[0219] The first determining unit 1310 is configured to parse the bitstream and determine multiple sets of filtering coefficients for the current frame, wherein the multiple sets of filtering coefficients correspond one-to-one with multiple point sets of the current frame.

[0220] The second determining unit 1320 is configured to determine whether to perform a filtering operation on the first point set of the current frame, wherein the first point set corresponds to the first set of filtering coefficients in the plurality of filtering coefficients.

[0221] The filtering unit 1330 is configured to filter the reconstructed attribute values ​​of the points in the first point set according to the first set of filtering coefficients if it is determined that a filtering operation will be performed on the first point set.

[0222] In some implementations, the multiple point sets of the current frame are determined based on the differences between the reconstructed attribute values ​​of the points in the current frame and the reconstructed attribute values ​​of the points' nearest neighbors.

[0223] In some implementations, in the first set of points, the difference between the reconstructed attribute value of the current point and the reconstructed attribute value of the nearest neighbor points is within a first value range.

[0224] In some implementations, the first value range is determined based on one or more of the following: the average difference between the reconstructed attribute value of the current point and the reconstructed attribute value of at least one nearest neighbor point; the variance between the reconstructed attribute value of the current point and the reconstructed attribute value of the at least one nearest neighbor point.

[0225] In some implementations, in terms of decoding order, the current frame is the Kth frame point cloud, and the multiple sets of filtering coefficients are also used to filter multiple point sets of the K+Nth frame point cloud. The Kth frame point cloud and the K+Nth frame point cloud are two frames of point clouds in a sequence of consecutive point cloud frames, where K and N are both positive integers.

[0226] In some implementations, the point cloud of the Kth frame is an I-frame point cloud; and / or, the point cloud of the K+Nth frame is a P-frame point cloud; wherein the point cloud of the Kth frame and the point cloud of the K+Nth frame belong to the same group of frames.

[0227] In some implementations, the second point set of the point cloud in the K+Nth frame is filtered based on the first set of filtering coefficients, and in the second point set, the difference between the reconstructed attribute value of the current point and the reconstructed attribute value of the nearest neighbor points is within a first value range.

[0228] In some implementations, the second determining unit 1320 is further configured to parse the bitstream, determine the first identification information, and determine whether to perform a filtering operation on the first point set based on the first identification information.

[0229] In some implementations, the decoder 1300 is further configured to parse the bitstream, determine the second identification information, and determine whether to enable filtering for the first attribute information of the current frame based on the second identification information.

[0230] In some implementations, the first identification information and / or the second identification information are carried in the attribute block header.

[0231] In some implementations, the decoder 1300 is further configured to parse the bitstream, determine the third identification information, and determine whether to enable filtering for the current point cloud based on the third identification information.

[0232] In some implementations, the third identification information is carried in the attribute parameter set APS.

[0233] In some implementations, the decoder 1300 is further configured to perform inter-frame prediction on the point cloud of the K+Nth frame based on the filtered point cloud of the Kth frame, and determine the reconstructed point cloud of the point cloud of the K+Nth frame.

[0234] In some implementations, the filtering unit 1330 is further configured to filter the first reconstruction attribute value of the current point based on the first set of filtering coefficients and the reconstruction attribute values ​​of the nearest neighbor points of the current point, and determine the second reconstruction attribute value.

[0235] In some implementations, the nearest neighbors of the current point are determined based on a first mapping relationship and the geometric position information of the first position of the current point. The first mapping relationship includes the mapping relationship between the geometric position information and the nearest neighbors, and also includes the mapping relationship between the geometric position information and the first adjacent position of the current point. The first adjacent position does not correspond to a point in the current frame.

[0236] In some implementations, the first mapping relationship is determined based on multiple points in the current frame and the geometric position information of the multiple points.

[0237] In some implementations, the first position is an adjacent position that is coplanar with the current position of the current point, and / or the first position is the current position of the current point.

[0238] In some implementations, the positional relationship between the first position and the current position includes any of the following:

[0239] The first position is located directly in front of the current position;

[0240] The first position is located directly behind the current position;

[0241] The first position is located directly to the left of the current position;

[0242] The first position is located directly to the right of the current position;

[0243] The first position is located directly above the current position;

[0244] The first position is located directly below the current position;

[0245] The first position is located at the current position.

[0246] In some implementations, the geometric position information of the first position includes: the Morton code of the first position; or, the three-dimensional coordinate information of the first position.

[0247] In some implementations, the filtering is Wiener filtering.

[0248] In some implementations, the reconstruction attribute values ​​of the points in the first point set are the reconstruction attribute values ​​of the Y component.

[0249] It is understood that in the embodiments of this application, a "unit" can be a part of a circuit, a part of a processor, a part of a program or software, etc., and can also be a module or a non-modular one. Moreover, the components in this embodiment can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or as a software functional module.

[0250] If the integrated unit is implemented as a software functional module and not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this embodiment, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) or processor to execute all or part of the steps of the method described in this embodiment. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.

[0251] Therefore, this application provides a computer-readable storage medium for use in a decoder 1300. The computer-readable storage medium stores a computer program that, when executed by a processor, implements the decoding method described in any of the foregoing embodiments.

[0252] Based on the composition of the decoder 1300 and the computer-readable storage medium described above, refer to Figure 14, which shows a schematic diagram of the specific hardware structure of the encoder 1300 provided in this embodiment. As shown in Figure 14, the encoder 1400 may include: a communication interface 1410, a memory 1420, and a processor 1430; the various components are coupled together through a bus system 1440. It is understood that the bus system 1440 is used to realize the connection and communication between these components. In addition to a data bus, the bus system 1440 also includes a power bus, a control bus, and a status signal bus. However, for clarity, all buses are labeled as bus system 1440 in Figure 14.

[0253] The communication interface 1410 is used for receiving and sending signals during the process of sending and receiving information with other external network elements;

[0254] Memory 1420 is used to store computer programs;

[0255] Processor 1430, when running the computer program, performs the following:

[0256] The bitstream is parsed to determine multiple sets of filtering coefficients for the current frame, and the multiple sets of filtering coefficients correspond one-to-one with multiple point sets for the current frame;

[0257] Determine whether to perform a filtering operation on the first point set of the current frame, where the first point set corresponds to the first set of filtering coefficients in the plurality of filtering coefficients;

[0258] If it is determined that a filtering operation will be performed on the first point set, then the reconstructed attribute values ​​of the points in the first point set are filtered according to the first set of filtering coefficients.

[0259] It is understood that the memory 1420 in the embodiments of this application can be volatile memory or non-volatile memory, or may include both volatile and non-volatile memory. The 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. The volatile memory can be random access memory (RAM), which is used as an external cache. By way of example, but not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous linked dynamic random access memory (SLDRAM), and direct rambus RAM (DRRAM). The memory 1420 of the system and method described in this application is intended to include, but is not limited to, these and any other suitable types of memory.

[0260] The processor 1430 may be an integrated circuit chip with signal processing capabilities. In implementation, each step of the above method can be completed by the integrated logic circuitry in the hardware of the processor 1430 or by instructions in software form. The processor 1430 can be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor can be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of this application can be directly embodied in the execution of a hardware decoding processor, or can be executed by a combination of hardware and software modules in the decoding processor. The software modules can be located in random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, or other mature storage media in the art. The storage medium is located in memory 1420. Processor 1430 reads the information in memory 1420 and completes the steps of the above method in conjunction with its hardware.

[0261] It is understood that the embodiments described in this application can be implemented using hardware, software, firmware, middleware, microcode, or a combination thereof. For hardware implementation, the processing unit can be implemented in one or more application-specific integrated circuits (ASICs), digital signal processors (DSPs), DSP devices (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described in this application, or combinations thereof. For software implementation, the technology described in this application can be implemented through modules (e.g., procedures, functions, etc.) that perform the functions described in this application. Software code can be stored in memory and executed by a processor. The memory can be implemented in the processor or externally.

[0262] Alternatively, as another embodiment, the processor 1430 is also configured to execute the decoding method described in any of the foregoing embodiments when running the computer program.

[0263] Figure 15 is a schematic diagram of the structure of an encoder provided in an embodiment of this application. As shown in Figure 15, the encoder 1500 includes a first determining unit 1510, a second determining unit 1520 and a third determining unit 1530.

[0264] The first determining unit 1510 is configured to determine multiple sets of filtering coefficients based on multiple point sets of the current frame, wherein the multiple sets of filtering coefficients correspond one-to-one with the multiple point sets of the current frame.

[0265] The second determining unit 1520 is configured to determine whether to perform a filtering operation on the first point set of the current frame, wherein the first point set corresponds to the first set of filtering coefficients in the plurality of filtering coefficients.

[0266] The third determining unit 1530 is configured to determine the reconstructed attribute values ​​of the points in the first point set based on the first set of filtering coefficients if it is determined that a filtering operation will be performed on the first point set.

[0267] In some implementations, the multiple point sets of the current frame are determined based on the differences between the reconstructed attribute values ​​of a point in the current frame and the reconstructed attribute values ​​of the point's nearest neighbors.

[0268] In some implementations, in the first set of points, the difference between the reconstructed attribute value of the current point and the reconstructed attribute value of the nearest neighbor points is within a first value range.

[0269] In some implementations, the first value range is determined based on one or more of the following: the average difference between the reconstructed attribute value of the current point and the reconstructed attribute value of at least one nearest neighbor point; the variance between the reconstructed attribute value of the current point and the reconstructed attribute value of the at least one nearest neighbor point.

[0270] In some implementations, in terms of encoding order, the current frame is the Kth frame point cloud, and the multiple sets of filtering coefficients are also used to filter multiple point sets of the K+Nth frame point cloud. The Kth frame point cloud and the K+Nth frame point cloud are two frame point clouds in a sequence of consecutive point cloud frames, where K and N are both positive integers.

[0271] In some implementations, the point cloud of the Kth frame is an I-frame point cloud; and / or, the point cloud of the K+Nth frame is a P-frame point cloud; wherein the point cloud of the Kth frame and the point cloud of the K+Nth frame belong to the same group of frames.

[0272] In some implementations, the second point set of the point cloud in the K+Nth frame is filtered based on the first set of filtering coefficients, and in the second point set, the difference between the reconstructed attribute value of the current point and the reconstructed attribute value of the nearest neighbor points is within a first value range.

[0273] In some implementations, the second determining unit 1520 is further configured to determine a first rate distortion cost based on the reconstructed attribute values ​​of the first point set before filtering; determine a second rate distortion cost based on the reconstructed attribute values ​​of the first point set after filtering; and determine whether to perform a filtering operation on the first point set based on the first rate distortion cost and the second rate distortion cost.

[0274] In some implementations, the encoder 1500 is further configured to write first identification information into the bitstream, the first identification information being used to determine whether to perform a filtering operation on the first point set.

[0275] In some implementations, the encoder 1500 is further configured to write second identification information into the bitstream, the second identification information being used to determine whether to enable filtering of the first attribute information of the current frame.

[0276] In some implementations, the first identification information and / or the second identification information are carried in the attribute block header.

[0277] In some implementations, the encoder 1500 is further configured to write third identification information into the bitstream, the third identification information being used to determine whether filtering is enabled for the current point cloud.

[0278] In some implementations, the third identification information is carried in the attribute parameter set APS.

[0279] In some implementations, the encoder 1500 is also configured to write the multiple sets of filter coefficients into the bitstream.

[0280] In some implementations, the encoder 1500 is further configured to perform inter-frame prediction on the K+N frame point cloud based on the filtered K frame point cloud to determine the reconstructed point cloud of the K+N frame point cloud.

[0281] In some implementations, the third determining unit 1530 is further configured to filter the first reconstructed attribute value of the current point based on the first set of filtering coefficients and the reconstructed attribute values ​​of the nearest neighbor points of the current point, and determine the second reconstructed attribute value.

[0282] In some implementations, the nearest neighbors of the current point are determined based on a first mapping relationship and the geometric position information of the first position of the current point. The first mapping relationship includes the mapping relationship between the geometric position information and the nearest neighbors, and also includes the mapping relationship between the geometric position information and the first adjacent position of the current point. The first adjacent position does not correspond to a point in the current frame.

[0283] In some implementations, the first mapping relationship is determined based on multiple points in the current frame and the geometric position information of the multiple points.

[0284] In some implementations, the first position is an adjacent position that is coplanar with the current position of the current point, and / or the first position is the current position of the current point.

[0285] In some implementations, the positional relationship between the first position and the current position includes any of the following:

[0286] The first position is located directly in front of the current position;

[0287] The first position is located directly behind the current position;

[0288] The first position is located directly to the left of the current position;

[0289] The first position is located directly to the right of the current position;

[0290] The first position is located directly above the current position;

[0291] The first position is located directly below the current position;

[0292] The first position is located at the current position.

[0293] In some implementations, the geometric position information of the first position includes: the Morton code of the first position; or, the three-dimensional coordinate information of the first position.

[0294] In some implementations, the filtering is Wiener filtering.

[0295] In some implementations, the reconstruction attribute values ​​of the points in the first point set are the reconstruction attribute values ​​of the Y component.

[0296] It is understood that in the embodiments of this application, a "unit" can be a part of a circuit, a part of a processor, a part of a program or software, etc., and can also be a module or a non-modular one. Moreover, the components in this embodiment can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or as a software functional module.

[0297] If the integrated unit is implemented as a software functional module and not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this embodiment, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) or processor to execute all or part of the steps of the method described in this embodiment. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, external hard drives, ROM, RAM, magnetic disks, or optical disks.

[0298] Therefore, this application provides a computer-readable storage medium applied to an encoder 1500. The computer-readable storage medium stores a computer program, which, when executed by a processor, implements the encoding method or the bitstream generated by the encoding method described in any of the foregoing embodiments.

[0299] Based on the composition of the encoder 1500 described above and the computer-readable storage medium, referring to Figure 16, a schematic diagram of the specific hardware structure of the encoder 1600 provided in this embodiment of the application is shown. As shown in Figure 16, the encoder 1600 may include: a communication interface 1610, a memory 1620, and a processor 1630; the various components are coupled together through a bus system 1640. It is understood that the bus system 1640 is used to realize the connection and communication between these components. In addition to a data bus, the bus system 1640 also includes a power bus, a control bus, and a status signal bus. However, for clarity, all buses are labeled as bus system 1640 in Figure 16.

[0300] The communication interface 1610 is used for receiving and sending signals during the process of sending and receiving information with other external network elements;

[0301] Memory 1620 is used to store computer programs;

[0302] Processor 1630, when running the computer program, performs the following:

[0303] Based on multiple point sets in the current frame, multiple sets of filtering coefficients are determined, and the multiple sets of filtering coefficients correspond one-to-one with the multiple point sets in the current frame;

[0304] Determine whether to perform a filtering operation on the first point set of the current frame, where the first point set corresponds to the first set of filtering coefficients in the plurality of filtering coefficients;

[0305] If it is determined that a filtering operation will be performed on the first point set, then the reconstructed attribute values ​​of the points in the first point set are determined based on the first set of filtering coefficients.

[0306] It is understood that the memory 1620 in the embodiments of this application may be volatile memory or non-volatile memory, or may include both volatile and non-volatile memory. Non-volatile memory may be ROM, PROM, EPROM, EEPROM, or flash memory. Volatile memory may be RAM, which is used as an external cache. By way of example, but not limitation, many forms of RAM are available, such as SRAM, DRAM, SDRAM, DDRSDRAM, ESDRAM, SLDRAM, and DRRAM. The memory 1620 of the systems and methods described in this application is intended to include, but is not limited to, these and any other suitable types of memory.

[0307] The processor 1630 may be an integrated circuit chip with signal processing capabilities. In implementation, each step of the above method can be completed by the integrated logic circuitry in the processor 1630 or by software instructions. The processor 1630 may be a general-purpose processor, DSP, ASIC, FPGA, or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of this application can be directly embodied in the execution of a hardware decoding processor, or executed by a combination of hardware and software modules in the decoding processor. The software modules may reside in random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, or other mature storage media in the art. This storage medium is located in memory 1620, and the processor 1630 reads the information in memory 1620 and, in conjunction with its hardware, completes the steps of the above method.

[0308] It is understood that the embodiments described in this application can be implemented using hardware, software, firmware, middleware, microcode, or a combination thereof. For hardware implementation, the processing unit can be implemented in one or more ASICs, DSPs, DSPDs, PLDs, FPGAs, general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described in this application, or combinations thereof. For software implementation, the technology described in this application can be implemented through modules (e.g., procedures, functions, etc.) that perform the functions described in this application. Software code can be stored in memory and executed by a processor. The memory can be implemented in the processor or external to the processor.

[0309] Alternatively, as another embodiment, the processor 1630 is also configured to execute the encoding method described in any of the foregoing embodiments when running the computer program.

[0310] This application also provides a computer-readable storage medium, which is a non-volatile computer-readable storage medium for storing bit streams. The bit streams can be generated by using an encoding method of an encoder, or the bit streams can be decoded by using a decoding method of a decoder. The decoding method can be the decoding method described in any of the preceding embodiments, and the encoding method can be the encoding method described in any of the preceding embodiments.

[0311] It should be noted that, in this application, the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising one..." does not exclude the presence of other identical elements in the process, method, article, or apparatus that includes that element.

[0312] The sequence numbers of the embodiments in this application are for descriptive purposes only and do not represent the superiority or inferiority of the embodiments.

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

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

[0315] The features disclosed in the several method or device embodiments provided in this application can be arbitrarily combined without conflict to obtain new method or device embodiments.

[0316] 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, applied to a decoder, comprising: The bitstream is parsed to determine multiple sets of filtering coefficients for the current frame, and the multiple sets of filtering coefficients correspond one-to-one with multiple point sets for the current frame; Determine whether to perform a filtering operation on the first point set of the current frame, where the first point set corresponds to the first set of filtering coefficients in the plurality of filtering coefficients; If it is determined that a filtering operation will be performed on the first point set, then the reconstructed attribute values ​​of the points in the first point set are filtered according to the first set of filtering coefficients.

2. The method according to claim 1, wherein, The multiple point sets of the current frame are determined based on the differences between the reconstructed attribute values ​​of the points in the current frame and the reconstructed attribute values ​​of the points' nearest neighbors.

3. The method according to claim 1 or 2, wherein, In the first set of points, the difference between the reconstructed attribute value of the current point and the reconstructed attribute value of the nearest neighbor points is within a first value range.

4. The method according to claim 3, wherein, The first value range is determined based on one or more of the following: The average difference between the reconstructed attribute value of the current point and the reconstructed attribute value of at least one neighboring point; The variance between the reconstructed attribute value of the current point and the reconstructed attribute value of the at least one nearest neighbor point.

5. The method according to any one of claims 2 to 4, wherein, In terms of decoding order, the current frame is the Kth frame point cloud, and the multiple sets of filtering coefficients are also used to filter multiple point sets of the K+Nth frame point cloud. The Kth frame point cloud and the K+Nth frame point cloud are two frame point clouds in a sequence of consecutive point cloud frames, and K and N are both positive integers.

6. The method according to claim 5, wherein: The point cloud of the Kth frame is the point cloud of the I frame: and / or, The point cloud of the K+Nth frame is the point cloud of the P frame. The point cloud of frame K and the point cloud of frame K+N belong to the same group of frames.

7. The method according to claim 5 or 6, wherein: The second point set of the point cloud in the K+Nth frame is filtered based on the first set of filtering coefficients, and in the second point set, the difference between the reconstructed attribute value of the current point and the reconstructed attribute value of the nearest neighbor point is within a first value range.

8. The method according to any one of claims 1 to 7, wherein, Determining whether to perform a filtering operation on the first point set of the current frame includes: Analyze the bitstream to determine the first identifier information; Determine whether to perform a filtering operation on the first point set based on the first identification information.

9. The method according to claim 8, wherein, The method further includes: Analyze the bitstream to determine the second identifier information; Whether to enable filtering for the first attribute information of the current frame is determined based on the second identification information.

10. The method according to claim 9, wherein, The first identification information and / or the second identification information are carried in the attribute block header.

11. The method according to any one of claims 1 to 10, wherein, The method further includes: Analyze the bitstream to determine the third identifier information; Whether to enable filtering for the current point cloud is determined based on the third identification information.

12. The method according to claim 11, wherein, The third identification information is carried in the attribute parameter set APS.

13. The method according to any one of claims 5 to 7, wherein, The method further includes: Based on the filtered point cloud of the Kth frame, inter-frame prediction is performed on the point cloud of the K+Nth frame to determine the reconstructed point cloud of the point cloud of the K+Nth frame.

14. The method according to claim 1, wherein, The step of filtering the reconstructed attribute values ​​of points in the first point set according to the first set of filtering coefficients includes: Based on the first set of filtering coefficients and the reconstructed attribute values ​​of the current point's nearest neighbors, the first reconstructed attribute value of the current point is filtered to determine the second reconstructed attribute value.

15. The method according to any one of claims 1 to 14, wherein, The nearest neighbor of the current point is determined based on a first mapping relationship and the geometric position information of the first position of the current point. The first mapping relationship includes the mapping relationship between the geometric position information and the nearest neighbor, and also includes the mapping relationship between the geometric position information and the first adjacent position of the current point. The first adjacent position does not correspond to a point in the current frame.

16. The method of claim 15, wherein: The first mapping relationship is determined based on multiple points in the current frame and the geometric position information of the multiple points.

17. The method according to claim 15 or 16, wherein, The first position is an adjacent position that is coplanar with the current position of the current point, and / or the first position is the current position of the current point.

18. The method according to claim 17, wherein, The positional relationship between the first position and the current position includes any one of the following: The first position is located directly in front of the current position; The first position is located directly behind the current position; The first position is located directly to the left of the current position; The first position is located directly to the right of the current position; The first position is located directly above the current position; The first position is located directly below the current position; The first position is located at the current position.

19. The method according to any one of claims 15 to 18, wherein, The geometric position information of the first position includes: The Morton code at the first position; or, The three-dimensional coordinate information of the first position.

20. The method according to claim 1, wherein, The filtering method is Wiener filtering.

21. The method according to claim 1, wherein, The reconstruction attribute values ​​of the points in the first point set are the reconstruction attribute values ​​of the Y component.

22. A point cloud encoding method, applied to an encoder, comprising: Based on multiple point sets in the current frame, multiple sets of filtering coefficients are determined, and the multiple sets of filtering coefficients correspond one-to-one with the multiple point sets in the current frame; Determine whether to perform a filtering operation on the first point set of the current frame, where the first point set corresponds to the first set of filtering coefficients in the plurality of filtering coefficients; If it is determined that a filtering operation will be performed on the first point set, then the reconstructed attribute values ​​of the points in the first point set are determined based on the first set of filtering coefficients.

23. The method according to claim 22, wherein, The multiple point sets of the current frame are determined based on the differences between the reconstructed attribute values ​​of the points in the current frame and the reconstructed attribute values ​​of the points' nearest neighbors.

24. The method according to claim 23, wherein, In the first set of points, the difference between the reconstructed attribute value of the current point and the reconstructed attribute value of the nearest neighbor points is within a first value range.

25. The method according to claim 24, wherein, The first value range is determined based on one or more of the following: The average difference between the reconstructed attribute value of the current point and the reconstructed attribute value of at least one neighboring point; The variance between the reconstructed attribute value of the current point and the reconstructed attribute value of the at least one nearest neighbor point.

26. The method according to any one of claims 23 to 25, wherein, In terms of encoding order, the current frame is the Kth frame point cloud, and the multiple sets of filtering coefficients are also used to filter multiple point sets of the K+Nth frame point cloud. The Kth frame point cloud and the K+Nth frame point cloud are two frame point clouds in a sequence of consecutive point cloud frames, and K and N are both positive integers.

27. The method according to claim 26, wherein: The point cloud of the Kth frame is the point cloud of the I frame: and / or, The point cloud of the K+Nth frame is the point cloud of the P frame. The point cloud of frame K and the point cloud of frame K+N belong to the same group of frames.

28. The method according to claim 26 or 27, wherein: The second point set of the point cloud in the K+Nth frame is filtered based on the first set of filtering coefficients, and in the second point set, the difference between the reconstructed attribute value of the current point and the reconstructed attribute value of the nearest neighbor point is within a first value range.

29. The method according to any one of claims 22 to 28, wherein, Determining whether to perform a filtering operation on the first point set of the current frame includes: The first rate distortion cost is determined based on the reconstructed attribute values ​​of the first point set before filtering. The second rate distortion cost is determined based on the reconstructed attribute values ​​of the first point set after filtering. Based on the first rate-distortion cost and the second rate-distortion cost, determine whether to perform a filtering operation on the first point set.

30. The method according to any one of claims 22 to 29, wherein, The method further includes: The first identification information is written into the bitstream, and the first identification information is used to determine whether to perform a filtering operation on the first point set.

31. The method according to claim 30, wherein, The method further includes: The second identification information is written into the bitstream. The second identification information is used to determine whether to enable filtering for the first attribute information of the current frame.

32. The method according to claim 31, wherein, The first identification information and / or the second identification information are carried in the attribute block header.

33. The method according to any one of claims 22 to 32, wherein, The method further includes: The third identifier information is written into the bitstream; the third identifier information is used to determine whether filtering is enabled for the current point cloud.

34. The method according to claim 33, wherein, The third identification information is carried in the attribute parameter set APS.

35. The method according to claim 22, wherein, The method further includes: Write the multiple sets of filter coefficients into the bitstream.

36. The method according to any one of claims 26 to 28, wherein, The method further includes: Based on the filtered point cloud of the Kth frame, inter-frame prediction is performed on the point cloud of the K+Nth frame to determine the reconstructed point cloud of the point cloud of the K+Nth frame.

37. The method according to claim 22, wherein, The step of determining the reconstructed attribute values ​​of points in the first point set based on the first set of filter coefficients includes: Based on the first set of filtering coefficients and the reconstructed attribute values ​​of the current point's nearest neighbors, the first reconstructed attribute value of the current point is filtered to determine the second reconstructed attribute value.

38. The method according to any one of claims 22 to 37, wherein, The nearest neighbor of the current point is determined based on a first mapping relationship and the geometric position information of the first position of the current point. The first mapping relationship includes the mapping relationship between the geometric position information and the nearest neighbor, and also includes the mapping relationship between the geometric position information and the first adjacent position of the current point. The first adjacent position does not correspond to a point in the current frame.

39. The method according to claim 38, wherein: The first mapping relationship is determined based on multiple points in the current frame and the geometric position information of the multiple points.

40. The method according to claim 38 or 39, wherein, The first position is an adjacent position that is coplanar with the current position of the current point, and / or the first position is the current position of the current point.

41. The method according to claim 40, wherein, The positional relationship between the first position and the current position includes any one of the following: The first position is located directly in front of the current position; The first position is located directly behind the current position; The first position is located directly to the left of the current position; The first position is located directly to the right of the current position; The first position is located directly above the current position; The first position is located directly below the current position; The first position is located at the current position.

42. The method according to any one of claims 38 to 41, wherein, The geometric position information of the first position includes: The Morton code at the first position; or, The three-dimensional coordinate information of the first position.

43. The method according to claim 22, wherein, The filtering method is Wiener filtering.

44. The method according to claim 22, wherein, The reconstruction attribute values ​​of the points in the first point set are the reconstruction attribute values ​​of the Y component.

45. A decoder, comprising: The first determining unit is configured to parse the bitstream and determine multiple sets of filtering coefficients for the current frame, wherein the multiple sets of filtering coefficients correspond one-to-one with multiple point sets for the current frame; The second determining unit is configured to determine whether to perform a filtering operation on the first point set of the current frame, wherein the first point set corresponds to the first set of filtering coefficients in the plurality of filtering coefficients. The filtering unit is configured to filter the reconstructed attribute values ​​of the points in the first point set according to the first set of filtering coefficients if it is determined that a filtering operation will be performed on the first point set.

46. ​​A decoder, comprising: Memory, used to store computer programs; A processor, configured to perform the method as described in any one of claims 1 to 21 when running the computer program.

47. An encoder, comprising: The first determining unit is configured to determine multiple sets of filtering coefficients based on multiple point sets of the current frame, wherein the multiple sets of filtering coefficients correspond one-to-one with the multiple point sets of the current frame. The second determining unit is configured to determine whether to perform a filtering operation on the first point set of the current frame, wherein the first point set corresponds to the first set of filtering coefficients in the plurality of filtering coefficients. The third determining unit is configured to determine the reconstructed attribute values ​​of the points in the first point set based on the first set of filtering coefficients if it is determined that a filtering operation will be performed on the first point set.

48. An encoder, comprising: Memory, used to store computer programs; A processor, configured to perform the method as described in any one of claims 22 to 44 when running the computer program.

49. A non-volatile computer-readable storage medium for storing a bitstream, said bitstream being generated by an encoding method using an encoder, or said bitstream being decoded by a decoding method using a decoder, wherein, The decoding method is the method as described in any one of claims 1 to 21, and the encoding method is the method as described in any one of claims 22 to 44.

50. A computer-readable storage medium storing a bitstream generated by the method of any one of claims 22 to 44.

51. A computer-readable storage medium, wherein, The computer-readable storage medium stores a computer program that, when executed, implements the method as described in any one of claims 1 to 21, or 22 to 44.

Citation Information

Patent Citations

  • Method and device for video streamdecoding, computer equipment and storage medium

    CN112188209A

  • Encoding and decoding method, code stream, encoder, decoder and storage medium

    CN118525509A

  • Point cloud attribute prediction method and device based on filter

    US20220254057A1