Encoding and decoding methods and apparatuses, encoder, decoder, and storage medium

By combining position, layer number, and occupancy information to determine the transformation coefficients, the problem of inaccurate reference block determination in point cloud compression is solved, thus improving encoding and decoding efficiency.

WO2026064925A1PCT designated stage Publication Date: 2026-04-02GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 4 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-09-24
Publication Date
2026-04-02

AI Technical Summary

Technical Problem

In geometry-based point cloud compression, existing technologies suffer from inaccurate prediction of transform coefficients due to insufficient determination of the reference block, which affects coding efficiency.

Method used

By combining the location information, layer information, and occupancy information of point cloud blocks, the transformation coefficients of candidate reference blocks are determined, thereby improving the prediction transformation process.

Benefits of technology

It improves encoding and decoding efficiency by more accurately determining the transform coefficients, thereby increasing encoding efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024120766_02042026_PF_FP_ABST
    Figure CN2024120766_02042026_PF_FP_ABST
Patent Text Reader

Abstract

The present application relates to the technical field of encoding and decoding, and provides encoding and decoding methods and apparatuses, an encoder, a decoder, and a storage medium, which can solve the problem of low encoding efficiency. The method comprises: determining first location information of a current block and first occupancy information of the current block; on the basis of the first location information and layer number information of the current block, determining a candidate reference block of the current block; and on the basis of the first occupancy information and second occupancy information of the candidate reference block, obtaining a transform coefficient of the current block. The method is applicable to point cloud encoding and decoding.
Need to check novelty before this filing date? Find Prior Art

Description

Coding method and device, encoder, decoder and storage medium TECHNICAL FIELD

[0001] The present application belongs to the technical field of coding, and particularly relates to a coding method and device, an encoder, a decoder and a storage medium. BACKGROUND

[0002] In the Geometry-based Point Cloud Compression (G-PCC) technology, the geometry information and attribute information of each point cloud are encoded separately. Generally, the geometry information of the point cloud is encoded first, the geometry information of the point cloud is reconstructed, and then the attribute information of the point cloud is encoded based on the reconstructed geometry information. When the attribute information of the point cloud is encoded based on the reconstructed geometry information, three kinds of transformation methods are usually used for predicting transformation, namely, Predicting Transform (PT), Lifting Transform (LT) and Region Adaptive Hierarchical Transform (RAHT).

[0003] When the predicting transformation is based on the RAHT, the reference block of the current block can be determined based on the position information of the current block, and the transformation coefficient of the reference block is determined as the predicting transformation coefficient of the current block.

[0004] However, in the above predicting transformation process, the reference block is determined based on the position information of the current block, and the position information can only represent the position of the current block in space, so that the determined reference block may not be accurate enough, thereby causing the predicting transformation coefficient of the current block to be inaccurate, and further affecting the coding efficiency.

[0005] SUMMARY

[0006] The embodiments of the present application provide a coding method and device, an encoder, a decoder and a storage medium, which can solve the problem of low coding efficiency.

[0007] In a first aspect, a coding method is provided, which includes: determining first position information of a current block and first occupancy information of the current block; determining a candidate reference block of the current block based on the first position information and layer information of the current block; obtaining a transformation coefficient of the current block based on the first occupancy information and second occupancy information of the candidate reference block; and encoding based on the transformation coefficient of the current block to obtain an attribute code stream.

[0008] In a possible implementation manner, the obtaining of the transformation coefficient of the current block based on the first occupancy information and the second occupancy information of the candidate reference block includes:

[0009] In a case where the difference between the first occupancy information and the second occupancy information is less than or equal to a first threshold, the first information of the candidate reference block is determined as the transform coefficient of the current block.

[0010] In a possible implementation, the first information of the candidate reference block can include at least one of the following:

[0011] a transform coefficient of the candidate reference block;

[0012] a sum of attribute information of a point in the candidate reference block;

[0013] a sum of attribute information of a sub-block of the candidate reference block;

[0014] a preset constant;

[0015] a transform coefficient of the candidate reference block weighted by the filter;

[0016] a sum of attribute information of a point in the candidate reference block weighted by the filter;

[0017] a sum of attribute information of a sub-block of the candidate reference block weighted by the filter.

[0018] In a possible implementation, the transform coefficient of the current block is obtained based on the first occupancy information and the second occupancy information of the candidate reference block, and includes the following steps.

[0019] In a case where the difference between the first occupancy information and the second occupancy information is greater than the first threshold, the second information of a neighboring block of the current block or a coefficient obtained by performing RAHT on the current block is determined as the transform coefficient of the current block.

[0020] In a possible implementation, the first occupancy information includes N first bits, and each first bit is used to represent whether a sub-block of the current block is occupied; the second occupancy information includes N second bits, and each second bit is used to represent whether a sub-block of the candidate reference block is occupied, and N is an integer greater than 1.

[0021] In a possible implementation, the difference between the first occupancy information and the second occupancy information is a number of different bits in the N first bits and the N second bits; or the difference between the first occupancy information and the second occupancy information is a number of 1s in a result of performing bitwise XOR operation on the N first bits and the N second bits.

[0022] In a possible implementation, the current block is a node in a first transform tree, a layer number of the current block is used to represent a layer number of the current block in the first transform tree, and the first transform tree is a RAHT transform tree.

[0023] The encoding method provided by the embodiments of the present application can first determine first position information of a current block and first occupancy information of the current block, then determine a candidate reference block of the current block based on the first position information and layer information of the current block, and obtain transform coefficients of the current block based on the first occupancy information and second occupancy information of the candidate reference block, and finally obtain an attribute code stream based on encoding of the transform coefficients of the current block. In this way, when the transform coefficients of the current block are determined, not only the position information and the layer information can be used for determination, but also the occupancy information can be used for determination. Since the position information and the layer information can represent the position of a point in the current block in space, and the occupancy information can represent the occupancy of the point in the point cloud, the position information, the layer information and the occupancy information can be combined to more accurately determine the transform coefficients of the current block, thereby improving the encoding efficiency.

[0024] In a second aspect, a decoding method is provided, which includes: parsing a geometry code stream of a point cloud to obtain second position information of a current block to be decoded; determining a candidate reference block of the current block based on the second position information and layer information of the current block; and obtaining transform coefficients of the current block based on first occupancy information of the current block and second occupancy information of the candidate reference block.

[0025] In a possible implementation, the transform coefficients of the current block are obtained based on the first occupancy information of the current block and the second occupancy information of the candidate reference block, including:

[0026] In a case where a difference between the first occupancy information and the second occupancy information is less than or equal to a first threshold, the first information of the candidate reference block is determined as the transform coefficients of the current block.

[0027] In a possible implementation, the first information of the candidate reference block can include at least one of the following:

[0028] transform coefficients of the candidate reference block;

[0029] a sum of attribute information of points in the candidate reference block;

[0030] a sum of attribute information of sub-blocks of the candidate reference block;

[0031] a preset constant;

[0032] transform coefficients of the candidate reference block weighted by a filter;

[0033] a sum of attribute information of points in the candidate reference block weighted by a filter;

[0034] a sum of attribute information of sub-blocks of the candidate reference block weighted by a filter.

[0035] In a possible implementation, the transform coefficients of the current block are obtained based on the first occupancy information of the current block and the second occupancy information of the candidate reference block, including:

[0036] In a case where the difference between the first occupancy information and the second occupancy information is greater than the first threshold, the transform coefficients of the current block are determined as the second information or the parsed attribute bitstream of the neighboring block of the current block.

[0037] In a possible implementation, the first occupancy information includes N first bits, each of which is used to represent whether a sub-block of the current block is occupied; the second occupancy information includes N second bits, each of which is used to represent whether a sub-block of the candidate reference block is occupied, and N is an integer greater than 1.

[0038] In a possible implementation, the difference between the first occupancy information and the second occupancy information is the number of different bits in the N first bits and the N second bits; or the difference between the first occupancy information and the second occupancy information is the number of 1s in the result of the bitwise XOR operation of the N first bits and the N second bits.

[0039] In a possible implementation, the current block is a node in a first transform tree, the level information of the current block is used to represent the level of the current block in the first transform tree, and the first transform tree is a RAHT transform tree.

[0040] The decoding method provided by the embodiments of the present application can first parse the geometry bitstream of the point cloud to obtain the second position information of the current block to be decoded, then determine the candidate reference block of the current block based on the second position information and the level information of the current block, and finally obtain the transform coefficients of the current block based on the first occupancy information of the current block and the second occupancy information of the candidate reference block. In this way, when determining the transform coefficients of the current block to be decoded, not only the position information and the level information can be used for determination, but also the occupancy information can be used for determination. Since the position information and the level information can represent the position of the points in the current block in the space, and the occupancy information can represent the occupancy of the current block by the points in the point cloud, the transform coefficients of the current block can be more accurately determined by combining the position information, the level information and the occupancy information, thereby improving the decoding efficiency.

[0041] In a third aspect, an encoding apparatus is provided. The encoding apparatus is applied to an encoding end and includes a determining module, a predicting module, and an encoding module. The determining module is configured to determine first position information of a current block and first occupancy information of the current block. The predicting module is configured to determine a candidate reference block of the current block based on the first position information determined by the determining module and layer information of the current block, and obtain transform coefficients of the current block based on the first occupancy information and second occupancy information of the candidate reference block. The encoding module is configured to encode based on the transform coefficients of the current block to obtain an attribute bitstream.

[0042] In a possible implementation, the predicting module is specifically configured to, in a case where a difference between the first occupancy information and the second occupancy information is less than or equal to a first threshold, determine the first information of the candidate reference block as the transform coefficients of the current block.

[0043] In a possible implementation, the first information of the candidate reference block can include at least one of the following:

[0044] transform coefficients of the candidate reference block;

[0045] a sum of attribute information of points in the candidate reference block;

[0046] a sum of attribute information of sub-blocks of the candidate reference block;

[0047] a preset constant;

[0048] transform coefficients of the candidate reference block weighted by a filter;

[0049] a sum of attribute information of points in the candidate reference block weighted by a filter;

[0050] a sum of attribute information of sub-blocks of the candidate reference block weighted by a filter.

[0051] In a possible implementation, the predicting module is specifically configured to, in a case where the difference between the first occupancy information and the second occupancy information is greater than the first threshold, determine second information of a neighboring block of the current block or coefficients obtained by performing RAHT on the current block as the transform coefficients of the current block.

[0052] In a possible implementation, the first occupancy information includes N first bits, and each first bit is used to represent whether a sub-block of the current block is occupied; the second occupancy information includes N second bits, and each second bit is used to represent whether a sub-block of the candidate reference block is occupied, and N is an integer greater than 1.

[0053] In a possible implementation, the difference between the first occupancy information and the second occupancy information is the number of different bit positions between the N first bit positions and the N second bit positions; or, the difference between the first occupancy information and the second occupancy information is the number of 1s in a result obtained by performing an exclusive OR operation on the N first bit positions and the N second bit positions.

[0054] In a possible implementation, the current block is a node in a first transform tree, and the layer information of the current block is used to represent a layer number of the current block in the first transform tree, and the first transform tree is a RAHT transform tree.

[0055] In a fourth aspect, a decoding apparatus is provided, which is applied to a decoding end and includes a parsing module and a prediction module. The parsing module is configured to parse a geometry bitstream of a point cloud to obtain second position information of a current block to be decoded. The prediction module is configured to determine a candidate reference block of the current block based on the first position information obtained by the parsing module and layer information of the current block, and obtain transform coefficients of the current block based on first occupancy information of the current block and second occupancy information of the candidate reference block.

[0056] In a possible implementation, the prediction module is specifically configured to, in a case where the difference between the first occupancy information and the second occupancy information is less than or equal to a first threshold, determine the first information of the candidate reference block as the transform coefficients of the current block.

[0057] In a possible implementation, the first information of the candidate reference block can include at least one of the following:

[0058] a transform coefficient of the candidate reference block;

[0059] a sum of attribute information of points in the candidate reference block;

[0060] a sum of attribute information of sub-blocks of the candidate reference block;

[0061] a preset constant;

[0062] a transform coefficient of the candidate reference block weighted by a filter;

[0063] a sum of attribute information of points in the candidate reference block weighted by a filter;

[0064] a sum of attribute information of sub-blocks of the candidate reference block weighted by a filter.

[0065] In a possible implementation, the prediction module is specifically configured to, in a case where the difference between the first occupancy information and the second occupancy information is greater than the first threshold, determine second information of a neighboring block of the current block or a coefficient obtained by parsing an attribute bitstream as the transform coefficients of the current block.

[0066] In a possible implementation, the first occupancy information includes N first bits, each of which is used to represent whether a sub-block of the current block is occupied; and the second occupancy information includes N second bits, each of which is used to represent whether a sub-block of the candidate reference block is occupied, N is an integer greater than 1.

[0067] In a possible implementation, a difference between the first occupancy information and the second occupancy information is a number of different bits in the N first bits and the N second bits; or, a difference between the first occupancy information and the second occupancy information is a number of 1s in a result of performing an exclusive-OR operation on the N first bits and the N second bits.

[0068] In a possible implementation, the current block is a node in a first transform tree, and the level information of the current block is used to represent a level of the current block in the first transform tree, and the first transform tree is a RAHT transform tree.

[0069] In a fifth aspect, an encoder is provided, which includes a processor and a memory storing processor-executable instructions, when executed, cause the processor to implement the encoding method in the first aspect or any possible implementation of the first aspect.

[0070] In a sixth aspect, a decoder is provided, which includes a processor and a memory storing processor-executable instructions, when executed, cause the processor to implement the decoding method in the second aspect or any possible implementation of the second aspect.

[0071] In a seventh aspect, a chip is provided, which includes a processor and a communication interface, the communication interface is coupled to the processor, and the processor is configured to run a program or instructions, and implement the encoding method in the first aspect or any possible implementation of the first aspect, or implement the decoding method in the second aspect or any possible implementation of the second aspect.

[0072] In an eighth aspect, a computer storage medium is provided, which stores a computer program, when executed by a processor, can implement the encoding method in the first aspect or any possible implementation of the first aspect, or implement the decoding method in the second aspect or any possible implementation of the second aspect.

[0073] In a ninth aspect, a computer storage medium is provided, which is configured to store an attribute code stream generated by the encoding method in the first aspect or any possible implementation of the first aspect.

[0074] In a tenth aspect, a computer program product is provided, including computer program instructions, which, when executed, can implement the encoding method of the first aspect or any possible implementation manner of the first aspect, or implement the decoding method of the second aspect or any possible implementation manner of the second aspect.

[0075] Effects of the third aspect to the ninth aspect can refer to the descriptions of the first aspect or the second aspect, and details are not described herein again to avoid repetition. BRIEF DESCRIPTION OF DRAWINGS

[0076] FIG. 1 is a schematic diagram of a possible three-dimensional point cloud image according to an embodiment of the present application;

[0077] FIG. 2 is a schematic diagram of a possible point cloud image and point cloud data according to an embodiment of the present application;

[0078] FIG. 3 is a schematic diagram of a point cloud coding system architecture according to an embodiment of the present application;

