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

By determining neighboring points based on Morton codes or three-dimensional coordinate values ​​and performing Wiener filtering in the point cloud encoding and decoding framework, the problem of low efficiency in filtering point cloud attribute information in the existing technology is solved, and more efficient point cloud encoding and decoding and better image quality are achieved. In particular, the reconstruction effect of the point cloud is improved when applied in augmented reality and virtual reality scenarios.

WO2025217752A1PCT designated stage Publication Date: 2025-10-23GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2024/087697
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-04-15
Publication Date
2025-10-23

AI Technical Summary

Technical Problem

The existing point cloud encoding and decoding framework is inefficient in the process of filtering attribute information of reconstructed point clouds. In particular, the KNN nearest neighbor search method causes excessively long encoding and decoding time, and the filtered reconstructed point cloud frames are not used for inter-frame prediction, affecting the point cloud quality.

Method used

Based on the position information of the points in the reconstructed point cloud, the neighboring points are determined using Morton code or three-dimensional coordinate values, and Wiener filtering is used for filtering to improve filtering efficiency. The filtered reconstructed point cloud frame is used for inter-frame prediction.

Benefits of technology

The encoding and decoding efficiency and image quality of point cloud attribute information are improved, and the effect of point cloud reconstruction is enhanced, especially when applied in augmented reality and virtual reality scenarios, which improves the overall quality of point clouds.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024087697_23102025_PF_FP_ABST
    Figure CN2024087697_23102025_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, a bitstream, and a storage medium. The point cloud decoding method comprises: parsing a bitstream, and determining a filter coefficient; on the basis of position information of points in a first reconstructed point cloud, determining a neighboring point of the current point; and filtering a reconstructed attribute value of the current point on the basis of a reconstructed attribute value of the neighboring point of the current point and the filter coefficient.
Need to check novelty before this filing date? Find Prior Art

Description

Point cloud coding method, coder, bitstream and storage medium TECHNICAL FIELD

[0001] The present application relates to the technical field of point cloud coding, in particular to a point cloud coding method, a coder, a bitstream 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, a bitstream and a storage medium. Each aspect of 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 bitstream to determine filter coefficients; determining neighboring points of a current point according to position information of points in a first reconstructed point cloud; and filtering a reconstructed attribute value of the current point according to the reconstructed attribute values of the neighboring points of the current point and the filter coefficients.

[0006] In a second aspect, a point cloud encoding method is provided, applied to an encoder, including: determining neighboring points of points in a first reconstructed point cloud according to position information of the points in the first reconstructed point cloud; determining filter coefficients according to reconstructed attribute values of the neighboring points of the points in the first reconstructed point cloud; and filtering a reconstructed attribute value of a current point according to the reconstructed attribute values of the neighboring points of the current point and the filter coefficients.

[0007] In a third aspect, a decoder is provided, including: a first determining unit configured to parse a bitstream to determine filter coefficients; a second determining unit configured to determine neighboring points of a current point according to position information of points in a first reconstructed point cloud; and a filtering unit configured to filter a reconstructed attribute value of the current point according to the reconstructed attribute values of the neighboring points of the current point and the filter coefficients.

[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, according to position information of a point in a first reconstructed point cloud, a near neighbor point of the point in the first reconstructed point cloud; a second determining unit configured to determine, according to a reconstructed attribute value of the near neighbor point of the point in the first reconstructed point cloud, a filter coefficient; and a filtering unit configured to filter, according to the reconstructed attribute value of the near neighbor point of the point and the filter coefficient, a reconstructed attribute value of the point.

[0010] In a sixth aspect, an encoder is provided, comprising: a memory configured to store a computer program; and a processor configured to execute the computer program to implement 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 is executed to implement 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 bitstream is provided, comprising a bitstream generated according to the method of the second aspect.

[0014] After the point cloud is reconstructed, the reconstructed attribute information can be filtered to improve the quality of the reconstructed point cloud. Embodiments of the present application determine the near neighbor points for filtering based on the position information (such as the Morton code or the three-dimensional coordinate value) of the points in the reconstructed point cloud, which can improve the efficiency of filtering and further help 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 a point cloud coding.

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

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

[0018] FIG. 3 is a schematic diagram of a neighboring position of a current point.

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

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

[0021] FIG. 6 is a schematic diagram of a decoding method provided by embodiments 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 a process of determining a neighbor point based on a Morton code according to an embodiment of the present application.

[0024] FIG. 9 is a flowchart of a process of performing inter-frame prediction on a reconstructed point cloud frame.

[0025] FIG. 10 is a flowchart of a process of performing inter-frame prediction on a filtered reconstructed point cloud frame at an encoding end according to an embodiment of the present application.

[0026] FIG. 11 is a flowchart of a process of performing inter-frame prediction on a filtered reconstructed point cloud frame at a decoding end according to an embodiment of the present application.

[0027] FIG. 12 is a schematic diagram of a structure of a decoder according to an embodiment of the present application.

[0028] FIG. 13 is a schematic diagram of a structure of a decoder according to another embodiment of the present application.

[0029] FIG. 14 is a schematic diagram of a structure of an encoder according to an embodiment of the present application.

[0030] FIG. 15 is a schematic diagram of a structure of an encoder according to another embodiment of the present application. DETAILED DESCRIPTION

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

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

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

[0034] It should also be noted that the terms "first", "second", "third" used in the embodiments of the present application are only used to distinguish similar objects, and do not represent a specific order of the objects. It can be understood that "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.

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

[0036] A two-dimensional image has information expressed at each pixel point, and the distribution is regular, so it does not 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 to completely express a point cloud. Similar to a two-dimensional image, each position has corresponding attribute information during the acquisition 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 (R), G represents green (G), and B represents blue (B). For another example, the color information can be luma chrominance (YCbCr, YUV) information. Y represents luma, Cb (U) represents blue color difference, and Cr (V) represents red color difference.

[0037] According to the laser measurement principle, 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 photogrammetry principle, the points in the point cloud can include three-dimensional coordinate values of points and three-dimensional color information of points. For another example, the point cloud obtained by combining the laser measurement and photogrammetry principles can include three-dimensional coordinate values of points, reflectance values of points, and three-dimensional color information of points.

[0038] At present, the point cloud coding framework that can compress point clouds 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 clouds and a third type of dynamically acquired point clouds, 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 clouds, 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).

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

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

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

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

[0043] 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 decided 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 perform arithmetic coding on the quantized coefficients to generate a binary attribute bitstream.

[0044] 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-reconstruction of octree / reconstruction of prediction tree-reconstruction of geometry-coordinate inverse conversion; in the decoding of the attribute bitstream, the attribute information of the point cloud is obtained through arithmetic decoding-dequantization-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.

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

[0046] 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, which mainly plays a scaling role. Due to 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. 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. First, the bounding box of the point cloud is calculated Assuming d x >d y >d z , the bounding box corresponds to a cuboid. In geometry division, a binary tree is first divided based on the x-axis to obtain two child nodes; until the condition d x =d y >d z is met, a quadtree is divided based on the x and y axes to obtain four child nodes; when the condition d x =d y =d z is finally met, an octree is continuously divided until the leaf node obtained by the division is a 1x1x1 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. Parameter K indicates the maximum number of binary tree / quadtree divisions before octree division; 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 ), parameter K satisfies: K≥d max -d min ; parameter M satisfies: M≥d minThe parameters K and M satisfy the above conditions because the priority of the partitioning manner in the geometry implicit partitioning process of the current G-PCC is a binary tree, a quadtree, and an octree. When the node block size does not satisfy the condition of the binary tree / quadtree, the octree partitioning is performed on the node until the leaf node of the minimum unit 1*1*1 is reached. 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.

[0047] The current G-PCC coding framework contains two attribute coding methods: predicting transform (PT) and lifting transform (LT). The two methods are based on the generation order of the level of details (LOD) to predictively encode the point cloud. Before the LOD is constructed, the points in the point cloud are first sorted by the Morton order to ensure that the neighboring points have strong attribute correlation. Then, the attribute values of the points in the point cloud are weighted predicted based on the nearest neighbor attribute prediction coding manner. A scheme for finding the nearest neighbor points based on the Morton code of the points in the point cloud is introduced below.

