Point cloud encoding method, point cloud decoding method, encoder, decoder, and storage medium

By reusing filter coefficients and optimizing nearest neighbor search, the problems of low filtering efficiency and high bit rate in point cloud encoding and decoding are solved, thereby improving the point cloud reconstruction quality and encoding and decoding efficiency.

WO2026007126A1PCT designated stage Publication Date: 2026-01-08GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2024/104019
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-07-05
Publication Date
2026-01-08

AI Technical Summary

Technical Problem

In existing point cloud encoding and decoding technologies, the filtering efficiency for reconstructing point cloud attribute information is low and the bit rate is high, resulting in poor encoding and decoding efficiency. Furthermore, the method of searching for nearest neighbors during the filtering process is inefficient.

Method used

By reusing the same set of filtering coefficients to filter the reconstructed attribute information of point clouds from multiple frames, and optimizing the search method for nearest neighbors, the nearest neighbors are determined by using geometric position information and Morton code mapping, thereby reducing the number of times the filtering coefficients are calculated and encoded.

Benefits of technology

It improves the encoding and decoding efficiency of point cloud attribute information, reduces the computational load and bit rate of the filtering process, and enhances the quality of point cloud reconstruction.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024104019_08012026_PF_FP_ABST
    Figure CN2024104019_08012026_PF_FP_ABST
Patent Text Reader

Abstract

Embodiments of the present application provide a point cloud encoding method, a point cloud decoding method, an encoder, a decoder, and a storage medium. The point cloud decoding method comprises: parsing a bitstream, and determining a first filtering coefficient of a first point cloud frame; determining whether to perform a filtering operation on the first point cloud frame; and if it is determined to perform the filtering operation on the first point cloud frame, filtering an original reconstructed attribute value of the first point cloud frame on the basis of the first filtering coefficient, and determining a first reconstructed point cloud.
Need to check novelty before this filing date? Find Prior Art

Description

Point cloud coding method, coder and storage medium TECHNICAL FIELD

[0001] The present application relates to the technical field of point cloud coding, and particularly relates to a point cloud coding method, a coder and a storage medium. BACKGROUND

[0002] In a geometry-based point cloud compression (G-PCC) coding framework, the geometry information and attribute information of a point cloud are coded separately. How to improve the coding performance of the attribute information is a problem to be solved.

[0003] SUMMARY

[0004] Embodiments of the present application provide a point cloud coding method, a coder and a storage medium. Each aspect related to the present application is introduced below.

[0005] In a first aspect, a point cloud decoding method is provided, applied to a decoder, including: parsing a code stream to determine first filter coefficients of a first frame of point cloud; determining whether to perform a filtering operation on the first frame of point cloud; if it is determined to perform the filtering operation on the first frame of point cloud, filtering original reconstructed attribute values of the first frame of point cloud according to the first filter coefficients to determine a first reconstructed point cloud.

[0006] In a second aspect, a point cloud coding method is provided, applied to an encoder, including: determining first filter coefficients of a first frame of point cloud; determining whether to perform a filtering operation on the first frame of point cloud; if it is determined to perform the filtering operation on the first frame of point cloud, filtering original reconstructed attribute values of the first frame of point cloud according to the first filter coefficients to determine a first reconstructed point cloud.

[0007] In a third aspect, a decoder is provided, including: a first determination unit configured to parse a code stream to determine first filter coefficients of a first frame of point cloud; a second determination unit configured to determine whether to perform a filtering operation on the first frame of point cloud; a filtering unit configured to, if it is determined to perform the filtering operation on the first frame of point cloud, filter original reconstructed attribute values of the first frame of point cloud according to the first filter coefficients to determine a first reconstructed point cloud.

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

[0009] In a fifth aspect, an encoder is provided, comprising: a first determining unit configured to determine a first filter coefficient of a first frame of point cloud; a second determining unit configured to determine whether to perform a filtering operation on the first frame of point cloud; and a filtering unit configured to, if it is determined to perform the filtering operation on the first frame of point cloud, filter an original reconstructed attribute value of the first frame of point cloud according to the first filter coefficient to determine a first reconstructed point cloud.

[0010] In a sixth aspect, an encoder is provided, comprising: a memory configured to store a computer program; and a processor configured to, when executing the computer program, perform the method of the second aspect.

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

[0012] In an eighth aspect, a non-volatile computer-readable storage medium storing a bitstream is provided, wherein the bitstream is generated by using an encoding method of an encoder, or the bitstream is decoded by using a decoding method of a decoder, wherein the decoding method is the method of the first aspect, and the encoding method is the method of the second aspect.

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

[0014] After reconstruction, the reconstructed attribute information can be filtered to improve the quality of the reconstructed point cloud. By multiplexing the same set of filter coefficients to filter the reconstructed attribute information of multiple frames of point cloud, the efficiency of filtering can be improved, which in turn helps to improve the coding and decoding efficiency of the attribute information. BRIEF DESCRIPTION OF DRAWINGS

[0015] FIG. 1 is a schematic diagram of a network architecture of point cloud coding.

[0016] FIG. 2A is a schematic diagram of a constituent framework of a G-PCC encoder.

[0017] FIG. 2B is a schematic diagram of a constituent framework of a G-PCC decoder.

[0018] FIG. 3 is a schematic diagram of a process of performing Wiener filtering on a reconstructed point cloud frame.

[0019] FIG. 4 is a schematic diagram of a neighbor point of a current point.

[0020] FIG. 5 is a schematic diagram of a neighboring position of a current point.

[0021] FIG. 6 is a schematic diagram of a decoding method provided by an embodiment of the present application.

[0022] FIG. 7 is a flowchart of an encoding method according to an embodiment of the present application.

[0023] FIG. 8 is a flowchart of filtering a reconstructed point cloud at an encoding end according to an embodiment of the present application.

[0024] FIG. 9 is a flowchart of filtering a reconstructed point cloud at a decoding end according to an embodiment of the present application.

[0025] FIG. 10 is a flowchart of using a filtering coefficient in multiple frames of point clouds according to an embodiment of the present application.

[0026] FIG. 11 is a flowchart of filtering a reconstructed point cloud at an encoding end according to another embodiment of the present application.

[0027] FIG. 12 is a flowchart of filtering a reconstructed point cloud at a decoding end according to another embodiment of the present application.

[0028] FIG. 13 is a flowchart of determining a neighbor point based on a Morden code according to an embodiment of the present application.

[0029] FIG. 14 is a structural diagram of a decoder according to an embodiment of the present application.

[0030] FIG. 15 is a structural diagram of a decoder according to another embodiment of the present application.

[0031] FIG. 16 is a structural diagram of an encoder according to an embodiment of the present application.

[0032] FIG. 17 is a structural diagram of an encoder according to another embodiment of the present application. DETAILED DESCRIPTION

[0033] In order to enable a person skilled in the art to more fully understand the features and technical contents of the embodiments of the present application, the implementation of the embodiments of the present application will be described in detail below with reference to the accompanying drawings, which are only used for reference and are not intended to limit the embodiments of the present application.

[0034] 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 the present application belongs. The terminology used in the description herein is for describing the embodiments of the present application only and is not intended to limit the present application.

[0035] In the following description, "some implementations" are described, which describe a subset of all possible embodiments, but it can be understood that "some implementations" can be the same subset or different subsets of all possible embodiments, and can be combined with each other without conflict.

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

[0037] A point cloud is a set of discrete points in space that are irregularly distributed, expressing the spatial structure and surface attributes of a three-dimensional object or scene. These points contain geometric information for representing spatial positions and attribute information for representing the appearance texture of the point cloud.

[0038] A two-dimensional image has information expressed at each pixel point, and the distribution is regular, so there is no need to record the position information. However, the distribution of points in a point cloud in three-dimensional space has randomness and irregularity, so the position of each point in space needs to be recorded in order to completely express a point cloud. Similar to a two-dimensional image, each position has corresponding attribute information during the collection process, which is usually an RGB color value, and the color value reflects the color of the object. For a point cloud, the attribute information corresponding to each point, in addition to color information, also includes reflectance value, which is commonly used to reflect the surface material of the object. Therefore, point cloud data usually includes position information and attribute information of points. The position information of points can also be referred to as geometric information of points. For example, the geometric information of points can be three-dimensional coordinate values (x, y, z) of points. The attribute information of points can include color information and / or reflectance, etc. For example, the reflectance can be one-dimensional reflectance information (r); the color information can be information on any color space, or the color information 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 another example, the color information can be luma chroma (YCbCr, YUV) information. Y represents luma, Cb (U) represents blue chroma, and Cr (V) represents red chroma.

[0039] According to the principle of laser measurement, the points in the point cloud can include three-dimensional coordinate values of points and reflectance values of points. For another example, according to the principle of photogrammetry, the points in the point cloud can include three-dimensional coordinate values of points and three-dimensional color information of points. For another example, a point cloud is obtained by combining laser measurement and photogrammetry principles, and the points in the point cloud can include three-dimensional coordinate values of points, reflectance values of points, and three-dimensional color information of points.

[0040] At present, the point cloud coding framework that can compress the point cloud can be a G-PCC coding framework provided by a moving picture experts group (MPEG) or a video-based point cloud compression (V-PCC) coding framework, or an AVS-PCC coding framework provided by an AVS or a geometry-based solid content test model (GES-TM). The G-PCC coding framework can be used for compression of a first type of static point cloud and a third type of dynamically acquired point cloud, which can be based on a point cloud compression test model 13 (TMC13), and the V-PCC coding framework can be used for compression of a second type of dynamic point cloud, which can be based on a point cloud compression test model 2 (TMC2). Therefore, the G-PCC coding framework is also referred to as a point cloud codec TMC13, and the V-PCC coding framework is also referred to as a point cloud codec TMC2. The GES-TM is a coding framework proposed for dense point clouds (such as point clouds collected in an augmented reality (AR) or virtual reality (VR) scene).

[0041] An embodiment of the present application provides a network architecture of a point cloud coding system including a decoding method and an encoding method. FIG. 1 is a schematic diagram of a network architecture of a point cloud coding provided by an embodiment of the present application. As shown in FIG. 1, the network architecture includes one or more electronic devices 13 to 1N and a communication network 01, wherein the electronic devices 13 to 1N can perform video interaction through the communication network 01. The electronic devices in the implementation process can be various types of devices with a point cloud coding function, for example, the electronic devices can include a mobile phone, a tablet computer, a personal computer, a personal digital assistant, a navigator, a digital telephone, a video telephone, a television, a sensor device, a server, and the like, and the present application is not limited thereto. The decoder or the encoder in the embodiment of the present application can be the above-mentioned electronic devices.

[0042] The electronic devices in the embodiment of the present application have a point cloud coding function, generally including a point cloud encoder (i.e., an encoder) and a point cloud decoder (i.e., a decoder).

[0043] The following describes related technologies by taking the G-PCC coding framework and the AVS coding framework as examples.

[0044] It can be understood that in the point cloud G-PCC coding framework, for the point cloud data to be encoded, the point cloud data is first divided into multiple slices through slice division. In each slice, the geometry information of the point cloud and the attribute information corresponding to each point are encoded separately.

[0045] FIG. 2A shows a schematic diagram of a G-PCC encoder. As shown in FIG. 2A, in the geometry coding process, the geometry information is subjected to coordinate conversion, so that the point cloud is all contained in a bounding box, and then quantization is performed, which mainly plays a role of scaling. Due to the quantization rounding, the geometry information of a part of the point cloud is the same, and then it is determined based on parameters whether to remove the duplicate points. This process of quantization and removal of duplicate points is also called voxelization process. Then, octree division or prediction tree construction is performed on the bounding box. In this process, the points in the divided leaf nodes are subjected to arithmetic coding to generate a binary geometry bitstream; or the vertices generated by the division are subjected to arithmetic coding (surface fitting based on the vertices) to generate a binary geometry bitstream. In the attribute coding process, after the geometry coding is completed and the geometry information is reconstructed, color conversion is first performed to convert the color information (i.e., attribute information) from the RGB color space to the YUV color space. Then, the point cloud is recolored using the reconstructed geometry information, so that the unencoded attribute information corresponds to the reconstructed geometry information. Attribute coding is mainly performed on color information. In the color information coding process, there are mainly three transformation methods. The first two methods depend on level of detail (LOD) division, which are distance-based lifting transformation and prediction transformation. The third method is to directly perform RAHT. These three methods all convert 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 arithmetic encode the quantized coefficients to generate a binary attribute bitstream.

[0046] FIG. 2B shows a schematic diagram of a G-PCC decoder. As shown in FIG. 2B, for the obtained binary bitstream, the geometry bitstream and the attribute bitstream in the binary bitstream are first independently decoded. In the decoding of the geometry bitstream, the geometry information of the point cloud is obtained through arithmetic decoding-reconstructing octree / reconstructing prediction tree-reconstructing geometry-coordinate inverse conversion; in the decoding of the attribute bitstream, the attribute information of the point cloud is obtained through arithmetic decoding-inverse quantization-LOD division / RAHT-color inverse conversion, and the point cloud data to be encoded (i.e., the output point cloud) is restored based on the geometry information and the attribute information.