[0079] FIG. 4A is a schematic block diagram of a point cloud encoder according to an embodiment of the present application;

[0080] FIG. 4B is a schematic block diagram of a point cloud decoder according to an embodiment of the present application;

[0081] FIG. 5 is a schematic diagram of a RAHT process according to an embodiment of the present application;

[0082] FIG. 6 is a schematic diagram of a RAHT and inverse RAHT process according to an embodiment of the present application;

[0083] FIG. 7 is a schematic diagram of a RAHT transform tree according to an embodiment of the present application;

[0084] FIG. 8 is a schematic diagram of a flow of an encoding method according to an embodiment of the present application;

[0085] FIG. 9 is a schematic diagram of a placeholder information according to an embodiment of the present application;

[0086] FIG. 10 is a schematic diagram of a placeholder information according to an embodiment of the present application;

[0087] FIG. 11 is a schematic diagram of a RAHT transform tree according to an embodiment of the present application;

[0088] FIG. 12A is a schematic diagram of a flow of an encoding method according to an embodiment of the present application;

[0089] FIG. 12B is a schematic diagram of a flow of an encoding method according to an embodiment of the present application;

[0090] FIG. 13 is a third diagram of a RAHT transform tree according to an embodiment of the present application;

[0091] FIG. 14 is a first flowchart of a decoding method according to an embodiment of the present application;

[0092] FIG. 15A is a second flowchart of a decoding method according to an embodiment of the present application;

[0093] FIG. 15B is a third flowchart of a decoding method according to an embodiment of the present application;

[0094] FIG. 16 is a first possible structure diagram of an encoding device according to an embodiment of the present application;

[0095] FIG. 17 is a second possible structure diagram of an encoding device according to an embodiment of the present application;

[0096] FIG. 18 is a first possible structure diagram of a decoding device according to an embodiment of the present application;

[0097] FIG. 19 is a second possible structure diagram of a decoding device according to an embodiment of the present application;

[0098] FIG. 20 is a structure diagram of an encoder according to an embodiment of the present application;

[0099] FIG. 21 is a structure diagram of a decoder according to an embodiment of the present application. DETAILED DESCRIPTION

[0100] The technical solutions in the embodiments of the present application will be clearly described below with reference to the drawings in the embodiments of the present application. Obviously, the described embodiments are some but not all of the embodiments of the present application. Based on the embodiments in the present application, all other embodiments obtained by a person of ordinary skill in the art belong to the scope of protection of the present application.

[0101] In the description of the embodiments of the present application, "first", "second", and the like are used to distinguish similar objects, and are not used to describe a specific order or sequence. It should be understood that the terms used in this way can be interchanged under appropriate circumstances, so that the embodiments of the present application can be implemented in an order other than that illustrated or described herein, and the objects distinguished by "first", "second" are usually a class, not limited to the number of objects, for example, the first object can be one or more. In addition, "or" in the present application means at least one of the connected objects. For example, "A or B" covers three schemes, namely, scheme one: including A and not including B; scheme two: including B and not including A; scheme three: including A and including B. The character " / " generally represents that the objects before and after are in an "or" relationship.

[0102] In the description of the embodiments of the present application, "indication" can be a direct indication (or explicit indication) or an indirect indication (or implicit indication). The direct indication can be understood as that the sender explicitly informs the receiver of specific information, operations to be performed or requested results, etc. in the indication sent by the sender. The indirect indication can be understood as that the receiver determines the corresponding information according to the indication sent by the sender, or judges and determines the operations to be performed or the requested results according to the judgment result.

[0103] In the description of the embodiments of the present application, "at least one (term)", "at least one of" and the like refer to any one, any two or a combination of two or more of the objects contained therein. For example, at least one (term) of a, b and c can represent "a", "b", "c", "a and b", "a and c", "b and c", and "a, b and c", where a, b and c can be a single one or a plurality. Similarly, "at least two (terms)" refers to two or more, and has a similar meaning to "at least one (term)".

[0104] In the description of the embodiments of the present application, "a plurality of" means two or more. For example, a plurality of points means two or more points, and a plurality of sub-cubes means two or more sub-cubes. Similarly, at least two can also be used interchangeably with a plurality in some embodiments.

[0105] In the description of the embodiments of the present application, "include", "contain" or any other variant thereof is intended to cover non-exclusive inclusion, so that a process, method, article or device including a series of elements not only includes those elements, but also includes other elements not explicitly listed or inherent to such a process, method, article or device. Without more limitations, the element defined by the statement "including a" does not exclude the presence of another identical element in the process, method, article or device including the element.

[0106] The technical terms involved in the embodiments of the present application are explained below.

[0107] Point cloud: refers to a set of discrete points in space that express the spatial structure and surface properties of a three-dimensional object or a three-dimensional scene.

[0108] Point cloud data: a specific representation form of a point cloud, which includes points in the point cloud. According to the point cloud acquisition approach, point cloud data can be divided into three categories:

[0109] The first type of static point cloud: the object is static, and the device for acquiring the point cloud is also static;

[0110] The second type of dynamic point cloud: the object is moving, but the device for obtaining the point cloud is static.

[0111] The third type of dynamic point cloud: the device for obtaining the point cloud is moving.

[0112] It should be noted that in the embodiments of the present application, the concepts of point cloud and point cloud data can be interchangeable, that is, sometimes the point cloud can be referred to as point cloud data, or the point cloud data can be referred to as the point cloud.

[0113] Slice: after the point cloud is divided, a slice can be obtained, which can include all points in a frame of point cloud image, or can include part of the points in a frame of point cloud image.

[0114] PT: by performing spatial prediction on the point cloud data, the spatial correlation between adjacent points in the point cloud is used to reduce the redundancy of the data. Specifically, PT will predict the predicted attribute information of the current point or block based on the attribute information (such as color) of the already encoded point or block, and then encode and transmit the residual between the actual attribute information and the predicted attribute information.

[0115] LT: by using the spatial correlation in the point cloud data, a method similar to lifting wavelet transform is used to transform and encode the attribute information of the point cloud, so as to achieve the purpose of compressing the data.

[0116] RAHT: a kind of Haar wavelet transform, which transforms the attribute information of the point cloud from the spatial domain to the frequency domain, and further reduces the correlation between the attribute information of the point cloud.

[0117] Among them, PT and LT are based on the generation order of LOD (Level of Detail, level of detail) to predict and encode the attribute information of the point cloud; and RAHT is based on the division level of octree to adaptively transform and encode the attribute information of the point cloud from bottom to top.

[0118] The point cloud will be further explained and exemplarily illustrated in combination with FIG. 1 and FIG. 2.

[0119] The points in the point cloud contain geometry information for representing spatial positions and attribute information for representing appearance textures. The geometry information of a point can be three-dimensional coordinate information of the point. The attribute information of the point can include color information and / or reflectance information, etc. The color information of the point can be information on any color space, for example, the color information of the point can be RGB information of a pixel corresponding to the point, or can be luminance chroma (YCbCr, YUV) information of a pixel corresponding to the point. Y represents a luminance (Luma) component, Cb (U) represents a blue chroma component, and Cr (V) represents a red chroma component. U corresponds to Cb, and V corresponds to Cr. The reflectance information of the point cloud can be used to reflect the surface material of an object, and is usually represented by reflectance.

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

[0121] Exemplarily, as shown in FIG. 1, (a) in FIG. 1 shows a possible three-dimensional point cloud image, and (b) in FIG. 1 shows a partial enlarged view of the three-dimensional point cloud image. As can be seen, the point cloud surface is composed of densely distributed points.

[0122] Generally, a two-dimensional image has information expressed at each pixel point. Since the two-dimensional image has a regular distribution, it is not necessary to record the position information of the two-dimensional image. In contrast to the two-dimensional image, the points in the point cloud have randomness and irregularity in the three-dimensional space, and therefore the position of each point in the space needs to be recorded in order to completely represent an object in the three-dimensional space. Similar to the two-dimensional image, in the process of collecting point cloud data, the attribute information corresponding to each point also needs to be recorded.

[0123] Exemplarily, as shown in FIG. 2, (a) in FIG. 2 shows a possible point cloud image, which is a point cloud image that can support free-viewpoint viewing. (b) in FIG. 2 shows a possible data storage format of the point cloud data corresponding to the point cloud image. It can be understood that (a) in FIG. 2 shows six viewing dimensions of the point cloud image; the data storage format shown in (b) in FIG. 2 is composed of a point cloud file header information part and a data part, wherein the file header information includes a point cloud file format, a point cloud data representation type, a total number of points of the point cloud, and content of each point of the point cloud. For example, as shown in (b) in FIG. 2, the point cloud file format is a “.ply” format, the point cloud data is represented by ASCII code, the total number of points of the point cloud is 207242, and each point of the point cloud has three-dimensional coordinates (x, y, z) and color information (r, g, b).

[0124] At present, since the point cloud can flexibly and conveniently represent the spatial structure and surface attribute of a three-dimensional object or a three-dimensional scene, and the point cloud can be obtained by directly sampling a real object, the point cloud can provide strong reality under the premise of ensuring accuracy, so the application range of the point cloud is also very wide, for example, the point cloud can be applied to virtual reality games, computer-aided design, geographic information systems, automatic navigation systems, digital cultural heritage, free-viewpoint broadcasting, three-dimensional immersive remote presentation, and three-dimensional reconstruction of biological tissues and organs.

[0125] Generally, the collection of point clouds mainly has the following ways: computer generation, 3D laser scanning, 3D photogrammetry, etc. A computer can generate a point cloud of a virtual three-dimensional object and scene; 3D laser scanning can obtain a point cloud of a static real-world three-dimensional object or scene, which can obtain a point cloud of a million order per second; 3D photogrammetry can obtain a point cloud of a dynamic real-world three-dimensional object or scene, which can obtain a point cloud of a ten million order per second. Through these point cloud collection technologies, not only the cost and time period of obtaining point cloud data can be reduced, but also the accuracy of the obtained point cloud data can be improved. These point cloud collection technologies further promote the application of point clouds in real life. Since the way of obtaining point cloud data is constantly industrialized, it is possible to obtain a large amount of point cloud data. However, with the continuous growth of the demand for point cloud applications, the processing of massive point cloud data also faces the bottleneck of storage space and transmission bandwidth.

[0126] Taking a point cloud video with a frame rate of 30 fps (frames per second) as an example, the number of points of each frame of point cloud is 700,000, each point contains coordinate information xyz (float) and color information RGB (uchar), and the data volume of a 10s point cloud video is about 0.7 million * (4 Byte * 3 + 1 Byte * 3) * 30 fps * 10s = 3.15 GB. Correspondingly, the data volume of a two-dimensional video with a YUV sampling format of 4:2:0 and a frame rate of 30 fps and 1280*720 is about 1280*720*12bit*30frames*10s≈0.39GB, and the data volume of a 10s two-view three-dimensional video is about 0.39*2 = 0.78GB. As can be seen, the data volume of the point cloud video is much larger than that of the two-dimensional video and the three-dimensional video of the same length. Therefore, in order to better realize data management, save server storage space, and reduce transmission flow and transmission time between the server and the client, the point cloud compression (PCC) technology is proposed.

[0127] The system architecture to which the technical solutions of the present application are applied will be described exemplarily in combination with FIG. 3.

[0128] As shown in FIG. 3, the point cloud coding system 30 can include an encoding device 31 and a decoding device 32. The encoding device 31 is used to encode (which can be understood as compress) point cloud data to generate a code stream, and transmit the code stream to the decoding device 32. The decoding device 32 decodes the code stream generated by the encoding device 31 to obtain decoded point cloud data.

[0129] The encoding device 31 in the embodiments of the present application can be understood as a device with a point cloud encoding function, and the decoding device 32 can be understood as a device with a point cloud decoding function, that is, the encoding device 31 and the decoding device 32 in the embodiments of the present application can include a wider range of apparatuses, such as smart phones, desktop computers, mobile computing devices, notebook (for example, laptop) computers, tablet computers, set-top boxes, televisions, cameras, display devices, digital media players, point cloud game consoles, vehicle-mounted computers, etc.

[0130] In some embodiments, the encoding device 31 can transmit the code stream generated by encoding to the decoding device 32 via a channel 33 as shown in FIG. 3. The channel 33 can include one or more media and / or devices capable of transmitting the code stream generated by encoding from the encoding device 31 to the decoding device 32.

[0131] In an embodiment, channel 33 can include one or more communication media that enables encoded device 31 to transmit the coded stream generated by the encoding to decoding device 32 in real-time. In this example, encoded device 31 can modulate the coded stream generated by the encoding according to a communication standard and transmit the modulated coded stream to decoding device 32. The communication media can include a wireless communication medium, such as a radio frequency spectrum, for example. Alternatively, the communication media can also include a wired communication medium, such as one or more physical transmission lines.

[0132] In an embodiment, channel 33 can include a storage medium that can store the coded stream generated by the encoding of encoded device 31. The storage medium can include various local access data storage media, such as optical discs, DVDs, flash memory, and the like. In this example, decoding device 32 can retrieve the coded stream generated by the encoding from the storage medium.

[0133] In an embodiment, channel 33 can include a storage server that can store the coded stream generated by the encoding of encoded device 31. In this embodiment, decoding device 32 can download the stored coded stream generated by the encoding from the storage server. Alternatively, the storage server can store the coded stream generated by the encoding and transmit the coded stream generated by the encoding to decoding device 32, such as a web server (e.g., for a website), a File Transfer Protocol (FTP) server, and the like.

[0134] In some embodiments, encoded device 31 can include a point cloud encoder 310 and an output interface 311. The output interface 311 can include a modulator / demodulator (modem) and / or a transmitter.

[0135] In some embodiments, encoded device 31 can also include a point cloud source 312. The point cloud source 312 can include at least one of a point cloud acquisition device (e.g., a scanner), a point cloud archive, a point cloud input interface, and a computer graphics system. The point cloud input interface can be used to receive point cloud content from a point cloud content provider, and the computer graphics system can be used to generate point cloud data based on the point cloud content.

[0136] The point cloud encoder 310 can encode the point cloud data from the point cloud source 312, generate a coded stream, and transmit the coded stream generated by the encoding to decoding device 32 via the output interface 311. The coded stream generated by the encoding can also be stored on a storage medium or a storage server for retrieval by decoding device 32.

[0137] In some embodiments, decoding device 32 can include a point cloud decoder 320 and an input interface 321. The input interface 321 can include a modem and / or a receiver. The input interface 321 can receive the coded stream generated by the encoding via channel 33.

[0138] In some embodiments, the decoding device 32 can further include a display device 322. The point cloud decoder 320 can decode the bitstream generated by the encoding to obtain the decoded point cloud data, and transmit the decoded point cloud data to the display device 322 for display.

[0139] In some embodiments, the display device 322 can be integrated with the decoding device 32 or external to the decoding device 32. The display device 322 can include various display devices, such as a Liquid Crystal Display (LCD), a plasma display, an Organic Light-Emitting Diode (OLED) display, or other types of display devices.

[0140] It should be noted that the point cloud coding system shown in FIG. 3 is only exemplary, and the technical solutions of the present application are not limited to be applied to FIG. 3. For example, the technical solutions of the present application can also be applied to single-sided point cloud encoding or single-sided point cloud decoding.