[0048] In the coding and decoding framework of the G-PCC, if the points in the point cloud are sorted by the order of the Morton code, then in the case of a relatively dense point cloud, usually each point can find the neighboring points in the 3*3*3 cube centered at it. As shown in FIG. 3, 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. 3 is the current point. The Morton code of the nearest neighbor point can be calculated using the Morton code of the point and the spatial relationship of the point. Exemplarily, as shown in FIG. 4, it is assumed that the spatial position difference between the current point and the nearest neighbor point 2 is (0, 1, 0), which is the offset of the spatial position between the current point and the nearest neighbor point. If the Morton code is used to represent the spatial position difference (0, 1, 0), the offset between the current point and the nearest neighbor point 2 can be represented as 2.

[0049] 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) (1)

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

[0051] Then, the offset is subtracted from the Morton code of the current point to obtain the Morton code of the neighboring point 2.

[0052] It should be understood that the application scenario of the above-mentioned scheme for finding a neighboring point based on a Morton code is a prediction transform and an elevation transform coding mode. In these two coding modes, only the coded points can be used to predict the current point, so the Morton code of the available point must be smaller than that of the current point. In addition, in order to simplify the calculation, the related art selects a neighboring point whose coordinate values in XYZ three directions are all smaller than those of the current point for prediction coding.

[0053] After the point cloud is reconstructed at the encoding and decoding end, 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 may affect the quality of the entire point cloud. Therefore, the related art proposes to filter the attribute information of the reconstructed point cloud to enhance the image quality of the reconstructed point cloud.

[0054] Exemplarily, taking the Wiener filtering of the attribute information of the reconstructed point cloud as an example, as shown in FIG. 5, at the encoding end, 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 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 a quality-enhanced point cloud. The following describes the calculation method of the filtering coefficient and the filtering principle in the filtering process.

[0055] Suppose the order of the Wiener filter is K, and the number of points in the point cloud is n, then 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

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

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

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

[0059] where E(·) denotes 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:

[0060] That is:

[0061] Then let the cross-correlation vector and the autocorrelation matrix be obtained: b-Axh = 0 (7)

[0062] Thus, h opt : h opt = A -1 x b (8)

[0063] 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 decision array and the filter coefficients are written into the bitstream. At the decoding end, first, the decision array is decoded to determine the channel 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. This scheme affects the arithmetic coding in the point cloud encoding framework and the part after the attribute reconstruction in the decoding framework.

[0064] The related art is introduced above, which enhances the image quality of the reconstructed point cloud by performing Wiener filtering on the attribute information of the reconstructed point cloud. However, the Wiener filtering scheme in the related art still has some problems to be solved.

[0065] For example, the related art filtering scheme uses a nearest neighbor search method to search for k nearest neighbors, which is inefficient, for example, KNN nearest neighbor search needs to calculate the distance between the current point and all coded points, resulting in a significant increase in coding time, thereby reducing the coding efficiency of the point cloud.

[0066] For another example, the related art only performs Wiener filtering on attribute information within a reconstructed point cloud frame, but does not use the filtered reconstructed point cloud frame for point cloud reconstruction of other frames. For example, the filtering scheme of the related art is only applied in G-PCC TMC13 reference software, but not in GES-TM reference software. The GES-TM reference software is a reference software specially used for inter-frame prediction coding of multi-frame dynamic dense point cloud, that is, in the related art, the filtered reconstructed point cloud frame is not used for inter-frame prediction of other frames. The image quality of the filtered reconstructed point cloud frame is better, and if it can be applied to inter-frame prediction, the image quality of the point cloud will be further improved.

[0067] To solve the above problems, the embodiment of the present application provides an encoding method, comprising: determining the nearest neighbor points of the points in the first reconstructed point cloud according to the position information of the points in the first reconstructed point cloud; determining the filtering coefficients according to the reconstructed attribute values of the nearest neighbor points of the points in the first reconstructed point cloud; and filtering the reconstructed attribute values of the current points according to the reconstructed attribute values of the nearest neighbor points of the current points and the filtering coefficients.

[0068] The embodiment of the present application also provides a decoding method, comprising: parsing a code stream to determine filtering coefficients; determining the nearest neighbor points of the current points according to the position information of the points in the first reconstructed point cloud; and filtering the reconstructed attribute values of the current points according to the reconstructed attribute values of the nearest neighbor points of the current points and the filtering coefficients.

[0069] The embodiment of the present application determines the nearest neighbor points for filtering based on the position information (such as Morton code or three-dimensional coordinate value) of the points in the reconstructed point cloud, which can improve the efficiency of filtering, and further help to improve the coding efficiency of the attribute information.

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

[0071] FIG. 6 is a flow diagram of a decoding method according to an embodiment 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 attribute information of a point cloud. In some implementations, the decoding method can be applied to G-PCC. Alternatively, in some 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) scenario.

[0072] Referring to FIG. 6, in step S610, a bitstream is parsed to determine filter coefficients.

[0073] The filter coefficients are used to filter reconstructed attribute values of points in a point cloud. The attribute values herein can refer to color information of points in a point cloud. For example, the color information can be RGB information. For another example, the color information can be luminance chrominance (YCbCr, YUV) information.

[0074] In step S620, a neighbor point of the current point is determined according to position information of points in the first reconstructed point cloud.

[0075] In some implementations, the neighbor point can be determined in an N x N x N voxel centered at the current point. The N herein can be any integer greater than or equal to 1. For example, the N can be 5, or the N can also be 3.

[0076] The neighbor point can be searched in the N x N x N voxel in a certain order when the neighbor point is determined. For example, the N x N x N voxel can be divided into multiple hierarchical ranges, and the neighbor point of the current point can be searched based on the hierarchical ranges. Exemplarily, taking a 5 x 5 x 5 voxel centered at the current point as an example, a 3 x 3 x 3 voxel centered at the current point is set as a first hierarchical range, and a 5 x 5 x 5-3 x 3 x 3 voxel is set as a second hierarchical range. Then, the neighbor point can be searched in the first hierarchical range first, and the neighbor point in the second hierarchical range can be searched if the neighbor point in the first hierarchical range is insufficient. Since the region closer to the current point (i.e., the center point) is more likely to have a denser neighbor point and a neighbor point with similar attribute values to the current point, searching the neighbor point based on the hierarchical ranges helps to improve the search efficiency.

[0077] For example, when searching for the neighboring points in the N*N*N voxels, the voxels coplanar with the current voxel block (i.e., the current point) can be searched first, and then the voxels collinear with the current block can be searched. Since the voxels coplanar with the current voxel block have a higher similarity with the current voxel block, the probability of searching for the neighboring points is higher, thereby helping to improve the search efficiency.

[0078] The number of the neighboring points of the current point is not specifically limited in the embodiments of the present application. The number of the neighboring points can correspond to the order K of the filter. For example, if the order K of the Wiener filter is 4, at least 4 neighboring points of the current point need to be determined; or if the order K of the Wiener filter is 8, at least 8 neighboring points of the current point need to be determined.

[0079] The position information of the point can refer to the relevant information representing the three-dimensional coordinates of the point. For example, the position information of the point can be the Morton code of the point. For another example, the position information of the point can also be the three-dimensional coordinate value of the point.

[0080] In some implementations, the neighboring points of the current point can be determined according to the Morton code of the points in the first reconstructed point cloud. For example, the Morton code herein can refer to the Morton code determined in the process of dividing the LOD layer.

[0081] When the neighboring points of the current point are to be determined in step S620, the Morton code of the neighboring points can be determined first. In some implementations, the Morton code of the neighboring points of the current point can be determined based on the Morton code of the adjacent position of the current point. For example, the Morton code of the first adjacent position can be 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 first adjacent position, the point is the neighboring point of the current point, or the Morton code of the point is the Morton code of the neighboring point.

[0082] In some implementations, the Morton code of the adjacent position can be determined according to the offset value of the spatial position between the current point and the adjacent position. The spatial position herein can refer to the geometric information of the point, such as the three-dimensional coordinate value (x, y, z) of the point. Accordingly, the offset value of the spatial position herein can refer to the difference value between the three-dimensional coordinate value of the current point and the three-dimensional coordinate of the adjacent position.