[0047] It should be noted that in the current G-PCC geometry coding can be divided into octree-based geometry coding (identified by a dashed box) and prediction tree-based geometry coding (identified by a dotted box) as shown in FIG. 2A or FIG. 2B.

[0048] For octree-based geometry encoding (OctGeomEnc), the octree-based geometry encoding includes: first, coordinate conversion is performed on the geometry information, so that all point clouds are contained in a bounding box. Then quantization is performed, and due to the quantization rounding, the geometry information of a part of points is the same. Whether to remove the duplicate points is determined according to a parameter, and the quantization and removal of duplicate points are also called the voxelization process. Next, the bounding box is continuously divided into a tree (such as an octree, a quadtree, a binary tree, etc.) in the order of breadth-first traversal, and the occupancy code of each node is encoded. In the related art, an implicit geometry division method is proposed, which first calculates the bounding box of the point cloud Assuming d x > d y > d z , the bounding box corresponds to a cuboid. When the geometry is divided, the x-axis is first divided based on the binary tree to obtain two child nodes; until the condition d x = d y > d z is met, the x and y axes are continuously divided based on the quadtree to obtain four child nodes; when the condition d x = d y = d z is met, the octree division is continuously performed until the leaf node obtained by the division is a 1×1×1 unit cube, and the points in the leaf node are encoded to generate a binary code stream. In the process of dividing based on the binary tree / quadtree / octree, two parameters K and M are introduced. The parameter K indicates the maximum number of binary tree / quadtree divisions before octree division; and the parameter M is used to indicate the minimum block edge length corresponding to the binary tree / quadtree division, which is 2 M . At the same time, K and M must satisfy the condition: assuming 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 ; and the parameter M satisfies: M ≥ d minThe parameters K and M satisfy the above conditions because the priority of the partitioning mode in the current G-PCC is binary tree, quad tree and octree. When the node block size does not satisfy the condition of binary tree / quad tree, the octree partitioning is performed on the node until the leaf node of 1*1*1 is obtained. The geometry information coding mode based on the octree can effectively encode the geometry information of the point cloud by using the correlation between the neighboring points in the space.

[0049] After the point cloud is reconstructed at the coding side, the G-PCC coding framework only performs basic reconstruction on the point cloud sequence. For the attribute lossy coding mode, no corresponding post-processing operation is performed to further improve the quality of the reconstructed point cloud color attribute. This may cause the reconstructed point cloud to be quite different from the original point cloud, and the distortion is serious, which affects the quality of the entire point cloud. Therefore, the related technology proposes to filter the attribute information of the reconstructed point cloud to enhance the image quality of the reconstructed point cloud.

[0050] Exemplarily, taking the Wiener filtering of the attribute information of the reconstructed point cloud as an example, as shown in FIG. 3, at the encoding side, the original point cloud and the reconstructed point cloud are taken as inputs, the order of the Wiener filter is K, and the neighborhood of each point is the K-nearest neighbors of the point. Then, according to the Wiener filtering principle, the optimal filtering coefficient of the Wiener filter is calculated for each channel (such as Y, U and V) of the color attribute, and the filtering coefficient is used to filter the reconstructed point cloud to obtain the quality-enhanced point cloud. The calculation method of the filtering coefficient in the filtering process and the filtering principle are introduced below.

[0051] Suppose the order of the Wiener filter is K, and the number of points in the point cloud is n. The original point cloud can be represented as (p1, p2, p3, c1, c2, c3) ∈ R n×6 The geometric position and color attribute 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 by K-nearest neighbors (KNN) search. The matrix is used to represent the color components of the k-nearest neighbors of all n points of the reconstructed point cloud P The optimal coefficient of the Wiener filter is a vector h ∈ R k×1 . Applying h to the color components of the reconstructed point cloud, i.e., c i , i ∈ {1, 2, 3}, the filtered color attribute c

[0052] can be determined based on the following formula:

[0053] According to the color attribute of the original point cloud and the filtered color attribute, an error y∈R n×1 :

[0054] The purpose of the Wiener filter is to find a set of optimal coefficients h opt to minimize the objective function E(y 2 ):

[0055] where E(·) represents the operation of taking the average (expectation approximation) of the vector elements. To calculate h opt , the derivative of the objective function E(y 2 ) with respect to h is set to 0, that is:

[0056] That is:

[0057] Then let the cross-correlation vector and the autocorrelation matrix be A, and it can be obtained that: b―A×h=0 (6)

[0058] Thus, h opt : h opt =A ―1 ×b (7)

[0059] After obtaining the optimal filter coefficients, the peak signal-to-noise ratio (PSNR) of each channel of the reconstructed point cloud 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 filter improves the quality of the color component, and at this time the determination array (that is, the channel corresponding to the color component) and the filter coefficient are written into the bitstream. At the decoding end, first, the determination array is decoded to determine the channel of the color component that needs to be filtered; then, the filter coefficients of the filter are decoded, and the reconstructed point cloud is filtered using the filter coefficients, and the obtained value is used to replace the value of the reconstructed point cloud, to obtain the point cloud with improved quality.

[0060] The related art is introduced above, which filters the reconstructed attribute information of the reconstructed point cloud to enhance the image quality of the reconstructed point cloud. However, the filtering scheme in the related art still has some problems to be solved.

[0061] For example, in the related art, when filtering a reconstructed point cloud of each frame, a filter coefficient of the reconstructed point cloud of the frame needs to be calculated, which reduces the efficiency of the filtering process. In addition, writing the filter coefficient into a bitstream also significantly increases the code rate occupied by the filtering process, affecting the filtering effect.

[0062] For another example, in the filtering process, the manner in which the related art searches for the neighboring points of the current point needs to be improved. For example, in a related art, it is proposed to search for the neighboring points of the current point based on a K-nearest neighbors (KNN) algorithm. However, the KNN neighbor searching manner needs to calculate the distance between the current point and all coded points, which results in a long time for searching the neighboring points and reduces the filtering efficiency. To solve this problem, another related art proposes a scheme for searching for the neighboring points of the current point based on a Morton code. The following describes this searching manner.

[0063] In the coding framework of G-PCC, when encoding attribute information, the point cloud is predicted and encoded in the order of generation of a Level-of-details (LOD). In the process of constructing the LOD, the points in the point cloud are first sorted in a Morton order to ensure that the neighboring points have strong attribute correlation. Therefore, each point in the point cloud has a corresponding Morton code. First, a method provided by the related art for calculating the Morton code of the neighboring points (or adjacent positions) based on the Morton code of the current point is introduced. At the voxel level, a point is a voxel (a unit cube), and the position of the point in the voxel is quantized to the center of the voxel. The voxel represented by the thick dashed line in FIG. 4 is taken as the current point. Then, the Morton code of the neighboring points can be calculated using the Morton code of the current point by using the spatial relationship of the points. Continuing to refer to FIG. 4, it is assumed that the spatial position difference between the current point and the neighboring point 2 is (0, 1, 0), which is the offset of the spatial positions between the current point and the neighboring point. If the spatial position difference (0, 1, 0) is represented by the Morton code, the offset between the current point and the neighboring point 2 can be represented as 2.

[0064] The Morton code subtraction formula is defined as: MortonSub(a, b) = ((a&m)―(b&m)&m)| ((a&m<<1)―(b&m<<1)&m<<1)|((a&m<<2)―(b&m<<2)&m<<2) (8)

[0065] wherein MortonSub(a, b) is a function of a minus b, m is a constant 0x9249249249249, a is the Morton code of the current point, and b is the offset.

[0066] Then, the offset is subtracted from the Morton code of the current point, and the Morton code of the neighboring point 2 is obtained. The method of calculating the Morton code of the neighboring point can also be applied to searching for the neighboring point of the current point through the Morton code of the neighboring position of the current point. For example, FIG. 5 shows a cube with a size of 3*3*3 centered on the current point. If the points in the point cloud are sorted in the order of the Morton code, the current point can usually find the neighboring point of the current point in the 3*3*3 cube when the point cloud is relatively dense. The method of searching for the neighboring point of the current point can include: the offset between the current point and the neighboring position of the current point can be calculated first. Then, the Morton code of the neighboring position is determined according to the difference between the Morton code of the offset and the Morton code of the current point. Then, the Morton code of the neighboring position is compared with the Morton code of the point in the point cloud; if the Morton code of a point is the same as the Morton code of the neighboring position, the point is the neighboring point of the current point.

[0067] However, the method of searching for the neighboring point based on the Morton code still has a large number of neighboring positions, and the Morton code of a plurality of points in the point cloud may need to be compared when it is determined whether the neighboring position has a neighboring point. Therefore, the method of searching for the neighboring point based on the Morton code still has the problem of low efficiency.

[0068] For another example, the filter coefficients for reconstructing the point cloud are usually decimal numbers, and the first four decimal places are retained during filtering. Therefore, before the filter coefficients are encoded at the encoding end, the filter coefficients need to be multiplied by 10000 times, and after the filter coefficients are decoded at the decoding end, the filter coefficients need to be divided by 10000 times, and then the quality of the reconstructed point cloud is enhanced based on the filter coefficients. In addition, when the filter coefficients are used to filter the reconstructed attribute information, because the filter coefficients are decimal numbers, the matrix multiplication in the above formula (7) is a floating-point operation. The value range of the floating-point type number is almost not limited, so more code rates need to be spent to encode the filter coefficients.

[0069] To solve the above problems, an embodiment of the present application provides an encoding method, including: determining a first filter coefficient of a first frame of point cloud; determining whether to perform a filtering operation on the first frame of point cloud; if it is determined to perform the filtering operation on the first frame of point cloud, filtering an original reconstructed attribute value of the first frame of point cloud according to the first filter coefficient, and determining a first reconstructed point cloud.

[0070] An embodiment of the present application also provides a decoding method, including: parsing a code stream, determining a first filter coefficient of a first frame of point cloud; determining whether to perform a filtering operation on the first frame of point cloud; if it is determined to perform the filtering operation on the first frame of point cloud, filtering an original reconstructed attribute value of the first frame of point cloud according to the first filter coefficient, and determining a first reconstructed point cloud.

[0071] The embodiments of the present application filter the reconstructed attribute information of multiple frames of point clouds by multiplexing the same set of filter coefficients, which can improve the filtering efficiency and further improve the coding and decoding efficiency of the attribute information.

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

[0073] FIG. 6 is a flowchart of a decoding method provided by the embodiments of the present application. The decoding method of FIG. 6 can be applied to a decoder. The decoding method of FIG. 6 can be used to decode the attribute information of a point cloud. In some implementations, the decoding method can be applied to G-PCC. Alternatively, in other implementations, the decoding method can be applied to a geometry-based solid content test model (GES-TM). The GES-TM is a coding framework proposed for dense point clouds (such as point clouds captured in an augmented reality (AR) or virtual reality (VR) scene).

[0074] Referring to FIG. 6, in step S610, a bitstream is parsed to determine a first filter coefficient of a first frame of point clouds. The first filter coefficient can be used to filter the reconstructed attribute values of the points of the first frame of point clouds.

[0075] The attribute values can refer to color information of the points in the point cloud. For example, the color information can be RGB information. For another example, the color information can be luminance chroma (YCbCr, YUV) information.

[0076] In step S620, it is determined whether to perform a filtering operation on the first frame of point clouds.

[0077] The embodiments of the present application do not make specific limitations on the manner of determining whether to filter the first frame of point clouds. For example, at the coding and decoding end, it can be determined whether to perform a filtering operation on the first frame of point clouds based on a default pre-defined rule. In some implementations, it can also be indicated whether to perform a filtering operation on the first frame of point clouds based on the auxiliary information (such as syntax elements) of the bitstream.

[0078] In some implementations, it can be determined whether to perform a filtering operation on the first frame of point clouds according to the parsed first identification information.

[0079] In the case where the first identification information indicates that a filtering operation is performed on the first frame of point clouds, the original reconstructed attribute values of the first frame of point clouds are filtered according to the first filter coefficient; otherwise, the original reconstructed attribute values of the first frame of point clouds are not filtered.

[0080] At step S630, if it is determined to perform the filtering operation on the first frame point cloud, the original reconstructed attribute values of the first frame point cloud are filtered according to the first filter coefficient, and a first reconstructed point cloud is determined.

[0081] In the embodiments of the present application, the reconstructed attribute values of other frame point clouds can also be filtered based on the first filter coefficient. For example, the original reconstructed attribute values of the second frame point cloud can be filtered according to the first filter coefficient, and a second reconstructed point cloud is determined.