[0141] The point cloud encoder 310 and the point cloud decoder 320 provided in the above embodiments of the present application will be described below with reference to FIG. 4A and FIG. 4B, respectively, taking the above point cloud coding framework as an example.

[0142] As shown in FIG. 4A, it is a schematic block diagram of a point cloud encoder 310 provided by an embodiment of the present application. As shown in FIG. 4A, the point cloud encoder 310 is to encode the geometry information and the attribute information of the point cloud separately, specifically, to encode the geometry information of the point cloud first, and then to encode the attribute information of the point cloud based on the reconstructed geometry information.

[0143] The point cloud encoder 310 can divide the input point cloud by slice, and then independently encode each slice after the division. As shown in FIG. 4A, taking the encoding of a divided slice as an example, in the slice, the geometry information of the point cloud and the attribute information of the point cloud are encoded separately.

[0144] Encoding of the geometry information of the point cloud:

[0145] First, the geometry information of the points in the point cloud is converted in coordinates, so that the point cloud is all contained in a bounding box.

[0146] Then, the coordinate-transformed geometry information is voxelized; the voxelization process includes quantization and duplicate point removal. The main purpose of quantization is scaling, i.e., through quantization rounding, the geometry information of a part of points is made the same, and then it is determined according to parameters whether the duplicate points need to be removed. Generally, geometry compression without removing duplicate points is referred to as lossless geometry compression, and geometry compression with removing duplicate points is referred to as lossy geometry compression.

[0147] Then, the point cloud in the bounding box is divided into an octree.

[0148] Finally, arithmetic coding (such as Context-Adaptive Binary Arithmetic Coding (CABAC)) is performed based on the divided octree to generate a binary geometry bitstream, i.e., a geometry code stream.

[0149] In the above-mentioned octree division, according to different octree division level depths, the geometry information coding is divided into two frameworks, i.e., an octree-based framework and a triangle patch set-based framework.

[0150] In the octree-based geometry information coding framework, the bounding box is equally divided into 8 subcubes, and the occupancy bits (for example, 1 for non-empty (i.e., occupied) and 0 for empty (i.e., not occupied)) of each subcube are recorded. The non-empty subcubes are further equally divided into 8 subcubes, and so on, until the leaf nodes obtained by the division are unit cubes with an edge length of 1x1x1. Then, the occupancy bits can be intra-predicted based on the spatial correlation between each node and the surrounding nodes, and then arithmetic coded to generate a binary geometry bitstream, i.e., a geometry code stream.

[0151] In the triangle patch set-based geometry information coding framework, octree division is also needed. Different from the octree-based geometry information coding framework, the triangle patch set-based geometry information coding framework does not need to divide the point cloud into unit cubes with an edge length of 1x1x1, but stops the division when the edge length of the block is W. Then, based on the surface formed by the distribution of the point cloud in each block, at most twelve vertices generated by the twelve edges of the block are obtained, and finally the vertex coordinates of each block are sequentially arithmetic coded (i.e., surface fitting based on vertices) to generate a binary geometry bitstream, i.e., a geometry code stream. The vertices can also be used in the geometry reconstruction process, and the geometry information obtained by geometry reconstruction is used for coding the attribute information of the point cloud.

[0152] It should be noted that in the above octree-based geometry information encoding framework, both geometry lossless compression and geometry lossy compression need to perform the reconstruction process of geometry information when the octree partitioning is completed.

[0153] At this point, the point cloud encoder 310 completes the encoding of the geometry information of the point cloud.

[0154] Encoding of attribute information of the point cloud:

[0155] First, the color information of the point is converted in the color space. For example, when the color information of the point in the input point cloud is represented using the RGB color space, the color information can be converted from the RGB color space to the YUV color space.

[0156] Next, the point cloud is recolored using the reconstructed geometry information, so that the attribute information to be encoded corresponds to the reconstructed geometry information.

[0157] Next, the recolored color information is transformed to obtain the transformed coefficients. Generally, there are two main transformation methods, one is distance-based lifting transformation depending on LOD partitioning, and the other is RAHT. Both of these two transformation methods can transform the color information from the spatial domain to the frequency domain to obtain high-frequency coefficients and low-frequency coefficients. The high-frequency coefficients can also be referred to as alternating current coefficients (AC coefficients) or alternating current components; the low-frequency coefficients can also be referred to as direct current coefficients (DC coefficients) or direct current components.

[0158] Finally, the transformed coefficients are quantized and arithmetically encoded (such as CABAC) to generate a binary attribute bitstream, i.e., an attribute code stream.

[0159] At this point, the point cloud encoding framework completes the encoding of the attribute information of the point cloud.

[0160] In some embodiments of the present application, the above point cloud encoder 310 can include a first coordinate conversion unit, a voxelization unit, an octree partitioning unit, a first geometry reconstruction unit and a first arithmetic encoding unit for encoding the geometry information of the point cloud, and a first color conversion unit, a recoloring unit, a transformation unit, a quantization unit and a second arithmetic encoding unit for encoding the attribute information of the point cloud.

[0161] The first coordinate conversion unit is configured to perform coordinate conversion on the geometry information of the points in the point cloud so that the point cloud is contained in a bounding box. The voxelization unit is configured to quantize the geometry information after the coordinate conversion and determine whether to remove duplicate points according to a parameter. The octree division unit is configured to divide the point cloud in the bounding box into an octree and record the occupancy bits of each sub-cuboid during the division of the octree. The first arithmetic coding unit is configured to perform intra prediction on the occupancy bits of each sub-cuboid after the division of the octree, and then perform arithmetic coding on each sub-cuboid to obtain a geometry bitstream. The first geometry reconstruction unit is configured to reconstruct the geometry information of the point cloud after the division of the octree to obtain reconstructed geometry information, which is used to guide the coding of the attribute information of the point cloud.

[0162] The first color conversion unit is configured to perform color space conversion on the attribute information of the points in the point cloud. The recoloring unit is configured to recolor the points in the point cloud using the reconstructed geometry information of the first geometry reconstruction unit. The transformation unit is configured to transform the color information of the recolored points to obtain transform coefficients. The quantization unit is configured to quantize the transform coefficients. The second arithmetic coding unit is configured to code the quantized transform coefficients to obtain an attribute bitstream.

[0163] It should be noted that, at present, the coding of the attribute information of the point cloud is mainly for the coding of the color information of the points in the point cloud. Therefore, the coding process of the attribute information of the point cloud is mainly exemplarily described by taking the color information as an example. In actual implementation, if other information in the attribute information is coded, the coding principle is similar to that of coding the color information, and details are not described herein again to avoid repetition.

[0164] In the embodiments of the present application, the point cloud encoder 310 can be used to implement the coding method described in the following embodiments.

[0165] As shown in FIG. 4B, a schematic block diagram of a point cloud decoder 320 provided by the embodiments of the present application is shown. As shown in FIG. 4B, the point cloud decoder 320 is configured to decode the geometry bitstream and the attribute bitstream of the point cloud separately, specifically, the geometry bitstream of the point cloud is decoded first, and then the attribute bitstream of the point cloud is decoded based on the reconstructed geometry information in the geometry bitstream decoding process.

[0166] As shown in Figure 4B, the point cloud decoder 320 decodes the geometric bitstream and attribute bitstream of the acquired point cloud separately. It can be understood that the decoding process of the geometric bitstream of the point cloud can be understood as the inverse of the encoding process of the point cloud's geometric information. That is, when decoding the geometric bitstream of the point cloud, the geometric information of the point cloud is obtained through arithmetic decoding, octree synthesis, surface fitting, geometric reconstruction, and the inverse process of coordinate transformation. Correspondingly, the decoding process of the attribute bitstream of the point cloud can also be understood as the inverse of the encoding process of the point cloud's attribute information. That is, when decoding the attribute bitstream of the point cloud, the attribute information of the point cloud is obtained through arithmetic decoding, inverse quantization, inverse transform, and the inverse process of color transformation. The aforementioned inverse transform includes the inverse transform of RAHT, or the aforementioned inverse transform includes generating LOD and inverse lifting.

[0167] In some embodiments of this application, the point cloud decoder 320 may include a first arithmetic decoding unit, a synthetic octree unit, a second geometric information reconstruction unit, and a second coordinate transformation unit for decoding the geometric bitstream of the point cloud, as well as a second arithmetic decoding unit, an inverse quantization unit, an inverse transformation unit, and a second color conversion unit for decoding the attribute bitstream of the point cloud.

[0168] The first arithmetic decoding unit performs arithmetic decoding on the geometric bitstream of the point cloud. The synthesized octree unit recursively reconstructs the octree based on the data decoded by the first arithmetic decoding unit. The second geometric information reconstruction unit reconstructs the geometric information of the point cloud based on the octree reconstructed by the synthesized octree unit; this geometric information guides the decoding of the attribute bitstream of the point cloud. The second coordinate transformation unit performs inverse coordinate transformation on the geometric information reconstructed by the second geometric information reconstruction unit to obtain the geometric information of the point cloud.

[0169] The second arithmetic decoding unit is used to perform arithmetic decoding on the attribute code stream of the point cloud. The inverse quantization unit is used to inverse quantize the data decoded by the second arithmetic decoding unit. The inverse transform unit is used to perform an inverse transform on the data inversely quantized by the inverse quantization unit, such as the inverse transform of RAHT. The second color conversion unit is used to perform an inverse color space conversion on the data inversely transformed by the inverse transform unit to obtain the attribute information of the point cloud.

[0170] It is understandable that during the decoding of the attribute bitstream of the point cloud, the geometric information reconstructed during the decoding of the geometric bitstream of the point cloud is also needed; that is, the reconstructed geometric information guides the decoding of the attribute bitstream of the point cloud. Specifically, the attribute information to be decoded can be predicted based on the reconstructed geometric information, and then the attribute residual information obtained by parsing the attribute bitstream based on the sum of the predicted attribute information can be used to obtain the reconstructed attribute information of the point cloud, that is, the attribute information of the point cloud obtained by decoding the attribute bitstream of the point cloud.

[0171] In the embodiments of the present application, after the geometry information of the point cloud is obtained by decoding the geometry bitstream of the point cloud, and the attribute information of the point cloud is obtained by decoding the attribute bitstream of the point cloud, the three-dimensional image model of the point cloud can be restored based on the geometry information and the attribute information.

[0172] In the embodiments of the present application, the point cloud decoder 320 described above can be used to implement the decoding method described in the following embodiments.

[0173] It should be noted that the above is the basic process of the point cloud codec under the point cloud codec framework, and some modules or steps of the framework or process can be optimized as the technology develops. The coding method provided in the embodiments of the present application can be applied to the basic process of the point cloud codec under the point cloud codec framework, but is not limited to the framework and process. When the point cloud codec framework or process changes, the coding method provided in the embodiments of the present application also changes adaptively.

[0174] Further, the transformation and inverse transformation involved in the point cloud coding method provided in the embodiments of the present application are mainly for the RAHT mentioned above. The transformation process of the RAHT and the inverse transformation process of the RAHT will be described exemplarily in combination with FIGS. 5 to 7.

[0175] In the embodiments of the present application, the main idea of the RAHT is based on the structure of the octree, and the nodes in each layer are transformed from the x, y and z dimensions in a bottom-up manner, and iteration is performed until the root node of the octree. In the RAHT process, the transformation coefficient (also referred to as the RAHT transformation coefficient) of each node in the octree can be obtained. The transformation coefficient can include a DC coefficient and an AC coefficient. The DC coefficient is a quantized value of some average attribute information (such as color information) of all points in a block or a sub-block, and the AC coefficient represents the change or difference of the attribute information of the points included in a block or a sub-block. In the RAHT process, the DC coefficient obtained after the transformation of the nodes in the same layer is passed to the nodes in the previous layer for further transformation, and the AC coefficient obtained in each layer can be directly encoded by an arithmetic encoder (entropy encoder).

[0176] Based on the above RAHT idea, before RAHT is performed, an RAHT transform tree can be constructed first. Specifically, first, an octree is divided based on the geometric information in the point cloud data to be encoded, and then based on the octree, transform coefficients are defined for each node, which will be used for subsequent RAHT. Then, according to the attribute information (such as color information, reflectivity information, etc.) of each node and the distribution characteristics of the points in each node, the transform coefficients of each node are initialized. Wherein, before initializing the transform coefficients of each node, the attribute information can be preprocessed first, such as color space conversion, attribute information normalization, etc. Then, based on the octree, starting from the root node of the octree, an RAHT transform tree is constructed level by level downwards. Specifically, for each node, the transform coefficients of the node are calculated and updated according to the transform coefficients of the child nodes of the node, and so on, until the leaf nodes of the octree, at which point the RAHT transform tree is constructed.

[0177] After the RAHT transform tree is constructed, the RAHT process can be performed based on the RAHT transform tree, which can start from the leaf nodes of the RAHT transform tree and recursively transform level by level upwards until the root node of the octree is reached.

[0178] The RAHT process will be described below by way of example with reference to FIG. 5.

[0179] Fig. 5 is a schematic diagram of the RAHT process of a node in the RAHT transform tree. As shown in Fig. 5, the RAHT process of the node along the x, y, z directions is exemplarily illustrated. It is assumed that the node includes five sub-nodes, i.e., five sub-blocks, and the transform order is x-y-z. The RAHT of the node is first performed along the x direction. In the x direction, sub-block 2 and sub-block 3 are adjacent, and sub-block 4 and sub-block 5 are adjacent. Therefore, sub-block 2 and sub-block 3 are merged to obtain merged block 6, and the DC coefficients of sub-block 2 and sub-block 3 are linearly transformed to obtain DC coefficient 1 and an AC coefficient. The DC coefficient is taken as the DC coefficient of merged block 6. Sub-block 4 and sub-block 5 are merged to obtain merged block 7, and the DC coefficients of sub-block 4 and sub-block 5 are linearly transformed to obtain DC coefficient 2 and an AC coefficient. The DC coefficient 2 is taken as the DC coefficient of merged block 7. Sub-block 1 is not transformed, and its DC coefficient 0 is reserved. The RAHT of the node is then performed along the y direction. In the y direction, merged block 6 and merged block 7 are adjacent. Therefore, merged block 6 and merged block 7 are merged to obtain merged block 8, and DC coefficient 1 and DC coefficient 2 are linearly transformed to obtain DC coefficient 3 and an AC coefficient. Sub-block 1 is not transformed, and its DC coefficient 0 is reserved. The RAHT of the node is then performed along the z direction. In the z direction, merged block 8 and sub-block 1 are adjacent. Therefore, merged block 8 and sub-block 1 are merged, and DC coefficient 3 and DC coefficient 0 are linearly transformed to obtain a DC coefficient and an AC coefficient. Thus, the RAHT of the node is completed, and four AC coefficients and one DC coefficient are obtained. The four AC coefficients are reserved for subsequent encoding, and the one DC coefficient is taken as the DC coefficient of the node.

[0180] The RAHT process is exemplarily illustrated below by taking the RAHT of the node along the x direction as an example.