[0083] For example, the Morton code of the adjacent position can be determined according to the Morton code of the current point and the above offset value; and then the neighboring points of the current point can be determined according to the Morton code of the adjacent position and the Morton code of the points in the first reconstructed point cloud.

[0084] For example, the offset value of each neighboring position relative to the current point is determined in a voxel of 5x5x5 centered on the current point, and all offset values are listed in a search set. Then, the first neighboring position of the search set is first calculated according to the Morton code; if the Morton code of the neighboring position is the same as the Morton code of the point in the point cloud, it means that the neighboring position is not empty, that is, there is a neighboring point.

[0085] For example, as shown in FIG. 3, assuming that the Merton code of the current point is 18, the spatial position difference (i.e., offset value) of a neighboring position of the current point relative to the current point is (0, 1, 0), and the spatial position difference is converted into the form of the Merton code, the offset value is 2; then, the Merton code of the neighboring position is obtained by subtracting the offset value 2 from the Merton code 18 of the current point, that is, 16; finally, it is determined whether there is a point with the Merton code 16 in the point cloud, and if there is, it is determined that the neighboring position has a neighboring point of the current point.

[0086] In the foregoing description, the related art searches for the neighboring point of the current point in the manner of KNN, which needs to calculate the distance between the current point and all coded points, and thus the related art takes a long time to filter, thereby resulting in low efficiency of coding and decoding of attribute information. Embodiments of the present application determine the neighboring point for filtering based on the Merton code of the point in the reconstructed point cloud. The ordering property of the Merton code can make the Merton codes of points with close geometric information (such as three-dimensional coordinate values) adjacent, and thus only the Merton code (or adjacent Merton code) of the neighboring position in a certain range centered on the current point needs to be determined to determine the neighboring point of the current point. This manner shortens the time for searching the neighboring point, can improve the efficiency of filtering, and thus helps to improve the decoding efficiency of attribute information.

[0087] It is mentioned above that the position information of the point can refer to the three-dimensional coordinate value of the point. In some implementations, the neighboring point of the current point can be determined according to the three-dimensional coordinate value of the point in the first reconstructed point cloud.

[0088] For example, the three-dimensional coordinate value of the neighboring position (second neighboring position) of the current point can be determined according to the three-dimensional coordinate value of the point in the first reconstructed point cloud; and then the neighboring point of the current point is determined according to the three-dimensional coordinate value of the neighboring position.

[0089] For example, in a voxel of 5x5x5 centered on the current point, the offset value of each neighboring position relative to the three-dimensional coordinate of the current point is determined, and all offset values of the three-dimensional coordinate are listed in a search set; then, all neighboring positions of the current point in the 5x5x5 voxel are determined according to the offset value of the three-dimensional coordinate in the search set; and finally, whether there is a neighboring point in all neighboring positions is searched, thereby finding the k neighboring points.

[0090] The embodiments of the present application determine the near neighbor points of the current point in a specific range (such as 5x5x5 voxels) based on the three-dimensional coordinate values of the points in the reconstructed point cloud. Compared with the related art of determining the near neighbor points based on KNN, the time required for determining the near neighbor points based on the three-dimensional coordinate values is shorter, which can improve the efficiency of filtering, thereby helping to improve the coding efficiency of the attribute information.

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

[0092] In some implementations, the reconstructed attribute values of the first near neighbor points can be determined according to the reconstructed attribute values of the near neighbor points determined in step S620. For example, the average of the reconstructed attribute values of all the determined near neighbor points can be taken as the reconstructed attribute value of the first near neighbor point. For another example, the reconstructed attribute value of one of the determined near neighbor points can be taken as the reconstructed attribute value of the first near neighbor point.

[0093] In step S630, the reconstructed attribute value of the current point is filtered according to the reconstructed attribute values of the near neighbor points of the current point and the filter coefficients.

[0094] After the reconstructed attribute values of all the points in the reconstructed point cloud frame are completed, the reconstructed point cloud frame after filtering can be taken as a reference frame to perform inter-frame prediction on the attribute values of other frames (such as the next frame of the current frame in the decoding order). The image quality of the reconstructed point cloud frame after filtering is better, and taking it as a reference frame helps to improve the prediction effect of the attribute information of the point cloud, thereby helping to improve the decoding efficiency of the attribute information of the point cloud.

[0095] The filtering mentioned above can be any weighted sum of the attribute values in the neighborhood. In some implementations, the type of filtering can be Wiener filtering. The order of the Wiener filter can be any, for example, the order K of the Wiener filter is 4 or 8.

[0096] Exemplarily, the reconstructed attribute values of the near neighbor points of the current point can be taken as the input of the Wiener filter, the filter coefficients are combined, and the output of the Wiener filter is taken as the filtered reconstructed attribute value of the current point.

[0097] Exemplarily, the filtered reconstructed attribute value of the current point can be determined based on the following formula:

[0098] wherein, represents the filtered reconstructed attribute value of the current point; represents the reconstructed attribute values of the k near neighbor points of the current point; hopt indicates a filter coefficient corresponding to the Wiener filter.

[0099] It should be understood that the application embodiments do not specifically limit the application range of the filter coefficient. For example, a set of filter coefficients parsed from the bitstream can only filter the reconstructed attribute values of a frame of reconstructed point cloud. Alternatively, in some implementations, a set of filter coefficients can filter the reconstructed attribute values of multiple frames of reconstructed point cloud. For example, in the case that the attribute values of two adjacent frames of reconstructed point cloud are similar, the reconstructed attribute values of the two frames of reconstructed point cloud can be filtered based on the same set of filter coefficients. In this way, the number of times of obtaining filter coefficients can be reduced, and the time required for filtering can be further reduced.

[0100] A frame of reconstructed point cloud can correspond to one or more filters. For example, if a frame of reconstructed point cloud corresponds to multiple filters, a 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.

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

[0102] In the point cloud reconstruction process, whether to filter the reconstructed attribute values of a frame of reconstructed point cloud can be determined by default based on a predefined rule. Of course, whether to filter the reconstructed attribute values of a frame of reconstructed point cloud can also be determined at the encoding end, and the determined result can be written into the bitstream in the form of a syntax element to guide the point cloud reconstruction at the decoding end.

[0103] In some implementations, the bitstream is parsed to determine first information. The first information is used to indicate whether to filter the reconstructed attribute values of a frame of reconstructed point cloud. Alternatively, the bitstream is parsed to determine second information. The second information is used to indicate the filter coefficient for filtering the reconstructed attribute values.

[0104] The test results obtained based on the coding method provided by the application embodiments will be compared with the performance test results obtained based on related technologies in the following to verify the performance improvement brought by the application embodiments.

[0105] Table 1: Test results obtained based on the coding method of related technologies under the condition of K=8 and C1

[0106] Table II: Test results of the coding method based on the embodiment of the present application under the condition of K=8, C1

[0107] Table III: Test results of the coding method based on the related art under the condition of K=4, C1

[0108] Table IV: Test results of the coding method based on the embodiment of the present application under the condition of K=4, C1

[0109] The test results in Tables I to IV are obtained by testing 32 frames of each type of the multi-frame dynamic point cloud sequence required by MPEG under the C1 test condition in the GPCC reference software ges-tm v4.0-rc1. In Table I, K=8 represents that the order of the Wiener filter is 8, the related art uses the KNN method to search for the nearest neighbor points, and the reconstructed point cloud after the Wiener filtering is used for inter-frame prediction. In Table II, K=8 represents that the order of the Wiener filter is 8, the embodiment of the present application uses the Morton code method to search for the nearest neighbor points, and the reconstructed point cloud after the Wiener filtering is used for inter-frame prediction. In Table III, K=4 represents that the order of the Wiener filter is 4, the related art uses the KNN method to search for the nearest neighbor points, and the reconstructed point cloud after the Wiener filtering is used for inter-frame prediction. In Table IV, K=4 represents that the order of the Wiener filter is 4, the embodiment of the present application uses the Morton code method to search for the nearest neighbor points, and the reconstructed point cloud after the Wiener filtering is used for inter-frame prediction.