[0082] The second frame point cloud can also indicate whether to perform the filtering operation based on the auxiliary information (such as syntax elements) of the code stream. In some implementations, whether to perform the filtering operation on the second frame point cloud can be determined according to the parsed second identification information.

[0083] Further, the reconstructed attribute values of other multiple frame point clouds can also be filtered based on the first filter coefficient. By multiplexing the first filter coefficient to filter the reconstructed attribute values of multiple frame point clouds, the present application can reduce the number of times of calculating the filter coefficient, reduce the filter coefficient written into the code stream, thereby helping to improve the efficiency of filtering, and further helping to improve the coding efficiency of attribute information.

[0084] Through relevant tests, it is found that the filter coefficients calculated for the same type of point cloud sequence are similar, so if the same filter coefficient is used to filter adjacent similar point clouds, the effect on the filtering effect is small. Therefore, under the premise of multiplexing the first filter coefficient, the present application can filter the reconstructed attribute values of a sequence of continuous point cloud frames based on the first filter coefficient, thereby helping to improve the filtering effect.

[0085] In some implementations, the above-mentioned sequence of continuous point cloud frames can refer to the same group of frames (group of pictures, GOP). For example, the filter coefficient of the I frame point cloud can be calculated, and then the reconstructed attribute values of multiple P frame point clouds are filtered based on the filter coefficient. Exemplarily, the group of frames here can refer to 8 point cloud frames.

[0086] After decoding the first filter coefficient of the first frame point cloud, in some implementations, the first filter coefficient can be written into the first storage unit. When other frame point clouds are filtered by multiplexing the first filter coefficient, the first filter can be obtained based on the first storage unit. For example, the first filter coefficient can be stored in the buffer of the decoding end, and the second frame point cloud can obtain the first filter coefficient by reading the buffer.

[0087] After the original reconstructed attribute values of the first frame of point cloud are filtered, the filtered reconstructed point cloud frame (i.e., the first reconstructed point cloud) can be taken as a reference frame to perform inter-frame prediction on the attribute values of other point cloud frames (e.g., the next point cloud frame in decoding order of the current point cloud frame). The image quality of the filtered reconstructed point cloud frame is better, and taking the filtered reconstructed point cloud frame as a reference point cloud frame helps to improve the prediction effect of the attribute information of the point cloud, and further helps to improve the decoding efficiency of the attribute information of the point cloud.

[0088] As introduced in step S630 above, the original attribute values of the first point cloud can be filtered based on the first filter coefficients. The filtering manner herein may, for example, include filtering the initial reconstructed attribute values of the current point according to the first filter coefficients and the reconstructed attribute values of the neighboring points of the current point.

[0089] Exemplarily, the reconstructed attribute values of the neighboring points of the current point can be taken as inputs of a Wiener filter, the first filter coefficients are combined, and the output of the Wiener filter is taken as the reconstructed attribute values of the first reconstructed point cloud.

[0090] The reconstructed attribute values of the first reconstructed point cloud can be determined based on the following formula:

[0091] wherein, represents the filtered reconstructed attribute values; represents the reconstructed attribute values of the k neighboring points; h opt represents the first filter coefficients.

[0092] As mentioned above, the related art searches the neighboring points of the current point in the following manner: calculating the offset between the current point and the neighboring position of the current point. Then, the Morton code of the neighboring position is determined according to the difference between the Morton code of the offset and the Morton code of the current point. Then, the Morton code of the neighboring position is compared with the Morton codes of the points in the point cloud; if the Morton code of a point is the same as the Morton code of the neighboring position, then this point is the neighboring point of the current point. It should be noted that the neighboring position of the current point can be the neighboring position of the current point in the octree structure.

[0093] However, the search range of the related art searching the neighboring points based on the Morton code is still large. Taking the 3x3x3 cube in FIG. 5 as an example of the search range, the related art may need to search all the neighboring positions (e.g., 26 neighboring positions) in the cube. In addition, the Morton code of the neighboring position may need to be compared with the Morton codes of multiple points in the point cloud when determining whether the neighboring position has a neighboring point. Therefore, the manner of searching the neighboring points based on the Morton code in the related art still needs to be improved.

[0094] To solve the above problems, in some implementations, the neighbor point of the current point can be determined based on the first mapping relationship and the geometric position information of the first position of the current point. The geometric position information here may, for example, be a Morton code or a three-dimensional coordinate value.

[0095] The first mapping relationship described above includes not only the mapping relationship between the geometric position information and the neighbor point of the current point, but also 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 first frame point cloud, or in other words, there is no point in the first frame point cloud at the first adjacent position.

[0096] When determining whether there is a neighbor point at the first position of the current point, the geometric position information of the first position can be used to determine in the first mapping relationship whether there is a neighbor point at the adjacent position. For example, if the geometric position information of the first position is the same as the geometric position information of the neighbor point in the first mapping relationship, it means that there is a neighbor point of the current point at the first position. Or, 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, it means that there is no neighbor point of the current point at the first position. This approach avoids comparing the geometric position information (such as the Morton code) of the adjacent position with the geometric position information of multiple points in the first frame point cloud in the related art, thereby helping to improve the efficiency of searching for neighbor points and further helping to improve the efficiency of filtering.

[0097] In some implementations, the first mapping relationship can also include the mapping relationship between the geometric position information and all adjacent positions of the current point. The all adjacent positions here include not only the adjacent positions with neighbor points, but also the adjacent positions without neighbor points. The first mapping relationship includes the geometric information of all adjacent positions of the current point, so when determining whether there is a neighbor point at an adjacent position, only the geometric position information of the adjacent position is needed to find the corresponding geometric position information in the first mapping relationship, and then it can be determined whether there is a neighbor point at the adjacent position.

[0098] The first mapping relationship can be determined based on the geometric position information of the points in the first frame point cloud. For example, the mapping relationship between the multiple points in the first frame point cloud and the geometric position information corresponding to the multiple points can be taken as part of the first mapping relationship; then, the geometric position information corresponding to the multiple adjacent positions (excluding the adjacent positions with points) is determined according to the geometric position information of the multiple points in the first frame point cloud; and then, the mapping relationship between the multiple adjacent positions and the geometric position information corresponding to the multiple adjacent positions is taken as another part of the first mapping relationship. The multiple points here may, for example, refer to all points in the first frame point cloud.

