Point cloud encoding method, point cloud decoding method, encoder, decoder, and storage medium
By correcting and adjusting the point cloud attribute information at the RAHT level, the distortion problem after RAHT transformation is solved, and the encoding and decoding efficiency is improved.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
- Filing Date
- 2024-10-28
- Publication Date
- 2026-05-07
AI Technical Summary
Existing RAHT-based point cloud encoding and decoding schemes suffer from low encoding and decoding efficiency, mainly due to the distortion of point cloud attribute information after RAHT transformation.
By modifying the reconstructed attribute information layer by layer using the RAHT layer, and adjusting the reconstructed attribute values of the transform block using the target offset value, distortion can be reduced and encoding/decoding efficiency can be improved.
It effectively reduces the distortion of point cloud attribute information after RAHT transformation and improves encoding and decoding efficiency.
Smart Images

Figure CN2024127906_07052026_PF_FP_ABST
Abstract
Description
Point cloud encoding / decoding methods, codecs, and storage media Technical Field
[0001] This application relates to the field of point cloud encoding and decoding technology, and in particular to a point cloud encoding and decoding method, an encoder and decoder, and a storage medium. Background Technology
[0002] Within the point cloud encoding / decoding framework, during the encoding and decoding of point cloud attribute information, an encoding / decoding scheme based on region adaptive hierarchical transform (RAHT) can be initiated. However, current RAHT-based encoding / decoding schemes suffer from low encoding / decoding efficiency.
[0003] Summary of the Invention
[0004] This application provides a point cloud encoding / decoding method, an encoder / decoder, and a storage medium. The various aspects involved in this application are described below.
[0005] Firstly, a point cloud decoding method is provided, applied to a decoder, comprising: parsing the bitstream; determining the residual values of the AC coefficients of one or more transform blocks in the current RAHT layer, wherein the current RAHT layer is any one of multiple RAHT layers in the current frame; determining the reconstructed values of the AC coefficients of one or more transform blocks based on the residual values of the AC coefficients of the one or more transform blocks; determining the reconstructed attribute values of one or more transform blocks based on the reconstructed values of the AC coefficients of the one or more transform blocks; determining whether to adjust the reconstructed attribute values in the current RAHT layer; and if it is determined that the reconstructed attribute values in the current RAHT layer should be adjusted, then the reconstructed attribute values of one or more transform blocks are adjusted based on the target offset value.
[0006] Secondly, a point cloud encoding method is provided, applied to an encoder, comprising: determining the residual values of AC coefficients of one or more transform blocks in the current RAHT layer, wherein the current RAHT layer is any one of multiple RAHT layers in the current frame; determining the reconstructed values of AC coefficients of one or more transform blocks based on the residual values of AC coefficients of one or more transform blocks; determining the reconstructed attribute values of one or more transform blocks based on the reconstructed values of AC coefficients of one or more transform blocks; determining whether to adjust the reconstructed attribute values of the current RAHT layer; and if it is determined that the reconstructed attribute values in the current RAHT layer should be adjusted, then the reconstructed attribute values of one or more transform blocks are adjusted based on the target offset value.
[0007] Thirdly, a decoder is provided, comprising: a first determining unit configured to parse the bitstream and determine the residual values of the AC coefficients of one or more transform blocks in the current RAHT layer, wherein the current RAHT layer is any one of multiple RAHT layers in the current frame; a second determining unit configured to determine the reconstructed values of the AC coefficients of one or more transform blocks based on the residual values of the AC coefficients of the one or more transform blocks; a third determining unit configured to determine the reconstructed attribute values of one or more transform blocks based on the reconstructed values of the AC coefficients of the one or more transform blocks; a fourth determining unit configured to determine whether to adjust the reconstructed attribute values in the current RAHT layer; and an adjusting unit configured to adjust the reconstructed attribute values of one or more transform blocks based on a target offset value if it is determined that the reconstructed attribute values in the current RAHT layer should be adjusted.
[0008] Fourthly, a decoder is provided, comprising: a memory for storing a computer program; and a processor for executing the method of the first aspect when running the computer program.
[0009] Fifthly, an encoder is provided, comprising: a first determining unit configured to determine residual values of AC coefficients of one or more transform blocks of a current RAHT layer, wherein the current RAHT layer is any one of a plurality of RAHT layers in the current frame; a second determining unit configured to determine reconstructed values of AC coefficients of one or more transform blocks based on the residual values of AC coefficients of the one or more transform blocks; a third determining unit configured to determine reconstructed attribute values of one or more transform blocks based on the reconstructed values of AC coefficients of the one or more transform blocks; a fourth determining unit configured to determine whether to adjust the reconstructed attribute values of the current RAHT layer; and an adjusting unit configured to adjust the reconstructed attribute values of one or more transform blocks based on a target offset value if it is determined that the reconstructed attribute values in the current RAHT layer should be adjusted.
[0010] In a sixth aspect, an encoder is provided, the encoder comprising: a memory for storing a computer program; and a processor for executing the method of the second aspect when running the computer program.
[0011] In a seventh aspect, a computer-readable storage medium is provided, wherein the computer-readable storage medium stores a computer program that, when executed, implements the method as described in the first or second aspect.
[0012] Eighthly, a non-volatile computer-readable storage medium is provided for storing a bit stream, the bit stream being generated by an encoding method using an encoder, or the bit stream being decoded by a decoding method using a decoder, wherein the decoding method is as described in the first aspect and the encoding method is as described in the second aspect.
[0013] Ninth aspect, a computer-readable storage medium is provided, which stores a bitstream generated according to the method of the second aspect.
[0014] The attribute information of point clouds suffers from distortion after RAHT transformation, resulting in low encoding and decoding efficiency. This application's embodiments correct the reconstructed attribute information at the RAHT layer level to reduce distortion and thus improve encoding and decoding efficiency. Attached Figure Description
[0015] Figure 1 is a schematic diagram of a network architecture for point cloud encoding and decoding.
[0016] Figure 2A is a schematic diagram of the component framework of a G-PCC encoder.
[0017] Figure 2B is a schematic diagram of the component framework of a G-PCC decoder.
[0018] Figure 3A is a schematic diagram of an attribute information encoding process based on RAHT transformation.
[0019] Figure 3B is a schematic diagram of a decoding process for attribute information based on RAHT transformation.
[0020] Figure 4 is a schematic diagram of a two-point transformation process.
[0021] Figure 5 is a schematic diagram of another two-point transformation process.
[0022] Figure 6 is a schematic diagram of a RAHT transform that includes upsampling prediction.
[0023] Figure 7 is a schematic diagram of a RAHT inverse transform that includes upsampling prediction.
[0024] Figure 8 is a schematic diagram of a coding process based on RAHT transform (including inter-frame prediction).
[0025] Figure 9 is a flowchart illustrating a decoding method provided in an embodiment of this application.
[0026] Figure 10 is a schematic diagram of the position of parameter information in the bitstream structure.
[0027] Figure 11 is a flowchart illustrating an encoding method provided in an embodiment of this application.
[0028] Figure 12 is a flowchart illustrating another encoding method provided in an embodiment of this application.
[0029] Figure 13 is a flowchart illustrating another encoding method provided in an embodiment of this application.
[0030] Figure 14 is a flowchart illustrating another decoding method provided in an embodiment of this application.
[0031] Figure 15 is a schematic diagram of the structure of a decoder provided in an embodiment of this application.
[0032] Figure 16 is a schematic diagram of the structure of a decoder provided in another embodiment of this application.
[0033] Figure 17 is a schematic diagram of the encoder provided in an embodiment of this application.
[0034] Figure 18 is a schematic diagram of the encoder provided in another embodiment of this application. Detailed Implementation
[0035] In order to gain a more detailed understanding of the features and technical content of the embodiments of this application, the implementation of the embodiments of this application will be described in detail below with reference to the accompanying drawings. The accompanying drawings are for reference and illustration only and are not intended to limit the embodiments of this application.
[0036] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this application belongs. The terminology used herein is for the purpose of describing embodiments of this application only and is not intended to limit this application.
[0037] In the following description, references are made to “some embodiments,” which describe a subset of all possible embodiments. However, it is understood that “some embodiments” may be the same subset or different subsets of all possible embodiments and may be combined with each other without conflict.
[0038] It should also be noted that the terms "first, second, and third" used in the embodiments of this application are only used to distinguish similar objects and do not represent a specific order of objects. It is understood that "first, second, and third" can be interchanged in a specific order or sequence where permitted, so that the embodiments of this application described herein can be implemented in an order other than that illustrated or described herein.
[0039] A point cloud is a set of randomly distributed discrete points in space that represent the spatial structure and surface properties of a three-dimensional object or scene. These points contain geometric information representing spatial location and attribute information representing the appearance and texture of the point cloud.
[0040] Two-dimensional images contain information at each pixel, and their distribution is regular, so there's no need to record their positional information separately. However, the distribution of points in a point cloud in three-dimensional space is random and irregular, so the position of each point in space needs to be recorded to fully represent a point cloud. Similar to two-dimensional images, each location during acquisition has corresponding attribute information, usually RGB color values, reflecting the color of an object. For point clouds, in addition to color information, the most common attribute information for each point is reflectance, which reflects the surface material of the object. Therefore, point cloud data typically includes point position information and point attribute information. Point position information can also be called point geometric information. For example, point geometric information can be the three-dimensional coordinates (x, y, z). Point attribute information can include color information and / or reflectance, etc. For example, reflectance can be one-dimensional reflectance information (r); color information can be information in any color space, or it can be three-dimensional color information, such as RGB information. Here, R represents red (red, R), G represents green (green, G), and B represents blue (blue, B). For example, color information can be luminance and chromaticity (YCbCr, YUV) information. Here, Y represents luminance (luma), Cb (U) represents blue color difference, and Cr (V) represents red color difference.
[0041] Point clouds obtained based on laser measurement principles can include the three-dimensional coordinates and reflectance values of each point. Similarly, point clouds obtained based on photogrammetry principles can include the three-dimensional coordinates and three-dimensional color information of each point. Furthermore, point clouds obtained by combining laser measurement and photogrammetry principles can include the three-dimensional coordinates, reflectance values, and three-dimensional color information of each point.
[0042] Currently, point cloud encoding frameworks capable of compressing point clouds can include the G-PCC codec framework provided by the Moving Picture Experts Group (MPEG) or the video-based point cloud compression (V-PCC) codec framework, as well as the AVS-PCC codec framework provided by AVS or the geometry-based solid content test model (GES-TM). The G-PCC codec framework can be used to compress both static point clouds (Type 1) and dynamically acquired point clouds (Type 3), and it can be based on a point cloud compression test platform (test model compression 13, TMC13). The V-PCC codec framework can be used to compress dynamic point clouds (Type 2), and it can be based on a point cloud compression test platform (test model compression 2, TMC2). Therefore, the G-PCC codec framework is also called the point cloud codec TMC13, and the V-PCC codec framework is also called the point cloud codec TMC2. GES-TM is an encoding and decoding framework proposed for dense point clouds (such as point clouds acquired in augmented reality (AR) or virtual reality (VR) scenes).
[0043] This application provides a network architecture for a point cloud encoding / decoding system that includes decoding and encoding methods. Figure 1 is a schematic diagram of such a network architecture. As shown in Figure 1, the network architecture includes one or more electronic devices 13 to 1N and a communication network 01. The electronic devices 13 to 1N can perform video interaction through the communication network 01. The electronic devices can be various types of devices with point cloud encoding / decoding capabilities, such as mobile phones, tablets, personal computers, personal digital assistants, navigators, digital phones, video phones, televisions, sensing devices, servers, etc. This application does not impose any limitations. The decoder or encoder in this application can be one of the aforementioned electronic devices.
[0044] The electronic device in this application embodiment has point cloud encoding and decoding functions, and generally includes a point cloud encoder (i.e., encoder) and a point cloud decoder (i.e. decoder).
[0045] The following section uses the G-PCC and AVS codec frameworks as examples to explain the relevant technologies.
[0046] As can be understood, in the G-PCC encoding and decoding framework for point clouds, the point cloud data to be encoded is first divided into multiple slices. Within each slice, the geometric information of the point cloud and the attribute information corresponding to each point are encoded separately.
[0047] Figure 2A illustrates a schematic diagram of the component framework of a G-PCC encoder. As shown in Figure 2A, during the geometric encoding process, coordinate transformation is performed on the geometric information to ensure that the entire point cloud is contained within a bounding box. Then, quantization is performed; this step primarily serves a scaling function. Due to quantization rounding, some point clouds have identical geometric information, so parameters are used to determine whether to remove duplicate points. This process of quantization and removing duplicate points is also known as voxelization. Next, the bounding box is partitioned into an octree or a prediction tree is constructed. During this process, arithmetic encoding is performed on the points in the leaf nodes of the partition to generate a binary geometric bitstream; or, arithmetic encoding is performed on the vertices generated by the partition (surface fitting based on the vertices) to generate a binary geometric bitstream. During the attribute encoding process, after geometric encoding is completed and the geometric information is reconstructed, color conversion is performed to convert the color information (i.e., attribute information) from the RGB color space to the YUV color space. Then, the reconstructed geometric information is used to recolor the point cloud, so that the unencoded attribute information corresponds to the reconstructed geometric information. Attribute encoding is mainly performed on color information. In the process of color information encoding, there are three main transformation methods. The first two methods rely on the level of detail (LOD) partitioning, namely distance-based lifting transformation and prediction transformation. The third method is to directly perform RAHT. All three methods will transform the color information from the spatial domain to the frequency domain, obtain high-frequency coefficients and low-frequency coefficients through transformation, and finally quantize the coefficients and then perform arithmetic encoding on the quantized coefficients to generate a binary attribute bit stream.
[0048] Figure 2B illustrates a schematic diagram of the G-PCC decoder's structural framework. As shown in Figure 2B, for the acquired binary bitstream, the geometric bitstream and attribute bitstream within the binary bitstream are first decoded independently. During the decoding of the geometric bitstream, arithmetic decoding—reconstructing the octree / reconstructing the prediction tree—reconstructing geometry—inverse coordinate transformation is used to obtain the geometric information of the point cloud. During the decoding of the attribute bitstream, arithmetic decoding—inverse quantization—LOD partitioning / RAHT—inverse color transformation is used to obtain the attribute information of the point cloud. Based on the geometric and attribute information, the point cloud data to be encoded (i.e., the output point cloud) is reconstructed.
[0049] It should be noted that, as shown in Figure 2A or Figure 2B, the current geometric coding and decoding of G-PCC can be divided into octree-based geometric coding and decoding (marked with dashed boxes) and prediction tree-based geometric coding and decoding (marked with dotted-dash boxes).
[0050] For octree-based geometry encoding (OctGeomEnc), the process involves: first, performing coordinate transformation on the geometric information to ensure that all points in the point cloud are contained within a single bounding box; then, quantization is performed, and due to rounding, some points may have identical geometric information. Whether to remove duplicate points is determined based on parameters; this process of quantization and removal of duplicate points is also known as voxelization. Next, the bounding boxes are continuously partitioned into tree types (e.g., octree, quadtree, binary tree) using a breadth-first search, and the placeholder code for each node is encoded. In related technologies, an implicit geometric partitioning method has been proposed, which first calculates the bounding box of the point cloud. Assume d x >d y >d z The bounding box corresponds to a cuboid. During geometric partitioning, a binary tree partition is first performed based on the x-axis, resulting in two child nodes; this continues until d is satisfied. x =d y >d z Only when the condition is met will the quadtree be partitioned based on the x and y axes to obtain four child nodes; when d is finally satisfied x =d y =d z Under certain conditions, the octree partitioning will continue until the resulting leaf nodes form a 1×1×1 unit cube. The partitioning then stops, and the nodes in the leaf nodes are encoded to generate a binary code stream. In the binary / quadtree / octree partitioning process, two parameters are introduced: K and M. Parameter K indicates the maximum number of binary / quadtree partitions performed before octree partitioning; parameter M indicates that the minimum block side length during binary / quadtree partitioning is 2. M At the same time, K and M must satisfy the following condition: Assume d max =max(d x ,d y ,d z ), d min =min(d x ,d y ,d z The parameter K satisfies: K ≥ d max ―d min The parameter M satisfies: M ≥ d minThe reason why parameters K and M satisfy the above conditions is that in the current G-PCC implicit partitioning process, the priority of partitioning methods is binary tree, quadtree, and octree. Only when the node block size does not meet the binary / quadtree condition will the node be continuously partitioned into an octree until the smallest leaf node unit of 1×1×1 is reached. The octree-based geometric information encoding mode can effectively encode the geometric information of the point cloud by utilizing the correlation between nearest neighbors in space.
[0051] The following section uses the RAHT transform as an example to provide a detailed explanation of the encoding and decoding process of point cloud attribute information.
[0052] The principle of RAHT transform is Haar wavelet transform. Its core is to recursively transform attribute information from the root node to the child nodes in a top-down order for a hierarchical tree structure. The resulting direct current (DC) coefficients are passed to the next layer, while the alternating current (AC) coefficients are quantized and encoded. Figure 3A shows a schematic diagram of the attribute information encoding process based on RAHT transform. As shown in Figure 3, at the encoding end, firstly, based on the octree structure of the point cloud, it is determined whether to use upsampling prediction (or intra-frame prediction) or inter-frame prediction; secondly, recursively transforming from the root node to the child nodes from top to bottom yields layer-by-layer AC coefficients. If prediction occurs during the transformation process, the difference between the predicted AC coefficients and the original AC coefficients is used to obtain the residual value of the AC coefficients; finally, the residual value of the AC coefficients is quantized and encoded to generate the attribute information bitstream.
[0053] Figure 3B illustrates a schematic diagram of the attribute information decoding process based on RAHT transform. As shown in Figure 3B, at the decoding end, the attribute information decoding process based on RAHT transform is still performed in a top-down order from the root node to the child nodes. First, the decoder reads the attribute bitstream and performs entropy decoding, followed by inverse quantization to obtain the residual values of the AC coefficients. If there is intra-frame prediction or inter-frame prediction during the transformation process, the residual values of the AC coefficients are added to the predicted values of the AC coefficients to obtain the reconstructed values of the AC coefficients. Then, it is combined with the DC coefficients and subjected to inverse RAHT transform to obtain the reconstructed attribute values of this layer. The reconstructed attribute values of this layer can then be used to calculate the DC coefficients of the next layer, until all layers have been traversed to obtain the reconstructed attribute values. To aid further understanding, the concepts involved in the attribute information encoding process based on RAHT transform described above will be explained in detail below.
[0054] RAHT Transformation
[0055] The RAHT transform relies on a pre-partitioned octree structure, where each non-empty voxel block (hereinafter referred to as a transform block) contains 2×2×2 sub-blocks (hereinafter referred to as sub-blocks). Within each transform block, RAHT applies the Haar wavelet transform in the X, Y, and Z directions, respectively. The specific Haar wavelet transform formulas for two adjacent sub-blocks are shown below:
[0056] Among them, w i,j Let g be the weight of the j-th sub-block (or node to be transformed) in the i-th layer. i,j h is the attribute value of the leaf node. i,j Let AC be the coefficient of the alternation, and g′ be the coefficient of the alternation. i,j The DC coefficient is represented by .
[0057] The Haar wavelet transform of two adjacent sub-blocks can also be called a two-point transform. Figures 4 and 5 show a schematic diagram of a two-point transform process. As shown in Figure 4, after completing the two-point transform in one transform direction, AC coefficients and DC coefficients are obtained. As shown in Figure 5, the DC coefficients obtained in the first transform direction continue to be propagated along the remaining two directions (the first transform direction and the second transform direction) to continue the two-point transform until the entire transform block containing 2×2×2 sub-blocks has been traversed. Therefore, for a transform block containing 8 sub-blocks, 1 DC coefficient and 7 AC coefficients can be obtained.
[0058] For example, the two-point transformations in multiple directions described above can be simplified to the following formula:
[0059] Among them, A N ω represents the sum of attribute information within a sub-block. N T(ω1,ω2,…,ω) represents the number of points within the transformed sub-block. N ) represents the RAHT transformation matrix of the transform block.
[0060] It should be understood that the DC coefficients and AC coefficients represent the transform coefficients obtained after the transformation. During the encoding process, the N-1 AC coefficients obtained from each transformation are encoded, while only the DC coefficients of the root node are encoded; the DC coefficients of the remaining transform blocks are ignored. This is because these ignored DC coefficients can be calculated from the reconstruction attributes at the decoding end. The relationship between the DC coefficients and the reconstruction attribute values is shown in formula (1-5):
[0061] Among them, A N ω represents the sum of attribute information within a sub-block. N This indicates the number of points within the transformed sub-block.
[0062] In the current G-PCC encoding / decoding framework, the transformation process starts from the root node and is performed in a top-down order. Except for the bottom leaf nodes, each node in a layer can be considered a transform block, containing 2×2×2 sub-blocks. Each sub-block in the current layer corresponds to a transform block in the next layer, and the DC coefficients are passed down and decomposed layer by layer from the root node. Transform blocks within the same layer are transformed in ascending order of their coordinates in the Morton code, until all sub-blocks have been traversed.
[0063] Intra-frame upsampling prediction
[0064] To further remove redundancy and improve the compression efficiency of attribute information, an upsampling prediction method is introduced. The essence of upsampling prediction is intra-frame prediction, which uses the attribute information of already encoded points to predict the attribute information of the current point, thereby obtaining the predicted values of the AC coefficients. Then, the predicted values of the AC coefficients are subtracted from the original values to obtain the residual values of the AC coefficients. Next, the residual values of the AC coefficients are encoded to achieve the purpose of redundancy removal. The following sections, in conjunction with Figures 6 and 7, provide a more detailed description of the RAHT transform and inverse RAHT transform processes involving upsampling prediction.
[0065] Figure 6 illustrates a flowchart of a RAHT transform incorporating upsampling prediction. As shown in Figure 6, the RAHT transform in the tree structure proceeds from top to bottom, and the transform is performed within a 2×2×2 block. The reconstructed attribute values of the parent node and its coplanar and collinear neighboring nodes are used to predict the predicted attribute values of these child nodes. Then, the original and predicted attribute values of these child nodes are subjected to RAHT transform to obtain the corresponding DC and AC coefficients. Next, the AC coefficients obtained based on the original attribute values are differiated from those obtained based on the predicted attribute values to obtain the residual values of the AC coefficients, which are then quantized and entropy-encoded. Figure 7 illustrates a flowchart of an inverse RAHT transform incorporating upsampling prediction. As shown in Figure 7, during the inverse RAHT transform, the DC coefficients inherit the reconstructed attribute values of the parent node at the previous level. The residual values of the AC coefficients obtained at the decoding end are accumulated with the AC coefficients obtained by transforming the predicted attribute values from the upsampling prediction, and then combined with the inherited DC coefficients to undergo an inverse RAHT transform to obtain the reconstructed attribute values.
[0066] Inter-frame prediction
[0067] Inter-frame prediction utilizes the attribute information of already encoded point cloud frames to predict and encode the attribute information of the current frame, thereby reducing redundancy. Figure 8 illustrates a schematic diagram of an encoding process based on RAHT transform that includes inter-frame prediction. As shown in Figure 8, the reference frame is first divided into an octree structure. After the reference frame undergoes RAHT transformation, the AC coefficients of each reference node are recorded for inter-frame prediction of the point cloud attribute information in the next frame. In the encoding of the target node's attribute information, the residual value of the AC coefficients is calculated using the AC coefficients of the reference nodes and the target node, and this residual value is then encoded. The decoding process is similar to the encoding process and will not be described in detail here.
[0068] It should be noted that inter-frame prediction is only applied if the current frame and the reference frame have the same octree partitioning structure and are at the same node position. Inter-frame prediction is not applied if there are no prediction coefficient values in the reference buffer (i.e., the buffer of the reference frame). Inter-frame prediction is also not applied if there are no corresponding AC coefficients in the reference buffer.
[0069] Coding coefficient residuals and residuals
[0070] After obtaining the predicted attribute values of the current 2×2×2 transform block through upsampling prediction or inter-frame prediction as described above, RAHT transformation is performed on the original attribute values and predicted attribute values of the sub-blocks within the transform block to obtain the corresponding DC coefficients and AC coefficients. For the obtained i-th predicted AC coefficient... (k is 8). Let (AC) i ) i∈1…k―1 For the i-th original AC coefficient, the residual value (r) of the AC coefficient is... i ) i∈0…k―1 It can be represented as:
[0071] Then, the residual values of the AC coefficients are evaluated based on rate-distortion optimization (RDO): if this r... i If the rate-distortion cost RDcost set to 0 is less than the original rate-distortion cost RDcost, then r is set to 0. i Set to 0.
[0072] Further quantification of the prediction residuals based on RDO judgment:
[0073] Where, r i Q is the residual value of the AC coefficient. iThis represents the quantized attribute residual value at the current point i. Qs is the quantization step size, which can be calculated from the quantization parameter (QP) specified by CTC.
[0074] Reconstructing attribute values at the encoding end
[0075] The purpose of encoding-side reconstruction is for predicting subsequent points. Before reconstructing attribute values, the residual values of the quantized AC coefficients need to be dequantized.
[0076] in, Q represents the residual value of the AC coefficients after dequantization. i Qs represents the quantized attribute residual value at the current point i, and Qs is the quantization step size. With the predicted AC coefficient The sums are used to obtain the i-th reconstruction AC coefficient within the current block. Right now:
[0077] Finally, the reconstructed AC coefficients were analyzed. The reconstructed attribute values can be obtained by performing an inverse RAHT transformation together with the DC coefficients inherited from the parent node at the previous level.
[0078] The above section details the encoding and decoding process of point cloud attribute information based on RAHT transform. During this process, various factors can cause distortion of the point cloud attribute information after the RAHT transform, leading to low encoding and decoding efficiency.
[0079] For example, in lossy attribute encoding, the quantization and rounding of the residual values of AC coefficients, as well as the rounding calculations during RAHT transform and inverse RAHT transform, cause distortion in the reconstructed attribute values, reducing the efficiency of encoding and decoding.
[0080] For example, the RAHT transform performs layer-by-layer calculation and quantization encoding from the root node to the child nodes. Due to the existence of upsampling prediction, the distortion of the reconstructed attribute values will be passed from the upper layer of the RAHT layer to the lower layer of the RAHT layer, resulting in the accumulation of distortion of the reconstructed attribute values of the point cloud and reducing the efficiency of encoding and decoding.
[0081] To address the aforementioned issues, this application provides a point cloud coding method, comprising: determining the residual values of AC coefficients of one or more transform blocks in the current RAHT layer, wherein the current RAHT layer is any one of multiple RAHT layers in the current frame; determining the reconstructed values of the AC coefficients of one or more transform blocks based on the residual values of the AC coefficients of the one or more transform blocks; determining the reconstructed attribute values of one or more transform blocks based on the reconstructed values of the AC coefficients of the one or more transform blocks; determining whether to adjust the reconstructed attribute values of the current RAHT layer; and if it is determined that the reconstructed attribute values in the current RAHT layer should be adjusted, then the reconstructed attribute values of one or more transform blocks are adjusted based on a target offset value.
[0082] This application also provides a point cloud decoding method, including: parsing the bitstream, determining the residual values of AC coefficients of one or more transform blocks in the current RAHT layer, wherein the current RAHT layer is any one of multiple RAHT layers in the current frame; determining the reconstructed values of AC coefficients of one or more transform blocks based on the residual values of AC coefficients of one or more transform blocks; determining the reconstructed attribute values of one or more transform blocks based on the reconstructed values of AC coefficients of one or more transform blocks; determining whether to adjust the reconstructed attribute values in the current RAHT layer; and if it is determined that the reconstructed attribute values in the current RAHT layer should be adjusted, then the reconstructed attribute values of one or more transform blocks are adjusted based on the target offset value.
[0083] The attribute information of point clouds suffers from distortion after RAHT transformation, resulting in low encoding and decoding efficiency. This application's embodiments correct the reconstructed attribute information at the RAHT layer level to reduce distortion and thus improve encoding and decoding efficiency.
[0084] The point cloud decoding method provided in the embodiments of this application will be described in detail below with reference to the accompanying drawings.
[0085] Figure 9 is a flowchart illustrating the point cloud decoding method provided in an embodiment of this application. The decoding method in Figure 9 can be applied to a decoder. The decoding method in Figure 9 can be used to decode the attribute information of a point cloud. In some implementations, this decoding method can be applied to G-PCC. Alternatively, in other implementations, this decoding method can be applied to a geometry-based solid content test model (GES-TM). GES-TM is an encoding and decoding framework proposed for dense point clouds (such as point clouds acquired in augmented reality (AR) or virtual reality (VR) scenes).
[0086] Referring to Figure 9, in step S910, the bitstream is parsed to determine the residual values of the AC transform coefficients of one or more transform blocks of the current RAHT layer. Here, the current RAHT layer is any one of the multiple RAHT layers in the current frame.
[0087] A RAHT layer can also be called a RAHT decoding layer, a RAHT attribute decoding layer, or a RAHT transform layer. The current RAHT layer can be determined based on at least one partitioning (or sampling) of the previous layer along the X, Y, and Z directions. The current RAHT layer can be any one of the multiple RAHT layers in the current frame. The first layer can be located at any of the following levels: the upper RAHT layer, the middle RAHT layer, or the lower RAHT layer.
[0088] A transform block can be understood as a transform block (or sub-block) in a RAHT layer, and the attribute information corresponding to the transform block can correspond to the attribute information of points in the point cloud.
[0089] AC coefficients can also be called attribute transformation coefficients, AC coefficients, high-frequency coefficients, AC high-frequency coefficients, or high-pass coefficients.
[0090] In step S920, the reconstructed values of the AC transform coefficients of one or more transform blocks are determined based on the residual values of the AC transform coefficients of one or more transform blocks.
[0091] In some implementations, if the one or more transform blocks include a first transform block, then step S920 may include: determining the predicted values of the AC coefficients of the first transform block based on the reconstructed values of the AC coefficients of the predicted block; and then determining the reconstructed values of the AC coefficients of the first transform block based on the predicted values of the AC coefficients of the first transform block and the residual values of the AC coefficients of the first transform block. For example, the sum of the predicted values of the AC coefficients of the first transform block and the residual values of the AC coefficients of the first transform block can be used as the reconstructed values of the AC coefficients of the first transform block.
[0092] The prediction block mentioned above can be an inter-frame prediction block, i.e., a reference block within a reference frame. For example, after the reference frame undergoes a RAHT transform, the AC coefficients of the reference block can be used as the predicted values of the AC coefficients of the first transform block. Alternatively, the prediction block can also be a prediction block determined based on upsampling. For example, the prediction block can be an intra-frame prediction block predicted based on the reconstructed attribute values of the current block's parent block and its coplanar and collinear neighboring blocks.
[0093] In step S930, the reconstruction attribute values of one or more transform blocks are determined based on the reconstruction values of the AC transform coefficients of one or more transform blocks.
[0094] In some implementations, if the one or more transform blocks include a first transform block, then step S930 may include: performing an inverse RAHT transform based on the reconstructed values of the AC coefficients and DC coefficients of the first transform block to determine the reconstructed attribute values of the first transform block.
[0095] In step S940, it is determined whether to adjust the reconstruction attribute values in the current RAHT layer.
[0096] This application does not specifically limit the method for determining whether to adjust the current RAHT layer in its embodiments. For example, at the encoding / decoding end, it can determine whether to adjust the current RAHT layer based on default predefined rules. In some implementations, it can also indicate whether to adjust the current RAHT layer based on auxiliary information of the bitstream (such as syntax elements).
[0097] In some implementations, the first identifier information obtained by parsing the bitstream can be used to determine whether to adjust the current RAHT layer.
[0098] The first identification information can be determined based on the distortion costs corresponding to the current RAHT layer before and after adjustment. The calculation method of distortion cost can be found in the description on the encoding side, and will not be detailed here.
[0099] Referring again to Figure 9, in step S950, if it is determined that the reconstruction attribute values in the current RAHT layer need to be adjusted, the reconstruction attribute values of one or more transform blocks are adjusted according to the target offset value.
[0100] The attribute information of point clouds suffers from distortion after RAHT transformation, resulting in low encoding and decoding efficiency. This application's embodiments correct the reconstructed attribute information at the RAHT layer level to reduce distortion and thus improve encoding and decoding efficiency.
[0101] The embodiments of this application do not limit the adjustment method in step S950. For example, the target offset value can be summed with the reconstruction attribute values of the one or more transform blocks, where the target offset value can be positive or negative. That is, the absolute value of the target offset value is added to any one of the one or more transform blocks, or the absolute value of the target offset value is subtracted from all of them.
[0102] For the current RAHT layer, the target offset value in step S950 can be one offset value determined from multiple offset values. That is, in the decoding method shown in Figure 9, multiple offset values can be set for the current RAHT layer, and a suitable offset value can be determined based on the degree of distortion of the reconstructed attribute values of the current RAHT layer. Here, the degree of distortion can, for example, be determined at the encoding end.
[0103] In some implementations, the target offset value corresponding to the current RAHT layer may include a first offset value and a second offset value. Alternatively, the target offset value can be selected from the first offset value and the second offset value to adjust the reconstruction attribute values of the current RAHT layer. Of course, more optional offset values can be set for the current RAHT layer; this application does not impose specific limitations on these options.
[0104] In some implementations, the first offset value and the second offset value can have one of the following relationships: the first offset value is negative and the second offset value is positive; or, both the first offset value and the second offset value are negative; or, both the first offset value and the second offset value are positive.
[0105] Furthermore, the first and second offset values mentioned above can be combined in various ways. For example, the first and second offset values can be values with the same absolute value but different signs. For instance, the first offset value is -1, and the second offset value can be 1. Alternatively, the first and second offset values can be values with different absolute values and different signs. Or, the first and second offset values can be values with different absolute values but the same sign.
[0106] It's important to understand that the target offset values for different RAHT layers within the same frame can be the same or different. In other words, for different RAHT layers, the reconstructed attribute values in each RAHT layer can be increased or decreased accordingly based on the same offset value. Alternatively, different offset values can be set for different RAHT layers to increase or decrease the reconstructed attribute values in each RAHT layer accordingly.
[0107] As mentioned earlier, the first identification information can indicate whether to adjust the reconstruction attribute values in the current RAHT layer. To save bitstream overhead, in some implementations, the first identification information can simultaneously indicate whether to adjust the reconstruction attribute values in the current RAHT layer and indicate the target offset value. Alternatively, the target offset value can also be predefined at the encoding / decoding end based on default rules.
[0108] As mentioned earlier, multiple offset values can be set for the current RAHT layer. In some implementations, the first identifier information can include multiple values to indicate whether to adjust the reconstruction attribute values in the current RAHT layer and the multiple offset values, respectively.
[0109] Taking the target offset value as including the first offset value and the second offset value mentioned above as an example, the indication method of the first identification information may include: if the value of the first identification information is the first value, then the reconstruction attribute value in the current RAHT layer is not adjusted; and / or, if the value of the first identification information is the second value, then the reconstruction attribute value of one or more transform blocks is adjusted according to the first offset value; and / or, if the value of the first identification information is the third value, then the reconstruction attribute value of one or more transform blocks is adjusted according to the second offset value.
[0110] In some implementations, parsing the first identifier information may include: parsing the bitstream to determine the binary symbol string; performing an inverse binarization operation on the binary symbol string to determine the value of the first identifier information.
[0111] The binary string mentioned above can be represented in several ways. Below, we will illustrate two methods of representing binary strings in detail.
[0112] For example, a binary symbol string can be represented based on a truncated unary code. When the binary symbol string is a truncated unary code, multiple different truncated unary codes can be used to indicate whether to adjust the reconstructed attribute values in the current RAHT layer and to indicate multiple offset values. For example, N+1 truncated unary codes can be used to indicate whether to adjust the reconstructed attribute values in the current RAHT layer and to indicate N offset values. For instance, truncated unary code 0 can be used to indicate that the reconstructed attribute values in the current RAHT layer should not be adjusted, and the N truncated unary codes following truncated unary code 0 can be used to indicate N offset values respectively.
[0113] As an example, taking the first identifier information mentioned above as including a first value, a second value, and a third value, based on the truncated unary code, these can be represented as 0, 10, and 11 respectively. Here, 0 indicates that the reconstruction attribute values in the current RAHT layer are not adjusted; 10 indicates that the reconstruction attribute values in the current RAHT layer are adjusted, and the target offset value is the first offset value; 11 indicates that the reconstruction attribute values in the current RAHT layer are adjusted, and the target offset value is the second offset value.
[0114] For example, binary symbol strings can be represented based on fixed-length codes. When the binary symbol string is a fixed-length code, multiple different fixed-length codes can be used to indicate whether to adjust the reconstructed attribute values in the current RAHT layer and to indicate multiple offset values. For example, log2(N+1) bits can be used to indicate whether to adjust the reconstructed attribute values in the current RAHT layer and to indicate N offset values.
[0115] As an example, taking the first identifier information mentioned above as including a first value, a second value, and a third value, based on a fixed-length code, they can be represented as 00, 10, and 11 respectively. Here, 00 indicates that the reconstruction attribute values in the current RAHT layer are not adjusted; 10 indicates that the reconstruction attribute values in the current RAHT layer are adjusted, and the target offset value is the first offset value; 11 indicates that the reconstruction attribute values in the current RAHT layer are adjusted, and the target offset value is the second offset value.
[0116] The reconstruction attribute values corresponding to the current RAHT layer can be various types of attribute information. For example, they can be attribute information of the Y component, the U component, or the V component. In other words, the adjustment in Figure 9 can be applied to any of the attribute information of the above components.
[0117] The first identifier mentioned above can be used to determine whether the reconstruction attribute value of one component in the current RAHT layer should be adjusted. In this case, three identifiers can be used to determine whether the reconstruction attribute values of the three components should be adjusted respectively.
[0118] Alternatively, the first identification information can also be used to simultaneously determine whether the reconstruction attribute values of the two components in the current RAHT layer should be adjusted to save bitstream overhead. For example, research has found that the residual distributions of the attribute information of the U component and the V component are similar. Therefore, at the decoding end, one identification information can be used to simultaneously indicate whether the reconstruction attribute values of the U component and the V component in the current RAHT layer should be adjusted. Another identification information can be used to separately indicate whether the reconstruction attribute value of the Y component in the current RAHT layer should be adjusted.
[0119] As mentioned above, the decision to adjust the current RAHT layer can be based on the first identifier information. In the decoding method shown in Figure 9, the decision to enable adjustment for the current point cloud can also be based on the identifier information. In some implementations, the bitstream can be parsed to determine the second identifier information. This second identifier information is used to indicate whether adjustment should be enabled for the current point cloud.
[0120] In this embodiment of the application, the first identification information can be carried in the attribute block header (ABH). The second identification information can be carried in the attribute parameter set (APS).
[0121] The following describes several possible ways to represent the first and second identification information.
[0122] For example, the first identifier can be represented by flag_SAO_N (of course, the first identifier can also be represented by any other letters and / or numbers). Furthermore, a separate identifier can be set for the reconstruction attribute values of different components. For example, flag_SAO_Y, flag_SAO_Cb, and flag_SAO_Cr can be used to indicate whether the reconstruction attribute values of the Y component, U component, and V component corresponding to the current RAHT layer should be adjusted.
[0123] For example, the second flag can be represented by `enable_SAO_flag` (of course, the second flag can also be represented by any other letters and / or numbers). For instance, the second flag can include a first value (such as 1 or true) and a second value (such as 0 or false). If the second flag is the first value, it indicates that adjustment is enabled for the current point cloud; if the second flag is the second value, it indicates that adjustment is not enabled for the current point cloud.
[0124] As an example, Figure 10 shows a schematic diagram of the position of parameter information in the bitstream structure. As shown in Figure 10, APS stores the flag information enable_SAO_flag to indicate whether the current point cloud is adjusted; coefficients stores the residuals of the AC coefficients of each RAHT layer to recover the reconstruction attribute values; ABH stores flag_SAO[3][layer] to indicate whether the reconstruction attribute values of the three components of each RAHT layer are adjusted.
[0125] In some implementations, the decoding method provided in this application can be applied to radar point clouds. In this case, the adjusted target reconstruction attribute values only include the reconstruction attribute values corresponding to reflectivity.
[0126] The test results obtained from testing the encoding and decoding method provided in the embodiments of this application will be introduced below to verify the performance improvement brought about by the embodiments of this application.
[0127] Table 1: Test results obtained from the encoding / decoding method based on the embodiments of this application under C1 conditions.
[0128] Table 2: Test results obtained by the encoding / decoding method based on the embodiments of this application under C1 conditions
[0129] Table 3: Test results obtained by the encoding / decoding method based on the embodiments of this application under C2 conditions
[0130] Table 4: Test results obtained by the encoding / decoding method based on the embodiments of this application under C2 conditions
[0131] In Tables 1 to 4, condition C1 represents lossless geometry and lossy attribute coding, while condition C2 represents lossy geometry and lossy attribute coding. In the tables, End-to-End BD-AttrRate represents the BD-Rate of end-to-end attribute values relative to the attribute bitstream, and End-to-End BD-TotalRate represents the BD-Rate of end-to-end attribute values relative to the total bitstream. BD-Rate reflects the reduction in bitrate at average PSNR compared to the original method. A decrease in BD-Rate indicates a reduction in bitrate and improved performance while maintaining the same PSNR; conversely, a increase indicates a decrease in performance. In other words, the greater the decrease in BD-Rate, the better the compression effect. The Cat2 dataset consists of multi-frame dense point clouds, divided into three classes: Cat2-A, Cat2-B, and Cat2-C. Finally, the Overall Average is the average of the test results for all sequences.
[0132] This test was performed on the G-PCC reference software Ges-TM V7.0-rc1, and was conducted according to CTC under C1 and C2 test conditions. In this test, the encoding / decoding method of this application embodiment was used only in the last RAHT layer (layer 0); the value of the identifier information in the encoded bitstream was selected as 3276 (because the program uses fixed-point arithmetic, the attribute value is shifted by 15 bits, 3276 represents the actual attribute value of 0.1). Compared with solutions in related technologies, this application embodiment achieved gains of 0.1%, -3.7%, and -1.2% on the Luma, Chroma Cb, and Chroma Cr components of the Cat2 dataset under Ges-TM and CTC-C1 test conditions, respectively; and -0.1%, -0.9%, and -0.5% on the Luma, Chroma Cb, and Chroma Cr components of the Cat2 dataset under CTC-C2 test conditions, respectively.
[0133] The point cloud decoding method provided by the embodiments of this application has been described in detail above with reference to Figure 9. The point cloud encoding method provided by the embodiments of this application will be described in detail below with reference to Figure 11.
[0134] Figure 11 is a flowchart illustrating the point cloud encoding method provided in an embodiment of this application. The encoding method in Figure 11 can be applied to an encoder. The encoding method in Figure 11 can be used to encode the attribute information of a point cloud. In some implementations, this encoding method can be applied to G-PCC. Alternatively, in other implementations, this encoding method can be applied to a geometry-based solid content test model (GES-TM). GES-TM is an encoding and decoding framework proposed for dense point clouds (such as point clouds acquired in augmented reality (AR) or virtual reality (VR) scenes).
[0135] Referring to Figure 11, in step S1110, the residual values of the AC coefficients of one or more transform blocks of the current RAHT layer are determined. Here, the current RAHT layer is any one of the multiple RAHT layers in the current frame.
[0136] A RAHT layer can also be called a RAHT decoding layer, a RAHT attribute decoding layer, or a RAHT transform layer. The current RAHT layer can be determined based on at least one partitioning (or sampling) of the previous layer along the X, Y, and Z directions. The current RAHT layer is any one of multiple RAHT layers in the current frame's point cloud. The first layer can be located at any level among the upper, middle, and lower RAHT layers.
[0137] A transform block can be understood as a transform block (or sub-block) in a RAHT layer, and the attribute information corresponding to the transform block can correspond to the attribute information of points in the point cloud.
[0138] AC coefficients can also be called attribute transformation coefficients, AC coefficients, high-frequency coefficients, AC high-frequency coefficients, or high-pass coefficients.
[0139] In some implementations, if one or more of the transform blocks mentioned above include a first transform block, the method for determining the residual values of the AC coefficients of the first transform block may include: performing a RAHT transform on the original attribute values of the first transform block to determine the original values of the AC coefficients of the first transform block; then performing a RAHT transform on the reconstructed attribute values of the prediction block to determine the predicted values of the AC coefficients of the first transform block; and then determining the residual values of the AC coefficients of the first transform block based on the original values of the AC coefficients of the first transform block and the predicted values of the AC coefficients of the first transform block.
[0140] The prediction block mentioned above can be an inter-frame prediction block, i.e., a reference block within a reference frame. For example, after the reference frame undergoes a RAHT transform, the AC coefficients of the reference block can be used as the predicted values of the AC coefficients of the first transform block. Alternatively, the prediction block can also be a prediction block determined based on upsampling. For example, the prediction block can be an intra-frame prediction block predicted based on the reconstructed attribute values of the current block's parent block and its coplanar and collinear neighboring blocks.
[0141] In step S1120, the reconstructed values of the AC coefficients of one or more transform blocks are determined based on the residual values of the AC coefficients of one or more transform blocks.
[0142] For example, if one or more transform blocks mentioned above include the first transform block, then the sum of the predicted values of the AC coefficients of the first transform block and the residual values of the AC coefficients of the first transform block can be used as the reconstructed values of the AC coefficients of the first transform block.
[0143] In step S1130, the reconstruction attribute values of one or more transform blocks are determined based on the reconstruction values of the AC coefficients of one or more transform blocks.
[0144] In some implementations, if one or more of the transform blocks mentioned above include a first transform block, step S1130 may include: performing an inverse RAHT transform based on the reconstructed AC coefficients and DC coefficients of the first transform block to determine the reconstructed attribute values of the first transform block.
[0145] In step S1140, it is determined whether to adjust the reconstruction attribute values of the current RAHT layer.
[0146] This application does not specifically limit the method for determining whether to adjust the current RAHT layer in its embodiments. For example, at the encoding / decoding end, it can determine whether to adjust the current RAHT layer based on default predefined rules. Alternatively, in some implementations, if the reconstructed attribute values in the current RAHT layer satisfy a first preset condition with respect to the original attribute values in the current RAHT layer, it can be determined that the reconstructed attribute values in the current RAHT layer should be adjusted.
[0147] The first preset condition mentioned above relates to the difference between the reconstructed attribute values in the current RAHT layer and the original attribute values in the current RAHT layer. This first preset condition can be used to indicate the degree of distortion of the reconstructed attribute values in the current RAHT layer. There are several ways to set this first preset condition; several implementation methods are illustrated below.
[0148] For example, in Method 1, the first preset condition can be determined based on a first average of the differences between the reconstructed attribute values in the current RAHT layer and the original attribute values in the current RAHT layer.
[0149] For example, assuming there are n transform blocks in the current RAHT layer, the formula for calculating the first average value can be expressed as:
[0150] Among them, attRec i attrOrg is the reconstruction attribute value of the i-th transform block in the current RAHT layer. i G represents the original attribute value of the i-th transform block in the current RAHT layer, and G is the first average value.
[0151] For example, in Method 2, the first preset condition can be determined based on the first variance between the reconstructed attribute values in the current RAHT layer and the original attribute values in the current RAHT layer.
[0152] For example, assuming there are n transform blocks in the current RAHT layer, the formula for calculating the first variance can be expressed as:
[0153] Among them, attrRec i attrOrg is the reconstruction attribute value of the i-th transform block in the current RAHT layer. i K represents the original attribute value of the i-th transform block in the current RAHT layer, and K is the first variance.
[0154] For example, the first preset condition can be determined by combining the first average value in Method 1 and the first variance in Method 2. For instance, different weights can be assigned to the first average value in Method 1 and the first variance in Method 2, and then the first preset condition can be determined based on the weighted value.
[0155] The degree of distortion of the reconstructed attribute values in the current RAHT layer can be determined based on the first preset condition. For example, the first preset condition could be that the first average value is not within the first value range, as mentioned above. Another example is that the first preset condition could be that the first variance is not within the first value range, as mentioned above. If the first average value or the first variance is not within the preset range, it indicates that the degree of distortion of the reconstructed attribute values in the current RAHT layer is relatively large, and therefore the reconstructed attribute values in the current RAHT layer can be adjusted.
[0156] Of course, whether the reconstruction attribute values of the current RAHT layer in step S1140 are adjusted depends not only on meeting the first preset condition mentioned above, but also on combining other preset conditions (the second preset condition). In some cases, the adjusted reconstruction attribute values can be compared with the original reconstruction attribute values to determine whether the cost corresponding to the current RAHT layer has increased or decreased. For example, for the current RAHT layer, assuming that the initial reconstruction attribute value in the current RAHT layer corresponds to the first cost, and the reconstruction attribute value adjusted based on the target offset value corresponds to the second cost, then the second preset condition may include: the second cost is less than or equal to the first cost. Here, the cost can be the distortion cost or the rate-distortion cost.
[0157] As an example, the first distortion cost and the second distortion cost can be expressed based on the following formula:
[0158] Where Dist0 is the first distortion cost, Dist1 is the second distortion cost, and attrOrg i attrRec represents the original attribute value of the i-th transform block. i attrWiener represents the reconstructed attribute value before adjustment for the i-th transform block. i The reconstructed attribute value is the value after adjustment for the i-th transform block.
[0159] If Dist1 > Dist0, it means that the distortion increases after adjustment, and the reconstruction attribute values in the current RAHT layer are not adjusted; if Dist1 < Dist0, it means that the distortion decreases after adjustment, and the reconstruction attribute values in the current RAHT layer are adjusted.
[0160] Furthermore, the bitrates R0 and R1 before and after adjustment can be considered, and the rate-distortion cost can be calculated: RDcost=Dist+λ·R (14)
[0161] Where RDcost0 is the rate distortion cost before adjustment, and RDcost1 is the rate distortion cost after adjustment. If RDcost1 < RDcost0, it means that the rate distortion cost after adjustment is small, and the reconstruction attribute values in the current RAHT layer are adjusted; if RDcost1 > RDcost0, it means that the rate distortion cost after adjustment is large, and the reconstruction attribute values in the current RAHT layer are not adjusted.
[0162] Referring again to Figure 11, in step S1150, if it is determined that the reconstruction attribute values in the current RAHT layer need to be adjusted, the reconstruction attribute values of one or more transform blocks are adjusted according to the target offset value.
[0163] The attribute information of point clouds suffers from distortion after RAHT transformation, resulting in low encoding and decoding efficiency. This application's embodiments correct the reconstructed attribute information at the RAHT layer level to reduce distortion and thus improve encoding and decoding efficiency.
[0164] The embodiments of this application do not limit the adjustment method in step S1150. For example, the target offset value can be summed with the reconstruction attribute values of the one or more transform blocks, where the target offset value can be positive or negative. That is, the absolute value of the target offset value is added to any one of the one or more transform blocks, or the absolute value of the target offset value is subtracted from all of them.
[0165] For the current RAHT layer, the target offset value in step S1150 can be one offset value determined from multiple offset values. That is, in the encoding method shown in Figure 11, multiple offset values can be set for the current RAHT layer, and a suitable offset value can be determined based on the distortion level of the reconstructed attribute values of the current RAHT layer. Here, the distortion level can be determined, for example, based on the first preset condition mentioned above. Assuming that the first value range mentioned above is between a first threshold and a second threshold (the second threshold is less than the first threshold), and taking the first preset condition that the first average value is not within the first value range as an example, the adjustment method of the reconstructed attribute values of the current RAHT layer under different distortion levels will be described in detail below.
[0166] Adjustment Method 1: When the first threshold is positive and the second threshold is negative, if the first average value is greater than or equal to the first threshold, the reconstructed attribute value of the first transform block (any transform block in the current RAHT layer) can be summed based on the first offset value. Here, the first offset value is negative. That is, the adjustment method for the reconstructed attribute value of the first transform block is to subtract a positive offset value.
[0167] Alternatively, if the first average value is less than the second threshold, the reconstructed attribute values of the first transform block can be summed based on the second offset value. Here, the second offset value is a positive number. That is, the reconstructed attribute values of the first transform block are adjusted by adding a positive offset value.
[0168] In this case, the absolute values of the first offset and the second offset can be the same or different. For example, the absolute values of the first offset and the second offset can both be 1, with the first offset being -1 and the second offset being 1.
[0169] Adjustment Method 2: When both the first and second thresholds are positive, if the first average value is greater than or equal to the first threshold, the reconstructed attribute value of the first transform block can be summed based on the first offset value and the reconstructed attribute value of the first transform block. Here, the first offset value is negative. That is, the adjustment method for the reconstructed attribute value of the first transform block is to subtract a positive offset value.
[0170] Alternatively, if the first average value is less than the second threshold, the reconstructed attribute values of the first transform block can be summed based on the second offset value. Here, the second offset value is negative. That is, the reconstructed attribute values of the first transform block are adjusted by subtracting a positive offset value.
[0171] In this case, the first offset value and the second offset value can be the same or different. For example, the first offset value can be set to be greater than the second offset value.
[0172] Adjustment Method 3: When both the first and second thresholds are negative, if the first average value is greater than or equal to the first threshold, the reconstructed attribute value of the first transform block can be summed based on the first offset value and the reconstructed attribute value of the first transform block. Here, the first offset value is positive. That is, the adjustment method for the reconstructed attribute value of the first transform block is to add a positive offset value.
[0173] Alternatively, if the first average value is less than the second threshold, the reconstructed attribute values of the first transform block can be summed based on the second offset value. Here, the second offset value is a positive number. That is, the reconstructed attribute values of the first transform block are adjusted by adding a positive offset value.
[0174] In this case, the first offset value and the second offset value can be the same or different. For example, the absolute value of the first offset value can be set to be less than the absolute value of the second offset value.
[0175] It should be noted that in the three adjustment methods mentioned above, the first offset value (or the second offset value) can be one or more. That is, an offset value can be selected from multiple offset values as the first offset value to adjust the reconstruction attribute value of the first transform block.
[0176] In some implementations, the first identification information can be written into the bitstream. This first identification information can be used to indicate whether to adjust the current RAHT layer in order to guide the adjustment of the reconstruction attribute information on the decoding side.
[0177] To conserve bitstream overhead, in some implementations, the first identifier can simultaneously indicate whether to adjust the reconstruction attribute values in the current RAHT layer and indicate the target offset value. Alternatively, the target offset value can be predefined at the encoding / decoding end based on default rules.
[0178] As mentioned earlier, multiple offset values can be set for the current RAHT layer. In some implementations, the first identifier information can include multiple values to indicate whether to adjust the reconstruction attribute values in the current RAHT layer and the multiple offset values, respectively.
[0179] Taking the target offset value as including the first offset value and the second offset value mentioned above as an example, the indication method of the first identification information may include: if the value of the first identification information is the first value, then the reconstruction attribute value in the current RAHT layer is not adjusted; and / or, if the value of the first identification information is the second value, then the reconstruction attribute value of one or more transform blocks is adjusted according to the first offset value; and / or, if the value of the first identification information is the third value, then the reconstruction attribute value of one or more transform blocks is adjusted according to the second offset value.
[0180] In some implementations, writing the first identifier information into the bitstream can include: performing a binarization operation on the value of the first identifier information to determine a binary symbol string; and then performing entropy encoding on the binary symbol string.
[0181] The binary string mentioned above can be represented in several ways. Below, we will illustrate two methods of representing binary strings in detail.
[0182] For example, a binary symbol string can be represented based on a truncated unary code. When the binary symbol string is a truncated unary code, multiple different truncated unary codes can be used to indicate whether to adjust the reconstructed attribute values in the current RAHT layer and to indicate multiple offset values. For example, N+1 truncated unary codes can be used to indicate whether to adjust the reconstructed attribute values in the current RAHT layer and to indicate N offset values. For instance, truncated unary code 0 can be used to indicate that the reconstructed attribute values in the current RAHT layer should not be adjusted, and the N truncated unary codes following truncated unary code 0 can be used to indicate N offset values respectively.
[0183] As an example, taking the first identifier information mentioned above as including a first value, a second value, and a third value, based on the truncated unary code, these can be represented as 0, 10, and 11 respectively. Here, 0 indicates that the reconstruction attribute values in the current RAHT layer are not adjusted; 10 indicates that the reconstruction attribute values in the current RAHT layer are adjusted, and the target offset value is the first offset value; 11 indicates that the reconstruction attribute values in the current RAHT layer are adjusted, and the target offset value is the second offset value.
[0184] For example, binary symbol strings can be represented based on fixed-length codes. When the binary symbol string is a fixed-length code, multiple different fixed-length codes can be used to indicate whether to adjust the reconstructed attribute values in the current RAHT layer and to indicate multiple offset values. For example, log2(N+1) bits can be used to indicate whether to adjust the reconstructed attribute values in the current RAHT layer and to indicate N offset values.
[0185] As an example, taking the first identifier information mentioned above as including a first value, a second value, and a third value, based on a fixed-length code, they can be represented as 00, 10, and 11 respectively. Here, 00 indicates that the reconstruction attribute values in the current RAHT layer are not adjusted; 10 indicates that the reconstruction attribute values in the current RAHT layer are adjusted, and the target offset value is the first offset value; 11 indicates that the reconstruction attribute values in the current RAHT layer are adjusted, and the target offset value is the second offset value.
[0186] The reconstruction attribute values corresponding to the current RAHT layer can be various types of attribute information. For example, they can be attribute information of the Y component, the U component, or the V component. In other words, the adjustment in Figure 11 can be applied to any of the attribute information of the above components.
[0187] The first identifier mentioned above can be used to determine whether the reconstruction attribute value of one component in the current RAHT layer should be adjusted. In this case, three identifiers can be used to determine whether the reconstruction attribute values of the three components should be adjusted respectively.
[0188] Alternatively, the first identification information can also be used to simultaneously determine whether the reconstruction attribute values of the two components in the current RAHT layer should be adjusted to save bitstream overhead. For example, research has found that the residual distributions of the attribute information of the U component and the V component are similar. Therefore, at the encoding end, one identification information can be used to simultaneously indicate whether the reconstruction attribute values of the U component and the V component in the current RAHT layer should be adjusted. Another identification information can be used to separately indicate whether the reconstruction attribute value of the Y component in the current RAHT layer should be adjusted.
[0189] As mentioned earlier, the first identifier information can guide the decoding side on whether to adjust the current RAHT layer. In the encoding method shown in Figure 11, the identifier information can also guide the decoding side on whether to enable adjustment of the current point cloud. In some implementations, the second identifier information can be written into the bitstream. Here, the second identifier information is used to indicate whether to enable adjustment of the current point cloud.
[0190] In this embodiment of the application, the first identification information can be carried in the attribute block header (ABH). The second identification information can be carried in the attribute parameter set (APS).
[0191] The following describes several possible ways to represent the first and second identification information.
[0192] For example, the first identifier can be represented by flag_SAO_N (of course, the first identifier can also be represented by any other letters and / or numbers). Furthermore, a separate identifier can be set for the reconstruction attribute values of different components. For example, flag_SAO_Y, flag_SAO_Cb, and flag_SAO_Cr can be used to indicate whether the reconstruction attribute values of the Y component, U component, and V component corresponding to the current RAHT layer should be adjusted.
[0193] For example, the second flag can be represented by `enable_SAO_flag` (of course, the second flag can also be represented by any other letters and / or numbers). For instance, the second flag can include a first value (such as 1 or true) and a second value (such as 0 or false). If the second flag is the first value, it indicates that adjustment is enabled for the current point cloud; if the second flag is the second value, it indicates that adjustment is not enabled for the current point cloud.
[0194] As an example, Figure 10 shows a schematic diagram of the location of parameter information in the bitstream structure. As shown in Figure 10, APS stores the flag information enable_SAO_flag to indicate whether the current point cloud is adjusted; coefficients stores the residuals of the AC coefficients of each RAHT layer to recover the reconstruction attribute values; ABH stores flag_SAO[3][layer] to indicate whether the reconstruction attribute values of the three components of each RAHT layer are adjusted.
[0195] In some implementations, the encoding method provided in this application can be applied to radar point clouds. In this case, the adjusted target reconstruction attribute values only include the reconstruction attribute values corresponding to reflectivity.
[0196] The embodiments of this application are described in more detail below with specific examples. It should be noted that the examples below are merely to help those skilled in the art understand the embodiments of this application, and are not intended to limit the embodiments of this application to the specific numerical values or scenarios illustrated. Those skilled in the art can obviously make various equivalent modifications or variations based on the examples given below, and such modifications or variations also fall within the scope of the embodiments of this application.
[0197] This example demonstrates a scheme for correcting attribute information of RAHT transform blocks. As shown in Figure 12, this scheme corrects RAHT block attributes by performing the following steps for each layer of the RAHT transform: After completing the transform, coefficient prediction, residual quantization, entropy encoding, and reconstructing the corresponding block attributes, we calculate the average attribute difference between the reconstructed block attributes and the original block attributes within this layer. If the difference is greater than our set adaptive threshold th_SAO, it indicates that the average value of the reconstructed attributes is large. Therefore, we subtract the offset from each attribute block in this layer and set a flag_SAO for this layer, setting its value to -1 to indicate the decoding operation. We then need to perform a distortion check. If the distortion after subtracting the offset is greater than the original reconstructed distortion, we cancel the attribute correction operation and restore flag_SAO to 0. If the difference is less than our set adaptive threshold -th_SAO, it indicates that the average value of the reconstructed attributes is small. Therefore, we add the offset to each attribute block in this layer and set the value of flag_SAO to 1. Similarly, a distortion judgment operation needs to be performed. If the distortion after adding the offset is greater than the original reconstruction distortion, the attribute correction operation is canceled and flag_SAO is restored to 0; if the difference is between -th_SAO and -th_SAO, the value of flag_SAO is set to 0. The method flow of this example is described in detail below with reference to Figures 13 and 14 from the encoding and decoding ends, respectively.
[0198] Figure 13 illustrates the encoding process provided in this example. As shown in Figure 13, in the RAHT algorithm, the original point cloud starts from the root node and performs RAHT transformation layer by layer for each 2×2×2 block from top to bottom to obtain transformation coefficients. For each layer, AC coefficient prediction is performed, and the residual values are quantized and entropy encoded. Simultaneously, the encoded coefficients are dequantized, the predicted values are added, and RAHT inverse transformation is performed to obtain the reconstructed attribute values of each layer's attribute blocks. For each layer, we calculate the average attribute difference between the reconstructed block attributes and the original block attributes within this layer. If the difference is greater than our set adaptive threshold th_SAO, then the offset is subtracted from each attribute block in this layer, and a flag_SAO is set for this layer with a value equal to -1. Distortion is also assessed. If the distortion after subtracting the offset is greater than the original reconstruction distortion, the attribute correction operation is canceled, and flag_SAO is restored to 0; if the difference is less than our set adaptive threshold -th_SAO, then the offset is added to each attribute block in this layer, and the flag_SAO value is equal to 1. Similarly, a distortion judgment operation needs to be performed. If the distortion after adding the offset is greater than the original reconstructed distortion, the attribute correction operation is canceled and flag_SAO is restored to 0; if the difference is between -th_SAO and -th_SAO, the value of flag_SAO is set to 0. On the encoding side, we finally need to encode the flag_SAO for each layer. Since the characteristics of the three color channels Y, Cb, and Cr are different, our attribute correction method is executed separately for each of the three channels. At the same time, in each layer, the encoder needs to encode three color flag bits: flag_SAO_Y, flag_SAO_Cb, and flag_SAO_Cr.
[0199] The bitstream structure is shown in Figure 10. In the original bitstream structure, coefficients stores the AC coefficient residuals of each layer for the attribute bitstream used to recover the reconstructed attributes. The improved bitstream structure needs to add two parts. The first part is to add the high-level control bit enable_SAO_flag to the attribute control parameter APS to indicate whether the attribute correction scheme is enabled. Its value is 1 to indicate that the scheme in this example is used, and 0 to indicate that it is disabled. The second part is in the attribute ABH, which stores the attribute correction usage flag bits flag_SAO_Y, flag_SAO_Cb, and flag_SAO_Cr of each layer's three channels. Their values are -1 / 0 / 1, which are used to indicate the usage of attribute correction (in Figure 8, flag_SAO[3][layer] refers to the buffer where the flag is stored in each of the three channels). We use two bits for the flag_SAO encoding method: isuseSAO and isplus. The indications of the two flag bits are shown in Table 5 below:
[0200] Table 5: Specific Encoding Scheme for flag_SAO
[0201] Figure 14 shows the decoding process provided in this example. As shown in Figure 14, the decoding end reads the attribute APS and first decodes the high-level control bit enable_SAO_flag. If the value of enable_SAO_flag is 0, it means that the scheme in this example is not used, and there is no need to decode the flag in ABH. If the value of enable_SAO_flag is 1, it means that the scheme in this example is used, and at this time, the flag in attribute ABH needs to be decoded again. Then, in ABH, the flag parameter matrix flag_SAO[3][layer] is decoded, where each layer has three flag bits flag_SAO_Y, flag_SAO_Cb, and flag_SAO_Cr, with values of -1 / 0 / 1, which are used to indicate the usage of attribute correction. Next, the coefficient residuals of each layer are decoded, dequantized, and RAHT inverse transform is performed to reconstruct the attribute block of each layer. At the same time, based on the value of flag_SAO[3], if it is 1, the offset is added to this color channel; if it is -1, the offset is subtracted; if it is 0, no operation is performed until all layers are processed and the final reconstructed point cloud is obtained.
[0202] In this example, the APS in the bitstream structure is directly read and written according to the original program; for flag_SAO[3] in ABH, the encoding and decoding methods are shown in Table 1. The specific implementation of the decoding program is as follows: encoder.encodeSAOflag() and decoder.decodeSAOflag() both represent 1-bit arithmetic encoding and decoding programs.
[0203] This example proposes an attribute correction scheme for RAHT layer block attributes, which effectively improves the problem of distortion accumulation and propagation in lossy attribute encoding of the RAHT algorithm, improves encoding efficiency, and achieves quality enhancement at the average bit rate of the reconstructed point cloud at the decoding end.
[0204] The core idea of this example is to adaptively select the post-processing operation for the attribute block by prior judgment of the attribute difference between the reconstructed attribute and the original point cloud, and by further judgment of the distortion. At the same time, the enable_SAO_flag and flag_SAO flag bits are encoded to indicate the specific operation of attribute correction in the decoder, adding or subtracting offset, thereby improving the reconstruction quality under the average bit rate of attribute encoding.
[0205] The method embodiments of this application have been described in detail above with reference to Figures 1 to 14. The apparatus embodiments of this application will be described in detail below with reference to Figures 15 to 18. It should be understood that the descriptions of the method embodiments correspond to the descriptions of the apparatus embodiments; therefore, any parts not described in detail can be referred to the preceding method embodiments.
[0206] Figure 15 is a schematic diagram of the structure of a decoder provided in an embodiment of this application. As shown in Figure 15, the decoder 1500 may include a first determining unit 1510, a second determining unit 1520, a third determining unit 1530, a fourth determining unit 1540, and an adjustment unit 1550.
[0207] The first determining unit 1510 is configured to parse the bitstream and determine the residual values of the AC coefficients of one or more transform blocks of the current RAHT layer, wherein the current RAHT layer is any one of the multiple RAHT layers of the current frame.
[0208] The second determining unit 1520 is configured to determine the reconstructed value of the AC coefficients of the one or more transform blocks based on the residual value of the AC coefficients of the one or more transform blocks.
[0209] The third determining unit 1530 is configured to determine the reconstruction attribute value of the one or more transform blocks based on the reconstruction value of the AC coefficients of the one or more transform blocks.
[0210] The fourth determining unit 1540 is configured to determine whether to adjust the reconstruction attribute values in the current RAHT layer.
[0211] The adjustment unit 1550 is configured to adjust the reconstruction attribute values of one or more transform blocks according to the target offset value if it is determined that the reconstruction attribute values in the current RAHT layer need to be adjusted.
[0212] In some implementations, the adjustment unit 1550 is configured to sum the target offset value with the reconstruction attribute values of the one or more transform blocks, wherein the target offset value is a positive or negative number.
[0213] In some implementations, the target offset value includes a first offset value and / or a second offset value, and the first offset value and the second offset value have one of the following relationships: the first offset value is negative and the second offset value is positive; or, both the first offset value and the second offset value are negative; or, both the first offset value and the second offset value are positive.
[0214] In some implementations, the absolute value of the first offset value and the absolute value of the second offset value may be the same or different.
[0215] In some implementations, the decoder 1500 is configured to parse the bitstream and determine first identification information; wherein the first identification information is used to indicate whether to adjust the reconstruction attribute value in the current RAHT layer; or, the first identification information is used to simultaneously indicate whether to adjust the reconstruction attribute value in the current RAHT layer and the target offset value.
[0216] In some implementations, the first identification information is used only to indicate whether the first attribute information corresponding to the current RAHT layer should be adjusted; or, the first identification information is used to simultaneously indicate whether the first attribute information and the second attribute information corresponding to the current RAHT layer should be adjusted.
[0217] In some implementations, the adjustment unit 1550 is configured such that if the value of the first identification information is a first value, then the reconstruction attribute value in the current RAHT layer is not adjusted; or,
[0218] If the first identification information is a second value, the reconstruction attribute values of the one or more transform blocks are adjusted according to the first offset value; or, if the first identification information is a third value, the reconstruction attribute values of the one or more transform blocks are adjusted according to the second offset value; wherein the target offset value includes the first offset value and / or the second offset value.
[0219] In some implementations, the decoder 1500 is configured to parse the bitstream, determine the binary symbol string, the binary symbol string being represented based on a truncated unary code or a fixed-length code; and perform an inverse binarization operation on the binary symbol string to determine the value of the first identifier information.
[0220] In some implementations, the binary symbol string is based on a truncated unary code representation, and the binary symbol string includes:
[0221] A single binary symbol is used to indicate that the reconstruction attribute values in the current RAHT layer should not be adjusted; or,
[0222] A 2-bit binary symbol is used to indicate that the reconstruction attribute values of the one or more transform blocks are adjusted according to the first offset value or the second offset value.
[0223] In some implementations, the decoder 1500 is configured to parse the bitstream and determine second identification information, which is used to indicate whether to enable adjustment of the current point cloud.
[0224] In some implementations, the first identification information is carried in the attribute block header.
[0225] In some implementations, the second identification information is carried in the attribute parameter set APS.
[0226] In some implementations, the decoder 1500 is configured to determine the predicted value of the AC coefficients of the first transform block based on the reconstructed value of the AC coefficients of the predicted block; and to determine the reconstructed value of the AC coefficients of the first transform block based on the predicted value of the AC coefficients of the first transform block and the residual value of the AC coefficients of the first transform block.
[0227] In some implementations, the prediction block is an intra-prediction block determined based on upsampling; or, the prediction block is an inter-prediction block determined based on inter-frame prediction.
[0228] In some implementations, the decoder 1500 is configured to perform an inverse RAHT transform based on the reconstructed values of the AC coefficients and DC coefficients of the first transform block to determine the reconstructed attribute values of the first transform block.
[0229] Understandably, in the embodiments of this application, a "unit" can be a portion of a circuit, a portion of a processor, a portion of a program or software, etc., and can also be a module or a non-modular one. Furthermore, the components in this embodiment can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit described above can be implemented in hardware or as a software functional module.
[0230] If the integrated unit is implemented as a software functional module and not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this embodiment, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) or processor to execute all or part of the steps of the method described in this embodiment. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.
[0231] Therefore, this application provides a computer-readable storage medium for use in a decoder 1500. The computer-readable storage medium stores a computer program that, when executed by a processor, implements the decoding method described in any of the foregoing embodiments.
[0232] Based on the composition of the decoder 1500 and the computer-readable storage medium described above, refer to Figure 16, which shows a schematic diagram of the specific hardware structure of the decoder 1500 provided in this embodiment of the application. As shown in Figure 16, the decoder 1600 may include: a communication interface 1610, a memory 1620, and a processor 1630; the various components are coupled together through a bus system 1640. It is understood that the bus system 1640 is used to realize the connection and communication between these components. In addition to a data bus, the bus system 1640 also includes a power bus, a control bus, and a status signal bus. However, for clarity, all buses are labeled as bus system 1640 in Figure 16.
[0233] The communication interface 1610 is used for receiving and sending signals during the process of sending and receiving information with other external network elements;
[0234] Memory 1620 is used to store computer programs;
[0235] Processor 1630, when running the computer program, performs the following:
[0236] The bitstream is parsed to determine the residual values of the AC coefficients of one or more transform blocks in the current RAHT layer, where the current RAHT layer is any one of the multiple RAHT layers in the current frame.
[0237] Based on the residual values of the AC coefficients of the one or more transform blocks, determine the reconstructed values of the AC coefficients of the one or more transform blocks;
[0238] Based on the reconstructed values of the AC coefficients of the one or more transform blocks, determine the reconstruction attribute values of the one or more transform blocks;
[0239] Determine whether to adjust the reconstruction attribute values in the current RAHT layer;
[0240] If it is determined that the reconstruction attribute values in the current RAHT layer need to be adjusted, then the reconstruction attribute values of the one or more transform blocks are adjusted according to the target offset value.
[0241] It is understood that the memory 1620 in the embodiments of this application can be volatile memory or non-volatile memory, or may include both volatile and non-volatile memory. The non-volatile memory can be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. The volatile memory can be random access memory (RAM), which is used as an external cache. By way of example, but not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous linked dynamic random access memory (SLDRAM), and direct rambus RAM (DRRAM). The memory 1620 of the systems and methods described in this application is intended to include, but is not limited to, these and any other suitable types of memory.
[0242] The processor 1630 may be an integrated circuit chip with signal processing capabilities. In implementation, each step of the above method can be completed by the integrated logic circuitry in the hardware of the processor 1630 or by instructions in software form. The processor 1630 can be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor can be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of this application can be directly embodied in the execution of a hardware decoding processor, or can be executed by a combination of hardware and software modules in the decoding processor. The software modules can be located in random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, or other mature storage media in the art. The storage medium is located in memory 1620. Processor 1630 reads the information in memory 1620 and completes the steps of the above method in conjunction with its hardware.
[0243] It is understood that the embodiments described in this application can be implemented using hardware, software, firmware, middleware, microcode, or a combination thereof. For hardware implementation, the processing unit can be implemented in one or more application-specific integrated circuits (ASICs), digital signal processors (DSPs), DSP devices (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described in this application, or combinations thereof. For software implementation, the technology described in this application can be implemented through modules (e.g., procedures, functions, etc.) that perform the functions described in this application. Software code can be stored in memory and executed by a processor. The memory can be implemented in the processor or external to the processor.
[0244] Alternatively, as another embodiment, the processor 1630 is also configured to execute the decoding method described in any of the foregoing embodiments when running the computer program.
[0245] Figure 17 is a schematic diagram of the structure of an encoder provided in an embodiment of this application. As shown in Figure 17, the encoder 1700 includes a first determining unit 1710, a second determining unit 1720, a third determining unit 1730, a fourth determining unit 1740, and an adjustment unit 1750.
[0246] The first determining unit 1710 is configured to determine the residual values of the AC coefficients of one or more transform blocks of the current RAHT layer, wherein the current RAHT layer is any one of the multiple RAHT layers of the current frame;
[0247] The second determining unit 1720 is configured to determine the reconstructed value of the AC coefficients of the one or more transform blocks based on the residual value of the AC coefficients of the one or more transform blocks.
[0248] The third determining unit 1730 is configured to determine the reconstruction attribute value of the one or more transform blocks based on the reconstruction value of the AC coefficients of the one or more transform blocks.
[0249] The fourth determining unit 1740 is configured to determine whether to adjust the reconstruction attribute values of the current RAHT layer;
[0250] The adjustment unit 1750 is configured to adjust the reconstruction attribute values of the one or more transform blocks according to the target offset value if it is determined that the reconstruction attribute values in the current RAHT layer need to be adjusted.
[0251] In some implementations, the encoder 1700 is configured to sum the target offset value with the reconstruction attribute values of the one or more transform blocks, where the target offset value is a positive or negative number.
[0252] In some implementations, the encoder 1700 is configured to determine to adjust the reconstructed attribute value in the current RAHT layer if a first preset condition is met between the reconstructed attribute value in the current RAHT layer and the original attribute value in the current RAHT layer.
[0253] In some implementations, the first preset condition is related to the difference between the reconstructed attribute value in the current RAHT layer and the original attribute value in the current RAHT layer.
[0254] In some implementations, the first preset condition is determined based on one or more of the following:
[0255] The first average of the differences between the reconstructed attribute values of the one or more transform blocks and the original attribute values of the one or more transform blocks;
[0256] The first variance between the reconstructed attribute values of the one or more transform blocks and the original attribute values of the one or more transform blocks.
[0257] In some implementations, the first preset condition includes: the first average value is not within a first value range; or, the first variance is not within a first value range.
[0258] In some implementations, the first value range is determined based on a first threshold and a second threshold, and the second threshold is less than the first threshold; the one or more transform blocks include a first transform block; the encoder 1700 is configured to sum the reconstructed attribute value of the first transform block based on a first offset value if the first average value is greater than or equal to the first threshold; or, if the first average value is less than or equal to the second threshold, to sum the reconstructed attribute value of the first transform block based on a second offset value.
[0259] In some implementations, if the first threshold is positive and the second threshold is negative, then the first offset value is negative and the second offset value is positive; or, if both the first threshold and the second threshold are positive, then both the first offset value and the second offset value are negative; or, if both the first threshold and the second threshold are negative, then both the first offset value and the second offset value are positive.
[0260] In some implementations, the absolute value of the first offset value and the absolute value of the second offset value may be the same or different.
[0261] In some implementations, the encoder 1700 is configured to determine to adjust the reconstruction attribute value in the current RAHT layer if the reconstructed attribute value in the current RAHT layer satisfies a first preset condition and the original attribute value in the current RAHT layer satisfies a second preset condition.
[0262] In some implementations, the reconstruction attribute value in the current RAHT layer corresponds to a first cost, and the reconstruction attribute value in the current RAHT layer adjusted based on the target offset value corresponds to a second cost. The second preset condition includes:
[0263] The second cost is less than or equal to the first cost.
[0264] In some implementations, the encoder 1700 is configured to write first identification information into the bitstream; wherein the first identification information is used to indicate whether to adjust the reconstruction attribute value in the current RAHT layer; or, the first identification information is used to simultaneously indicate whether to adjust the reconstruction attribute value in the current RAHT layer and the target offset value.
[0265] In some implementations, the first identification information is used only to indicate whether the first attribute information corresponding to the current RAHT layer should be adjusted; or, the first identification information is used to simultaneously indicate whether the first attribute information and the second attribute information corresponding to the current RAHT layer should be adjusted.
[0266] In some implementations, if the first identifier information is a first value, the reconstruction attribute value in the current RAHT layer is not adjusted; or, if the first identifier information is a second value, the reconstruction attribute value of the one or more transform blocks is adjusted according to the first offset value; or, if the first identifier information is a third value, the reconstruction attribute value of the one or more transform blocks is adjusted according to the second offset value.
[0267] In some implementations, the encoder 1700 is configured to perform a binarization operation on the value of the first identifier information based on a truncated unary code or a fixed-length code to determine a binary symbol string; and to perform entropy encoding on the binary symbol string.
[0268] In some implementations, the binary symbol string is based on a truncated unary code representation, and the binary symbol string includes: a 1-bit binary symbol for indicating that the reconstruction attribute values in the current RAHT layer are not adjusted; or, a 2-bit binary symbol for indicating that the reconstruction attribute values of the one or more transform blocks are adjusted according to a first offset value or a second offset value.
[0269] In some implementations, the encoder 1700 is configured to write second identification information into the bitstream, the second identification information being used to indicate whether adjustment is enabled for the current point cloud.
[0270] In some implementations, the first identification information is carried in the attribute block header.
[0271] In some implementations, the second identification information is carried in the attribute parameter set APS.
[0272] In some implementations, the encoder 1700 is configured to perform RAHT transformation on the original attribute values of the first transform block to determine the original values of the AC coefficients of the first transform block; perform RAHT transformation on the reconstructed attribute values of the prediction block to determine the predicted values of the AC coefficients of the first transform block; and determine the residual values of the AC coefficients of the first transform block based on the original values of the AC coefficients of the first transform block and the predicted values of the AC coefficients of the first transform block.
[0273] In some implementations, the prediction block is an intra-prediction block determined based on upsampling; or, the prediction block is an inter-prediction block determined based on inter-frame prediction.
[0274] In some implementations, the encoder 1700 is configured to perform an inverse RAHT transform based on the reconstructed values of the AC coefficients and DC coefficients of the first transform block to determine the reconstructed attribute value of the first transform block.
[0275] Understandably, in the embodiments of this application, a "unit" can be a portion of a circuit, a portion of a processor, a portion of a program or software, etc., and can also be a module or a non-modular one. Furthermore, the components in this embodiment can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit described above can be implemented in hardware or as a software functional module.
[0276] If the integrated unit is implemented as a software functional module and not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this embodiment, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) or processor to execute all or part of the steps of the method described in this embodiment. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, external hard drives, ROM, RAM, magnetic disks, or optical disks.
[0277] Therefore, this application provides a computer-readable storage medium for use in an encoder 1700. The computer-readable storage medium stores a computer program that, when executed by a processor, implements the encoding method described in any of the foregoing embodiments.
[0278] Based on the composition of the encoder 1700 described above and the computer-readable storage medium, refer to Figure 18, which shows a schematic diagram of the specific hardware structure of the encoder 1700 provided in this embodiment of the application. As shown in Figure 18, the encoder 1700 may include: a communication interface 1810, a memory 1818, and a processor 1830; the various components are coupled together through a bus system 1840. It is understood that the bus system 1840 is used to realize the connection and communication between these components. In addition to a data bus, the bus system 1840 also includes a power bus, a control bus, and a status signal bus. However, for clarity, all buses are labeled as bus system 1840 in Figure 18.
[0279] The communication interface 1810 is used for receiving and sending signals during the process of sending and receiving information with other external network elements;
[0280] Memory 1818 is used to store computer programs;
[0281] Processor 1830, when running the computer program, performs the following:
[0282] Determine the residual values of the AC coefficients of one or more transform blocks in the current RAHT layer, where the current RAHT layer is any one of the multiple RAHT layers in the current frame;
[0283] Based on the residual values of the AC coefficients of the one or more transform blocks, determine the reconstructed values of the AC coefficients of the one or more transform blocks;
[0284] Based on the reconstructed values of the AC coefficients of the one or more transform blocks, determine the reconstruction attribute values of the one or more transform blocks;
[0285] Determine whether to adjust the reconstruction attribute values of the current RAHT layer;
[0286] If it is determined that the reconstruction attribute values in the current RAHT layer need to be adjusted, then the reconstruction attribute values of the one or more transform blocks are adjusted according to the target offset value.
[0287] It is understood that the memory 1818 in the embodiments of this application may be volatile memory or non-volatile memory, or may include both volatile and non-volatile memory. Non-volatile memory may be ROM, PROM, EPROM, EEPROM, or flash memory. Volatile memory may be RAM, which is used as an external cache. By way of example, but not limitation, many forms of RAM are available, such as SRAM, DRAM, SDRAM, DDRSDRAM, ESDRAM, SLDRAM, and DRRAM. The memory 1818 of the systems and methods described in this application is intended to include, but is not limited to, these and any other suitable types of memory.
[0288] The processor 1830 may be an integrated circuit chip with signal processing capabilities. In implementation, each step of the above method can be completed by the integrated logic circuitry in the processor 1830 or by software instructions. The processor 1830 may be a general-purpose processor, DSP, ASIC, FPGA, or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of this application can be directly manifested as execution by a hardware decoding processor, or execution by a combination of hardware and software modules in the decoding processor. The software modules may reside in random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, or other mature storage media in the art. This storage medium is located in memory 1818, and the processor 1830 reads the information in memory 1818 and, in conjunction with its hardware, completes the steps of the above method.
[0289] It is understood that the embodiments described in this application can be implemented using hardware, software, firmware, middleware, microcode, or a combination thereof. For hardware implementation, the processing unit can be implemented in one or more ASICs, DSPs, DSPDs, PLDs, FPGAs, general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described in this application, or combinations thereof. For software implementation, the technology described in this application can be implemented through modules (e.g., procedures, functions, etc.) that perform the functions described in this application. Software code can be stored in memory and executed by a processor. The memory can be implemented in the processor or external to the processor.
[0290] Alternatively, as another embodiment, the processor 1830 is also configured to execute the encoding method described in any of the foregoing embodiments when running the computer program.
[0291] This application also provides a computer-readable storage medium, which is a non-volatile computer-readable storage medium for storing bit streams. The bit streams can be generated by using an encoding method of an encoder, or the bit streams can be decoded by using a decoding method of a decoder. The decoding method can be the decoding method described in any of the preceding embodiments, and the encoding method can be the encoding method described in any of the preceding embodiments.
[0292] It should be noted that, in this application, the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising one..." does not exclude the presence of other identical elements in the process, method, article, or apparatus that includes that element.
[0293] The sequence numbers of the embodiments in this application are for descriptive purposes only and do not represent the superiority or inferiority of the embodiments.
[0294] The methods disclosed in the several method embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments.
[0295] The features disclosed in the several product embodiments provided in this application are, without conflict, related to the following:
[0296] The features disclosed in the several method or device embodiments provided in this application can be arbitrarily combined without conflict to obtain new method or device embodiments.
[0297] The above description is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any variations or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this application should be included within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.
Claims
1. A point cloud decoding method, applied to a decoder, comprising: The bitstream is parsed to determine the residual values of the AC coefficients of one or more transform blocks of the current region's adaptive layered transform (RAHT) layer, where the current RAHT layer is any one of the multiple RAHT layers in the current frame. Based on the residual values of the AC coefficients of the one or more transform blocks, determine the reconstructed values of the AC coefficients of the one or more transform blocks; Based on the reconstructed values of the AC coefficients of the one or more transform blocks, determine the reconstruction attribute values of the one or more transform blocks; Determine whether to adjust the reconstruction attribute values in the current RAHT layer; If it is determined that the reconstruction attribute values in the current RAHT layer need to be adjusted, then the reconstruction attribute values of the one or more transform blocks are adjusted according to the target offset value.
2. The method according to claim 1, wherein, The adjustment of the reconstruction attribute values of the one or more transform blocks based on the target offset value includes: The target offset value is summed with the reconstruction attribute values of the one or more transform blocks, where the target offset value can be positive or negative.
3. The method according to claim 2, wherein, The target offset value includes a first offset value and / or a second offset value, and the first offset value and the second offset value have one of the following relationships: The first offset value is negative, and the second offset value is positive; or, Both the first offset value and the second offset value are negative; or, Both the first offset value and the second offset value are positive numbers.
4. The method according to claim 3, wherein, The absolute values of the first offset value and the second offset value may be the same or different.
5. The method according to any one of claims 1 to 4, wherein, The step of determining whether to adjust the reconstruction attribute values in the current RAHT layer includes: Analyze the bitstream to determine the first identifier information; Wherein, the first identification information is used to indicate whether to adjust the reconstruction attribute values in the current RAHT layer; or... The first identification information is used to simultaneously indicate whether to adjust the reconstruction attribute value in the current RAHT layer and the target offset value.
6. The method according to claim 5, wherein: The first identification information is only used to indicate whether to adjust the first attribute information corresponding to the current RAHT layer; or, The first identification information is used to simultaneously indicate whether to adjust the first attribute information and the second attribute information corresponding to the current RAHT layer.
7. The method according to claim 5 or 6, comprising: If the value of the first identifier information is the first value, then the reconstruction attribute value in the current RAHT layer will not be adjusted; If the value of the first identification information is the second value, then the reconstruction attribute values of the one or more transform blocks are adjusted according to the first offset value; If the first identification information is a third value, then the reconstruction attribute values of the one or more transform blocks are adjusted according to the second offset value.
8. The method according to any one of claims 5 to 7, wherein parsing the bitstream and determining the first identification information includes: Parse the code stream to determine the binary symbol string, which is based on a truncated unary code or a fixed-length code representation; Perform an inverse binarization operation on the binary symbol string to determine the value of the first identifier information.
9. The method according to claim 8, wherein, The binary symbol string is based on a truncated unary code representation, and the binary symbol string includes: A single binary symbol is used to indicate that the reconstruction attribute values in the current RAHT layer are not adjusted; A 2-bit binary symbol is used to indicate that the reconstruction attribute values of the one or more transform blocks are adjusted according to a first offset value or a second offset value.
10. The method according to any one of claims 1 to 9, wherein, The method further includes: The bitstream is parsed to determine the second identification information, which is used to indicate whether to enable adjustment of the current point cloud.
11. The method according to any one of claims 5 to 9, wherein, The first identification information is carried in the attribute block header.
12. The method according to claim 10, wherein, The second identification information is carried in the attribute parameter set APS.
13. The method according to claim 1, wherein, The one or more transform blocks include a first transform block, and determining the reconstructed values of the AC coefficients of the one or more transform blocks based on the residual values of the AC coefficients of the one or more transform blocks includes: Based on the reconstructed values of the AC coefficients of the prediction block, the predicted values of the AC coefficients of the first transform block are determined. Based on the predicted values of the AC coefficients of the first transform block and the residual values of the AC coefficients of the first transform block, determine the first... Reconstructed values of the AC coefficients of the transform block.
14. The method of claim 13, wherein: The prediction block is an intra-frame prediction block determined based on upsampling; or, The prediction block is an inter-frame prediction block determined based on inter-frame prediction.
15. The method according to claim 13 or 14, wherein, Determining the reconstruction attribute values of the one or more transform blocks based on the reconstruction values of the AC coefficients of the one or more transform blocks includes: The reconstructed attribute value of the first converter block is determined by performing an inverse RAHT transformation based on the reconstructed AC coefficient and DC coefficient of the first converter block.
16. A point cloud encoding method, applied to an encoder, comprising: Determine the residual values of the AC coefficients of one or more transform blocks of the current region adaptive hierarchical transform (RAHT) layer, wherein the current RAHT layer is any one of the multiple RAHT layers in the current frame; Based on the residual values of the AC coefficients of the one or more transform blocks, determine the reconstructed values of the AC coefficients of the one or more transform blocks; Based on the reconstructed values of the AC coefficients of the one or more transform blocks, determine the reconstruction attribute values of the one or more transform blocks; Determine whether to adjust the reconstruction attribute values of the current RAHT layer; If it is determined that the reconstruction attribute values in the current RAHT layer need to be adjusted, then the reconstruction attribute values of the one or more transform blocks are adjusted according to the target offset value.
17. The method according to claim 16, wherein, The adjustment of the reconstruction attribute values of the one or more transform blocks based on the target offset value includes: The target offset value is summed with the reconstruction attribute values of the one or more transform blocks, where the target offset value can be positive or negative.
18. The method according to claim 17, wherein, The step of determining whether to adjust the reconstruction attribute values in the current RAHT layer includes: If the reconstructed attribute value in the current RAHT layer meets the first preset condition with the original attribute value in the current RAHT layer, then it is determined that the reconstructed attribute value in the current RAHT layer will be adjusted.
19. The method according to claim 18, wherein, The first preset condition is related to the difference between the reconstructed attribute value in the current RAHT layer and the original attribute value in the current RAHT layer.
20. The method according to claim 18 or 19, wherein, The first preset condition is determined based on one or more of the following: The first average of the differences between the reconstructed attribute values of the one or more transform blocks and the original attribute values of the one or more transform blocks; The first variance between the reconstructed attribute values of the one or more transform blocks and the original attribute values of the one or more transform blocks.
21. The method according to claim 20, wherein, The first preset conditions include: The first average value is not within the first range; or, The first variance is not within the range of the first value.
22. The method according to claim 21, wherein, The first value range is determined based on a first threshold and a second threshold, and the second threshold is less than the first threshold. The one or more transform blocks include a first transform block. If it is determined that the reconstruction attribute values in the current RAHT layer should be adjusted, adjusting the reconstruction attribute values of the one or more transform blocks according to the target offset value includes: If the first average value is greater than or equal to the first threshold, then the reconstructed attribute value of the first shift value is summed with the reconstructed attribute value of the first transform block; or, If the first average value is less than or equal to the second threshold, then the second offset value is summed with the reconstruction attribute value of the first transform block.
23. The method according to claim 22, wherein: If the first threshold is positive and the second threshold is negative, then the first offset value is negative and the second offset value is positive. or, If both the first threshold and the second threshold are positive, then both the first offset value and the second offset value are negative; or, If both the first threshold and the second threshold are negative, then both the first offset value and the second offset value are positive.
24. The method according to claim 22 or 23, wherein, The absolute values of the first offset value and the second offset value may be the same or different.
25. The method according to any one of claims 22 to 24, wherein, The step of determining whether to adjust the reconstruction attribute values in the current RAHT layer includes: If the reconstructed attribute values in the current RAHT layer and the original attribute values in the current RAHT layer satisfy the first preset condition; and, If the reconstruction attribute value in the current RAHT layer and the reconstruction attribute value in the current RAHT layer adjusted based on the target offset value satisfy the second preset condition, then it is determined that the reconstruction attribute value in the current RAHT layer will be adjusted.
26. The method of claim 25, wherein, The reconstruction attribute value in the current RAHT layer corresponds to the first cost, and the reconstruction attribute value in the current RAHT layer adjusted based on the target offset value corresponds to the second cost. The second preset condition includes: The second cost is less than or equal to the first cost.
27. The method according to any one of claims 16 to 26, wherein, The method further includes: Write the first identifier information into the bitstream; Wherein, the first identification information is used to indicate whether to adjust the reconstruction attribute values in the current RAHT layer; or... The first identification information is used to simultaneously indicate whether to adjust the reconstruction attribute value in the current RAHT layer and the target offset value.
28. The method of claim 27, wherein: The first identification information is only used to indicate whether to adjust the first attribute information corresponding to the current RAHT layer; or, The first identification information is used to simultaneously indicate whether to adjust the first attribute information and the second attribute information corresponding to the current RAHT layer.
29. The method according to claim 27 or 28, wherein: If the value of the first identifier information is the first value, then the reconstruction attribute value in the current RAHT layer will not be adjusted; If the value of the first identification information is the second value, then the reconstruction attribute values of the one or more transform blocks are adjusted according to the first offset value; If the first identification information is a third value, then the reconstruction attribute values of the one or more transform blocks are adjusted according to the second offset value.
30. The method according to claims 27 to 29, wherein writing the first identification information into the bitstream comprises: Binarize the value of the first identifier information based on a truncated unary code or a fixed-length code to determine a binary symbol string. The binary symbol string is entropy encoded.
31. The method according to claim 30, wherein, The binary symbol string is based on a truncated unary code representation, and the binary symbol string includes: A single binary symbol is used to indicate that the reconstruction attribute values in the current RAHT layer are not adjusted; A 2-bit binary symbol is used to indicate that the reconstruction attribute values of the one or more transform blocks are adjusted according to a first offset value or a second offset value.
32. The method according to any one of claims 16 to 31, wherein, The method further includes: Write the second identifier information into the bitstream. The second identifier information is used to indicate whether to enable adjustment of the current point cloud.
33. The method according to any one of claims 27 to 31, wherein, The first identification information is carried in the attribute block header.
34. The method according to claim 32, wherein, The second identification information is carried in the attribute parameter set APS.
35. The method according to claim 16, wherein, The one or more transform blocks include a first transform block, and determining the residual values of the AC coefficients of the one or more transform blocks of the current RAHT layer includes: Perform RAHT transformation on the original attribute values of the first transform block to determine the original values of the AC coefficients of the first transform block; Perform RAHT transformation on the reconstructed attribute values of the prediction block to determine the predicted values of the AC coefficients of the first transformed block; The residual value of the AC coefficient of the first transform block is determined based on the original value of the AC coefficient of the first transform block and the predicted value of the AC coefficient of the first transform block.
36. The method of claim 35, wherein: The prediction block is an intra-frame prediction block determined based on upsampling; or, The prediction block is an inter-frame prediction block determined based on inter-frame prediction.
37. The method according to claim 35 or 36, wherein, Determining the reconstruction attribute values of the one or more transform blocks based on the reconstruction values of the AC coefficients of the one or more transform blocks includes: The reconstructed attribute value of the first converter block is determined by performing an inverse RAHT transformation based on the reconstructed AC coefficient and DC coefficient of the first converter block.
38. A decoder, comprising: The first determining unit is configured to parse the bitstream and determine the residual values of the AC coefficients of one or more transform blocks of the current region's adaptive hierarchical transform (RAHT) layer, wherein the current RAHT layer is any one of the multiple RAHT layers of the current frame. The second determining unit is configured to determine the reconstructed values of the AC coefficients of the one or more transform blocks based on the residual values of the AC coefficients of the one or more transform blocks. The third determining unit is configured to determine the reconstruction attribute value of the one or more transform blocks based on the reconstruction value of the AC coefficients of the one or more transform blocks; The fourth determining unit is configured to determine whether to adjust the reconstruction attribute values in the current RAHT layer; The adjustment unit is configured to, if it is determined that the reconstruction attribute values in the current RAHT layer need to be adjusted, adjust the target offset value accordingly. The reconstruction attribute values of one or more transform blocks are adjusted.
39. A decoder, comprising: Memory, used to store computer programs; A processor, configured to perform the method as described in any one of claims 1 to 15 when running the computer program.
40. An encoder, comprising: The first determining unit is configured to determine the residual values of the AC coefficients of one or more transform blocks of the current region adaptive hierarchical transform (RAHT) layer, wherein the current RAHT layer is any one of the multiple RAHT layers of the current frame. The second determining unit is configured to determine the reconstructed values of the AC coefficients of the one or more transform blocks based on the residual values of the AC coefficients of the one or more transform blocks. The third determining unit is configured to determine the reconstruction attribute value of the one or more transform blocks based on the reconstruction value of the AC coefficients of the one or more transform blocks; The fourth determining unit is configured to determine whether to adjust the reconstruction attribute values of the current RAHT layer; The adjustment unit is configured to adjust the reconstruction attribute values of one or more transform blocks according to the target offset value if it is determined that the reconstruction attribute values in the current RAHT layer need to be adjusted.
41. An encoder, comprising: Memory, used to store computer programs; A processor, configured to perform the method as described in any one of claims 16 to 37 when running the computer program.
42. A non-volatile computer-readable storage medium for storing a bitstream, said bitstream being generated by an encoding method using an encoder, or said bitstream being decoded by a decoding method using a decoder, wherein, The decoding method is the method as described in any one of claims 1 to 15, and the encoding method is the method as described in any one of claims 16 to 37.
43. A computer-readable storage medium storing a bitstream generated by the method of any one of claims 16 to 37.
44. A computer-readable storage medium, wherein, The computer-readable storage medium stores a computer program that, when executed, implements the method as described in any one of claims 1 to 15, or 16 to 37.
Citation Information
Patent Citations
Significant coefficient flag encoding for point cloud attribute compression
US20210319593A1
Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
US20220239946A1
Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
US20230394712A1
Coding method, decoding method, code stream, coder, decoder and storage medium
WO2024182978A1
Point cloud coding processing method, point cloud decoding processing method and related device
WO2024217301A1