[0110] The C1 condition is a lossless geometry and nearly lossless attribute coding manner, and the End-to-End BD-AttrRate represents the BD-Rate of the end-to-end attribute value for the attribute code stream. The BD-Rate reflects the difference between the PSNR curves in two cases (i.e., with or 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. The Cat2-Aaverage, Cat2-B average and Cat2-C average respectively represent the average values of the test results of the point cloud sequences of the three types of data sets in Cat2, and the Overall average represents the average value of the test results of all sequences.

[0111] As can be seen from the test results in Tables 1 to 4, the introduction of Wiener filtering in inter prediction can bring about considerable performance improvement, and the Morton code-based neighbor searching of the embodiments of the present application can significantly save encoding time and decoding time compared with the related art using KNN to search for neighbor points.

[0112] The decoding method provided by the embodiments of the present application is described in detail above in combination with FIG. 6. The encoding method provided by the embodiments of the present application is described in detail below in combination with FIG. 7.

[0113] FIG. 7 is a flowchart of an encoding method provided by the embodiments 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 some 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 dense point clouds (such as point clouds collected in an augmented reality (AR) or virtual reality (VR) scene).

[0114] Referring to FIG. 7, in step S710, a neighbor point of a point in a first reconstructed point cloud is determined according to position information of the point in the first reconstructed point cloud.

[0115] In some implementations, the neighbor point can be determined in an N×N×N voxel centered on the current point. Here, N can be any integer greater than or equal to 1. For example, N can be 5, or N can also be 3.

[0116] The search for the neighbor point can be performed in the N×N×N voxel in a certain order. For example, the N×N×N voxel can be divided into multiple hierarchical ranges, and the neighbor point of the current point can be searched based on the hierarchical ranges. Exemplarily, taking a 5×5×5 voxel centered on the current point as an example, a 3×3×3 voxel centered on the current point is set as a first hierarchical range, and a 5×5×5-3×3×3 voxel is set as a second hierarchical range; then, the neighbor point can be searched in the first hierarchical range first, and the neighbor point in the second hierarchical range can be searched in the case that the neighbor point in the first hierarchical range is insufficient. Since the region closer to the current point (i.e., the center point) is more likely to have a denser neighbor point and a neighbor point with similar attribute value of the current point, searching for the neighbor point based on the hierarchical ranges helps to improve the search efficiency.

[0117] For example, when searching for the neighboring points in the N*N*N voxels, the voxels coplanar with the current voxel block (i.e., the current point) can be searched first, and then the voxels collinear with the current block can be searched. Since the voxels coplanar with the current voxel block have a higher similarity with the current voxel block, the probability of searching for the neighboring points is higher, thereby helping to improve the search efficiency.

[0118] The number of the neighboring points of the current point is not specifically limited in the embodiments of the present application. The number of the neighboring points can correspond to the order K of the filter. For example, if the order K of the Wiener filter is 4, at least 4 neighboring points of the current point need to be determined; or if the order K of the Wiener filter is 8, at least 8 neighboring points of the current point need to be determined.

[0119] The position information of the point can refer to the relevant information representing the three-dimensional coordinates of the point. For example, the position information of the point can be the Morton code of the point. For another example, the position information of the point can also be the three-dimensional coordinate value of the point.

[0120] In some implementations, the neighboring points of the points in the first reconstructed point cloud can be determined according to the Morton codes of the points in the first reconstructed point cloud. For example, the Morton codes herein can refer to the Morton codes determined in the process of dividing the LOD layers.

[0121] To determine the neighboring points of the point, the Morton codes of the neighboring points can be determined first. In some implementations, the Morton codes of the neighboring points of the current point can be determined based on the Morton codes of the adjacent positions of the current point. For example, the Morton code of the first adjacent position can be 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 first adjacent position, the point is the neighboring point of the current point, or the Morton code of the point is the Morton code of the neighboring point.

[0122] In some implementations, the Morton code of the adjacent position can be determined according to the offset value of the spatial position between the current point and the adjacent position. The spatial position herein can refer to the geometric information of the point, such as the three-dimensional coordinates (x, y, z) of the point. Accordingly, the offset value of the spatial position herein can refer to the difference value between the three-dimensional coordinates of the current point and the three-dimensional coordinates of the adjacent position.

[0123] For example, the Morton code of the adjacent position can be determined according to the Morton code of the current point and the above-mentioned offset value; and then the neighboring points of the current point can be determined according to the Morton code of the adjacent position and the Morton codes of the points in the first reconstructed point cloud.

[0124] Exemplarily, the offset value of each neighboring position relative to the current point is determined in a voxel with a size of 5*5*5 centered on the current point, and all the offset values are listed in a search set. Then, the Morton code of the first neighboring position of the search set is calculated first; if the Morton code of the neighboring position is the same as the Morton code of the point in the point cloud, it indicates that the neighboring position is not empty, that is, there is a neighboring point. The above operation is repeated until k neighboring points are found.

[0125] Exemplarily, as shown in FIG. 3, it is assumed that the Morton code of the current point is 18, and the spatial position difference (that is, the offset value) of a neighboring position of the current point relative to the current point is (0, 1, 0). The spatial position difference is converted into the form of the Morton code, and the offset value is 2. Then, the Morton code 18 of the current point is subtracted by the offset value 2, and the Morton code 16 of the neighboring position is obtained. Finally, it is searched whether there is a point with the Morton code 16 in the point cloud. If there is, it is determined that the neighboring position exists the neighboring point of the current point.

[0126] In the foregoing description, the related art searches the neighboring points of the current point in the manner of KNN, which needs to calculate the distance between the current point and all the coded points. Therefore, the related art takes a long time to filter, thereby leading to a low coding efficiency of the attribute information. Embodiments of the present application determine the neighboring points for filtering based on the Morton code of the point in the reconstructed point cloud. The ordering characteristic of the Morton code can make the Morton codes of the points with close geometric information (such as coordinate information) adjacent. Therefore, only the Morton code (or the adjacent Morton code) of the neighboring position of the current point in a certain range needs to be determined to determine the neighboring point of the current point. This manner shortens the time for searching the neighboring points, can improve the filtering efficiency, and thereby helps to improve the coding efficiency of the attribute information.

[0127] It is mentioned above that the position information of the point can refer to the three-dimensional coordinate value of the point. In some implementations, the neighboring points of the point in the first reconstructed point cloud can be determined according to the three-dimensional coordinate value of the point in the first reconstructed point cloud.

[0128] For example, the three-dimensional coordinate value of the neighboring position (the second neighboring position) of the current point can be determined according to the three-dimensional coordinate value of the point in the first reconstructed point cloud. Then, the neighboring point of the current point is determined according to the three-dimensional coordinate value of the neighboring position.

[0129] Exemplarily, in a voxel with a size of 5*5*5 centered on the current point, the offset value of each neighboring position relative to the three-dimensional coordinate of the current point is determined, and all the offset values of the three-dimensional coordinates are listed in a search set. Then, the neighboring positions of the current point in the 5*5*5 voxel are determined according to the offset values of the three-dimensional coordinates in the search set. Finally, it is searched whether there is a neighboring point on all the neighboring positions, thereby finding k neighboring points.

[0130] The embodiment of the present application determines the near neighbor points of the current point in a specific range (such as 5x5x5 voxels) based on the three-dimensional coordinate values of the points in the reconstructed point cloud. Compared with the related art of determining the near neighbor points based on KNN, the time required for determining the near neighbor points based on the three-dimensional coordinate values is shorter, which can improve the efficiency of filtering, thereby helping to improve the coding efficiency of attribute information.

[0131] As introduced above, the reconstructed attribute values of the reconstructed point cloud need to be filtered to determine at least K near neighbor points. If the number of the near neighbor points determined based on step S710 is less than K, for example, the points at the edge positions of the point cloud may not find K near neighbor points, then the encoding method shown in FIG. 7 can also determine the remaining near neighbor points (or first near neighbor points) based on other manners.

[0132] In some implementations, the reconstructed attribute values of the first near neighbor points can be determined according to the reconstructed attribute values of the near neighbor points determined in step S710. For example, the average of the reconstructed attribute values of all determined near neighbor points can be taken as the reconstructed attribute value of the first near neighbor point. For another example, the reconstructed attribute value of one determined near neighbor point can be taken as the reconstructed attribute value of the first near neighbor point.

[0133] In step S720, the filtering coefficients are determined according to the reconstructed attribute values of the near neighbor points of the points in the first reconstructed point cloud.

[0134] The filtering coefficients described above are used to filter the reconstructed attribute values of the points in the point cloud. The attribute values here can refer to the 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.

[0135] The manner of performing step S720 can include: determining a self-correlation matrix and a cross-correlation matrix according to the reconstructed attribute values of the near neighbor points of the points in the first reconstructed point cloud and the original attribute values of the points in the first reconstructed point cloud; and then determining the filtering coefficients according to the self-correlation matrix and the cross-correlation matrix.

[0136] Exemplarily, the cross-correlation matrix can be determined based on the following formula:

[0137] Wherein, b represents the cross-correlation matrix, c i represents the original color component of the point in the first reconstructed point cloud, represents the transposed form of the reconstructed color component of the near neighbor point, i takes 1, 2, 3, which represents three color components.

[0138] The self-correlation matrix can be determined based on the following formula:

[0139] Wherein, A represents the self-correlation matrix, reconstructed color component of the neighboring point, transposed form of the reconstructed color component of the neighboring point, i is 1, 2, 3, representing three color components.

[0140] The filter coefficient can be determined based on the following formula: h opt = A -1 × b (12)

[0141] wherein h opt represents the filter coefficient, A represents the autocorrelation matrix, and b represents the cross-correlation matrix.

[0142] At step S730, the reconstructed attribute value of the current point is filtered according to the reconstructed attribute values of the neighboring points of the current point and the filter coefficient.

[0143] After the reconstructed attribute values of all points in the reconstructed point cloud frame are filtered, the filtered reconstructed point cloud frame can be used as a reference frame to perform inter-frame prediction on the attribute values of other frames (e.g., the next frame in the encoding order of the current frame). The image quality of the filtered reconstructed point cloud frame is better, and using it as a reference frame helps to improve the prediction effect of the attribute information of the point cloud, and thus helps to improve the coding efficiency of the attribute information of the point cloud.

[0144] The above-mentioned filtering can be any weighted sum of attribute values in the neighborhood. In some implementations, the type of filtering can be Wiener filtering. The order of the Wiener filter can be any, for example, the order K of the Wiener filter is 4 or 8.

[0145] Exemplarily, the reconstructed attribute values of the neighboring points of the current point can be used as the input of the Wiener filter, combined with the filter coefficient, and the output of the Wiener filter can be used as the filtered reconstructed attribute value of the current point.

[0146] Exemplarily, the filtered reconstructed attribute value of the current point can be determined based on the following formula:

[0147] wherein, represents the filtered reconstructed attribute value of the current point; represents the reconstructed attribute values of the k neighboring points of the current point; h opt represents the filter coefficient corresponding to the Wiener filter.

[0148] It should be understood that the application embodiments do not specifically limit the application range of the filter coefficients. For example, a set of filter coefficients can only filter the reconstructed attribute values of a frame of reconstructed point cloud. Alternatively, in some implementations, a set of filter coefficients can filter the reconstructed attribute values of multiple frames of reconstructed point cloud. For example, in the case that the attribute values of two adjacent frames of reconstructed point cloud are similar, the reconstructed attribute values of the two frames of reconstructed point cloud can be filtered based on the same set of filter coefficients. In this way, the number of times of obtaining filter coefficients can be reduced, and the time required for filtering can be further reduced.

[0149] A frame of reconstructed point cloud can correspond to one or more filters. For example, if a frame of reconstructed point cloud corresponds to multiple filters, a 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.

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

[0151] In the point cloud reconstruction process, whether to filter the reconstructed point cloud frame at the encoding and decoding end can be determined by default based on a predefined rule. Of course, whether to filter the reconstructed point cloud frame at the encoding end can also be determined, and the determined result is written into the bitstream in the form of a syntax element to guide the point cloud reconstruction at the decoding end. For example, the PSNR of the reconstructed point cloud after filtering and the PSNR of the original point cloud are compared at the encoding end, and if the PSNR of the reconstructed point cloud after filtering increases, it is determined that the reconstructed point cloud frame is filtered.

[0152] In some implementations, first information can be written into the bitstream. The first information is used to indicate whether to filter the reconstructed attribute values of the reconstructed point cloud frame. Alternatively, second information can be written into the bitstream. The second information is used to indicate the filter coefficients for filtering the reconstructed attribute values.

[0153] The application embodiments will be described in more detail below with reference to specific examples. It should be noted that the examples below are only to help those skilled in the art understand the application embodiments, and are not intended to limit the application embodiments 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 application embodiments.

[0154] Example 1:

[0155] In the process of calculating the Wiener filter coefficients, it is necessary to search for K nearest neighbors of each point in the point cloud. In order to solve the problem of increasing coding time caused by the large use of KNN nearest neighbor search method, this example introduces a nearest neighbor search method based on the position information of the points into the Wiener filtering process of reconstructing the attribute value.

[0156] Since the Wiener filter needs to use more nearest neighbors, if only searching in a cube with a size of 3x3x3 centered on the target point, it may not meet the needs. In order to solve this problem, this example calculates the offset of each position in a cube with a size of 5x5x5 centered on the target point from the target point, and lists it in a search table. The search table can be determined based on the following methods:

[0157] Method one: The closer to the current point (i.e. the center point), the more likely the nearest neighbor points are dense, and the more likely similar attribute values of the current point appear. Therefore, in order to end the search as quickly as possible and to make the search results more accurate, the offset is written into the search table in an inside-out order, that is, the current point position (i.e. the first nearest neighbor found is itself) is written first, then the position offset of the first outer layer (number 3x3x3-1) is written, and then the position offset of the third layer (number 5x5x5-3x3x3) is written.

[0158] Method two: Considering that in the voxelized point cloud, the voxel blocks that are coplanar with the current voxel block are more likely to have higher similarity with the current block than the voxel blocks that are collinear with the current block, the positions of the voxel blocks that are coplanar with the current point are searched first.

[0159] After obtaining the search table, the point-based position information-based nearest neighbor search method includes two methods, which are: point-based Morton code-based nearest neighbor search and point-based three-dimensional coordinate value-based nearest neighbor search.

[0160] Search method one: 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 nearest neighbors of the target point; if this position is empty, i.e. there is no point, then calculate the Morton code of the next adjacent position according to the search table. Repeat the above operation until K nearest neighbors are found, and stop searching after finding K nearest neighbors.

[0161] Search method two: for any target point, first calculate the three-dimensional coordinate value of its first adjacent position according to the search table; then, determine whether there is a nearest neighbor point in the adjacent position; finally, calculate the three-dimensional coordinate values of all adjacent positions and search whether there is a nearest neighbor point in all adjacent positions, so as to find K nearest neighbors.

[0162] It is verified that K respectively taking 4 and 8 can satisfy the nearest neighbor search requirement of substantially all points. However, in order to avoid the problem that the coefficient of the Wiener filter cannot be calculated due to the fact that the nearest neighbor point of a point at the edge of the position cannot be found, the following scheme can be added:

[0163] Suppose that K nearest neighbors of each point of the point cloud are to be found, but after the nearest neighbor search method based on the Morton code is used, only N (N < M) nearest neighbors of a point are found, then the average value of the reconstructed attribute values of the N nearest neighbors is determined, and the remaining K-N nearest neighbors are assigned the attribute values as their reconstructed attribute values.

[0164] Example 2

[0165] The way of determining the nearest neighbor point of the present example will be described in detail below in combination with FIG. 8.

[0166] Referring to FIG. 8, in step S810a, the search is started.

[0167] In step S810b, the current point in the point cloud is input.

[0168] In step S820a, the Morton code of the current point is determined.

[0169] In step S820b, it is determined whether the current point has K nearest neighbors. If the current point has K nearest neighbors, step S830 is executed, that is, the search is ended; otherwise, step S840 is executed.

[0170] In step S840, it is determined whether the search table has been searched completely. The content of the search table is the offset value of the spatial position of the current point and all the nearest neighbors. The calculation method of the offset value has been described above and will not be described again here. If the search table has not been searched completely, step S850 is executed; otherwise, step S880 is executed.

[0171] In step S850, the Morton code of the adjacent position is determined according to the offset value of the search table. The determination method of the Morton code of the adjacent position has been described above and will not be described again here.

[0172] In step S860, it is determined whether the adjacent position is empty. If the adjacent position is empty, step S840 is continuously executed; otherwise, it is determined that the adjacent position has a nearest neighbor, and step S870 is executed.

[0173] In step S870, the nearest neighbor is added to the nearest neighbor list of the current point.

[0174] In step S880, the reconstructed attribute values of the remaining K-N nearest neighbors are determined according to the average value of the reconstructed attribute values of the N nearest neighbors.

[0175] In step S890, the search is ended.

[0176] Example 3

[0177] The example proposes an inter-frame Wiener filtering scheme for multi-frame point cloud attribute values. As shown in FIG. 9, after motion compensation, the predicted frame point cloud of the previous frame obtains the reconstructed point cloud of the previous frame. The current frame point cloud can take the reconstructed point cloud of the previous frame as a reference frame to perform inter-frame prediction. In the example, the first frame reconstructed point cloud after Wiener filtering is used to perform inter-frame prediction on the second frame point cloud, which will be described in detail below in combination with FIG. 10 and FIG. 11.

[0178] FIG. 10 shows a flowchart of inter-frame prediction at the encoding end according to an embodiment of the present application. As shown in FIG. 10, at the encoding end, first, for the first frame point cloud in the multi-frame point cloud, the Wiener filtering coefficient is determined based on the scheme described above, and the Wiener filtering coefficient is applied to the first frame reconstructed point cloud to perform quality enhancement, and the quality enhanced point cloud is overlaid on the reconstructed point cloud. Then, for the second frame in the multi-frame point cloud, the quality enhanced first frame reconstructed point cloud is used for inter-frame prediction of the second frame, and then 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 filtering for inter-frame prediction of the next frame.

[0179] FIG. 11 shows a flowchart of inter-frame prediction at the decoding end according to an embodiment of the present application. As shown in FIG. 11, at the decoding end, first, for the first frame point cloud in the multi-frame point cloud, the flag indicating whether to use the Wiener filtering for quality enhancement and the Wiener filtering coefficient are decoded, then the reconstructed point cloud is obtained, and then the quality enhancement is performed based on the Wiener filtering, and the quality enhanced point cloud is overlaid on the original decoded point cloud. Then, in the decoding process of the second frame point cloud in the multi-frame point cloud, the quality enhanced first frame decoded point cloud is used for the decoding process of the second frame point cloud, and the second frame decoded point cloud is obtained. Finally, for the second frame decoded point cloud, quality enhancement is performed again based on the Wiener filtering for inter-frame prediction of the next frame.

[0180] The multi-frame point cloud attribute inter-frame Wiener filtering quality enhancement scheme proposed in the example of the present application extends the Wiener filtering quality enhancement technology from intra-frame coding to inter-frame coding, which brings better quality enhancement effect compared with the Wiener filtering in the configuration of intra-frame coding. At the same time, the neighbor search scheme based on Morton code proposed in the example of the present application replaces the KNN nearest neighbor search used in the related art, which realizes fast search of more neighbor points and reduces the coding and decoding time.

[0181] The example of the present application can perform quality enhancement on the reconstructed point cloud under the condition of lossless geometry and lossy attribute, or under the condition of lossy geometry and lossy attribute.

[0182] In the multi-frame point cloud Wiener filtering, a set of different parameters is calculated for each frame of point cloud. If the same filter coefficient is used for adjacent similar point clouds, the number of filter coefficient calculation can be reduced, and the time required for quality enhancement using Wiener filtering can be further reduced.

[0183] The neighborhood difference is considered in filtering. Due to the large change of attribute values at the contour or boundary of the point cloud, a single filter can be difficult to cover the filtering of the whole point cloud, resulting in a space for improvement. Therefore, according to the neighborhood difference value, different categories are classified, a separate filter is applied, and multiple filter coefficients are transmitted, so as to realize adaptive selection of the filter for filtering to achieve better results.

[0184] The method embodiments of the present application are described in detail above in combination with FIGS. 1 to 11, and the device embodiments of the present application are described in detail below in combination with FIGS. 12 to 15. 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.

[0185] FIG. 12 is a structural schematic diagram of a decoder according to an embodiment of the present application. As shown in FIG. 12, the decoder 1200 can include a first determining unit 1210, a second determining unit 1220, and a filtering unit 1230.

[0186] The first determining unit 1210 is configured to parse a bitstream and determine filter coefficients.

[0187] The second determining unit 1220 is configured to determine the near neighbor points of the current point according to the position information of the points in the first reconstructed point cloud.

[0188] The filtering unit 1230 is configured to filter the reconstructed attribute value of the current point according to the reconstructed attribute values of the near neighbor points of the current point and the filter coefficients.

[0189] In some implementations, the decoder 1200 further includes a third determining unit configured to determine a second reconstructed point cloud by filtering the reconstructed attribute values of the first reconstructed point cloud, and determine the first reconstructed point cloud by inter-frame prediction of the point cloud of the second frame according to the second reconstructed point cloud.

[0190] In some implementations, in a decoding order, the second frame is a next frame of the first frame.

[0191] In some implementations, the second determining unit 1220 is further configured to determine the near neighbor points of the current point according to the Morton code of the points in the first reconstructed point cloud.

[0192] In some implementations, the Morton code of the near neighbor points of the current point is determined based on the Morton code of the first adjacent position of the current point.

[0193] In some embodiments, the Morton code of the first neighboring position is determined based on an offset value of a spatial position between the current point and the first neighboring position.

[0194] In some embodiments, the second determining unit 1220 is further configured to determine the Morton code of the first neighboring position according to the Morton code of the current point and the offset value; and determine the near neighbor point of the current point according to the Morton code of the first neighboring position and the Morton code of the point in the first reconstructed point cloud.

[0195] In some embodiments, the second determining unit 1220 is further configured to determine the near neighbor point of the current point according to the three-dimensional coordinate value of the second neighboring position of the current point.

[0196] In some embodiments, the second determining unit 1220 is further configured to determine the three-dimensional coordinate value of the second neighboring position of the current point according to the three-dimensional coordinate value of the point in the first reconstructed point cloud; and determine the near neighbor point of the current point according to the three-dimensional coordinate value of the second neighboring position.

[0197] In some embodiments, the decoder 1200 further comprises a fourth determining unit configured to determine the reconstructed attribute value of the first near neighbor point according to the reconstructed attribute value of the near neighbor point of the current point.

[0198] In some embodiments, the reconstructed attribute value of the first near neighbor point is determined based on an average value of the reconstructed attribute values of the near neighbor points of the current point.

[0199] In some embodiments, the first reconstructed point cloud corresponds to a plurality of filters, the filter coefficient corresponds to a target filter, and the target filter is determined based on a difference between the reconstructed attribute value of the near neighbor point of the current point and the reconstructed attribute value of the current point.

[0200] In some embodiments, the near neighbor point of the current point belongs to a voxel of N×N×N, and N is an integer greater than 3.

[0201] In some embodiments, N is 5.

[0202] In some embodiments, the filter is a Wiener filter.

[0203] In some embodiments, the order of the Wiener filter is 4 or 8.

[0204] In some implementations, the decoder 1200 further includes a fifth determining unit configured to parse the bitstream to determine first information, the first information being used to indicate whether to filter the reconstructed attribute values of the first reconstructed point cloud; and / or, parse the bitstream to determine second information, the second information being used to indicate the filter coefficient.

[0205] 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 be a module, and can also be non-modular. Moreover, the components in the embodiments can be integrated in one 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.

[0206] 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 essentially or say the part that contributes to the prior art or the whole or part of the technical solutions 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 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 program code storage media.

[0207] Therefore, the embodiments of the present application provide a computer readable storage medium applied to the decoder 1200, the computer readable storage medium storing a computer program, the computer program being executed by a processor to implement the decoding method of any one of the foregoing embodiments.

[0208] Based on the components of the decoder 1200 and the computer readable storage medium, referring to FIG. 13, a specific hardware structure diagram of an encoder 1300 provided by an embodiment of the present application is shown. As shown in FIG. 13, the encoder 1300 can include a communication interface 1310, a memory 1320 and a processor 1330; the various components are coupled together through a bus system 1340. It can be understood that the bus system 1340 is used to realize the connection communication between the components. The bus system 1340 includes not only a data bus, but also a power supply bus, a control bus and a status signal bus. However, in order to clearly illustrate, various buses are marked as the bus system 1340 in FIG. 13. Among them,

[0209] The communication interface 1310 is configured to receive and send signals in the process of transceiving information with other external network elements;

[0210] The memory 1320 is configured to store a computer program;

[0211] The processor 1330 is configured to execute the following when running the computer program:

[0212] Parsing the code stream to determine the filter coefficient;

[0213] According to the position information of the points in the first reconstructed point cloud, determining the near neighbor points of the current point;

[0214] According to the reconstructed attribute values of the near neighbor points of the current point and the filter coefficient, filtering the reconstructed attribute values of the current point.

[0215] It is to be appreciated that the memory 1320 in the embodiments of this application can be volatile, nonvolatile, or a combination of both. By way of example, the nonvolatile memory can be read-only memory (ROM), programmable ROM (PROM), erasable PROM (EPROM), electrically EPROM (EEPROM), or flash memory. The volatile memory can be random access memory (RAM), which acts as external cache. By way of example, and not limitation, many forms of RAM are available, such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double-data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), and direct rambus RAM (DRRAM). The memory 1320 of the subject systems and methods is intended to include, without being limited to, these and any other suitable types of memory.