[0181] It is assumed that the node is a node (node A) at the L-1 layer, and g L,2x,y,z and g'L,2x+1,y,z are DC coefficients of two nodes (node B and node C) that are adjacent to each other in the L layer, and the node B and the node C are sub-nodes of the node A. g L,2x,y,z After linear transformation of g L-1,x,y,z and g'L,2x+1,y,z, DC coefficients g L-1,x,y,z and AC coefficients f L-1,x,y,z are obtained. The DC coefficients g L-1,x,y,z and the AC coefficients f L-1,x,y,z are taken as the DC coefficient and the AC coefficient of the node A, respectively. Then, the AC coefficients f L-1,x,y,zThe transformation will continue to find the neighboring point in the L-1 layer, if there is no neighboring point in the L-1 layer, the DC coefficient g' L-1,x,y,z will be directly transmitted to the L-2 layer for further transformation.

[0182] It should be noted that the RAHT is only valid for the node with the neighboring point, and the node without the neighboring point can directly transmit the DC coefficient to the upper layer for further transformation.

[0183] In some embodiments of the present application, in the above RAHT process, it is assumed that g' L,2x,y,z and g'L,2x+1,y,z correspond to the weights w' L,2x,y,z and w'L,2x+1,y,z (hereinafter referred to as w'0 and w'1), g' L-1,x,y,z correspond to the weight w' L-1,x,y,z , wherein the weight corresponding to each node is the number of non-empty child nodes (i.e. the child nodes including the points in the point cloud) of the node, and the general transformation formula for calculating one DC coefficient and one AC coefficient from two DC coefficients can be shown in the following formula (1):

[0184] In formula (1), T w0,w1 is the transformation matrix, and T w0,w1 can be calculated by the following formula (2):

[0185] It should be noted that the above transformation matrix can be updated adaptively with the weight corresponding to each node.

[0186] Next, taking FIG. 6 as an example, the RAHT and the inverse transformation process of the RAHT of the node A along the x-axis direction are further exemplarily described.

[0187] As shown in FIG. 6, it is assumed that g' L,2x,y,z and g'L,2x+1,y,z are the DC coefficients of the nodes B and C which are the neighboring points of each other in the x-axis direction in the L layer, after linear transformation of the DC coefficients of the nodes B and C as shown in FIG. 6, a DC coefficient g' L-1,x,y,z and an AC coefficient f' L-1,x,y,z are obtained, the DC coefficient g' L-1,x,y,z and the AC coefficient f' L-1,x,y,z are the DC coefficient and the AC coefficient of the node A along the x-axis direction. Specifically, as shown in FIG. 6, the process of linear transformation of the DC coefficients of the nodes B and C can be represented as:

[0188] a×g' L,2x,y,z +b×g'L,2x+1,y,z=g' L-1,x,y,z , -b×g'L,2x,y,z +a×g'L,2x+1,y,z=f' L-1,x,y,z ; where a and b in FIG. 6 can be converted with the transformation matrix T in formula (2) above. w0,w1

[0189] Correspondingly, the RAHT corresponding to node A, as shown in FIG. 6, in the inverse transformation process of the RAHT of node A, assuming that g' L-1,x,y,z and f' L-1,x,y,z are the DC coefficients and AC coefficients of node A in the L-1 layer in the x-axis direction, after linear inverse transformation of the DC coefficients and AC coefficients, two DC coefficients g' L,2x,y,z and g'L,2x+1,y,z, i.e. the DC coefficients of nodes B and C in the L layer which are adjacent to each other in the x-axis direction, are obtained. Specifically, as shown in FIG. 6, the process of linear inverse transformation of the DC coefficients and AC coefficients of node A can be represented as: a×g′ L-1,x,y,z -b×f′ L-1,x,y,z =g′ L,2x,y,z , b×g′ L-1,x,y,z +a×f′ L-1,x,y,z =g′L,2x+1,y,z.

[0190] Next, taking the RAHT transformation tree shown in FIG. 7 as an example, the RAHT process and the inverse transformation process of the RAHT of the nodes in one direction (such as the x-axis direction) are exemplarily described.

[0191] First, the encoding device (point cloud encoder) starts from the nodes in the 3rd layer (i.e. the leaf nodes of the RAHT transformation tree) in the RAHT transformation tree, and after performing the RAHT on the DC coefficients of each node in the 3rd layer, the DC coefficients and AC coefficients of the corresponding nodes in the 2nd layer (i.e. the parent nodes of the nodes in the 3rd layer) are obtained. Then, after performing the RAHT on the DC coefficients of each node in the 2nd layer, the DC coefficients and AC coefficients of the corresponding nodes in the 1st layer (i.e. the parent nodes of the nodes in the 2nd layer) are obtained, and so on, until the DC coefficients and AC coefficients of the nodes in the 0th layer (i.e. the root nodes of the RAHT transformation tree) are obtained. Wherein, the AC coefficients of each layer obtained in the RAHT process can be directly entropy encoded. After the above-mentioned RAHT, the AC coefficients of the 2nd layer and the 1st layer are obtained, and the DC coefficients and AC coefficients of the 0th layer are obtained. At this point, the transformation process of the RAHT is completed. Then, the DC coefficient and the plurality of AC coefficients obtained by the RAHT are quantized and entropy encoded to obtain the code stream (i.e. the attribute code stream).

[0192] ​Then, the decoding device (point cloud decoder) receives the attribute code stream from the encoding device, and performs entropy decoding and inverse quantization on the attribute code stream to obtain a DC coefficient and a plurality of AC coefficients. The decoding device starts from the node of the 0th layer of the RAHT transform tree (i.e., the root node of the RAHT transform tree), and performs inverse transformation of the RAHT on the DC coefficient and the AC coefficients to obtain the DC coefficient of the corresponding node in the 1st layer (i.e., the child node of the root node). Then, inverse transformation of the RAHT is performed on the DC coefficient and the AC coefficients of each node in the 1st layer to obtain the DC coefficient of the corresponding node in the 2nd layer (i.e., the child node of the node in the 1st layer), and so on, until the DC coefficient of the node in the 3rd layer (i.e., the leaf node of the RAHT transform tree) is obtained. At this point, the inverse transformation of the RAHT is completed.

[0193] It should be noted that the RAHT is transformed from the leaf node to the root node, and the inverse transformation of the RAHT is transformed from the root node to the leaf node.

[0194] Further, after the above RAHT, the transform coefficients (i.e., the RAHT transform coefficients) of each node in the RAHT can be predicted to obtain the predicted transform coefficients of each node, and then the predicted transform coefficients are encoded to obtain the code stream (attribute code stream).

[0195] The encoding method provided by the embodiments of the present application will be described exemplarily in combination with FIG. 8.

[0196] FIG. 8 shows a flowchart of an encoding method provided by an embodiment of the present application. As shown in FIG. 8, the method can include the following steps 801 to 804.

[0197] Step 801, the encoding end determines the first position information of the current block and the first occupancy information of the current block.

[0198] In the embodiments of the present application, the encoding end can determine the first position information of the current block and the first occupancy information of the current block in the process of encoding the geometric information of the point cloud.

[0199] In some embodiments of the present application, in the process of encoding the geometric information of the to-be-encoded point cloud data, the occupancy bits of each sub-cuboid (sub-block) divided based on the point cloud data can be recorded, so that the occupancy information of the current block (i.e., the first occupancy information) is determined based on the occupancy bits of each sub-block of the current block. The current block is the block obtained by dividing the to-be-encoded point cloud data.

[0200] In the embodiments of the present application, for the above-mentioned occupancy bits, assuming that the occupancy bits of one sub-cube are 1 bit, the occupancy bits of a cube (e.g., the parent node of the plurality of sub-nodes) including a plurality of sub-cubes (e.g., the plurality of sub-nodes in an octree) can be represented by the occupancy bits of the plurality of sub-cubes, which can also be referred to as the occupancy information of the cube. As shown in FIG. 9, assuming that the cube 40 obtained by the above-mentioned division includes 8 sub-cubes, 1 sub-cube 401 in the 8 sub-cubes is further divided into 8 sub-cubes, and 2 sub-cubes in the 8 sub-cubes obtained by the division of the sub-cube 401 are occupied by points in the point cloud, therefore, it can be recorded that the sub-cube 401 is occupied by points in the point cloud, for example, the occupancy information of the sub-cube 401 can be represented as "10010000".

[0201] In some embodiments of the present application, the first occupancy information can include N first bits, and each first bit is used to represent whether a sub-block of the current block is occupied by (points, i.e., points in the point cloud). Wherein, N is an integer greater than 1.

[0202] It should be noted that the above-mentioned that one sub-block is occupied by (points) means that the sub-block includes points in the point cloud. Wherein, the number of points in the point cloud included in the sub-block can be one or multiple, which is not limited in the embodiments of the present application. It can be understood that when the sub-block includes one point in the point cloud, it can be represented that the sub-block is occupied by points in the point cloud; when the sub-block includes two points in the point cloud, it can also be represented that the sub-block is occupied by points in the point cloud; when the sub-block includes multiple points in the point cloud, it can also be represented that the sub-block is occupied by points in the point cloud.

[0203] Exemplarily, assuming that the current block includes N sub-blocks, the first occupancy information of the current block includes N first bits, and each first bit in the N first bits represents whether one sub-block in the N sub-blocks is occupied by points in the point cloud. That is, the value of each first bit in the N first bits of the first occupancy information is determined based on whether each sub-block in the N sub-blocks is occupied by points in the point cloud. For example, if one sub-block is occupied by points in the point cloud, the value of the first bit corresponding to the sub-block is 1, if one sub-block is not occupied by points in the point cloud, the value of the first bit corresponding to the sub-block is 0; or, if one sub-block is occupied by points in the point cloud, the value of the first bit corresponding to the sub-block is 0, if one sub-block is not occupied by points in the point cloud, the value of the first bit corresponding to the sub-block is 1. Of course, in actual implementation, the value of each bit can also be other arbitrary possible values, which is determined according to actual use requirements, and the embodiments of the present application are not limited.

[0204] To more clearly illustrate the placeholder information (such as the first placeholder information and the second placeholder information in the following embodiments), in various examples of the embodiments of the present application, the value of the bit corresponding to the sub-block is 1 when the sub-block is occupied by the point in the point cloud, and the value of the bit corresponding to the sub-block is 0 when the sub-block is not occupied by the point in the point cloud, which is exemplarily illustrated.

[0205] It should be noted that the value of the number N of the first bits included in the first placeholder information is related to the construction method of the RAHT transform tree. For example, if the RAHT transform tree is constructed based on an octree, the value of N is 8, that is, the first placeholder information includes 8 first bits. For another example, if the RAHT transform tree is constructed based on a quadtree, the value of N is 4, that is, the first placeholder information includes 4 first bits. In the embodiments of the present application, the RAHT transform tree is constructed based on an octree as an example, and the specific construction method can be determined according to actual use requirements, which is not limited in the embodiments of the present application.

[0206] The first placeholder information in the embodiments of the present application will be exemplarily illustrated below in combination with FIG. 10. Assuming that the current block includes 8 sub-blocks, as shown in (a) of FIG. 10, if each of the 8 sub-blocks is occupied by the point in the point cloud, the first placeholder information of the current block can be represented as “11111111”. As shown in (b) of FIG. 10, if each of the 8 sub-blocks is not occupied by the point in the point cloud, the first placeholder information of the current block can be represented as “00000000”. As shown in (c) of FIG. 10, if part (such as 2) of the 8 sub-blocks is occupied by the point in the point cloud, the first placeholder information of the current block can be represented as “11000000”.

[0207] The bit of the first occupancy information in the embodiments of the present application and the corresponding relationship with each sub-block of the current block are exemplarily described below in combination with FIG. 10. As shown in (a) of FIG. 10, the first occupancy information of the current block can be represented as "11111111", and the current block includes 8 sub-blocks, which are sub-block 1, sub-block 2, sub-block 3, sub-block 4, sub-block 5, sub-block 6, sub-block 7 and sub-block 8. Then, in the first occupancy information "11111111", the first bit "1" from left to right corresponds to the sub-block 1, which indicates that the sub-block 1 is occupied by the points in the point cloud; the second bit "1" corresponds to the sub-block 2, which indicates that the sub-block 2 is occupied by the points in the point cloud; the third bit "1" corresponds to the sub-block 3, which indicates that the sub-block 3 is occupied by the points in the point cloud; the fourth bit "1" corresponds to the sub-block 4, which indicates that the sub-block 4 is occupied by the points in the point cloud; the fifth bit "1" corresponds to the sub-block 5, which indicates that the sub-block 5 is occupied by the points in the point cloud; the sixth bit "1" corresponds to the sub-block 6, which indicates that the sub-block 6 is occupied by the points in the point cloud; the seventh bit "1" corresponds to the sub-block 7, which indicates that the sub-block 7 is occupied by the points in the point cloud; and the eighth bit "1" corresponds to the sub-block 8, which indicates that the sub-block 8 is occupied by the points in the point cloud. As shown in (c) of FIG. 10, the first occupancy information of the current block can be represented as "11000000", and the current block includes 8 sub-blocks, which are sub-block 1, sub-block 2, sub-block 3, sub-block 4, sub-block 5, sub-block 6, sub-block 7 and sub-block 8. Then, in the first occupancy information "11000000", the first bit "1" from left to right corresponds to the sub-block 1, which indicates that the sub-block 1 is occupied by the points in the point cloud; the second bit "1" corresponds to the sub-block 2, which indicates that the sub-block 2 is occupied by the points in the point cloud; the third bit "0" corresponds to the sub-block 3, which indicates that the sub-block 3 is not occupied by the points in the point cloud; the fourth bit "0" corresponds to the sub-block 4, which indicates that the sub-block 4 is not occupied by the points in the point cloud; the fifth bit "0" corresponds to the sub-block 5, which indicates that the sub-block 5 is not occupied by the points in the point cloud; the sixth bit "0" corresponds to the sub-block 6, which indicates that the sub-block 6 is not occupied by the points in the point cloud; the seventh bit "0" corresponds to the sub-block 7, which indicates that the sub-block 7 is not occupied by the points in the point cloud; and the eighth bit "0" corresponds to the sub-block 8, which indicates that the sub-block 8 is not occupied by the points in the point cloud.

[0208] In some embodiments of the present application, the first position information described above can include the geometric information of the current block. The geometric information of the current block described above can be the geometric information (position information) of the points in the point cloud included in the current block. The geometric information of the points in the point cloud can be a Morton code or three-dimensional coordinate information (x, y, z) of the points in the point cloud in a three-dimensional coordinate system. The three-dimensional coordinate system can be any three-dimensional coordinate system such as a Cartesian coordinate system, a spherical coordinate system or a cylindrical coordinate system, and the Morton code can be obtained according to the three-dimensional coordinate information of the points in the three-dimensional coordinate system.

[0209] It should be noted that other descriptions of the geometric information of the points in the point cloud can refer to the related descriptions in the above embodiments, and will not be repeated here to avoid repetition.

[0210] At step 802, the encoding end determines a candidate reference block of the current block based on the first position information and the layer information of the current block.