[0099] Exemplarily, taking the Morton code as an example of the geometric position information, it is assumed that the Morton codes of all points in the first frame of point cloud are {2, 4, 5, 7, 8, 10, 11, 13, 15}. Then, the point cloud is sorted according to the Morton code size to obtain serial numbers 1 to 9, where each serial number corresponds to a point in the point cloud. The mapping relationship between the points and the Morton codes is obtained according to the serial numbers and the Morton codes, that is, {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 code is due to the fact that part of the adjacent positions of the current point do not exist points, and the missing Morton code in the above mapping relationship is the Morton code of the adjacent position that does not exist points. The missing Morton code is supplemented to the above mapping relationship, and a preset value (such as -1) is set for the serial number of the adjacent position that does not exist points, and the obtained 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, the corresponding serial number -1 in the first mapping relationship indicates that the adjacent position does not exist a near neighbor point; if the Morton code of the first position of the current point is 11, the corresponding serial number 7 in the first mapping relationship indicates that the adjacent position exists a near neighbor point with serial number 7.

[0100] To further reduce the search range when searching for a near neighbor point, in some implementations, the first position searched by the current point can be an adjacent position coplanar with the current position (i.e., the current point), or can be the current position. For example, the positional relationship between the first position and the current position includes any one of the following: the first position is located in front of the current position; the first position is located behind the current position; the first position is located to the left of the current position; the first position is located to the right of the current position; the first position is located above the current position; the first position is located below the current position; and the first position is located at the current position. Since the adjacent position coplanar with the current position has a higher similarity with the current position, the probability of searching for a near neighbor point is higher, thereby helping to improve the search efficiency.

[0101] If the near neighbor points searched by the adjacent position coplanar with the current position are not enough, the adjacent position coplanar with the current position can be searched again.

[0102] The number of near neighbor points of the current point is not specifically limited in the embodiments of the present application. The number of near neighbor points can correspond to the order K of the filter. Exemplarily, if the order of the Wiener filter is 7, at least 7 near neighbor points of the current point need to be determined.

[0103] As introduced above, filtering the reconstructed attribute values of the reconstructed point cloud requires determining at least K neighboring points. If the number of determined neighboring points is less than K, for example, the points at some edge positions in the point cloud can not find K neighboring points, the decoding method shown in FIG. 6 can also determine the remaining neighboring points (or first neighboring points) based on other manners.

[0104] In some implementations, the reconstructed attribute values of the first neighboring points can be determined according to the reconstructed attribute values of the determined neighboring points. For example, the average of the reconstructed attribute values of all the determined neighboring points can be taken as the reconstructed attribute value of the first neighboring point. For another example, the reconstructed attribute value of one of the determined neighboring points can be taken as the reconstructed attribute value of the first neighboring point.

[0105] The filtering in the embodiments of the present application can be any weighted sum of the reconstructed attribute values in the neighborhood. In some implementations, the type of filtering can be Wiener filtering.

[0106] In some implementations, the values in the first filtering coefficients parsed from the code stream can be integers.

[0107] In related technologies, the filtering coefficients of the reconstructed point cloud are usually decimals, and the first four decimal places are retained when filtering. Therefore, before encoding the filtering coefficients at the encoding end, the filtering coefficients need to be multiplied by 10000 times, and after decoding the filtering coefficients at the decoding end, the filtering coefficients need to be divided by 10000 times, and then the quality of the reconstructed point cloud is enhanced based on the filtering coefficients. In addition, when filtering the reconstructed attribute information based on the filtering coefficients, since the filtering coefficients are decimals, the matrix multiplication in the filtering process is a floating point operation. The value range of the floating point type number is almost not limited, so more code rate needs to be spent to encode the filtering coefficients.

[0108] The values in the first filtering coefficients provided by the embodiments of the present application are integers, so that the first filtering coefficients do not need to be rounded at the encoding and decoding ends, and the matrix multiplication in the filtering process is avoided. floating point operation, thereby reducing the amount of calculation in the filtering process, which helps to improve the filtering effect.

[0109] In some implementations, filtering the original reconstructed attribute values of the first frame of point cloud according to the first filtering coefficients to determine the first reconstructed point cloud can include: filtering the original reconstructed attribute values of the first frame of point cloud according to the first filtering coefficients to determine a third reconstructed point cloud; and performing a shift operation on the reconstructed attribute values of the third reconstructed point cloud to determine the reconstructed attribute values of the first reconstructed point cloud.

[0110] When the value in the first filter coefficient is an integer, the first filter coefficient can be understood as an increased filter coefficient based on the original filter coefficient, and thus the original reconstructed attribute value of the first frame of point cloud needs to be shifted (e.g., right shifted) to recover the real value of the reconstructed attribute value after filtering based on the first filter coefficient.

[0111] In some implementations, the decoding method provided by the embodiments of the present application can be applied to the condition of lossless geometry and lossy attribute, or can also be applied to the condition of lossy geometry and lossy attribute.

[0112] In some implementations, one frame of reconstructed point cloud can correspond to one or more filters. For example, if one frame of reconstructed point cloud corresponds to multiple filters, the target filter can be determined based on the difference between the reconstructed attribute value of the neighbor point of the current point and the reconstructed attribute value of the current point. The multiple filters here can correspond to multiple filter coefficients.

[0113] For example, the multiple filters can 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 value of the neighbor point 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 value of the neighbor point is within a second range, the second filter can be selected.

[0114] In some implementations, the neighbor point of the current point can be determined based on a neural network.

[0115] In some implementations, the first filter coefficient can be a frame-level or slice-level filter coefficient. If the first filter coefficient is a slice-level filter coefficient, different slices in the first frame of point cloud can have respective filter coefficients.

[0116] The test results obtained based on the coding and decoding method provided by the embodiments of the present application will be compared with the performance test results obtained based on related technologies to verify the performance improvement brought by the embodiments of the present application.

[0117] Table 1: Test results obtained based on the coding and decoding method provided by the embodiments of the present application under the condition of K=7 and C1

[0118] Table 2: Test results obtained based on the coding and decoding method provided by related technologies under the condition of K=8 and C1

[0119] The test results in Table 1 and Table 2 are obtained by testing 32 frames of each type of multi-frame dynamic point cloud sequence required by MPEG under C1 test conditions in the GPCC reference software ges-tm v4.0-rc1. In Table 1, K = 7 indicates that the order of the Wiener filter is 7, and in Table 2, K = 8 indicates that the order of the Wiener filter is 8.

[0120] The C1 condition is a lossless geometry and lossy attribute encoding mode, and the End-to-End BD-AttrRate represents the BD-Rate of the attribute stream for the end-to-end attribute value. The BD-Rate reflects the difference between the PSNR curves in two cases (i.e., with and without filtering). When the BD-Rate decreases, it means that if the code rate decreases under the condition of equal PSNR, the performance improves, otherwise, if the code rate increases, the performance decreases, that is, the more the BD-Rate decreases, the better the compression effect of the point cloud. Cat2-A average, Cat2-B average and Cat2-C average respectively represent the average of the test results of the point cloud sequences of the three types of data sets in Cat2, and the Overall average is the average of the test results of all sequences.

[0121] As can be seen from the test results in Table 1 and Table 2, the embodiments of the present application can bring very considerable performance improvement, and can significantly save encoding time and decoding time.

[0122] The above describes in detail the decoding method provided by the embodiments of the present application in combination with FIG. 6. The following describes in detail the encoding method provided by the embodiments of the present application in combination with FIG. 7.

[0123] FIG. 7 is a flowchart of an encoding method provided by an embodiment of the present application. The encoding method of FIG. 7 can be applied to an encoder. The encoding method of FIG. 7 can be used to encode attribute information of a point cloud. In some implementations, the encoding method can be applied to G-PCC. Alternatively, in other implementations, the encoding method can be applied to a geometry-based solid content test model (GES-TM). The GES-TM is a coding framework proposed for solid point clouds (such as point clouds collected in an augmented reality (AR) or virtual reality (VR) scene).

[0124] Referring to FIG. 7, in step S710, a first filter coefficient of a first frame of point cloud is determined. The first filter coefficient can be used to filter a reconstructed attribute value of a point of the first frame of point cloud.

[0125] The attribute value can refer to color information of a point in the point cloud. For example, the color information can be RGB information. For another example, the color information can be luminance chroma (YCbCr, YUV) information.

[0126] In step S720, it is determined whether to perform a filtering operation on the first frame point cloud.

[0127] The embodiments of the present application do not make specific limitation on the manner of determining whether to filter the first frame point cloud. For example, at the codec end, it can be determined whether to perform a filtering operation on the first frame point cloud based on a default pre-defined rule. In some implementations, it can also be determined whether to perform a filtering operation on the first frame point cloud based on a rate-distortion cost.

[0128] In some implementations, the manner of determining whether to perform a filtering operation on the first frame point cloud can include: determining a first rate-distortion cost according to the original reconstructed attribute value of the first frame point cloud; determining a second rate-distortion cost according to the reconstructed attribute value of the first reconstructed point cloud; and determining whether to perform a filtering operation on the first frame point cloud according to the first rate-distortion cost and the second rate-distortion cost.

[0129] For example, the first rate-distortion cost corresponding to the original reconstructed attribute value of the first frame point cloud and the second rate-distortion cost corresponding to the reconstructed attribute value of the first reconstructed point cloud can be calculated based on rate distortion optimization (RDO); then, the first rate-distortion cost and the second rate-distortion cost are 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 frame point cloud; and if the first rate-distortion cost is greater than the second rate-distortion cost, a filtering operation is performed on the first frame point cloud.

[0130] In some implementations, the first identification information can be written into a bitstream. The first identification information is used to determine whether to perform a filtering operation on the first frame point cloud.

[0131] Whether the second frame point cloud performs a filtering operation can also be determined based on a rate-distortion cost, which is not repeated here.

[0132] In some implementations, the second identification information can be written into a bitstream. The second identification information is used to indicate whether to perform a filtering operation on the second frame point cloud.

[0133] In some implementations, the first filtering coefficient can be entropy encoded.

[0134] In step S730, if it is determined to perform a filtering operation on the first frame point cloud, the original reconstructed attribute value of the first frame point cloud is filtered according to the first filtering coefficient to determine the first reconstructed point cloud.

[0135] In the embodiments of the present application, the reconstructed attribute values of other frame point clouds can also be filtered based on the first filter coefficient. For example, the original reconstructed attribute values of the second frame point cloud can be filtered according to the first filter coefficient to determine the second reconstructed point cloud.

[0136] Further, the reconstructed attribute values of other multiple frame point clouds can also be filtered based on the first filter coefficient. By multiplexing the first filter coefficient to filter the reconstructed attribute values of multiple frame point clouds, the number of times of calculating the filter coefficient can be reduced, and the filter coefficient written into the code stream can be reduced, thereby helping to improve the efficiency of filtering, and further helping to improve the coding efficiency of attribute information.

[0137] Through relevant tests, it is found that the filter coefficients calculated for the same type of point cloud sequence are similar, so if the same filter coefficient is used to filter adjacent similar point clouds, the effect on the filtering effect is small. Therefore, under the premise of multiplexing the first filter coefficient, the reconstructed attribute values of a sequence of continuous point cloud frames can be filtered based on the first filter coefficient, thereby helping to improve the filtering effect.

[0138] In some implementations, the above-mentioned sequence of continuous point cloud frames can refer to the same group of frames (group of pictures, GOP). For example, the filter coefficient of the I frame point cloud can be calculated, and then the reconstructed attribute values of multiple P frame point clouds are filtered based on the filter coefficient. Exemplarily, the group of frames here can refer to 8 point cloud frames.

[0139] After encoding the first filter coefficient of the first frame point cloud, in some implementations, the first filter coefficient can be written into the first storage unit. When multiplexing the first filter coefficient for filtering, other frame point clouds can obtain the first filter based on the first storage unit. For example, the first filter coefficient can be stored in the buffer of the encoding end, and the second frame point cloud can obtain the first filter coefficient by reading the buffer.

[0140] After the original reconstructed attribute values of the first frame point cloud are filtered, the reconstructed point cloud frame after filtering (i.e., the first reconstructed point cloud) can be used as a reference frame to perform inter-frame prediction on the attribute values of other point cloud frames (such as the next point cloud frame in the encoding order of the current point cloud frame). The image quality of the reconstructed point cloud frame after filtering is better, and using it as a reference point cloud frame helps to improve the prediction effect of the attribute information of the point cloud, and further helps to improve the coding efficiency of the attribute information of the point cloud.

[0141] As introduced in step S730 above, the original attribute values of the first point cloud can be filtered based on the first filter coefficient. The filtering method here can include, for example, filtering the reconstructed attribute values of the current point according to the first filter coefficient and the reconstructed attribute values of the neighboring points of the current point.

[0142] Exemplarily, the reconstructed attribute value of the neighbor point of the current point can be taken as an input of a Wiener filter, combined with the first filter coefficient, and an output of the Wiener filter can be taken as the reconstructed attribute value of the first reconstructed point cloud.

[0143] The reconstructed attribute value of the first reconstructed point cloud can be determined based on the following formula:

[0144] wherein, represents the filtered reconstructed attribute value, represents the reconstructed attribute values of the k neighbor points, h opt represents the first filter coefficient.

[0145] It is mentioned above that the related art searches for the neighbor point of the current point in the following manner: calculating the offset between the current point and the neighboring position of the current point. Then, the Morton code of the neighboring position is determined according to the difference between the Morton code of the offset and the Morton code of the current point. Then, the Morton code of the neighboring position is compared with the Morton code of the points in the point cloud; if the Morton code of a point is the same as the Morton code of the neighboring position, then this point is the neighbor point of the current point.

[0146] However, the search range of the related art searching for the neighbor point based on the Morton code is still large. Taking the 3x3x3 cube in FIG. 5 as an example of the search range, the related art can need to search all the neighboring positions (such as 26 neighboring positions) in the cube. In addition, the Morton code of the neighboring position can need to be compared with the Morton code of multiple points in the point cloud when confirming whether the neighboring position has a neighbor point. Therefore, the manner of searching for the neighbor point based on the Morton code in the related art still needs to be improved.

[0147] To solve the above problems, in some implementations, the neighbor point of the current point can be determined based on a first mapping relationship and the geometric position information of the first position of the current point. The geometric position information can be a Morton code or a three-dimensional coordinate value.

[0148] The first mapping relationship contains the mapping relationship between the geometric position information and the neighbor point of the current point, and also contains the mapping relationship between the geometric position information and the first neighboring position of the current point. The first neighboring position does not correspond to a point in the first frame of point cloud, or in other words, there is no point in the first frame of point cloud on the first neighboring position.

[0149] When determining whether there is a neighboring point at the first position, the current point can determine, based on the geometric position information of the first position, whether there is a neighboring point at the first position in the first mapping relationship. For example, if the geometric position information of the first position is the same as the geometric position information of the neighboring point in the first mapping relationship, it indicates that there is a neighboring point of the current point at the first position. Or, if the geometric position information of the first position is the same as the geometric position information of the first neighboring position in the first mapping relationship, it indicates that there is no neighboring point of the current point at the first position. In this way, the geometric position information (such as the Morton code) of the neighboring position is compared with the geometric position information of the plurality of points of the first frame point cloud, which helps to improve the efficiency of searching for the neighboring point, and further helps to improve the efficiency of filtering.

[0150] In some implementations, the first mapping relationship can further include a mapping relationship between the geometric position information and all neighboring positions of the current point. Here, all neighboring positions include both neighboring positions with neighboring points and neighboring positions without neighboring points. The first mapping relationship includes the geometric information of all neighboring positions of the current point, so when determining whether there is a neighboring point at the neighboring position, only the geometric position information of the neighboring position is needed to find the corresponding geometric position information in the first mapping relationship, and then it can be determined whether there is a neighboring point at the neighboring position.

[0151] The first mapping relationship can be determined based on the geometric position information of the points in the first frame point cloud. For example, the mapping relationship between the plurality of points in the first frame point cloud and the geometric position information corresponding to the plurality of points can be taken as a part of the first mapping relationship; then, the geometric position information corresponding to the plurality of neighboring positions (not including the neighboring positions of the points) is determined according to the geometric position information of the plurality of points in the first frame point cloud; and then, the mapping relationship between the plurality of neighboring positions and the geometric position information corresponding to the plurality of neighboring positions is taken as another part of the first mapping relationship. Here, the plurality of points can refer to all points in the first frame point cloud.

[0152] Exemplarily, taking the Morton code as an example of the geometric position information, it is assumed that the Morton codes of all points in the first frame of point cloud are {2, 4, 5, 7, 8, 10, 11, 13, 15}. Then, the point cloud is sorted according to the Morton code size to obtain serial numbers 1 to 9, where each serial number corresponds to a point in the point cloud. The mapping relationship between the points and the Morton codes is obtained according to the serial numbers and the Morton codes, that is, {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 code is due to the fact that part of the adjacent positions of the current point do not exist points, and the missing Morton code in the above mapping relationship is the Morton code of the adjacent position that does not exist points. The missing Morton code is supplemented to the above mapping relationship, and a preset value (such as -1) is set for the serial number of the adjacent position that does not exist points, and the obtained 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, the corresponding serial number -1 in the first mapping relationship indicates that the adjacent position does not exist a near neighbor point; if the Morton code of the first position of the current point is 11, the corresponding serial number 7 in the first mapping relationship indicates that the adjacent position exists a near neighbor point with serial number 7.

[0153] In order to further reduce the search range when searching for a near neighbor point, in some implementations, the first position searched by the current point can be an adjacent position coplanar with the current position (i.e., the current point), or can be the current position. For example, the positional relationship between the first position and the current position includes any one of the following: the first position is located in front of the current position; the first position is located behind the current position; the first position is located to the left of the current position; the first position is located to the right of the current position; the first position is located above the current position; the first position is located below the current position; and the first position is located at the current position. Since the adjacent position coplanar with the current position has a higher similarity with the current position, the probability of searching for a near neighbor point is higher, thereby helping to improve the search efficiency.

[0154] If the near neighbor points searched by the adjacent position coplanar with the current position are not enough, the adjacent position coplanar with the current position can be searched again.

[0155] The number of near neighbor points of the current point is not specifically limited in the embodiments of the present application. The number of near neighbor points can correspond to the order K of the filter. Exemplarily, if the order of the Wiener filter is 7, at least 7 near neighbor points of the current point need to be determined.

[0156] As introduced above, filtering the reconstruction attribute values of the reconstructed point cloud requires determining at least K neighboring points. If the number of determined neighboring points is less than K, for example, the points at some edge positions in the point cloud can not find K neighboring points, the encoding method shown in FIG. 7 can also determine the remaining neighboring points (or the first neighboring points) based on other manners.

[0157] In some implementations, the reconstruction attribute value of the first neighboring point can be determined according to the reconstruction attribute values of the determined neighboring points. For example, the average of the reconstruction attribute values of all the determined neighboring points can be taken as the reconstruction attribute value of the first neighboring point. For another example, the reconstruction attribute value of one of the determined neighboring points can be taken as the reconstruction attribute value of the first neighboring point.

[0158] The filtering in the embodiments of the present application can be any weighted sum of the reconstruction attribute values in the neighborhood. In some implementations, the type of filtering can be Wiener filtering.

[0159] In some implementations, the values in the first filtering coefficients can be integers.

[0160] In related technologies, the filtering coefficients of the reconstructed point cloud are usually decimals, and the first four decimal places are retained when filtering. Therefore, before encoding the filtering coefficients at the encoding end, the filtering coefficients need to be multiplied by 10000 times, and after decoding the filtering coefficients at the decoding end, the filtering coefficients need to be divided by 10000 times, and then the quality of the reconstructed point cloud is enhanced based on the filtering coefficients. In addition, when filtering the reconstructed attribute information based on the filtering coefficients, since the filtering coefficients are decimals, the matrix multiplication in the filtering process is a floating point operation. The value range of the floating point type number is almost not limited, so more code rate needs to be spent to encode the filtering coefficients.

[0161] The values in the first filtering coefficients provided by the embodiments of the present application are integers, so that the first filtering coefficients do not need to be rounded at the encoding and decoding ends, and the matrix multiplication in the filtering process is avoided. floating point operation, thereby reducing the amount of calculation in the filtering process, which helps to improve the filtering effect.

[0162] In some implementations, the manner of determining the first filtering coefficients can include: determining an autocorrelation matrix and a cross-correlation vector according to the reconstruction attribute values of the neighboring points of the points in the first frame of point cloud and the original reconstruction attribute values of the points in the first frame of point cloud; determining the first filtering coefficients according to the autocorrelation matrix and the cross-correlation vector.

[0163] The first filtering coefficients can be determined based on the following formula: opt ―1 h = A x b (11)

[0164] wherein, h​opt denotes the first filter coefficient, the cross-correlation vector autocorrelation matrix and determined based on the original attribute value of the point in the first frame point cloud, c i determined based on the reconstructed attribute value of the neighbor point of the point in the first frame point cloud.

[0165] In some implementations, a shift operation can be performed on the numerical values of the autocorrelation matrix, or a shift operation can be performed on the cross-correlation vector, for example, in formula (11) the cross-correlation vector b can be shifted left (such as left shift 13 bits), so that the matrix operation is fixed-point operation, and the numerical value in the first filter coefficient is an integer.

[0166] In some implementations, the manner of filtering the original reconstructed attribute value of the first frame point cloud according to the first filter coefficient can include: filtering the original reconstructed attribute value of the first frame point cloud according to the first filter coefficient to determine a third reconstructed point cloud; and performing a shift operation on the reconstructed attribute value of the third reconstructed point cloud to determine the reconstructed attribute value of the first reconstructed point cloud.

[0167] When the numerical value in the first filter coefficient is an integer, the first filter coefficient can be understood as an increased filter coefficient based on the original filter coefficient, and therefore the original reconstructed attribute value of the first frame point cloud needs to be based on a shift operation (such as right shift) after being filtered based on the first filter coefficient, to restore the true value of the reconstructed attribute value.

[0168] In some implementations, the encoding method provided by the embodiments of the present application can be applied under the condition of lossless geometry and lossy attribute, or can also be applied under the condition of lossy geometry and lossy attribute.

[0169] In some implementations, one frame of reconstructed point cloud can correspond to one or more filters. For example, if one frame of reconstructed point cloud corresponds to multiple filters, then the target filter can be determined based on the difference between the reconstructed attribute value of the neighbor point and the reconstructed attribute value of the current point. The multiple filters here can correspond to multiple filter coefficients.

[0170] Exemplarily, the multiple filters can correspond to different neighborhood difference ranges. For example, the multiple filters can 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 value of the neighbor point 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 value of the neighbor point is within a second range, the second filter can be selected.

[0171] In some implementations, the neighbor point of the current point can be determined based on a neural network.

[0172] In some implementations, the first filter coefficient can be a frame-level or slice-level filter coefficient. If the first filter coefficient is a slice-level filter coefficient, different slices in the first point cloud frame can have respective filter coefficients.

[0173] The embodiments of the present application are described below in more detail with reference to specific examples. It should be noted that the examples below are only intended to help those skilled in the art understand the embodiments of the present application, and are not intended to limit the embodiments of the present application to the specific values or specific scenarios shown. Those skilled in the art can obviously make various equivalent modifications or changes based on the examples given below, and such modifications or changes also fall within the scope of the embodiments of the present application.

[0174] FIGS. 8 and 9 show a filter scheme for reconstructing a point cloud according to the present example. As shown in FIG. 8, at the encoding end, first, for the first frame of point cloud in the multiple frames of point cloud, the Wiener filter coefficient is determined based on the scheme introduced above, and the Wiener filter coefficient is applied to the reconstructed point cloud of the first frame for quality enhancement, and the quality-enhanced point cloud is overlaid on the reconstructed point cloud. Then, for the second frame of point cloud in the multiple frames of point cloud, the quality-enhanced first frame of reconstructed point cloud is used for inter-frame prediction of the second frame, and thus the reconstructed point cloud of the second frame is obtained. Finally, for the reconstructed point cloud of the second frame, quality enhancement is performed again based on the Wiener filter for inter-frame prediction of the next frame.

[0175] As shown in FIG. 9, at the decoding end, first, for the first frame of point cloud in the multiple frames of point cloud, the flag indicating whether to use the Wiener filter for quality enhancement and the Wiener filter coefficient are decoded, and then the reconstructed point cloud is obtained by decoding, and quality enhancement is performed based on the Wiener filter, and the quality-enhanced point cloud is overlaid on the original decoded point cloud. Then, in the decoding process of the second frame of point cloud in the multiple frames of point cloud, the quality-enhanced first frame of decoded point cloud is used for the decoding process of the second frame of point cloud, and thus the second frame of decoded point cloud is obtained. Finally, for the second frame of decoded point cloud, quality enhancement is performed again based on the Wiener filter for inter-frame prediction of the next frame.

[0176] FIGS. 10 to 12 show another filter scheme for reconstructing a point cloud according to the present example. In order to solve the problem that the performance improvement is limited due to the large amount of stored Wiener filter coefficients, it is found through tests that the Wiener filter coefficients calculated for the same type of point cloud sequence are similar, so if the same filter coefficient is used for adjacent similar point clouds, the number of times of obtaining the filter coefficient and the number of times of storing the filter coefficient can be reduced, and thus the time required for quality enhancement using the Wiener filter can be further reduced, and the filter performance can be improved.

[0177] To improve the filter performance to a larger extent, the point cloud used as the reference frame should be selected multiple times to calculate the Wiener filter coefficients. In a group of frames (GOF), the I frame (key frame) can be selected to calculate the coefficients. As shown in FIG. 10, for every L frame point cloud (L is 8 in this scheme), only the first frame is used to calculate the Wiener filter coefficients, and the remaining L-1 point cloud frames are enhanced in quality using the parameters calculated from the first frame point cloud (as shown in FIG. 6). To ensure the performance of the Wiener filter, the rate-distortion optimization is used at the encoding end to determine whether the coefficients are used to enhance the quality of each frame, and the flag is encoded into the bitstream.

[0178] In the scheme of this example, to calculate the Wiener filter coefficients and perform the Wiener filtering operation, each point needs to be traversed at the encoding end and the decoding end to obtain the index of the nearest neighbor point of each point, thereby obtaining the attribute values of all the nearest neighbor points of each point. In the encoding and decoding process, the encoding end needs to search for K1 nearest neighbor points, and the decoding end needs to search for K2 nearest neighbor points. Because the order of the Wiener filter and the number of nearest neighbor points need to be matched, K1≥K2. In actual operation, to ensure consistency between encoding and decoding, K1=K2=K is set, and the nearest neighbor points searched by each point are the same.

[0179] This example introduces a filter coefficient inter-frame inheritance scheme on the basis of the dynamic point cloud attribute Wiener filter quality enhancement technology. The operation at the encoding end is shown in FIG. 11.

[0180] (1) For the first frame point cloud in L frame point cloud (L is 8 in this scheme), all the points in the point cloud are traversed in the order of the arrangement of the points in the point cloud, all the attribute values of the original point cloud to be encoded are obtained first, then the point cloud is encoded, the reconstructed point cloud is obtained, each point in the reconstructed point cloud is traversed, the K1 nearest neighbor attribute values of all the points in the reconstructed point cloud are obtained (how to obtain the nearest neighbor will be specifically stated in the part of improvement 2), then the single frame point cloud Wiener filter method shown in FIG. 1 is used to calculate the Wiener filter coefficient (in simple terms, the effect to be achieved is that the K1 nearest neighbor attribute values of the points in the reconstructed point cloud are multiplied by the filter coefficient, which is closest to the attribute values of the original point cloud to the maximum extent), then the coefficient is applied to the K nearest neighbors of the reconstructed point cloud, the quality enhanced reconstructed point cloud attribute values are obtained, the YUV color attribute effects of the filtered point cloud and the original reconstructed point cloud are compared respectively (RDO method is adopted), the YUV flag bit indicating whether to perform Wiener filtering is obtained, whether the filtering method is used in this frame or not, the flag bit indicating whether to use the Wiener filtering (for color attributes, three YUV attributes are respectively provided with flag bits for filtering indication) and the calculated Wiener filter coefficient (three groups of one-dimensional filters with K1 orders for YUV three attributes) need to be encoded first, and then the quality enhanced point cloud is overlaid on the reconstructed point cloud. In order to realize the inheritance of the filter coefficient, a buffer is set in the program to store the filter coefficient, and the filter coefficient is stored in the buffer when the first frame point cloud in every L frame point cloud is encoded.

[0181] (2) For the second frame to the Lth frame in L frame point cloud, the quality enhanced reconstructed point cloud of the previous frame is used for inter-frame prediction of the next frame, and then the reconstructed point cloud of the next frame is obtained (no modification is made, and the inter-frame prediction scheme in the original program is used). For the reconstructed point cloud, the K1 nearest neighbor attribute values of all the points are obtained by using the same nearest neighbor search scheme described in (1), the filter coefficient does not need to be calculated, the Wiener filter coefficient inherited from the first frame point cloud in L frame point cloud (that is, the filter coefficient in the buffer is directly read) is directly used for quality enhancement, and the rate-distortion optimization is used to determine the Wiener filtering flag bit (for color attributes, three YUV attributes are respectively provided with flag bits for filtering indication), then the quality enhanced point cloud is overlaid on the reconstructed point cloud, and only the filtering flag bit needs to be encoded.

[0182] (3) For the next group of L frame point cloud, the processes in steps (1) and (2) are repeated until all point cloud frames are encoded.

[0183] The operation of the present example at the decoding end is shown in FIG. 12. (1) For the first frame of point cloud in L frames of point cloud (L is taken as 8 in the present scheme), the reconstructed point cloud is first decoded, then a flag indicating whether to use the Wiener filter for quality enhancement is decoded, and then the Wiener filter coefficients are decoded. Then, the same method as that at the encoding end is used (to ensure the consistency of the encoding and decoding required by the program), and each point in the reconstructed point cloud is traversed to obtain the attribute values of the K2 nearest neighbor points of all points. According to the indication of the flag, the attribute values of the K2 nearest neighbor points are multiplied by the filter coefficients to obtain the quality-enhanced reconstructed point cloud, and the quality-enhanced point cloud is overlaid on the original decoded reconstructed point cloud. In order to realize the inheritance of the filter coefficients, a buffer is also needed to be set in the decoding end program for storing the filter coefficients. When decoding the first frame of point cloud in each L frames of point cloud, the filter coefficients are decoded and stored in the buffer.

[0184] (2) For the second frame to the Lth frame of point cloud in L frames of point cloud, the quality-enhanced reconstructed point cloud of the previous frame is used for inter-frame prediction of the next frame to obtain the reconstructed point cloud of the next frame (without modification, the inter-frame prediction scheme in the original program is used). Then, the filter flag of the frame needs to be decoded, and then the same nearest neighbor search scheme described in (1) is used to obtain the attribute values of the K2 nearest neighbors of all points, which are quality-enhanced according to the indication of the flag. The filter coefficients used for quality enhancement do not need to be decoded, but are directly read from the filter coefficients in the buffer. Finally, the quality-enhanced point cloud is overlaid on the original decoded point cloud.

[0185] (3) For the next group of L frames of point cloud, the processes in steps (1) and (2) are repeated until all point cloud frames are decoded.

[0186] Although the nearest neighbor search technology based on the Morton code significantly speeds up the nearest neighbor search process, it is found through tests that a lot of time is consumed in the process of judging whether the nearest neighbor position is empty in the nearest neighbor search process, which can be optimized. At the same time, in order to further compress the time required for the nearest neighbor search, the nearest neighbor search range can be reduced. Next, the scheme for searching the nearest neighbor points provided by the present example is described in detail.

[0187] (1) Reduce the search range of the near neighbor. Since the closer to the current point (i.e. the center point), the more likely the near neighbor points are dense, and the more likely the near neighbor points have similar attribute values to the current point, in order to end the search as soon as possible and to make the search result more accurate, only consider the near neighbor positions that are coplanar with the current point (i.e. the near neighbor positions in front of, behind, left of, right of, above and below the current point) and the current point, a total of seven positions, when writing the offset to the search table. After obtaining the search table, the search process is as follows: for any target point, first calculate the Morton code of its first adjacent position according to the search table, if this position is not empty, i.e. there is a point, then the point is one of the near neighbor points of the target point; if this position is empty, i.e. there is no point, then assign the attribute value of the current point to the attribute value of the near neighbor position. Through this near neighbor search method, it can be guaranteed that for each point, 7 near neighbor position attribute values can be found for Wiener filtering.

[0188] (2) Optimize the process of judging the position of the hole. In the previous scheme, for each frame of point cloud, a correspondence table of all points' Morton codes and point sequence numbers is established. For each calculated near neighbor position Morton code, it needs to be searched in this correspondence table to find out whether there is a corresponding Morton code, and then index the near neighbor point sequence number. Tests have found that because the Morton code of the three-dimensional point cloud is not continuous, a long time will be consumed in the search process in the correspondence table, so a new scheme for judging the position of the hole can be used. In the process of establishing the correspondence table of all points' Morton codes and point sequence numbers, for the hole Morton code (i.e. the corresponding point position is a hole, and there is no point), the corresponding point sequence 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 the point can be used to index, if the index is -1, it proves that the adjacent position is a hole point, if the index value is not -1, it proves that it is not a hole point, and can be stored in the near neighbor point table as a near neighbor point.

[0189] After the above improvements, the specific data flow of searching for the K nearest neighbor points is described as follows:

[0190] (1) Corresponding table construction: before performing the near neighbor search, a corresponding table needs to be constructed first. The construction process of the corresponding table is as follows: ① In the previous attribute information coding process, a point sequence is used to sort the points in the point cloud according to the size of the Morton code of the points. The largest Morton code number in all points can be obtained from the point sequence. Then a corresponding table is constructed. The index of the corresponding table is 0~the largest Morton code number, and the values indexed by the corresponding table are all set to -1 (for example, if the largest Morton code number is 100, the constructed corresponding table is {0:-1, …, 100:-1}). ② Traverse all points in the point cloud. For each point in the point cloud, the index is the Morton code of the point, and the value indexed is the sequence number of the point (for example, if the sequence number of the first point in the sequence is 1, the Morton code of the point is 4, the sequence number of the second point is 2, and the Morton code of the point is 6, then the corresponding table is {0:-1, 1:-1, 2:-1, 3:-1, 4:1, 5:-1, 6:2, …, 100:-1}).

[0191] (2) Search table construction: only seven values are stored in the search table, i.e. the current point position and the near neighbor positions coplanar with the current position (i.e. the near neighbor positions in front, behind, left, right, above and below the current point) and the offset between the current point position and the near neighbor positions. The offset is written into the search table.

[0192] (3) Near neighbor search process: traverse each point in the point cloud. For each point, the first adjacent position of the point is calculated according to the search table. If the value indexed in the corresponding table is not -1, it means that there is a point in this position, and the sequence number indexed is stored. The point is one of the near neighbor points of the target point. If the value indexed in the corresponding table is -1, it means that there is no point in this position, and the attribute value of the current point is assigned to the attribute value of the near neighbor position.

[0193] The way of determining the near neighbor points in this example will be described in detail below in combination with FIG. 13.

[0194] Referring to FIG. 13, in step S1310a, the search starts.

[0195] In step S1310b, the current point in the point cloud is input.

[0196] In step S1320a, the Morton code of the current point is determined.

[0197] In step S1320b, it is determined whether the current point has K near neighbor points. If the current point has K near neighbor points, step S1330 is performed, i.e. the search ends; otherwise, step S1340 is performed.

[0198] At step S1340, the Morton code of the neighboring position is determined according to the offset value of the search table. The determination manner of the Merton code of the neighboring position has been introduced in the foregoing, and will not be described herein again.

[0199] At step S1350, it is judged whether the neighboring position is empty. If the neighboring position is empty, step S1340 is continuously executed; otherwise, it is determined that the neighboring position exists a near neighbor point, and step S1370 is executed.

[0200] At step S1360, the near neighbor point is added into the near neighbor point list of the current point.

[0201] At step S1370, the attribute value of the current point is used as the attribute value of the neighboring position.

[0202] At step S1380, the search is ended.

[0203] In the related art, the filter coefficient for reconstructing the point cloud is usually a decimal number, and the first four decimal places are kept during the filtering. Therefore, before encoding the filter coefficient at the encoding end, the filter coefficient needs to be multiplied by 10000 times, and after decoding the filter coefficient at the decoding end, the filter coefficient needs to be divided by 10000 times, and then the filter coefficient is used to enhance the quality of the reconstructed attribute information. In addition, when the filter coefficient is used to filter the reconstructed attribute information, since the filter coefficient is a decimal number, the matrix multiplication in the filtering process is a floating point operation. The value range of the floating point type number is almost not limited, so more code rate needs to be spent to encode the filter coefficient.

[0204] The calculation manner of the Wiener filter coefficient is shown in the following formula: h opt = A ―1 × b (12)

[0205] Wherein, h opt is the Wiener filter coefficient, the cross-correlation vector is the autocorrelation matrix and is determined based on the original attribute value of the point in the point cloud, c i is determined based on the reconstructed attribute value of the near neighbor point of the point in the point cloud.

[0206] In order to avoid using decimal numbers for operation, at the encoding end, a shift operation is used in the process of calculating the Wiener filter coefficient. Specifically, in formula (12), each number in the one-dimensional vector b is left shifted by 13 bits, so that the operation in the matrix operation is fixed point operation, and does not involve decimal number. The obtained Wiener filter coefficient h opt is also an integer, and does not need to be divided again. When encoding the Wiener filter, the calculated Wiener filter coefficient h opt can be directly encoded.

[0207] At the decoding end, the decoded h opt The reconstructed point cloud is filtered, and after filtering, the filtered result needs to be right shifted by 13 bits.

[0208] The present example uses the same filter coefficient for adjacent point clouds in a dynamic point cloud, reducing the number of times the filter coefficient is calculated, reducing the number of times the filter coefficient is stored, and further reducing the time required for quality enhancement using Wiener filtering, while improving the performance of the filter. In the Morton code-based nearest neighbor search technique, the present example optimizes the hole position judgment process, while reducing the nearest neighbor search range, significantly accelerating the nearest neighbor search process. In order to avoid using decimal operations in the scheme, the present example uses shift operations instead of division operations and floating point operation operations in the code.

[0209] The method embodiments of the present application are described in detail above in conjunction with FIGS. 1-13, and the device embodiments of the present application are described in detail below in conjunction with FIGS. 14-18. It should be understood that the description of the method embodiments corresponds to the description of the device embodiments, and therefore, the parts not described in detail can be referred to the foregoing method embodiments.

[0210] FIG. 14 is a structural schematic diagram of a decoder according to an embodiment of the present application. As shown in FIG. 14, the decoder 1400 can include a first determination unit 1410, a second determination unit 1420, and a filtering unit 1430.

[0211] The first determination unit 1410 is configured to parse a bitstream and determine a first filter coefficient of a first frame of point clouds.

[0212] The second determination unit 1420 is configured to determine whether to perform a filtering operation on the first frame of point clouds.

[0213] The filtering unit 1430 is configured to, if it is determined to perform the filtering operation on the first frame of point clouds, filter original reconstructed attribute values of the first frame of point clouds according to the first filter coefficient, and determine a first reconstructed point cloud.

[0214] In some implementations, the decoder 1400 is further configured to filter original reconstructed attribute values of a second frame of point clouds according to the first filter coefficient, and determine a second reconstructed point cloud.

[0215] In some implementations, the second frame of point clouds is any one of a plurality of frames of point clouds.

[0216] In some implementations, the plurality of frames of point clouds are a sequence of continuous frames of point clouds.

[0217] In some embodiments, the first frame point cloud is an I-frame point cloud, and / or the second frame point cloud is a P-frame point cloud; and the first frame point cloud and the second frame point cloud belong to the same group of frames.

[0218] In some embodiments, the decoder 1400 is further configured to write the first filter coefficient into a first storage unit; determine the first filter coefficient according to the first storage unit; and filter the original reconstructed attribute value of the second frame point cloud according to the first filter coefficient to determine the second reconstructed point cloud.

[0219] In some embodiments, the decoder 1400 is further configured to parse first identification information, the first identification information being used to indicate whether a filtering operation is performed on the first frame point cloud; and if the first identification information indicates that the filtering operation is performed on the first frame point cloud, filter the original reconstructed attribute value of the first frame point cloud according to the first filter coefficient to determine the first reconstructed point cloud.

[0220] In some embodiments, the decoder 1400 is further configured to parse second identification information, the second identification information being used to indicate whether a filtering operation is performed on the second frame point cloud; and if the second identification information indicates that the filtering operation is performed on the second frame point cloud, filter the original reconstructed attribute value of the second frame point cloud according to the first filter coefficient to determine the second reconstructed point cloud.

[0221] In some embodiments, the decoder 1400 is further configured to perform inter-frame prediction on the second frame point cloud according to the first reconstructed point cloud to determine the original reconstructed attribute value of the second frame point cloud.

[0222] In some embodiments, the decoder 1400 is further configured to filter the original reconstructed attribute value of the current point according to the first filter coefficient and the reconstructed attribute value of the neighboring point of the current point.

[0223] In some embodiments, the neighboring point 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 comprises a mapping relationship between the geometric position information and the neighboring point of the current point, and the first mapping relationship further comprises a mapping relationship between the geometric position information and a first adjacent position of the current point, the first adjacent position not corresponding to a point in the first frame point cloud.

[0224] In some embodiments, the first mapping relationship comprises a mapping relationship between the geometric position information and all adjacent positions of the current point.

[0225] In some embodiments, the first mapping relationship is determined based on a plurality of points in the first frame point cloud and geometric position information of the plurality of points.

[0226] In some embodiments, the first position is a neighboring position coplanar with the current position of the current point, and / or the first position is the current position of the current point.

[0227] In some embodiments, the positional relationship between the first position and the current position comprises any one of the following:

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

[0229] The first position is directly behind the current position;

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

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

[0232] The first position is directly above the current position;

[0233] The first position is directly below the current position;

[0234] The first position is the current position.

[0235] In some embodiments, the geometric position information of the first position comprises:

[0236] a Morton code of the first position; or

[0237] three-dimensional coordinate information of the first position.

[0238] In some embodiments, the first position is a neighboring position of the current point in an octree structure.

[0239] In some embodiments, the numerical value in the first filter coefficient is an integer.

[0240] In some embodiments, the decoder 1400 is further configured to filter the original reconstructed attribute values of the first frame point cloud according to the first filter coefficient, to determine a third reconstructed point cloud; and perform a shift operation on the reconstructed attribute values of the third reconstructed point cloud, to determine the reconstructed attribute values of the first reconstructed point cloud.

[0241] In some embodiments, the filtering is Wiener filtering.

[0242] It can be understood that, in the embodiments of the present application, the "unit" can be a part of circuit, a part of processor, a part of program or software, etc., and of course can also be a module, and can also be non-modular. Moreover, the components in the embodiments can be integrated in a processing unit, or can be physically present separately, or two or more units can be integrated in one unit. The integrated unit can be realized in the form of hardware or in the form of a software function module.

[0243] When the integrated unit is realized in the form of a software function module and is not sold or used as an independent product, it can be stored in a computer readable storage medium. Based on this understanding, the technical solutions of the embodiments can be embodied in the form of a software product in essence or in the form of a software product that contributes to the prior art or the whole or part of the technical solutions. The computer software product is stored in a storage medium and includes a plurality of instructions for causing a computer device (which can be a personal computer, a server, or a network device, etc.) or a processor to execute all or part of the steps of the method described in the embodiments. The foregoing storage medium includes a U disk, a mobile hard disk, a read only memory (ROM), a random access memory (RAM), a magnetic disk or an optical disk, and various media that can store program codes.

[0244] Therefore, the embodiments of the present application provide a computer readable storage medium applied to the decoder 1400, which stores a computer program. The computer program is executed by a processor to implement the decoding method described in any one of the foregoing embodiments.

[0245] Based on the components of the foregoing decoder 1400 and the computer readable storage medium, referring to FIG. 15, a specific hardware structure schematic diagram of an encoder 1400 provided by the embodiments of the present application is shown. As shown in FIG. 15, the encoder 1500 can include a communication interface 1510, a memory 1520 and a processor 1530; the various components are coupled together through a bus system 1540. It can be understood that the bus system 1540 is used to realize the connection communication between the components. The bus system 1540 includes a data bus, a power supply bus, a control bus and a state signal bus. However, for the purpose of clear illustration, various buses are marked as the bus system 1540 in FIG. 15. Among them,

[0246] The communication interface 1510 is used for receiving and sending signals in the process of transceiving information with other external network elements;

[0247] The memory 1520 is used for storing a computer program;

[0248] The processor 1530 is configured to, when the computer program is executed:

[0249] parsing a bitstream to determine a first filter coefficient of a first frame of point cloud;

[0250] determining whether to perform a filtering operation on the first frame of point cloud;

[0251] if it is determined to perform the filtering operation on the first frame of point cloud, filtering original reconstructed attribute values of the first frame of point cloud according to the first filter coefficient to determine a first reconstructed point cloud.

[0252] It can be understood that the memory 1520 in the embodiments of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Among them, the non-volatile memory can be read-only memory (read-only memory, ROM), programmable read-only memory (programmable ROM, PROM), erasable programmable read-only memory (erasable PROM, EPROM), electrically erasable programmable read-only memory (electrically EPROM, EEPROM) or flash memory. The volatile memory can be random access memory (random access memory, RAM) used as an external cache. By way of example and not limitation, many forms of RAM are available, such as static random access memory (static RAM, SRAM), dynamic random access memory (dynamic RAM, DRAM), synchronous dynamic random access memory (synchronous DRAM, SDRAM), double data rate synchronous dynamic random access memory (double data rate SDRAM, DDR SDRAM), enhanced synchronous dynamic random access memory (enhanced SDRAM, ESDRAM), synchronous link dynamic random access memory (synchlink DRAM, SLDRAM) and direct memory bus random access memory (direct rambus RAM, DRRAM). The memory 1520 of the system and method described in the present application is intended to include but not limited to these and any other suitable types of memory.

[0253] The processor 1530 can be an integrated circuit chip on which signal processing capabilities are implemented. In implementation, the steps of the above method can be completed by integrated logic circuits or instructions in software form in the processor 1530. The processor 1530 described above 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, discrete hardware components. The methods, steps and logic block diagrams disclosed in the embodiments of the present application can be implemented or executed. The general purpose processor can be a microprocessor or the processor can also be any conventional processor. The steps of the method disclosed in conjunction with the embodiments of the present application can be directly embodied as a hardware code processor to execute, or be executed by a combination of hardware and software modules in the code processor. The software module can be located in a random access memory, a flash memory, a read only memory, a programmable read only memory or an electrically erasable programmable memory, a register, etc. The storage medium is located in the storage 1520, and the processor 1530 reads the information in the storage 1520 and combines the hardware to complete the steps of the above method.

[0254] It can be understood that the embodiments described in the present application can be realized by 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), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), general purpose processors, controllers, microcontrollers, microprocessors, other electronic units for executing functions described in the present application or a combination thereof. For software implementation, the technologies described in the present application can be implemented by modules (such as processes, functions, etc.) for executing functions described in the present application. The software code can be stored in a memory and executed by a processor. The memory can be implemented in the processor or outside the processor.