[0216] The processor 1330 can be an integrated circuit chip including a processing unit that is configured to process signals. In implementation, the steps of the above-described method can be completed by the integrated logic circuits of the processor 1330 or by instructions in the form of software. The processor 1330 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 logical 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, or other mature storage medium in the art. The storage medium is located in the storage 1320, and the processor 1330 reads the information in the storage 1320 and completes the steps of the above-described method in combination with the hardware.

[0217] 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 the 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 the 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.

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

[0219] FIG. 14 is a structural schematic diagram of an encoder provided by an embodiment of the present application. As shown in FIG. 14, the encoder 1400 includes a first determining unit 1410, a second determining unit 1420, and a filtering unit 1430.

[0220] The first determining unit 1410 is configured to determine a near neighbor point of a point in the first reconstructed point cloud according to position information of the point in the first reconstructed point cloud.

[0221] The second determining unit 1420 is configured to determine a filtering coefficient according to a reconstructed attribute value of the near neighbor point of the point in the first reconstructed point cloud.

[0222] The filtering unit 1430 is configured to filter a reconstructed attribute value of a current point according to the reconstructed attribute value of the near neighbor point of the current point and the filtering coefficient.

[0223] In some implementations, the encoder 1400 further includes a third determining unit configured to filter a reconstructed attribute value of a reconstructed point cloud of a first frame to determine a second reconstructed point cloud, and to perform inter-frame prediction on a point cloud of a second frame according to the second reconstructed point cloud to determine the first reconstructed point cloud.