[0211] In the embodiments of the present application, the current block is a node in a first transform tree, and the layer information of the current block is used to represent the layer number of the current block in the first transform tree, and the first transform tree is a transform tree in which the current block is located.

[0212] In some embodiments of the present application, the first transform tree can be an RAHT transform tree in which the current block is located, and the RAHT transform tree can be an RAHT transform tree constructed based on an octree in the above embodiments. It can be understood that the current block refers to a node in the RAHT transform tree. Accordingly, the sub-block of the current block refers to a child node of the node in the RAHT transform tree.

[0213] For example, FIG. 11 shows a schematic diagram of an RAHT transform tree according to an embodiment of the present application. Taking the transform tree shown in FIG. 11 as an example, assuming that the current block is a node P in the RAHT transform tree, the layer information of the current block is Level = 2; assuming that the current block is a node T in the RAHT transform tree, the layer information of the current block is Level = 4.

[0214] In the embodiments of the present application, the candidate reference block refers to a node in a reference transform tree. The reference transform tree is a reference RAHT transform tree. The construction process of the reference RAHT transform tree can refer to the related description in the above embodiments, and details are not described herein again to avoid repetition.

[0215] It should be noted that the reference transform tree is constructed based on the geometric information and the attribute information in the reference point cloud data, and the reference point cloud data can be the already encoded point cloud data adjacent to the point cloud data to be encoded. For example, if the point cloud data to be encoded is an image, the reference point cloud data is a previous image of the image; or, if the point cloud data to be encoded is a Slice, the reference point cloud data is a previous Slice of the Slice; or, if the point cloud data to be encoded is a voxel block, the reference point cloud data is a previous voxel block of the voxel block.

[0216] In the embodiments of the present application, the candidate reference block can be a node in the reference transform tree (reference RAHT transform tree) whose position information is the same as the first position information and whose layer information is the same as the layer information of the current block.

[0217] Exemplarily, as shown in FIG. 11, assuming that the current block is a node P at the 2nd layer of the RAHT transform tree, the candidate reference block is a node P1 at the 2nd layer of the reference RAHT transform tree; wherein the first position information of the node P is the same as the position information of the node P1. Alternatively, assuming that the current block is a node T at the 4th layer of the RAHT transform tree, the candidate reference block is a node T1 at the 4th layer of the reference RAHT transform tree; wherein the first position information of the node T is the same as the position information of the node T1.

[0218] At step 803, the encoding end obtains the transform coefficient of the current block based on the first occupancy information and the second occupancy information of the candidate reference block.

[0219] For the first occupancy information, reference can be made to the description of the first occupancy information in step 801 above, and thus repeated description is omitted here.

[0220] In some embodiments of the present application, in the process of encoding the geometric information of the reference point cloud data, the occupancy bits of each sub-cuboid (sub-block) divided based on the reference point cloud data can be recorded, so as to determine the occupancy information of the candidate reference block, i.e., the second occupancy information, based on the occupancy bits of each sub-block of the candidate reference block. The candidate reference block is a block divided based on the reference point cloud data.

[0221] In some embodiments of the present application, the second occupancy information described above can include N second bits, each of which is used to represent whether a sub-block of the candidate reference block is occupied by a point. N is an integer greater than 1.

[0222] It should be noted that the second occupancy information described above is similar to the first occupancy information described above, and the description of the second occupancy information can refer to the description of the first occupancy information in step 801 above, and thus repeated description is omitted here.

[0223] In some embodiments of the present application, in combination with FIG. 8, as shown in FIG. 12A, step 803 can be implemented by step 8031 as follows.

[0224] At step 8031, in the case that the difference between the first occupancy information of the current block and the second occupancy information of the candidate reference block is less than or equal to a first threshold, the encoding end determines the first information of the candidate reference block as the transform coefficient of the current block.

[0225] In some embodiments of the present application, the difference between the first occupancy information and the second occupancy information can be the number of different bits between the N first bits and the N second bits.

[0226] It should be noted that the difference bit refers to a bit in the first placeholder information and the second placeholder information with different values. For example, the first bit of the first placeholder information and the first bit of the second placeholder information have different values, and the first bit of the first placeholder information and the first bit of the second placeholder information are difference bits. For another example, the third bit of the first placeholder information and the third bit of the second placeholder information have different values, and the third bit of the first placeholder information and the third bit of the second placeholder information are difference bits.

[0227] For the first placeholder information and the second placeholder information, reference can be made to the related description in the above embodiments, and details are not described herein again to avoid repetition.

[0228] For example, it is assumed that the first placeholder information and the second placeholder information each include 8 bits, the first placeholder information is “11111111”, and the second placeholder information is “00000000”. In this case, the difference bits of the first placeholder information and the second placeholder information are 8 bits, and the difference between the first placeholder information and the second placeholder information is 8. Alternatively, it is assumed that the first placeholder information and the second placeholder information each include 8 bits, the first placeholder information is “11111111”, and the second placeholder information is “1000000”. In this case, the difference bits of the first placeholder information and the second placeholder information are 7 bits, and the difference between the first placeholder information and the second placeholder information is 7. Alternatively, it is assumed that the first placeholder information and the second placeholder information each include 8 bits, the first placeholder information is “11110000”, and the second placeholder information is “00001111”. In this case, the difference bits of the first placeholder information and the second placeholder information are 8 bits, and the difference between the first placeholder information and the second placeholder information is 8.

[0229] In some embodiments of the present application, the difference between the first placeholder information and the second placeholder information can be the number of 1s in the result of the bitwise XOR operation of the N first bits and the N second bits, that is, the number of bits with a value of 1 in the result of the bitwise XOR operation of the N first bits and the N second bits.

[0230] For example, assuming that the first placeholder information and the second placeholder information each include 8 bits, and the first placeholder information is "11111111" and the second placeholder information is "00000000", the result of the bitwise XOR operation between the 8 bits of the first placeholder information and the 8 bits of the second placeholder information is "11111111", and the number of 1s in the result is 8, i.e., the difference between the first placeholder information and the second placeholder information is 8. Alternatively, assuming that the first placeholder information and the second placeholder information each include 8 bits, and the first placeholder information is "11111000" and the second placeholder information is "00001111", the result of the bitwise XOR operation between the 8 bits of the first placeholder information and the 8 bits of the second placeholder information is "11110111", and the result includes 7 1s, i.e., the difference between the first placeholder information and the second placeholder information is 7.

[0231] In some embodiments of the present application, the first threshold value can be used to represent the maximum acceptable number of difference bits of the difference bits between the N first bits and the N second bits. In other words, when the number of difference bits between the N first bits and the N second bits is less than or equal to the first threshold value, it indicates that the difference between the first placeholder information and the second placeholder information is within an acceptable range, and the candidate reference block can be used as the reference block of the current block at this time; when the number of difference bits between the N first bits and the N second bits is greater than the first threshold value, it indicates that the difference between the first placeholder information and the second placeholder information is not within an acceptable range, and the candidate reference block cannot be used as the reference block of the current block at this time.

[0232] It should be noted that the first threshold value can be set according to actual use requirements or experimental data or empirical data.

[0233] For example, the first threshold value can be 0, or can be 1, or can be 2, etc. Specifically, the value of the first threshold value is at most one less than the number of bits of the placeholder information. For example, if the number of bits of the placeholder information is 8, the value of the first threshold value is at most 7; or if the number of bits of the placeholder information is 4, the value of the first threshold value is at most 3; or if the number of bits of the placeholder information is 16, the value of the first threshold value is at most 15; or if the number of bits of the placeholder information is 32, the value of the first threshold value is at most 31.

[0234] Taking the RAHT transform tree shown in FIG. 13 as an example, assuming that the current block is a node P in the RAHT transform tree, and the placeholder information of the node P is as shown in 130 in FIG. 13, and the candidate reference block is a node P1 in the reference RAHT transform tree, and the placeholder information of the node P1 is as shown in 131 in FIG. 13, then the difference between the placeholder information of the current block and the placeholder information of the candidate reference block is 1.

[0235] In some embodiments of the present application, the first information of the candidate reference block can include at least one of the following:

[0236] transform coefficients of the candidate reference block;

[0237] a sum of attribute information of points in the candidate reference block;

[0238] a sum of attribute information of sub-blocks of the candidate reference block;

[0239] a preset constant;

[0240] transform coefficients of the candidate reference block weighted by the filter;

[0241] a sum of attribute information of points in the candidate reference block weighted by the filter;

[0242] a sum of attribute information of sub-blocks of the candidate reference block weighted by the filter.

[0243] In some embodiments of the present application, the transform coefficients of the candidate reference block can be obtained by the RAHT process in the above embodiments. Specifically, the transform coefficients of the candidate reference block are obtained by the RAHT process when encoding the attribute information of the reference point cloud data. For the RAHT process, detailed description has been given in the above embodiments, which will not be repeated here.

[0244] In some embodiments of the present application, the sum of attribute information of points in the candidate reference block can also be referred to as the weighted attribute sum of all points in the candidate reference block, and can be obtained by weighted summing the attribute information of all points in the candidate reference block. Specifically, the encoding end can determine the weight of each point in the candidate reference block, then calculate the product of the weight of each point and the attribute information of each point, and add all the products to obtain the sum of attribute information of points in the candidate reference block. Wherein, the weight of each point can be set according to requirements, or can be determined according to the distance between each point and the center point of the candidate reference block, such as the closer to the center point, the greater the weight, which is not limited in the embodiments of the present application.

[0245] For example, assuming that the candidate reference block includes 3 points, namely point A, point B and point C, the attribute information of point A is attribute value a, the attribute information of point B is attribute value b, and the attribute information of point C is attribute value c, and the encoding end can pre-set the weight of point A as 0.4, and the weights of point B and point C are both 0.3, then the sum of attribute information of points in the candidate reference block can be calculated by the formula: 0.4*attribute value a+0.3*attribute value b+0.4*attribute value c.

[0246] In some embodiments of the present application, the attribute information of the sub-blocks of the candidate reference block can also be referred to as the weighted attribute sum of the sub-blocks of the candidate reference block, and can be obtained by weighted summing the attribute information of all the sub-blocks of the candidate reference block. Specifically, the encoding end can determine the weight of each sub-block of the candidate reference block, then calculate the product of the weight of each sub-block and the attribute information of each sub-block, and add all the products to obtain the sum of the attribute information of the sub-blocks of the candidate reference block. The weight of each sub-block can be set according to requirements, or can be determined according to the number of points in each sub-block, for example, the more the number of points in a sub-block, the greater the weight, which is not limited in the embodiments of the present application.

[0247] For example, assuming that the candidate reference block includes three sub-blocks, sub-block D, sub-block E and sub-block F, the attribute information of sub-block D is attribute value d, the attribute information of sub-block E is attribute value e, and the attribute information of sub-block F is attribute value f, and sub-block D includes 30 points, sub-block E includes 20 points, and sub-block F includes 50 points, then the encoding end can determine that the weight of sub-block D is 0.3, the weight of sub-block E is 0.2, and the weight of sub-block F is 0.5, so that the sum of the attribute information of the sub-blocks of the candidate reference block can be calculated by the formula: 0.3 x attribute value d + 0.2 x attribute value e + 0.5 x attribute value f.

[0248] In some embodiments of the present application, the above-mentioned preset constant can be a positive integer greater than or equal to 0, which can be set according to actual requirements or experience, and the embodiments of the present application are not limited thereto.

[0249] In some embodiments of the present application, the transform coefficients of the filter-weighted candidate reference block can be obtained by weighting the transform coefficients of the candidate reference block by the filter. Specifically, the transform coefficients of the filter-weighted candidate reference block can be obtained by weighting the transform coefficients of the candidate reference block by the filter in the encoding end. Similarly, the sum of the attribute information of the points in the filter-weighted candidate reference block is obtained by weighting the sum of the attribute information of the points in the candidate reference block by the filter, and the sum of the attribute information of the sub-blocks of the filter-weighted candidate reference block is obtained by weighting the sum of the attribute information of the sub-blocks of the candidate reference block by the filter.

[0250] In some embodiments of the present application, in the case that the difference between the first placeholder information and the second placeholder information is less than or equal to the first threshold, the encoding end can perform inter-frame prediction, determine the candidate reference block as the reference block of the current block, and determine the first information of the reference block, i.e. the first information of the candidate reference block, as the transform coefficients of the current block, i.e. the predicted transform coefficients of the current block. It can be understood that the reference block is the block that can be used for inter-frame prediction with the current block.

[0251] For example, taking the first information of the candidate reference block including the transform coefficients of the candidate reference block as an example, assuming that the first threshold is 2, if the first occupancy information of the current block is "11111111" and the second occupancy information of the candidate reference block is "11111110", the difference bit of the first occupancy information and the second occupancy information is 1 bit, that is, the difference value of the first occupancy information and the second occupancy information is 1, which is less than the first threshold, and the encoding end can determine the candidate reference block as the reference block of the current block, and determine the transform coefficients of the reference block as the prediction transform coefficients of the current block.

[0252] In some embodiments of the present application, as shown in FIG. 12B, the step 803 can also be implemented by the following step 8032 in combination with FIG. 8.

[0253] The step 8032, in the case that the difference value of the first occupancy information of the current block and the second occupancy information of the candidate reference block is greater than the first threshold, the encoding end determines the second information of the neighboring block of the current block or the coefficients obtained by performing the RAHT on the current block as the transform coefficients of the current block.

[0254] That is, in the case that the difference value of the first occupancy information and the second occupancy information is greater than the first threshold, the encoding end can perform intra prediction, that is, determine the second information of the node in the first transform tree adjacent to the current block as the transform coefficients of the current block, that is, the prediction transform coefficients of the current block; or the encoding end can not predict, that is, determine the coefficients obtained by performing the RAHT on the current block as the transform coefficients of the current block.

[0255] The node in the first transform tree adjacent to the current block is the node in the first transform tree belonging to the same parent node as the current block. The prediction transform coefficients of the node in the first transform tree adjacent to the current block can be predicted by the encoding method provided by the embodiments of the present application.

[0256] In some embodiments of the present application, the second information of the neighboring block can include at least one of the following:

[0257] The prediction transform coefficients of the neighboring block;

[0258] The sum of the attribute information of the points in the neighboring block;

[0259] The sum of the attribute information of the sub-blocks of the neighboring block;

[0260] A preset constant;

[0261] The prediction transform coefficients of the neighboring block weighted by the filter;

[0262] The sum of the attribute information of the points in the neighboring block weighted by the filter;

[0263] The sum of the attribute information of the sub-blocks of the neighboring block weighted by the filter.

[0264] In some embodiments of the present application, the predicted transform coefficients of the neighboring block can be obtained according to the encoding method provided by the embodiments of the present application. Specifically, the predicted transform coefficients of the neighboring block are predicted when encoding the attribute information of the neighboring point cloud data.

[0265] In some embodiments of the present application, the second information is similar to the first information described above. For the description of the sum of the attribute information of the points in the neighboring block, the sum of the attribute information of the sub-blocks of the neighboring block, the preset constant, the predicted transform coefficients of the neighboring block after filter weighting, the sum of the attribute information of the points in the neighboring block after filter weighting, and the sum of the attribute information of the sub-blocks of the neighboring block after filter weighting in the second information, the relevant description of the first information in the above embodiments can be referred to. To avoid repetition, the relevant description is not repeated here.