[0255] Optionally, as another embodiment, the processor 1530 is further configured to, when running the computer program, perform the decoding method of any one of the preceding embodiments.

[0256] FIG. 16 is a structural schematic diagram of an encoder according to an embodiment of the present application. As shown in FIG. 16, the encoder 1600 includes a first determining unit 1610, a second determining unit 1620, and a filtering unit 1630.

[0257] The first determining unit 1610 is configured to determine a first filter coefficient of a first frame of point clouds.

[0258] The second determining unit 1620 is configured to determine whether to perform a filtering operation on the first frame of point clouds.

[0259] The filtering unit 1630 is configured to, if it is determined to perform the filtering operation on the first frame of point clouds, filter original reconstructed attribute values of the first frame of point clouds according to the first filter coefficient, and determine a first reconstructed frame of point clouds.

[0260] In some implementations, the encoder 1600 is configured to filter original reconstructed attribute values of a second frame of point clouds according to the first filter coefficient, and determine a second reconstructed frame of point clouds.

[0261] In some implementations, the second frame of point clouds is any one of a plurality of frames of point clouds.

[0262] In some implementations, the plurality of frames of point clouds is a sequence of continuous frames of point clouds.

[0263] In some implementations, the first frame of point clouds is an I-frame of point clouds, and / or the second frame of point clouds is a P-frame of point clouds; and the first frame of point clouds and the second frame of point clouds belong to the same group of frames.