[0224] In some implementations, the second frame is a next frame of the first frame.

[0225] In some implementations, the first determining unit 1410 is further configured to determine the near neighbor point of the point in the first reconstructed point cloud according to a Morton code of the point in the first reconstructed point cloud.

[0226] In some implementations, the Morton code of the near neighbor point of the current point is determined based on a Morton code of a first neighboring position of the current point.

[0227] In some implementations, the Morton code of the first neighboring position is determined based on an offset value of a spatial position between the current point and the first neighboring position.

[0228] In some implementations, the first determining unit 1410 is further configured to determine the Morton code of the first neighboring position according to the Morton code of the current point and the offset value, and to determine the near neighbor point of the current point according to the Morton code of the first neighboring position and the Morton code of the point in the first reconstructed point cloud.

[0229] In some implementations, the first determining unit 1410 is further configured to determine the near neighbor point of the point in the first reconstructed point cloud according to a three-dimensional coordinate value of the point in the first reconstructed point cloud.

[0230] In some embodiments, the first determining unit 1410 is further configured to determine, according to the three-dimensional coordinate value of the point in the first reconstructed point cloud, a three-dimensional coordinate value of a second neighboring position of the current point; and determine, according to the three-dimensional coordinate value of the second neighboring position, a near neighbor point of the current point.