[0266] For example, taking the second information of the neighboring block including the predicted transform coefficients of the neighboring block as an example, assuming that the first threshold is 2, if the first occupancy information of the current block is "11111111" and the second occupancy information of the candidate reference block is "11110000", the difference bit of the first occupancy information and the second occupancy information is 4 bits, that is, the difference value of the first occupancy information and the second occupancy information is 4, which is greater than the first threshold, and the encoding end can determine the predicted transform coefficients of the nodes adjacent to the current block in the first transform tree as the transform coefficients of the current block.

[0267] In step 804, the encoding end encodes based on the transform coefficients of the current block to obtain the attribute code stream.

[0268] In some embodiments of the present application, after obtaining the predicted transform coefficients of the current block through inter-frame prediction or intra-frame prediction, the encoding end can first determine the transform coefficient residual value of the current block based on the predicted transform coefficients of the current block and the transform coefficients obtained by RAHT of the current block, for example, the difference between the predicted transform coefficients of the current block and the transform coefficients of the current block is determined as the transform coefficient residual value of the current block (for example, the predicted transform coefficients of the current block minus the transform coefficients of the current block to obtain the transform coefficient residual value of the current block), and then the transform coefficient residual value is quantized and arithmetically encoded (entropy encoded) to obtain the attribute code stream.

[0269] In some embodiments of the present application, in the case where the transform coefficients of the current block are not predicted, that is, the coefficients obtained by RAHT of the current block are determined as the transform coefficients of the current block, the encoding end can quantize and arithmetically encode (entropy encode) the transform coefficients of the current block to obtain the attribute code stream.

[0270] In the embodiment of the present application, the encoding end can first determine the first position information and the first occupancy information of the current block, then determine the candidate reference block of the current block based on the first position information and the layer information of the current block, and then obtain the transform coefficients of the current block based on the first occupancy information and the second occupancy information of the candidate reference block, and finally encode based on the transform coefficients of the current block to obtain the attribute code stream. In this way, when determining the transform coefficients of the current block to be encoded, not only can the position information and the layer information be used for determination, but also the occupancy information can be used for determination. Since the position information and the layer information can represent the position of the point in the current block in space, and the occupancy information can represent the occupancy of the point in the point cloud in the current block, the combination of the position information, the layer information and the occupancy information can more accurately determine the transform coefficients of the current block, thereby improving the encoding efficiency.

[0271] It should be noted that the encoding method provided by the embodiment of the present application can be executed by the encoding end in the embodiment, which can be the encoding device 31 or the point cloud encoder 310 shown in FIG. 3, and the present application is not limited thereto.

[0272] The decoding method provided by the embodiment of the present application will be described exemplarily below in combination with FIG. 14.

[0273] FIG. 14 shows a flowchart of a decoding method provided by an embodiment of the present application. As shown in FIG. 14, the method can include the following steps 1401 to 1403.

[0274] In step 1401, the decoding end parses the geometry code stream of the point cloud to obtain the second position information of the current block to be decoded.

[0275] In some embodiments of the present application, the geometry information (position information) of each block to be decoded can be included in the above-mentioned geometry code stream. By decoding the geometry code stream, the first position information of the current block can be obtained.

[0276] Exemplarily, the above-mentioned second position information can include the geometry information of the current block. The geometry information of the current block can be the geometry information (position information) of the point in the point cloud included in the current block. The geometry information of the point in the point cloud can be the three-dimensional coordinate information (x, y, z) of the point in the point cloud in a three-dimensional coordinate system. The three-dimensional coordinate system can be any three-dimensional coordinate system such as Cartesian coordinate system, spherical coordinate system or cylindrical coordinate system, and the Morton code can be obtained according to the three-dimensional coordinate information of the point in the three-dimensional coordinate system.

[0277] It should be noted that the step 1401 and its related contents can also be referred to the related description in the step 801 of the encoding end described above. To avoid repetition, details are not described here.

[0278] Step 1402, the decoding end determines a candidate reference block of the current block based on the second position information and the layer information of the current block.

[0279] In the embodiments of the present application, the candidate reference block refers to a node in a reference transform tree. The reference transform tree is a reference RAHT transform tree. For the construction process of the reference RAHT transform tree, please refer to the related description in the above embodiments, and details are not described herein again to avoid repetition.

[0280] It should be noted that the reference transform tree is constructed based on the geometric information and the attribute information in the reference point cloud data, and the reference point cloud data can be the decoded point cloud data adjacent to the point cloud data to be decoded. For example, if the point cloud data to be decoded is an image, the reference point cloud data is the previous image of the image; or, if the point cloud data to be decoded is a slice, the reference point cloud data is the previous slice of the slice; or, if the point cloud data to be decoded is a voxel block, the reference point cloud data is the previous voxel block of the voxel block.

[0281] In the embodiments of the present application, the geometric information and the attribute information in the reference point cloud data are obtained by decoding the geometric bitstream and the attribute bitstream of the reference point cloud data, respectively. Therefore, it can be understood that the reference point cloud data has been decoded when the reference transform tree is constructed, so that the reference transform tree can be constructed based on the decoded geometric information and the decoded attribute information in the reference point cloud data.

[0282] In some embodiments of the present application, the candidate reference block can be a node in the reference transform tree (reference RAHT transform tree) whose position information is the same as the second position information and whose layer information is the same as the layer information of the current block.

[0283] It should be noted that the description of the candidate reference block can refer to the related description of the candidate reference block in the related steps of the encoding end, and details are not described herein again to avoid repetition.

[0284] It should be noted that the description of the candidate reference block can refer to the related description of the candidate reference block in the related steps of the encoding end, and details are not described herein again to avoid repetition.

[0285] Step 1403, the decoding end obtains the transform coefficient of the current block based on the first occupancy information of the current block and the second occupancy information of the candidate reference block.

[0286] In some embodiments of the present application, the first occupancy information can be determined according to the second position information of the current block and the position information of the sub-blocks of the current block. For example, according to the second position information of the current block, it is determined whether the second position information corresponds to a point in the point cloud. If the second position information corresponds to a point in the point cloud, according to the position information of the sub-blocks of the current block, it is determined in which sub-block the point corresponding to the second position information in the point cloud is located, thereby determining whether each sub-block of the current block is occupied by a point in the point cloud, i.e., obtaining the first occupancy information of the current block.

[0287] In some embodiments of the present application, the first occupancy information can be determined according to the decoded geometric information. For example, in the process of constructing the RAHT transform tree based on the geometric information and attribute information of the points in the point cloud at the decoding end, based on the geometric information of the points in the point cloud, it is determined whether the sub-blocks of the current block are occupied by the points in the point cloud, and based on the determination result, the occupancy bits of the sub-blocks of the current block are recorded (e.g., 1 for being occupied and 0 for not being occupied), and then the first occupancy information of the current block is determined based on the occupancy bits of the sub-blocks of the current block.

[0288] In some embodiments of the present application, the first occupancy information can include N first bits, and each first bit can be used to represent whether a sub-block of the current block is occupied by a point.

[0289] It should be noted that the specific description of the first occupancy information can refer to the above description of the first occupancy information at the encoding end, and details are not repeated here.

[0290] In some embodiments of the present application, similar to the first occupancy information of the current block, the second occupancy information of the candidate reference block can also be obtained by the above method, and details can be referred to the above description of determining the first occupancy information, and details are not repeated here.

[0291] In some embodiments of the present application, the second occupancy information can include N second bits, and each second bit can be used to represent whether a sub-block of the candidate reference block is occupied by a point (a point in the point cloud). Wherein, N is an integer greater than 1.

[0292] It should be noted that the second occupancy information is similar to the first occupancy information, and other descriptions of the second occupancy information can refer to the above description of the first occupancy information in step 801 at the encoding end, and details are not repeated here.

[0293] In some embodiments of the present application, as shown in FIG. 15A, the step 1403 can be implemented by the following step 14031 in combination with FIG. 14.

[0294] In step 14031, in a case where a difference between the first occupancy information of the current block and the second occupancy information of the candidate reference block is less than or less than or equal to a first threshold, the decoding end determines the first information of the candidate reference block as the transform coefficient of the current block.

[0295] In some embodiments of the present application, the difference between the first occupancy information and the second occupancy information is the number of different bit positions in the N first bit positions and the N second bit positions.

[0296] In some embodiments of the present application, the difference between the first occupancy information and the second occupancy information is the number of 1s in a result of performing an exclusive OR operation on the N first bit positions and the N second bit positions.

[0297] For the first occupancy information, the second occupancy information, and the difference between the first occupancy information and the second occupancy information, specific descriptions can be referred to the descriptions in the related steps of the encoding end, and details are not described herein to avoid repetition.

[0298] In some embodiments of the present application, the first threshold can be used to represent the maximum acceptable number of different bit positions in the N first bit positions and the N second bit positions. The first threshold can be set according to actual use requirements or experimental data or experience data. Specifically, further explanations and examples of the first threshold can be referred to the related descriptions in step 8031 of the encoding end, and details are not described herein to avoid repetition.

[0299] In some embodiments of the present application, the first information of the candidate reference block can include at least one of the following:

[0300] the transform coefficient of the candidate reference block;

[0301] the sum of the attribute information of the point in the candidate reference block;

[0302] the sum of the attribute information of the sub-block of the candidate reference block;

[0303] a preset constant;

[0304] the transform coefficient of the candidate reference block weighted by the filter;

[0305] the sum of the attribute information of the point in the candidate reference block weighted by the filter;

[0306] the sum of the attribute information of the sub-block of the candidate reference block weighted by the filter.

[0307] In some embodiments of the present application, the transform coefficients of the candidate reference block can be obtained by the RAHT process in the above embodiments. Specifically, the transform coefficients of the candidate reference block are obtained based on the attribute information by performing the RAHT after decoding the attribute code stream of the reference point cloud data. For the RAHT process, detailed description has been provided in the above embodiments, which will not be repeated here.

[0308] In addition, for the information in the first information other than the transform coefficients of the candidate reference block and the transform coefficients of the candidate reference block weighted by the filter, please refer to the related description in the above step 8031. To avoid repetition, the details will not be repeated here.

[0309] In some embodiments of the present application, as shown in FIG. 15B, the step 1403 can also be implemented by the following step 14032 in combination with FIG. 14.

[0310] In step 14032, when the difference between the first occupancy information of the current block and the second occupancy information of the candidate reference block is greater than the first threshold, the decoding end determines the second information of the neighboring block of the current block or the coefficients obtained by parsing the attribute code stream as the transform coefficients of the current block.

[0311] That is, when the difference between the first occupancy information and the second occupancy information is greater than the first threshold, the decoding end can perform intra prediction, i.e., determine the second information of the node in the first transform tree adjacent to the current block as the transform coefficients of the current block, i.e., the predicted transform coefficients of the current block; or the decoding end can not perform prediction, i.e., determine the coefficients obtained by parsing the attribute code stream as the transform coefficients of the current block.

[0312] The node in the first transform tree adjacent to the current block is a node in the first transform tree belonging to the same parent node as the current block. The predicted transform coefficients of the node in the first transform tree adjacent to the current block can be predicted by the decoding method provided in the embodiments of the present application.

[0313] In some embodiments of the present application, the second information of the neighboring block can include at least one of the following:

[0314] The predicted transform coefficients of the neighboring block;

[0315] The sum of the attribute information of the points in the neighboring block;

[0316] The sum of the attribute information of the sub-blocks of the neighboring block;

[0317] A preset constant;

[0318] The predicted transform coefficients of the neighboring block weighted by the filter;

[0319] The sum of the attribute information of the points in the neighboring block weighted by the filter;

[0320] a sum of attribute information of sub-blocks of the neighboring block weighted by the filter.

[0321] In some embodiments of the present application, the predicted transform coefficients of the neighboring block can be obtained according to the decoding method provided in the embodiments of the present application. Specifically, the predicted transform coefficients of the neighboring block are predicted in the process of decoding the attribute bitstream of the neighboring point cloud data.

[0322] In addition, the information in the second information other than the predicted transform coefficients of the neighboring block and the predicted transform coefficients of the neighboring block weighted by the filter is similar to the information in the first information, and specific reference can be made to the related description of the first information in the step 8031. To avoid repetition, details are not described here.

[0323] In the embodiments of the present application, the decoding end can first parse the geometry bitstream of the point cloud to obtain the first position information of the current block to be decoded, and then determine the candidate reference block of the current block based on the first position information and the layer information of the current block, and obtain the transform coefficients of the current block based on the first occupancy information of the current block and the second occupancy information of the candidate reference block. In this way, when determining the transform coefficients of the current block to be decoded, not only can the position information and the layer information be determined, but also the occupancy information can be determined. Since the position information and the layer information can represent the position of the points in the current block in space, and the occupancy information can represent the occupancy of the points in the current block in the point cloud, the combination of the position information, the layer information and the occupancy information can more accurately determine the transform coefficients of the current block, thereby improving the decoding efficiency.

[0324] Further, the decoding end can also parse the attribute bitstream of the point cloud to obtain the transform coefficient residual value of the current block to be decoded, and then the decoding end can obtain the reconstructed transform coefficients of the current block based on the transform coefficient residual value of the current block and the predicted transform coefficients of the current block obtained above (for example, by adding the transform coefficient residual value of the current block and the predicted transform coefficients of the current block to obtain the reconstructed transform coefficients of the current block), and then perform inverse RAHT based on the reconstructed transform coefficients of the current block to obtain the reconstructed attribute information of the point cloud. Alternatively, in the case where the encoding end does not predict the transform coefficients of the current block, the decoding end parses the attribute bitstream of the point cloud to obtain the transform coefficients, and then performs inverse RAHT on the transform coefficients to obtain the reconstructed attribute information of the point cloud.

[0325] It should be noted that the decoding method provided in the embodiments of the present application can be executed by the decoding end in the embodiments, which can be the decoding device 32 or the point cloud decoder 320 shown in FIG. 3, and the embodiments of the present application do not make any limitation.

[0326] The transform coefficient of the current block is determined through the coding and decoding method provided in the embodiments of the present application, and then the coding and decoding are realized, and the coding efficiency of the encoding end and the decoding efficiency of the decoding end are improved.

[0327] Next, the performance results of the encoding end encoding under different conditions are described through Table 1 and Table 2.

[0328] Table 1 Performance results of the encoding end encoding under C1 condition

[0329] Table 2 Performance results of the encoding end encoding under C1 condition

[0330] The percentages of the encoder and the decoder in Table 1 and Table 2 are both 100%, which indicates that the data in Table 1 and Table 2 is obtained under the condition that the test environment is consistent.

[0331] It can be obtained by analyzing Table 1 that under the Cat2-A quantization parameter, Luma is reduced by 1.1%, Cb is reduced by 2.1%, and Cr is reduced by 1.8%; under the Cat2-B quantization parameter, the reduction amplitude is smaller, Luma is reduced by 0.2%, Cb is reduced by 0.4%, and Cr is reduced by 0.3%; and under the Cat2-C quantization parameter, Luma is reduced by 0.6%, Cb is reduced by 0.5%, and Cr is reduced by 0.3%. Therefore, under the C1 condition, the Luma, Cb and Cr can all obtain a gain of -0.8%, -1.4% and -1.1% on average, and almost do not affect the time complexity.

