Point cloud decoding method, point cloud coding method, decoder and encoder
Patent Information
- Application Number
- CN202280098713.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2022-10-13
- Publication Date
- 2025-03-11
AI Technical Summary
During the compression process of point cloud, since the attribute prediction value of the point depends on the attribute reconstruction value of the encoded point, errors accumulate and reduce the encoding and decoding performance.
By determining the filter coefficient of the target point in the point cloud decoding method, and filtering the initial reconstructed value of the attribute information based on the filter coefficient, the accuracy of the reconstructed value of the attribute information is improved, error accumulation is reduced, and decoding performance is improved.
It improves point cloud decoding performance, enhances the quality of reconstructed point clouds, reduces error accumulation, and improves encoding and decoding efficiency.
Smart Images

Figure CN119605177A_ABST
Abstract
Description
Point cloud decoding method, point cloud encoding method, decoder and encoder Technical Field
[0001] The embodiments of the present application relate to the field of coding and decoding technology, and more specifically, to a point cloud decoding method, a point cloud encoding method, a decoder, and an encoder. Background Art
[0002] Point clouds have become ubiquitous in various fields, such as virtual / augmented reality, robotics, geographic information systems, and medicine. With the continuous improvement of the accuracy and speed of scanning equipment, large amounts of point clouds can be accurately acquired from object surfaces, often corresponding to hundreds of thousands of points in a single scene. This massive number of points also poses challenges for computer storage and transmission. Therefore, point compression has become a hot topic.
[0003] For point cloud compression, the attribute prediction value of the current point in the point cloud will depend on the attribute reconstruction value of the encoded point. This dependency will inevitably propagate the distortion of the previously encoded point to the current point, which will eventually lead to error accumulation and reduce the encoding performance. Moreover, since the process of predicting the attribute information of the current point by the decoder is similar to that of the encoder, it will also affect the decoding performance.
[0004] Summary of the Invention
[0005] The present application provides a point cloud decoding method, a point cloud encoding method, a decoder and an encoder, which can improve decoding performance and enhance the quality of reconstructed point clouds.
[0006] In a first aspect, an embodiment of the present application provides a point cloud decoding method, comprising:
[0007] Decode the code stream of the point cloud and determine the residual value of the attribute information of the target point in the point cloud;
[0008] Determining an initial reconstructed value of the attribute information of the target point based on the residual value of the attribute information of the target point and the predicted value of the attribute information of the target point;
[0009] Determine the filter coefficient of the target point;
[0010] The initial reconstructed value of the attribute information of the target point is filtered based on the filter coefficient of the target point to determine the reconstructed value of the attribute information of the target point.
[0011] In a second aspect, an embodiment of the present application provides a point cloud encoding method, including:
[0012] Determine a residual value of the attribute information of the target point based on the true value of the attribute information of the target point in the point cloud and the predicted value of the attribute information of the target point;
[0013] Determine the filter coefficient of the target point based on the neighboring points of the target point;
[0014] The residual value of the attribute information of the target point and the filter coefficient of the target point are encoded to obtain a code stream.
[0015] In a third aspect, an embodiment of the present application provides a decoder, including:
[0016] A decoding unit, used to decode the code stream of the point cloud and determine the residual value of the attribute information of the target point in the point cloud;
[0017] a reconstruction unit, configured to determine an initial reconstructed value of the attribute information of the target point based on the residual value of the attribute information of the target point and the predicted value of the attribute information of the target point;
[0018] A determination unit, configured to determine a filter coefficient for the target point;
[0019] The filtering unit is configured to filter the initial reconstructed value of the attribute information of the target point based on the filtering coefficient of the target point to determine the reconstructed value of the attribute information of the target point.
[0020] In a fourth aspect, an embodiment of the present application provides an encoder, including:
[0021] A residual unit is used to determine a residual value of the attribute information of the target point based on the true value of the attribute information of the target point in the point cloud and the predicted value of the attribute information of the target point;
[0022] a determining unit, configured to determine a filter coefficient of the target point based on neighboring points of the target point;
[0023] The encoding unit is used to encode the residual value of the attribute information of the target point and the filter coefficient of the target point to obtain a code stream.
[0024] In a fifth aspect, an embodiment of the present application provides a decoder, including:
[0025] a processor adapted to implement computer instructions; and,
[0026] A computer-readable storage medium stores computer instructions, wherein the computer instructions are suitable for being loaded by a processor and executing the decoding method in the first aspect or its various implementations mentioned above.
[0027] In one implementation, there are one or more processors and one or more memories.
[0028] In one implementation, the computer-readable storage medium may be integrated with the processor, or the computer-readable storage medium may be provided separately from the processor.
[0029] In a sixth aspect, an embodiment of the present application provides an encoder, including:
[0030] a processor adapted to implement computer instructions; and,
[0031] A computer-readable storage medium stores computer instructions, wherein the computer instructions are suitable for being loaded by a processor and executing the encoding method in the second aspect or its various implementations mentioned above.
[0032] In one implementation, there are one or more processors and one or more memories.
[0033] In one implementation, the computer-readable storage medium may be integrated with the processor, or the computer-readable storage medium may be provided separately from the processor.
[0034] In the seventh aspect, an embodiment of the present application provides a computer-readable storage medium, which stores computer instructions. When the computer instructions are read and executed by a processor of a computer device, the computer device executes the point cloud decoding method involved in the first aspect mentioned above or the point cloud encoding method involved in the second aspect mentioned above.
[0035] In an eighth aspect, embodiments of the present application provide a computer program product or computer program, comprising computer instructions stored in a computer-readable storage medium. A processor of a computer device reads the computer instructions from the computer-readable storage medium and executes the computer instructions, causing the computer device to perform the point cloud decoding method of the first aspect or the point cloud encoding method of the second aspect.
[0036] In a ninth aspect, an embodiment of the present application provides a code stream, which is the code stream involved in the method described in the first aspect above or the code stream generated by the method described in the second aspect above.
[0037] Based on the above technical solution, the present application decodes the code stream of the point cloud and determines the filter coefficient of the target point in the point cloud; and based on the filter coefficient of the target point, filters the initial reconstruction value of the attribute information of the target point to determine the reconstructed value of the attribute information of the target point. On the one hand, by using the filter coefficient of the target point to filter the initial reconstruction value of the attribute information of the target point, the accuracy of the reconstructed value of the attribute information of the target point can be improved, thereby improving the decoding performance and achieving the enhancement of the quality of the reconstructed point cloud. On the other hand, by using the filter coefficient of the target point to filter the initial reconstruction value of the attribute information of the target point, it is beneficial to use the reconstruction value of the current point to predict the attribute information of subsequent points in the point cloud, thereby reducing error accumulation and achieving the enhancement of the quality of the reconstructed point cloud. BRIEF DESCRIPTION OF THE DRAWINGS
[0038] FIG1 is an example of a point cloud image provided by an embodiment of the present application.
[0039] FIG2 is a partially enlarged view of the point cloud image shown in FIG1 .
[0040] FIG3 is an example of a point cloud image with six viewing angles provided by an embodiment of the present application.
[0041] FIG4 is a schematic block diagram of the coding framework provided in an embodiment of the present application.
[0042] FIG5 is an example of a bounding box provided in an embodiment of the present application.
[0043] FIG6 is an example of performing octree division on a bounding box provided by an embodiment of the present application.
[0044] 7 to 9 show the arrangement order of Morton codes in a two-dimensional space.
[0045] FIG10 shows the arrangement order of Morton codes in three-dimensional space.
[0046] FIG11 is a schematic block diagram of the LOD layer provided in an embodiment of the present application.
[0047] FIG12 is a schematic block diagram of a decoding framework provided in an embodiment of the present application.
[0048] FIG13 is a schematic flowchart of the point cloud decoding method provided in an embodiment of the present application.
[0049] FIG14 is another schematic flowchart of the point cloud decoding method provided in an embodiment of the present application.
[0050] FIG15 is another schematic flowchart of the point cloud decoding method provided in an embodiment of the present application.
[0051] Figure 16 is a schematic flowchart of the point cloud encoding method provided in an embodiment of the present application.
[0052] FIG17 is another schematic flowchart of the point cloud encoding method provided in an embodiment of the present application.
[0053] FIG18 is another schematic flowchart of the point cloud encoding method provided in an embodiment of the present application.
[0054] Figure 19 is a schematic block diagram of the decoder provided in an embodiment of the present application.
[0055] Figure 20 is a schematic block diagram of the encoder provided in an embodiment of the present application.
[0056] FIG21 is a schematic structural diagram of an electronic device provided in an embodiment of the present application. DETAILED DESCRIPTION
[0057] The technical solutions in the embodiments of the present application will be described below with reference to the accompanying drawings.
[0058] A point cloud is a collection of irregularly distributed discrete points in space that represent the spatial structure and surface properties of a three-dimensional object or scene. Figures 1 and 2 show a 3D point cloud image and a zoomed-in view, respectively. The point cloud surface is composed of densely distributed points.
[0059] A two-dimensional image contains information at every pixel, so there's no need to record its location information separately. However, the distribution of points in a point cloud in three-dimensional space is random and irregular, so it's necessary to record the location of each point in space to fully represent a point cloud. Similar to a two-dimensional image, each point in a point cloud has corresponding attribute information, typically an RGB color value, which reflects the color of the object. For a point cloud, in addition to color, the attribute information corresponding to each point can also be a reflectance value, which reflects the surface material of the object. Each point in a point cloud can include both geometric and attribute information. The geometric information of each point in a point cloud refers to the Cartesian three-dimensional coordinate data of that point, and the attribute information of each point in a point cloud can include, but is not limited to, at least one of the following: color information, material information, and laser reflection intensity information. Color information can be information in any color space. For example, color information can be red, green, and blue (RGB) information. For another example, color information can also be luminance and chrominance (YCbCr, YUV) information. Here, Y represents brightness (Luma), Cb (U) represents the blue chromaticity component, and Cr (V) represents the red chromaticity component. Each point in a point cloud has the same amount of attribute information. For example, each point in a point cloud has two types of attribute information: color information and laser reflection intensity. Another example is that each point in a point cloud has three types of attribute information: color information, material information, and laser reflection intensity information.
[0060] Point cloud images can have multiple viewing angles. For example, the point cloud image shown in Figure 3 can have six viewing angles. The data storage format corresponding to the point cloud image consists of a file header information part and a data part. The header information includes the data format, data representation type, the total number of point cloud points, and the content represented by the point cloud.
[0061] Point clouds can flexibly and conveniently express the spatial structure and surface properties of three-dimensional objects or scenes. Moreover, since point clouds are obtained by directly sampling real objects, they can provide a strong sense of reality while ensuring accuracy. Therefore, they are widely used, including virtual reality games, computer-aided design, geographic information systems, automatic navigation systems, digital cultural heritage, free viewpoint broadcasting, three-dimensional immersive remote presentation, and three-dimensional reconstruction of biological tissues and organs.
[0062] For example, point clouds can be divided into two categories based on application scenarios: machine-perceived point clouds and human-perceived point clouds. Application scenarios for machine-perceived point clouds include, but are not limited to, autonomous navigation systems, real-time inspection systems, geographic information systems, visual sorting robots, and disaster relief robots. Application scenarios for human-perceived point clouds include, but are not limited to, digital cultural heritage, free-viewpoint broadcasting, and three-dimensional immersive communications. Accordingly, point clouds can be divided into dense and sparse point clouds based on their acquisition method. They can also be divided into static and dynamic point clouds based on their acquisition approach. More specifically, point clouds can be divided into three types: first-class static point clouds, second-class dynamic point clouds, and third-class dynamically acquired point clouds. For first-class static point clouds, the object is stationary, and the device acquiring the point cloud is also stationary. For second-class dynamic point clouds, the object is moving, but the device acquiring the point cloud is stationary. For third-class dynamically acquired point clouds, the device acquiring the point cloud is moving.
[0063] Exemplarily, point cloud acquisition methods include, but are not limited to, computer generation, 3D laser scanning, and 3D photogrammetry. Computers can generate point clouds of virtual three-dimensional objects and scenes; 3D laser scanning can obtain point clouds of static real-world three-dimensional objects or scenes, and can obtain millions of point clouds per second; 3D photogrammetry can obtain point clouds of dynamic real-world three-dimensional objects or scenes, and can obtain tens of millions of point clouds per second. Specifically, point clouds on the surface of an object can be acquired through acquisition equipment such as photoelectric radars, lidars, laser scanners, and multi-view cameras. The point cloud obtained according to the principle of laser measurement may include the three-dimensional coordinate information of the point and the laser reflection intensity (reflectance) of the point. The point cloud obtained according to the principle of photogrammetry may include the three-dimensional coordinate information of the point and the color information of the point. The point cloud obtained by combining the principles of laser measurement and photogrammetry may include the three-dimensional coordinate information of the point, the laser reflection intensity (reflectance) of the point, and the color information of the point. These technologies reduce the cost and time cycle of point cloud data acquisition and improve the accuracy of the data. For example, in the medical field, magnetic resonance imaging (MRI), computed tomography (CT), and electromagnetic positioning information can be used to generate point clouds of biological tissues and organs. These technologies reduce the cost and time required to acquire point clouds, while improving data accuracy. While changes in point cloud acquisition methods have made acquisition easier, the processing of massive 3D point clouds is facing bottlenecks due to storage space and transmission bandwidth constraints, as application demands grow.
[0064] For example, for a point cloud video with a frame rate of 30 fps (frames per second), each frame contains 700,000 points. Since each point in each point cloud frame has coordinate information (xyz, float) and color information (RGB, uchar), the data volume of a 10-second point cloud video is approximately 0.7 million × (4 bytes × 3 + 1 byte × 3) × 30 fps × 10 seconds = 3.15 GB. For another example, for a point cloud video with a YUV sampling format of 4:2:0, a frame rate of 24 fps (frames per second), and a resolution of 1280 × 720, the data volume for 10 seconds is approximately 1280 × 720 × 12 bits × 24 frames × 10 seconds ≈ 0.33 GB. In other words, the data volume of a 10-second two-view 3D video is approximately 0.33 × 2 = 0.66 GB. This shows that the data volume of a point cloud video far exceeds that of a 2D or 3D video of the same length. Therefore, in order to better realize data management, save server storage space, and reduce the transmission traffic and transmission time between the server and the client, point cloud compression has become a key issue in promoting industrial development.
[0065] Point cloud compression generally compresses point cloud geometry and attribute information separately. On the encoding side, the point cloud geometry is first encoded in the geometry encoder, and the reconstructed geometry is then fed into the attribute encoder as additional information to assist in attribute compression. On the decoding side, the point cloud geometry is first decoded in the geometry decoder, and the decoded geometry is then fed into the attribute decoder as additional information to assist in attribute compression. The entire codec consists of pre-processing / post-processing, geometry encoding / decoding, and attribute encoding / decoding.
[0066] Exemplarily, the point cloud can be encoded and decoded respectively by various types of encoding frameworks and decoding frameworks. As an example, the encoding and decoding framework can be the Geometry Point Cloud Compression (G-PCC) encoding and decoding framework or the Video Point Cloud Compression (V-PCC) encoding and decoding framework provided by the Moving Picture Experts Group (MPEG), or it can be the AVS-PCC encoding and decoding framework or the Point Cloud Compression Reference Platform (PCRM) framework provided by the Audio Video Standard (AVS) Task Force. The G-PCC encoding and decoding framework can be used to compress the first static point cloud and the third type of dynamically acquired point cloud, and the V-PCC encoding and decoding framework can be used to compress the second type of dynamic point cloud. The G-PCC encoding and decoding framework is also called Test Model 13 (TMC13), and the V-PCC encoding and decoding framework is also called Test Model 2 (TMC2). G-PCC and AVS-PCC are frameworks for static sparse point clouds, and their encoding and decoding frameworks are roughly the same.
[0067] The following uses the G-PCC framework as an example to illustrate the applicable coding and decoding framework of the embodiment of the present application.
[0068] In the G-PCC coding framework, the input point cloud is first sliced, and then the resulting slices are independently encoded. Within the slices, the geometric information of the point cloud and the attribute information corresponding to the points in the point cloud are encoded separately. The G-PCC coding framework first encodes the geometric information; specifically, the geometric information is first transformed so that the entire point cloud is contained in a bounding box. Quantization is then performed. This quantization step mainly serves a scaling purpose. Due to quantization rounding, the geometric information of some points becomes the same. The decision to remove duplicate points is made based on parameters. This process of quantization and removing duplicate points is also called the "voxelization process." Next, the bounding box is partitioned based on an octree. Depending on the depth of the octree partitioning level, the encoding of geometric information is divided into an octree-based geometric information encoding framework and a triangle soup (trisoup)-based geometric information encoding framework.
[0069] In the octree-based geometric information coding framework, the bounding box is first divided into eight equal parts, resulting in eight sub-cubes. The placeholder bits of each sub-cube are then recorded (1 for non-empty, 0 for empty). The non-empty sub-cubes are then divided into eight equal parts again, typically stopping when the resulting leaf node is a 1x1x1 unit cube. During this process, the placeholder bits are predicted using the spatial correlation between the node and its surrounding nodes. Based on the prediction, a corresponding binary arithmetic encoder is selected for arithmetic encoding, implementing context-based adaptive binary arithmetic coding (CABAC) and generating a binary bitstream.
[0070] In the geometric information coding framework based on triangle face sets, octree partitioning must also be performed first. However, unlike the geometric information coding framework based on octree, the geometric information coding framework based on triangle face sets does not need to divide the point cloud into unit cubes with a side length of 1x1x1 step by step. Instead, the division is stopped when the block has a side length of W. Based on the surface formed by the distribution of the point cloud in each block, at most twelve intersections (vertex) generated by the surface and the twelve edges of the block are obtained, and then the coordinates of the intersection of each block are encoded in turn to generate a binary code stream.
[0071] After encoding the geometric information, the G-PCC coding framework reconstructs the geometry and uses the reconstructed geometry to encode the attribute information of the point cloud. Attribute encoding of the point cloud primarily involves encoding the color information of the points in the point cloud. First, the G-PCC coding framework can perform color space conversion on the color information of the points. For example, when the color information of the points in the input point cloud is represented in the RGB color space, the G-PCC coding framework can convert the color information from RGB to YUV. The G-PCC coding framework then uses the reconstructed geometry to recolor the point cloud, aligning the unencoded attribute information with the reconstructed geometry. There are two main transformation methods for color information encoding: one relies on a distance-based lifting transform based on level of detail (LOD) partitioning, and the other directly performs a region-adaptive hierarchical transform (RAHT). Both methods transform the color information from the spatial domain to the frequency domain, obtaining high-frequency and low-frequency coefficients. Finally, these coefficients are quantized and encoded to generate a binary bitstream.
[0072] FIG4 is a schematic block diagram of the coding framework provided in an embodiment of the present application.
[0073] As shown in Figure 4, the encoding framework 100 can obtain geometric and attribute information of a point cloud from a capture device. Point cloud encoding involves both geometric and attribute encoding. In one embodiment, the geometric encoding process includes performing preprocessing on the point cloud acquired from the capture device, such as coordinate transformation and quantization to remove duplicate points; and then encoding the point cloud using an octree-based partitioning algorithm to form a geometric bitstream.
[0074] As shown in Figure 4, the position encoding process of the encoder can be achieved through the following units:
[0075] A coordinate transformation unit 101 , a quantization and removal of duplicate points unit 102 , an octree analysis unit 103 , a geometry reconstruction unit 104 and a first arithmetic encoding unit 105 .
[0076] The coordinate transformation unit 101 can be used to transform the world coordinates of points in a point cloud into relative coordinates. For example, the geometric coordinates of the points are subtracted from the minimum values of the x, y, and z coordinate axes, equivalent to a DC removal operation, to transform the coordinates of the points in the point cloud from world coordinates to relative coordinates, so that the entire point cloud is contained within a bounding box. The quantization and duplicate point removal unit 102 can reduce the number of coordinates through quantization. After quantization, different points may be assigned the same coordinates. Based on this, duplicate points can be removed through a deduplication operation. For example, multiple points with the same quantized position and different attribute information can be merged into a single point through attribute transformation. In some embodiments of the present application, the quantization and duplicate point removal unit 102 is an optional unit module. The octree analysis unit 103 can encode the geometric information of the quantized points using an octree encoding method. For example, the point cloud is regularized in the form of an octree, so that the positions of the points can correspond one-to-one with the positions in the octree. Geometric encoding is performed by counting the positions of the points in the octree and marking them with a flag of 1. The first arithmetic coding unit 105 may perform arithmetic coding on the geometric information output by the octree analysis unit 103 using an entropy coding method, ie, the geometric information output by the octree analysis unit 103 may be used to generate a geometry bit stream using an arithmetic coding method; the geometry bit stream may also be called a geometry bit stream.
[0077] The following describes the regularization method of point clouds.
[0078] Due to the irregular distribution of point clouds in space, the encoding process is challenging. As a possible implementation method, a recursive octree structure can be used to regularly express the points in the point cloud as the center of a cube. For example, as shown in Figure 5, the entire point cloud can be placed in a cube bounding box. At this time, the coordinates of the point in the point cloud can be expressed as (x k ,y k ,z k ), k=0,…,K-1, where K is the total number of points in the point cloud, then the boundary values of the point cloud in the x-axis, y-axis and z-axis directions are:
[0079] x min =min(x 0 ,x 1 ,…,x K-1 );
[0080] y min =min(y 0 ,y 1 ,…,y K-1 );
[0081] zmin =min(z 0 ,z 1 ,…,z K-1 );
[0082] x max =max(x 0 ,x 1 ,…,x K-1 );
[0083] y max =max(y 0 ,y 1 ,…,y K-1 );
[0084] z max =max(z 0 ,z 1 ,…,z K-1 ).
[0085] In addition, the origin of the bounding box (x origin ,y origin ,z origin ) can be calculated as follows:
[0086] x origin =int(floor(x min ));
[0087] y origin =int(floor(y min ));
[0088] z origin =int(floor(z min )).
[0089] Among them, floor() represents floor operation or rounding down operation, and int() represents integer operation.
[0090] Based on this, the encoder can calculate the size of the bounding box in the x-axis, y-axis, and z-axis directions based on the calculation formula of the boundary value and the origin as follows:
[0091] BoudingBoxSize_x=int(x max -x origin )+1;
[0092] BoudingBoxSize_y=int(y max -y origin )+1;
[0093] BoudingBoxSize_z=int(z max -zorigin )+1.
[0094] As shown in Figure 6, after the encoder obtains the dimensions of the bounding box in the x-axis, y-axis, and z-axis directions, it first performs an octree division on the bounding box, obtaining eight sub-blocks each time, and then performs another octree division on the non-empty blocks in the sub-blocks (blocks containing points). This recursive division is repeated until a certain depth, and the non-empty sub-blocks of the final size are called voxels. Each voxel contains one or more points, and the geometric positions of these points are normalized to the center point of the voxel. The attribute value of the center point can be the average of the attribute values of all points in the voxel. Regularizing the point cloud into blocks in space is conducive to describing the positional relationship between points in the point cloud, and thus is conducive to designing a specific encoding order. Based on this, the encoder can encode each voxel based on the determined encoding order, that is, encode the point (or node) represented by each voxel.
[0095] After completing geometric encoding, the encoder reconstructs the geometric information and uses this reconstructed geometric information to encode the attribute information. The attribute encoding process includes: given the reconstructed geometric information of the input point cloud and the true value of the attribute information, selecting one of three prediction modes for point cloud prediction, quantizing the predicted results, and performing arithmetic coding to form the attribute code stream.
[0096] As shown in Figure 4, the attribute encoding process of the encoder can be implemented by the following units:
[0097] A color space transform unit 110 , an attribute transform unit 111 , a region adaptive hierarchical transform (RAHT) unit 112 , a predicting transform unit 113 , a lifting transform unit 114 , a quantization unit 115 and a second arithmetic coding unit 116 .
[0098] The color space conversion unit 110 can be used to convert the RGB color space of the points in the point cloud into a YCbCr format or other formats. The attribute conversion unit 111 can be used to convert the attribute information of the points in the point cloud to minimize attribute distortion. For example, in the case of lossy geometry coding, since the geometric information changes after the geometry coding, the attribute conversion unit 111 is required to reallocate attribute values to each point after the geometry coding so that the attribute error between the reconstructed point cloud and the point cloud before reconstruction is minimized. For example, the attribute information can be the color information of the point. The attribute conversion unit 111 can be used to obtain the original attribute value of the point. After the original attribute value of the point is obtained by the attribute conversion unit 111, any prediction unit can be selected to predict the point in the point cloud. The unit for predicting the point in the point cloud may include at least one of: RAHT 112, a predicting transform unit 113, and a lifting transform unit 114. In other words, any one of the RAHT 112, the predicting transform unit 113, and the lifting transform unit 114 can be used to predict the attribute information of a point in the point cloud to obtain a predicted attribute value for the point. Furthermore, a residual value of the attribute information of the point can be obtained based on the predicted attribute value of the point. For example, the residual value of the attribute information of the point can be the original attribute value of the point minus the predicted attribute value of the point. The quantization unit 115 can be used to quantize the residual value of the attribute information of the point. For example, if the quantization unit 115 is connected to the predicting transform unit 113, the quantization unit 115 can be used to quantize the residual value of the attribute information of the point output by the predicting transform unit 113. For example, the residual value of the attribute information of the point output by the predicting transform unit 113 can be quantized using a quantization step size to improve system performance. The second arithmetic coding unit 116 can perform entropy encoding on the residual value of the attribute information of the point using zero run length coding to obtain an attribute code stream. The attribute code stream can be bitstream information.
[0099] The prediction transformation unit 113 can be used to obtain the original order of the point cloud and divide the point cloud into detail layers (LOD) based on the original order of the point cloud. After obtaining the LOD of the point cloud, the prediction transformation unit 113 can predict the attribute information of the points in the LOD in sequence, and then calculate the residual value of the attribute information of the points, so that subsequent units can perform subsequent quantization encoding processing based on the residual value of the attribute information of the points. For each point in the LOD, based on the neighbor point search result on the LOD where the current point is located, the three neighbor points before the current point are found, and then the attribute reconstruction value of at least one of the three neighbor points is used to predict the current point to obtain the attribute prediction value of the current point; based on this, the residual value of the attribute information of the current point can be obtained based on the attribute prediction value of the current point and the original attribute value of the current point.
[0100] The original order of the point cloud obtained by the prediction transformation unit 113 may be the order obtained by performing Morton sorting on the current point cloud by the prediction transformation unit 113. In other words, after the encoder obtains the original order of the current point cloud by performing Morton sorting on the current point cloud, it may divide the points in the point cloud into layers according to the original order of the current point cloud to obtain the LOD of the current point cloud, and then predict the attribute information of the points in the point cloud based on the LOD.
[0101] 7 to 9 show the arrangement order of Morton codes in a two-dimensional space.
[0102] As shown in FIG7 , the encoder can use a zigzag Morton sequence in the two-dimensional space formed by 2*2 blocks. As shown in FIG8 , the encoder can use a zigzag Morton sequence in the two-dimensional space formed by four 2*2 blocks, wherein each 2*2 block can also use a zigzag Morton sequence, ultimately resulting in the Morton sequence used by the encoder in the two-dimensional space formed by 4*4 blocks. As shown in FIG9 , the encoder can use a zigzag Morton sequence in the two-dimensional space formed by four 4*4 blocks, wherein each four 2*2 blocks and each 2*2 block can also use a zigzag Morton sequence, ultimately resulting in the Morton sequence used by the encoder in the two-dimensional space formed by 8*8 blocks.
[0103] FIG10 shows the arrangement order of Morton codes in three-dimensional space.
[0104] As shown in Figure 10, the Morton arrangement order is not only applicable to two-dimensional space, but can also be extended to three-dimensional space. For example, Figure 10 shows 16 points. Within each "z", the Morton arrangement order between each "z" and "z" is first encoded along the x-axis, then along the y-axis, and finally along the z-axis.
[0105] In one embodiment, the Euclidean distance between points can be obtained based on the geometric information of the points in the point cloud; and then the points are divided into different LODs based on the Euclidean distance between the points.
[0106] For example, after sorting the Euclidean distances between points, the Euclidean distances in different ranges can be divided into different LODs. In a specific implementation, a point can be randomly selected as the first LOD; then the Euclidean distances between the remaining points and the point are calculated, and the points whose Euclidean distances meet the first threshold requirements are classified as the second LOD; then, the centroid of the points in the second LOD is obtained, and the Euclidean distances between the points other than the first LOD and the second LOD and the centroid are calculated, and the points whose Euclidean distances meet the second threshold requirements are classified as the third LOD; and so on, all points are classified into LOD layers. Furthermore, by adjusting the threshold of the Euclidean distance, the number of points in each layer of LOD can be increased.
[0107] For example, the point cloud may be divided into refinement layers based on different Euclidean distances, and then the LOD layer may be obtained based on the refinement layers.
[0108] For example, assuming (R l ) l=0...L-1 Represents refinement levels, and L is the number of LOD levels. The specific steps for constructing LOD are as follows:
[0109] (1) User-defined L Euclidean distances (d l ) l=0...L-1 , divided into L refinement layers (R l ) l=0...L-1 ;
[0110] (2) Mark all points as unvisited and set the set V of visited points to an empty set;
[0111] (3) Refinement layer R l The generation process is as follows:
[0112] Traverse all points. If the current point has been visited, ignore it. Otherwise, calculate the minimum distance D between the current point and the set V. If D is less than d l , then ignore the current point; otherwise, mark the current point as visited and add it to R l and V; repeat this process until all points in the point cloud are traversed.
[0113] (4) Take the refinement layers R0, R1, ..., R l The union of the details is used as the detail layer LOD l (Right now );
[0114] (5) Repeat this process until all points in the point cloud have been visited.
[0115] It should be understood that the LOD layer division method can also adopt other methods, and this application does not limit this. It should be noted that the point cloud can be directly divided into one or more LOD layers, or the point cloud can be first divided into multiple point cloud slices, and then each point cloud slice is divided into one or more LOD layers. For example, the point cloud can be divided into multiple point cloud slices, and the number of points in each point cloud slice can be between 550,000 and 1.1 million. Each point cloud slice can be regarded as a separate point cloud. Each point cloud slice can be divided into multiple LOD layers, and each LOD layer includes multiple points.
[0116] FIG11 is a schematic block diagram of the LOD layer provided in an embodiment of the present application.
[0117] As shown in FIG11 , a point cloud may include a plurality of points arranged in an original order, namely, P0, P1, P2, P3, P4, P5, P6, P7, P8, and P9. Assume that the point cloud is divided into three LOD layers, namely, LOD0, LOD1, and LOD2, based on the Euclidean distance between points. Among them, LOD0 may include P0, P5, P4, and P2, LOD1 may include points in LOD0, P1, P6, and P3, and LOD2 may include points in LOD0, points in LOD1, P9, P8, and P7. At this time, LOD0, LOD1, and LOD2 may be used to form an LOD-based order of the point cloud, namely, P0, P5, P4, P2, P1, P6, P3, P9, P8, and P7. Among them, the LOD-based order may be used as the encoding order of the point cloud.
[0118] Exemplarily, when predicting the attribute information of the current point, the encoder first generates one or more refinement layers based on the original order of the point cloud, then searches for the nearest neighbors of the current point from the previously encoded refinement layers according to the generation order of the refinement layers, and predicts the attribute information of the current point based on the nearest neighbors found to obtain the attribute prediction value of the current point. For example, when predicting the attribute information of the current point, the encoder may first create multiple candidate prediction values based on the search results of the neighboring points of the current point, and then use rate distortion optimization (RDO) technology to select the attribute prediction value with the best prediction performance for the current point from the multiple candidate prediction values. The best attribute prediction value is then used as the attribute prediction value of the current point, and the attribute information is encoded by subtracting it from the original attribute value to obtain the attribute code stream of the point cloud.
[0119] For example, the encoder may first use multiple prediction modes (predMode) to create multiple candidate prediction values based on the search results of neighboring points of the current point.
[0120] Among them, the index values of the multiple prediction modes (predMode) can be 0 to 3. When the encoder encodes the attribute information of the current point, the encoder first finds the three neighboring points before the current point based on the neighbor point search results on the LOD where the current point is located, and then obtains multiple candidate prediction values based on the prediction mode with an index value of 0 to 3. Among them, the prediction mode with an index of 0 refers to determining the weighted average of the reconstructed attribute values of the three neighbor points based on the distance between the three neighbor points and the current point as the candidate prediction value of the current point; the prediction mode with an index of 1 refers to: using the attribute reconstruction value of the nearest neighbor point among the three neighbor points as the candidate prediction value of the current point; the prediction mode with an index of 2 refers to: using the attribute reconstruction value of the second nearest neighbor point as the candidate prediction value of the current point; the prediction mode with an index of 3 refers to: using the attribute reconstruction value of the neighbor points other than the nearest neighbor point and the second nearest neighbor point among the three neighbor points as the candidate prediction value of the current point; after obtaining multiple candidate prediction values of the current point based on the above various prediction modes, the rate distortion optimization (RDO) technology can be used to select the best attribute prediction value, and then the selected best attribute prediction value can be used as the attribute prediction value of the current point for subsequent encoding.
[0121] The principle of creating multiple candidate prediction values is explained below in conjunction with Table 1.
[0122] Table 1
[0123]
[0124] As shown in Table 1, when encoding the attribute information of the current point P2, the prediction mode with an index of 0 means: the weighted average of the distances of the neighboring points P0, P5 and P4 and the reconstructed attribute values of the neighboring points P0, P5 and P4 is determined as the candidate prediction value of the current point P2; the prediction mode with an index of 1 means: the attribute reconstruction value of the nearest neighbor point P4 is determined as the candidate prediction value of the current point P2; the prediction mode with an index of 2 means: the attribute reconstruction value of the second nearest neighbor point P5 is determined as the candidate prediction value of the current point P2; the prediction mode with an index of 3 means: the attribute reconstruction value of the three nearest neighbor points P0 is determined as the candidate prediction value of the current point P2; finally, RDO is used to select the best attribute prediction value for the current point P2.
[0125] It is worth noting that the index of the prediction model used at the current point can be written into the bitstream, or it can be omitted. For example, when the index of the prediction model used at the current point is 0, the index of the prediction model used at the current point does not need to be encoded in the bitstream. However, when the index of the prediction model used at the current point is 1, 2, or 3 of the prediction mode selected by RDO, the index of the prediction model used at the current point needs to be encoded in the bitstream, that is, the index of the selected prediction mode needs to be encoded into the attribute bitstream.
[0126] Exemplarily, when the encoder uses the RDO technology to select the best attribute prediction value, it can first calculate the maximum difference maxDiff of the attributes of at least one neighboring point of the current point, compare maxDiff with the set threshold, and if it is less than the set threshold, use the prediction mode of weighted average of the attribute values of the neighboring points; otherwise, use the RDO technology to select the optimal prediction mode for this point. Specifically, the encoder calculates the maximum difference maxDiff of the attributes of at least one neighboring point of the current point. For example, it first calculates the maximum difference of at least one neighboring point of the current point on the R component, that is, max(R1, R2, R3)-min(R1, R2, R3); similarly, the encoder calculates the maximum difference of at least one neighboring point of the current point on the G and B components, that is, max(G1, G2, G3)-min(G1, G2, G3) and max(B1, B2, B3)-min(B1, B2, B3), and then selects the maximum difference value among the R, G, and B components as maxDiff, that is, maxDiff = max(max(R1, R2, R3) - min(R1, R2, R3), max(G1, G2, G3) - min(G1, G2, G3), max(B1, B2, B3) - min(B1, B2, B3)); the encoder compares the obtained maxDiff with the set threshold. If it is less than the set threshold, the prediction mode of the current point is set to 0, that is, predMode = 0; if it is greater than or equal to the set threshold, the encoder can use RDO technology to determine the prediction mode used for the current point.
[0127] For RDO technology, the encoder can calculate the corresponding rate-distortion cost for each prediction mode of the current point, and then select the prediction mode with the smallest rate-distortion cost, that is, the optimal prediction mode, as the attribute prediction mode of the current point. For example, the encoder can calculate the rate-distortion cost of the prediction mode with index 1, 2 or 3 by the following formula: J indx_i =D indx_i +λ×R indx_i Among them, J indx_iRepresents the rate-distortion cost when the current point adopts the prediction mode with index i, D is the sum of the three components of attrResidualQuant, that is, D = attrResidualQuant[0] + attrResidualQuant[1] + attrResidualQuant[2]. λ is determined according to the quantization parameter of the current point, R indx_i Indicates the number of bits required in the bitstream for the quantized residual value obtained when the prediction mode with index i is used at the current point.
[0128] For example, after the encoder determines the optimal attribute prediction value attrPred for the current point, it can subtract the original attribute value attrValue of the current point from the attribute prediction value attrPred of the current point and quantize the result to obtain the quantized residual value attrResidualQuant of the current point. For example, attrResidualQuant = (attrValue - attrPred) / Qs; where attrResidualQuant represents the quantized residual value of the current point, attrValue represents the original attribute value of the current point, attrPred represents the attribute prediction value of the current point, and Qstep represents the quantization step size. Qstep is calculated by the quantization parameter (Qp).
[0129] Exemplarily, the current point can be used as a neighbor point of a subsequent point, that is, the attribute reconstruction value of the current point can be used to predict the attribute information of the subsequent point. For example, the encoder can determine the attribute reconstruction value of the current point based on the quantization residual value and the attribute prediction value of the current point using the following formula: Recon = attrResidualQuant × Qstep + attrPred; where Recon represents the attribute reconstruction value of the current point determined based on the quantization residual value of the current point, attrResidualQuant represents the quantization residual value of the current point, Qstep represents the quantization step size, and attrPred represents the attribute prediction value of the current point. Wherein, Qstep is calculated by the quantization parameter (Qp).
[0130] It should be noted that the terms involved in this application may also be referred to by other names. For example, the attribute prediction value (predictedvalue) of the current point may also be referred to as the predicted value of the attribute information or the color prediction value (predictedColor). The attribute original value of the current point may also be referred to as the original value of the attribute information of the current point or the color original value. The residual value of the current point may also be referred to as the difference between the attribute original value of the current point and the attribute prediction value of the current point, or may also be referred to as the color residual value (residualColor) of the current point. The attribute reconstructed value (reconstructedvalue) of the current point may also be referred to as the reconstructed value of the attribute information of the current point, or may be referred to as the color reconstructed value (reconstructedColor).
[0131] FIG12 is a schematic block diagram of a decoding framework 200 provided in an embodiment of the present application.
[0132] During the decoding process, after the decoding framework 200 obtains the point cloud code stream from the encoding device, it can obtain the geometric information and attribute information of the points in the point cloud by parsing the code stream. The decoding of the point cloud includes position decoding and attribute decoding. The position decoding process includes: performing arithmetic decoding on the geometric code stream; then constructing an octree structure in the same manner as geometric encoding, and obtaining the reconstruction information of the geometric information based on the constructed octree structure; then, performing coordinate transformation on the reconstruction information of the geometric information of the point to obtain the transformed geometric information. The geometric information of the point can also be called the position information of the point. The attribute decoding process includes: obtaining the attribute residual value of the point in the point cloud by parsing the attribute code stream; dequantizing the attribute residual value of the point to obtain the dequantized attribute residual value of the point; based on the reconstruction information of the geometric information of the point obtained during the position decoding process, selecting one of the three prediction modes to perform point cloud prediction to obtain the attribute prediction value of the point, and determining the attribute reconstruction value of the point based on the dequantized attribute residual value of the point and the attribute prediction value of the point; and then performing an inverse color space transformation to obtain the decoded attribute information.
[0133] As shown in Figure 12, position decoding can be implemented by the following units: a first arithmetic decoding unit 201, an octree synthesis unit 202, a geometry reconstruction unit 203, and an inverse transform coordinates unit 204. Attribute encoding can be implemented by the following units: a second arithmetic decoding unit 210, an inverse quantization unit 211, a RAHT unit 212, a predicting transform unit 213, a lifting transform unit 214, and an inverse transform colors unit 215. It should be noted that decompression is the inverse process of compression. Similarly, the functions of each unit in the decoding framework 200 can refer to the functions of the corresponding units in the encoding framework 100. For example, the predicting transform unit 213 can divide the point cloud into multiple levels of detail (LODs) based on the Euclidean distance between points in the point cloud; then, the attribute information of the points in the LODs is decoded in sequence. For example, the second arithmetic decoding unit 210 may be used to parse the number of zeros (zero_cnt) in the zero run length coding technique to decode the residual based on the number of zeros.
[0134] It is worth noting that when the encoder predicts the attribute information of the current point, it first generates one or more refinement layers based on the original order of the point cloud, and then searches for the nearest neighbors of the current point from the previously encoded refinement layers according to the generation order of the refinement layers, and predicts the attribute information of the current point based on the nearest neighbors found to obtain the attribute prediction value of the current point. However, in the above process, the attribute prediction value of the point in the current refinement layer will depend on the attribute reconstruction value of the point in the encoded refinement layer, and this dependency relationship will inevitably propagate the distortion of the previously encoded point to the current point, which will eventually lead to error accumulation and reduce the encoding performance. Moreover, since the process of the decoder predicting the attribute information of the current point is similar to the process of the encoder predicting the attribute information of the current point, it will also affect the decoding performance. In view of this, the present application provides a point cloud decoding method that can improve decoding performance and enhance the quality of the reconstructed point cloud.
[0135] FIG13 is a schematic flow chart of a point cloud decoding method 310 provided in an embodiment of the present application. It should be understood that the point cloud decoding method 310 can be performed by a decoder or a decoding framework. For example, it can be applied to the decoding framework 200 shown in FIG12 . For ease of description, the following description uses a decoder as an example.
[0136] As shown in FIG13 , the point cloud decoding method 310 may include:
[0137] S311, the decoder decodes the bitstream of the point cloud and determines the residual value of the attribute information of the target point in the point cloud;
[0138] S312, the decoder determines an initial reconstructed value of the attribute information of the target point based on the residual value of the attribute information of the target point and the predicted value of the attribute information of the target point;
[0139] S313, the decoder determines the filter coefficient of the target point;
[0140] S314: The decoder filters the initial reconstructed value of the attribute information of the target point based on the filter coefficient of the target point to determine the reconstructed value of the attribute information of the target point.
[0141] In other words, the decoder filters the initial reconstructed value of the attribute information of the target point based on the filter coefficient of the target point to obtain a filtered reconstructed value, and uses the filtered reconstructed value to cover or replace the initial reconstructed value of the attribute information of the target point.
[0142] In addition, the decoder can use the updated reconstructed values to predict the attribute information of subsequent points.
[0143] Exemplarily, the filter coefficient of the target point may be information carried in the code stream, or may be a parameter determined by a decoder, which is not limited in this application.
[0144] In this embodiment, the decoder decodes the bitstream of the point cloud and determines the filter coefficient of the target point in the point cloud. The decoder then filters the initial reconstructed value of the target point's attribute information based on the filter coefficient to determine the reconstructed value of the target point's attribute information. On the one hand, filtering the initial reconstructed value of the target point's attribute information using the filter coefficient can improve the accuracy of the reconstructed value of the target point's attribute information, thereby improving decoding performance and enhancing the quality of the reconstructed point cloud. On the other hand, filtering the initial reconstructed value of the target point's attribute information using the filter coefficient facilitates predicting the attribute information of subsequent points in the point cloud using the reconstructed value of the current point, thereby reducing error accumulation and enhancing the quality of the reconstructed point cloud.
[0145] The solution provided in this application was tested on the G-PCC reference software TMC13V14.0 and the test results shown in Table 2 were obtained.
[0146] Table 2 shows the bit distortion (BD-rate) for lossless geometry and near-lossless attribute coding. BD-rate reflects the difference in PSNR curves between the two scenarios (with and without filtering). A decrease in BD-rate indicates improved performance with a reduced bitrate while maintaining the same PSNR; conversely, performance decreases. In other words, the lower the BD-rate, the better the compression.
[0147] In addition, Cat1-A represents a point cloud that includes only the reflectance information of the points, and Cat1-A average represents the average BD-rate of each component of Cat1A under the geometric lossless and attribute near-lossless coding mode; Cat1-B represents a point cloud that includes only the color information of the points, and Cat1-B average represents the average BD-rate of each component of Cat1-B under the geometric lossless and attribute near-lossless coding mode; Cat3-fused represents a point cloud that includes the color information of the points and other attribute information. Cat3-fused average represents the average BD-rate of each component of Cat3-fused under the geometric lossless and attribute near-lossless coding mode; Overall average represents the average BD-rate of Cat1-A to Cat3-fused under the geometric lossless and attribute near-lossless coding mode. L, Cb, and Cr (also called Y, U, V) represent the performance of the three components of brightness and chrominance of the point cloud color.
[0148] Table 2
[0149]
[0150] As shown in Table 2, the proposed solution significantly improves the performance of Cat1-A, Cat1-B, and Cat3-fused. Specifically, compared to the original solution before improvement, the proposed solution achieves gains of -0.0%, -4.4%, and -6.5% for the Y, Cb, and Cr components, respectively.
[0151] It is worth noting that the reconstructed value of the target point's attribute information in the embodiments of the present application may be the final reconstructed value of the target point. In other words, the decoder filters the initial reconstructed value of the target point's attribute information based on the target point's filter coefficient, and the resulting reconstructed value of the target point's attribute information is the final reconstructed value of the target point. The final reconstructed value of the target point can be understood as the value used to decode the target point's attribute information in the point cloud.
[0152] In some embodiments, S313 may include:
[0153] The decoder determines at least one refinement layer based on the target refinement layer where the target point is located; the refinement layer includes one or more points; determines the filter coefficient corresponding to the at least one refinement layer; and the decoder determines the filter coefficient of any point in the at least one refinement layer based on the filter coefficient corresponding to the at least one refinement layer.
[0154] For example, the structure of the code stream may be as follows:
[0155] Flagbits_0, coefbits_0[k], ..., Flagbits_m-1, coefbits_m-1[k], bits_0, ..., bits_n-2, bits_n-1.
[0156] Where n represents the total number of points in the point cloud, m represents the number of refinement layers in the point cloud that have been Wiener filtered, and k represents the length of the filter coefficients corresponding to each refinement layer (also called the order of the Wiener filter or the length of the Wiener filter). k = 16. bits, flagbits, and coefbits represent the residual value of the attribute information of the point in the point cloud, the filter flag corresponding to each refinement layer, and the filter coefficients corresponding to each refinement layer, respectively.
[0157] In some embodiments, the decoder first decodes the code stream to determine the reconstructed value of the geometric information of the point cloud; then, the decoder divides the point cloud into L refinement layers based on the reconstructed value of the geometric information of the point cloud, where the refinement layer includes one or more points, and L is an integer greater than 0; then, the decoder determines the target refinement layer based on the index of the target point.
[0158] Exemplarily, the decoder may divide the point cloud into L refinement layers based on different Euclidean distances, and then obtain L LOD layers based on the refinement layers.
[0159] For example, assuming (R l ) l=0...L-1 Represents refinement levels, and L is the number of LOD levels. The specific steps for constructing LOD are as follows:
[0160] (1) User-defined L Euclidean distances (d l ) l=0...L-1 , divided into L refinement layers (R l ) l=0...L-1 ;
[0161] (2) Mark all points as unvisited and set the set V of visited points to an empty set;
[0162] (3) Refinement layer R l The generation process is as follows:
[0163] Traverse all points. If the current point has been visited, ignore it. Otherwise, calculate the minimum distance D between the current point and the set V. If D is less than d l , then ignore the current point; otherwise, mark the current point as visited and add it to R l and V; repeat this process until all points in the point cloud are traversed.
[0164] (4) Take the refinement layers R0, R1, ..., R l The union of the details is used as the detail layer LOD l (Right now );
[0165] (5) Repeat this process until all points in the point cloud have been visited.
[0166] It should be understood that the LOD layer division method can also adopt other methods, and this application does not limit this. It should be noted that the point cloud can be directly divided into one or more LOD layers, or the point cloud can be first divided into multiple point cloud slices, and then each point cloud slice is divided into one or more LOD layers. For example, the point cloud can be divided into multiple point cloud slices, and the number of points in each point cloud slice can be between 550,000 and 1.1 million. Each point cloud slice can be regarded as a separate point cloud. Each point cloud slice can be divided into multiple LOD layers, and each LOD layer includes multiple points.
[0167] Exemplarily, assuming that the order of points in the point cloud is in the order of generating the refinement layers, the decoder can determine at least one refinement layer based on the index of the target point and the number of points in each refinement layer, and based on the target refinement layer where the target point is located.
[0168] In some embodiments, the decoder decodes the bitstream and determines a filter identifier corresponding to the at least one refinement layer; the filter identifier corresponding to the at least one refinement layer indicates a position of a filter coefficient corresponding to the at least one refinement layer in the bitstream; then, the decoder decodes the bitstream based on the filter identifier corresponding to the at least one refinement layer and determines the filter coefficient corresponding to the at least one refinement layer.
[0169] Exemplarily, the filter identifier corresponding to the at least one refinement layer indicates the position of the filter coefficient corresponding to the at least one refinement layer in the bitstream by indicating the identifier of the at least one refinement layer.
[0170] For example, assume that the structure of the codestream is as follows: Flagbits_0, coefbits_0[k], ..., Flagbits_m-1, coefbits_m-1[k], bits_0, ..., bits_n-2, bits_n-1. Here, n represents the total number of points in the point cloud, m represents the number of Wiener-filtered refinement layers in the point cloud, and k represents the length of the filter coefficients corresponding to each refinement layer (also known as the order of the Wiener filter or the length of the Wiener filter). k = 16. bits, flagbits, and coefbits are, respectively, the residual value of the attribute information of the point in the point cloud, the filter identifier corresponding to each refinement layer, and the filter coefficients corresponding to each refinement layer. In this case, the filter identifier corresponding to the at least one refinement layer indicates the identifier of the at least one refinement layer, which is equivalent to indicating that the filter coefficients corresponding to the at least one refinement layer are the filter coefficients located after the filter identifier corresponding to the at least one refinement layer in the codestream. For example, Flagbits_0 indicates the identifier of the at least one refinement layer, and coefbits_0[k] following Flagbits_0 may default to the filter coefficient corresponding to the refinement layer indicated by Flagbits_0.
[0171] Of course, in other alternative embodiments, the filter identifier corresponding to the at least one refinement layer indicates whether the filter coefficient corresponding to the at least one refinement layer is carried. For example, if the codestream carries the filter identifier corresponding to the at least one refinement layer, it indicates that the codestream carries the filter coefficient corresponding to the at least one refinement layer. If the codestream does not carry the filter identifier corresponding to the at least one refinement layer, it indicates that the codestream does not carry the filter coefficient corresponding to the at least one refinement layer. Furthermore, the filter identifier corresponding to the at least one refinement layer can indicate whether filtering is performed on the at least one refinement layer. For example, the decoder can determine the filter coefficient corresponding to the at least one refinement layer in a manner similar to that used by the encoder. When determining the filter coefficient corresponding to the at least one refinement layer, the filter identifier corresponding to the at least one refinement layer can indicate whether filtering is performed on the at least one refinement layer. This application does not specifically limit this.
[0172] In some embodiments, the decoder sets the filter coefficient of any point in the at least one refinement layer to be equal to the filter coefficient corresponding to the at least one refinement layer.
[0173] In other words, the filter coefficients of all points in the at least one refinement layer are the same filter coefficients.
[0174] Of course, in other alternative embodiments, the filter coefficients of each point in the at least one refinement layer may also be carried in the code stream, and this application does not make any specific limitation to this.
[0175] In some embodiments, the at least one refinement layer includes the first N refinement layers arranged in the generation order of the refinement layers, or the at least one refinement layer includes one or more refinement layers located after the first N refinement layers in the generation order of the refinement layers, where N is an integer greater than 0.
[0176] Because the first N refinement layers contain relatively few points, this embodiment merges and filters these layers and overwrites the initial reconstruction value with the filtered value to obtain an updated reconstruction value. This improves filtering accuracy and decoding efficiency. For the encoder, this reduces the computational complexity of the filter coefficients and improves encoding efficiency.
[0177] For example, the value of N may be 6 or other values, which is not specifically limited in this application.
[0178] In some embodiments, the at least one refinement layer includes a single refinement layer that precedes the last refinement layer and follows the first N refinement layers in the generation order of the refinement layers.
[0179] Since there are many points in the single refinement layer that is located before the last refinement layer and after the first N refinement layers in the generation order of the refinement layers, this embodiment performs independent filtering on the single refinement layer, which can improve filtering accuracy.
[0180] FIG14 is a schematic flowchart of a point cloud decoding method 320 provided in an embodiment of the present application.
[0181] As shown in FIG14 , the point cloud decoding method 320 may include:
[0182] S321, the decoder decodes the code stream of the point cloud, determines the residual value of the attribute information of the target point in the point cloud, and predicts the attribute information of the target point to obtain the predicted value of the attribute information of the target point.
[0183] Exemplarily, when predicting the attribute information of a target point, the decoder first generates one or more refinement layers based on the original order of the point cloud, then searches for the nearest neighbors of the target point from the previously encoded refinement layers according to the generation order of the refinement layers, and predicts the attribute information of the target point based on the nearest neighbors found to obtain the attribute prediction value of the target point. For example, when predicting the attribute information of a target point, the decoder may first create multiple candidate prediction values based on the search results of the target point's neighboring points, and then use rate distortion optimization (RDO) technology to select the attribute prediction value with the best prediction performance for the target point from the multiple candidate prediction values. The best attribute prediction value is then used as the attribute prediction value of the target point, and the attribute information is encoded by subtracting it from the original attribute value to obtain the attribute code stream of the point cloud.
[0184] For example, the decoder may first use multiple prediction modes (predMode) to create multiple candidate prediction values based on the search results of neighboring points of the target point.
[0185] Among them, the index values of the multiple prediction modes (predMode) can be 0 to 3. When the decoder encodes the attribute information of the target point, the decoder first finds the three neighboring points before the target point based on the neighbor point search results on the LOD where the target point is located, and then obtains multiple candidate prediction values based on the prediction mode with an index value of 0 to 3. Among them, the prediction mode with an index of 0 refers to determining the weighted average of the reconstructed attribute values of the three neighbor points based on the distance between the three neighbor points and the target point as the candidate prediction value of the target point; the prediction mode with an index of 1 refers to: using the attribute reconstruction value of the nearest neighbor point among the three neighbor points as the candidate prediction value of the target point; the prediction mode with an index of 2 refers to: using the attribute reconstruction value of the second nearest neighbor point as the candidate prediction value of the target point; the prediction mode with an index of 3 refers to: using the attribute reconstruction value of the neighbor points other than the nearest neighbor point and the second nearest neighbor point among the three neighbor points as the candidate prediction value of the target point; after obtaining multiple candidate prediction values of the target point based on the above various prediction modes, the rate distortion optimization (RDO) technology can be used to select the best attribute prediction value, and then the selected best attribute prediction value can be used as the attribute prediction value of the target point for subsequent encoding.
[0186] It is worth noting that the implementation method of the decoder predicting the target point can refer to the relevant content mentioned above. To avoid repetition, it will not be repeated here.
[0187] S322: The decoder determines an initial reconstructed value of the attribute information of the target point based on the residual value of the attribute information of the target point and the predicted value of the attribute information of the target point.
[0188] Exemplarily, for example, the decoder may determine the initial reconstructed value of the attribute information of the target point based on the residual value of the attribute information of the target point and the predicted value of the attribute information of the target point using the following formula: Recon = attrResidualQuant × Qstep + attrPred; wherein Recon represents the initial reconstructed value of the attribute information of the target point determined based on the residual value of the attribute information of the target point, attrResidualQuant represents the residual value of the attribute information of the target point, Qstep represents the quantization step size, and attrPred represents the predicted value of the attribute information of the target point. Qstep is calculated using the quantization parameter (Qp).
[0189] S323, when the index of the target point indicates that the target point is a point in R7, the decoder decodes the code stream, determines the filter coefficient corresponding to R7, and sets the filter coefficient of the target point to be equal to the filter coefficient corresponding to R7.
[0190] S324 , the decoder filters the initial reconstructed value of the attribute information of the target point based on the filter coefficient of the target point, and determines the reconstructed value of the attribute information of the target point for prediction of the attribute information of subsequent points.
[0191] For example, the decoder decodes the filter coefficient corresponding to R7, and uses the filter coefficient corresponding to R7 to filter the initial reconstruction value of the attribute information of the midpoint of R7, and obtains the filtered reconstruction value to cover the initial reconstruction value to obtain the updated reconstruction value. In this case, LOD is used. m The reconstructed value of the midpoint predicts the attribute information of the midpoint of the refined layer after R7 and obtains the predicted value of the attribute information of the midpoint of the refined layer after R7.
[0192] Furthermore, the decoder may repeat the above process until the filtering of the penultimate refinement layer is completed and the filtered value is used to overwrite the initial reconstructed value of the point in the penultimate refinement layer. At this point, the filtering of the points in the point cloud is completed.
[0193] In an embodiment of the present application, the decoder decodes the bitstream of the point cloud and determines the filter coefficient of the target point in the point cloud; and based on the filter coefficient of the target point, the initial reconstructed value of the attribute information of the target point is filtered to determine the reconstructed value of the attribute information of the target point. On the one hand, filtering the initial reconstructed value of the attribute information of the target point using the filter coefficient of the target point can improve the accuracy of the reconstructed value of the attribute information of the target point, thereby improving the decoding performance and achieving an enhancement in the quality of the reconstructed point cloud. On the other hand, filtering the initial reconstructed value of the attribute information of the target point using the filter coefficient of the target point is conducive to using the reconstruction value of the current point to predict the attribute information of subsequent points in the point cloud, thereby reducing error accumulation and achieving an enhancement in the quality of the reconstructed point cloud.
[0194] In addition, since there are fewer points in the first N refinement layers, this embodiment performs merge filtering on the first N refinement layers and overwrites the filtered values with the initial reconstruction values to obtain updated reconstruction values, which can improve filtering accuracy and decoding efficiency.
[0195] FIG15 is a schematic flowchart of a point cloud decoding method 330 provided in an embodiment of the present application.
[0196] As shown in FIG15 , the point cloud decoding method 330 may include:
[0197] S331: The decoder obtains the bit stream of the point cloud.
[0198] S332, the decoder decodes the code stream to obtain R m The residual value of the attribute information of the current point in .
[0199] S333, the decoder decodes the code stream to obtain R m The corresponding filter coefficients.
[0200] S334: The decoder predicts the attribute information of the current point and obtains its predicted value.
[0201] Exemplarily, when predicting the attribute information of the current point, the decoder first generates one or more refinement layers based on the original order of the point cloud, then searches for the nearest neighbors of the current point from the previously encoded refinement layers according to the generation order of the refinement layers, and predicts the attribute information of the current point based on the nearest neighbors found to obtain the attribute prediction value of the current point. For example, when predicting the attribute information of the current point, the decoder may first create multiple candidate prediction values based on the search results of the current point's neighboring points, and then use rate distortion optimization (RDO) technology to select the attribute prediction value with the best prediction performance for the current point from the multiple candidate prediction values. The best attribute prediction value is then used as the attribute prediction value of the current point, and the attribute information is encoded by subtracting it from the original attribute value to obtain the attribute code stream of the point cloud.
[0202] For example, the decoder may first use multiple prediction modes (predMode) to create multiple candidate prediction values based on the search results of neighboring points of the current point.
[0203] Among them, the index values of the multiple prediction modes (predMode) can be 0 to 3. When the decoder encodes the attribute information of the current point, the decoder first finds the three neighboring points before the current point based on the neighbor point search results on the LOD where the current point is located, and then obtains multiple candidate prediction values based on the prediction mode with an index value of 0 to 3. Among them, the prediction mode with an index of 0 refers to determining the weighted average of the reconstructed attribute values of the three neighbor points based on the distance between the three neighbor points and the current point as the candidate prediction value of the current point; the prediction mode with an index of 1 refers to: using the attribute reconstruction value of the nearest neighbor point among the three neighbor points as the candidate prediction value of the current point; the prediction mode with an index of 2 refers to: using the attribute reconstruction value of the second nearest neighbor point as the candidate prediction value of the current point; the prediction mode with an index of 3 refers to: using the attribute reconstruction value of the neighbor points other than the nearest neighbor point and the second nearest neighbor point among the three neighbor points as the candidate prediction value of the current point; after obtaining multiple candidate prediction values of the current point based on the above various prediction modes, the rate distortion optimization (RDO) technology can be used to select the best attribute prediction value, and then the selected best attribute prediction value can be used as the attribute prediction value of the current point for subsequent encoding.
[0204] It is worth noting that the implementation method of the decoder predicting the current point can refer to the relevant content mentioned above. To avoid repetition, it will not be repeated here.
[0205] S335: The decoder determines an initial reconstruction value of the attribute information of the current point.
[0206] Exemplarily, for example, the decoder may determine the initial reconstructed value of the attribute information of the current point based on the residual value of the attribute information of the current point and the predicted value of the attribute information of the current point using the following formula: Recon = attrResidualQuant × Qstep + attrPred; wherein Recon represents the initial reconstructed value of the attribute information of the current point determined based on the residual value of the attribute information of the current point, attrResidualQuant represents the residual value of the attribute information of the current point, Qstep represents the quantization step size, and attrPred represents the predicted value of the attribute information of the current point. Qstep is calculated using the quantization parameter (Qp).
[0207] S336, the decoder determines that the current point is the R m The last point in .
[0208] S337, the decoder is based on R m The corresponding filter coefficients for this R m The initial reconstruction value of the attribute information of the midpoint is filtered, and the Rm The initial reconstruction value of the attribute information of the current point in .
[0209] In an embodiment of the present application, the decoder decodes the bitstream of a point cloud and determines the filter coefficient for a target point in the point cloud. The decoder then filters the initial reconstructed value of the target point's attribute information based on the filter coefficient to determine the reconstructed value of the target point's attribute information. On the one hand, filtering the initial reconstructed value of the target point's attribute information using the filter coefficient improves the accuracy of the reconstructed value of the target point's attribute information, thereby improving decoding performance and enhancing the quality of the reconstructed point cloud. On the other hand, filtering the initial reconstructed value of the target point's attribute information using the filter coefficient facilitates using the reconstructed value of the current point to predict the attribute information of subsequent points in the point cloud, thereby reducing error accumulation and enhancing the quality of the reconstructed point cloud. Furthermore, since the first N refinement layers contain relatively few points, this embodiment merges and filters the first N refinement layers and overwrites the filtered value with the initial reconstructed value to obtain an updated reconstructed value, thereby improving filtering accuracy and decoding efficiency.
[0210] In some embodiments, S313 may include:
[0211] The decoder first determines the target detail layer where the target point is located; the target detail layer includes one or more refinement layers; then, the decoder determines the filter coefficient corresponding to the target detail layer; then, the decoder determines the filter coefficient of any point in the target detail layer based on the filter coefficient corresponding to the target detail layer.
[0212] For example, the structure of the code stream may be as follows:
[0213] Flagbits_LOD0, coefbits_LOD0[k], ..., Flagbits_LODm-1, coefbits_LODm-1[k], bits_0, ..., bits_n-2, bits_n-1.
[0214] Where n represents the total number of points in the point cloud, m represents the number of detail layers in the point cloud that have been Wiener filtered, and k represents the length of the filter coefficients corresponding to each detail layer (also called the order of the Wiener filter or the length of the Wiener filter). k = 16. bits, flagbits LOD, and coefbits LOD are the residual value of the attribute information of the point in the point cloud, the filter flag corresponding to each detail layer, and the filter coefficient corresponding to each detail layer, respectively.
[0215] In some embodiments, the decoder first decodes the code stream to determine the reconstructed value of the geometric information of the point cloud; then, the decoder divides the point cloud into L refinement layers based on the reconstructed value of the geometric information of the point cloud, and the refinement layer includes one or more points, and L is an integer greater than 0; then, the decoder determines L detail layers of the point cloud based on the L refinement layers; wherein the detail layer numbered i in the L detail layers includes: one or more refinement layers numbered 0 to i arranged in the order of generation of the refinement layers, and i is an integer greater than 0; then, the decoder determines the target detail layer based on the index of the target point.
[0216] Exemplarily, the decoder may divide the point cloud into L refinement layers based on different Euclidean distances, and then obtain L LOD layers based on the refinement layers.
[0217] For example, assuming (R l ) l=0...L-1 Represents refinement levels, and L is the number of LOD levels. The specific steps for constructing LOD are as follows:
[0218] (1) User-defined L Euclidean distances (d l ) l=0...L-1 , divided into L refinement layers (R l ) l=0...L-1 ;
[0219] (2) Mark all points as unvisited and set the set V of visited points to an empty set;
[0220] (3) Refinement layer R l The generation process is as follows:
[0221] Traverse all points. If the current point has been visited, ignore it. Otherwise, calculate the minimum distance D between the current point and the set V. If D is less than d l , then ignore the current point; otherwise, mark the current point as visited and add it to R l and V; repeat this process until all points in the point cloud are traversed.
[0222] (4) Take the refinement layers R0, R1, ..., R l The union of the details is used as the detail layer LOD l (Right now );
[0223] (5) Repeat this process until all points in the point cloud have been visited.
[0224] It should be understood that the LOD layer division method can also adopt other methods, and this application does not limit this. It should be noted that the point cloud can be directly divided into one or more LOD layers, or the point cloud can be first divided into multiple point cloud slices, and then each point cloud slice is divided into one or more LOD layers. For example, the point cloud can be divided into multiple point cloud slices, and the number of points in each point cloud slice can be between 550,000 and 1.1 million. Each point cloud slice can be regarded as a separate point cloud. Each point cloud slice can be divided into multiple LOD layers, and each LOD layer includes multiple points.
[0225] Exemplarily, assuming that the order of the points in the point cloud is in the order of generating the refinement layers, the decoder may determine the target detail layer based on the index of the target point and the number of points in each refinement layer.
[0226] In some embodiments, the decoder first decodes the bitstream to determine the filter identifier corresponding to the target detail layer; the filter identifier corresponding to the target detail layer indicates the position of the filter coefficient corresponding to the target detail layer in the bitstream; then, the decoder decodes the bitstream of the point cloud based on the filter identifier corresponding to the target detail layer to determine the filter coefficient corresponding to the target detail layer.
[0227] Exemplarily, the filter identifier corresponding to the target detail layer indicates the position of the filter coefficient corresponding to the target detail layer in the bitstream by indicating the identifier of the target detail layer.
[0228] For example, assume that the structure of the codestream is as follows: Flagbits_LOD0, coefbits_LOD0[k], ..., Flagbits_LODm-1, coefbits_LODm-1[k], bits_0, ..., bits_n-2, bits_n-1. Here, n represents the total number of points in the point cloud, m represents the number of detail layers in the point cloud that have been Wiener filtered, and k represents the length of the filter coefficients corresponding to each detail layer (also known as the order of the Wiener filter or the length of the Wiener filter). k = 16. bits, flagbits LOD, and coefbits LOD are, respectively, the residual value of the attribute information of the point in the point cloud, the filter identifier corresponding to each detail layer, and the filter coefficients corresponding to each detail layer. In this case, the filter identifier corresponding to the target detail layer indicates the identifier of the target detail layer, which is equivalent to indicating that the filter coefficients corresponding to the target detail layer are the filter coefficients located after the filter identifier corresponding to the target detail layer in the codestream. For example, Flagbits_LOD 0 indicates the identifier of the target detail layer, and coefbits_LOD 0[k] following Flagbits_LOD 0 may default to the filter coefficient corresponding to the target detail layer indicated by Flagbits_LOD 0.
[0229] Of course, in other alternative embodiments, the filter identifier corresponding to the target detail layer indicates whether the filter coefficient corresponding to the target detail layer is carried. For example, if the code stream carries the filter identifier corresponding to the target detail layer, it means that the code stream carries the filter coefficient corresponding to the target detail layer. If the code stream does not carry the filter identifier corresponding to the target detail layer, it means that the code stream does not carry the filter coefficient corresponding to the target detail layer. Even more, the filter identifier corresponding to the target detail layer can indicate whether the target detail layer is filtered; for example, the decoder can adopt a method similar to the encoder to determine the filter coefficient corresponding to the target detail layer. When determining the filter coefficient corresponding to the target detail layer, the filter identifier corresponding to the target detail layer can indicate whether the target detail layer is filtered. This application does not make specific limitations on this.
[0230] In some embodiments, the decoder sets the filter coefficient of any point in the target detail layer to be equal to the filter coefficient corresponding to the target detail layer.
[0231] In other words, the filter coefficients of all points in the target detail layer are the same filter coefficients.
[0232] Of course, in other alternative embodiments, the filter coefficients of each point in the target detail layer may also be carried in the code stream, and this application does not make any specific limitation to this.
[0233] In some embodiments, S314 may include:
[0234] The decoder multiplies the initial reconstructed value of the attribute information of the neighboring points of the target point or a vector formed by the reconstructed values by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0235] Exemplarily, the decoder multiplies the initial reconstructed value or a vector of reconstructed values of the attribute information of the k neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point. Here, k represents the length of the filter coefficient corresponding to each detail layer (also known as the order of the Wiener filter, or the length of the Wiener filter). k = 16. Of course, k can also be other values, and this application does not specifically limit this.
[0236] Of course, in other alternative embodiments, the decoder may multiply the vector formed by the initial reconstruction value of the attribute information of the target point and the initial reconstruction value of the attribute information of the target point's k-1 neighboring points by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point, or the decoder may multiply the vector formed by the initial reconstruction value of the attribute information of the target point and the reconstruction value of the attribute information of the target point's k-1 neighboring points by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point. This application does not make any specific limitations on this.
[0237] It is worth noting that the present application does not specifically limit the implementation method of the decoder to find the neighboring points of the target point. For example, the KNN algorithm or other methods can be used to find the neighboring points of the target point.
[0238] In some embodiments, if the refinement layer where the target point is located belongs to the first N refinement layers arranged in the order of generation of the refinement layers, the decoder selects the neighboring points of the target point in the first N refinement layers, and multiplies the vector formed by the initial reconstructed values of the attribute information of the neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0239] Exemplarily, if the refinement layer where the target point is located belongs to the first N refinement layers arranged in the order of generation of the refinement layers, the decoder selects k neighboring points of the target point in the first N refinement layers, and multiplies the vector formed by the initial reconstructed values of the attribute information of the k neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0240] Exemplarily, if the refinement layer where the target point is located belongs to the first N refinement layers arranged in the order of generation of the refinement layers, the decoder selects k-1 neighboring points of the target point in the first N refinement layers, and multiplies the vector formed by the initial reconstructed value of the attribute information of the target point and the initial reconstructed value of the attribute information of the k-1 neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0241] In some embodiments, if the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, the decoder selects k neighboring points of the target point in the filtered refinement layer, and multiplies the vector formed by the reconstructed values of the attribute information of the k neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0242] Exemplarily, if the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, the decoder selects k neighboring points of the target point in the filtered refinement layer, and multiplies the vector formed by the initial reconstructed values of the attribute information of the k neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0243] Exemplarily, if the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, the decoder selects k-1 neighboring points of the target point in the filtered refinement layer, and multiplies the initial reconstructed value of the attribute information of the target point, the initial reconstructed value of the attribute information of the target point, and the initial reconstructed value of the attribute information of the k-1 neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0244] In some embodiments, the method 310 may further include:
[0245] The decoder obtains a decoded point cloud based on the reconstructed value of the attribute information of the target point.
[0246] Exemplarily, the decoder obtains the decoded point cloud based on the reconstructed values of the attribute information of all points in the point cloud.
[0247] The decoding method according to the embodiment of the present application is described in detail above from the perspective of the decoder. The encoding method according to the embodiment of the present application will be described below from the perspective of the encoder in conjunction with Figures 16 to 18.
[0248] FIG16 is a schematic flow chart of a point cloud encoding method 410 provided in an embodiment of the present application. It should be understood that the point cloud encoding method 410 can be performed by an encoder or an encoding framework. For example, it can be applied to the encoding framework 100 shown in FIG1 . For ease of description, the following description uses an encoder as an example.
[0249] As shown in FIG16 , the point cloud encoding method 410 may include:
[0250] S411, the encoder determines a residual value of the attribute information of the target point based on the true value of the attribute information of the target point in the point cloud and the predicted value of the attribute information of the target point;
[0251] S412, the encoder determines a filter coefficient of the target point based on neighboring points of the target point;
[0252] S413: The encoder encodes the residual value of the attribute information of the target point and the filter coefficient of the target point to obtain a code stream.
[0253] In other words, the encoder filters the initial reconstructed value of the attribute information of the target point based on the filter coefficient of the target point to obtain a filtered reconstructed value, and uses the filtered reconstructed value to cover or replace the initial reconstructed value of the attribute information of the target point.
[0254] In addition, the encoder can use the updated reconstructed values to predict the attribute information of subsequent points.
[0255] In an embodiment of the present application, the encoder encodes the residual value of the attribute information of the target point and the filter coefficient of the target point, which is beneficial for the decoder to decode the code stream of the point cloud and determine the filter coefficient of the target point in the point cloud; and further beneficial for the decoder to filter the initial reconstructed value of the attribute information of the target point based on the filter coefficient of the target point and determine the reconstructed value of the attribute information of the target point. On the one hand, using the filter coefficient of the target point to filter the initial reconstructed value of the attribute information of the target point can improve the accuracy of the reconstructed value of the attribute information of the target point, thereby improving the decoding performance and achieving the enhancement of the quality of the reconstructed point cloud. On the other hand, using the filter coefficient of the target point to filter the initial reconstructed value of the attribute information of the target point is beneficial for using the reconstructed value of the current point to predict the attribute information of subsequent points in the point cloud, thereby reducing error accumulation and achieving the enhancement of the quality of the reconstructed point cloud.
[0256] Exemplarily, the filter coefficient of the target point may be a filter coefficient output by a Wiener encoder.
[0257] The Wiener filter, proposed by mathematician Norbert Wiener, is a linear filter that uses the least squares principle as its optimization criterion. Under certain constraints, the square of the difference between its output and a given function (often called the desired output) is minimized. Through mathematical calculations, this problem can be reduced to solving a Toblitz equation. The Wiener filter is also known as a least squares filter or least squares filter.
[0258] Assuming that the order of the filter (also called the length of the filter) is k, its output is:
[0259] y(n)=H(k)×X(n).
[0260] Wherein, y(n) represents the output signal after filtering, k represents the order of the filter, H(k) represents the coefficient of the filter, and X(n) represents the input signal of the filter, that is, the input signal mixed with noise.
[0261] Based on this, the error between the output signal and the expected signal can be calculated: e(n) = d(n) - y(n) = d(n) - H(k) × X(n), m = 0, 1, ... M; where e(n) represents the error between the expected signal and the output signal, d(n) represents the expected signal, and y(n) represents the output signal. Since the Wiener filter uses the minimum mean square error as the objective function, let the objective function be: Min E(e(n) 2 )=E[(d(n)-H(k)×X(n)) 2 ]; When the filter coefficient is optimal, the derivative of the objective function with respect to the coefficient should be 0, that is: d(E(e(n) 2 )) / dH=0; that is: 2E[(d(n)-H(k)×X(n))]×X(n)=0; that is: E[d(n)X(n)]-H(k)E[X(n)X(n)]=0; simplifying E[d(n)X(n)]-H(k)E[X(n)X(n)]=0 gives: R xd -H(k)×R xx = 0. Among them, R xd Represents the cross-correlation vector between the input signal and the expected signal, R xx Represents the autocorrelation matrix of the input signal and the input signal; finally, we get: H(k)=R xx -1 ×R xd In combination with the working principle of Wiener filtering, this application uses the initial reconstructed value of the attribute information of the point to be filtered as the input signal mixed with noise mentioned above, and uses the true value of the attribute information of the point to be filtered as the expected signal mentioned above.
[0262] In other words, the optimal filter coefficients can be calculated using the k nearest neighbor points of each point (including the point itself). Assuming that the order of the filter (also known as the length of the filter) is k, then for n points in the point cloud, a matrix P(n,k) can be constructed to represent the attribute reconstruction values of the k nearest neighbor points of each of the n points (i.e., the input signal), and a vector S(n) can be constructed to represent the true value of the attribute information of each of the n points (i.e., the expected signal). Therefore, the cross-correlation vector B(k) between the input signal and the expected signal is: B(k) = P(n,k) T ×S(n); the autocorrelation matrix A(k,k) between the input signal and the input signal is: A(k,k)=P(n,k) T ×P(n,k); that is, the optimal filter coefficient H(k) of the k-th order filter is: H(k)=A(k,k) -1× B(k). Similarly, applying H(k) to the attribute reconstruction values of the k nearest neighboring points of each of the n points (i.e., the matrix P(n,k)) can maximize the restoration of the attribute information of each of the n points, and obtain the final reconstruction value R(n) after nanofiltering the attribute information of each of the n points, i.e., R(n) = P(n,k) × H(k).
[0263] It is worth noting that the present application does not limit the specific value of k, for example, k=16 or other values.
[0264] In some embodiments, S412 may include:
[0265] The encoder first determines at least one refinement layer based on the target refinement layer where the target point is located; the refinement layer includes one or more points; then, the encoder determines a first matrix and a first vector, the first matrix being a matrix formed by initial reconstruction values or reconstruction values of attribute information of neighboring points of the at least one refinement layer, and the first vector being a vector formed by true values of attribute information of the at least one refinement layer; the encoder multiplies the first matrix and the first vector to obtain a mutual correlation matrix of the at least one refinement layer; multiplies the transposed matrix of the first matrix and the first matrix to obtain an autocorrelation matrix of the at least one refinement layer; based on the at least one refinement layer, The encoder determines a filter coefficient corresponding to the at least one refinement layer based on a mutual correlation matrix of the refinement layer and an autocorrelation matrix of the at least one refinement layer; then, the encoder determines a filter coefficient of any point in the at least one refinement layer based on the filter coefficient corresponding to the at least one refinement layer; wherein S413 may include: the encoder encodes a residual value of attribute information of the point in the at least one refinement layer, a filter identifier corresponding to the at least one refinement layer, and the filter coefficient corresponding to the at least one refinement layer to obtain the bitstream; the filter identifier corresponding to the at least one refinement layer indicates a position of the filter coefficient corresponding to the at least one refinement layer in the bitstream.
[0266] Exemplarily, the first matrix is a matrix formed by the initial reconstructed values or reconstructed values of the attribute information of the k neighboring points of each point in the at least one refinement layer, and the first vector is a vector formed by the true values of the attribute information of each point in the at least one refinement layer. k represents the length of the filter coefficient corresponding to each detail layer (also known as the order of the Wiener filter, or the length of the Wiener filter). k = 16. Of course, k can also be other values, and this application does not specifically limit this.
[0267] Exemplarily, the filter identifier corresponding to the at least one refinement layer indicates the position of the filter coefficient corresponding to the at least one refinement layer in the bitstream by indicating the identifier of the at least one refinement layer.
[0268] For example, assume that the structure of the codestream is as follows: Flagbits_0, coefbits_0[k], ..., Flagbits_m-1, coefbits_m-1[k], bits_0, ..., bits_n-2, bits_n-1. Here, n represents the total number of points in the point cloud, m represents the number of Wiener-filtered refinement layers in the point cloud, and k represents the length of the filter coefficients corresponding to each refinement layer (also known as the order of the Wiener filter or the length of the Wiener filter). k = 16. bits, flagbits, and coefbits are, respectively, the residual value of the attribute information of the point in the point cloud, the filter identifier corresponding to each refinement layer, and the filter coefficients corresponding to each refinement layer. In this case, the filter identifier corresponding to the at least one refinement layer indicates the identifier of the at least one refinement layer, which is equivalent to indicating that the filter coefficients corresponding to the at least one refinement layer are the filter coefficients located after the filter identifier corresponding to the at least one refinement layer in the codestream. For example, Flagbits_0 indicates the identifier of the at least one refinement layer, and coefbits_0[k] following Flagbits_0 may default to the filter coefficient corresponding to the refinement layer indicated by Flagbits_0.
[0269] Of course, in other alternative embodiments, the filter identifier corresponding to the at least one refinement layer indicates whether the filter coefficient corresponding to the at least one refinement layer is carried. For example, if the codestream carries the filter identifier corresponding to the at least one refinement layer, it indicates that the codestream carries the filter coefficient corresponding to the at least one refinement layer. If the codestream does not carry the filter identifier corresponding to the at least one refinement layer, it indicates that the codestream does not carry the filter coefficient corresponding to the at least one refinement layer. Furthermore, the filter identifier corresponding to the at least one refinement layer can indicate whether filtering is performed on the at least one refinement layer. For example, the decoder can determine the filter coefficient corresponding to the at least one refinement layer in a manner similar to that used by the encoder. When determining the filter coefficient corresponding to the at least one refinement layer, the filter identifier corresponding to the at least one refinement layer can indicate whether filtering is performed on the at least one refinement layer. This application does not specifically limit this.
[0270] In some embodiments, the encoder first determines the reconstructed value of the geometric information of the point cloud; then, the encoder divides the point cloud into L refinement layers based on the reconstructed value of the geometric information of the point cloud, where the refinement layer includes one or more points, and L is an integer greater than 0; then, the encoder determines the target refinement layer based on the index of the target point.
[0271] Exemplarily, the encoder may divide the point cloud into L refinement layers based on different Euclidean distances, and then obtain L LOD layers based on the refinement layers.
[0272] For example, assuming (R l) l=0...L-1 Represents refinement levels, and L is the number of LOD levels. The specific steps for constructing LOD are as follows:
[0273] (1) User-defined L Euclidean distances (d l ) l=0...L-1 , divided into L refinement layers (R l ) l=0...L-1 ;
[0274] (2) Mark all points as unvisited and set the set V of visited points to an empty set;
[0275] (3) Refinement layer R l The generation process is as follows:
[0276] Traverse all points. If the current point has been visited, ignore it. Otherwise, calculate the minimum distance D between the current point and the set V. If D is less than d l , then ignore the current point; otherwise, mark the current point as visited and add it to R l and V; repeat this process until all points in the point cloud are traversed.
[0277] (4) Take the refinement layers R0, R1, ..., R l The union of the details is used as the detail layer LOD l (Right now );
[0278] (5) Repeat this process until all points in the point cloud have been visited.
[0279] It should be understood that the LOD layer division method can also adopt other methods, and this application does not limit this. It should be noted that the point cloud can be directly divided into one or more LOD layers, or the point cloud can be first divided into multiple point cloud slices, and then each point cloud slice is divided into one or more LOD layers. For example, the point cloud can be divided into multiple point cloud slices, and the number of points in each point cloud slice can be between 550,000 and 1.1 million. Each point cloud slice can be regarded as a separate point cloud. Each point cloud slice can be divided into multiple LOD layers, and each LOD layer includes multiple points.
[0280] Exemplarily, assuming that the order of points in the point cloud is in the order of generating the refinement layers, the encoder may determine at least one refinement layer based on the index of the target point and the number of points in each refinement layer, and based on the target refinement layer where the target point is located.
[0281] In some embodiments, if the refinement layer where the target point is located belongs to the first N refinement layers arranged in the order of generation of the refinement layers, the encoder selects neighboring points of the at least one refinement layer midpoint in the first N refinement layers, and determines the matrix formed by the initial reconstructed values of the attribute information of the neighboring points of the at least one refinement layer midpoint as the first matrix.
[0282] Exemplarily, if the refinement layer where the target point is located belongs to the first N refinement layers arranged in the order of generation of the refinement layers, the encoder selects k neighboring points of the target point in the first N refinement layers, and determines the matrix formed by the initial reconstructed values of the attribute information of the k neighboring points of the target point as the first matrix.
[0283] Exemplarily, if the refinement layer where the target point is located belongs to the first N refinement layers arranged in the order of generation of the refinement layers, the encoder selects k-1 neighboring points of the target point in the first N refinement layers, and determines the matrix formed by the initial reconstructed value of the attribute information of the target point and the initial reconstructed value of the attribute information of the k-1 neighboring points of the target point as the first matrix.
[0284] In some embodiments, if the refinement layer where the target point is located belongs to a refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, the encoder selects neighboring points of the point in at least one refinement layer in the filtered refinement layers, and determines a matrix formed by reconstructed values of attribute information of the neighboring points of the point in at least one refinement layer as the first matrix.
[0285] Exemplarily, if the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, the encoder selects k neighboring points of the target point in the filtered refinement layer, and determines the matrix formed by the initial reconstructed values of the attribute information of the k neighboring points of the target point as the first matrix.
[0286] Exemplarily, if the refinement layer where the target point is located belongs to a refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, the encoder selects k-1 neighboring points of the target point in the filtered refinement layer, and determines the matrix formed by the initial reconstructed value of the attribute information of the target point, the initial reconstructed value of the attribute information of the target point, and the initial reconstructed value of the attribute information of the k-1 neighboring points of the target point as the first matrix.
[0287] In some embodiments, the encoder sets the filter coefficient of any point in the at least one refinement layer to be equal to the filter coefficient corresponding to the at least one refinement layer.
[0288] In other words, the filter coefficients of all points in the at least one refinement layer are the same filter coefficients.
[0289] Of course, in other alternative embodiments, the filter coefficients of each point in the at least one refinement layer may also be carried in the code stream, and this application does not make any specific limitation to this.
[0290] In some embodiments, the at least one refinement layer includes the first N refinement layers arranged in the generation order of the refinement layers, or the at least one refinement layer includes one or more refinement layers located after the first N refinement layers in the generation order of the refinement layers, where N is an integer greater than 0.
[0291] Taking the at least one refinement layer as the first N refinement layers as an example, first use the KNN algorithm to find the k nearest neighbor points of all points in the first N refinement layers. Then, the true values of the attribute information of all points in the first N refinement layers and the initial reconstruction values (or reconstruction values) of the attributes of the k nearest neighbor points of all points found are used as inputs of the Wiener filter. The filter coefficients corresponding to the first N refinement layers are derived and the initial reconstruction values of all points in the first N refinement layers are filtered. The filtered values are overwritten with the initial reconstruction values to obtain updated reconstruction values. The updated reconstruction values are used to predict points in subsequent refinement layers, and the filter coefficients corresponding to the first N refinement layers are written into the bitstream.
[0292] Because the first N refinement layers contain relatively few points, this embodiment merges and filters these layers and overwrites the initial reconstruction value with the filtered value to obtain an updated reconstruction value. This improves filtering accuracy and decoding efficiency. For the encoder, this reduces the computational complexity of the filter coefficients and improves encoding efficiency.
[0293] In some embodiments, the at least one refinement layer includes a single refinement layer that precedes the last refinement layer and follows the first N refinement layers in the generation order of the refinement layers.
[0294] Since there are many points in the single refinement layer that is located before the last refinement layer and after the first N refinement layers in the generation order of the refinement layers, this embodiment performs independent filtering on the single refinement layer, which can improve filtering accuracy.
[0295] FIG17 is a schematic flowchart of a point cloud encoding method 420 provided in an embodiment of the present application.
[0296] As shown in FIG. 17 , the point cloud encoding method 420 may include:
[0297] S421 , the encoder determines a residual value of the attribute information of the target point based on the true value of the attribute information of the target point in the point cloud and the predicted value of the attribute information of the target point.
[0298] Exemplarily, when predicting the attribute information of a target point, the encoder first generates one or more refinement layers based on the original order of the point cloud, then searches for the nearest neighbors of the target point from the previously encoded refinement layers according to the generation order of the refinement layers, and predicts the attribute information of the target point based on the nearest neighbors found to obtain the attribute prediction value of the target point. For example, when predicting the attribute information of a target point, the encoder may first create multiple candidate prediction values based on the search results of the target point's neighboring points, and then use rate distortion optimization (RDO) technology to select the attribute prediction value with the best prediction performance for the target point from the multiple candidate prediction values. The best attribute prediction value is then used as the attribute prediction value of the target point, and the attribute information is encoded by subtracting it from the original attribute value to obtain the attribute code stream of the point cloud.
[0299] For example, the encoder may first use multiple prediction modes (predMode) to create multiple candidate prediction values based on the search results of neighboring points of the target point.
[0300] Among them, the index values of the multiple prediction modes (predMode) can be 0 to 3. When the encoder encodes the attribute information of the target point, the encoder first finds the three neighbor points before the target point based on the neighbor point search results on the LOD where the target point is located, and then obtains multiple candidate prediction values based on the prediction mode with an index value of 0 to 3. Among them, the prediction mode with an index of 0 refers to determining the weighted average of the reconstructed attribute values of the three neighbor points based on the distance between the three neighbor points and the target point as the candidate prediction value of the target point; the prediction mode with an index of 1 refers to: using the attribute reconstruction value of the nearest neighbor point among the three neighbor points as the candidate prediction value of the target point; the prediction mode with an index of 2 refers to: using the attribute reconstruction value of the second nearest neighbor point as the candidate prediction value of the target point; the prediction mode with an index of 3 refers to: using the attribute reconstruction value of the neighbor points other than the nearest neighbor point and the second nearest neighbor point among the three neighbor points as the candidate prediction value of the target point; after obtaining multiple candidate prediction values of the target point based on the above various prediction modes, the rate distortion optimization (RDO) technology can be used to select the best attribute prediction value, and then the selected best attribute prediction value can be used as the attribute prediction value of the target point for subsequent encoding.
[0301] It is worth noting that the implementation method of the encoder predicting the target point can refer to the relevant content mentioned above. To avoid repetition, it will not be repeated here.
[0302] S422: The encoder quantizes and dequantizes the residual value of the attribute information of the target point, and then adds the residual value to the predicted value of the attribute information of the target point to obtain an initial reconstructed value of the attribute information of the target point.
[0303] Exemplarily, the encoder may subtract the true value attrValue of the attribute information of the target point from the predicted value attrPred of the attribute information of the target point and quantize the result to obtain the residual value attrResidualQuant of the attribute information of the target point. For example, attrResidualQuant = (attrValue - attrPred) / Qs; where attrResidualQuant represents the residual value of the attribute information of the target point, attrValue represents the true value of the attribute information of the target point, attrPred represents the predicted value of the attribute information of the target point, and Qstep represents the quantization step size. Wherein, Qstep is calculated by the quantization parameter (Qp).
[0304] S423, when the index of the target point indicates that the target point is a point in R7, the encoder determines the filter coefficient corresponding to R7 based on the neighboring points of the point in R7, and sets the filter coefficient of the target point to be equal to the filter coefficient corresponding to R7.
[0305] S424: The encoder encodes the residual value of the attribute information of the point in R7, the filter identifier corresponding to R7, and the filter coefficient corresponding to R7 to obtain a code stream of the point cloud.
[0306] For example, the encoder determines the filter coefficient corresponding to R7, and uses the filter coefficient corresponding to R7 to filter the initial reconstruction value of the attribute information of the midpoint of R7, and obtains the filtered reconstruction value to cover the initial reconstruction value to obtain the updated reconstruction value. In this case, LOD is used. m The reconstructed value of the midpoint predicts the attribute information of the midpoint of the refined layer after R7 and obtains the predicted value of the attribute information of the midpoint of the refined layer after R7.
[0307] Furthermore, the encoding can repeat the above process until the filtering of the penultimate refinement layer is completed and the filtered value is used to overwrite the initial reconstruction value of the point in the penultimate refinement layer. At this point, the filtering of the points in the point cloud is completed.
[0308] In an embodiment of the present application, the encoder encodes the residual value of the attribute information of the target point and the filter coefficient of the target point, which is beneficial for the decoder to decode the code stream of the point cloud and determine the filter coefficient of the target point in the point cloud; and further beneficial for the decoder to filter the initial reconstructed value of the attribute information of the target point based on the filter coefficient of the target point and determine the reconstructed value of the attribute information of the target point. On the one hand, using the filter coefficient of the target point to filter the initial reconstructed value of the attribute information of the target point can improve the accuracy of the reconstructed value of the attribute information of the target point, thereby improving the decoding performance and achieving the enhancement of the quality of the reconstructed point cloud. On the other hand, using the filter coefficient of the target point to filter the initial reconstructed value of the attribute information of the target point is beneficial for using the reconstructed value of the current point to predict the attribute information of subsequent points in the point cloud, thereby reducing error accumulation and achieving the enhancement of the quality of the reconstructed point cloud.
[0309] In addition, since there are fewer points in the first N refinement layers, this embodiment performs merge filtering on the first N refinement layers and overwrites the filtered values with the initial reconstruction values to obtain updated reconstruction values, which can improve filtering accuracy and decoding efficiency.
[0310] FIG18 is a schematic flowchart of a point cloud encoding method 430 provided in an embodiment of the present application.
[0311] As shown in FIG. 18 , the point cloud encoding method 430 may include:
[0312] S431: The encoder obtains the code stream of the point cloud.
[0313] S432, the encoder divides the point cloud into L refinement layers and performs R m The attribute information of the current point in is predicted and its predicted value is obtained.
[0314] Exemplarily, when predicting the attribute information of the current point, the encoder first generates one or more refinement layers based on the original order of the point cloud, then searches for the nearest neighbors of the current point from the previously encoded refinement layers according to the generation order of the refinement layers, and predicts the attribute information of the current point based on the nearest neighbors found to obtain the attribute prediction value of the current point. For example, when predicting the attribute information of the current point, the encoder may first create multiple candidate prediction values based on the search results of the neighboring points of the current point, and then use rate distortion optimization (RDO) technology to select the attribute prediction value with the best prediction performance for the current point from the multiple candidate prediction values. The best attribute prediction value is then used as the attribute prediction value of the current point, and the attribute information is encoded by subtracting it from the original attribute value to obtain the attribute code stream of the point cloud.
[0315] For example, the encoder may first use multiple prediction modes (predMode) to create multiple candidate prediction values based on the search results of neighboring points of the current point.
[0316] Among them, the index values of the multiple prediction modes (predMode) can be 0 to 3. When the encoder encodes the attribute information of the current point, the encoder first finds the three neighboring points before the current point based on the neighbor point search results on the LOD where the current point is located, and then obtains multiple candidate prediction values based on the prediction mode with an index value of 0 to 3. Among them, the prediction mode with an index of 0 refers to determining the weighted average of the reconstructed attribute values of the three neighbor points based on the distance between the three neighbor points and the current point as the candidate prediction value of the current point; the prediction mode with an index of 1 refers to: using the attribute reconstruction value of the nearest neighbor point among the three neighbor points as the candidate prediction value of the current point; the prediction mode with an index of 2 refers to: using the attribute reconstruction value of the second nearest neighbor point as the candidate prediction value of the current point; the prediction mode with an index of 3 refers to: using the attribute reconstruction value of the neighbor points other than the nearest neighbor point and the second nearest neighbor point among the three neighbor points as the candidate prediction value of the current point; after obtaining multiple candidate prediction values of the current point based on the above various prediction modes, the rate distortion optimization (RDO) technology can be used to select the best attribute prediction value, and then the selected best attribute prediction value can be used as the attribute prediction value of the current point for subsequent encoding.
[0317] It is worth noting that the implementation method of the encoder predicting the current point can refer to the relevant content mentioned above. To avoid repetition, it will not be repeated here.
[0318] S433, the encoder divides the point cloud into L refinement layers and performs R m The attribute information of the current point in the dataset is processed and its true value is obtained.
[0319] S434: The encoder determines a residual value of the attribute information of the current point.
[0320] S435: The encoder determines an initial reconstruction value of the attribute information of the current point.
[0321] Exemplarily, the encoder may subtract the true value attrValue of the attribute information of the current point from the predicted value attrPred of the attribute information of the current point and quantize the result to obtain the residual value attrResidualQuant of the attribute information of the current point. For example, attrResidualQuant = (attrValue - attrPred) / Qs; where attrResidualQuant represents the residual value of the attribute information of the current point, attrValue represents the true value of the attribute information of the current point, attrPred represents the predicted value of the attribute information of the current point, and Qstep represents the quantization step size. Wherein, Qstep is calculated by the quantization parameter (Qp).
[0322] S436, the encoder determines that the current point is the R m The last point in .
[0323] S437, the encoder determines R m The corresponding filter coefficients are based on R m The corresponding filter coefficients for this R m The initial reconstruction value of the attribute information of the midpoint is filtered, and the R m The initial reconstruction value of the attribute information of the current point in .
[0324] S438: The encoder determines a code stream of the point cloud.
[0325] In an embodiment of the present application, the encoder encodes the residual value of the attribute information of the target point and the filter coefficient of the target point, which is beneficial for the decoder to decode the code stream of the point cloud and determine the filter coefficient of the target point in the point cloud; and further beneficial for the decoder to filter the initial reconstructed value of the attribute information of the target point based on the filter coefficient of the target point and determine the reconstructed value of the attribute information of the target point. On the one hand, using the filter coefficient of the target point to filter the initial reconstructed value of the attribute information of the target point can improve the accuracy of the reconstructed value of the attribute information of the target point, thereby improving the decoding performance and achieving the enhancement of the quality of the reconstructed point cloud. On the other hand, using the filter coefficient of the target point to filter the initial reconstructed value of the attribute information of the target point is beneficial for using the reconstructed value of the current point to predict the attribute information of subsequent points in the point cloud, thereby reducing error accumulation and achieving the enhancement of the quality of the reconstructed point cloud.
[0326] In addition, since there are fewer points in the first N refinement layers, this embodiment performs merge filtering on the first N refinement layers and overwrites the filtered values with the initial reconstruction values to obtain updated reconstruction values, which can improve filtering accuracy and decoding efficiency.
[0327] In some embodiments, S412 may include:
[0328] The encoder first determines the target detail layer where the target point is located; the target detail layer includes one or more refinement layers; then, the encoder obtains a second matrix and a second vector, the second matrix being a matrix formed by initial reconstruction values or reconstruction values of attribute information of neighboring points of the target detail layer, and the second vector being a vector formed by true values of the attribute information of the point in the target detail layer; multiplying the second matrix and the second vector to obtain a cross-correlation matrix of the target detail layer; multiplying the transposed matrix of the second matrix and the second matrix to obtain an autocorrelation matrix of the target detail layer; determining a filter coefficient corresponding to the target detail layer based on the cross-correlation matrix and the autocorrelation matrix of the target detail layer; then, the encoder determines a filter coefficient for any point in the target detail layer based on the filter coefficient corresponding to the target detail layer; wherein, S413 may include: the encoder encoding the residual value of the attribute information of the point in the target detail layer, a filter identifier corresponding to the target detail layer, and a filter coefficient corresponding to the target detail layer to obtain the code stream; the filter identifier corresponding to the target detail layer indicates the position of the filter coefficient corresponding to the target detail layer in the code stream.
[0329] Exemplarily, the second matrix is a matrix formed by the initial reconstruction values or reconstruction values of the attribute information of the k neighboring points of each point in the target detail layer, and the second vector is a vector formed by the true values of the attribute information of each point in the target detail layer. Wherein, k represents the length of the filter coefficient corresponding to each detail layer (also known as the order of the Wiener filter, or the length of the Wiener filter). k = 16. Of course, k can also be other values, and this application does not specifically limit this.
[0330] Exemplarily, the filter identifier corresponding to the target detail layer indicates the position of the filter coefficient corresponding to the target detail layer in the bitstream by indicating the identifier of the target detail layer.
[0331] For example, assume that the structure of the codestream is as follows: Flagbits_LOD0, coefbits_LOD0[k], ..., Flagbits_LODm-1, coefbits_LODm-1[k], bits_0, ..., bits_n-2, bits_n-1. Here, n represents the total number of points in the point cloud, m represents the number of detail layers in the point cloud that have been Wiener filtered, and k represents the length of the filter coefficients corresponding to each detail layer (also known as the order of the Wiener filter or the length of the Wiener filter). k = 16. bits, flagbits LOD, and coefbits LOD are, respectively, the residual value of the attribute information of the point in the point cloud, the filter identifier corresponding to each detail layer, and the filter coefficients corresponding to each detail layer. In this case, the filter identifier corresponding to the target detail layer indicates the identifier of the target detail layer, which is equivalent to indicating that the filter coefficients corresponding to the target detail layer are the filter coefficients located after the filter identifier corresponding to the target detail layer in the codestream. For example, Flagbits_LOD 0 indicates the identifier of the target detail layer, and coefbits_LOD 0[k] following Flagbits_LOD 0 may default to the filter coefficient corresponding to the target detail layer indicated by Flagbits_LOD 0.
[0332] Of course, in other alternative embodiments, the filter identifier corresponding to the target detail layer indicates whether the filter coefficient corresponding to the target detail layer is carried. For example, if the code stream carries the filter identifier corresponding to the target detail layer, it means that the code stream carries the filter coefficient corresponding to the target detail layer. If the code stream does not carry the filter identifier corresponding to the target detail layer, it means that the code stream does not carry the filter coefficient corresponding to the target detail layer. Even more, the filter identifier corresponding to the target detail layer can indicate whether the target detail layer is filtered; for example, the decoder can adopt a method similar to the encoder to determine the filter coefficient corresponding to the target detail layer. When determining the filter coefficient corresponding to the target detail layer, the filter identifier corresponding to the target detail layer can indicate whether the target detail layer is filtered. This application does not make specific limitations on this.
[0333] In some embodiments, the encoder first determines the reconstructed value of the geometric information of the point cloud; then, the encoder divides the point cloud into L refinement layers based on the reconstructed value of the geometric information of the point cloud, where the refinement layer includes one or more points, and L is an integer greater than 0; based on the L refinement layers, L detail layers of the point cloud are obtained; wherein the detail layer numbered i in the L detail layers includes: one or more refinement layers numbered 0 to i arranged in the order of generation of the refinement layers, and i is an integer greater than 0; then, the encoder determines the target detail layer based on the index of the target point.
[0334] Exemplarily, the encoder may divide the point cloud into L refinement layers based on different Euclidean distances, and then obtain L LOD layers based on the refinement layers.
[0335] For example, assuming (R l ) l=0...L-1 Represents refinement levels, and L is the number of LOD levels. The specific steps for constructing LOD are as follows:
[0336] (1) User-defined L Euclidean distances (d l ) l=0...L-1 , divided into L refinement layers (R l ) l=0...L-1 ;
[0337] (2) Mark all points as unvisited and set the set V of visited points to an empty set;
[0338] (3) Refinement layer R l The generation process is as follows:
[0339] Traverse all points. If the current point has been visited, ignore it. Otherwise, calculate the minimum distance D between the current point and the set V. If D is less than d l , then ignore the current point; otherwise, mark the current point as visited and add it to R l and V; repeat this process until all points in the point cloud are traversed.
[0340] (4) Take the refinement layers R0, R1, ..., R l The union of the details is used as the detail layer LOD l (Right now );
[0341] (5) Repeat this process until all points in the point cloud have been visited.
[0342] It should be understood that the LOD layer division method can also adopt other methods, and this application does not limit this. It should be noted that the point cloud can be directly divided into one or more LOD layers, or the point cloud can be first divided into multiple point cloud slices, and then each point cloud slice is divided into one or more LOD layers. For example, the point cloud can be divided into multiple point cloud slices, and the number of points in each point cloud slice can be between 550,000 and 1.1 million. Each point cloud slice can be regarded as a separate point cloud. Each point cloud slice can be divided into multiple LOD layers, and each LOD layer includes multiple points.
[0343] Exemplarily, assuming that the order of the points in the point cloud is in the order of generating the refinement layers, the encoder may determine the target detail layer based on the index of the target point and the number of points in each refinement layer.
[0344] In some embodiments, if the refinement layer where the target point is located belongs to the first N refinement layers arranged in the order of generation of the refinement layers, the encoder selects the neighboring points of the target detail layer midpoint in the first N refinement layers, and determines the matrix formed by the initial reconstructed values of the attribute information of the neighboring points of the target detail layer midpoint as the second matrix.
[0345] Exemplarily, if the refinement layer where the target point is located belongs to the first N refinement layers arranged in the order of generation of the refinement layers, the encoder selects k neighboring points of the target point in the first N refinement layers, and determines the matrix formed by the initial reconstructed values of the attribute information of the k neighboring points of the target point as the second matrix.
[0346] Exemplarily, if the refinement layer where the target point is located belongs to the first N refinement layers arranged in the order of generation of the refinement layers, the encoder selects k-1 neighboring points of the target point in the first N refinement layers, and determines the matrix formed by the initial reconstructed value of the attribute information of the target point and the initial reconstructed value of the attribute information of the k-1 neighboring points of the target point as the second matrix.
[0347] In some embodiments, if the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, the encoder selects the neighboring points of the target detail layer midpoint in the filtered refinement layer, and determines the matrix formed by the reconstructed values of the attribute information of the neighboring points of the target detail layer midpoint as the second matrix.
[0348] Exemplarily, if the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, the encoder selects k neighboring points of the target point in the filtered refinement layer, and determines the matrix formed by the initial reconstructed values of the attribute information of the k neighboring points of the target point as the second matrix.
[0349] Exemplarily, if the refinement layer where the target point is located belongs to a refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, the encoder selects k-1 neighboring points of the target point in the filtered refinement layer, and determines the matrix formed by the initial reconstructed value of the attribute information of the target point, the initial reconstructed value of the attribute information of the target point, and the initial reconstructed value of the attribute information of the k-1 neighboring points of the target point as the second matrix.
[0350] In some embodiments, the encoder sets the filter coefficient of any point in the target detail layer to be equal to the filter coefficient corresponding to the target detail layer.
[0351] In other words, the filter coefficients of all points in the at least one refinement layer are the same filter coefficients.
[0352] Of course, in other alternative embodiments, the filter coefficients of each point in the at least one refinement layer may also be carried in the code stream, and this application does not make any specific limitation to this.
[0353] In some embodiments, the encoder determines the initial reconstruction value of the attribute information of the target point based on the residual value of the attribute information of the target point and the predicted value of the attribute information of the target point; and filters the initial reconstruction value of the attribute information of the target point based on the filter coefficient of the target point to determine the reconstruction value of the attribute information of the target point.
[0354] In some embodiments, the encoder multiplies the initial reconstructed value or the vector formed by the reconstructed values of the attribute information of the neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0355] In some embodiments, if the refinement layer where the target point is located belongs to the first N refinement layers arranged in the order of generation of the refinement layers, the encoder selects the neighboring points of the target point in the first N refinement layers, and multiplies the vector formed by the initial reconstructed values of the attribute information of the neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0356] In some embodiments, if the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, the encoder selects the neighboring points of the target point in the filtered refinement layer, and multiplies the vector formed by the reconstructed values of the attribute information of the neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0357] It is worth noting that the scheme of filtering the initial reconstruction value of the target point by the encoder can refer to the scheme of filtering the initial reconstruction value of the target point by the decoder, and to avoid repetition, it is not described here.
[0358] The preferred embodiments of the present application are described in detail above in conjunction with the accompanying drawings. However, the present application is not limited to the specific details in the embodiments mentioned above. Within the technical concept of the present application, the technical solution of the present application can be subjected to a variety of simple modifications, and these simple modifications all fall within the scope of protection of the present application. For example, the various specific technical features described in the specific embodiments mentioned above can be combined in any suitable manner without contradiction. In order to avoid unnecessary repetition, the present application will no longer describe the various possible combinations separately. For another example, the various different embodiments of the present application can also be arbitrarily combined, as long as they do not violate the ideas of the present application, they should also be regarded as the contents disclosed in the present application. It should also be understood that in the various method embodiments of the present application, the size of the sequence numbers of the processes mentioned above does not mean the order of execution. The order of execution of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of the present application.
[0359] The method embodiment of the present application is described in detail above. The following describes in detail an apparatus embodiment of the present application in conjunction with Figures 19 to 21.
[0360] FIG19 is a schematic block diagram of a decoder 500 according to an embodiment of the present application.
[0361] As shown in FIG19 , the decoder 500 may include:
[0362] A decoding unit 510 is used to decode the code stream of the point cloud and determine the residual value of the attribute information of the target point in the point cloud;
[0363] A reconstruction unit 520 is configured to determine an initial reconstructed value of the attribute information of the target point based on the residual value of the attribute information of the target point and the predicted value of the attribute information of the target point;
[0364] A determination unit 530 is used to determine a filter coefficient for the target point;
[0365] The filtering unit 540 is configured to filter the initial reconstructed value of the attribute information of the target point based on the filter coefficient of the target point to determine the reconstructed value of the attribute information of the target point.
[0366] In some embodiments, the determining unit 530 is specifically configured to:
[0367] Determine at least one refinement layer based on the target refinement layer where the target point is located; the refinement layer includes one or more points;
[0368] Determining a filter coefficient corresponding to the at least one refinement layer;
[0369] Based on the filter coefficient corresponding to the at least one refinement layer, a filter coefficient of any point in the at least one refinement layer is determined.
[0370] In some embodiments, the determining unit 530 is specifically configured to:
[0371] Decoding the code stream to determine the reconstructed value of the geometric information of the point cloud;
[0372] Based on the reconstructed value of the geometric information of the point cloud, the point cloud is divided into L refinement layers, each refinement layer includes one or more points, and L is an integer greater than 0;
[0373] Based on the index of the target point, the target refinement layer is determined.
[0374] In some embodiments, the determining unit 530 is specifically configured to:
[0375] Decoding the bitstream and determining a filter identifier corresponding to the at least one refinement layer; the filter identifier corresponding to the at least one refinement layer indicates a position of a filter coefficient corresponding to the at least one refinement layer in the bitstream;
[0376] The code stream is decoded based on the filter identifier corresponding to the at least one refinement layer, and a filter coefficient corresponding to the at least one refinement layer is determined.
[0377] In some embodiments, the determining unit 530 is specifically configured to:
[0378] The filter coefficient of any point in the at least one refinement layer is set to be equal to the filter coefficient corresponding to the at least one refinement layer.
[0379] In some embodiments, the at least one refinement layer includes the first N refinement layers arranged in the generation order of the refinement layers, or the at least one refinement layer includes one or more refinement layers located after the first N refinement layers in the generation order of the refinement layers, where N is an integer greater than 0.
[0380] In some embodiments, the at least one refinement layer includes a single refinement layer that precedes the last refinement layer and follows the first N refinement layers in the generation order of the refinement layers.
[0381] In some embodiments, the determining unit 530 is specifically configured to:
[0382] Determine the target detail layer where the target point is located; the target detail layer includes one or more refinement layers;
[0383] Determine the filter coefficient corresponding to the target detail layer;
[0384] Based on the filter coefficient corresponding to the target detail layer, the filter coefficient of any point in the target detail layer is determined.
[0385] In some embodiments, the determining unit 530 is specifically configured to:
[0386] Decoding the code stream to determine the reconstructed value of the geometric information of the point cloud;
[0387] Based on the reconstructed value of the geometric information of the point cloud, the point cloud is divided into L refinement layers, each refinement layer includes one or more points, and L is an integer greater than 0;
[0388] Based on the L refinement layers, determining L detail layers of the point cloud;
[0389] The detail layer numbered i in the L detail layers includes: one or more detail layers numbered 0 to i arranged in the order of generation of the detail layers, where i is an integer greater than 0;
[0390] Based on the index of the target point, the target detail layer is determined.
[0391] In some embodiments, the determining unit 530 is specifically configured to:
[0392] Decoding the bitstream to determine a filter identifier corresponding to the target detail layer; the filter identifier corresponding to the target detail layer indicates a position of a filter coefficient corresponding to the target detail layer in the bitstream;
[0393] The code stream of the point cloud is decoded based on the filter identifier corresponding to the target detail layer, and the filter coefficient corresponding to the target detail layer is determined.
[0394] In some embodiments, the determining unit 530 is specifically configured to:
[0395] The filter coefficient of any point in the target detail layer is set to be equal to the filter coefficient corresponding to the target detail layer.
[0396] In some embodiments, the filtering unit 540 is specifically configured to:
[0397] The initial reconstructed value or a vector formed by the reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0398] In some embodiments, the filtering unit 540 is specifically configured to:
[0399] If the refinement layer where the target point is located belongs to the first N refinement layers arranged in the order of refinement layer generation, then the neighboring points of the target point are selected in the first N refinement layers, and the vector formed by the initial reconstructed values of the attribute information of the target point's neighboring points is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0400] In some embodiments, the filtering unit 540 is specifically configured to:
[0401] If the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the order of refinement layer generation, then the neighboring points of the target point are selected in the filtered refinement layer, and the vector formed by the reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0402] In some embodiments, the reconstruction unit 520 is further configured to:
[0403] Based on the reconstructed value of the attribute information of the target point, a decoded point cloud is obtained.
[0404] FIG20 is a schematic block diagram of an encoder 600 according to an embodiment of the present application.
[0405] As shown in FIG20 , the encoder 600 may include:
[0406] A residual unit 610 is configured to determine a residual value of the attribute information of the target point based on the true value of the attribute information of the target point in the point cloud and the predicted value of the attribute information of the target point;
[0407] A determination unit 620 is configured to determine a filter coefficient of the target point based on neighboring points of the target point;
[0408] The encoding unit 630 is configured to encode the residual value of the attribute information of the target point and the filter coefficient of the target point to obtain a code stream.
[0409] In some embodiments, the determining unit 620 is specifically configured to:
[0410] Determine at least one refinement layer based on the target refinement layer where the target point is located; the refinement layer includes one or more points;
[0411] Determine a first matrix and a first vector, wherein the first matrix is a matrix formed by initial reconstructed values or reconstructed values of attribute information of neighboring points of the at least one refinement layer, and the first vector is a vector formed by true values of the attribute information of the at least one refinement layer;
[0412] multiplying the first matrix and the first vector to obtain a cross-correlation matrix of the at least one refinement layer;
[0413] multiplying the first matrix by a transposed matrix of the first matrix to obtain an autocorrelation matrix of the at least one refinement layer;
[0414] Determining a filter coefficient corresponding to the at least one refinement layer based on a mutual correlation matrix of the at least one refinement layer and an autocorrelation matrix of the at least one refinement layer;
[0415] determining a filter coefficient for any point in the at least one refinement layer based on the filter coefficient corresponding to the at least one refinement layer;
[0416] The encoding unit 630 is specifically configured to:
[0417] The residual value of the attribute information of the point in the at least one refinement layer, the filter identifier corresponding to the at least one refinement layer, and the filter coefficient corresponding to the at least one refinement layer are encoded to obtain the code stream; the filter identifier corresponding to the at least one refinement layer indicates the position of the filter coefficient corresponding to the at least one refinement layer in the code stream.
[0418] In some embodiments, the determining unit 620 is specifically configured to:
[0419] Determine the reconstruction value of the geometric information of the point cloud;
[0420] Based on the reconstructed value of the geometric information of the point cloud, the point cloud is divided into L refinement layers, each refinement layer includes one or more points, and L is an integer greater than 0;
[0421] Based on the index of the target point, the target refinement layer is determined.
[0422] In some embodiments, the determining unit 620 is specifically configured to:
[0423] If the refinement layer where the target point is located belongs to the first N refinement layers arranged in the generation order of the refinement layers, then neighboring points of the at least one refinement layer midpoint are selected in the first N refinement layers, and a matrix formed by initial reconstructed values of attribute information of the neighboring points of the at least one refinement layer midpoint is determined as the first matrix.
[0424] In some embodiments, the determining unit 620 is specifically configured to:
[0425] If the refinement layer where the target point is located belongs to a refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, then neighboring points of the point in the at least one refinement layer are selected in the filtered refinement layers, and a matrix formed by reconstructed values of attribute information of the neighboring points of the at least one refinement layer point is determined as the first matrix.
[0426] In some embodiments, the determining unit 620 is specifically configured to:
[0427] The filter coefficient of any point in the at least one refinement layer is set to be equal to the filter coefficient corresponding to the at least one refinement layer.
[0428] In some embodiments, the at least one refinement layer includes the first N refinement layers arranged in the generation order of the refinement layers, or the at least one refinement layer includes one or more refinement layers located after the first N refinement layers in the generation order of the refinement layers, where N is an integer greater than 0.
[0429] In some embodiments, the at least one refinement layer includes a single refinement layer that precedes the last refinement layer and follows the first N refinement layers in the generation order of the refinement layers.
[0430] In some embodiments, the determining unit 620 is specifically configured to:
[0431] Determine the target detail layer where the target point is located; the target detail layer includes one or more refinement layers;
[0432] Obtain a second matrix and a second vector, wherein the second matrix is a matrix formed by initial reconstructed values or reconstructed values of attribute information of neighboring points of the target detail layer, and the second vector is a vector formed by true values of the attribute information of the target detail layer;
[0433] Multiplying the second matrix and the second vector to obtain a cross-correlation matrix of the target detail layer;
[0434] Multiplying the transposed matrix of the second matrix by the second matrix to obtain an autocorrelation matrix of the target detail layer;
[0435] Determining a filter coefficient corresponding to the target detail layer based on a mutual correlation matrix of the target detail layer and an autocorrelation matrix of the target detail layer;
[0436] Determining a filter coefficient for any point in the target detail layer based on the filter coefficient corresponding to the target detail layer;
[0437] The encoding unit 630 is specifically configured to:
[0438] The residual value of the attribute information of the midpoint of the target detail layer, the filter identifier corresponding to the target detail layer, and the filter coefficient corresponding to the target detail layer are encoded to obtain the code stream; the filter identifier corresponding to the target detail layer indicates the position of the filter coefficient corresponding to the target detail layer in the code stream.
[0439] In some embodiments, the determining unit 620 is specifically configured to:
[0440] Determine the reconstruction value of the geometric information of the point cloud;
[0441] Based on the reconstructed value of the geometric information of the point cloud, the point cloud is divided into L refinement layers, each refinement layer includes one or more points, and L is an integer greater than 0;
[0442] Based on the L refinement layers, L detail layers of the point cloud are obtained;
[0443] The detail layer numbered i in the L detail layers includes: one or more detail layers numbered 0 to i arranged in the order of generation of the detail layers, where i is an integer greater than 0;
[0444] Based on the index of the target point, the target detail layer is determined.
[0445] In some embodiments, the determining unit 620 is specifically configured to:
[0446] If the refinement layer where the target point is located belongs to the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the target detail layer midpoint are selected in the first N refinement layers, and a matrix formed by the initial reconstructed values of the attribute information of the neighboring points of the target detail layer midpoint is determined as the second matrix.
[0447] In some embodiments, the determining unit 620 is specifically configured to:
[0448] If the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the target detail layer midpoint are selected in the filtered refinement layers, and a matrix formed by reconstructed values of the attribute information of the neighboring points of the target detail layer midpoint is determined as the second matrix.
[0449] In some embodiments, the determining unit 620 is specifically configured to:
[0450] The filter coefficient of any point in the target detail layer is set to be equal to the filter coefficient corresponding to the target detail layer.
[0451] In some embodiments, the determining unit 620 is further configured to:
[0452] Determining an initial reconstructed value of the attribute information of the target point based on the residual value of the attribute information of the target point and the predicted value of the attribute information of the target point;
[0453] The initial reconstructed value of the attribute information of the target point is filtered based on the filter coefficient of the target point to determine the reconstructed value of the attribute information of the target point.
[0454] In some embodiments, the determining unit 620 is specifically configured to:
[0455] The initial reconstructed value or a vector formed by the reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0456] In some embodiments, the determining unit 620 is specifically configured to:
[0457] If the refinement layer where the target point is located belongs to the first N refinement layers arranged in the order of refinement layer generation, then the neighboring points of the target point are selected in the first N refinement layers, and the vector formed by the initial reconstructed values of the attribute information of the target point's neighboring points is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0458] In some embodiments, the determining unit 620 is specifically configured to:
[0459] If the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the order of refinement layer generation, then the neighboring points of the target point are selected in the filtered refinement layer, and the vector formed by the reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
[0460] It should be understood that the device embodiment and the method embodiment can correspond to each other, and similar descriptions can refer to the method embodiment. To avoid repetition, they will not be described here. Specifically, the decoder 500 shown in Figure 19 can correspond to the corresponding subject in the method 310 for executing the embodiment of the present application, and the aforementioned and other operations and / or functions of the various units in the decoder 500 are respectively for implementing the corresponding processes in various methods such as method 310. The encoder 600 shown in Figure 20 can correspond to the corresponding subject in the method 410 for executing the embodiment of the present application, that is, the aforementioned and other operations and / or functions of the various units in the encoder 600 are respectively for implementing the corresponding processes in various methods such as method 410.
[0461] It should also be understood that the various units in the decoder 500 or encoder 600 involved in the embodiment of the present application can be separately or all merged into one or several other units to constitute, or some (some) units therein can also be split into multiple smaller units in function to constitute, which can achieve the same operation without affecting the realization of the technical effect of the embodiment of the present application. The units involved in the above are divided based on logical functions. In practical applications, the function of a unit can also be realized by multiple units, or the function of multiple units is realized by one unit. In other embodiments of the present application, the decoder 500 or encoder 600 can also include other units. In practical applications, these functions can also be implemented with the assistance of other units, and can be implemented by the collaboration of multiple units. According to another embodiment of the present application, the decoder 500 or encoder 600 involved in the embodiment of the present application can be constructed by running a computer program (including program code) that can execute each step involved in the corresponding method on a general-purpose computing device including processing elements and storage elements such as a central processing unit (CPU), a random access storage medium (RAM), a read-only storage medium (ROM), etc., to construct the decoder 500 or encoder 600 involved in the embodiment of the present application, and to implement the encoding method or decoding method of the embodiment of the present application. The computer program can be recorded on, for example, a computer-readable storage medium, loaded into an electronic device via the computer-readable storage medium, and run therein to implement the corresponding method of the embodiment of the present application.
[0462] In other words, the units mentioned above can be implemented in the form of hardware, can be implemented by instructions in the form of software, or can be implemented in the form of a combination of hardware and software. Specifically, the steps of the method embodiments in the embodiments of the present application can be completed by the hardware integrated logic circuit and / or software instructions in the processor, and the steps of the method disclosed in the embodiments of the present application can be directly embodied as being executed by a hardware decoding processor, or being executed by a combination of hardware and software in a decoding processor. Optionally, the software can be located in a mature storage medium in the art such as a random access memory, a flash memory, a read-only memory, a programmable read-only memory, an electrically erasable programmable memory, a register, etc. The storage medium is located in a memory, and the processor reads the information in the memory and completes the steps in the method embodiments mentioned above in combination with its hardware.
[0463] FIG21 is a schematic structural diagram of an electronic device 700 provided in an embodiment of the present application.
[0464] As shown in Figure 21, the electronic device 700 includes at least a processor 710 and a computer-readable storage medium 720. The processor 710 and the computer-readable storage medium 720 may be connected via a bus or other means. The computer-readable storage medium 720 is used to store a computer program 721, which includes computer instructions. The processor 710 is used to execute the computer instructions stored in the computer-readable storage medium 720. The processor 710 is the computing core and control core of the electronic device 700. It is suitable for implementing one or more computer instructions, and is specifically suitable for loading and executing one or more computer instructions to implement the corresponding method flow or corresponding function.
[0465] For example, the processor 710 may also be referred to as a central processing unit (CPU). The processor 710 may include, but is not limited to, 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, transistor logic devices, discrete hardware components, and the like.
[0466] Exemplarily, the computer-readable storage medium 720 may be a high-speed RAM memory, or a non-volatile memory (Non-Volatile Memory), such as at least one disk memory; optionally, it may also be at least one computer-readable storage medium located away from the aforementioned processor 710. Specifically, the computer-readable storage medium 720 includes, but is not limited to: volatile memory and / or non-volatile memory. Among them, the non-volatile memory may be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory may be a random access memory (RAM), which is used as an external cache. By way of example and not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link DRAM (SLDRAM), and direct RAM bus random access memory (DR RAM).
[0467] Exemplarily, the electronic device 700 may be an encoder or encoding framework involved in an embodiment of the present application; a first computer instruction is stored in the computer-readable storage medium 720; the processor 710 loads and executes the first computer instruction stored in the computer-readable storage medium 720 to implement the corresponding steps in the encoding method provided in an embodiment of the present application; in other words, the first computer instruction in the computer-readable storage medium 720 is loaded by the processor 710 and the corresponding steps are executed. To avoid repetition, they are not repeated here.
[0468] Exemplarily, the electronic device 700 may be a decoder or decoding framework involved in an embodiment of the present application; a second computer instruction is stored in the computer-readable storage medium 720; the processor 710 loads and executes the second computer instruction stored in the computer-readable storage medium 720 to implement the corresponding steps in the decoding method provided in an embodiment of the present application; in other words, the second computer instruction in the computer-readable storage medium 720 is loaded by the processor 710 and the corresponding steps are executed, which will not be repeated here to avoid repetition.
[0469] According to another aspect of the present application, the present application also provides a coding and decoding system, including the encoder and decoder mentioned above.
[0470] According to another aspect of the present application, the present application also provides a computer-readable storage medium (Memory), which is a memory device in the electronic device 700 for storing programs and data. For example, a computer-readable storage medium 720. It can be understood that the computer-readable storage medium 720 here can include both the built-in storage medium in the electronic device 700 and, of course, the extended storage medium supported by the electronic device 700. The computer-readable storage medium provides a storage space, which stores the operating system of the electronic device 700. In addition, one or more computer instructions suitable for being loaded and executed by the processor 710 are also stored in the storage space. These computer instructions can be one or more computer programs 721 (including program codes).
[0471] According to another aspect of the present application, a computer program product or computer program is provided. The computer program product or computer program includes computer instructions stored in a computer-readable storage medium. For example, computer program 721. In this case, data processing device 700 may be a computer, and processor 710 reads the computer instructions from computer-readable storage medium 720. Processor 710 executes the computer instructions, causing the computer to perform the encoding method or decoding method provided in the various optional embodiments mentioned above.
[0472] In other words, when implemented using software, it can be implemented in whole or in part in the form of a computer program product. The computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on a computer, the process of the embodiment of the present application is run in whole or in part or the functions of the embodiment of the present application are implemented. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable devices. The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another computer-readable storage medium. For example, the computer instructions can be transmitted from a website, computer, server, or data center to another website, computer, server, or data center via a wired (e.g., coaxial cable, optical fiber, digital subscriber line (DSL)) or wireless (e.g., infrared, wireless, microwave, etc.) mode.
[0473] Those skilled in the art will appreciate that the units and process steps of each example described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are performed in hardware or software depends on the specific application and design constraints of the technical solution. Professional and technical personnel can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.
[0474] Finally, it should be noted that the above content is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any changes or substitutions that can be easily conceived by a person skilled in the art within the technical scope disclosed in this application should be included in the scope of protection of this application. Therefore, the scope of protection of this application should be based on the scope of protection of the claims.
Claims
1. A point cloud decoding method, characterized in that: include: Decoding a bitstream of a point cloud to determine a residual value of attribute information of a target point in the point cloud; determining an initial reconstructed value of the attribute information of the target point based on the residual value of the attribute information of the target point and the predicted value of the attribute information of the target point; Determining a filter coefficient of the target point; An initial reconstructed value of the attribute information of the target point is filtered based on the filter coefficient of the target point to determine a reconstructed value of the attribute information of the target point.
2. The method according to claim 1, characterized in that Determining the filter coefficient of the target point includes: Determining at least one refinement layer based on the target refinement layer where the target point is located; the refinement layer includes one or more points; Determining a filter coefficient corresponding to the at least one refinement layer; Based on the filter coefficient corresponding to the at least one refinement layer, a filter coefficient of any point in the at least one refinement layer is determined.
3. The method according to claim 2, characterized in that The determining at least one refinement layer based on the target refinement layer where the target point is located includes: Decoding the code stream to determine a reconstructed value of geometric information of the point cloud; Dividing the point cloud into L refinement layers based on the reconstructed value of the geometric information of the point cloud, where the refinement layer includes one or more points, and L is an integer greater than 0; The target refinement level is determined based on the index of the target point.
4. The method according to claim 2, characterized in that The determining of the filter coefficient corresponding to the at least one refinement layer includes: Decoding the bitstream and determining a filter identifier corresponding to the at least one refinement layer; the filter identifier corresponding to the at least one refinement layer indicates a position of a filter coefficient corresponding to the at least one refinement layer in the bitstream; The code stream is decoded based on the filter identifier corresponding to the at least one refinement layer, and a filter coefficient corresponding to the at least one refinement layer is determined.
5. The method according to claim 2, characterized in that The determining, based on the filter coefficient corresponding to the at least one refinement layer, a filter coefficient of any point in the at least one refinement layer includes: The filter coefficient of any point in the at least one refinement layer is set to be equal to the filter coefficient corresponding to the at least one refinement layer.
6. The method according to claim 2, characterized in that The at least one refinement layer includes the first N refinement layers arranged in the generation order of the refinement layers, or the at least one refinement layer includes one or more refinement layers located after the first N refinement layers in the generation order of the refinement layers, where N is an integer greater than 0.
7. The method according to claim 6, characterized in that The at least one refinement layer includes a single refinement layer that is located before the last refinement layer and after the first N refinement layers in a generation order of the refinement layers.
8. The method according to claim 1, characterized in that Determining the filter coefficient of the target point includes: Determine a target detail layer where the target point is located; the target detail layer includes one or more refinement layers; Determining a filter coefficient corresponding to the target detail layer; Based on the filter coefficient corresponding to the target detail layer, a filter coefficient of any point in the target detail layer is determined.
9. The method according to claim 8, characterized in that Determining the target detail layer where the target point is located includes: Decoding the code stream to determine a reconstructed value of geometric information of the point cloud; Dividing the point cloud into L refinement layers based on the reconstructed value of the geometric information of the point cloud, where the refinement layer includes one or more points, and L is an integer greater than 0; Determining L detail layers of the point cloud based on the L refinement layers; The detail layer numbered i in the L detail layers includes: one or more detail layers numbered 0 to i arranged in the order of generation of the detail layers, where i is an integer greater than 0; The object detail layer is determined based on the index of the object point.
10. The method according to claim 8, characterized in that The determining of the filter coefficient corresponding to the target detail layer includes: Decoding the bitstream to determine a filter identifier corresponding to the target detail layer; the filter identifier corresponding to the target detail layer indicates a position of a filter coefficient corresponding to the target detail layer in the bitstream; The filter coefficient corresponding to the target detail layer is determined based on the code stream of the decoding point cloud of the filter identifier corresponding to the target detail layer.
11. The method according to claim 8, characterized in that The determining the filter coefficient of any point in the target detail layer based on the filter coefficient corresponding to the target detail layer includes: The filter coefficient of any point in the target detail layer is set to be equal to the filter coefficient corresponding to the target detail layer.
12. The method according to any one of claims 1 to 11, characterized in that The filtering of the initial reconstructed value of the attribute information of the target point based on the filter coefficient of the target point to determine the reconstructed value of the attribute information of the target point includes: The initial reconstructed value or a vector formed by the reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
13. The method according to claim 12, characterized in that The method of multiplying the initial reconstructed value or the vector formed by the reconstructed values of the attribute information of the neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point includes: If the refinement layer where the target point is located belongs to the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the target point are selected in the first N refinement layers, and the vector formed by the initial reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
14. The method according to claim 12, characterized in that The method of multiplying the initial reconstructed value or the vector formed by the reconstructed values of the attribute information of the neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point includes: If the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the target point are selected in the filtered refinement layer, and the vector formed by the reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
15. The method according to any one of claims 1 to 14, characterized in that The method further comprises: A decoded point cloud is obtained based on the reconstructed value of the attribute information of the target point.
16. A point cloud coding method, characterized in that: include: determining a residual value of the attribute information of the target point based on a true value of the attribute information of the target point in the point cloud and a predicted value of the attribute information of the target point; Determining a filter coefficient of the target point based on neighboring points of the target point; The residual value of the attribute information of the target point and the filter coefficient of the target point are encoded to obtain a code stream.
17. The method according to claim 16, characterized in that The determining of the filter coefficient of the target point based on the neighboring points of the target point includes: Determining at least one refinement layer based on the target refinement layer where the target point is located; the refinement layer includes one or more points; Determining a first matrix and a first vector, wherein the first matrix is a matrix formed by initial reconstructed values or reconstructed values of attribute information of neighboring points of the at least one refinement layer, and the first vector is a vector formed by true values of the attribute information of the at least one refinement layer; multiplying the first matrix and the first vector to obtain a cross-correlation matrix of the at least one refinement layer; multiplying the first matrix by a transposed matrix of the first matrix to obtain an autocorrelation matrix of the at least one refinement layer; Determining a filter coefficient corresponding to the at least one refinement layer based on a mutual correlation matrix of the at least one refinement layer and an autocorrelation matrix of the at least one refinement layer; determining a filter coefficient for any point in the at least one refinement layer based on the filter coefficient corresponding to the at least one refinement layer; The step of encoding the residual value of the attribute information of the target point and the filter coefficient of the target point to obtain a code stream includes: The residual value of the attribute information of the point in the at least one refinement layer, the filter identifier corresponding to the at least one refinement layer, and the filter coefficient corresponding to the at least one refinement layer are encoded to obtain the code stream; the filter identifier corresponding to the at least one refinement layer indicates a position of the filter coefficient corresponding to the at least one refinement layer in the code stream.
18. The method according to claim 17, characterized in that The determining at least one refinement layer based on the target refinement layer where the target point is located includes: Determining a reconstruction value of the geometric information of the point cloud; Dividing the point cloud into L refinement layers based on the reconstructed value of the geometric information of the point cloud, where the refinement layer includes one or more points, and L is an integer greater than 0; The target refinement level is determined based on the index of the target point.
19. The method according to claim 17, wherein The determining of the first matrix and the first vector includes: If the refinement layer where the target point is located belongs to the first N refinement layers arranged in the generation order of the refinement layers, then neighboring points of the point in the at least one refinement layer are selected in the first N refinement layers, and a matrix formed by initial reconstructed values of attribute information of the neighboring points of the point in the at least one refinement layer is determined as the first matrix.
20. The method according to claim 17, wherein The determining of the first matrix and the first vector includes: If the refinement layer where the target point is located belongs to a refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, then neighboring points of the point in the at least one refinement layer are selected in the filtered refinement layers, and a matrix formed by reconstructed values of attribute information of the neighboring points of the point in the at least one refinement layer is determined as the first matrix.
21. The method according to claim 17, wherein The determining, based on the filter coefficient corresponding to the at least one refinement layer, a filter coefficient of any point in the at least one refinement layer includes: The filter coefficient of any point in the at least one refinement layer is set to be equal to the filter coefficient corresponding to the at least one refinement layer.
22. The method according to claim 17, wherein The at least one refinement layer includes the first N refinement layers arranged in the generation order of the refinement layers, or the at least one refinement layer includes one or more refinement layers located after the first N refinement layers in the generation order of the refinement layers, where N is an integer greater than 0.
23. The method according to claim 22, characterized in that The at least one refinement layer includes a single refinement layer that is located before the last refinement layer and after the first N refinement layers in a generation order of the refinement layers.
24. The method according to claim 16, wherein The determining of the filter coefficient of the target point based on the neighboring points of the target point includes: Determine a target detail layer where the target point is located; the target detail layer includes one or more refinement layers; Obtaining a second matrix and a second vector, wherein the second matrix is a matrix formed by initial reconstructed values or reconstructed values of attribute information of neighboring points of the target detail layer, and the second vector is a vector formed by true values of the attribute information of the target detail layer; Multiplying the second matrix and the second vector to obtain a cross-correlation matrix of the target detail layer; Multiplying the transposed matrix of the second matrix by the second matrix to obtain an autocorrelation matrix of the target detail layer; Determining a filter coefficient corresponding to the target detail layer based on a mutual correlation matrix of the target detail layer and an autocorrelation matrix of the target detail layer; Determining a filter coefficient of any point in the target detail layer based on the filter coefficient corresponding to the target detail layer; The step of encoding the residual value of the attribute information of the target point and the filter coefficient of the target point to obtain a code stream includes: The residual value of the attribute information of the midpoint of the target detail layer, the filter identifier corresponding to the target detail layer, and the filter coefficient corresponding to the target detail layer are encoded to obtain the code stream; the filter identifier corresponding to the target detail layer indicates the position of the filter coefficient corresponding to the target detail layer in the code stream.
25. The method according to claim 24, characterized in that Determining the target detail layer where the target point is located includes: Determining a reconstruction value of the geometric information of the point cloud; Dividing the point cloud into L refinement layers based on the reconstructed value of the geometric information of the point cloud, where the refinement layer includes one or more points, and L is an integer greater than 0; Based on the L refinement layers, obtaining L detail layers of the point cloud; The detail layer numbered i in the L detail layers includes: one or more detail layers numbered 0 to i arranged in the order of generation of the detail layers, where i is an integer greater than 0; The object detail layer is determined based on the index of the object point.
26. The method according to claim 24, characterized in that The obtaining of the second matrix and the second vector includes: If the refinement layer where the target point is located belongs to the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the midpoint of the target detail layer are selected in the first N refinement layers, and a matrix formed by the initial reconstructed values of the attribute information of the neighboring points of the midpoint of the target detail layer is determined as the second matrix.
27. The method according to claim 24, characterized in that The obtaining of the second matrix and the second vector includes: If the refinement layer where the target point is located belongs to a refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the target detail layer midpoint are selected in the filtered refinement layers, and a matrix formed by reconstructed values of attribute information of the neighboring points of the target detail layer midpoint is determined as the second matrix.
28. The method according to claim 24, characterized in that The determining of the filter coefficient of any point in the target detail layer based on the filter coefficient corresponding to the target detail layer includes: The filter coefficient of any point in the target detail layer is set to be equal to the filter coefficient corresponding to the target detail layer.
29. The method according to any one of claims 16 to 28, characterized in that The method further comprises: determining an initial reconstructed value of the attribute information of the target point based on the residual value of the attribute information of the target point and the predicted value of the attribute information of the target point; An initial reconstructed value of the attribute information of the target point is filtered based on the filter coefficient of the target point to determine a reconstructed value of the attribute information of the target point.
30. The method according to claim 29, wherein The filtering of the initial reconstructed value of the attribute information of the target point based on the filter coefficient of the target point to determine the reconstructed value of the attribute information of the target point includes: The initial reconstructed value or a vector formed by the reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
31. The method according to claim 30, wherein The method of multiplying the initial reconstructed value or the vector formed by the reconstructed values of the attribute information of the neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point includes: If the refinement layer where the target point is located belongs to the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the target point are selected in the first N refinement layers, and the vector formed by the initial reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
32. The method according to claim 30, wherein The method of multiplying the initial reconstructed value or the vector formed by the reconstructed values of the attribute information of the neighboring points of the target point by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point includes: If the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the target point are selected in the filtered refinement layer, and the vector formed by the reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
33. A decoder, characterized in that include: A decoding unit, configured to decode a code stream of a point cloud and determine a residual value of attribute information of a target point in the point cloud; a reconstruction unit, configured to determine an initial reconstructed value of the attribute information of the target point based on a residual value of the attribute information of the target point and a predicted value of the attribute information of the target point; A determination unit, configured to determine a filter coefficient of the target point; The filtering unit is configured to filter the initial reconstructed value of the attribute information of the target point based on the filtering coefficient of the target point to determine the reconstructed value of the attribute information of the target point.
34. The decoder according to claim 33, characterized in that The determining unit is specifically configured to: Determining at least one refinement layer based on the target refinement layer where the target point is located; the refinement layer includes one or more points; Determining a filter coefficient corresponding to the at least one refinement layer; Based on the filter coefficient corresponding to the at least one refinement layer, a filter coefficient of any point in the at least one refinement layer is determined.
35. The decoder according to claim 34, characterized in that The determining unit is specifically configured to: Decoding the code stream to determine a reconstructed value of geometric information of the point cloud; Dividing the point cloud into L refinement layers based on the reconstructed value of the geometric information of the point cloud, where the refinement layer includes one or more points, and L is an integer greater than 0; The target refinement level is determined based on the index of the target point.
36. The decoder according to claim 34, characterized in that The determining unit is specifically configured to: Decoding the bitstream and determining a filter identifier corresponding to the at least one refinement layer; the filter identifier corresponding to the at least one refinement layer indicates a position of a filter coefficient corresponding to the at least one refinement layer in the bitstream; The code stream is decoded based on the filter identifier corresponding to the at least one refinement layer, and a filter coefficient corresponding to the at least one refinement layer is determined.
37. The decoder according to claim 34, characterized in that The determining unit is specifically configured to: The filter coefficient of any point in the at least one refinement layer is set to be equal to the filter coefficient corresponding to the at least one refinement layer.
38. The decoder according to claim 34, characterized in that The at least one refinement layer includes the first N refinement layers arranged in the generation order of the refinement layers, or the at least one refinement layer includes one or more refinement layers located after the first N refinement layers in the generation order of the refinement layers, where N is an integer greater than 0.
39. The decoder according to claim 38, characterized in that The at least one refinement layer includes a single refinement layer that is located before the last refinement layer and after the first N refinement layers in a generation order of the refinement layers.
40. The decoder according to claim 33, wherein The determining unit is specifically configured to: Determine a target detail layer where the target point is located; the target detail layer includes one or more refinement layers; Determining a filter coefficient corresponding to the target detail layer; Based on the filter coefficient corresponding to the target detail layer, a filter coefficient of any point in the target detail layer is determined.
41. The decoder according to claim 40, characterized in that The determining unit is specifically configured to: Decoding the code stream to determine a reconstructed value of geometric information of the point cloud; Dividing the point cloud into L refinement layers based on the reconstructed value of the geometric information of the point cloud, where the refinement layer includes one or more points, and L is an integer greater than 0; Determining L detail layers of the point cloud based on the L refinement layers; The detail layer numbered i in the L detail layers includes: one or more detail layers numbered 0 to i arranged in the order of generation of the detail layers, where i is an integer greater than 0; The object detail layer is determined based on the index of the object point.
42. The decoder according to claim 40, characterized in that The determining unit is specifically configured to: Decoding the bitstream to determine a filter identifier corresponding to the target detail layer; the filter identifier corresponding to the target detail layer indicates a position of a filter coefficient corresponding to the target detail layer in the bitstream; The filter coefficient corresponding to the target detail layer is determined based on the code stream of the decoding point cloud of the filter identifier corresponding to the target detail layer.
43. The decoder according to claim 40, characterized in that The determining unit is specifically configured to: The filter coefficient of any point in the target detail layer is set to be equal to the filter coefficient corresponding to the target detail layer.
44. The decoder according to any one of claims 33 to 43, characterized in that The filtering unit is specifically used for: The initial reconstructed value or a vector formed by the reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
45. The decoder according to claim 44, characterized in that The filtering unit is specifically used for: If the refinement layer where the target point is located belongs to the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the target point are selected in the first N refinement layers, and the vector formed by the initial reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
46. The decoder according to claim 44, characterized in that The filtering unit is specifically used for: If the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the target point are selected in the filtered refinement layer, and the vector formed by the reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
47. The decoder according to any one of claims 33 to 46, characterized in that The decoder further comprises: A decoded point cloud is obtained based on the reconstructed value of the attribute information of the target point.
48. An encoder, characterized in that include: a residual unit, configured to determine a residual value of the attribute information of the target point based on a true value of the attribute information of the target point in the point cloud and a predicted value of the attribute information of the target point; a determining unit, configured to determine a filter coefficient of the target point based on neighboring points of the target point; The encoding unit is used to encode the residual value of the attribute information of the target point and the filter coefficient of the target point to obtain a code stream.
49. The encoder according to claim 48, characterized in that The determining unit is specifically configured to: Determining at least one refinement layer based on the target refinement layer where the target point is located; the refinement layer includes one or more points; Determining a first matrix and a first vector, wherein the first matrix is a matrix formed by initial reconstructed values or reconstructed values of attribute information of neighboring points of the at least one refinement layer, and the first vector is a vector formed by true values of the attribute information of the at least one refinement layer; multiplying the first matrix and the first vector to obtain a cross-correlation matrix of the at least one refinement layer; multiplying the first matrix by a transposed matrix of the first matrix to obtain an autocorrelation matrix of the at least one refinement layer; Determining a filter coefficient corresponding to the at least one refinement layer based on a mutual correlation matrix of the at least one refinement layer and an autocorrelation matrix of the at least one refinement layer; determining a filter coefficient for any point in the at least one refinement layer based on the filter coefficient corresponding to the at least one refinement layer; The step of encoding the residual value of the attribute information of the target point and the filter coefficient of the target point to obtain a code stream includes: The residual value of the attribute information of the point in the at least one refinement layer, the filter identifier corresponding to the at least one refinement layer, and the filter coefficient corresponding to the at least one refinement layer are encoded to obtain the code stream; the filter identifier corresponding to the at least one refinement layer indicates a position of the filter coefficient corresponding to the at least one refinement layer in the code stream.
50. The encoder according to claim 49, characterized in that The determining unit is specifically configured to: Determining a reconstruction value of the geometric information of the point cloud; Dividing the point cloud into L refinement layers based on the reconstructed value of the geometric information of the point cloud, where the refinement layer includes one or more points, and L is an integer greater than 0; The target refinement level is determined based on the index of the target point.
51. The encoder according to claim 49, wherein The determining unit is specifically configured to: If the refinement layer where the target point is located belongs to the first N refinement layers arranged in the generation order of the refinement layers, then neighboring points of the point in the at least one refinement layer are selected in the first N refinement layers, and a matrix formed by initial reconstructed values of attribute information of the neighboring points of the point in the at least one refinement layer is determined as the first matrix.
52. The encoder according to claim 49, wherein The determining unit is specifically configured to: If the refinement layer where the target point is located belongs to a refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, then neighboring points of the point in the at least one refinement layer are selected in the filtered refinement layers, and a matrix formed by reconstructed values of attribute information of the neighboring points of the point in the at least one refinement layer is determined as the first matrix.
53. The encoder according to claim 49, wherein The determining unit is specifically configured to: The filter coefficient of any point in the at least one refinement layer is set to be equal to the filter coefficient corresponding to the at least one refinement layer.
54. The encoder according to claim 49, wherein The at least one refinement layer includes the first N refinement layers arranged in the generation order of the refinement layers, or the at least one refinement layer includes one or more refinement layers located after the first N refinement layers in the generation order of the refinement layers, where N is an integer greater than 0.
55. The encoder according to claim 54, characterized in that The at least one refinement layer includes a single refinement layer that is located before the last refinement layer and after the first N refinement layers in a generation order of the refinement layers.
56. The encoder according to claim 48, wherein The determining unit is specifically configured to: Determine a target detail layer where the target point is located; the target detail layer includes one or more refinement layers; Obtaining a second matrix and a second vector, wherein the second matrix is a matrix formed by initial reconstructed values or reconstructed values of attribute information of neighboring points of the target detail layer, and the second vector is a vector formed by true values of the attribute information of the target detail layer; Multiplying the second matrix and the second vector to obtain a cross-correlation matrix of the target detail layer; Multiplying the transposed matrix of the second matrix by the second matrix to obtain an autocorrelation matrix of the target detail layer; Determining a filter coefficient corresponding to the target detail layer based on a mutual correlation matrix of the target detail layer and an autocorrelation matrix of the target detail layer; Determining a filter coefficient of any point in the target detail layer based on the filter coefficient corresponding to the target detail layer; The step of encoding the residual value of the attribute information of the target point and the filter coefficient of the target point to obtain a code stream includes: The residual value of the attribute information of the midpoint of the target detail layer, the filter identifier corresponding to the target detail layer, and the filter coefficient corresponding to the target detail layer are encoded to obtain the code stream; the filter identifier corresponding to the target detail layer indicates the position of the filter coefficient corresponding to the target detail layer in the code stream.
57. The encoder according to claim 56, characterized in that The determining unit is specifically configured to: Determining a reconstruction value of the geometric information of the point cloud; Dividing the point cloud into L refinement layers based on the reconstructed value of the geometric information of the point cloud, where the refinement layer includes one or more points, and L is an integer greater than 0; Based on the L refinement layers, obtaining L detail layers of the point cloud; The detail layer numbered i in the L detail layers includes: one or more detail layers numbered 0 to i arranged in the order of generation of the detail layers, where i is an integer greater than 0; The object detail layer is determined based on the index of the object point.
58. The encoder according to claim 56, characterized in that The obtaining of the second matrix and the second vector includes: If the refinement layer where the target point is located belongs to the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the midpoint of the target detail layer are selected in the first N refinement layers, and a matrix formed by the initial reconstructed values of the attribute information of the neighboring points of the midpoint of the target detail layer is determined as the second matrix.
59. The encoder according to claim 56, characterized in that The obtaining of the second matrix and the second vector includes: If the refinement layer where the target point is located belongs to a refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the target detail layer midpoint are selected in the filtered refinement layers, and a matrix formed by reconstructed values of attribute information of the neighboring points of the target detail layer midpoint is determined as the second matrix.
60. The encoder according to claim 56, wherein The determining of the filter coefficient of any point in the target detail layer based on the filter coefficient corresponding to the target detail layer includes: The filter coefficient of any point in the target detail layer is set to be equal to the filter coefficient corresponding to the target detail layer.
61. An encoder according to any one of claims 48 to 60, characterized in that The determining unit is further configured to: determining an initial reconstructed value of the attribute information of the target point based on the residual value of the attribute information of the target point and the predicted value of the attribute information of the target point; An initial reconstructed value of the attribute information of the target point is filtered based on the filter coefficient of the target point to determine a reconstructed value of the attribute information of the target point.
62. The encoder according to claim 61, characterized in that The determining unit is specifically configured to: The initial reconstructed value or a vector formed by the reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
63. The encoder according to claim 62, characterized in that The determining unit is specifically configured to: If the refinement layer where the target point is located belongs to the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the target point are selected in the first N refinement layers, and the vector formed by the initial reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
64. The encoder according to claim 62, characterized in that The determining unit is specifically configured to: If the refinement layer where the target point is located belongs to the refinement layer after the first N refinement layers arranged in the generation order of the refinement layers, then the neighboring points of the target point are selected in the filtered refinement layer, and the vector formed by the reconstructed values of the attribute information of the neighboring points of the target point is multiplied by the filter coefficient of the target point to obtain the reconstructed value of the attribute information of the target point.
65. An electronic device, characterized in that include: a processor adapted to execute a computer program; A computer-readable storage medium having a computer program stored therein, wherein when the computer program is executed by the processor, the method according to any one of claims 1 to 15 or the method according to any one of claims 16 to 32 is implemented.
66. A computer-readable storage medium, characterized in that Used to store a computer program, the computer program causing a computer to execute the method according to any one of claims 1 to 15 or the method according to any one of claims 16 to 32.
67. A computer program product comprising a computer program / instructions, characterized in that The computer program / instructions, when executed by a processor, implement the method according to any one of claims 1 to 15 or the method according to any one of claims 16 to 32.
68. A code stream, characterized in that The code stream is a code stream in the method according to any one of claims 1 to 15 or a code stream generated by the method according to any one of claims 16 to 32.
Citation Information
Cited By
Filtering method and apparatus, computer storage medium, and computer program product
WO2026193784A1