[0264] In some implementations, the encoder 1600 is configured to write the first filter coefficient into a first storage unit.

[0265] The filtering of the original reconstructed attribute values of the second frame of point clouds according to the first filter coefficient to determine the second reconstructed frame of point clouds includes:

[0266] According to the first storage unit, the first filter coefficient is determined.

[0267] According to the first filter coefficient, the original reconstructed attribute values of the second frame of point clouds are filtered to determine the second reconstructed frame of point clouds.

[0268] In some embodiments, the encoder 1600 is configured to determine a first rate-distortion cost according to the original reconstructed attribute value of the first frame point cloud; determine a second rate-distortion cost according to the reconstructed attribute value of the first reconstructed point cloud; and determine whether to perform the filtering operation on the first frame point cloud according to the first rate-distortion cost and the second rate-distortion cost.

[0269] In some embodiments, the encoder 1600 is configured to write first identification information into the bitstream, the first identification information being used to indicate whether to perform the filtering operation on the first frame point cloud; if the first rate-distortion cost is less than or equal to the second rate-distortion cost, the first identification information indicates not to perform the filtering operation on the first frame point cloud; and if the first rate-distortion cost is greater than the second rate-distortion cost, the first identification information indicates to perform the filtering operation on the first frame point cloud.

[0270] In some embodiments, the encoder 1600 is configured to write second identification information into the bitstream, the second identification information being used to indicate whether to perform the filtering operation on the second frame point cloud.