[0332] It can be obtained by analyzing Table 2 that under the Cat2-A quantization parameter, Luma is reduced by 1.1%, Cb is reduced by 1.7%, and Cr is reduced by 1.5%; under the Cat2-B quantization parameter, the reduction amplitude is smaller, Luma is reduced by 0.3%, Cb is reduced by 0.4%, and Cr is reduced by 0.4%; and under the Cat2-C quantization parameter, Luma is reduced by 1.8%, Cb is reduced by 1.9%, and Cr is reduced by 3.7%. Therefore, under the C2 condition, the Luma, Cb and Cr can all obtain a gain of -1.2%, -1.6% and -2.0% on average, and almost do not affect the time complexity.

[0333] Correspondingly, the embodiment of the present application provides an encoding device applied to an encoding end, which can be any encoding device in an encoding process. According to the method example, the encoding device can be divided into functional modules, for example, each functional module can be divided according to each function, or two or more functions can be integrated into one processing module. The integrated module can be realized in the form of hardware or in the form of a software functional module. It should be noted that the division of the modules in the embodiment of the present application is illustrative, and is only a logical function division. In actual implementation, there can be another division mode.

[0334] In the case of dividing each functional module according to each function, FIG. 16 shows a possible structural schematic diagram of the encoding device involved in the above embodiment. As shown in FIG. 16, the encoding device 1600 includes a determination module 1601, a prediction module 1602 and an encoding module 1603.

[0335] The determination module 1601 is configured to determine first position information of the current block and first occupancy information of the current block.

[0336] In the embodiment of the present application, since the first occupancy information is recorded in the process of encoding the geometric information of the point cloud, specifically, in the process of octree division of the point cloud based on the geometric information, the determination module 1601 can include the unit or module for octree division in the above encoding device or point cloud encoder.

[0337] In the embodiment of the present application, the determination module 1601 can further include a unit or module for obtaining the geometric information (position information) of the points in the point cloud.

[0338] The prediction module 1602 is configured to determine a candidate reference block of the current block based on the first position information determined by the determination module 1601 and the layer information of the current block, and obtain the transform coefficient of the current block based on the first occupancy information and the second occupancy information of the candidate reference block.

[0339] In some embodiments of the present application, the prediction module 1602 is specifically configured to determine the first information of the candidate reference block as the predicted transform coefficient of the current block in the case that the difference between the first occupancy information and the second occupancy information is less than or less than or equal to the first threshold.

[0340] In some embodiments of the present application, the first information of the candidate reference block can include at least one of the following:

[0341] The transform coefficient of the candidate reference block;

[0342] The sum of the attribute information of the points in the candidate reference block;

[0343] a sum of attribute information of sub-blocks of the filter-weighted candidate reference block;

[0344] a preset constant;

[0345] a sum of attribute information of sub-blocks of the filter-weighted candidate reference block.

[0346] a sum of attribute information of sub-blocks of the filter-weighted candidate reference block.

[0347] a sum of attribute information of sub-blocks of the filter-weighted candidate reference block.

[0348] In some embodiments of the present application, the prediction module 1602 is specifically configured to, in a case where the difference between the first occupancy information and the second occupancy information is greater than a first threshold, determine the second information of the neighboring block of the current block or the coefficient obtained by performing RAHT on the current block as the transform coefficient of the current block.

[0349] In some embodiments of the present application, the second information of the neighboring block can include at least one of the following:

[0350] a predicted transform coefficient of the neighboring block;

[0351] a sum of attribute information of sub-blocks of the filter-weighted candidate reference block.

[0352] a sum of attribute information of sub-blocks of the filter-weighted candidate reference block.

[0353] a preset constant;

[0354] a predicted transform coefficient of the neighboring block;

[0355] a sum of attribute information of sub-blocks of the filter-weighted candidate reference block.

[0356] a sum of attribute information of sub-blocks of the filter-weighted candidate reference block.

[0357] In some embodiments of the present application, the first occupancy information includes N first bits, and each first bit is used to represent whether a sub-block of the current block is occupied by a point; the second occupancy information includes N second bits, and each second bit is used to represent whether a sub-block of the candidate reference block is occupied by a point, and N is an integer greater than 1.

[0358] In some embodiments of the present application, the difference between the first occupancy information and the second occupancy information is the number of different bits in the N first bits and the N second bits; or, the difference between the first occupancy information and the second occupancy information is the number of 1s in the result obtained by performing bitwise XOR operation on the N first bits and the N second bits.

[0359] In some embodiments of the present application, the current block is a node in a first transform tree, and the level information of the current block is used to represent the level of the current block in the first transform tree, and the first transform tree is a RAHT transform tree.

[0360] It should be noted that for the above-mentioned first position information, first occupancy information, second occupancy information, current block, candidate reference block, reference block, transform tree, transform coefficient and prediction transform coefficient, etc., the specific description can be referred to the related description in the above-mentioned encoding method embodiments, and to avoid repetition, it will not be repeated here.

[0361] The encoding device provided by the embodiments of the present application can not only determine the transform coefficient of the current block based on the position information and the level information, but also determine the transform coefficient of the current block in combination with the occupancy information. Since the position information and the level information can represent the position of the point in the current block in the space, and the occupancy information can represent the case that the current block is occupied by the point in the point cloud, the transform coefficient of the current block can be more accurately determined in combination with the position information, the level information and the occupancy information, so that the encoding efficiency can be improved.

[0362] The modules of the above-mentioned encoding device can also be used to perform other actions in the above-mentioned encoding method embodiments, and all related contents of each step involved in the above-mentioned encoding method embodiments can be referred to the function description of the corresponding function module, and will not be repeated here.

[0363] In the case of using an integrated unit, FIG. 17 shows another possible structural schematic diagram of the encoding device involved in the above-mentioned embodiments. As shown in FIG. 17, the encoding device 1700 provided by the embodiments of the present application can include a processing module 1701 and a communication module 1702. The processing module 1701 can be used to control and manage the actions of the encoding device, for example, the processing module 1701 can be used to support the encoding device to perform steps 801 to 803 and the like in the above-mentioned encoding method embodiments, and / or other processes of the technology described herein. The communication module 1702 can be used to support the communication of the encoding device with other network entities, for example, to communicate with the decoding device. In one example, as shown in FIG. 17, the encoding device 1700 can also include a storage module 1703 for storing the program code and data of the encoding device, for example, to store the obtained transform coefficient or to store the attribute code stream generated by encoding.

[0364] Wherein, the processing module 1701 can be a processor, for example, the processor can be the point cloud encoder 310 in FIG. 3. The communication module 1702 can be a transceiver, transceiver circuit or communication interface, etc., for example, the output interface 311 in FIG. 3, and the storage module 1703 can be a memory.

[0365] For more details of the modules included in the encoding apparatus to implement the above functions, please refer to the related descriptions in the method embodiments of the encoding end above, which will not be repeated here.

[0366] It should be noted that the encoding end to which the encoding apparatus in this embodiment is applied can be the encoding device 31 or the point cloud encoder 310 shown in FIG. 3, that is, the encoding apparatus can be the encoding device 31 or part thereof, or the point cloud encoder 310 or part thereof.

[0367] Correspondingly, the embodiment of the present application provides a decoding apparatus applied to a decoding end. The decoding apparatus can be any decoding apparatus in the decoding process. According to the method examples above, the decoding apparatus can be divided into functional modules. For example, each functional module can be divided according to each function, or two or more functions can be integrated into one processing module. The integrated module can be realized in the form of hardware or in the form of a software functional module. It should be noted that the division of the modules in the embodiment of the present application is illustrative, and is only a logical functional division. In actual implementation, there can be another division manner.

[0368] In the case of dividing each functional module according to each function, FIG. 18 shows a possible structural schematic diagram of the decoding apparatus involved in the above embodiment. As shown in FIG. 18, the decoding apparatus includes a parsing module 1801 and a prediction module 1802.

[0369] The parsing module 1801 is configured to parse a geometry bitstream of a point cloud to obtain second position information of a current block to be decoded.

[0370] The prediction module 1802 is configured to determine a candidate reference block of the current block based on the second position information parsed by the parsing module 1801 and layer information of the current block, and obtain a prediction transform coefficient of the current block based on first occupancy information of the current block and second occupancy information of the candidate reference block.

[0371] In some embodiments of the present application, the prediction module 1802 is specifically configured to, in a case where a difference between the first occupancy information and the second occupancy information is less than or less than or equal to a first threshold, determine the first information of the candidate reference block as a transform coefficient of the current block.

[0372] In some embodiments of the present application, the first information of the candidate reference block includes at least one of the following:

[0373] a transform coefficient of the candidate reference block;

[0374] a sum of attribute information of points in the candidate reference block;

[0375] a sum of attribute information of sub-blocks of the candidate reference block.

[0376] a preset constant;

[0377] a sum of attribute information of the filter-weighted center point of the candidate reference block;

[0378] a sum of attribute information of the filter-weighted sub-block of the candidate reference block.

[0379] a sum of attribute information of the filter-weighted sub-block of the candidate reference block.

[0380] In some embodiments of the present application, the prediction module 1802 is specifically configured to, in a case where the difference between the first occupancy information and the second occupancy information is greater than a first threshold, determine the second information of the neighboring block or the coefficient obtained by parsing the attribute code stream as the transform coefficient of the current block.

[0381] In some embodiments of the present application, the second information of the neighboring block can include at least one of the following:

[0382] a predicted transform coefficient of the neighboring block;

[0383] a sum of attribute information of the center point of the neighboring block;

[0384] a sum of attribute information of the sub-block of the neighboring block;

[0385] a preset constant;

[0386] a filter-weighted predicted transform coefficient of the neighboring block;

[0387] a sum of attribute information of the filter-weighted center point of the neighboring block;

[0388] a sum of attribute information of the filter-weighted sub-block of the neighboring block.

[0389] In some embodiments of the present application, the first occupancy information includes N first bits, and each first bit is used to represent whether a sub-block of the current block is occupied by a point; the second occupancy information includes N second bits, and each second bit is used to represent whether a sub-block of the candidate reference block is occupied by a point, and N is an integer greater than 1.

[0390] In some embodiments of the present application, the difference between the first occupancy information and the second occupancy information is the number of different bits in the N first bits and the N second bits; or, the difference between the first occupancy information and the second occupancy information is the number of 1s in the result obtained by performing bitwise XOR operation on the N first bits and the N second bits.

[0391] In some embodiments of the present application, the current block is a node in a first transform tree, and the layer information of the current block is used to represent a layer number of the current block in the first transform tree, and the first transform tree is a RAHT transform tree.

[0392] It should be noted that the second position information, the first occupancy information, the second occupancy information, the current block, the candidate reference block, the reference block, the transform tree, the transform coefficient, and the prediction transform coefficient can be specifically referred to the related description in the decoding method embodiments, and details are not described herein again to avoid repetition.

[0393] The decoding apparatus provided in the embodiments of the present application can determine the transform coefficient of the current block to be decoded based on the position information and the layer information, and can also determine the transform coefficient in combination with the occupancy information. Since the position information and the layer information can represent the position of the point in the current block in the space, and the occupancy information can represent the case that the current block is occupied by the point in the point cloud, the transform coefficient of the current block can be determined more accurately in combination with the position information, the layer information, and the occupancy information, so that the decoding efficiency can be improved.

[0394] The modules of the decoding apparatus can also be used to perform other actions in the decoding method embodiments, and all related contents of the steps involved in the decoding method embodiments can be referred to the function description of the corresponding functional modules, and details are not described herein again.

[0395] In the case of using integrated units, FIG. 19 shows another possible structural schematic diagram of the decoding apparatus involved in the embodiments. As shown in FIG. 19, the decoding apparatus provided in the embodiments of the present application can include a processing module 1901 and a communication module 1902. The processing module 1901 can be used to control and manage the actions of the decoding apparatus, for example, the processing module 1901 can be used to support the decoding apparatus to perform steps 1401 to 1403 and the like in the decoding method embodiments, and / or other processes of the technology described herein. The communication module 1902 can be used to support the communication of the decoding apparatus with other network entities, for example, the communication with the encoding apparatus. In one example, as shown in FIG. 19, the decoding apparatus can also include a storage module 1903 for storing the program code and data of the decoding apparatus, for example, storing the obtained transform coefficient.

[0396] The processing module 1901 can be a processor, for example, the processor can be the point cloud decoder 320 in FIG. 3. The communication module 1902 can be a transceiver, transceiver circuit or communication interface, for example, the input interface 321 in FIG. 3, and the storage module 1903 can be a memory.

[0397] More details of the modules included in the decoding apparatus to implement the above functions can refer to the related descriptions in the method embodiments of the decoding end above, which will not be repeated here.

[0398] It should be noted that the decoding end to which the decoding apparatus in this embodiment is applied can be the decoding device 32 or the point cloud decoder 320 shown in FIG. 3, that is, the decoding apparatus can be the decoding device 32 or part thereof, or the point cloud decoder 320 or part thereof.

[0399] Correspondingly, as shown in FIG. 20, an encoder 200 is provided in this embodiment, which includes a processor 201 and a memory 202 storing processor-executable instructions. When the instructions are executed, the processor 201 implements the encoding method described above.

[0400] In some embodiments of the present application, the encoder 200 described above can be the encoding end in the above embodiments, or the encoder 200 described above can be the encoding device 31 or the point cloud encoder 310 in FIG. 3, or the encoder 200 can further include the encoding apparatus shown in FIG. 16 or FIG. 17.

[0401] In some embodiments of the present application, the processor 201 described above can be the processing module 1701 shown in FIG. 17, and the memory 202 described above can be the storage module 1703 shown in FIG. 17.

[0402] It should be noted that the encoder in this embodiment is the same as the encoding method in the method embodiments described above, and therefore, each implementation process and implementation manner in the encoding method embodiments described above can be applied to the encoder in this embodiment and can achieve the same technical effects.

[0403] Correspondingly, as shown in FIG. 21, a decoder 210 is provided in this embodiment, which includes a processor 211 and a memory 212 storing processor-executable instructions. When the instructions are executed, the processor 211 implements the decoding end method described above.

[0404] In some embodiments of the present application, the decoder 210 described above can be the decoding end in the above embodiments, or the decoder 210 described above can be the decoding device 32 or the point cloud decoder 320 in FIG. 3, or the decoder 210 can further include the decoding apparatus shown in FIG. 18 or FIG. 19.

[0405] In some embodiments of the present application, the processor 211 described above can be the processing module 1901 shown in FIG. 19, and the memory 212 described above can be the storage module 1903 shown in FIG. 19.

[0406] It should be noted that the decoder in this embodiment is the same as the decoding method in the method embodiment, therefore, each implementation process and implementation manner in the decoding method embodiment can be applied to the decoder in this embodiment, and the same technical effects can be achieved.

