Point cloud attribute decoding method, point cloud attribute encoding method, decoder and encoder
By determining the number of transform layers for RAHT attribute inter-frame prediction in the point cloud compression encoder, the encoding and decoding desynchronization problem caused by improper syntax element setting is solved, and the correct decoding of point cloud attribute information is achieved.
Patent Information
- Application Number
- PCT/CN2024/086840
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-04-09
- Publication Date
- 2025-10-16
AI Technical Summary
In the geometry-based point cloud compression encoder framework, improper setting of syntax elements during attribute encoding may cause codec desynchronization and thus decoding failure.
By obtaining the syntax elements in the attribute parameter set of the point cloud sequence from the bitstream, the number of RAHT transform layers for RAHT attribute inter-frame prediction is determined, and attribute decoding and encoding of point cloud slices are performed based on the number of transform layers to ensure encoding and decoding synchronization.
It effectively avoids the decoding crash problem caused by codec desynchronization, ensures the consistency of the decoder and encoder, and ensures the correct decoding of the attribute information of the point cloud slice.
Smart Images

Figure CN2024086840_16102025_PF_FP_ABST
Abstract
Description
Attribute decoding, encoding method, decoder and encoder of point cloud TECHNICAL FIELD
[0001] Embodiments of the present application relate to the technical field of point cloud coding, and particularly relate to an attribute decoding, encoding method, decoder and encoder of point cloud. BACKGROUND
[0002] In a Geometry-based Point Cloud Compression (G-PCC) encoder framework, geometry information and attribute information of a point cloud are encoded separately. After geometry encoding is completed, the geometry information is reconstructed, and the encoding of the attribute information depends on the reconstructed geometry information.
[0003] In the attribute encoding process, if syntax elements are not properly set, out-of-sync coding and decoding may occur, thereby causing decoding failure.
[0004] SUMMARY
[0005] Embodiments of the present application provide an attribute decoding, encoding method, decoder and encoder of point cloud. The technical solution is as follows:
[0006] In one aspect, the present application provides an attribute decoding method of point cloud, comprising:
[0007] obtaining a first syntax element in an attribute parameter set of a point cloud sequence from a bitstream;
[0008] determining, according to a value of the first syntax element, a RAHT (Region Adaptive Hierarchical Transform) transform layer number of RAHT attribute inter-frame prediction enabled by the point cloud sequence;
[0009] performing attribute decoding on a point cloud slice based on the RAHT transform layer number.
[0010] In another aspect, the present application provides an attribute encoding method of point cloud, comprising:
[0011] determining a first syntax element in an attribute parameter set of a point cloud sequence;
[0012] determining, according to a value of the first syntax element, a RAHT transform layer number of RAHT attribute inter-frame prediction enabled by the point cloud sequence;
[0013] performing attribute encoding on a point cloud slice based on the RAHT transform layer number.
[0014] In another aspect, the present application provides an attribute decoding method of point cloud, comprising:
[0015] acquire a first syntax element in an attribute parameter set of a point cloud sequence and a third syntax element in an attribute block header of a point cloud slice from a bitstream;
[0016] determine a first RAHT transform layer number of RAHT attribute inter-prediction enabled for the point cloud sequence according to a value of the first syntax element;
[0017] determine a second RAHT transform layer number of RAHT attribute inter-prediction enabled for the point cloud slice according to a value of the third syntax element;
[0018] attribute decode the point cloud slice based on the first RAHT transform layer number and the second RAHT transform layer number.
[0019] In another aspect, an embodiment of the present application provides a method for attribute encoding of a point cloud, the method comprising:
[0020] determine a first syntax element in an attribute parameter set of a point cloud sequence;
[0021] determine a first RAHT transform layer number of RAHT attribute inter-prediction enabled for the point cloud sequence according to a value of the first syntax element;
[0022] determine a second RAHT transform layer number of RAHT attribute inter-prediction enabled for a point cloud slice according to the first RAHT transform layer number;
[0023] attribute encode the point cloud slice based on the second RAHT transform layer number.
[0024] In another aspect, an embodiment of the present application provides a decoder, the decoder comprising:
[0025] a decoding unit configured to acquire a first syntax element in an attribute parameter set of a point cloud sequence from a bitstream;
[0026] the decoding unit is configured to determine a RAHT transform layer number of RAHT attribute inter-prediction enabled for the point cloud sequence according to a value of the first syntax element;
[0027] the decoding unit is configured to attribute decode a point cloud slice based on the RAHT transform layer number.
[0028] In another aspect, an embodiment of the present application provides an encoder, the encoder comprising:
[0029] an encoding unit configured to determine a first syntax element in an attribute parameter set of a point cloud sequence;
[0030] The encoding unit is configured to determine, according to the value of the first syntax element, a number of RAHT transform layers of the point cloud sequence that enable RAHT attribute inter-prediction.
[0031] The encoding unit is configured to perform attribute encoding on the point cloud slice based on the number of RAHT transform layers.
[0032] In another aspect, an embodiment of the present application provides a decoder, which comprises:
[0033] A decoding unit is configured to acquire, from a bitstream, a first syntax element in an attribute parameter set of a point cloud sequence and a third syntax element in an attribute block header of a point cloud slice.
[0034] The decoding unit is configured to determine, according to the value of the first syntax element, a first number of RAHT transform layers of the point cloud sequence that enable RAHT attribute inter-prediction.
[0035] The decoding unit is configured to determine, according to the value of the third syntax element, a second number of RAHT transform layers of the point cloud slice that enable RAHT attribute inter-prediction.
[0036] The decoding unit is configured to perform attribute decoding on the point cloud slice based on the first number of RAHT transform layers and the second number of RAHT transform layers.
[0037] In another aspect, an embodiment of the present application provides an encoder, which comprises:
[0038] An encoding unit is configured to determine a first syntax element in an attribute parameter set of a point cloud sequence.
[0039] The encoding unit is configured to determine, according to the value of the first syntax element, a first number of RAHT transform layers of the point cloud sequence that enable RAHT attribute inter-prediction.
[0040] The encoding unit is configured to determine, according to the first number of RAHT transform layers, a second number of RAHT transform layers of a point cloud slice that enable RAHT attribute inter-prediction.
[0041] The encoding unit is configured to perform attribute encoding on the point cloud slice based on the second number of RAHT transform layers.
[0042] In another aspect, an embodiment of the present application provides a decoder, which comprises a memory and a processor, wherein the memory is configured to store a computer program running on the processor; and the processor is configured to execute, when the computer program runs, a point cloud attribute decoding method according to any one of the above aspects.
[0043] In another aspect, an encoder is provided, which includes a memory and a processor, the memory is configured to store a computer program running on the processor; and the processor is configured to execute the computer program to perform the attribute encoding method of the point cloud according to any one of the above aspects.
[0044] In another aspect, a non-volatile computer readable storage medium storing a bitstream is provided, the bitstream is generated by using a point cloud encoding method of an encoder, or the bitstream is decoded by using a point cloud decoding method of a decoder, wherein the point cloud encoding method includes the attribute encoding method of the point cloud according to any one of the above aspects, and the point cloud decoding method includes the attribute decoding method of the point cloud according to any one of the above aspects.
[0045] In another aspect, a computer program product is provided, which includes computer instructions stored in a computer readable storage medium, and a processor acquires the computer instructions from the computer readable storage medium, and executes the computer instructions to implement the attribute encoding method of the point cloud according to any one of the above aspects, or the attribute decoding method of the point cloud according to any one of the above aspects.
[0046] According to the scheme provided in the embodiments of the present application, the encoder determines the number of RAHT transform layers of the point cloud sequence based on the value of the first syntax element in the attribute parameter set of the point cloud sequence, and performs attribute encoding on the point cloud slices in the point cloud sequence based on the number of RAHT transform layers. In the subsequent decoding process, the decoder can obtain the inter-frame reference information consistent with the encoder side based on the number of RAHT transform layers, and then perform attribute decoding on the point cloud slices based on the inter-frame reference information, so as to ensure the synchronization of the encoding and decoding of the decoder and the encoder, and avoid the decoding crash problem caused by the decoding synchronization loss. BRIEF DESCRIPTION OF DRAWINGS
[0047] FIG. 1 shows a flow block diagram of G-PCC encoding provided by the related art;
[0048] FIG. 2 shows a flow block diagram of G-PCC decoding provided by the related art;
[0049] FIG. 3 is a schematic diagram of the RAHT transform process according to an example embodiment of the present application;
[0050] FIG. 4 is a flow chart of the attribute decoding method of the point cloud according to an example embodiment of the present application;
[0051] FIG. 5 is a schematic diagram of the RAHT tree corresponding to the point cloud slice according to an example embodiment of the present application;
[0052] FIG. 6 is a flowchart of a method for attribute decoding of a point cloud according to another example embodiment of the present application;
[0053] FIG. 7 is a flowchart of a method for attribute encoding of a point cloud according to an example embodiment of the present application;
[0054] FIG. 8 is a flowchart of a method for attribute encoding of a point cloud according to another example embodiment of the present application;
[0055] FIG. 9 is a flowchart of a method for attribute decoding of a point cloud according to another example embodiment of the present application;
[0056] FIG. 10 is a schematic diagram of a RAHT layer for enabling RAHT attribute inter- prediction indicated by asp and abh according to an example embodiment of the present application;
[0057] FIG. 11 is a schematic diagram of a RAHT layer for enabling RAHT attribute inter- prediction indicated by asp and abh according to another example embodiment of the present application;
[0058] FIG. 12 is a flowchart of a method for attribute decoding of a point cloud according to another example embodiment of the present application;
[0059] FIG. 13 is a schematic diagram of a correspondence between a RAHT layer and a prediction mode according to an example embodiment of the present application;
[0060] FIG. 14 is a flowchart of a method for attribute encoding of a point cloud according to another example embodiment of the present application;
[0061] FIG. 15 is a flowchart of a method for attribute encoding of a point cloud according to another example embodiment of the present application;
[0062] FIG. 16 is a flowchart of a method for attribute encoding of a point cloud according to another example embodiment of the present application;
[0063] FIG. 17 is a schematic diagram of a correspondence between a RAHT layer and a prediction mode according to another example embodiment of the present application;
[0064] FIG. 18 is a block diagram of an attribute decoding apparatus for a point cloud according to an example embodiment of the present application;
[0065] FIG. 19 is a block diagram of an attribute encoding apparatus for a point cloud according to an example embodiment of the present application;
[0066] FIG. 20 is a block diagram of an attribute decoding apparatus for a point cloud according to another example embodiment of the present application;
[0067] FIG. 21 is a block diagram of an attribute encoding apparatus for a point cloud according to another example embodiment of the present application;
[0068] FIG. 22 shows a structural block diagram of an encoder according to an example embodiment of the present application;
[0069] FIG. 23 shows a structural block diagram of a decoder according to an example embodiment of the present application. DETAILED DESCRIPTION
[0070] For the purpose of making the purpose, technical solutions and advantages of the present application clearer, the embodiments of the present application will be further described in detail below with reference to the drawings.
[0071] “Multiple” mentioned herein refers to two or more. “And / or” describes the association relationship of the associated objects, which means that there can be three relationships, for example, A and / or B can represent the following three cases: A exists alone, A and B exist together, and B exists alone. The character “ / ” generally represents that the associated objects before and after it are in an “or” relationship.
[0072] Referring to FIG. 1, a flow block diagram of G-PCC coding provided by the related art is shown. As shown in the flow block diagram of G-PCC coding in FIG. 1, applied to a point cloud encoder, for the point cloud data to be encoded, the point cloud data is first divided into multiple slices (point cloud slices) through slice division. In each slice, the geometry information of the point cloud and the attribute information corresponding to each point cloud are encoded separately.
[0073] In the geometry coding process, the coordinate transformation is performed on the geometry information, so that all the point clouds are contained in a bounding box, and then quantization is performed, which mainly plays a role in scaling. Due to quantization rounding, the geometry information of a part of the point clouds is the same, so whether to remove the duplicate points is determined based on the parameters, and the quantization and removal of duplicate points is also called the voxelization process. Then the bounding box is divided into an octree. In the octree-based geometry information coding process, the bounding box is equally divided into 8 sub-cubes, and the non-empty (containing points in the point cloud) sub-cubes are continuously divided into 8, until the division of the leaf node is stopped when the unit cube of 1x1x1 is obtained. The points in the leaf node are arithmetically coded to generate a binary geometry bit stream, i.e. a geometry code stream. In the triangle soup-based geometry information coding process, the octree division is also performed first, but unlike the octree-based geometry information coding, the triangle soup does not need to divide the point cloud to the unit cube with an edge length of 1x1x1, but to stop the division when the block (sub-block) edge length is W. Based on the distribution of the point cloud in each sub-block, the surface is obtained, and at most twelve vertices (intersection points) are generated by the surface and the twelve edges of the sub-block. The intersection points are arithmetically coded (surface fitting based on the intersection points) to generate a binary geometry bit stream, i.e. a geometry code stream. The intersection points are also used in the implementation of the geometry reconstruction process, and the reconstructed set information is used in the attribute coding of the point cloud.
[0074] In the attribute encoding process, after the geometry encoding completes the reconstruction of the geometry information, 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 geometry information is used to re-color the point cloud, so that the unencoded attribute information corresponds to the reconstructed geometry information. Attribute encoding is mainly performed on color information. In the color information encoding process, there are mainly two transformation methods. One is a distance-based lifting transformation depending on level of detail (LOD) division. Currently, the LOD division mainly includes two modes: distance-based LOD division (mainly for Category 1 sequences) and fixed sampling rate-based LOD division (mainly for Category 3 sequences). The other is a direct region adaptive hierarchal transform (RAHT) transformation. In these two methods, the color information is converted from the spatial domain to the frequency domain, and high-frequency coefficients (AC) and low-frequency coefficients (DC) are obtained through the transformation. The coefficients are quantized (i.e., quantized coefficients). Finally, the geometry encoding data obtained through octree division and surface fitting and the quantized coefficient processing attribute encoding data are combined through slice to sequentially encode the vertex coordinates (i.e., arithmetic encoding) of each block, and a binary attribute bitstream, i.e., an attribute code stream, is generated.
[0075] Referring to FIG. 2, a flowchart of G-PCC decoding provided by the related art is shown. As shown in the flowchart of G-PCC decoding in FIG. 2, applied to a point cloud decoder, for the obtained code stream, the geometry bitstream and the attribute bitstream in the code stream are first independently decoded. In the decoding of the geometry bitstream, the geometry information of the point cloud is obtained through arithmetic decoding-octree synthesis-surface fitting-reconstruction of geometry-inverse coordinate conversion. In the decoding of the attribute bitstream, the attribute information of the point cloud is obtained through arithmetic decoding-inverse quantization-LOD-based lifting inverse transform or RAHT-based inverse transform-inverse color conversion. Based on the geometry information and the attribute information, the three-dimensional image model of the point cloud data to be encoded is restored.
[0076] As a Haar wavelet transform, RAHT is used to transform the attribute information of the point cloud from the spatial domain to the frequency domain to reduce the correlation between the attributes. The main idea of RAHT is to transform each node in each layer in a bottom-up manner according to the octree structure (constructed based on the geometry information of the point cloud, also referred to as a RAHT tree in the attribute encoding and decoding process), and iterate until the root node of the octree.
[0077] When the Haar wavelet transform is performed based on the octree-based hierarchical structure, the attribute information is associated with the nodes of the octree, the attributes of the occupied nodes in the same parent node are recursively transformed in a bottom-up manner, the nodes in each layer are transformed from three dimensions of x, y and z, and the transformation is performed until the root node of the octree. In the hierarchical transformation process, the low-frequency coefficients obtained after the transformation of the nodes in the same layer are transmitted to the nodes in the next layer for continuous transformation, and the high-frequency coefficients are quantized and arithmetically encoded.
[0078] As shown in FIG. 3, the RAHT tree contains 4 layers. For the nodes 0 and 1 that are adjacent nodes in the 0th layer, the RAHT transform is performed on the DC coefficient DC 00 of the node 0 and the DC coefficient DC 01 of the node 1 to obtain the DC coefficient DC 10 and the AC coefficient AC 10 of the node 1 in the 1st layer. For the nodes 4 and 5 that are adjacent nodes in the 0th layer, the RAHT transform is performed on the DC coefficient DC 04 of the node 4 and the DC coefficient DC 05 of the node 5 to obtain the DC coefficient DC 12 and the AC coefficient AC 12 of the node 2 in the 1st layer. For the node 3 in the 0th layer, since the node 3 does not have adjacent nodes, the DC coefficient DC 03 of the node 3 in the 0th layer is directly taken as the DC coefficient DC 11 of the node 1 in the 1st layer.
[0079] For the nodes 0 and 1 that are adjacent nodes in the 1st layer, the RAHT transform is performed on the DC coefficient DC 10 of the node 0 and the DC coefficient DC 11 of the node 1 to obtain the DC coefficient DC 20 and the AC coefficient AC 20 of the node 0 in the 2nd layer. For the node 2 in the 1st layer, since the node 2 does not have adjacent nodes, the DC coefficient DC 12 of the node 2 in the 1st layer is directly taken as the DC coefficient DC 21 of the node 1 in the 2nd layer.
[0080] For the nodes 0 and 1 that are adjacent nodes in the 2nd layer, the RAHT transform is performed on the DC coefficient DC 20 of the node 0 and the DC coefficient DC 21 of the node 1 to obtain the DC coefficient DC 30 and the AC coefficient AC 30 of the node 0 in the 3rd layer.
[0081] In the encoding process, the encoder encodes the DC 30 , AC 30 , AC 20 , AC 10 , AC 12 coefficients into a bitstream. Correspondingly, in the decoding process, the decoder performs RAHT inverse transform from the root node of the RAHT tree based on the DC coefficients and the AC coefficients parsed from the bitstream, and thus obtains the point cloud attributes corresponding to the leaf nodes in the RAHT tree.
[0082] Based on the RAHT encoding, according to different prediction modes of the node attributes, the RAHT attribute encoding can be further divided into RAHT attribute intra prediction encoding and RAHT attribute inter prediction encoding. When the RAHT attribute intra prediction encoding is adopted, the encoder determines the attribute prediction value of the current node based on the attribute reconstruction values of the neighboring nodes corresponding to the current node in the current frame; when the RAHT attribute inter prediction encoding is adopted, the encoder determines the attribute prediction value of the current node based on the attribute reconstruction values of the homonymic nodes corresponding to the current node in the reference frame. Since the root node in the RAHT tree does not have neighboring nodes, the root node adopts the attribute inter prediction; and for other nodes in the RAHT tree, the prediction mode suitable for the node can be selected based on the geometric information of the node.
[0083] In the G-PCC attribute inter prediction encoding scheme, the coding side determines whether the attribute inter prediction encoding is enabled for a point cloud sequence (consisting of continuous point cloud frames) according to the value of the high-level syntax element attr_inter_prediction_enabled in the attribute parameter set (aps).
[0084] When the attribute inter prediction encoding is enabled for the point cloud sequence, the coding side further determines the number of RAHT transform layers for which the RAHT attribute inter prediction is enabled according to the value of the syntax element raht_inter_layer_depth_minus1 in the aps.
[0085] The raht_inter_layer_depth_minus1 is the number of RAHT transform layers for which the RAHT attribute inter prediction is enabled minus one. For example, for the RAHT tree shown in FIG. 3, when the raht_inter_layer_depth_minus1 = 2, it indicates that the nodes in the third layer, the second layer and the first layer in the RAHT tree support the RAHT attribute inter prediction, and the nodes in the zeroth layer do not support the RAHT attribute inter prediction.
[0086] In an illustrative example, the syntax structure of the aps corresponding to the point cloud sequence is shown in Table 1.
[0087] Table 1
[0088] The syntax element attr_inter_prediction_enabled is used to indicate whether attribute inter prediction is enabled. When the value of the syntax element is True, it indicates that the point cloud sequence enables attribute inter prediction, and when the value of the syntax element is False, it indicates that the point cloud sequence does not enable attribute inter prediction. The default value of the syntax element is False.
[0089] The syntax element attr_coding_type is used to indicate the attribute coding mode adopted. When the value of attr_coding_type is 0, it indicates that RAHT attribute coding is adopted.
[0090] The syntax element raht_inter_layer_depth_minus1 is used to indicate the number of RAHT transform layers supporting RAHT attribute inter prediction minus 1. For the RAHT layers within the range represented by raht_inter_layer_depth_minus1+1, the nodes in the RAHT layers support RAHT attribute inter prediction, that is, when RAHT attribute inter prediction is performed, the inter-frame reconstructed attribute information is obtained for the RAHT layers within the range.
[0091] For the RAHT layers outside the range represented by raht_inter_layer_depth_minus1+1, the nodes in the RAHT layers do not support RAHT attribute inter prediction, that is, the inter-frame reconstructed attribute information is not obtained for the RAHT transform layers outside the range.
[0092] When the value of the high-level syntax element attr_inter_prediction_enabled in the aps indicates that inter prediction coding is enabled, when attribute prediction coding is performed on the point cloud slice, the encoder determines whether attribute inter prediction coding is enabled for the current point cloud slice based on the geometric information of the point cloud slice, and transmits the syntax element slice_attr_inter_prediction to the decoder according to the determination result, so that the decoder determines whether attribute inter prediction is enabled for the current point cloud slice based on the value of slice_attr_inter_prediction.
[0093] If the attribute inter prediction is enabled for the current point cloud slice, the encoder needs to encode the number of RAHT layers in the RAHT tree corresponding to the point cloud slice that enable attribute inter prediction, and encode the indication information of the prediction mode used by the RAHT layers that enable attribute inter prediction into the bitstream. Wherein, the number of RAHT layers in the RAHT tree corresponding to the point cloud slice that enable attribute inter prediction and the prediction mode used by the RAHT layers that enable attribute inter prediction are indicated by the value of the syntax element layer_code_depth in the attribute brick header (abh) corresponding to the point cloud slice.
[0094] In an illustrative example, the syntax structure of the abh corresponding to the point cloud slice is shown in Table 2.
[0095] Table 2
[0096] Wherein, the syntax element attr_inter_prediction_enabled is used to indicate whether the attribute inter prediction is enabled. When the value of the syntax element is True, it indicates that the attribute inter prediction is enabled for the point cloud slice, and when the value of the syntax element is False, it indicates that the attribute inter prediction is not enabled for the point cloud slice, and the default value of the syntax element is False.
[0097] The syntax element raht_inter_layer_code_enabled is used to indicate whether the RAHT-based attribute inter prediction coding is enabled. When the value of the syntax element is True, it indicates that the RAHT-based attribute inter prediction is enabled for the point cloud slice, and when the value of the syntax element is False, it indicates that the RAHT-based attribute inter prediction is not enabled for the point cloud slice, and the default value of the syntax element is False.
[0098] The syntax element layer_code_depth is used to indicate the number of RAHT layers in the RAHT tree that enable attribute inter prediction coding in the case of enabling RAHT-based attribute inter prediction. When depth < layer_code_depth, the RAHT attribute inter prediction can be enabled, and when depth ≥ layer_code_depth, the RAHT attribute inter prediction cannot be enabled. Generally, the value of layer_code_depth can be the number of layers of the RAHT tree - 1 (because the root node in the RAHT tree can only be intra predicted, so there is no need to encode the prediction mode).
[0099] As can be seen from the syntax structure, there are two syntax elements in the aps and abh in the G-PCC: raht_inter_layer_depth_minus1 and layer_code_depth. The settings of the two syntax elements can include the following two cases:
[0100] 1. raht_inter_layer_depth_minus1 + 1 > layer_code_depth.
[0101] 2. raht_inter_layer_depth_minus1 + 1 < layer_code_depth.
[0102] In the first case, when decoding the attribute information of the current point cloud slice, the decoder can obtain the inter-reconstructed attribute information of the RAHT layer in the range represented by raht_inter_layer_depth_minus1 + 1 according to raht_inter_layer_depth_minus1 + 1, so the decoder can determine whether the current RAHT layer adopts inter-prediction or intra-prediction according to the value of slice_raht_layer_code_mode[depth], and when it is determined that inter-prediction is adopted, the attribute inter-prediction is performed based on the obtained inter-reconstructed attribute information.
[0103] In the second case, since the decoder does not obtain the inter-reconstructed attribute information of the RAHT layer in the range when depth > raht_inter_layer_depth_minus1 + 1, when the decoder determines whether the current RAHT layer adopts inter-prediction or intra-prediction according to the value of slice_raht_layer_code_mode[depth], and when it is determined that inter-prediction is adopted, the decoder cannot obtain the inter-reconstructed attribute information, which causes the decoder to crash, and thus the decoder cannot correctly decode the attribute information of the current point cloud slice.
[0104] As can be seen from the above analysis, if the syntax elements in the aps and abh are not properly set, the encoder and the decoder can be out of synchronization, which causes the decoder to crash.
[0105] In order to avoid the above-mentioned problem of codec desynchronization, in the attribute coding scheme of the point cloud provided in the embodiments of the present application, the number of RAHT transform layers enabled for RAHT attribute inter-frame prediction in the point cloud slice is referred to the number of RAHT transform layers enabled for RAHT attribute inter-frame prediction in the point cloud sequence. When encoding the prediction mode of the RAHT layer of the point cloud slice, the number of layers for which the prediction mode needs to be encoded is determined according to the value of the syntax element raht_inter_layer_depth_minus1 in the aps, so that the decoder can be consistent with the encoder in the inter-frame reconstruction of attribute information, thereby ensuring the synchronization of the encoder and the decoder, and improving the decoding collapse of the decoder.
[0106] The attribute decoding process of the point cloud is described below.
[0107] Referring to FIG. 4, a flowchart of an attribute decoding method of a point cloud provided in an example embodiment of the present application is shown. The method can include the following steps:
[0108] Step 401, a first syntax element in an attribute parameter set of a point cloud sequence is obtained from a bitstream.
[0109] The high-level syntax elements of the attribute parameter set are key parts in the G-PCC algorithm, and directly affect the compression efficiency and quality of the attribute. By designing and adjusting the values of these high-level syntax elements, effective compression of the point cloud attribute can be achieved while maintaining the required data precision and quality. In actual applications, the values of the high-level syntax elements in the attribute parameter set can be selected and adjusted according to the specific point cloud data characteristics and application requirements to achieve the best compression effect.
[0110] In some embodiments, the attribute parameter set of the point cloud sequence can include the following key syntax elements:
[0111] Attribute Type: indicates the type of the point cloud attribute, such as color, intensity, reflectivity or other attributes.
[0112] Quantization Parameters: define the quantization level of the attribute, including quantization step, quantization range, etc. The setting of the quantization parameters affects the precision and compression ratio of the compressed data.
[0113] Coding Mode: determines the coding mode of the attribute, such as prediction coding, dictionary coding or other advanced coding techniques. Different coding modes are suitable for different point cloud data characteristics and compression requirements.
[0114] Prediction Parameters: if prediction coding is used, the parameters of the prediction model need to be defined, such as prediction mode, prediction range, etc.
[0115] Entropy Coding Parameters: After attribute encoding, entropy coding is used to further compress data. Optional, including the selection of entropy coding tables, initial probability model, etc.
[0116] Context Model: For certain attributes, it may be necessary to consider their spatial or temporal context. Context models can improve compression efficiency, especially when attributes have a certain degree of correlation.
[0117] Of course, in addition to the above-mentioned syntax elements, the attribute parameter set may also include more or fewer syntax elements. The embodiment of the present application does not limit the specific syntax elements included in the attribute parameter set.
[0118] In some embodiments, the decoder obtains a first syntax element related to the prediction parameter from the property parameter set, where the first syntax element is a syntax element related to the number of RAHT layers in the RAHT tree for which inter-frame prediction is enabled.
[0119] In a possible design, the first syntax element is raht_inter_layer_depth_minus1, that is, the value of the first syntax element is the number of RAHT layers using inter-frame prediction in the RAHT tree minus one.
[0120] In a possible implementation, the value of the first syntax element can be customized based on the compression efficiency and compression quality requirements of the point cloud. The embodiment of the present application does not limit the specific setting method of the value of the first syntax element.
[0121] In some embodiments, when the values of the syntax element attr_inter_prediction_enabled and the syntax element attr_coding_type in the attribute parameter set (aps) indicate that the point cloud sequence is encoded using the RAHT attribute, the decoder obtains the first syntax element in the attribute parameter set.
[0122] In an illustrative example, when the value of attr_inter_prediction_enabled is True and the value of attr_coding_type is 0, the decoder obtains the first syntax element in the attribute parameter set.
[0123] Step 402: Determine the number of RAHT transform layers for enabling RAHT attribute inter-frame prediction for the point cloud sequence according to the value of the first syntax element.
[0124] The decoder further determines the number of RAHT transform layers for enabling RAHT attribute inter-frame prediction for the point cloud sequence based on the value of the first syntax element.
[0125] In some embodiments, when the first syntax element is raht_inter_layer_depth_minus1, the decoder determines the number of RAHT transform layers of the point cloud sequence that enables RAHT attribute inter-prediction of the RAHT transform = raht_inter_layer_depth_minus1 + 1.
[0126] Of course, when the value of the first syntax element is represented in other ways, the decoder can determine the number of RAHT transform layers of the point cloud sequence that enables RAHT attribute inter-prediction in other ways. For example, when the first syntax element is raht_inter_layer_depth (i.e., not minus 1), the decoder can determine the value of the first syntax element as the number of RAHT transform layers of the point cloud sequence that enables RAHT attribute inter-prediction. The embodiments of the present application do not limit the specific way of determining the number of RAHT transform layers based on the value of the first syntax element.
[0127] At step 403, the attribute of the point cloud slice is decoded based on the number of RAHT transform layers.
[0128] Unlike in the related art, the decoder determines the number of layers of the current point cloud slice that enables RAHT attribute inter-prediction based on the syntax element layer_code_depth in abh. In the embodiments of the present application, the decoder determines the number of layers of the current point cloud slice that enables RAHT attribute inter-prediction based on the number of RAHT transform layers determined based on the first syntax element, and then decodes the attribute of the current point cloud slice.
[0129] In a possible implementation, since the decoder no longer determines the prediction mode of the RAHT layer based on the syntax element layer_code_depth, the syntax element encoding of layer_code_depth in abh can be removed, thereby reducing the size of the code stream.
[0130] In an illustrative example, based on the syntax structure shown in Table 2, the syntax structure of abh in the embodiments of the present application can be as shown in Table 3.
[0131] Table 3
[0132] In the decoding process, the decoder obtains the reconstructed attribute information of the reference frame based on the point cloud sequence and the RAHT transform layer number (raht_inter_layer_depth_minus1+1) of the RAHT attribute inter-frame prediction enabled. After the scheme provided in the embodiment is used, the decoder determines the prediction mode used by the RAHT layer supporting the RAHT attribute inter-frame prediction enabled based on the RAHT transform layer number, so that the decoder can obtain the reconstructed attribute information of the corresponding reference frame in the case that the prediction mode used by the RAHT layer is inter-frame prediction, thereby ensuring that the decoder and the encoder can obtain consistent reconstructed attribute information of the reference frame, ensuring that the decoder can correctly parse the attributes of the reconstructed current point cloud slice, and avoiding decoding collapse.
[0133] In an illustrative example, when the value of the syntax element raht_inter_layer_depth_minus1 in the aps is 2, and the value of the syntax element layer_code_depth in the abh is 4, and the RAHT tree of the point cloud slice is as shown in FIG. 5, the decoder obtains the reconstructed attribute information of the 2nd, 3rd and 4th layers in the reference frame based on raht_inter_layer_depth_minus1+1. Based on the layer_code_depth in the abh, the decoder obtains the prediction modes corresponding to the 0th, 1st, 2nd and 3rd layers in the RAHT tree (the 4th layer does not need to be encoded because it can only use inter-frame prediction), and if the prediction mode of the 0th or 1st layer is inter-frame prediction, decoding collapse will occur because the reconstructed attribute information of the 0th and 1st layers in the reference frame is not obtained.
[0134] After the scheme provided in the embodiment is used, the decoder obtains the prediction modes corresponding to the 2nd and 3rd layers in the RAHT tree. Because the reconstructed attribute information of the 2nd, 3rd and 4th layers can be obtained, the decoder can obtain the reconstructed attribute information when the prediction modes of the 2nd and 3rd layers are inter-frame prediction, thereby completing inter-frame prediction.
[0135] As to the specific process of attribute decoding, in a possible implementation, as shown in FIG. 6, the step 403 can include the following steps:
[0136] Step 403A, in the case that the index of the RAHT layer is less than the index of the RAHT root node layer, and the index of the RAHT layer is greater than the difference between the index of the RAHT root node layer and the RAHT transform layer number, obtaining the indication information of the prediction mode corresponding to the RAHT layer from the code stream, the prediction mode being inter-frame prediction or intra-frame prediction.
[0137] When decoding the point cloud slice, the decoder first constructs the RAHT tree corresponding to the point cloud slice based on the reconstruction geometry information of the point cloud slice. In the case where the RAHT tree contains n RAHT layers, the index of the RAHT root node layer is n-1, denoted as RahtRootLvl = RahtLvlCnt-1.
[0138] For the RAHT layer in the RAHT tree, when determining the prediction mode used by the RAHT layer, the decoder obtains the index of the RAHT layer, and determines whether the RAHT layer enables RAHT attribute inter-prediction based on the size relationship between the index and the index of the RAHT root node layer, and the size relationship between the index and the difference between the index of the RAHT root node layer and the number of RAHT transform layers.
[0139] When the index of the RAHT layer is less than the index of the RAHT root node layer, and the index of the RAHT layer is greater than the difference between the index of the RAHT root node layer and the number of RAHT transform layers, it indicates that the RAHT layer is not the layer where the RAHT root node is located (the prediction mode of the RAHT root node does not need to be encoded), and is located in the range of the RAHT layer indicated by aps to enable RAHT attribute inter-prediction, so the decoder needs to obtain the prediction mode corresponding to the RAHT layer from the code stream.
[0140] In some embodiments, when the index of the RAHT layer is RahtLvl, the index of the RAHT root node layer is RahtRootLvl, and the first syntax element in aps is raht_inter_layer_depth_minus1, if RahtLvl < RahtRootLvl and RahtLvl > RahtRootLvl-(raht_inter_layer_depth_minus1+1), the prediction mode corresponding to the RAHT layer is obtained from the code stream.
[0141] Illustratively, as shown in FIG. 5, when RahtRootLvl = 4 and raht_inter_layer_depth_minus1 = 3, if RahtLvl < 4 and RahtLvl > 4-(3+1), i.e., RahtLvl = 1, 2, 3, the decoder obtains the prediction mode corresponding to the RAHT layer from the code stream.
[0142] As to the way of obtaining the prediction mode, in a possible implementation, the prediction mode array corresponding to the point cloud slice is included in the bitstream, the length of the prediction mode array is consistent with the raht_inter_layer_depth_minus1, and the prediction mode array includes the indication information of the prediction mode corresponding to the different RAHT layers. The encoder obtains the indication information of the prediction mode corresponding to the RAHT layer from the array based on slice_raht_layer_code_mode[depth].
[0143] Based on the value of depth in the array, the decoder can determine the indication information of the prediction mode of the corresponding RAHT layer, where Rahtlvl = RahtRootLvl-depth-1.
[0144] Illustratively, in the RAHT tree shown in FIG. 5, when the inter prediction is represented by 1 and the intra prediction is represented by 0, the prediction mode array [1, 1, 0] indicates that the prediction modes of the three RAHT layers in the RAHT tree are encoded into the bitstream. Wherein, the value 1 corresponding to depth = 0 indicates that the prediction mode of the third RAHT layer is inter prediction, the value 1 corresponding to depth = 1 indicates that the prediction mode of the second RAHT layer is inter prediction, and the value 0 corresponding to depth = 2 indicates that the prediction mode of the first RAHT layer is inter prediction.
[0145] In step 403B, the attribute of the RAHT layer is decoded based on the prediction mode indicated by the indication information.
[0146] In some embodiments, the prediction mode is used to indicate the priority of the prediction mode adopted by the node in the RAHT layer.
[0147] In a possible implementation, when the prediction mode is inter prediction, the priority of the prediction mode adopted by the node in the RAHT layer is: inter prediction > intra prediction > no prediction. When the prediction mode is intra prediction, the priority of the prediction mode adopted by the node in the RAHT layer is: intra prediction > no prediction.
[0148] In some embodiments, in the case where the prediction mode corresponding to the RAHT layer is inter prediction, for the node in the RAHT layer, the decoder detects whether the node satisfies the inter prediction condition, and in the case where the node satisfies the inter prediction condition, the attribute of the node is inter predicted, and the attribute is further decoded based on the inter prediction result of the node.
[0149] If the node does not satisfy the inter prediction condition, it is detected whether the node satisfies the intra prediction condition, and in the case where the node satisfies the intra prediction condition, the attribute of the node is intra predicted, and the attribute is further decoded based on the intra prediction result of the node.
[0150] If the node does not satisfy the intra prediction condition, the node is attribute-decoded in a non-predictive inverse transform manner.
[0151] In some embodiments, in case that the prediction mode corresponding to the RAHT layer is inter prediction, for a node in the RAHT layer, the decoder detects whether the node satisfies an inter prediction condition, and in case that the node satisfies the inter prediction condition, attribute-inter-predicts the node, and further attribute-decodes the node based on the attribute inter prediction result of the node.
[0152] If the node does not satisfy the intra prediction condition, the node is attribute-decoded in a non-predictive inverse transform manner.
[0153] Optionally, the inter prediction condition includes that a collocated node of the node exists in a reference frame of the current frame. Correspondingly, when attribute-inter-predicting the node, the decoder determines the attribute prediction value of the node based on the reconstructed attribute information of the collocated node. In other words, in case that the prediction mode is inter prediction, the attribute prediction value of the node in the RAHT layer is predicted based on the attribute reconstructed value of the collocated node of the node in the reference frame.
[0154] Optionally, the intra prediction condition includes that the number of neighboring nodes of the node in the current frame is greater than a first threshold (such as 6), and the number of neighboring nodes of the parent node of the node is greater than a second threshold (such as 2). Correspondingly, when attribute-intra-predicting the node, the decoder determines the attribute reconstructed value of the node by linear fitting based on the reconstructed attribute information of the neighboring nodes (6 coplanar nodes and 12 collinear nodes) of the node in the current frame. In other words, in case that the prediction mode is intra prediction, the attribute prediction value of the node in the RAHT layer is predicted based on the attribute reconstructed value of the neighboring nodes of the node in the current frame.
[0155] Regarding the specific process of attribute decoding, in one possible implementation, the decoder determines the attribute prediction value of the node in the RAHT layer based on the prediction mode indicated by the indication information, and thereby reconstructs the node attribute of the node based on the attribute prediction value of the node and the transform coefficient residual obtained by inverse quantization. The transform coefficient residual is the residual between the first transform coefficient obtained by transforming the attribute prediction value and the second transform coefficient obtained by transforming the node attribute of the node, and the transform coefficient parameter is determined by the encoding end and encoded into the code stream.
[0156] Optionally, the transform coefficient is an AC coefficient obtained by RAHT transforming the attribute of the node, and the transform coefficient residual is obtained by subtracting the first AC coefficient from the second AC coefficient.
[0157] Optionally, the decoder obtains the quantized transform coefficient residual by entropy decoding the bitstream. The quantized transform coefficient residual is dequantized to obtain the transform coefficient residual.
[0158] In some embodiments, in the process of reconstructing the node attribute, the decoder transforms the attribute reconstruction value to obtain the first transform coefficient, and determines the second transform coefficient based on the first transform coefficient and the transform coefficient residual. The node attribute of the node is reconstructed by inverse transforming the second transform coefficient.
[0159] It should be noted that the inter prediction condition, the intra prediction condition, the inter prediction decoding process, the intra prediction decoding process and the non-prediction only inverse transform decoding process can follow the existing mature decoding scheme, and the embodiments of the present application do not limit this.
[0160] Step 403C, in the case where the index of the RAHT layer is less than or equal to the difference between the RAHT root node layer index and the RAHT transform layer number, a second syntax element in the attribute parameter set is obtained, and the value of the second syntax element is used to indicate whether prediction is used.
[0161] When the index of the RAHT layer is less than or equal to the difference between the RAHT root node layer index and the RAHT transform layer number, it indicates that the RAHT layer is not the layer where the RAHT root node is located (the prediction mode of the RAHT root node does not need to be encoded), and is outside the range of the RAHT layer where the RAHT attribute inter prediction is enabled indicated by the aps. Therefore, the decoder does not obtain the indication information of the prediction mode corresponding to the RAHT layer from the bitstream.
[0162] In a possible implementation, the aps of the point cloud sequence includes a second syntax element, and the value of the second syntax element is used to indicate whether prediction is used. For the RAHT layer whose index is less than or equal to the difference between the RAHT root node layer index and the RAHT transform layer number, the decoder determines whether prediction is used for the RAHT layer.
[0163] In some embodiments, the second syntax element is raht_prediction_enabled, and when the value of raht_prediction_enabled is True, it indicates that prediction is used, and when the value of raht_prediction_enabled is False, it indicates that prediction is not used.
[0164] In some embodiments, the prediction mode includes intra prediction or other possible prediction modes, and the embodiments do not limit this.
[0165] Step 403D, in the case where the value of the second syntax element indicates that prediction is used, the RAHT layer is attribute decoded by intra prediction.
[0166] In a possible implementation, in the case of using prediction, for a node in the RAHT layer, the decoder detects whether the node satisfies an intra prediction condition. If the intra prediction condition is satisfied, the decoder performs intra attribute prediction on the node, and further performs attribute decoding based on the prediction result of the attribute of the node.
[0167] If the intra prediction condition is not satisfied, the decoder performs attribute decoding on the node in a manner of not predicting and only inverse transforming.
[0168] For example, as shown in FIG. 5, when RahtRootLvl is 4 and raht_inter_layer_depth_minus1 is 3, if RahtLvl is less than or equal to 4-(3+1), that is, RahtLvl is 0, the decoder determines that the RAHT layer does not support enabling inter prediction. When the value of raht_prediction_enabled in the aps is True, the decoder determines that the RAHT layer supports using prediction.
[0169] In step 403E, in the case where the value of the second syntax element indicates that prediction is not used, the RAHT layer is not decoded in a manner of prediction.
[0170] In a possible implementation, in the case of not using prediction, for a node in the RAHT layer, the decoder performs attribute decoding on the node in a manner of not predicting and only inverse transforming.
[0171] For example, as shown in FIG. 5, when RahtRootLvl is 4 and raht_inter_layer_depth_minus1 is 3, if RahtLvl is less than or equal to 4-(3+1), that is, RahtLvl is 0, the decoder determines that the RAHT layer does not support enabling inter prediction. When the value of raht_prediction_enabled in the aps is False, the decoder determines that the RAHT layer does not support using prediction, and thus the attribute of the node in the RAHT layer is obtained only by inverse transforming.
[0172] In this embodiment, since there is redundancy between raht_inter_layer_depth_minus1 in the aps and layer_code_depth in the abh, after the coding of layer_code_depth is removed, the redundancy of high-level syntax elements in the code stream can be reduced while ensuring synchronization between the encoding and decoding ends.
[0173] The decoder determines whether the prediction mode of the RAHT layer is encoded into the code stream based on the index of the RAHT layer in the RAHT tree, the RAHT root node layer index, and the number of RAHT transform layers of the point cloud sequence starting RAHT attribute inter-prediction, and when the prediction mode of the RAHT layer is encoded into the code stream, parses the prediction mode of the RAHT layer from the code stream, and further performs attribute decoding based on the prediction mode; when the prediction mode of the RAHT layer is encoded into the code stream, determines the decoding mode used by the RAHT layer according to the third syntax element in the aps, and ensures the consistency of the prediction modes used by the encoding and decoding sides.
[0174] The attribute encoding process of the point cloud is described below.
[0175] Referring to FIG. 7, a flowchart of an attribute encoding method of a point cloud provided by an example embodiment of the present application is shown. The method can include the following steps:
[0176] Step 701, determining a first syntax element in an attribute parameter set of a point cloud sequence.
[0177] In some embodiments, the encoder obtains the first syntax element related to the prediction parameter from the attribute parameter set, and the first syntax element is a syntax element related to the number of RAHT layers using inter-prediction in the RAHT tree.
[0178] In a possible design, the first syntax element is raht_inter_layer_depth_minus1, that is, the value of the first syntax element is the number of RAHT layers using inter-prediction in the RAHT tree minus 1.
[0179] In a possible implementation, the value of the first syntax element can be set based on the compression efficiency of the point cloud and the compression quality requirement. The embodiments of the present application do not limit the specific setting method of the value of the first syntax element.
[0180] In some embodiments, when the values of the syntax element attr_inter_prediction_enabled and the syntax element attr_coding_type in the attribute parameter set (aps) indicate that the point cloud sequence uses RAHT attribute encoding, the decoder obtains the first syntax element in the attribute parameter set.
[0181] In an illustrative example, when the value of attr_inter_prediction_enabled is True and the value of attr_coding_type is 0, the decoder obtains the first syntax element in the attribute parameter set.
[0182] At step 702, the RAHT transform layer number of the point cloud sequence enabled RAHT attribute inter-prediction is determined according to the value of the first syntax element.
[0183] According to the value of the first syntax element, the encoder further determines the RAHT transform layer number of the point cloud sequence enabled RAHT attribute inter-prediction.
[0184] In some embodiments, when the first syntax element is raht_inter_layer_depth_minus1, the encoder determines that the RAHT transform layer number of the point cloud sequence enabled RAHT attribute inter-prediction is raht_inter_layer_depth_minus1+1.
[0185] Of course, when the value of the first syntax element adopts other representation manners, the encoder can determine the RAHT transform layer number of the point cloud sequence enabled RAHT attribute inter-prediction in other manners. For example, when the first syntax element is raht_inter_layer_depth (i.e., not minus one), the encoder can determine the value of the first syntax element as the RAHT transform layer number of the point cloud sequence enabled RAHT attribute inter-prediction. The embodiments of the present application do not limit the specific manner of determining the RAHT transform layer number based on the value of the first syntax element.
[0186] At step 703, the point cloud slice is attribute-encoded based on the RAHT transform layer number.
[0187] In the related art, in the case that the point cloud sequence enables RAHT attribute inter-prediction, the encoder constructs the RAHT tree corresponding to the point cloud slice based on the geometric information, and determines the value of the syntax element layer_code_depth in abh (usually the layer number of the RAHT tree minus one), i.e., the layer number of the current point cloud slice enabled RAHT attribute inter-prediction, and encodes the indication information of the prediction mode adopted by each RAHT layer into the bitstream.
[0188] In the embodiments of the present application, in order to ensure that the decoder can obtain the reconstructed attribute information of the reference frame of the encoder side threshold, the encoder does not need to encode the syntax element layer_code_depth in abh, and does not encode the indication information of the prediction mode corresponding to the RAHT layer into the bitstream according to the value of layer_code_depth, but determines which RAHT layers in the RAHT tree support the RAHT attribute inter-prediction encoding based on the RAHT transform layer number, and then encodes the indication information of the prediction mode corresponding to these RAHT layers into the bitstream.
[0189] In a possible implementation, for a RAHT layer in the RAHT tree, the encoder determines, based on the number of RAHT transform layers and the index of the RAHT layer, whether the RAHT layer enables RAHT attribute inter-frame prediction, and in the case of enabling, determines a prediction mode corresponding to the RAHT layer, encodes indication information of the prediction mode into the bitstream, and performs attribute encoding on nodes in the RAHT layer based on the prediction mode, and encodes the attribute encoding data into the bitstream. The prediction mode can include inter-frame prediction and intra-frame prediction.
[0190] In the case where the RAHT layer does not enable RAHT attribute inter-frame prediction, the encoder does not need to encode the indication information of the prediction mode of the RAHT layer into the bitstream, and only needs to encode the attribute encoding data into the bitstream.
[0191] Optionally, the encoder can determine the prediction mode corresponding to the RAHT layer according to the geometric information of the RAHT layer. The present application does not limit the specific manner of determining the prediction mode corresponding to the RAHT layer.
[0192] In an illustrative example, when the RAHT tree corresponding to the point cloud slice is as shown in FIG. 5, the encoder determines, according to the RAHT tree, that the value of layer_code_depth is 4. The encoder determines, based on layer_code_depth, the prediction modes corresponding to the 0th, 1st, 2nd and 3rd layers in the RAHT tree (the 4th layer does not need to be encoded because it can only use inter-frame prediction), encodes the indication information of the prediction modes corresponding to the 0th, 1st, 2nd and 3rd layers into the bitstream, and performs attribute encoding on the point cloud slice based on the prediction modes corresponding to the RAHT layers.
[0193] Because the decoder performs attribute decoding based on raht_inter_layer_depth_minus1+1 to obtain the reconstructed attribute information of the 2nd, 3rd and 4th layers in the reference frame, and does not obtain the reconstructed attribute information of the 0th and 1st layers in the reference frame, if the prediction mode of the 0th or 1st layer is inter-frame prediction, the decoder will fail to obtain the reconstructed attribute information of the 0th and 1st layers in the reference frame, resulting in decoding crash.
[0194] After the scheme provided in the present application is adopted, the encoder determines, based on raht_inter_layer_depth_minus1+1, that the RAHT layers of the 2nd, 3rd and 4th layers enable RAHT attribute inter-frame prediction, and encodes the indication information of the prediction modes corresponding to the 2nd and 3rd layers into the bitstream.
[0195] Correspondingly, in the attribute decoding process, the decoder obtains the prediction mode corresponding to the 2nd and 3rd layers in the RAHT tree from the bitstream. Since the reconstructed attribute information of the 2nd, 3rd and 4th layers can be obtained, when the prediction mode of the 2nd and 3rd layers is inter prediction, the decoder can obtain the reconstructed attribute information, thereby completing the inter prediction, and then completing the attribute decoding based on the intra prediction result.
[0196] As to the specific process of attribute encoding, in a possible implementation, as shown in FIG. 8, the step 703 can include the following steps:
[0197] In a case where the index of the RAHT layer is less than the index of the RAHT root node layer and the index of the RAHT layer is greater than the difference between the index of the RAHT root node layer and the number of RAHT transform layers, the prediction mode corresponding to the RAHT layer is determined, and the prediction mode is inter prediction or intra prediction.
[0198] When encoding the point cloud slice, the encoder first constructs the RAHT tree corresponding to the point cloud slice based on the reconstructed geometry information of the point cloud slice. In a case where the RAHT tree contains n layers of RAHT layers, the index of the RAHT root node layer is n-1, which is represented as RahtRootLvl = RahtLvlCnt-1.
[0199] For the RAHT layer in the RAHT tree, when determining the prediction mode used for attribute encoding of the RAHT layer, the encoder obtains the index of the RAHT layer, and determines whether the RAHT attribute inter prediction is enabled for the RAHT layer based on the size relationship between the index and the index of the RAHT root node layer, and the size relationship between the index and the difference between the index of the RAHT root node layer and the number of RAHT transform layers.
[0200] When the index of the RAHT layer is less than the index of the RAHT root node layer and the index of the RAHT layer is greater than the difference between the index of the RAHT root node layer and the number of RAHT transform layers, it indicates that the RAHT layer is not the layer where the RAHT root node is located (the prediction mode of the RAHT root node does not need to be encoded), and is within the range of the RAHT layers indicated by aps to enable the RAHT attribute inter prediction, so the encoder needs to encode the indication information of the prediction mode corresponding to the RAHT layer into the bitstream.
[0201] In some embodiments, when the first syntax element in the aps is raht_inter_layer_depth_minus1, and the index of the RAHT layer is RahtLvl, the index of the RAHT root node layer is RahtRootLvl, if RahtLvl < RahtRootLvl and RahtLvl > RahtRootLvl - (raht_inter_layer_depth_minus1 + 1), the encoder needs to encode the indication information of the prediction mode corresponding to the RAHT layer into the bitstream.
[0202] For example, as shown in FIG. 5, when RahtRootLvl = 4 and raht_inter_layer_depth_minus1 = 3, the encoder needs to encode the prediction mode of the RAHT layer with RahtLvl < 4 and RahtLvl > 4 - (3 + 1), i.e., the encoder needs to encode the indication information of the prediction mode of the first, second and third RAHT layers into the bitstream.
[0203] As to the manner of determining the prediction mode corresponding to the RAHT layer, in a possible implementation, the encoder can determine the prediction mode corresponding to the RAHT layer based on the data characteristics (including spatial distribution, attribute variation law, etc.) of the nodes in the RAHT layer, the correlation between the nodes in the RAHT layer, the correlation between the nodes in the RAHT layer between consecutive frames, compression efficiency, calculation complexity, etc. The embodiments of the present application do not limit this.
[0204] In step 703B, the RAHT layer is attribute-encoded based on the prediction mode.
[0205] In some embodiments, the prediction mode is used to indicate the priority of the prediction manner adopted by the nodes in the RAHT layer.
[0206] In a possible implementation, when the prediction mode is inter-prediction, the priority of the prediction manner adopted by the nodes in the RAHT layer is: inter-prediction > intra-prediction > no prediction. When the prediction mode is intra-prediction, the priority of the prediction manner adopted by the nodes in the RAHT layer is: intra-prediction > no prediction.
[0207] In some embodiments, in the case where the prediction mode corresponding to the RAHT layer is inter-prediction, for the nodes in the RAHT layer, the encoder detects whether the nodes satisfy the inter-prediction condition, and in the case where the nodes satisfy the inter-prediction condition, attribute-inter-predicts the nodes, and further attribute-encodes based on the inter-prediction result of the nodes.
[0208] If the node does not satisfy the inter-frame prediction condition, the encoder detects whether the node satisfies an intra-frame prediction condition, and performs attribute intra-frame prediction on the node if the node satisfies the intra-frame prediction condition, and further performs attribute encoding based on the attribute intra-frame prediction result of the node.
[0209] If the node does not satisfy the intra-frame prediction condition, the encoder performs attribute encoding on the node in a non-predictive transform-only manner.
[0210] In some embodiments, the encoder detects whether the node satisfies an intra-frame prediction condition, and performs attribute intra-frame prediction on the node if the node satisfies the intra-frame prediction condition, and further performs attribute encoding based on the attribute intra-frame prediction result of the node, in the case that the prediction mode corresponding to the RAHT layer is intra-frame prediction.
[0211] If the node does not satisfy the intra-frame prediction condition, the encoder performs attribute encoding on the node in a non-predictive transform-only manner.
[0212] Optionally, the inter-frame prediction condition includes the existence of a collocated node of the node in a reference frame of the current frame. Correspondingly, the encoder determines the attribute prediction value of the current node based on the reconstructed attribute information of the collocated node when performing attribute inter-frame prediction. In other words, in the case that the prediction mode is inter-frame prediction, the attribute prediction value of the node in the RAHT layer is predicted based on the attribute reconstruction value of the collocated node corresponding to the node in the reference frame.
[0213] Optionally, the intra-frame prediction condition includes that the number of neighboring nodes of the node in the current frame is greater than a first threshold (such as 6), and the number of neighboring nodes of the parent node of the node is greater than a second threshold (such as 2). Correspondingly, the encoder determines the attribute prediction value of the current node by linear fitting based on the reconstructed attribute information of the neighboring nodes (6 coplanar nodes and 12 collinear nodes) of the current node when performing attribute intra-frame prediction. In other words, in the case that the prediction mode is intra-frame prediction, the attribute prediction value of the node in the RAHT layer is predicted based on the attribute reconstruction value of the neighboring nodes corresponding to the node in the current frame.
[0214] Regarding the specific process of attribute encoding, in one possible implementation, the decoder determines the attribute prediction value of the node in the RAHT layer based on the prediction mode, and determines the transform residual coefficient based on the attribute prediction value of the node and the node attribute of the node, so as to encode the transform coefficient residual.
[0215] In some embodiments, the encoder transforms the attribute prediction value to obtain a first transform coefficient, and transforms the node attribute of the node to obtain a second transform coefficient, so as to determine the residual between the first transform coefficient and the second transform coefficient as the transform coefficient residual.
[0216] Optionally, the transform coefficient is an AC coefficient obtained after the RAHT transform is performed on the attribute of the node, and the transform coefficient residual is obtained by subtracting the first AC coefficient from the second AC coefficient.
[0217] In some embodiments, after the transform coefficient residual is obtained, the encoder quantizes the transform coefficient residual, and then entropy encodes the quantized transform coefficient residual, so as to add the entropy encoding result to the bitstream.
[0218] It should be noted that the inter prediction condition, the intra prediction condition, the inter prediction encoding process, the intra prediction encoding process, and the non-prediction only transform encoding process can follow the existing mature encoding scheme, and the embodiments of the present application do not limit this.
[0219] In step 703C, the indication information of the prediction mode corresponding to the RAHT layer is encoded into the bitstream.
[0220] For the RAHT layer that enables the RAHT attribute inter prediction, the encoder needs to encode the indication information of the prediction mode corresponding to the RAHT layer into the bitstream, so that the decoding end can obtain the indication information of the prediction mode corresponding to the RAHT layer from the bitstream, and then determine how to reconstruct the attribute of the node in the RAHT layer.
[0221] In a possible implementation, the encoder encodes the indication information of the prediction mode of the RAHT layer that enables the RAHT attribute inter prediction in the point cloud slice into the bitstream in the form of a prediction mode array. The length of the prediction mode array is consistent with raht_inter_layer_depth_minus1, and the prediction mode array contains the indication information of the prediction mode corresponding to different RAHT layers.
[0222] The encoder determines the prediction mode corresponding to the RAHT layer, and sets the value of depth corresponding to the RAHT layer in the array based on the prediction mode, where Rahtlvl = RahtRootLvl-depth-1.
[0223] Illustratively, in the RAHT tree shown in FIG. 5, when the inter prediction is represented by 1 and the intra prediction is represented by 0, the encoder determines that the prediction mode of the third layer RAHT layer in the RAHT tree is inter prediction, and sets the value corresponding to depth = 0 in the array to 1; the encoder determines that the prediction mode of the second layer RAHT layer in the RAHT tree is inter prediction, and sets the value corresponding to depth = 1 in the array to 1; the encoder determines that the prediction mode of the first layer RAHT layer in the RAHT tree is intra prediction, and sets the value corresponding to depth = 2 in the array to 0, and finally obtains the prediction mode array as [1, 1, 0].
[0224] Step 703D, in the case that the index of the RAHT layer is less than or equal to the difference between the RAHT root node layer index and the RAHT transform layer number, a second syntax element in the attribute parameter set is obtained, and the value of the second syntax element is used to indicate whether prediction is used.
[0225] When the index of the RAHT layer is less than or equal to the difference between the RAHT root node layer index and the RAHT transform layer number, it indicates that the RAHT layer is not the layer where the RAHT root node is located (the prediction mode of the RAHT root node does not need to be encoded), and is outside the range of the RAHT layer where the RAHT attribute inter-frame prediction is enabled indicated by the aps, so the encoder does not need to encode the indication information of the prediction mode of the RAHT layer into the code stream, but indicates the encoding mode of the RAHT layer by other means.
[0226] In a possible implementation, the aps of the point cloud sequence includes a second syntax element, and the value of the second syntax element is used to indicate whether prediction is used. For the RAHT layer whose index is less than or equal to the difference between the RAHT root node layer index and the RAHT transform layer number, the encoder indicates whether the RAHT layer uses prediction by the value of the second syntax element.
[0227] In some embodiments, the second syntax element is raht_prediction_enabled, and when the value of raht_prediction_enabled is True, it indicates that prediction is used, and when the value of raht_prediction_enabled is False, it indicates that prediction is not used.
[0228] In some embodiments, the prediction mode includes intra prediction or other possible prediction modes, which are not limited in the present embodiment.
[0229] Step 703E, in the case that the value of the second syntax element indicates that prediction is used, the RAHT layer is attribute-encoded by intra prediction.
[0230] In a possible implementation, in the case that prediction is used, for a node in the RAHT layer, the encoder detects whether the node satisfies the intra prediction condition. If the node satisfies the intra prediction condition, the encoder performs intra attribute prediction on the node, and further performs attribute encoding based on the attribute prediction result of the node.
[0231] If the node does not satisfy the intra prediction condition, the encoder performs attribute encoding on the node in the non-prediction-only-transformation mode.
[0232] Correspondingly, the attribute encoding data of the node in the RAHT layer where the RAHT attribute inter-frame prediction is not enabled also needs to be encoded into the code stream.
[0233] Illustratively, as shown in FIG. 5, when RahtRootLvl = 4 and raht_inter_layer_depth_minus1 = 3, if RahtLvl ≤ 4-(3+1), i.e., RahtLvl = 0, the encoder determines that the RAHT layer does not support enabled inter-prediction. When the value of raht_prediction_enabled in the aps is obtained as True, the encoder attribute encodes the attributes of the nodes in the 0th RAHT layer by using the intra-prediction mode.
[0234] In step 703F, in the case where the value of the second syntax element indicates that prediction is not used, the RAHT layer is not attribute encoded by using prediction.
[0235] In a possible implementation, in the case where prediction is not used, the encoder attribute encodes the nodes in the RAHT layer by using the non-predictive transform-only mode.
[0236] Illustratively, as shown in FIG. 5, when RahtRootLvl = 4 and raht_inter_layer_depth_minus1 = 3, if RahtLvl ≤ 4-(3+1), i.e., RahtLvl = 0, the encoder determines that the RAHT layer does not support enabled inter-prediction. When the value of raht_prediction_enabled in the aps is obtained as False, it is determined that the RAHT layer does not support using prediction, and the encoder encodes the attributes of the nodes in the 0th RAHT layer by using the non-predictive transform-only mode.
[0237] In this embodiment, since there is redundancy between raht_inter_layer_depth_minus1 in the aps and layer_code_depth in the abh, after the encoding of the syntax element layer_code_depth is removed, the redundancy of the high-level syntax elements in the code stream can be reduced while ensuring synchronization between the encoding and decoding sides.
[0238] The encoder determines whether the prediction mode of the RAHT layer needs to be encoded into the code stream based on the index of the RAHT layer in the RAHT tree, the RAHT root node layer index, and the number of RAHT transform layers in which the point cloud sequence enables RAHT attribute inter-prediction, and encodes the prediction mode and the attributes of the nodes in the RAHT layer into the code stream when the prediction mode of the RAHT layer needs to be encoded into the code stream; when the prediction mode of the RAHT layer does not need to be encoded into the code stream, the encoder determines the encoding mode used by the RAHT layer according to the third syntax element in the aps, and attribute encodes by using the encoding mode, so as to ensure consistency of the prediction mode used by the encoding and decoding sides.
[0239] In the above embodiments, the syntax element layer_code_depth in abh is not coded into the bitstream, i.e., the syntax structure needs to be modified to some extent. In another possible implementation, in order to be compatible with the syntax structure in the related art, i.e., without modifying the syntax structure of abh, the syntax element layer_code_depth in abh is still coded into the bitstream, but the decoder needs to detect whether the syntax elements in aps and abh will cause decoding to crash. The following is described through exemplary embodiments.
[0240] Referring to FIG. 9, a flowchart of a method for attribute decoding of a point cloud according to another exemplary embodiment of the present disclosure is shown. The method can include the following steps.
[0241] In step 901, a first syntax element in an attribute parameter set (aps) of a point cloud sequence and a third syntax element in an attribute block header (abh) of a point cloud slice are obtained from a bitstream.
[0242] In this embodiment, in order to detect whether the syntax elements set in aps and abh will cause decoding to crash, the decoder needs to obtain the first syntax element from the attribute parameter set (aps) of the point cloud sequence and the third syntax element from the attribute block header (abh) of the point cloud slice when performing attribute decoding.
[0243] The first syntax element is a syntax element in aps related to the number of RAHT layers that enable inter prediction in the RAHT tree; and the third syntax element is a syntax element in abh related to the number of RAHT layers that enable inter prediction in the RAHT tree corresponding to the point cloud slice.
[0244] In a possible design, the first syntax element is raht_inter_layer_depth_minus1, i.e., the value of the first syntax element is the number of RAHT layers that enable inter prediction in the RAHT tree minus one; and the third syntax element is layer_code_depth, i.e., the value of the third syntax element is the number of prediction mode coding layers, which is the number of RAHT layers that enable RAHT attribute inter prediction in the RAHT tree corresponding to the point cloud slice and for which the prediction mode is coded into the bitstream.
[0245] In some embodiments, when the values of the syntax element attr_inter_prediction_enabled and the syntax element attr_coding_type in the attribute parameter set (aps) indicate that the point cloud sequence adopts RAHT attribute coding, the decoder obtains the first syntax element in the attribute parameter set and the third syntax element in the attribute block header.
[0246] Step 902, determining, according to the value of the first syntax element, a first RAHT transform layer number of the point cloud sequence enabling RAHT attribute inter-prediction.
[0247] The decoder determines, according to the value of the first syntax element, a layer number of the RAHT layer of the point cloud sequence enabling RAHT attribute inter-prediction, i.e. the first RAHT transform layer number.
[0248] In some embodiments, when the first syntax element is raht_inter_layer_depth_minus1, the decoder determines that the first RAHT transform layer number of the point cloud sequence enabling RAHT attribute inter-prediction = raht_inter_layer_depth_minus1 + 1.
[0249] Of course, when the value of the first syntax element adopts other representation manners, the decoder can determine the RAHT transform layer number of the point cloud sequence enabling RAHT attribute inter-prediction in other manners, such as when the first syntax element is raht_inter_layer_depth (i.e. not minus one), the decoder can determine the value of the first syntax element as the RAHT transform layer number of the point cloud sequence enabling RAHT attribute inter-prediction. The embodiments of the present application do not limit the specific manner of determining the RAHT transform layer number based on the value of the first syntax element.
[0250] Step 903, determining, according to the value of the third syntax element, a second RAHT transform layer number of the point cloud slice enabling RAHT attribute inter-prediction.
[0251] The decoder determines, according to the value of the third syntax element, a layer number of the RAHT layer of the point cloud slice enabling RAHT attribute inter-prediction, i.e. the second RAHT transform layer number.
[0252] In some embodiments, when the third syntax element is layer_code_depth, the decoder determines that the second RAHT transform layer number of the point cloud slice enabling RAHT attribute inter-prediction = layer_code_depth + 1.
[0253] Step 904, attribute decoding the point cloud slice based on the first RAHT transform layer number and the second RAHT transform layer number.
[0254] In a possible implementation, the decoder compares the first RAHT transform layer number with the second RAHT transform layer number, and determines whether to continue attribute decoding the point cloud slice according to the comparison result.
[0255] Optionally, when the comparison result indicates to continue attribute decoding of the point cloud slice, the decoder attribute decodes the point cloud slice based on the second RAHT transform layer number; and when the comparison result indicates to terminate attribute decoding of the point cloud slice, decoding collapse is avoided.
[0256] In summary, in the embodiment, the decoder adds a detection mechanism before attribute decoding of the point cloud slice, determines the first RAHT transform layer number of the point cloud sequence enabling RAHT attribute inter-frame prediction based on the value of the first syntax element in the aps, determines the second RAHT transform layer number of the point cloud slice enabling RAHT attribute inter-frame prediction based on the value of the third syntax element in the abh, and determines whether to attribute decode the point cloud slice based on the size relationship between the first RAHT transform layer number and the second RAHT transform layer number, which can avoid decoding collapse when the point cloud slice is directly attribute decoded when the value of the third syntax element is set improperly. Moreover, the syntax structure of the abh does not need to be modified, which improves the compatibility of the decoding scheme.
[0257] The size relationship between the first RAHT transform layer number and the second RAHT transform layer number has the following two cases:
[0258] 1. The first RAHT transform layer number is greater than or equal to the second RAHT transform layer number;
[0259] 2. The first RAHT transform layer number is less than the second RAHT transform layer number.
[0260] In the case that the first RAHT transform layer number is greater than or equal to the second RAHT transform layer number, the inter-frame reconstructed attribute information obtained according to the first RAHT transform layer number (raht_inter_layer_depth_minus1+1) can meet the reference requirement when RAHT attribute inter-frame prediction is performed based on the second RAHT transform layer number (layer_code_depth+1).
[0261] As shown in FIG. 10, the decoder determines the first RAHT transform layer number of the point cloud sequence enabling RAHT attribute inter-frame prediction to be 4 based on the first syntax element in the aps, and determines the second RAHT transform layer number of the point cloud slice enabling RAHT attribute inter-frame prediction to be 3 based on the third syntax element in the abh. Since at most (in the case that the 2nd, 3rd and 4th RAHT layers all enable inter-frame prediction) the 2nd, 3rd and 4th RAHT layers of the reference frame are needed to perform inter-frame prediction during attribute decoding of the current point cloud slice, and the decoder obtains the reconstructed attribute information of the 1st, 2nd, 3rd and 4th RAHT layers based on the first RAHT transform layer number, therefore, the problem of decoding collapse caused by the inability to obtain the inter-frame reconstructed attribute information is avoided.
[0262] In a possible implementation, in a case where the first number of RAHT transform layers is greater than or equal to the second number of RAHT transform layers, the decoder decodes the attribute of the point cloud slice based on the second number of RAHT transform layers.
[0263] In some embodiments, the attribute decoding process can include the following steps:
[0264] At step 904A, in a case where the index of the RAHT layer is less than the index of the RAHT root node layer and the index of the RAHT layer is greater than the difference between the index of the RAHT root node layer and the second number of RAHT transform layers, the decoder obtains, from the bitstream, indication information of a prediction mode corresponding to the RAHT layer, the prediction mode being inter prediction or intra prediction.
[0265] When decoding the point cloud slice, the decoder first constructs a RAHT tree corresponding to the point cloud slice based on the reconstructed geometry information of the point cloud slice. In a case where the RAHT tree includes n layers of RAHT layers, the index of the RAHT root node layer is n-1, denoted as RahtRootLvl = RahtLvlCnt-1.
[0266] For a RAHT layer in the RAHT tree, when determining the prediction mode used by the RAHT layer, the decoder obtains the index of the RAHT layer, and determines whether the RAHT layer enables RAHT attribute inter prediction based on the size relationship between the index and the index of the RAHT root node layer and the size relationship between the index and the difference between the index of the RAHT root node layer and the second number of RAHT transform layers.
[0267] When the index of the RAHT layer is less than the index of the RAHT root node layer and the index of the RAHT layer is greater than the difference between the index of the RAHT root node layer and the second number of RAHT transform layers, it indicates that the RAHT layer is not the layer where the RAHT root node is located (the prediction mode of the RAHT root node does not need to be encoded), and is within the range of the RAHT layers indicated by abh to enable RAHT attribute inter prediction, and therefore the decoder needs to obtain, from the bitstream, indication information of a prediction mode corresponding to the RAHT layer.
[0268] In some embodiments, when the index of the RAHT layer is RahtLvl, the index of the RAHT root node layer is RahtRootLvl, and the third syntax element in abh is layer_code_depth, if RahtLvl < RahtRootLvl and RahtLvl > RahtRootLvl-(layer_code_depth+1), the decoder obtains, from the bitstream, indication information of a prediction mode corresponding to the RAHT layer.
[0269] Illustratively, as shown in FIG. 10, when RahtRootLvl = 4 and layer_code_depth = 2, if RahtLvl < 4 and RahtLvl > 4 - (2 + 1), i.e., RahtLvl = 2, 3, the decoder obtains the indication information of the prediction mode corresponding to the RAHT layer from the bitstream.
[0270] As to the manner of obtaining the indication information of the prediction mode, in a possible implementation, the bitstream contains a prediction mode array corresponding to the point cloud slice, and the length of the prediction mode array is consistent with layer_code_depth. The encoder obtains the indication information of the prediction mode corresponding to the RAHT layer from the array based on slice_raht_layer_code_mode[depth].
[0271] Based on the value of depth in the array, the decoder can determine the prediction mode of the corresponding RAHT layer, where Rahtlvl = RahtRootLvl-depth-1.
[0272] Illustratively, in the RAHT tree shown in FIG. 10, when inter prediction is represented by 1 and intra prediction is represented by 0, the prediction mode array [1, 0] indicates that the prediction modes of the two RAHT layers in the RAHT tree are encoded into the bitstream. Wherein, the value 1 corresponding to depth = 0 indicates that the prediction mode of the third RAHT layer is inter prediction, and the value 0 corresponding to depth = 1 indicates that the prediction mode of the second RAHT layer is intra prediction.
[0273] Step 904B, attribute decoding of the RAHT layer based on the prediction mode indicated by the indication information.
[0274] The specific process of attribute decoding of the RAHT layer based on the prediction mode indicated by the indication information can be referred to the above step 403B, and will not be described herein.
[0275] Step 904C, in the case where the index of the RAHT layer is less than or equal to the difference between the index of the RAHT root node and the number of the second RAHT transform layers, a second syntax element in the attribute parameter set is obtained, and the value of the second syntax element is used to indicate whether prediction is used.
[0276] When the index of the RAHT layer is less than or equal to the difference between the index of the RAHT root node and the number of the second RAHT transform layers, it indicates that the RAHT layer is not the layer where the RAHT root node is located (the prediction mode of the RAHT root node does not need to be encoded), and is located outside the range of the RAHT layers indicated by abh to enable RAHT attribute inter prediction, so the decoder does not obtain the prediction mode corresponding to the RAHT layer from the bitstream.
[0277] In a possible implementation, the aps of the point cloud sequence contains a second syntax element, a value of the second syntax element is used to indicate whether prediction is used. For a RAHT layer whose index is less than or equal to a difference between the RAHT root node level index and the RAHT transform layer number, the decoder determines whether prediction is used for the RAHT layer.
[0278] In some embodiments, the second syntax element is raht_prediction_enabled, and when a value of the raht_prediction_enabled is True, it indicates that prediction is used, and when the value of the raht_prediction_enabled is False, it indicates that prediction is not used.
[0279] Step 904D, in a case where the value of the second syntax element indicates that prediction is used, the RAHT layer is attribute-decoded by intra prediction.
[0280] In a possible implementation, in a case where prediction is used, for a node in the RAHT layer, the decoder detects whether the node satisfies an intra prediction condition. If the intra prediction condition is satisfied, the decoder performs intra attribute prediction on the node, and further performs attribute decoding based on a prediction result of the attribute of the node.
[0281] If the intra prediction condition is not satisfied, the decoder performs attribute decoding on the node in a manner of non-prediction-only-inverse-transformation.
[0282] Illustratively, as shown in FIG. 10, when RahtRootLvl = 4 and layer_code_depth = 2, if RahtLvl ≤ 4-(2+1), i.e., RahtLvl = 0, 1, the decoder determines that the RAHT layer does not support enabling inter prediction. When the decoder obtains a value of the raht_prediction_enabled in the aps as True, it is determined that the RAHT layer supports using prediction.
[0283] Step 904E, in a case where the value of the second syntax element indicates that prediction is not used, the RAHT layer is not attribute-decoded by prediction.
[0284] In a possible implementation, in a case where prediction is not used, for a node in the RAHT layer, the decoder performs attribute decoding on the node in a manner of non-prediction-only-inverse-transformation.
[0285] Illustratively, as shown in FIG. 10, when RahtRootLvl = 4 and layer_code_depth = 2, if RahtLvl < 4 - (2 + 1), i.e., RahtLvl = 0, 1, the decoder determines that the RAHT layer does not support enabling inter-prediction. When the value of raht_prediction_enabled in the aps is False, the decoder determines that the RAHT layer does not support using prediction, and thus only decodes the attributes of the nodes in the 0th and 1st layer RAHT layers through inverse transformation.
[0286] In the case where the first number of RAHT transform layers is less than the second number of RAHT transform layers, the inter-frame reconstructed attribute information obtained according to the first number of RAHT transform layers (raht_inter_layer_depth_minus1 + 1) can not meet the reference requirement when performing RAHT attribute inter-prediction based on the second number of RAHT transform layers (layer_code_depth + 1).
[0287] In order to avoid decoding crash, in one possible implementation, in the case where the first number of RAHT transform layers is less than the second number of RAHT transform layers, the decoder terminates attribute decoding of the point cloud slice.
[0288] Illustratively, as shown in FIG. 11, the decoder determines, based on the first syntax element in the aps, that the first number of RAHT transform layers for which the point cloud sequence enables RAHT attribute inter-prediction is 3, and determines, based on the third syntax element in the abh, that the second number of RAHT transform layers for which the point cloud slice enables RAHT attribute inter-prediction is 4. Since, in the process of attribute decoding of the current point cloud slice, at most (in the case where the 1st, 2nd, 3rd, and 4th layer RAHT layers all enable inter-prediction) the 1st, 2nd, 3rd, and 4th layer RAHT layers of the reference frame are needed to be used for inter-prediction, and the decoder only obtains the reconstructed attribute information of the 2nd, 3rd, and 4th layer RAHT layers based on the first number of RAHT transform layers, the problem of decoding crash due to the inability to obtain the inter-frame reconstructed attribute information can occur. Therefore, when the scheme provided in the embodiments of the present application is used, the decoder will terminate attribute decoding of the point cloud slice.
[0289] However, in the case where the first number of RAHT transform layers is less than the second number of RAHT transform layers, decoding crash does not necessarily occur. As shown in FIG. 11, when the prediction mode corresponding to the 1st layer RAHT layer is intra-prediction, since the reconstructed attribute information of the 1st layer RAHT layer in the reference frame is not needed when attribute decoding of the 1st layer RAHT layer is performed, the decoder can perform attribute decoding of the 1st layer RAHT layer.
[0290] Therefore, in order to further improve the decoding success rate, in another possible implementation, in the case that the first RAHT transform layer number is less than the second RAHT transform layer number, the decoder further detects whether the prediction mode corresponding to the RAHT layer located within the RAHT layer range indicated by the second RAHT transform layer number and outside the RAHT layer range indicated by the first RAHT transform layer number contains inter-frame prediction, and determines whether attribute decoding needs to be performed on the current point cloud slice according to the detection result.
[0291] As shown in FIG. 12, the process can include the following steps:
[0292] Step 1201, in the case that the first RAHT transform layer number is less than the second RAHT transform layer number, obtaining, from the bitstream, indication information of the prediction mode corresponding to the RAHT layer whose index is less than or equal to the difference between the RAHT root node layer index and the first RAHT transform layer number.
[0293] For the RAHT layer whose index is greater than the difference between the RAHT root node layer index and the first RAHT transform layer number, since the decoder can obtain the inter-frame attribute reconstruction information corresponding to the RAHT layer based on the first RAHT transform layer number, decoding collapse will not occur for the RAHT layer.
[0294] For the RAHT layer whose index is less than or equal to the difference between the RAHT root node layer index and the first RAHT transform layer number, when the prediction mode corresponding to the RAHT layer is inter-frame prediction, decoding collapse will occur due to the failure to obtain the attribute reconstruction information of the reference frame. When the prediction mode corresponding to the RAHT layer is not intra-frame prediction, decoding collapse will not occur due to the failure to obtain the attribute reconstruction information of the reference frame.
[0295] Therefore, in the embodiment, the decoder obtains, from the bitstream, the indication information of the prediction mode corresponding to the RAHT layer whose index is less than or equal to the difference between the RAHT root node layer index and the first RAHT transform layer number, so as to determine whether decoding collapse will occur based on the prediction mode subsequently.
[0296] In some embodiments, when the RAHT root node layer index is RahtRootLvl, and the first RAHT transform layer number is raht_inter_layer_depth_minus1+1, the decoder obtains the indication information of the prediction mode corresponding to the RAHT layer whose RahtLvl≤RahtRootLvl-(raht_inter_layer_depth_minus1+1) and RahtLvl>RahtRootLvl-(layer_code_depth+1).
[0297] Illustratively, as shown in FIG. 13, when the first RAHT transform layer number is 3, the second RAHT transform layer number is 4, and the RAHT tree contains 5 layers, the decoder obtains the indication information of the prediction mode corresponding to the first RAHT layer, and the prediction mode corresponding to the first RAHT layer is intra prediction.
[0298] Regarding the manner of obtaining the indication information of the prediction mode, in a possible implementation, the decoder obtains the indication information of the prediction mode from the prediction mode array based on the first RAHT transform layer number.
[0299] Illustratively, as shown in FIG. 13, when inter prediction is represented by 1 and intra prediction is represented by 0, the prediction mode array in the bitstream is [1, 1, 0]. The decoder obtains the value of depth≥raht_inter_layer_depth_minus1 from the array, that is, the value of depth≥2 from the array, and obtains that the prediction mode corresponding to the first RAHT layer is intra prediction.
[0300] In step 1202, in the case where the prediction mode indicated by the indication information includes inter prediction, the attribute decoding of the point cloud slice is terminated.
[0301] In the case where the at least one obtained prediction mode includes inter prediction, the decoder determines that there is a decoding collapse risk, and thus the terminal terminates the attribute decoding of the point cloud slice.
[0302] In step 1203, in the case where the prediction mode indicated by the indication information does not include inter prediction, the RAHT layer is attribute-decoded based on the second RAHT transform layer number.
[0303] In the case where the at least one obtained prediction mode does not include inter prediction, it is indicated that the prediction mode of the RAHT layer located outside the range indicated by the first RAHT transform layer number in the current point cloud slice is not inter prediction, that is, the reconstructed attribute information of the RAHT layer in the reference frame does not need to be used, and thus there is no decoding collapse. The decoder attribute-decodes the RAHT layer based on the second RAHT transform layer number.
[0304] Illustratively, as shown in FIG. 13, since the prediction mode corresponding to the first RAHT layer is intra prediction, the decoder can obtain the prediction mode corresponding to the second, third, and fourth RAHT layers from the bitstream based on the second RAHT transform layer number, and further attribute-decode the nodes in the RAHT layer based on the prediction mode.
[0305] In the embodiment, when the first number of RAHT transform layers is less than the second number of RAHT transform layers, the decoder further detects whether the prediction mode of the RAHT layer corresponding to the RAHT layer range indicated by the second number of RAHT transform layers and located outside the RAHT layer range indicated by the first number of RAHT transform layers contains inter-frame prediction. If the prediction mode does not contain inter-frame prediction, the decoder continues attribute decoding of the current point cloud slice, which helps to improve the decoding success rate of the point cloud slice. If the prediction mode contains inter-frame prediction, the decoder terminates attribute decoding of the current point cloud slice, which avoids the problem that decoding crashes due to the failure to obtain inter-frame reconstructed attribute information.
[0306] The attribute encoding process of the point cloud is described below.
[0307] Referring to FIG. 14, a flowchart of a point cloud attribute encoding method provided by another exemplary embodiment of the present application is shown. The method can include the following steps:
[0308] Step 1401: Determine a first syntax element in an attribute parameter set of a point cloud sequence.
[0309] In some embodiments, the encoder obtains the first syntax element related to the prediction parameter from the attribute parameter set, and the first syntax element is a syntax element related to the number of RAHT layers using inter-frame prediction in the RAHT tree.
[0310] In a possible design, the first syntax element is raht_inter_layer_depth_minus1, that is, the value of the first syntax element is the number of RAHT layers using inter-frame prediction in the RAHT tree minus 1.
[0311] In a possible implementation, the value of the first syntax element can be set based on the compression efficiency of the point cloud and the compression quality requirement. The embodiment of the present application does not limit the specific setting method of the value of the first syntax element.
[0312] In some embodiments, when the value of the syntax element attr_inter_prediction_enabled and the value of the syntax element attr_coding_type in the attribute parameter set (aps) indicate that the point cloud sequence uses RAHT attribute encoding, the decoder obtains the first syntax element in the attribute parameter set.
[0313] In an illustrative example, when the value of attr_inter_prediction_enabled is True and the value of attr_coding_type is 0, the decoder obtains the first syntax element in the attribute parameter set.
[0314] Step 1402, determining the first RAHT transform layer number of the point cloud sequence enabling the RAHT attribute inter-frame prediction according to the value of the first syntax element.
[0315] The encoder further determines the first RAHT transform layer number of the point cloud sequence enabling the RAHT attribute inter-frame prediction according to the value of the first syntax element.
[0316] In some embodiments, when the first syntax element is raht_inter_layer_depth_minus1, the encoder determines the first RAHT transform layer number of the point cloud sequence enabling the RAHT attribute inter-frame prediction = raht_inter_layer_depth_minus1 + 1.
[0317] Of course, when the value of the first syntax element adopts other representation manners, the encoder can determine the first RAHT transform layer number of the point cloud sequence enabling the RAHT attribute inter-frame prediction in other manners, such as, when the first syntax element is raht_inter_layer_depth (i.e., not minus 1), the encoder can determine the value of the first syntax element as the first RAHT transform layer number of the point cloud sequence enabling the RAHT attribute inter-frame prediction. The embodiments of the present application do not limit the specific manner of determining the first RAHT transform layer number.
[0318] Step 1403, determining the second RAHT transform layer number of the point cloud slice enabling the RAHT attribute inter-frame prediction according to the first RAHT transform layer number.
[0319] In order to represent that the decoding end can obtain the same inter-frame reconstructed attribute information as the encoding end, the encoder needs to refer to the first RAHT transform layer number of the point cloud sequence enabling the RAHT attribute inter-frame prediction when determining the second RAHT transform layer number of the point cloud slice enabling the RAHT attribute inter-frame prediction.
[0320] Step 1404, attribute encoding the point cloud slice based on the second RAHT transform layer number.
[0321] In some embodiments, the encoder determines the value of the third syntax element (layer_code_depth) in abh based on the second RAHT transform layer number, so as to encode the third syntax element into the bitstream.
[0322] Further, the encoder determines the RAHT layer in the RAHT tree which needs to encode the prediction mode into the bitstream based on the determined second RAHT transform layer number, and then encodes the indication information of the prediction mode of the RAHT layer into the bitstream, and attribute encodes the nodes in the RAHT layer based on the prediction mode of the RAHT layer, and finally encodes the attribute encoding result into the bitstream.
[0323] Since the first RAHT transform layer number is set for the point cloud sequence rather than for the point cloud slice, the size relationship between the structure layer number of the RAHT tree corresponding to the point cloud slice and the first RAHT transform layer number can have the following two cases:
[0324] 1. The structure layer number of the RAHT tree corresponding to the point cloud slice is less than or equal to the first RAHT transform layer number.
[0325] 2. The structure layer number of the RAHT tree corresponding to the point cloud slice is greater than the first RAHT transform layer number.
[0326] For the first case, even if the prediction mode of all RAHT layers in the RAHT tree corresponding to the point cloud slice is inter prediction, the decoder can obtain the inter reconstruction attribute information of each RAHT layer to ensure normal attribute decoding of the point cloud slice.
[0327] For the second case, since the RAHT layers outside the range indicated by the first RAHT transform layer number in the RAHT tree can use inter prediction, there is a problem that the inter reconstruction attribute information cannot be obtained, resulting in decoding crash.
[0328] The attribute encoding processes in the above two cases are described below using exemplary embodiments.
[0329] Referring to FIG. 15, a flowchart of an attribute encoding method of a point cloud according to another exemplary embodiment of the present application is shown. The method can include the following steps:
[0330] Step 1501, determine a first syntax element in the attribute parameter set of the point cloud sequence.
[0331] Step 1502, determine the first RAHT transform layer number of the point cloud sequence enabling RAHT attribute inter prediction according to the value of the first syntax element.
[0332] The implementation of steps 1501 to 1502 can refer to steps 1401 to 1402, and this embodiment will not be described here.
[0333] Step 1503, determine the structure layer number of the RAHT tree corresponding to the point cloud slice.
[0334] In some embodiments, the encoder constructs the RAHT tree corresponding to the point cloud slice based on the reconstructed geometry information of the point cloud slice, and determines the structure layer number of the RAHT tree.
[0335] Step 1504, in the case where the structure layer number is less than or equal to the first RAHT transform layer number, determine the second RAHT transform layer number of the point cloud slice enabling RAHT attribute inter prediction based on the structure layer number.
[0336] In the case that the structure layer number of the RAHT tree is less than or equal to the first RAHT transform layer number, the decoder can also obtain the inter-frame reconstructed attribute information of each layer of the RAHT tree, and thus the encoder can determine the second RAHT transform layer number of the point cloud slice that enables the RAHT attribute inter-frame prediction based on the structure layer number. The determined second RAHT transform layer number is less than or equal to the structure layer number.
[0337] In an illustrative example, when the value of the first syntax element raht_inter_layer_depth_minus1 in the aps is 6 and the structure layer number of the RAHT tree corresponding to the current point cloud slice is 5, the encoder determines that the second RAHT transform layer number of the point cloud slice that enables the RAHT attribute inter-frame prediction is 5, and the number of layers of the RAHT tree that need to be encoded in the prediction mode (i.e., layer_code_depth) is 4.
[0338] In step 1505, in the case that the structure layer number is greater than the first RAHT transform layer number, the first RAHT transform layer number is determined as the second RAHT transform layer number of the point cloud slice that enables the RAHT attribute inter-frame prediction.
[0339] In a possible implementation, when the encoder performs attribute encoding, it is necessary to ensure that the second RAHT transform layer number of the point cloud slice that enables the RAHT attribute inter-frame prediction is not greater than the first RAHT transform layer number of the point cloud sequence that enables the RAHT attribute inter-frame prediction. Therefore, when the structure layer number of the RAHT tree is greater than the first RAHT transform layer number, the encoder determines the first RAHT transform layer number as the second RAHT transform layer number.
[0340] In an illustrative example, when the value of the first syntax element raht_inter_layer_depth_minus1 in the aps is 6 and the structure layer number of the RAHT tree corresponding to the current point cloud slice is 8, the encoder determines that the second RAHT transform layer number of the point cloud slice that enables the RAHT attribute inter-frame prediction is 7, and the number of layers of the RAHT tree that need to be encoded in the prediction mode (i.e., layer_code_depth) is 6.
[0341] In step 1506, the attribute of the point cloud slice is encoded based on the second RAHT transform layer number.
[0342] Since the second RAHT transform layer number determined through the above steps 1504 or 1505 is not greater than the first RAHT transform layer number, after the encoder encodes the attribute of the point cloud slice based on the second RAHT transform layer number, it can be ensured that the decoder can obtain the inter-frame reconstructed attribute information consistent with the encoder.
[0343] As to the specific process of attribute encoding, in a possible implementation, the step can include the following sub-steps.
[0344] Step 1506A, when the index of the RAHT layer is less than the index of the RAHT root node layer and the index of the RAHT layer is greater than the difference between the index of the RAHT root node layer and the second RAHT transform layer number, determining the prediction mode corresponding to the RAHT layer, the prediction mode being inter prediction or intra prediction.
[0345] For the RAHT layer in the RAHT tree, when determining the prediction mode of the RAHT layer for attribute encoding, the encoder obtains the index of the RAHT layer, and determines whether the RAHT attribute inter prediction is enabled for the RAHT layer based on the size relationship between the index and the index of the RAHT root node layer, and the size relationship between the index and the difference between the index of the RAHT root node layer and the second RAHT transform layer number.
[0346] When the index of the RAHT layer is less than the index of the RAHT root node layer and the index of the RAHT layer is greater than the difference between the index of the RAHT root node layer and the second RAHT transform layer number, it indicates that the RAHT layer is not the layer where the RAHT root node is located (the prediction mode of the RAHT root node does not need to be encoded), and is located in the range of the RAHT layer in the point cloud slice that enables the RAHT attribute inter prediction, so the encoder needs to encode the indication information of the prediction mode corresponding to the RAHT layer into the bitstream.
[0347] In some embodiments, when the index of the RAHT layer is RahtLvl, the index of the RAHT root node layer is RahtRootLvl, and the determined second RAHT transform layer number is layer_code_depth+1, if RahtLvl
[0348] Step 1506B, attribute encoding the RAHT layer based on the prediction mode.
[0349] Step 1506C, encoding the indication information of the prediction mode corresponding to the RAHT layer into the bitstream.
[0350] The specific implementation of the above steps 1506B to 1506C can refer to steps 703B to 703C, and this embodiment will not be repeated here.
[0351] Step 1506D, in the case where the index of the RAHT layer is less than or equal to the difference between the RAHT root node layer index and the second RAHT transform layer number, a second syntax element in the attribute parameter set is obtained, and the value of the second syntax element is used to indicate whether prediction is used.
[0352] When the index of the RAHT layer is less than or equal to the difference between the RAHT root node layer index and the second RAHT transform layer number, it indicates that the RAHT layer is not the layer where the RAHT root node is located (the prediction mode of the RAHT root node does not need to be encoded), and is located outside the range of the RAHT layer where the RAHT attribute inter-frame prediction is enabled in the point cloud slice, so the encoder does not need to encode the indication information of the prediction mode of the RAHT layer to the code stream, but indicates the encoding mode of the RAHT layer by other means.
[0353] In a possible implementation, the aps of the point cloud sequence includes a second syntax element, and the value of the second syntax element is used to indicate whether prediction is used. For the RAHT layer whose index is less than or equal to the difference between the RAHT root node layer index and the second RAHT transform layer number, the encoder indicates whether the RAHT layer uses prediction by the value of the second syntax element.
[0354] Step 1506E, in the case where the value of the second syntax element indicates that prediction is used, the RAHT layer is attribute-encoded by intra-frame prediction.
[0355] Step 1506F, in the case where the value of the second syntax element indicates that prediction is not used, the RAHT layer is not attribute-encoded by prediction.
[0356] The specific implementation of the above steps 1506E to 1506F can refer to steps 703E to 703F, and this embodiment will not be described here.
[0357] In addition to setting the second RAHT transform layer number to be not greater than the first RAHT transform layer number, in another possible implementation, the second RAHT transform layer number can also be set to be greater than the first RAHT transform layer number.
[0358] After determining the second RAHT transform layer number in the above manner, in order to ensure synchronization between the encoder and the decoder, the encoder needs to avoid determining the prediction mode of the RAHT layer as inter-frame prediction when determining the prediction mode of the RAHT layer within the range indicated by the second RAHT transform layer number.
[0359] Please refer to FIG. 16, which shows a flowchart of a point cloud attribute encoding method provided by another exemplary embodiment of the present application. The method can include the following steps:
[0360] Step 1601, determine a first syntax element in the attribute parameter set of the point cloud sequence.
[0361] At step 1602, according to the value of the first syntax element, a first RAHT transform layer number of the point cloud sequence enabling the RAHT attribute inter-frame prediction is determined.
[0362] At step 1603, a structure layer number of the RAHT tree corresponding to the point cloud slice is determined.
[0363] The embodiments of steps 1601 to 1603 can refer to steps 1501 to 1503, and the present embodiment will not be described here.
[0364] At step 1604, in a case where the structure layer number of the RAHT tree is greater than the first RAHT transform layer number, the second RAHT transform layer number of the point cloud slice enabling the RAHT attribute inter-frame prediction is determined by the encoder based on the structure layer number.
[0365] The second RAHT transform layer number is less than or equal to the structure layer number. Since the structure layer number is greater than the first RAHT transform layer number, the second RAHT transform layer number set may be greater than the first RAHT transform layer number.
[0366] Illustratively, as shown in FIG. 17, the RAHT tree corresponding to the current point cloud slice has 5 layers. When the first RAHT transform layer number of the point cloud sequence enabling the RAHT attribute inter-frame prediction is 3 layers (i.e., raht_inter_layer_depth_minus1+1=3), the second RAHT transform layer number (i.e., layer_code_depth+1) of the current point cloud slice enabling the RAHT attribute inter-frame prediction is determined by the encoder to be 5 layers.
[0367] At step 1605, in a case where the index of the RAHT layer is less than the index of the RAHT root node layer and the index of the RAHT layer is greater than the difference between the index of the RAHT root node layer and the first RAHT transform layer number, the prediction mode corresponding to the RAHT layer is determined from the prediction modes containing the inter-frame prediction.
[0368] For the RAHT layer whose index is greater than the difference between the index of the RAHT root node layer and the first RAHT transform layer number, since the RAHT layer is within the range enabling the RAHT attribute inter-frame prediction indicated by the first RAHT transform layer number, even if the prediction mode of the RAHT layer is the inter-frame prediction, the decoder can also obtain the reconstructed attribute information of the RAHT layer in the reference frame, and then complete the inter-frame prediction.
[0369] In a possible implementation, for the RAHT layer whose index is less than the index of the RAHT root node layer and whose index is greater than the difference between the index of the RAHT root node layer and the first RAHT transform layer number, the prediction mode corresponding to the RAHT layer is determined by the encoder from the prediction modes containing the inter-frame prediction.
[0370] Optionally, the prediction modes including inter prediction can include inter prediction, inter prediction and other attribute prediction modes.
[0371] For example, as shown in FIG. 17, for the 2nd and 3rd RAHT layers in the RAHT tree, the encoder determines that the prediction modes of the 2nd and 3rd RAHT layers are both inter prediction from the prediction modes including inter prediction.
[0372] Step 1606, in the case that the index of the RAHT layer is less than or equal to the difference between the RAHT root node layer index and the first RAHT transform layer number, the prediction mode corresponding to the RAHT layer is determined from the prediction modes not including inter prediction.
[0373] For the RAHT layer whose index is less than or equal to the difference between the RAHT root node layer index and the first RAHT transform layer number, since the RAHT layer is located outside the range indicated by the first RAHT transform layer number in which the RAHT attribute inter prediction is enabled, if the prediction mode of the RAHT layer is inter prediction, the decoding end will fail to obtain the reconstructed attribute information of the RAHT layer in the reference frame, resulting in decoding crash.
[0374] In order to avoid the above problems, the encoding end needs to avoid determining the prediction mode as intra prediction when determining the prediction mode corresponding to the RAHT layer.
[0375] As a way to avoid determining the prediction mode as intra prediction, the encoder can determine the prediction mode corresponding to the RAHT layer from the prediction modes not including inter prediction.
[0376] Optionally, the prediction modes not including inter prediction can include intra prediction and other attribute prediction modes.
[0377] For example, as shown in FIG. 17, for the 0th and 1st RAHT layers in the RAHT tree, the encoder determines that the prediction modes of the 1st and 2nd RAHT layers are both intra prediction from the prediction modes not including inter prediction.
[0378] Step 1607, attribute encoding is performed on the RAHT layer based on the prediction mode.
[0379] The specific process of attribute encoding performed by the encoder on the RAHT layer based on the prediction mode can refer to the above step 703B, and will not be described here.
[0380] Step 1608, the indication information of the prediction mode corresponding to the RAHT layer is encoded into the bitstream.
[0381] The specific process in which the encoder encodes the prediction mode corresponding to the RAHT layer based on the prediction mode can refer to step 703C, which will not be described herein.
[0382] For the RAHT tree shown in FIG. 17, the encoder encodes the prediction mode array [1, 1, 0, 0] into the bitstream, where 1 represents inter prediction and 0 represents intra prediction.
[0383] Please refer to FIG. 18, which shows a structural block diagram of a decoder provided by an example embodiment of the present application. The decoder includes:
[0384] The decoding unit 1801 is configured to acquire, from the bitstream, a first syntax element in an attribute parameter set of a point cloud sequence;
[0385] The decoding unit 1801 is configured to determine, according to a value of the first syntax element, a number of RAHT transform layers of the point cloud sequence that enable RAHT attribute inter prediction.
[0386] The decoding unit 1801 is configured to perform attribute decoding on a point cloud slice based on the number of RAHT transform layers.
[0387] Optionally, the decoding unit 1801 is configured to:
[0388] In a case where the index of the RAHT layer is less than the index of the RAHT root node layer and greater than the difference between the index of the RAHT root node layer and the number of RAHT transform layers, acquire indication information of a prediction mode corresponding to the RAHT layer from the bitstream, the prediction mode being inter prediction or intra prediction.
[0389] Perform attribute decoding on the RAHT layer based on the prediction mode indicated by the indication information.
[0390] Optionally, the decoding unit 1801 is further configured to:
[0391] In a case where the index of the RAHT layer is less than or equal to the difference between the index of the RAHT root node layer and the number of RAHT transform layers, acquire a second syntax element in the attribute parameter set, a value of the second syntax element being used to indicate whether to use prediction.
[0392] In a case where the value of the second syntax element indicates to use prediction, perform attribute decoding on the RAHT layer through intra prediction.
[0393] In a case where the value of the second syntax element indicates not to use prediction, do not perform attribute decoding on the RAHT layer through a prediction mode.
[0394] Optionally, the decoding unit 1801 is configured to:
[0395] determining a property prediction value of a node in the RAHT layer based on the prediction mode;
[0396] reconstructing a node property of the node based on the property prediction value of the node and the transform coefficient residual obtained by inverse quantization.
[0397] Optionally, in a case where the prediction mode is inter prediction, the property prediction value of the node in the RAHT layer is predicted based on a property reconstruction value of a corresponding sibling node of the node in a reference frame;
[0398] in a case where the prediction mode is intra prediction, the property prediction value of the node in the RAHT layer is predicted based on a property reconstruction value of a corresponding neighboring node of the node in a current frame.
[0399] Please refer to FIG. 19, which shows a structural block diagram of an encoder provided by an example embodiment of the present application. The encoder comprises:
[0400] an encoding unit 1901 configured to determine a first syntax element in a property parameter set of a point cloud sequence;
[0401] The encoding unit 1901 is configured to determine, according to a value of the first syntax element, a number of RAHT transform layers of the point cloud sequence enabled for RAHT property inter prediction.
[0402] The encoding unit 1901 is configured to perform property encoding on a point cloud slice based on the number of RAHT transform layers.
[0403] Optionally, the encoding unit 1901 is configured to:
[0404] in a case where an index of the RAHT layer is less than an index of a RAHT root node layer and the index of the RAHT layer is greater than a difference between the index of the RAHT root node layer and the number of RAHT transform layers, determine a prediction mode corresponding to the RAHT layer, the prediction mode being inter prediction or intra prediction;
[0405] perform property encoding on the RAHT layer based on the prediction mode;
[0406] encode indication information of the prediction mode corresponding to the RAHT layer into the bitstream.
[0407] Optionally, the encoding unit 1901 is further configured to:
[0408] in a case where the index of the RAHT layer is less than or equal to the difference between the index of the RAHT root node layer and the number of RAHT transform layers, obtain a second syntax element in the property parameter set, a value of the second syntax element being used to indicate whether prediction is used or not;
[0409] in the case that the value of the second syntax element indicates that prediction is used, attribute encoding of the RAHT layer is performed by intra prediction;
[0410] in the case that the value of the second syntax element indicates that prediction is not used, attribute encoding of the RAHT layer is not performed by prediction.
[0411] Optionally, the encoding unit 1901 is configured to:
[0412] determine an attribute prediction value of a node in the RAHT layer based on the prediction mode;
[0413] determine a transform coefficient residual based on the attribute prediction value and a node attribute of the node, the transform coefficient residual being a residual between a first transform coefficient obtained by transforming the attribute prediction value and a second transform coefficient obtained by transforming the node attribute of the node;
[0414] encode the transform coefficient residual.
[0415] Optionally, in the case that the prediction mode is inter prediction, the attribute prediction value of the node in the RAHT layer is predicted based on an attribute reconstruction value of a corresponding sibling node of the node in a reference frame;
[0416] in the case that the prediction mode is intra prediction, the attribute prediction value of the node in the RAHT layer is predicted based on an attribute reconstruction value of a corresponding neighboring node of the node in a current frame.
[0417] Please refer to FIG. 20, which shows a structural block diagram of a decoder provided by another exemplary embodiment of the present application. The decoder comprises:
[0418] a decoding unit 2001 configured to acquire, from a bitstream, a first syntax element in an attribute parameter set of a point cloud sequence and a third syntax element in an attribute block header of a point cloud slice;
[0419] the decoding unit 2001 is configured to determine, according to a value of the first syntax element, a first number of RAHT transform layers of the point cloud sequence that enable RAHT attribute inter prediction;
[0420] the decoding unit 2001 is configured to determine, according to a value of the third syntax element, a second number of RAHT transform layers of the point cloud slice that enable RAHT attribute inter prediction;
[0421] the decoding unit 2001 is configured to perform attribute decoding on the point cloud slice based on the first number of RAHT transform layers and the second number of RAHT transform layers.
[0422] Optionally, the decoding unit 2001 is configured to:
[0423] In a case where the first number of RAHT transform layers is greater than or equal to the second number of RAHT transform layers, attribute decoding is performed on the point cloud slice based on the second number of RAHT transform layers.
[0424] Optionally, the decoding unit 2001 is configured to:
[0425] In a case where the index of the RAHT layer is less than the index of the RAHT root node layer and greater than the difference between the index of the RAHT root node layer and the second number of RAHT transform layers, the indication information of the prediction mode corresponding to the RAHT layer is obtained from the bitstream, the prediction mode being inter prediction or intra prediction.
[0426] Attribute decoding is performed on the RAHT layer based on the prediction mode indicated by the indication information.
[0427] Optionally, the decoding unit 2001 is further configured to:
[0428] In a case where the index of the RAHT layer is less than or equal to the difference between the index of the RAHT root node layer and the second number of RAHT transform layers, the second syntax element in the attribute parameter set is obtained, the value of the second syntax element being used to indicate whether prediction is used.
[0429] In a case where the value of the second syntax element indicates that prediction is used, attribute decoding is performed on the RAHT layer by intra prediction.
[0430] In a case where the value of the second syntax element indicates that prediction is not used, attribute decoding is not performed on the RAHT layer by prediction.
[0431] Optionally, the decoding unit 2001 is configured to:
[0432] Based on the prediction mode, the attribute prediction value of a node in the RAHT layer is determined.
[0433] Based on the attribute prediction value of the node and the residual transform coefficient obtained by inverse quantization, the node attribute of the node is reconstructed.
[0434] Optionally, in a case where the prediction mode is inter prediction, the attribute prediction value of a node in the RAHT layer is predicted based on the attribute reconstruction value of a corresponding homonymic node of the node in a reference frame.
[0435] In a case where the prediction mode is intra prediction, the attribute prediction value of a node in the RAHT layer is predicted based on the attribute reconstruction value of a corresponding adjacent node of the node in a current frame.
[0436] Optionally, the decoding unit 2001 is further configured to:
[0437] In a case where the first number of RAHT transform layers is less than the second number of RAHT transform layers, attribute decoding of the point cloud slice is terminated.
[0438] Optionally, the decoding unit 2001 is further configured to:
[0439] In a case where the first number of RAHT transform layers is less than the second number of RAHT transform layers, a prediction mode corresponding to a RAHT layer with an index less than or equal to a difference between a RAHT root node layer index and the first number of RAHT transform layers is obtained from the bitstream.
[0440] In a case where the prediction mode includes inter prediction, attribute decoding of the point cloud slice is terminated.
[0441] In a case where the prediction mode does not include inter prediction, the RAHT layer is attribute decoded based on the second number of RAHT transform layers.
[0442] Please refer to FIG. 21, which shows a structural block diagram of an encoder provided by another exemplary embodiment of the present application. The encoder comprises:
[0443] The encoding unit 2101 is configured to determine a first syntax element in an attribute parameter set of a point cloud sequence.
[0444] The encoding unit 2101 is configured to determine, according to a value of the first syntax element, a first number of RAHT transform layers in which the point cloud sequence enables RAHT attribute inter prediction.
[0445] The encoding unit 2101 is configured to determine, according to the first number of RAHT transform layers, a second number of RAHT transform layers in which a point cloud slice enables RAHT attribute inter prediction.
[0446] The encoding unit 2101 is configured to attribute encode the point cloud slice based on the second number of RAHT transform layers.
[0447] Optionally, the encoding unit 2101 is configured to:
[0448] determine a first syntax element in an attribute parameter set of a point cloud sequence;
[0449] determine, according to a value of the first syntax element, a first number of RAHT transform layers in which the point cloud sequence enables RAHT attribute inter prediction;
[0450] determine, according to the first number of RAHT transform layers, a second number of RAHT transform layers in which a point cloud slice enables RAHT attribute inter prediction.
[0451] encode the point cloud slice based on the second RAHT transform layer number.
[0452] Optionally, the encoding unit 2101 is configured to:
[0453] determine a structure layer number of a RAHT tree corresponding to the point cloud slice;
[0454] in a case where the structure layer number is less than or equal to the first RAHT transform layer number, determine the second RAHT transform layer number with which the point cloud slice enables RAHT attribute inter-prediction based on the structure layer number.
[0455] Optionally, the encoding unit 2101 is further configured to:
[0456] in a case where the structure layer number is greater than the first RAHT transform layer number, determine the first RAHT transform layer number as the second RAHT transform layer number with which the point cloud slice enables RAHT attribute inter-prediction.
[0457] Optionally, the encoding unit 2101 is configured to:
[0458] in a case where an index of a RAHT layer is less than an index of a RAHT root node layer and the index of the RAHT layer is greater than a difference between the index of the RAHT root node layer and the second RAHT transform layer number, determine a prediction mode corresponding to the RAHT layer, the prediction mode being inter-prediction or intra-prediction;
[0459] encode the RAHT layer based on the prediction mode;
[0460] encode indication information of the prediction mode corresponding to the RAHT layer into the bitstream.
[0461] Optionally, the encoding unit 2101 is further configured to:
[0462] in a case where the index of the RAHT layer is less than or equal to the difference between the index of the RAHT root node layer and the second RAHT transform layer number, obtain a second syntax element in the attribute parameter set, a value of the second syntax element being used to indicate whether prediction is used;
[0463] in a case where the value of the second syntax element indicates that prediction is used, encode the RAHT layer based on intra-prediction;
[0464] in a case where the value of the second syntax element indicates that prediction is not used, not encode the RAHT layer based on a prediction manner.
[0465] Optionally, the encoding unit 2101 is configured to:
[0466] determine a property prediction value of a node in the RAHT layer based on the prediction mode;
[0467] determine a transform coefficient residual based on the property prediction value and the node property of the node, the transform coefficient residual being a residual between a first transform coefficient obtained by transforming the property prediction value and a second transform coefficient obtained by transforming the node property of the node;
[0468] encode the transform coefficient residual.
[0469] Optionally, the encoding unit 2101 is further configured to:
[0470] in a case where the structure layer number is greater than the first RAHT transform layer number, determine the second RAHT transform layer number of the point cloud slice enabled RAHT property inter-prediction based on the structure layer number;
[0471] in a case where the index of the RAHT layer is less than the index of the RAHT root node layer and the index of the RAHT layer is greater than a difference between the index of the RAHT root node layer and the first RAHT transform layer number, determine the prediction mode corresponding to the RAHT layer from prediction modes containing inter-prediction;
[0472] in a case where the index of the RAHT layer is less than the index of the RAHT root node layer and the index of the RAHT layer is less than or equal to the difference between the index of the RAHT root node layer and the first RAHT transform layer number, determine the prediction mode corresponding to the RAHT layer from prediction modes not containing inter-prediction;
[0473] perform property encoding on the RAHT layer based on the prediction mode;
[0474] encode indication information of the prediction mode corresponding to the RAHT layer into the bitstream.
[0475] It should be noted that the process of attribute decoding implemented by the decoding unit described above can refer to the attribute decoding method of the point cloud described above, and the process of attribute encoding implemented by the encoding unit can refer to the attribute encoding method of the point cloud described above. Therefore, the present embodiment will not be described here.
[0476] Please refer to FIG. 22, which shows a structural block diagram of an encoder provided by an example embodiment of the present application. The encoder can include one or more of the following components: a processor 2201, a memory 2202. Each component is coupled together by a bus system. It can be understood that the bus system is used to realize the connection and communication between these components. In addition to the data bus, the bus system also includes a power bus, a control bus and a status signal bus.
[0477] The memory 2202 is configured to store a computer program capable of running on the processor 2201; and the processor 2201 is configured to execute the following steps when running the computer program:
[0478] determining a first syntax element in an attribute parameter set of the point cloud sequence; determining a number of RAHT transform layers of the point cloud sequence enabling the RAHT attribute inter-prediction according to a value of the first syntax element; and performing attribute encoding on a point cloud slice based on the number of RAHT transform layers;
[0479] or,
[0480] determining a first syntax element in an attribute parameter set of the point cloud sequence; determining a first number of RAHT transform layers of the point cloud sequence enabling the RAHT attribute inter-prediction according to a value of the first syntax element; determining a second number of RAHT transform layers of a point cloud slice enabling the RAHT attribute inter-prediction according to the first number of RAHT transform layers; and performing attribute encoding on the point cloud slice based on the second number of RAHT transform layers.
[0481] It can be understood that the memory 2202 in the embodiments of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. The non-volatile memory can be a Read-Only Memory (ROM), a Programmable ROM (PROM), an Erasable PROM (EPROM), an Electrically EPROM (EEPROM), or a flash memory. The volatile memory can be a Random Access Memory (RAM) used as an external cache. By way of example, and not limitation, many forms of RAM can be used, such as a Static RAM (SRAM), a Dynamic RAM (DRAM), a Synchronous DRAM (SDRAM), a Double Data Rate SDRAM (DDR SDRAM), an Enhanced SDRAM (ESDRAM), a Synchlink DRAM (SLDRAM), and a Direct Rambus RAM (DRRAM). The description of the memory 2202 herein is intended to include, but not be limited to, these and any other suitable types of memory.
[0482] The processor 2201 can be an integrated circuit chip having a processing capability for signals. In implementation, each step of the point cloud attribute encoding method described above can be completed by integrated logic circuits of hardware in the processor 2201 or instructions in the form of software. The processor 2201 described above can be a general processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic devices, discrete gates or transistor logic devices, discrete hardware components. The methods, steps and logic block diagrams disclosed in the embodiments of the present application can be implemented or executed. The general processor can be a microprocessor or the processor can also be any conventional processor. The steps of the method disclosed in combination with the embodiments of the present application can be directly embodied as a hardware decoding processor for execution, or a combination of hardware and software modules in the decoding processor for execution. The software module can be located in a random access memory, a flash memory, a read only memory, a programmable read only memory or an electrically erasable programmable memory, a register or other mature storage medium in the art. The storage medium is located in the memory 2202, and the processor 2201 reads the information in the memory 2202, and combines the hardware to complete the steps of the method described above. It can be understood that the embodiments described in the present application can be realized by hardware, software, firmware, middleware, microcode or their combination. For hardware implementation, the processing unit can be realized in one or more ASICs, DSPs, digital signal processing devices (DSPDs), programmable logic devices (PLDs), FPGAs, general processors, controllers, microcontrollers, microprocessors, other electronic units for executing functions described in the present application or their combination. For software implementation, the technology described in the present application can be realized by modules (such as processes, functions, etc.) for executing functions described in the present application. The software code can be stored in the memory and executed by the processor. The memory can be implemented in the processor or outside the processor. Alternatively, as another embodiment, the processor 2201 is also configured to execute the point cloud attribute encoding method described in any one of the preceding embodiments when running the computer program.
[0483] Referring to FIG. 23, a structural block diagram of a decoder provided by an example embodiment of the present application is shown. The decoder can include one or more of the following components: a processor 2301, a memory 2302. The various components are coupled by a bus system. It is understood that the bus system is used for communication among the components. The bus system includes a data bus to facilitate the transfer of data, a control bus to facilitate the transfer of control information, and a state line bus to facilitate the transfer of state information.
[0484] The memory 2302 is configured to store a computer program capable of running on the processor 2301; and the processor 2301 is configured to execute the following steps when running the computer program:
[0485] acquire a first syntax element in an attribute parameter set of a point cloud sequence from a bitstream; determine a number of RAHT transform layers of RAHT attribute inter-prediction enabled for the point cloud sequence according to a value of the first syntax element; and perform attribute decoding on a point cloud slice based on the number of RAHT transform layers.
[0486] Alternatively,
[0487] acquire a first syntax element in an attribute parameter set of a point cloud sequence and a third syntax element in an attribute block header of a point cloud slice from a bitstream; determine a first number of RAHT transform layers of RAHT attribute inter-prediction enabled for the point cloud sequence according to a value of the first syntax element; determine a second number of RAHT transform layers of RAHT attribute inter-prediction enabled for the point cloud slice according to a value of the third syntax element; and perform attribute decoding on the point cloud slice based on the first number of RAHT transform layers and the second number of RAHT transform layers.
[0488] It is to be appreciated that the memory 2302 in the embodiments of this application can be volatile, nonvolatile, or a combination of both. By way of example, the nonvolatile memory can be read-only memory (ROM), programmable ROM (PROM), erasable PROM (EPROM), electrically EPROM (EEPROM), or flash memory. The volatile memory can be random access memory (RAM), which acts as external cache. By way of example, and not limitation, many forms of RAM are available, such as Static RAM (SRAM), Dynamic RAM (DRAM), Synchronous DRAM (SDRAM), Double-Data Rate SDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM), SynchBurst DRAM (SLDRAM), and direct Rambus RAM (DRRAM). The memory 2302 described herein are intended to include, without being limited to, these and any other suitable types of memory.
[0489] The processor 2301 can be an integrated circuit chip having a processing capability for signals. In implementation, each step of the attribute decoding method of the point cloud can be completed by integrated logic circuits of hardware in the processor 2301 or instructions in the form of software. The processor 2301 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 gates or transistor logic devices, discrete hardware components. Each method, step and logic block diagram disclosed in the embodiments of the present application can be implemented or executed. The general-purpose processor can be a microprocessor or any conventional processor. The steps of the method disclosed in combination with the embodiments of the present application can be directly embodied as a hardware decoding processor for execution, or a combination of hardware and software modules in the decoding processor for execution. The software module can be located in a random access memory, a flash memory, a read-only memory, a programmable read-only memory or an electrically erasable programmable memory, a register or other mature storage medium in the art. The storage medium is located in the memory 2302, and the processor 2301 reads the information in the memory 2302 and combines the hardware to complete the steps of the above method. It can be understood that the embodiments described in the present application can be realized by hardware, software, firmware, middleware, microcode or their combination. For hardware implementation, the processing unit can be realized in one or more ASICs, DSPs, digital signal processing devices (DSPDs), programmable logic devices (PLDs), FPGAs, general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for executing functions described in the present application or their combination. For software implementation, the technology described in the present application can be realized by modules (such as processes, functions, etc.) for executing functions described in the present application. The software code can be stored in the memory and executed by the processor. The memory can be implemented in the processor or outside the processor. Alternatively, as another embodiment, the processor 2301 is also configured to execute the attribute decoding method of the point cloud in any one of the preceding embodiments when running the computer program.
[0490] The embodiment of the present application further provides a nonvolatile computer readable storage medium for storing a code stream, the code stream being generated by using the attribute encoding method of the point cloud of the encoder or being decoded by using the attribute decoding method of the point cloud of the decoder, wherein the attribute encoding method of the point cloud is the attribute encoding method of the point cloud described in the above embodiments, and the attribute decoding method of the point cloud is the attribute decoding method of the point cloud described in the above embodiments.
[0491] The embodiment of the present application further provides a computer program product, which comprises computer instructions stored in a computer readable storage medium, and a processor acquires the computer instructions from the computer readable storage medium, and executes the computer instructions to implement the attribute encoding method of the point cloud or the attribute decoding method of the point cloud described in the above embodiments.
[0492] Those skilled in the art can realize that, in one or more examples described above, the functions described in the embodiments of the present application can be implemented by hardware, software, firmware or any combination thereof. When implemented by software, the functions can be stored in a computer readable medium or transmitted as one or more instructions or codes on a computer readable medium. The computer readable medium includes a computer storage medium and a communication medium, wherein the communication medium includes any medium that facilitates the transmission of computer programs from one place to another. The storage medium can be any available medium accessible by a general or special purpose computer.
[0493] The above description is only optional embodiments of the present application, and does not limit the present application. Any modification, equivalent replacement, improvement, etc. made within the spirit and principle of the present application shall be included in the protection scope of the present application.
Claims
1. A point cloud attribute decoding method, characterized in that: The method comprises: Obtain the first syntax element in the attribute parameter set of the point cloud sequence from the bitstream; Determining, according to the value of the first syntax element, the number of RAHT transform layers for enabling RAHT attribute inter-frame prediction for the point cloud sequence; Based on the number of RAHT transform layers, attribute decoding is performed on the point cloud slices.
2. The method according to claim 1, characterized in that The performing attribute decoding on the point cloud slice based on the RAHT transformation layer number includes: When the index of the RAHT layer is less than the index of the RAHT root node layer, and the index of the RAHT layer is greater than the difference between the RAHT root node layer index and the number of RAHT transformation layers, obtaining, from the bitstream, indication information of a prediction mode corresponding to the RAHT layer, where the prediction mode is inter prediction or intra prediction; The RAHT layer is attribute-decoded based on the prediction mode indicated by the indication information.
3. The method according to claim 2, characterized in that The performing attribute decoding on the point cloud slice based on the number of RAHT transformation layers further includes: When the index of the RAHT layer is less than or equal to the difference between the RAHT root node layer index and the number of RAHT transform layers, obtaining a second syntax element in the attribute parameter set, where a value of the second syntax element is used to indicate whether prediction is used; When the value of the second syntax element indicates that prediction is used, attribute decoding of the RAHT layer is performed by intra prediction; When the value of the second syntax element indicates that prediction is not used, the RAHT layer is not attribute-decoded in a prediction manner.
4. The method according to claim 2, characterized in that The performing attribute decoding on the RAHT layer based on the prediction mode indicated by the indication information includes: Determining, based on the prediction mode indicated by the indication information, a predicted attribute value of a node in the RAHT layer; The node attribute of the node is reconstructed based on the attribute prediction value of the node and the transform coefficient residual obtained by dequantization.
5. The method according to claim 4, characterized in that When the prediction mode is inter-frame prediction, the attribute prediction value of the node in the RAHT layer is predicted based on the attribute reconstructed value of the corresponding co-located node of the node in the reference frame; In the case where the prediction mode is intra-frame prediction, the attribute prediction value of the node in the RAHT layer is predicted based on the attribute reconstruction value of the adjacent node corresponding to the node in the current frame.
6. A point cloud attribute encoding method, characterized in that: The method comprises: Determining a first syntax element in an attribute parameter set of a point cloud sequence; Determining, according to the value of the first syntax element, the number of RAHT transform layers for enabling RAHT attribute inter-frame prediction for the point cloud sequence; Attribute encoding is performed on the point cloud slices based on the number of RAHT transform layers.
7. The method according to claim 6, characterized in that The performing attribute encoding on the point cloud slice based on the number of RAHT transformation layers includes: When the index of the RAHT layer is less than the index of the RAHT root node layer, and the index of the RAHT layer is greater than the difference between the RAHT root node layer index and the number of RAHT transform layers, determining a prediction mode corresponding to the RAHT layer, where the prediction mode is inter prediction or intra prediction; performing attribute encoding on the RAHT layer based on the prediction mode; Encode indication information of the prediction mode corresponding to the RAHT layer into the bitstream.
8. The method according to claim 7, characterized in that The method of encoding attributes of the point cloud slice based on the first syntax element in the attribute parameter set of the point cloud sequence further includes: When the index of the RAHT layer is less than or equal to the difference between the RAHT root node layer index and the number of RAHT transform layers, obtaining a second syntax element in the attribute parameter set, where a value of the second syntax element is used to indicate whether prediction is used; When the value of the second syntax element indicates that prediction is used, encoding the RAHT layer attribute by intra prediction; When the value of the second syntax element indicates that prediction is not used, the RAHT layer is not attribute-encoded by prediction.
9. The method according to claim 7, characterized in that The performing attribute encoding on the RAHT layer based on the prediction mode includes: Determining attribute prediction values of nodes in the RAHT layer based on the prediction mode; determining, based on the attribute prediction value and the node attribute of the node, a transform coefficient residual, the transform coefficient residual being a residual between a first transform coefficient obtained by transforming the attribute prediction value and a second transform coefficient obtained by transforming the node attribute of the node; The transform coefficient residual is encoded.
10. The method according to claim 9, characterized in that When the prediction mode is inter-frame prediction, the attribute prediction value of the node in the RAHT layer is predicted based on the attribute reconstructed value of the corresponding co-located node of the node in the reference frame; In the case where the prediction mode is intra-frame prediction, the attribute prediction value of the node in the RAHT layer is predicted based on the attribute reconstruction value of the adjacent node corresponding to the node in the current frame.
11. A method for decoding attributes of a point cloud, characterized in that: The method comprises: Obtain the first syntax element in the attribute parameter set of the point cloud sequence and the third syntax element in the attribute block header of the point cloud slice from the codestream; Determining, according to the value of the first syntax element, a first RAHT transform layer number for enabling RAHT attribute inter-frame prediction for the point cloud sequence; Determining, according to the value of the third syntax element, a second RAHT transform layer number for enabling RAHT attribute inter-frame prediction for the point cloud slice; Based on the first RAHT transform level and the second RAHT transform level, attribute decoding is performed on the point cloud slice.
12. The method according to claim 11, characterized in that The performing attribute decoding on the point cloud slice based on the first RAHT transform level and the second RAHT transform level includes: When the first RAHT transform number of levels is greater than or equal to the second RAHT transform number of levels, attribute decoding is performed on the point cloud slice based on the second RAHT transform number of levels.
13. The method according to claim 12, characterized in that The performing attribute decoding on the point cloud slice based on the second RAHT transform layer number includes: When the index of the RAHT layer is less than the index of the RAHT root node layer, and the index of the RAHT layer is greater than the difference between the RAHT root node layer index and the number of the second RAHT transformation layers, obtaining, from the bitstream, indication information of a prediction mode corresponding to the RAHT layer, where the prediction mode is inter prediction or intra prediction; The RAHT layer is attribute-decoded based on the prediction mode indicated by the indication information.
14. The method according to claim 12, characterized in that The performing attribute decoding on the point cloud slice based on the second RAHT transform level further includes: When the index of the RAHT layer is less than or equal to the difference between the RAHT root node layer index and the second RAHT transform layer number, obtaining a second syntax element in the attribute parameter set, where a value of the second syntax element is used to indicate whether prediction is used; When the value of the second syntax element indicates that prediction is used, attribute decoding of the RAHT layer is performed by intra prediction; When the value of the second syntax element indicates that prediction is not used, the RAHT layer is not attribute-decoded in a prediction manner.
15. The method according to claim 12, characterized in that The performing attribute decoding on the RAHT layer based on the prediction mode includes: Determining attribute prediction values of nodes in the RAHT layer based on the prediction mode; The node attribute of the node is reconstructed based on the attribute prediction value of the node and the transform coefficient residual obtained by dequantization.
16. The method according to claim 15, characterized in that When the prediction mode is inter-frame prediction, the attribute prediction value of the node in the RAHT layer is predicted based on the attribute reconstructed value of the corresponding co-located node of the node in the reference frame; In the case where the prediction mode is intra-frame prediction, the attribute prediction value of the node in the RAHT layer is predicted based on the attribute reconstruction value of the adjacent node corresponding to the node in the current frame.
17. The method according to claim 12, wherein: The method further comprises: When the number of the first RAHT transform layers is less than the number of the second RAHT transform layers, attribute decoding of the point cloud slice is terminated.
18. The method according to claim 12, characterized in that The method further comprises: When the first RAHT transform layer number is less than the second RAHT transform layer number, obtaining, from the bitstream, indication information of a prediction mode corresponding to a RAHT layer whose index is less than or equal to a difference between a RAHT root node layer index and the first RAHT transform layer number; In a case where the prediction mode indicated by the indication information includes inter-frame prediction, terminating attribute decoding of the point cloud slice; When the prediction mode indicated by the indication information does not include inter-frame prediction, attribute decoding is performed on the RAHT layer based on the second RAHT transformation layer number.
19. A point cloud attribute encoding method, characterized in that: The method comprises: Determining a first syntax element in an attribute parameter set of a point cloud sequence; Determining, according to the value of the first syntax element, a first RAHT transform layer number for enabling RAHT attribute inter-frame prediction for the point cloud sequence; Determining, according to the first RAHT transformation level, a second RAHT transformation level for enabling RAHT attribute inter-frame prediction for the point cloud slice; Attribute encoding is performed on the point cloud slice based on the second RAHT transform level.
20. The method according to claim 19, characterized in that The determining, according to the first RAHT transformation level, a second RAHT transformation level for enabling RAHT attribute inter-frame prediction for the point cloud slice includes: Determine the number of structural layers of the RAHT tree corresponding to the point cloud slice; When the number of structural layers is less than or equal to the first number of RAHT transform layers, the second number of RAHT transform layers for enabling RAHT attribute inter-frame prediction for the point cloud slice is determined based on the number of structural layers.
21. The method according to claim 20, characterized in that The determining, according to the first RAHT transform level, a second RAHT transform level for enabling RAHT attribute inter-frame prediction for the point cloud slice further includes: When the number of structure layers is greater than the first number of RAHT transform layers, the first number of RAHT transform layers is determined as the second number of RAHT transform layers for enabling RAHT attribute inter-frame prediction for the point cloud slice.
22. The method according to claim 20 or 21, characterized in that The performing attribute encoding on the point cloud slice based on the second RAHT transform layer number includes: When the index of the RAHT layer is less than the index of the RAHT root node layer, and the index of the RAHT layer is greater than the difference between the RAHT root node layer index and the number of the second RAHT transform layers, determining a prediction mode corresponding to the RAHT layer, where the prediction mode is inter prediction or intra prediction; performing attribute encoding on the RAHT layer based on the prediction mode; Encode indication information of the prediction mode corresponding to the RAHT layer into the bitstream.
23. The method according to claim 22, characterized in that The performing attribute encoding on the point cloud slice based on the second RAHT transform level further includes: When the index of the RAHT layer is less than or equal to the difference between the RAHT root node layer index and the second RAHT transform layer number, obtaining a second syntax element in the attribute parameter set, where a value of the second syntax element is used to indicate whether prediction is used; When the value of the second syntax element indicates that prediction is used, encoding the RAHT layer attribute by intra prediction; When the value of the second syntax element indicates that prediction is not used, the RAHT layer is not attribute-encoded by prediction.
24. The method according to claim 22, characterized in that The performing attribute encoding on the RAHT layer based on the prediction mode includes: Determining attribute prediction values of nodes in the RAHT layer based on the prediction mode; determining, based on the attribute prediction value and the node attribute of the node, a transform coefficient residual, the transform coefficient residual being a residual between a first transform coefficient obtained by transforming the attribute prediction value and a second transform coefficient obtained by transforming the node attribute of the node; The transform coefficient residual is encoded.
25. The method according to claim 19, wherein The determining, according to the first RAHT transform level, a second RAHT transform level for enabling RAHT attribute inter-frame prediction for the point cloud slice further includes: When the number of structural layers is greater than the number of the first RAHT transformation layers, determining the second RAHT transformation layer number for enabling RAHT attribute inter-frame prediction for the point cloud slice based on the number of structural layers; The method further comprises: When the index of the RAHT layer is less than the index of the RAHT root node layer, and the index of the RAHT layer is greater than the difference between the RAHT root node layer index and the number of the first RAHT transform layers, determining a prediction mode corresponding to the RAHT layer from prediction modes including inter prediction; When the index of the RAHT layer is less than the index of the RAHT root node layer, and the index of the RAHT layer is less than or equal to the difference between the RAHT root node layer index and the number of the first RAHT transform layers, determining a prediction mode corresponding to the RAHT layer from prediction modes that do not include inter prediction; performing attribute encoding on the RAHT layer based on the prediction mode; Encode indication information of the prediction mode corresponding to the RAHT layer into the bitstream.
26. A decoder, characterized in that The decoder comprises: A decoding unit, configured to obtain a first syntax element in an attribute parameter set of a point cloud sequence from a bitstream; The decoding unit is configured to determine, according to a value of the first syntax element, a number of RAHT transform layers for enabling RAHT attribute inter-frame prediction for the point cloud sequence; The decoding unit is used to perform attribute decoding on the point cloud slice based on the number of RAHT transformation layers.
27. An encoder, characterized in that The encoder comprises: An encoding unit, configured to determine a first syntax element in an attribute parameter set of a point cloud sequence; The encoding unit is configured to determine, according to a value of the first syntax element, a number of RAHT transform layers for enabling RAHT attribute inter-frame prediction for the point cloud sequence; The encoding unit is used to perform attribute encoding on the point cloud slice based on the number of RAHT transformation layers.
28. A decoder, characterized in that The decoder comprises: A decoding unit is used to obtain the first syntax element in the attribute parameter set of the point cloud sequence and the attribute block header of the point cloud slice from the code stream. The third grammatical element of The decoding unit is configured to determine, according to a value of the first syntax element, a first RAHT transform layer number for enabling RAHT attribute inter-frame prediction for the point cloud sequence; The decoding unit is configured to determine, according to a value of the third syntax element, a second RAHT transform layer number for enabling RAHT attribute inter-frame prediction for the point cloud slice; The decoding unit is configured to perform attribute decoding on the point cloud slice based on the first RAHT transform level and the second RAHT transform level.
29. An encoder, characterized in that The encoder comprises: An encoding unit, configured to determine a first syntax element in an attribute parameter set of a point cloud sequence; The encoding unit is configured to determine, according to a value of the first syntax element, a first RAHT transform layer number for enabling RAHT attribute inter-frame prediction for the point cloud sequence; The encoding unit is configured to determine, according to the first RAHT transformation level, a second RAHT transformation level for enabling RAHT attribute inter-frame prediction for the point cloud slice; The encoding unit is configured to perform attribute encoding on the point cloud slice based on the second RAHT transform level.
30. A decoder, characterized in that The decoder includes a memory and a processor, the memory is used to store a computer program running on the processor; the processor is used to execute the point cloud attribute decoding method according to any one of claims 1 to 5, or the point cloud attribute decoding method according to any one of claims 11 to 18 when running the computer program.
31. An encoder, characterized in that The encoder includes a memory and a processor, the memory is used to store a computer program running on the processor; the processor is used to execute the point cloud attribute encoding method according to any one of claims 6 to 10, or the point cloud attribute encoding method according to any one of claims 19 to 25 when running the computer program.
32. A non-volatile computer-readable storage medium for storing a code stream, characterized in that: The code stream is generated by utilizing a point cloud encoding method of an encoder, or the code stream is decoded by utilizing a point cloud decoding method of a decoder, wherein the point cloud encoding method includes the point cloud attribute encoding method according to any one of claims 6 to 10, or the point cloud attribute encoding method according to any one of claims 19 to 25, and the point cloud decoding method includes the point cloud attribute decoding method according to any one of claims 1 to 5, or the point cloud attribute decoding method according to any one of claims 11 to 18.
33. A computer program product, characterized in that The computer program product includes computer instructions, which are stored in a computer-readable storage medium. The processor obtains the computer instructions from the computer-readable storage medium, and the processor executes the computer instructions to implement the point cloud attribute decoding method according to any one of claims 1 to 5, or the point cloud attribute decoding method according to any one of claims 11 to 18, or the point cloud attribute encoding method according to any one of claims 6 to 10, or the point cloud attribute encoding method according to any one of claims 19 to 25.
Citation Information
Patent Citations
Point cloud encoding and decoding method, encoder, decoder, and computer storage medium
CN113826385A
Region-adaptive hierarchical transform and entropy coding for point cloud compression, and corresponding decompression
US20170347100A1
Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
US20220028120A1