[0271] In some embodiments, the encoder 1600 is configured to determine the original reconstructed attribute value of the second frame point cloud according to the inter prediction of the second frame point cloud based on the first reconstructed point cloud.

[0272] In some embodiments, the encoder 1600 is configured to filter the original reconstructed attribute value of the current point according to the first filtering coefficient and the reconstructed attribute value of the neighbor point of the current point, wherein the neighbor point 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 comprises a mapping relationship between the geometric position information and the neighbor point of the current point, and the first mapping relationship further comprises a mapping relationship between the geometric position information and a first adjacent position of the current point, the first adjacent position does not correspond to a point in the first frame point cloud.

[0273] In some embodiments, the first mapping relationship comprises a mapping relationship between the geometric position information and all adjacent positions of the current point.

[0274] In some embodiments, the first mapping relationship is determined based on a plurality of points in the first frame point cloud and geometric position information of the plurality of points.

[0275] In some embodiments, the first position is an adjacent position coplanar with a current position of the current point, and / or the first position is the current position of the current point.

[0276] In some embodiments, the positional relationship between the first position and the current position comprises any one of the following:

[0277] The first position is directly in front of the current position.

[0278] The first position is directly behind the current position.

[0279] The first position is directly to the left of the current position.

[0280] The first position is directly to the right of the current position.

[0281] The first position is directly above the current position.

[0282] The first position is directly below the current position.

[0283] The first position is the current position.

[0284] In some embodiments, the geometric position information of the first position comprises:

[0285] Morton code of the first position; or,

[0286] Three-dimensional coordinate information of the first position.

[0287] In some embodiments, the first position is a neighboring position of the current point in an octree structure.

[0288] In some embodiments, the numerical value in the first filter coefficient is an integer.

[0289] In some embodiments, the encoder 1600 is configured to filter the original reconstructed attribute values of the first frame point cloud according to the first filter coefficient, to determine a third reconstructed point cloud; and perform a shift operation on the reconstructed attribute values of the third reconstructed point cloud to determine the reconstructed attribute values of the first reconstructed point cloud.

[0290] In some embodiments, the encoder 1600 is configured to determine a self-correlation matrix and a cross-correlation vector according to the reconstructed attribute values of the neighboring points of the points in the first frame point cloud and the original reconstructed attribute values of the points in the first frame point cloud; and determine the first filter coefficient according to the self-correlation matrix and the cross-correlation vector.

[0291] In some embodiments, the self-correlation matrix is a matrix subjected to a shift operation; and / or, the cross-correlation vector is a vector subjected to a shift operation.

[0292] In some embodiments, the filtering is Wiener filtering.

[0293] In some implementations, the encoder 1600 is configured to entropy encode the first filter coefficients.

[0294] It can be understood that, in the embodiments of the present application, the "unit" can be a part of circuit, a part of processor, a part of program or software, etc., and of course can also be a module, and can also be non-modular. Moreover, the components in the embodiments can be integrated in a processing unit, or can be physically present individually, or two or more units can be integrated in one unit. The integrated unit can be realized in the form of hardware or in the form of a software function module.

[0295] The integrated unit, if realized in the form of a software function module and not sold or used as an independent product, can be stored in a computer readable storage medium. Based on this understanding, the technical solutions of the embodiments can be embodied in the form of a software product, the computer software product is stored in a storage medium, and includes a plurality of instructions for causing a computer device (which can be a personal computer, a server, or a network device, etc.) or a processor to perform all or part of the steps of the method described in the embodiments. The foregoing storage medium includes: a U disk, a mobile hard disk, a ROM, a RAM, a magnetic disk or an optical disk, and various program code storage media.

[0296] Therefore, the embodiments of the present application provide a computer readable storage medium applied to the encoder 1600, the computer readable storage medium stores a computer program, and the computer program is executed by a processor to implement the encoding method in any one of the foregoing embodiments or the code stream generated by the encoding method.

[0297] Based on the components of the foregoing encoder 1600 and the computer readable storage medium, referring to FIG. 17, a specific hardware structure schematic diagram of the encoder 1600 is shown. As shown in FIG. 17, the encoder 1700 can include a communication interface 1710, a memory 1720 and a processor 1730; the components are coupled together through a bus system 1740. It can be understood that the bus system 1740 is used to realize the connection and communication between the components. The bus system 1740 includes a data bus, a power supply bus, a control bus and a state signal bus. However, for the purpose of clear illustration, all kinds of buses are marked as the bus system 1740 in FIG. 17. Among them,

[0298] The communication interface 1710 is used for receiving and sending signals in the process of transceiving information with other external network elements;

[0299] The memory 1720 is used for storing a computer program;

[0300] a processor 1730, configured to, when the computer program is run, perform:

[0301] determine a first filter coefficient of a first frame point cloud;

[0302] determine whether to perform a filter operation on the first frame point cloud;

[0303] if it is determined to perform the filter operation on the first frame point cloud, filter original reconstructed attribute values of the first frame point cloud according to the first filter coefficient to determine a first reconstructed point cloud.

[0304] It can be understood that the memory 1720 in the embodiments of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. The non-volatile memory can be a ROM, a PROM, an EPROM, an EEPROM, or a flash memory. The volatile memory can be a RAM used as an external cache. By way of example, but not limitation, many forms of RAMs can be used, such as SRAM, DRAM, SDRAM, DDRSDRAM, ESDRAM, SLDRAM, and DRDRAM. The memory 1720 of the system and method described in the present application is intended to include, but not limited to, these and any other suitable types of memory.

[0305] The processor 1730 can be an integrated circuit chip having a processing capability of signals. In the implementation process, each step of the above method can be completed by integrated logic circuits of hardware in the processor 1730 or instructions in the form of software. The processor 1730 described above can be a general processor, a DSP, an ASIC, an FPGA, or other programmable logic devices, discrete gates or transistor logic devices, discrete hardware components. Each method, step and logic block diagram disclosed in the embodiments of the present application can be implemented or executed. The general processor can be a microprocessor or the processor can also be any conventional processor. The steps of the method disclosed in conjunction with the embodiments of the present application can be directly embodied as a hardware code processor to execute, or a combination of hardware and software modules in the code processor to execute. The software module can be located in a random access memory, a flash memory, a read-only memory, a programmable read-only memory, or an electrically erasable programmable memory, a register, or other mature storage media in the art. The storage medium is located in the memory 1720, and the processor 1730 reads the information in the memory 1720 and combines the hardware to complete the steps of the above method.

[0306] It is understood that the embodiments described herein can be implemented in hardware, software, firmware, middleware, microcode, or any combination thereof. For a hardware implementation, the processing units can be implemented within one or more ASICs, DSPs, DSPDs, PLDs, FPGAs, general purpose processors, controllers, micro-controllers, microprocessors, other electronic units designed to perform the functions described herein, or a combination thereof.

[0307] Optionally, as another embodiment, the processor 1730 is further configured to, when running the computer program, perform the encoding method in any one of the preceding embodiments.

[0308] The embodiments of the present application further provide a computer readable storage medium, which is a non-volatile computer readable storage medium storing a bitstream, the bitstream can be generated by using the encoding method of the encoder, or the bitstream is decoded by using the decoding method of the decoder, wherein the decoding method can be the decoding method in any one of the preceding embodiments, and the encoding method can be the encoding method in any one of the preceding embodiments.