[0231] In some embodiments, the second determining unit 1420 is further configured to determine, according to the reconstructed attribute value of the near neighbor point of the point in the first reconstructed point cloud and the original attribute value of the point in the first reconstructed point cloud, a self-correlation matrix and a cross-correlation matrix; and determine, according to the self-correlation matrix and the cross-correlation matrix, the filter coefficient.

[0232] In some embodiments, the current point further includes a first near neighbor point, and the encoder 1400 further includes a fourth determining unit configured to determine, according to the reconstructed attribute value of the near neighbor point of the current point, a reconstructed attribute value of the first near neighbor point.

[0233] In some embodiments, the reconstructed attribute value of the first near neighbor point is determined based on an average value of the reconstructed attribute values of the near neighbor points of the current point.

[0234] In some embodiments, the first reconstructed point cloud corresponds to a plurality of filters, the filter coefficient corresponds to a target filter, and the target filter is determined based on a difference between the reconstructed attribute value of the near neighbor point of the current point and the reconstructed attribute value of the current point.

[0235] In some embodiments, the near neighbor point of the current point belongs to a voxel of N×N×N, and N is an integer greater than 3.

[0236] In some embodiments, N is 5.

[0237] In some embodiments, the filter is a Wiener filter.

[0238] In some embodiments, the order of the Wiener filter is 4 or 8.

[0239] In some embodiments, the encoder 1400 further includes a fourth determining unit configured to write first information into a bitstream, the first information being used to indicate whether the reconstructed attribute value of the first reconstructed point cloud is filtered; and / or write second information into the bitstream, the second information being used to indicate the filter coefficient.

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

[0241] 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 part that contributes to the prior art, or the whole or part of the technical solutions 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 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 ROM, a RAM, a magnetic disk or an optical disk, and various program code storage media.

[0242] Therefore, the embodiments of the present application provide a computer readable storage medium applied to the encoder 1400, and the computer readable storage medium stores a computer program. When the computer program is executed by a processor, the decoding method described in any one of the foregoing embodiments is implemented.

[0243] Based on the components of the foregoing encoder 1400 and the computer readable storage medium, referring to FIG. 15, a specific hardware structure schematic diagram of an encoder 1500 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,

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

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

[0246] The processor 1530 is used for executing the following when running the computer program:

[0247] According to the position information of the points in the first reconstructed point cloud, a near neighbor point of the point in the first reconstructed point cloud is determined;

[0248] According to the reconstructed attribute value of the near neighbor point of the point in the first reconstructed point cloud, a filter coefficient is determined;

[0249] According to the reconstructed attribute value of the near neighbor point of the current point and the filter coefficient, the reconstructed attribute value of the current point is filtered.

[0250] 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 ROM, PROM, EPROM, EEPROM or flash memory. The volatile memory can be RAM, which is used as an external cache. By way of example but not limitation, many forms of RAM are available, such as SRAM, DRAM, SDRAM, DDRSDRAM, ESDRAM, SLDRAM and DRRAM. The memory 1520 of the system and method described in the present application is intended to include but not limited to these and any other suitable type of memory.

[0251] The processor 1530 can be an integrated circuit chip with processing capability. In the implementation process, each step of the above method can be completed by the integrated logic circuit of hardware in the processor 1530 or the instruction in the form of software. The above processor 1530 can be a general processor, DSP, ASIC, FPGA or other programmable logic device, discrete gate or transistor logic device, discrete hardware component. Each method, step and logic block 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 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 mature in the art. The storage medium is located in the memory 1520, and the processor 1530 reads the information in the memory 1520, and combines the hardware to complete the steps of the above method.

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

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

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

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

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

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

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

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