[0407] Embodiments of the present application provide a chip, which comprises a processor and a communication interface, the communication interface is coupled with the processor, the processor is used to run a program or an instruction, and each process of the encoding method embodiment or each process of the decoding method embodiment can be implemented, and the same technical effects can be achieved. To avoid repetition, details are not described herein.

[0408] It should be noted that the communication interface can be the communication module 1702 shown in Fig. 17, the output interface 311 shown in Fig. 3, the communication module 1902 shown in Fig. 19, or the input interface 321 shown in Fig. 3.

[0409] Specifically, when the chip implements each process of the encoding method embodiment, the communication interface is the communication module 1702 shown in Fig. 17 or the output interface 311 shown in Fig. 3. Alternatively, when the chip implements each process of the decoding method embodiment, the chip is the communication module 1902 shown in Fig. 19 or the input interface 321 shown in Fig. 3.

[0410] Embodiments of the present application provide a computer storage medium, which stores a computer program, and the computer program is executed by a processor to implement each process of the encoding method embodiment or each process of the decoding method embodiment, and the same technical effects can be achieved. To avoid repetition, details are not described herein.

[0411] In some embodiments of the present application, the computer storage medium can be the storage module 1703 shown in Fig. 17 or the storage module 1903 shown in Fig. 19.

[0412] Embodiments of the present application provide a computer storage medium, which can be used to store the attribute code stream generated by the encoding method.

[0413] It should be noted that the two computer storage media can be the same or different, and embodiments of the present application do not limit this.

[0414] Specifically, when the computer program implements each process of the encoding method embodiment, the computer storage medium is the storage module 1703 shown in Fig. 17. Alternatively, when the computer program implements each process of the decoding method embodiment, the computer storage medium is the storage module 1903 shown in Fig. 19.

[0415] The embodiment of the present application provides a computer program product, including computer program instructions, which, when executed, implement various processes of the above-mentioned encoding method embodiment or implement various processes of the above-mentioned decoding method embodiment, and can achieve the same technical effects. To avoid repetition, details are not described here.

[0416] It should be noted that the scope of the methods and apparatus of the present application embodiments is not limited to performing functions in the order shown or discussed, and can also include performing functions in a substantially simultaneous manner or in reverse order, for example, the described methods can be performed in an order different from that described, and various steps can also be added, omitted or combined. In addition, features described with reference to certain examples can be combined in other examples.

[0417] In the above embodiments, the method and device can be realized by software, hardware, firmware or any combination thereof, in whole or in part. When implemented by software, it can be realized in whole or in part in the form of a computer program product. The computer program product includes one or more computer instructions. When loaded and executed on a computer, the computer instructions produce the processes or functions in the embodiments of the present application in whole or in part. The computer can be a general-purpose computer, a special-purpose computer, a computer network or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transferred from one computer-readable storage medium to another, for example, the computer instructions can be transferred from one website, computer, server or data center to another website, computer, server or data center through wired (such as coaxial cable, optical fiber, digital subscriber line (DSL)) or wireless (such as infrared, wireless, microwave, etc.) mode. The computer-readable storage medium can be any available medium that can be accessed by a computer or a data storage device such as a server, data center, etc. integrated with one or more available media. The available medium can be a magnetic medium (such as a floppy disk, a magnetic disk, a magnetic tape), an optical medium (such as a digital video disc (DVD)), or a semiconductor medium (such as a solid state drive (SSD)), etc.

[0418] Those skilled in the art can clearly understand the system, device and unit described above from the description of the embodiments, for the convenience and brevity of description, only the division of the above functional modules is exemplified, and in actual application, the above functions can be completed by different functional modules according to needs, that is, the internal structure of the device is divided into different functional modules to complete all or part of the functions described above. The specific working process of the system, device and unit described above can refer to the corresponding process in the foregoing method embodiments, which will not be repeated here.

[0419] In several embodiments provided in the present application, it should be understood that the disclosed system, device and method can be implemented in other ways. For example, the device embodiments described above are only schematic, for example, the division of the modules or units is only a logical function division, and actual implementation can have another division manner, for example, a plurality of units or components can be combined or integrated into another system, or some features can be ignored or not executed. In addition, the coupling or direct coupling or communication connection between the units shown or discussed can be indirect coupling or communication connection through some interface, device or unit, and can be electrical, mechanical or other forms.

[0420] The units described as separate components can or can not be physically separate, and the components shown as units can or can not be physical units, that is, they can be located in one place, or can be distributed on a plurality of network units. Part or all of the units can be selected according to actual needs to achieve the purpose of the embodiment.

[0421] In addition, each functional unit in each embodiment of the present application can be integrated in one processing unit, or each unit can exist physically, or two or more units can be integrated in one unit. The integrated unit can be realized in the form of hardware or in the form of software functional unit.

[0422] The integrated unit, if realized in the form of software functional unit and sold or used as an independent product, can be stored in a computer readable storage medium. Based on such understanding, the technical solutions of the present application essentially or the part of the prior art that makes a contribution or the whole or part of the technical solutions can be embodied in the form of software product, which is stored in a storage medium and includes a plurality of instructions for making a computer device (which can be a personal computer, a server, or a network device, etc.) or a processor execute all or part of the steps of the method described in each embodiment of the present application. The foregoing storage medium includes: flash memory, mobile hard disk, read-only memory, random access memory, magnetic disk or optical disk and various program code storage media.

[0423] The above merely provides the specific implementation of the present application, but the protection scope of the present application is not limited to this. Any change or replacement within the technical scope disclosed by the present application should be covered in the protection scope of the present application. Therefore, the protection scope of the present application should be subject to the protection scope of the claims.

Claims

1. An encoding method characterized by comprising: The method comprises: determining first position information of a current block and first occupancy information of the current block; determining a candidate reference block of the current block based on the first position information and layer information of the current block; obtaining transform coefficients of the current block based on the first occupancy information and second occupancy information of the candidate reference block; obtaining attribute code streams based on encoding of the transform coefficients of the current block.

2. The method of claim 1, wherein, The method comprises: in a case where a difference between the first occupancy information and the second occupancy information is less than or equal to a first threshold, determining first information of the candidate reference block as the transform coefficients of the current block.

3. The method of claim 2, wherein, The first information of the candidate reference block comprises at least one of: transform coefficients of the candidate reference block; a sum of attribute information of points in the candidate reference block; a sum of attribute information of sub-blocks of the candidate reference block; a preset constant; filter-weighted transform coefficients of the candidate reference block; filter-weighted sum of attribute information of points in the candidate reference block; filter-weighted sum of attribute information of sub-blocks of the candidate reference block.

4. The method of claim 1, wherein, The method comprises: in a case where the difference between the first occupancy information and the second occupancy information is greater than the first threshold, determining second information of a neighboring block of the current block or coefficients obtained through region adaptive hierarchical transform (RAHT) of the current block as the transform coefficients of the current block.

5. The method according to any one of claims 1 to 4, characterized in that, The first occupancy information comprises N first bits, and each first bit is used to represent whether a sub-block of the current block is occupied; the second occupancy information comprises N second bits, and each second bit is used to represent whether a sub-block of the candidate reference block is occupied, and N is an integer greater than 1.

6. The method of claim 5, wherein the difference between the first occupancy information and the second occupancy information is a number of different bits in the N first bits and the N second bits; or the difference between the first occupancy information and the second occupancy information is a number of 1s in a result obtained through bitwise exclusive OR operation of the N first bits and the N second bits.

7. The method according to any one of claims 1 to 6, characterized in that, The current block is a node in a first transform tree, the layer information of the current block is used to represent a layer number of the current block in the first transform tree, and the first transform tree is a RAHT transform tree.

8. A decoding method, comprising: The method comprises: parsing a geometry code stream of a point cloud to obtain second position information of a current block to be decoded; determining a candidate reference block of the current block based on the second position information and layer information of the current block; obtaining transform coefficients of the current block based on first occupancy information of the current block and second occupancy information of the candidate reference block.

9. The method of claim 8, wherein, The method comprises: in a case where a difference between the first occupancy information and the second occupancy information is less than or equal to a first threshold, The first information of the candidate reference block is determined as the transform coefficient of the current block.

10. The method of claim 9, wherein, The first information of the candidate reference block comprises at least one of: The transform coefficient of the candidate reference block; The sum of attribute information of points in the candidate reference block; The sum of attribute information of sub-blocks of the candidate reference block; A preset constant; The transform coefficient of the candidate reference block after filter weighting; The sum of attribute information of points in the candidate reference block after filter weighting; The sum of attribute information of sub-blocks of the candidate reference block after filter weighting.

11. The method of claim 8, wherein, The transform coefficient of the current block is obtained based on the first occupancy information of the current block and the second occupancy information of the candidate reference block, comprising: In a case where a difference between the first occupancy information and the second occupancy information is greater than a first threshold, the second information of a neighboring block of the current block or a coefficient obtained by parsing an attribute code stream is determined as the transform coefficient of the current block.

12. The method according to any one of claims 8 to 11, characterized in that, The first occupancy information comprises N first bits, and each first bit is used to represent whether a sub-block of the current block is occupied; the second occupancy information comprises N second bits, and each second bit is used to represent whether a sub-block of the candidate reference block is occupied, and N is an integer greater than 1.

13. The method of claim 12, wherein The difference between the first occupancy information and the second occupancy information is the number of different bits in the N first bits and the N second bits; or The difference between the first occupancy information and the second occupancy information is the number of 1s in a result obtained by performing an exclusive-OR operation on the N first bits and the N second bits bit by bit.

14. The method according to any one of claims 8 to 13, characterized in that, The current block is a node in a first transform tree, and the layer information of the current block is used to represent a layer number of the current block in the first transform tree, and the first transform tree is a RAHT transform tree.

15. An encoding apparatus, comprising: The method comprises a determining module, a predicting module and an encoding module. The determining module is configured to determine first position information of a current block and first occupancy information of the current block. The predicting module is configured to determine a candidate reference block of the current block based on the first position information determined by the determining module and layer information of the current block. The transform coefficient of the current block is obtained based on the first occupancy information and second occupancy information of the candidate reference block. The encoding module is configured to encode based on the transform coefficient of the current block to obtain an attribute code stream.

16. The apparatus of claim 15, wherein, The predicting module is specifically configured to: In a case where a difference between the first occupancy information and the second occupancy information is less than or equal to a first threshold, the first information of the candidate reference block is determined as the transform coefficient of the current block.

17. The apparatus of claim 16, wherein, The first information of the candidate reference block comprises at least one of: The transform coefficient of the candidate reference block; The sum of attribute information of points in the candidate reference block; The sum of attribute information of sub-blocks of the candidate reference block; A preset constant; The transform coefficient of the candidate reference block after filter weighting; The sum of attribute information of points in the candidate reference block after filter weighting; The sum of attribute information of sub-blocks of the candidate reference block after filter weighting.

18. The apparatus of claim 15, wherein, The prediction module is specifically configured to: In a case where a difference between the first occupancy information and the second occupancy information is greater than a first threshold, determining, as the transform coefficient of the current block, a second information of a neighboring block of the current block or a coefficient obtained by performing RAHT on the current block.

19. The apparatus of any of claims 15-18, wherein, The first occupancy information includes N first bits, and each first bit is used to represent whether a sub-block of the current block is occupied; and the second occupancy information includes N second bits, and each second bit is used to represent whether a sub-block of the candidate reference block is occupied, N being an integer greater than 1.

20. The apparatus of claim 19, wherein, The difference between the first occupancy information and the second occupancy information is a number of different bits in the N first bits and the N second bits; or The difference between the first occupancy information and the second occupancy information is a number of 1s in a result obtained by performing a bitwise XOR operation on the N first bits and the N second bits.

21. The apparatus of any one of claims 15-20, wherein, The current block is a node in a first transform tree, and the layer information of the current block is used to represent a layer number of the current block in the first transform tree, and the first transform tree is a RAHT transform tree.

22. A decoding apparatus, comprising: The apparatus comprises a parsing module and a prediction module. The parsing module is configured to parse a geometry bitstream of a point cloud to obtain second position information of a current block to be decoded. The prediction module is configured to determine a candidate reference block of the current block based on the second position information parsed by the parsing module and layer information of the current block. The transform coefficient of the current block is obtained based on first occupancy information of the current block and second occupancy information of the candidate reference block.

23. The apparatus of claim 22, wherein, The prediction module is specifically configured to: In a case where a difference between the first occupancy information and the second occupancy information is less than or equal to a first threshold, determining, as the transform coefficient of the current block, first information of the candidate reference block.

24. The apparatus of claim 22, wherein, The first information of the candidate reference block includes at least one of: The transform coefficient of the candidate reference block; A sum of attribute information of points in the candidate reference block; A sum of attribute information of sub-blocks of the candidate reference block; A preset constant; The transform coefficient of the candidate reference block weighted by a filter; The sum of attribute information of points in the candidate reference block weighted by a filter; The sum of attribute information of sub-blocks of the candidate reference block weighted by a filter.

25. The apparatus of claim 22, wherein, The prediction module is specifically configured to: In a case where a difference between the first occupancy information and the second occupancy information is greater than a first threshold, determining, as the transform coefficient of the current block, a second information of a neighboring block of the current block or a coefficient obtained by performing RAHT on the current block.

26. The apparatus of any one of claims 22-25, wherein, The first occupancy information includes N first bits, and each first bit is used to represent whether a sub-block of the current block is occupied; and the second occupancy information includes N second bits, and each second bit is used to represent whether a sub-block of the candidate reference block is occupied, N being an integer greater than 1.

27. The apparatus of claim 26, wherein, The difference between the first occupancy information and the second occupancy information is the number of different bit positions in the N first bit positions and the N second bit positions. The difference between the first occupancy information and the second occupancy information is the number of 1s in a result of exclusive-OR operation on the N first bit positions and the N second bit positions. The current block is a node in a first transform tree, and the layer information of the current block indicates a layer number of the current block in the first transform tree, and the first transform tree is a RAHT transform tree.

28. The apparatus of any of claims 22-27, wherein, The encoder comprises a processor and a memory storing instructions executable by the processor, and when the instructions are executed, the processor implements the encoding method in any one of claims 1 to 7.

29. An encoder comprising: The decoder comprises a processor and a memory storing instructions executable by the processor, and when the instructions are executed, the processor implements the decoding method in any one of claims 8 to 14.

30. A decoder, comprising: The computer storage medium stores a computer program, and when the computer program is executed by a processor, the encoding method in any one of claims 1 to 7 or the decoding method in any one of claims 8 to 14 is implemented.

31. A computer storage medium, comprising, The computer storage medium is used to store the attribute code stream generated by the encoding method in any one of claims 1 to 7.

32. A computer storage medium, comprising, The computer program instructions are executed to implement the encoding method in any one of claims 1 to 7 or the decoding method in any one of claims 8 to 14.

33. A computer program product, characterised in that, ​

Citation Information

Patent Citations

  • Point cloud geometrical information inter-frame encoding and decoding method

    CN112565764A

  • Point cloud data processing method and device, equipment and medium

    CN116033186A

  • Intra-frame prediction method and device, encoder, decoder and storage medium

    CN116320487A

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

    WO2024011739A1