[0309] It should be noted that, in the present application, the term "comprising" or "including" or any other variant thereof is intended to cover non-exclusive inclusion, so that a process, method, article or apparatus including a series of elements includes not only those elements, but also other elements not explicitly listed, or further includes elements inherent to such process, method, article or apparatus. Without more limitations, the element defined by the statement "comprising a" does not exclude the presence of additional identical elements in the process, method, article or apparatus including the element.

[0310] The serial numbers of the embodiments of the present application are only for description, and do not represent the advantages or disadvantages of the embodiments.

[0311] The methods disclosed in the several method embodiments of the present application can be combined arbitrarily without conflict to obtain new method embodiments.

[0312] The features disclosed in the several product embodiments of the present application can be combined arbitrarily without conflict to obtain new product embodiments.

[0313] The features disclosed in the several method or device embodiments of the present application can be combined arbitrarily without conflict to obtain new method or device embodiments.

[0314] The above merely provides the specific implementation of the present application, but the protection scope of the present application is not limited to this. Any person skilled in the art can easily think of the changes or replacements within the technical range disclosed by the present application, which should be covered in the protection scope of the present application. Therefore, the protection scope of the present application should be subject to the protection scope of the claims.

Claims

1. A point cloud decoding method applied to a decoder, comprising: parsing a bitstream to determine first filter coefficients of a first frame of point clouds; determining whether to perform a filtering operation on the first frame of point clouds; if it is determined to perform the filtering operation on the first frame of point clouds, filtering original reconstructed attribute values of the first frame of point clouds according to the first filter coefficients to determine a first reconstructed frame of point clouds.

2. The method of claim 1, wherein, The method further comprises: filtering original reconstructed attribute values of a second frame of point clouds according to the first filter coefficients to determine a second reconstructed frame of point clouds.

3. The method of claim 2, wherein, The second frame of point clouds is any one of a plurality of frames of point clouds.

4. The method of claim 3, wherein, The plurality of frames of point clouds are consecutive frames of point clouds in a sequence.

5. The method of any one of claims 2 to 4, wherein: the first frame of point clouds is an I-frame of point clouds; and / or the second frame of point clouds is a P-frame of point clouds; wherein the first frame of point clouds and the second frame of point clouds belong to a same group of frames.

6. The method of any one of claims 2 to 5, wherein, The method further comprises: writing the first filter coefficients to a first storage unit; The filtering original reconstructed attribute values of a second frame of point clouds according to the first filter coefficients to determine a second reconstructed frame of point clouds comprises: determining the first filter coefficients according to the first storage unit; filtering original reconstructed attribute values of the second frame of point clouds according to the first filter coefficients to determine the second reconstructed frame of point clouds.

7. The method of any one of claims 1 to 6, wherein, The determining whether to perform a filtering operation on the first frame of point clouds comprises: parsing first identification information, the first identification information being used to indicate whether to perform the filtering operation on the first frame of point clouds; The filtering original reconstructed attribute values of the first frame of point clouds according to the first filter coefficients to determine a first reconstructed frame of point clouds comprises: if the first identification information indicates to perform the filtering operation on the first frame of point clouds, filtering original reconstructed attribute values of the first frame of point clouds according to the first filter coefficients to determine the first reconstructed frame of point clouds.

8. The method of any one of claims 2 to 7, wherein, Before the filtering original reconstructed attribute values of a second frame of point clouds according to the first filter coefficients, the method further comprises: parsing second identification information, the second identification information being used to indicate whether to perform the filtering operation on the second frame of point clouds; The filtering original reconstructed attribute values of a second frame of point clouds according to the first filter coefficients comprises: if the second identification information indicates to perform the filtering operation on the second frame of point clouds, filtering original reconstructed attribute values of the second frame of point clouds according to the first filter coefficients to determine the second reconstructed frame of point clouds.

9. The method of any one of claims 2 to 8, wherein, The method further comprises: performing inter-frame prediction on the second frame of point clouds according to the first reconstructed frame of point clouds to determine original reconstructed attribute values of the second frame of point clouds.

10. The method of any one of claims 1 to 9, wherein, The filtering original reconstructed attribute values of the first frame of point clouds according to the first filter coefficients comprises: filtering original reconstructed attribute values of a current point according to the first filter coefficients and reconstructed attribute values of neighboring points of the current point. The neighbor point of the current point is determined based on a first mapping relationship and geometric position information of the first position of the current point, the first mapping relationship includes a mapping relationship between the geometric position information and the neighbor point of the current point, and the first mapping relationship further includes a mapping relationship between the geometric position information and a first adjacent position of the current point, the first adjacent position does not correspond to a point in the first frame point cloud.

11. The method of claim 10, wherein, The first mapping relationship includes a mapping relationship between the geometric position information and all adjacent positions of the current point.

12. The method of claim 10 or 11, wherein: The first mapping relationship is determined based on a plurality of points in the first frame point cloud and geometric position information of the plurality of points.

13. The method of any one of claims 10 to 12, wherein, The first position is an adjacent position coplanar with a current position of the current point, and / or the first position is the current position of the current point.

14. The method of claim 13, 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.

15. The method of any one of claims 10 to 14, wherein, The geometric position information of the first position includes: Morton code of the first position; or Three-dimensional coordinate information of the first position.

16. The method of claim 10, wherein, The first position is an adjacent position of the current point in an octree structure.

17. The method of any one of claims 1 to 16, wherein, The value in the first filter coefficient is an integer.

18. The method of claim 17, wherein, The filtering of the original reconstructed attribute value of the first frame point cloud according to the first filter coefficient to determine the first reconstructed point cloud includes: filtering the original reconstructed attribute value of the first frame point cloud according to the first filter coefficient to determine a third reconstructed point cloud; performing a shift operation on the reconstructed attribute value of the third reconstructed point cloud to determine the reconstructed attribute value of the first reconstructed point cloud.

19. The method of claim 1, wherein, The filtering is Wiener filtering.

20. A point cloud encoding method applied to an encoder, comprising: determining a first filter coefficient of a first frame point cloud; determining whether to perform a filtering operation on the first frame point cloud; if it is determined to perform a filtering operation on the first frame point cloud, filtering an original reconstructed attribute value of the first frame point cloud according to the first filter coefficient to determine a first reconstructed point cloud.

21. The method of claim 20, wherein, The method further comprises: filtering an original reconstructed attribute value of a second frame point cloud according to the first filter coefficient to determine a second reconstructed point cloud.

22. The method of claim 21, wherein, The second frame point cloud is any one of a plurality of frame point clouds.

23. The method of claim 22, wherein, The plurality of frame point clouds are a sequence of continuous point cloud frames.

24. The method of any one of claims 21 to 23, wherein: The first frame point cloud is an I-frame point cloud; and / or The second frame point cloud is a P-frame point cloud; The first frame point cloud and the second frame point cloud belong to the same group of frames.

25. The method of any one of claims 21 to 24, wherein, The method further comprises: writing the first filter coefficient into a first storage unit; The filtering, according to the first filter coefficient, of the original reconstructed attribute value of the second frame point cloud comprises: The first filter coefficient is determined according to the first storage unit; The second reconstructed point cloud is determined by filtering the original reconstructed attribute value of the second frame point cloud according to the first filter coefficient.

26. The method of any one of claims 20-25, wherein, The determination of whether to perform the filtering operation on the first frame point cloud comprises: A first rate-distortion cost is determined according to the original reconstructed attribute value of the first frame point cloud; A second rate-distortion cost is determined according to the reconstructed attribute value of the first reconstructed point cloud; Whether to perform the filtering operation on the first frame point cloud is determined according to the first rate-distortion cost and the second rate-distortion cost.

27. The method of claim 26, wherein, The method further comprises: First identification information is written into a bitstream, and the first identification information is used to indicate whether to perform the filtering operation on the first frame point cloud; If the first rate-distortion cost is less than or equal to the second rate-distortion cost, the first identification information indicates that the filtering operation is not performed on the first frame point cloud; If the first rate-distortion cost is greater than the second rate-distortion cost, the first identification information indicates that the filtering operation is performed on the first frame point cloud.

28. The method of any one of claims 21 to 27, wherein, The method further comprises: Second identification information is written into a bitstream, and the second identification information is used to indicate whether to perform the filtering operation on the second frame point cloud.

29. The method of any one of claims 21 to 28, wherein, The method further comprises: The original reconstructed attribute value of the second frame point cloud is determined by inter-frame prediction of the second frame point cloud according to the first reconstructed point cloud.

30. The method of any one of claims 20-29, wherein, The filtering, according to the first filter coefficient, of the original reconstructed attribute value of the first frame point cloud comprises: The original reconstructed attribute value of the current point is filtered according to the first filter coefficient and the reconstructed attribute value of the neighbor point of the current point; The neighbor point 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, and the The first mapping relationship comprises a mapping relationship between the geometric position information and the neighbor point of the current point, and the first mapping relationship further comprises a mapping relationship between the geometric position information and a first adjacent position of the current point, and the first adjacent position does not correspond to a point in the first frame point cloud.

31. The method of claim 30, wherein, The first mapping relationship comprises a mapping relationship between the geometric position information and all adjacent positions of the current point.

32. The method of claim 30 or 31, wherein: The first mapping relationship is determined based on a plurality of points in the first frame point cloud and the geometric position information of the plurality of points.

33. The method of any one of claims 30-32, wherein, The first position is an adjacent position coplanar with a current position of the current point, and / or the first position is the current position of the current point.

34. The method of claim 33, wherein, The positional relationship between the first position and the current position comprises 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.

35. The method of any one of claims 30-34, wherein, geometric position information of the first position, including: a Morton code of the first position; or three-dimensional coordinate information of the first position.

36. The method of claim 30, wherein, The first position is a neighboring position of the current point in an octree structure.

37. The method of any one of claims 20 to 36, wherein, The value in the first filter coefficient is an integer.

38. The method of claim 37, wherein, The filtering of the original reconstruction attribute value of the first frame point cloud according to the first filter coefficient to determine the first reconstruction point cloud includes: filtering the original reconstruction attribute value of the first frame point cloud according to the first filter coefficient to determine a third reconstruction point cloud; performing a shift operation on the reconstruction attribute value of the third reconstruction point cloud to determine the reconstruction attribute value of the first reconstruction point cloud.

39. The method of claim 37 or 38, wherein, The determination of the first filter coefficient of the first frame point cloud includes: determining a self-correlation matrix and a cross-correlation vector according to the reconstruction attribute value of the neighboring point of the point in the first frame point cloud and the original reconstruction attribute value of the point in the first frame point cloud; determining the first filter coefficient according to the self-correlation matrix and the cross-correlation vector.

40. The method of claim 39, wherein: the self-correlation matrix is a matrix subjected to a shift operation; and / or the cross-correlation vector is a vector subjected to a shift operation.

41. The method of claim 20, wherein, The filtering is Wiener filtering.

42. The method of claim 20, wherein, The first filter coefficient is entropy encoded.

43. A decoder, comprising: a first determination unit configured to parse a bitstream to determine a first filter coefficient of a first frame point cloud; a second determination unit configured to determine whether to perform a filtering operation on the first frame point cloud; a filtering unit configured to, if it is determined to perform the filtering operation on the first frame point cloud, filter an original reconstruction attribute value of the first frame point cloud according to the first filter coefficient to determine a first reconstruction point cloud.

44. A decoder, comprising: a memory configured to store a computer program; a processor configured to, when executing the computer program, perform the method of any one of claims 1 to 19.

45. An encoder, comprising: a first determination unit configured to determine a first filter coefficient of a first frame point cloud; a second determination unit configured to determine whether to perform a filtering operation on the first frame point cloud; a filtering unit configured to, if it is determined to perform the filtering operation on the first frame point cloud, filter an original reconstruction attribute value of the first frame point cloud according to the first filter coefficient to determine a first reconstruction point cloud.

46. An encoder, comprising: a memory configured to store a computer program; a processor configured to, when executing the computer program, perform the method of any one of claims 20 to 42.

47. A non-transitory computer readable storage medium storing a bitstream, the bitstream generated by an encoding method with an encoder or the bitstream decoded by a decoding method with a decoder, wherein, The decoding method is the method of any one of claims 1 to 19, and the encoding method is the method of any one of claims 20 to 42.

48. A computer readable storage medium, the computer readable storage medium storing a bitstream generated by the method of any one of claims 20 to 42.

49. A computer readable storage medium, wherein, The computer readable storage medium stores a computer program, and the computer program is executed to implement the method of any one of claims 1 to 19 or 20 to 42.

Citation Information

Patent Citations

  • Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method

    US20230291895A1

  • Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method

    WO2020189876A1

  • Point cloud encoding method, point cloud decoding method, encoder, decoder and computer storage medium

    WO2022233004A1

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

    WO2023123467A1

  • Attribute transformation decoding method, attribute transformation coding method, and terminal

    WO2024120324A1