[0260] 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 filter coefficients; determining a neighbor point of a current point according to position information of points in a first reconstructed point cloud; filtering a reconstructed attribute value of the current point according to reconstructed attribute values of the neighbor point of the current point and the filter coefficients.

2. The method of claim 1, wherein, The method further comprises: filtering reconstructed attribute values of the first reconstructed point cloud to determine a second reconstructed point cloud; inter-frame predicting a point cloud of a second frame according to the second reconstructed point cloud to determine the first reconstructed point cloud.

3. The method of claim 2, wherein, In a decoding order, the second frame is a next frame of the first frame.

4. The method of any one of claims 1 to 3, wherein, The determining of the neighbor point of the current point according to the position information of the points in the first reconstructed point cloud comprises: determining the neighbor point of the current point according to Morton codes of the points in the first reconstructed point cloud.

5. The method of claim 4, wherein, The Morton code of the neighbor point of the current point is determined based on a Morton code of a first neighboring position of the current point.

6. The method of claim 5, wherein, The Morton code of the first neighboring position is determined based on an offset value of a spatial position between the current point and the first neighboring position.

7. The method of claim 6, wherein, The determining of the neighbor point of the current point according to the Morton codes of the points in the first reconstructed point cloud comprises: determining the Morton code of the first neighboring position according to the Morton code of the current point and the offset value; determining the neighbor point of the current point according to the Morton code of the first neighboring position and the Morton codes of the points in the first reconstructed point cloud.

8. The method of any one of claims 1 to 3, wherein, The determining of the neighbor point of the current point according to the position information of the points in the first reconstructed point cloud comprises: determining the neighbor point of the current point according to three-dimensional coordinate values of the points in the first reconstructed point cloud.

9. The method of claim 8, wherein, The determining of the neighbor point of the current point according to the three-dimensional coordinate values of the points in the first reconstructed point cloud comprises: determining three-dimensional coordinate values of a second neighboring position of the current point according to the three-dimensional coordinate values of the points in the first reconstructed point cloud; determining the neighbor point of the current point according to the three-dimensional coordinate values of the second neighboring position.

10. The method of any one of claims 4 to 9, wherein, The current point further comprises a first neighbor point, and the method further comprises: determining a reconstructed attribute value of the first neighbor point according to reconstructed attribute values of the neighbor point of the current point.

11. The method of claim 10, wherein, The reconstructed attribute value of the first neighbor point is determined based on an average of the reconstructed attribute values of the neighbor point of the current point.

12. The method of any one of claims 1 to 11, wherein, The first reconstructed point cloud corresponds to a plurality of filters, the filter coefficients correspond to a target filter, and the target filter is determined based on a difference between the reconstructed attribute values of the neighbor point of the current point and the reconstructed attribute value of the current point.

13. The method of any one of claims 1 to 12, wherein, The neighbor point of the current point belongs to a voxel of NxNxN, and N is an integer greater than 3.

14. The method of claim 13, wherein, N is 5.

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

16. The method of claim 15, wherein, The order of the Wiener filtering is 4 or 8.

17. The method of any one of claims 1 to 16, wherein, The method further comprises: parsing a bitstream to determine first information, the first information being used to indicate whether to filter reconstructed attribute values of the first reconstructed point cloud; and / or parsing a bitstream to determine second information, the second information being used to indicate the filter coefficients.

18. A point cloud encoding method applied to an encoder, comprising: determining neighbor points of points in a first reconstructed point cloud according to position information of the points in the first reconstructed point cloud; determine a filter coefficient according to the reconstructed attribute value of the neighbor point of the point in the first reconstructed point cloud; filter the reconstructed attribute value of the current point according to the reconstructed attribute value of the neighbor point of the current point and the filter coefficient.

19. The method of claim 18, wherein, The method further comprises: filtering the reconstructed attribute value of the first reconstructed point cloud to determine a second reconstructed point cloud; inter-frame predicting the point cloud of the second frame according to the second reconstructed point cloud to determine the first reconstructed point cloud.

20. The method of claim 19, wherein, In the encoding order, the second frame is a next frame of the first frame.

21. The method of any one of claims 18-20, wherein, The method further comprises: determining the neighbor point of the point in the first reconstructed point cloud according to the Morton code of the point in the first reconstructed point cloud.

22. The method of claim 21, wherein, The Morton code of the neighbor point of the current point is determined based on the Morton code of the first adjacent position of the current point.

23. The method of claim 22, wherein, The Morton code of the first adjacent position is determined based on the offset value of the spatial position between the current point and the first adjacent position.

24. The method of claim 23, wherein, The method further comprises: determining the Morton code of the first adjacent position according to the Morton code of the current point and the offset value; determining the neighbor point of the current point according to the Morton code of the first adjacent position and the Morton code of the point in the first reconstructed point cloud.

25. The method of any one of claims 18-20, wherein, The method further comprises: determining the neighbor point of the point in the first reconstructed point cloud according to the three-dimensional coordinate value of the point in the first reconstructed point cloud.

26. The method of claim 25, wherein, The method further comprises: determining the three-dimensional coordinate value of the second adjacent position of the current point according to the three-dimensional coordinate value of the point in the first reconstructed point cloud; determining the neighbor point of the current point according to the three-dimensional coordinate value of the second adjacent position.

27. The method of any one of claims 18-26, wherein, The method further comprises: determining the filter coefficient according to the reconstructed attribute value of the neighbor point of the point in the first reconstructed point cloud and the original attribute value of the point in the first reconstructed point cloud. The method further comprises:

28. The method of any one of claims 18-27, wherein, determining the first neighbor point of the current point according to the reconstructed attribute value of the neighbor point of the current point. The reconstructed attribute value of the first neighbor point is determined based on the average of the reconstructed attribute value of the neighbor point of the current point.

29. The method of claim 28, wherein, The first reconstructed point cloud corresponds to a plurality of filters, the filter coefficient corresponds to a target filter, and the target filter is 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.

30. The method of any one of claims 18-29, wherein, The neighbor point of the current point belongs to a voxel of N×N×N, and N is an integer greater than 3.

31. The method of any one of claims 18-30, wherein, N is 5.

32. The method of claim 31, wherein, The filter is a Wiener filter.

33. The method of claim 18, wherein, The order of the Wiener filter is 4 or 8.

34. The method of claim 33, wherein, The method further comprises:

35. The method of any one of claims 18-34, wherein, ​ write, into a bitstream, first information used for indicating whether a reconstructed attribute value of the first reconstructed point cloud is filtered; and / or, write, into a bitstream, second information used for indicating the filter coefficient.

36. A decoder comprising: a first determining unit configured to parse a bitstream and determine a filter coefficient; a second determining unit configured to determine, according to position information of points in a first reconstructed point cloud, a near neighbor point of a current point; a filtering unit configured to filter, according to a reconstructed attribute value of the near neighbor point of the current point and the filter coefficient, a reconstructed attribute value of the current point.

37. A decoder comprising: a memory configured to store a computer program; a processor configured to implement a method recited in any of claims 1-17 when executing the computer program.

38. An encoder comprising: a first determining unit configured to determine, according to position information of points in a first reconstructed point cloud, a near neighbor point of a point in the first reconstructed point cloud; a second determining unit configured to determine, according to a reconstructed attribute value of the near neighbor point of the point in the first reconstructed point cloud, a filter coefficient; a filtering unit configured to filter, according to a reconstructed attribute value of the near neighbor point of a current point and the filter coefficient, a reconstructed attribute value of the current point.

39. An encoder comprising: a memory configured to store a computer program; a processor configured to implement a method recited in any of claims 18-35 when executing the computer program.

40. 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 recited in any of claims 1-17, and the encoding method is recited in any of claims 18-35.

41. A bitstream, the bitstream comprising a bitstream generated by a method recited in any of claims 18-35.

42. A computer readable storage medium, wherein, The computer readable storage medium stores a computer program, which is executed to implement a method recited in any of claims 1-17, or 18-35.

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

    CN113615207A

  • Prediction method, encoder, decoder and computer storage medium

    CN117793372A

  • Point cloud attribute transfer algorithm

    US20190311502A1

  • Point cloud encoding method and system, point cloud decoding method and system, point cloud encoder, and point cloud decoder

    WO2022140937A1

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

    WO2023123467A1