Transformation method, inverse transformation method, encoder, decoder and storage medium

By determining the transformation order based on the normal vector of the point cloud to be encoded in the RAHT transformation, the information redundancy problem caused by the fixed transformation order is solved, and the encoding efficiency is improved.

CN114363634BActive Publication Date: 2025-02-25GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202210083335.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2019-06-30
Publication Date
2025-02-25
Estimated Expiration
2039-06-30

AI Technical Summary

Technical Problem

In the geometry-based point cloud compression encoder framework, the use of a fixed transformation order during RAHT transformation results in large information redundancy of the transformation coefficient, resulting in poor encoding efficiency.

Method used

The order of RAHT transformation is optimized by determining the normal vector of the points to be encoded in the point cloud to be encoded and determining the transformation order based on the sum size of each coordinate component of the normal vector.

Benefits of technology

The redundancy of the transform coefficients obtained by the transformation is reduced and the encoding efficiency is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114363634B_ABST
    Figure CN114363634B_ABST
Patent Text Reader

Abstract

The embodiments of the present application provide a transformation method, an encoder, a decoder and a computer-readable storage medium, including: determining a normal vector of a point to be encoded in a point cloud to be encoded; based on the normal vector of the point to be encoded, summing up the coordinate components of the normal vector; and determining a transformation order based on the sum of the coordinate components of the normal vector.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of an application with an application date of June 30, 2019, application number 2019800967754, and invention name “Transformation method, inverse transformation method, encoder, decoder and storage medium”. Technical Field

[0002] The embodiments of the present application relate to the technical field of video encoding and decoding, and in particular, to a transformation method, an inverse transformation method, an encoder, a decoder and a storage medium. Background Art

[0003] In the geometry-based point cloud compression (G-PCC) encoder framework, the geometric information of the point cloud and the attribute information corresponding to each point cloud are encoded separately. After the geometry encoding is completed, the geometry information is reconstructed, and the encoding of the attribute information will depend on the reconstructed geometry information.

[0004] At present, attribute information encoding is mainly aimed at the encoding of color information. First, the color information is converted from the RGB color space to the YUV color space. Then, the point cloud is recolored using the reconstructed geometric information so that the unencoded attribute information corresponds to the reconstructed geometric information. In color information encoding, there are two main transformation methods. One is the distance-based lifting transformation that relies on the level of detail (LOD) division, and the other is the direct region adaptive hierarchical transformation (RAHT). Both methods convert color information from the spatial domain to the frequency domain, obtain high-frequency coefficients and low-frequency coefficients through the transformation, and finally quantize and encode the coefficients to generate a binary code stream. Among them, the RAHT transformation is based on the hierarchical structure obtained by octree division of the point cloud data, starting from the bottom layer of the octree and continuing to the top layer, looping through each node in each layer. The RAHT transformation of each node is performed in the x, y and z directions of the three-dimensional coordinates in the transformation order.

[0005] However, since different point clouds have different spatial distributions, when performing RAHT transformation, the transformation coefficients obtained by using a fixed transformation order still have large information redundancy, resulting in poor coding efficiency. Summary of the invention

[0006] The embodiments of the present application provide a transformation method, an inverse transformation method, an encoder, a decoder and a storage medium, which can reduce the redundancy of transformation coefficients obtained by transformation and improve coding efficiency.

[0007] The technical solution of the embodiment of the present application can be implemented as follows:

[0008] In a first aspect, an embodiment of the present application provides a transformation method, which is applied to an encoder, including:

[0009] Determine the normal vector of the point to be encoded in the point cloud to be encoded;

[0010] Based on the normal vector of the point to be encoded, the sum of the coordinate components of the normal vector is counted;

[0011] The transformation order is determined based on the sum of the coordinate components of the normal vector.

[0012] In a second aspect, an embodiment of the present application further provides a transformation method, which is applied to an encoder, comprising:

[0013] Determine three two-dimensional projection surfaces of the points to be encoded in the point cloud to be encoded on three coordinate planes formed in the three-dimensional space;

[0014] Based on the three two-dimensional projection surfaces, counting the projection area of ​​each coordinate surface;

[0015] Based on the projected area, a transformation order is determined.

[0016] In a third aspect, the embodiment of the present application further provides an inverse transformation method, including:

[0017] Parse the transformation order from the attribute bit stream;

[0018] During decoding, a region adaptive hierarchical transform (RAHT) inverse transform is performed based on the transform order.

[0019] In a fourth aspect, an embodiment of the present application provides an encoder, including:

[0020] A determination part, configured to determine a normal vector of a point to be encoded in a point cloud to be encoded;

[0021] The acquisition part is configured to count the sum of the coordinate components of the normal vector based on the normal vector of the point to be encoded;

[0022] The determining part is further configured to determine the transformation order based on the sum of the coordinate components of the normal vector.

[0023] In a fifth aspect, an embodiment of the present application further provides an encoder, including:

[0024] A determination part is configured to determine three two-dimensional projection surfaces of the points to be encoded in the point cloud to be encoded on three coordinate surfaces formed in the three-dimensional space;

[0025] An acquisition part is configured to count the projection area of ​​each coordinate plane based on the three two-dimensional projection planes;

[0026] The determining part is further configured to determine a transformation order based on the projection area.

[0027] In a sixth aspect, an embodiment of the present application provides a decoder, including:

[0028] The parsing part is configured to parse the transformation order from the attribute bit stream;

[0029] The decoding part is configured to perform a region adaptive hierarchical transform (RAHT) inverse transform based on the transform order during decoding.

[0030] In a seventh aspect, an embodiment of the present application further provides an encoder, including:

[0031] A first memory, used to store executable instructions;

[0032] The first processor is used to implement the method described in the first aspect or the method described in the second aspect when executing the executable instructions stored in the first memory.

[0033] In an eighth aspect, an embodiment of the present application further provides a decoder, including:

[0034] A second memory, used for storing executable instructions;

[0035] The second processor is used to implement the method described in the third aspect when executing the executable instructions stored in the second memory.

[0036] In a ninth aspect, an embodiment of the present application provides a computer-readable storage medium for encoding, comprising: storing executable instructions for causing a first processor to execute and implement the method described in the first aspect, or the method described in the second aspect.

[0037] In the tenth aspect, an embodiment of the present application provides a computer-readable storage medium, applied to a decoder, comprising: storing executable instructions for causing a second processor to execute and implement the method described in the third aspect.

[0038] The embodiments of the present application provide a transformation method, an inverse transformation method, an encoder, a decoder and a storage medium, including: determining the normal vector of a point to be encoded in a point cloud to be encoded; based on the normal vector of the point to be encoded, counting the sum of the coordinate components of the normal vector; and determining the transformation order based on the sum of the coordinate components of the normal vector. With the above-mentioned technical implementation scheme, since the encoder, in the process of attribute encoding, counts the sum of the coordinate components of the normal vector of each coordinate component through the normal vector of the point to be encoded, the transformation order for performing the RAHT transformation is finally determined based on the sum of the coordinate components of the normal vector. In this way, taking into account the accumulation of normal vectors, the transformation in the direction of significant features is given priority, thereby achieving the purpose of reducing the redundancy of the transformation coefficients obtained by the transformation and improving the encoding and decoding efficiency. BRIEF DESCRIPTION OF THE DRAWINGS

[0039] Figure 1 An exemplary encoding flow chart provided for an embodiment of the present application;

[0040] Figure 2 An exemplary decoding flow chart provided for an embodiment of the present application;

[0041] Figure 3A An exemplary two-dimensional Morton coding diagram provided in the embodiment of the present application Figure 1 ;

[0042] Figure 3B An exemplary two-dimensional Morton coding diagram provided in the embodiment of the present application Figure 2 ;

[0043] Figure 4A An exemplary three-dimensional Morton coding diagram provided in the embodiment of the present application Figure 1 ;

[0044] Figure 4B An exemplary three-dimensional Morton coding diagram provided in the embodiment of the present application Figure 2 ;

[0045] Figure 5 An exemplary hierarchical RAHT transformation schematic diagram provided in an embodiment of the present application;

[0046] Figure 6 A schematic diagram of storage of transform coefficients of an exemplary hierarchical RAHT transform provided in an embodiment of the present application;

[0047] Figure 7 A schematic diagram of transform coefficient storage for an exemplary hierarchical RAHT inverse transform provided in an embodiment of the present application;

[0048] Fig. 8A The process of the transformation method provided in the embodiment of the present application Figure 1 ;

[0049] Figure 8B The process of the transformation method provided in the embodiment of the present application Figure 2 ;

[0050] Fig. 9 Flowchart 3 of the transformation method provided in the embodiment of the present application;

[0051] Fig.10 A flowchart of an exemplary transformation sequence provided for an embodiment of the present application;

[0052] Fig.11 Flow chart 4 of the transformation method provided in the embodiment of the present application;

[0053] Fig.12 The process of the transformation method provided in the embodiment of the present application Figure 5 ;

[0054] Fig.13 The process of the transformation method provided in the embodiment of the present application Figure 6 ;

[0055] Fig.14 The process of the transformation method provided in the embodiment of the present application Figure 7 ;

[0056] Fig.15 Flow chart 8 of the transformation method provided in the embodiment of the present application;

[0057] Fig.16A The process of the transformation method provided in the embodiment of the present application Figure 9

[0058] Fig. 16B The process of the transformation method provided in the embodiment of the present application Figure 10 ;

[0059] Fig.17 The process of the transformation method provided in the embodiment of the present application Figure 10 one;

[0060] Fig.18 An exemplary space division schematic diagram provided for an embodiment of the present application;

[0061] Fig.19 The process of the transformation method provided in the embodiment of the present application Figure 10 two;

[0062] Fig. 20 The process of the transformation method provided in the embodiment of the present application Figure 10 three;

[0063] Fig.21 The process of the transformation method provided in the embodiment of the present application Figure 10Four;

[0064] Fig. 22 A flowchart of an inverse transformation method also provided in an embodiment of the present application;

[0065] Fig.23 The structure of the encoder provided in the embodiment of the present application is shown in FIG. Figure 1 ;

[0066] Fig.24 The structure of the encoder provided in the embodiment of the present application is shown in FIG. Figure 2 ;

[0067] Fig.25 A schematic diagram of the structure of the decoder provided in the embodiment of the present application Figure 1 ;

[0068] Fig.26 A schematic diagram of the structure of the decoder provided in the embodiment of the present application Figure 2 . DETAILED DESCRIPTION

[0069] In order to enable a more detailed understanding of the features and technical contents of the embodiments of the present application, the implementation of the embodiments of the present application is described in detail below in conjunction with the accompanying drawings. The attached drawings are for reference only and are not used to limit the embodiments of the present application.

[0070] In an embodiment of the present application, in the point cloud G-PCC encoder framework, after the point cloud of the input three-dimensional image model is sliced, each slice is independently encoded.

[0071] like Figure 1In the flowchart of G-PCC coding shown in FIG. 1 , it is applied to the point cloud encoder. For the point cloud data to be encoded, the point cloud data is first divided into multiple slices by slice division. In each slice, the geometric information of the point cloud and the attribute information corresponding to each point cloud are encoded separately. In the process of geometric coding, the coordinates of the geometric information are transformed so that all the point clouds are contained in a bounding box, and then quantized. This step of quantization mainly plays a role in scaling. Due to the quantization rounding, the geometric information of a part of the point cloud is the same, so it is determined whether to remove duplicate points based on parameters. The process of quantization and removal of duplicate points is also called voxelization. Then the bounding box is divided into octrees. In the octree-based geometric information coding process, the bounding box is divided into 8 sub-cubes in eight equal parts, and the non-empty (containing points in the point cloud) sub-cubes are further divided into eight equal parts until the leaf node obtained by division is a 1x1x1 unit cube, and the division is stopped. The points in the leaf node are arithmetically encoded to generate a binary geometric bit stream, that is, a geometric code stream. In the process of geometric information encoding based on trisoup (triangle soup, triangle patch set), octree division must also be performed first, but different from geometric information encoding based on octree, this trisoup does not need to divide the point cloud into unit cubes with a side length of 1x1x1 step by step, but stops dividing when the block (sub-block) has a side length of W. Based on the surface formed by the distribution of point clouds in each block, at most twelve vertices (intersections) generated by the surface and the twelve edges of the block are obtained, and the vertices are arithmetically encoded (surface fitting based on intersections) to generate a binary geometric bit stream, that is, a geometric code stream. Vertex is also used to implement the process of geometric reconstruction, and the reconstructed geometric information is used when encoding the attributes of the point cloud.

[0072] In the attribute encoding process, after the geometric encoding is completed and the geometric information is reconstructed, color conversion is performed to convert the color information (i.e., attribute information) from the RGB color space to the YUV color space. Then, the point cloud is recolored using the reconstructed geometric information so that the uncoded attribute information corresponds to the reconstructed geometric information. In the color information encoding process, there are two main transformation methods. One is the distance-based lifting transformation that relies on the level of detail (LOD) division, and the other is the direct transformation of the region adaptive hierarchical transform (RAHT). Both methods will convert the color information from the spatial domain to the frequency domain, obtain high-frequency coefficients and low-frequency coefficients through the transformation, and finally quantize the coefficients (i.e., quantized coefficients). Finally, the geometric coded data after octree division and surface fitting and the attribute coded data processed by the quantized coefficients are sliced ​​and synthesized, and the vertex coordinates of each block are encoded in turn (i.e., arithmetic coding) to generate a binary attribute bit stream, i.e., the attribute code stream.

[0073] like Figure 2 The flowchart of G-PCC decoding shown in the figure is applied to the point cloud decoder. The decoder obtains the binary code stream and independently decodes the geometric bit stream and attribute bit stream in the binary code stream. When decoding the geometric bit stream, the geometric information of the point cloud is obtained through arithmetic decoding-octree synthesis-surface fitting-reconstruction of geometry-inverse coordinate transformation; when decoding the attribute bit stream, the attribute information of the point cloud is obtained through arithmetic decoding-inverse quantization-LOD-based inverse lifting or RAHT-based inverse transformation-inverse color conversion, and the three-dimensional image model of the point cloud data to be encoded is restored based on the geometric information and attribute information.

[0074] In the attribute encoding process, after the RAHT transform is recolored, the geometric coordinate information of the point cloud can be obtained. The coordinate information of the point can be used to obtain the Morton code corresponding to each point in the point cloud. Morton code is also called z-ordercode because its encoding order follows the spatial z order. The specific method for calculating the Morton code is described as follows. For each component of the three-dimensional coordinate represented by a d-bit binary number, the representation of its three components is achieved by:

[0075] Among them, x l ,y l ,z l ∈{0,1} are the binary values ​​corresponding to the highest bit (l=1) to the lowest bit (l=d) of x, y, and z respectively. The Morton code M is to arrange x, y, and z in a crosswise order starting from the highest bit.l ,y l ,z l To the lowest bit, the calculation formula of M is as follows:

[0076]

[0077] Among them, m l′ ∈{0,1} are the values ​​of the highest bit (l'=1) to the lowest bit (l'=3d) of M. After obtaining the Morton code M of each point in the point cloud, the points in the point cloud are arranged in order from small to large Morton codes, and the weight w of each point is set to 1. Expressed in computer language, it is similar to the combination of z|(y<<1)|(x<<2).

[0078] Combination Figure 3A and 3B For explanation, the order of high and low bits is z, y, x (x|(y<<1)|(z<<2)) as an example.

[0079] Figure 3A The spatial encoding of each pixel of the 8*8 image is shown, from 000000 to 111111, using one-dimensional binary numbers to encode the position coordinates of the x, y values ​​from 0 to 7. Interlacing the binary coordinate values, we get a binary z value graph. Connecting the z-shaped graph along the numerical direction produces a recursive z-shaped curve. The z value is placed at each position in the graph in the order of connection. In fact, the above figure is generated by iterating in the z direction, from 00-11 (the entire Figure 1 z), then from 0000-1111 (put a z at each point of the previous z), then from 000000-111111 (put a z at each point of the previous z), increase two digits each time, and recursively increase.

[0080] For example, Figure 3B The spatial coding order of 2x2, 4x4, 8x8 and 16x16 is shown, from which it can be seen that the coding order of the Morton code is implemented according to the spatial z-order.

[0081] Rising to the 3D case, the recursive process is as follows Figure 4A and Figure 4B As shown in the figure, it realizes the coordinate interleaving. What it does is to continuously disperse the coordinate values. x|(y<<1)|(z<<2); that is, each coordinate value is dispersed, and each bit is interleaved in turn, first z, then y, and finally x.

[0082] The decoding process is the aggregation process. )

[0083] RAHT transformation is performed on the basis of the hierarchical structure obtained by dividing the point cloud data into octrees, starting from the bottom layer of the octree and performing the transformation layer by layer. Figure 5As shown, after the octree division is completed, voxel block 1 (i.e. Figure 5 The three colors and depths of the geometric body are alternated, and each square represents a point in the point cloud). Start the RAHT transformation from the bottom layer, taking the transformation sequence xyz as an example, as follows Figure 5 As shown, RAHT transformation is first performed along the x direction. If there are adjacent voxel blocks in the x direction, RAHT is performed on the two to obtain the average (DC coefficient) and details (AC coefficient) of the attribute values ​​of the two adjacent points. Among them, the DC coefficient obtained exists as the attribute information of the voxel block 2 of the parent node, and the RAHT transformation of the next layer is performed; and the AC coefficient is retained for the final encoding. If there are no adjacent points, the attribute value of the voxel block is directly passed to the second-layer parent node. During the second-layer RAHT transformation, it is performed along the y direction. If there are adjacent voxel blocks in the y direction, RAHT is performed on the two to obtain the average (DC coefficient) and details (AC coefficient) of the attribute values ​​of the two adjacent points. After that, the third-layer RAHT transformation is performed along the z direction, and the parent node voxel block 3 with three color depths is obtained as the child node of the next layer in the octree, and then the RAHT transformation is performed cyclically along the x, y, and z directions until there is only one parent node in the entire point cloud.

[0084] When traversing points in a point cloud in practice, the Morton code of the sorted point cloud is used, which facilitates the combination of adjacent points in the octree as shown in the figure.

[0085] For the attribute value c of two adjacent points 1 , c 2 The specific RAHT transformation process is as follows:

[0086]

[0087] Where w = w 1 +w 2 , luma is obtained by configuring the input quantization parameters, w is the weight corresponding to the DC coefficient, which is calculated. The DC coefficient is the weighted average of the attribute, and the AC coefficient is the attribute residual of two adjacent points. 1 ,c 2 In the first layer, the attribute value corresponds to w 1 and w 2 , used to obtain the DC coefficient value for calculation in other layers.

[0088] In the embodiment of the present application, the specific steps of RAHT transformation are as follows:

[0089] (1) The attribute values ​​of the points in the point cloud are used as the first-layer DC coefficients and their weights are all set to 1, and the RAHT transformation begins.

[0090] (2) The DC coefficient and AC coefficient of this layer are filled into the next parent layer, the parent node, according to the corresponding index. If there is no AC coefficient, it is not filled.

[0091] (3) According to the index sorted by the Morton code, traverse the DC coefficient corresponding to the index.

[0092] (4) Shift the Morton codes corresponding to all DC coefficients right by one position. At this time, the Morton code of each DC coefficient represents the Morton code of its parent node.

[0093] (5) Figure 6 As shown, it is determined whether the Morton codes of the two DC coefficients are the same. If they are the same, it means that under the same parent node, the two perform RAHT, fill the obtained DC coefficient into the DC coefficient of the parent node of the next layer, fill the AC coefficient into the last DC coefficient of the next layer, and assign the weight of the sum of the two DC coefficients to the DC coefficient of the parent node; if they are different, fill this DC coefficient and its weight directly into the next layer.

[0094] (6) Repeat 2)-5) until a layer has only one DC coefficient.

[0095] (7) Finally, the DC coefficient is quantized, and the DC coefficient and AC coefficient attribute values ​​of this layer are encoded.

[0096] Correspondingly, in the decoder block diagram, the RAHT transformation order also needs to be used in the RAHT inverse transformation.

[0097] The following describes the decoding process of RAHT.

[0098] The RAHT decoding process is the inverse transformation of the RAHT encoding process. Similar to the encoding process, before the inverse transformation, the Morton code of each point in the point cloud is calculated. After obtaining the Morton code M of each point, the points in the point cloud are arranged in ascending order, and the weight of each point is set to 1. The RAHT inverse process traverses all the points in the point cloud in the order after the Morton code is sorted.

[0099] Since the RAHT transformation is performed in layers, starting from the bottom layer, the adjacent points in the point cloud are judged layer by layer, and the attribute values ​​are transformed by RAHT according to the weights. The process of RAHT inverse transformation starts from the top layer and performs RAHT inverse transformation from top to bottom. Therefore, the weight information of each layer needs to be obtained before RAHT inverse transformation.

[0100] Before doing the inverse RAHT transformation, use the obtained Morton code information to start from the bottom layer and make a judgment on the adjacent nodes of each layer of RAHT in the encoding end, so as to obtain the weight information of each layer and the corresponding position of the AC coefficient. For each RAHT layer, shift the corresponding Morton code one bit to the left. Record the weight information and the Morton code information corresponding to the node in each layer into the buffer for later use.

[0101] When performing the RAHT inverse transformation, we start from the top layer, judge the adjacent nodes based on the Morton code information of each layer, and perform the RAHT inverse transformation using the obtained weight information and the attribute information obtained by decoding. Figure 7 As shown, the RAHT inverse transform is equivalent to the process from the k+1th layer to the kth layer. When the adjacent nodes are determined, the traversed DC coefficients and the corresponding AC coefficients are taken to perform the RAHT inverse transform.

[0102] More specifically, for the attribute value c of two adjacent points 1 , c 2 ,The specific RAHT inverse transformation process is as follows:

[0103]

[0104] Based on the above-introduced background, the transformation method provided in the embodiment of the present application is introduced below, which mainly focuses on the different ways of determining the transformation order during RAHT transformation in the encoder framework and is applied to the encoder (point cloud encoder).

[0105] like Fig. 8A As shown, an embodiment of the present application provides a transformation method, which may include:

[0106] S101, determining a normal vector of a point to be encoded in a point cloud to be encoded.

[0107] S102. Based on the normal vector of the point to be encoded, the sum of the coordinate components of the normal vector is counted.

[0108] S103: Determine the transformation order based on the sum of the coordinate components of the normal vector.

[0109] In some embodiments of the present application, Figure 8B As shown, after S103, it also includes: S104-105.

[0110] S104. Perform RAHT transformation based on the transformation order.

[0111] S105: Encode the transformation sequence and write it into the attribute bitstream.

[0112] The transformation method provided in the embodiment of the present application takes into account the RAHT transformation method of the distribution of the point cloud space and the surface orientation. It no longer adopts a fixed transformation order. Instead, it analyzes the spatial distribution of the point cloud contained in the block to be transformed and the preset neighborhood range before performing the RAHT transformation. The RAHT transformation order is determined based on the results of the analysis, thereby obtaining better coding performance.

[0113] In an embodiment of the present application, the point cloud to be encoded is the point cloud data of the object to be encoded in the point cloud to be encoded in the present application. For one point cloud to be encoded, it may contain N points, that is, N points to be encoded. Among them, N is greater than or equal to 1. By determining the normal vector of the point to be encoded in the point cloud to be encoded, the encoder can count the size of the sum of the coordinate components of the normal vector in the three-dimensional space based on the normal vector of the point to be encoded. The size of the sum of the coordinate components of the normal vector here represents the main distribution concentration characteristics of the point cloud to be encoded in the three-dimensional space. Since different point clouds have different spatial distributions, before performing the RAHT transformation, the encoder can determine the transformation order suitable for its own distribution characteristics based on the spatial distribution characteristics of each point cloud to be encoded. In this way, the encoder performs a RAHT transformation based on the transformation order, and the resulting transformation coefficient redundancy is small, thereby improving the encoding efficiency.

[0114] It should be noted that in the embodiment of the present application, since the transformation order of each point cloud to be encoded may be determined differently, when the transformation order is determined, the encoder needs to write the transformation order into the attribute code stream and attribute bit stream during the encoding process. For example, this order can be transmitted to the decoder using a 3-bit bit stream, so that the decoder can directly parse the transformation order of RAHT during decoding.

[0115] In an embodiment of the present application, the points to be encoded are multiple objects in the point cloud to be encoded, and the encoder can count the size of the sum of the coordinate components of the x-axis normal vectors of the multiple points to be encoded on the x-coordinate component, the size of the sum of the coordinate components of the y-axis normal vectors of the multiple points to be encoded on the y-coordinate component, and the size of the sum of the coordinate components of the z-axis normal vectors of the multiple points to be encoded on the z-coordinate component based on the normal vector of each point to be encoded; then, according to the distribution density or distribution size of the sum of the coordinate components of the x-axis normal vectors, the sum of the coordinate components of the y-axis normal vectors, and the sum of the coordinate components of the z-axis normal vectors, the density or the order of the accumulation of normal vectors is determined, thereby obtaining a transformation order, wherein the transformation order corresponds to the distribution order of the normal vectors from most to smallest.

[0116] In an embodiment of the present application, a method for determining the transformation order is: the encoder counts the sum of the absolute values ​​of each coordinate component of the normal vector based on the normal vector of the point to be encoded; the sum of the absolute values ​​represents the size of the sum of each coordinate component of the normal vector; and the sum of the absolute values ​​is arranged in order from large to small to determine the transformation order.

[0117] It should be noted that in the embodiment of the present application, the encoder statistics the sum of the absolute values ​​of each coordinate component of the normal vector by first counting all the normal vectors of each coordinate component and then normalizing them before performing the sum of the absolute values. The normal vectors in the embodiment of the present application are all used after the normalization.

[0118] Exemplarily, the encoder counts the sum of the absolute values ​​of the projections of the normal vectors on the x-axis, y-axis and z-axis for the normal vectors of each of the N points to be encoded. If the sum of the absolute values ​​of the x-axis is ∑X; the sum of the absolute values ​​of the y-axis is ∑|Y|; the sum of the absolute values ​​of the z-axis is ∑|Z|.

[0119] Then, when ∑|X|>∑|Y|>∑|Z|, the transformation order is xyz;

[0120] When ∑|X|>∑|Z|>∑|Y|, the transformation order is xzy;

[0121] When ∑|Y|>∑|Z|>∑|X|, the transformation order is yzx;

[0122] When ∑|Y|>∑|X|>∑|Z|, the transformation order is yxz;

[0123] When ∑|Z|>Σ|Y|>Σ|X|, the transformation order is zyx;

[0124] When Σ|Z|>Σ|X|>Σ|Y|, the transformation order is zxy.

[0125] It is understandable that the encoder uses the normal vector estimation method to obtain the normal vector information of each point. According to the size of the sum of the normal vectors in different directions, the RAHT transformation direction order is judged, that is, by analyzing the spatial distribution of the point cloud to be encoded, the normal vector of the point cloud to be encoded is estimated and the sum is calculated along each direction to obtain the RAHT transformation order, which improves the coding efficiency and coding performance of the G-PCC attribute coding part.

[0126] In some embodiments of the present application, based on Figure 8B ,like Fig. 9 As shown, the specific implementation of S101 includes: S1011-S1014.

[0127] as follows:

[0128] S1011. Obtain attribute information of the point cloud to be encoded.

[0129] S1012. Determine whether there is a normal vector of the point to be encoded in the attribute information of the point cloud to be encoded.

[0130] S1013. If it exists, directly obtain the normal vector of the point to be encoded.

[0131] S1014: If it does not exist, determine the normal vector of the point to be encoded based on the geometric information of the neighborhood points within the preset neighborhood range of the point to be encoded.

[0132] In the embodiment of the present application, when the encoder performs attribute encoding, the attribute information can be obtained through the header information of the point cloud to be encoded, and the attribute information here can include the color information of the point and the additional normal vector information. That is to say, in the embodiment of the present application, for the points to be encoded in the point cloud to be encoded, the attribute information parsed by the encoder may contain some normal vectors of the points to be encoded in the point cloud to be encoded, or may contain all, partially, or not at all. In view of these situations, the encoder can detect the attribute information of the acquired point cloud to be encoded, and for each point to be encoded, determine whether there is a normal vector of the point to be encoded in the attribute information of the point cloud to be encoded. If there is, the normal vector of the point to be encoded is directly obtained from the attribute information; at the same time, the encoder can also obtain the geometric information of the point cloud to be encoded, that is, obtain the spatial coordinate information of the point to be encoded. If not, the normal vector of the point to be encoded is determined based on the geometric information of the neighborhood points within the preset neighborhood range of the point to be encoded.

[0133] That is to say, for the to-be-encoded point whose corresponding normal vector is not found in the attribute information, it is necessary to estimate the normal vector.

[0134] For example, Fig.10 As shown, the point cloud to be encoded contains N points, and the attribute information corresponding to each point is A n,n=1,2,...N. The encoder determines whether there is a normal vector of the point to be encoded in the point cloud to be encoded from the attribute information traversal, and completes the judgment of whether there is a normal vector for each point in the point cloud. If it exists, the normal vector is directly obtained. For those that do not have a normal vector, the normal vector is obtained by normal vector estimation. After normalizing the normal vector of each encoded point, the absolute value sum of the projections of the normal vectors on the x-axis, y-axis and z-axis is directly counted for all normal vectors. If the absolute value sum of the x-axis is ΣX; the absolute value sum of the y-axis is Σ|Y|; the absolute value sum of the z-axis is ∑|Z|, the absolute value sums are sorted from large to small, then when ∑|X|> When ∑|Y|>∑|Z|, the transformation order is xyz; when ∑|X|>∑|Z|>∑|Y|, the transformation order is xzy; when ∑|Y|>∑|Z|>∑|X|, the transformation order is yzx; when ∑|Y|>∑|X|>Σ|Z|, the transformation order is yxz; when ∑|Z|>Σ|Y|>Σ|X|, the transformation order is zyx; when ∑|Z|>Σ|X|>∑|Y|, the transformation order is zxy.

[0135] For example, the normal vector mentioned in the embodiment of the present application can be represented as follows: n =(normX n ,normY n ,normZ n ). If the point cloud to be encoded contains the normal vector of each point, then Norm n ,n=1,2,3...N respectively perform normalization operation, that is:

[0136] in, This represents the normal vector of a point to be encoded.

[0137] It should be noted that if the point cloud to be encoded does not contain the normal vector of each point, the normal vector estimation method is used to calculate the normal vector information of each point. The RAHT transformation order is determined based on the size of the sum of the normal vectors in different directions.

[0138] In some embodiments of the present application, the geometric information includes: spatial coordinate information; for a point cloud that does not contain a normal vector for each point, the encoder obtains at least one neighborhood point closest to the point to be encoded within a preset neighborhood range; obtains the geometric information of at least one neighborhood point; determines at least one distance from at least one neighborhood point to the fitting plane based on the geometric information of at least one neighborhood point and a preset fitting surface equation; obtains a system eigenvector corresponding to the preset fitting surface equation based on minimization of the sum of squares of at least one distance; and uses the system eigenvector as the normal vector of the point to be encoded.

[0139] In some embodiments of the present application, the encoder further determines the normal vector of the point to be encoded based on the attribute information of the neighborhood points within the preset neighborhood range of the point to be encoded. For example, when the attribute information contains the normal vector of at least one neighborhood point, the encoder can obtain the normal vector of at least one neighborhood point from the attribute information; and then determine the normal vector of the point to be encoded based on the normal vector of at least one neighborhood point.

[0140] It should be noted that when the encoder finds only the normal vector of one neighborhood point from the attribute information, the normal vector of this neighborhood point is determined as the normal vector of the point to be encoded; when the encoder finds only the normal vectors of multiple neighborhood points from the attribute information, the average of the normal vectors of these multiple neighborhood points is determined as the normal vector of the point to be encoded.

[0141] It is understandable that the encoder can use the normal direction of each point to solve the spatial distribution of the point cloud in order to determine the optimal RAHT transformation order along the three directions of X, Y, and Z, optimize the distribution of AC transformation coefficients, remove the redundancy of AC coefficients, and thus improve coding efficiency.

[0142] like Fig.11 As shown, an embodiment of the present application provides a transformation method, which may include:

[0143] S201. Obtain attribute information of the point cloud to be encoded.

[0144] S202: Determine whether there is a normal vector of the point to be encoded in the attribute information of the point cloud to be encoded.

[0145] S203: If it exists, directly obtain the normal vector of the point to be encoded.

[0146] It should be noted that the implementation of S201-S203 here is consistent with the implementation description of S1011-S1013 in the aforementioned embodiment, and will not be repeated here.

[0147] S204, if it does not exist, traverse the cloud of points to be encoded in the order of the Morton code, and select at least one nearest neighborhood point of the point to be encoded within the preset neighborhood range.

[0148] S205. Obtain geometric information of at least one neighborhood point.

[0149] S206: Determine at least one distance from at least one neighborhood point to the fitting plane according to geometric information of at least one neighborhood point and a preset fitting surface equation.

[0150] S207. Obtain a system eigenvector corresponding to a preset fitting surface equation based on minimization of the sum of squares of at least one distance; the system eigenvector is used as a normal vector of the point to be encoded.

[0151] In an embodiment of the present application, for a point cloud that does not contain a normal vector for each point, a normal vector estimation method that can be used is a method of obtaining a normal vector using a PCA principal component analysis method based on local surface fitting, and an SVD normal vector estimation method can also be used.

[0152] Among them, the preset fitting surface equation includes: a plane equation that does not pass through the origin and a plane equation that passes through the origin. When the preset fitting surface equation used by the encoder is a plane equation that does not pass through the origin, the normal vector is estimated by the PCA principal component analysis method. When the preset fitting surface equation used by the encoder is a plane equation that passes through the origin, the normal vector is estimated by the SVD method.

[0153] For the PCA principal component analysis method, when estimating the normal vector of each point to be encoded in the point cloud to be encoded, it is necessary to use the spatial coordinate information of other points in the preset neighborhood of the point, that is, the spatial coordinate information of the neighborhood points, and the spatial coordinate information of the neighborhood points can be obtained from the geometric information. A fast K nearest neighbor search method is used to calculate the Morton code of each point in the encoded point cloud, and the Morton codes of the points to be encoded in the point cloud to be encoded are arranged in order from small to large to obtain the order of the Morton codes. According to the order of the Morton codes, the nearest K points are selected for each point within a certain range of points around the sorting (within the preset neighborhood) as its K nearest neighbor points.

[0154] It should be noted that the preset neighborhood range is not limited in the embodiment of the present application, and is subject to the actual setting range. The selection of at least one neighborhood point K can be different. The smaller K is, the smaller the complexity of the calculation is, and the error of the normal vector obtained will be large. The larger K is, the greater the calculation complexity when solving the normal direction, but the error of the normal direction obtained is smaller.

[0155] For example, for the selected K neighborhood points, their spatial coordinate information is: (x i ,y i ,z i ), i = 1, 2, 3 ... K, assuming that the preset fitting surface equation is x + by + cz = d (d> 0), where a 2 +b 2 +c 2 =1. The encoder determines at least one distance from at least one neighborhood point to the fitting plane according to the spatial coordinate information of at least one neighborhood point and the preset fitting surface equation, wherein any point (x i ,y i ,z i ) is at a distance d from the plane i =|ax i +by i +cz i -d|.

[0156] In order to obtain the best fitting surface, the sum of squares of at least one distance is minimized, that is, The specific solution process is transformed into: When , find the extreme value of f.

[0157] The solution process is as follows:

[0158] The encoder can be known through simple calculation that the centroid of the local fitting surface passing through the K neighborhood is: but

[0159] In order to find the extreme value of f, the partial derivative of f is calculated as shown in (4, (5) and (6):

[0160]

[0161] in,

[0162] By combining formulas (4), (5) and (6), we get the covariance matrix (7):

[0163]

[0164] In this way, by solving the eigenvalues ​​and eigenvectors of the covariance matrix, we get the eigenvector (a, b, c) T , then the normal vector corresponding to the point n to be encoded in the point cloud to be encoded can be expressed as: Norm n =(NormX n ,NormY n ,NormZ n )=(a,b,c).

[0165] After obtaining the normal vectors of all the points to be encoded in the point cloud to be encoded through this principal component analysis method PCA, the absolute values ​​of all the normal vector projections in each direction of X, Y, and Z are summed up, and then the summed values ​​are sorted from large to small to obtain the transformation order.

[0166] For the SVD normal vector estimation method, select points in the K neighborhood. In this example, K can be selected as 20. The spatial coordinate information of the selected K neighborhood points is: (x i ,y i ,z i ),i=1,2,3…K. The preset fitting surface equation passes through the origin, which is ax+by+cz=0,a 2 +b 2 +c 2=1. The encoder determines at least one distance from at least one neighborhood point to the fitting plane according to the spatial coordinate information of at least one neighborhood point and the preset fitting surface equation, wherein any point (x i ,y i ,z i ) is at a distance d from the plane i =|ax i +by i +cz i |.

[0167] In order to obtain the best fitting surface, the sum of squares of at least one distance is minimized, that is, The specific solution process is transformed into: Find the extreme value of f. The solution process is as follows:

[0168] In order to find the extreme value of f, the partial derivatives (8), (9) and (10) of f are calculated as shown below:

[0169]

[0170] in,

[0171] By combining formulas (8), (9) and (10), we get the covariance matrix (11):

[0172]

[0173] In this way, by solving the eigenvalues ​​and eigenvectors of the covariance matrix, we get the eigenvector (a, b, c) T , then the normal vector corresponding to the point n to be encoded in the point cloud to be encoded can be expressed as: Norm n =(NormX n ,NormY n ,NormZ n )=(a,b,c).

[0174] It can be understood that the encoder makes the fitting curve as close to the plane as possible, and proposes to estimate the normal vector using methods such as a plane passing through the origin and a plane not passing through the origin, so that the normal vector estimation can be accurately obtained in all cases, thereby improving the accuracy of the normal vector estimation, thereby improving the optimality of the transformation order, and ultimately improving the encoding performance.

[0175] S208. Based on the normal vector of the point to be encoded, calculate the size of the sum of the coordinate components of the normal vector.

[0176] S209: Determine the transformation order based on the sum of the coordinate components of the normal vector.

[0177] S210: Perform transformation based on the transformation order.

[0178] S211. Encode the transformation sequence and write it into the attribute bit stream.

[0179] It should be noted that the implementation process of S208-S211 here is consistent with the implementation process of S102-105 described above, and will not be repeated here.

[0180] In some embodiments of the present application, Fig.12 As shown, the implementation that can be replaced with the implementation of S204 is: S214. As follows:

[0181] S214: If it does not exist, traverse the cloud of points to be coded according to the spatial distance, and select at least one nearest neighborhood point of the point to be coded within the preset neighborhood range.

[0182] In the embodiment of the present application, for a point cloud that does not contain a normal vector for each point, the encoder can use a search method based on spatial distance to find the K nearest neighbor points (at least one neighbor point) with the closest spatial distance when performing a K nearest neighbor search. In order to accurately find the neighboring points of each point, all points in the point cloud to be encoded can be traversed to perform a K nearest neighbor search.

[0183] Specifically, all points in the point cloud to be encoded are traversed, the spatial distances between all points and the current point to be encoded are determined, and one or more points with the smallest spatial distance are found, that is, the K nearest neighboring points are determined.

[0184] In some embodiments of the present application, Fig.13 As shown, the implementation that can be replaced with the implementation of S204 is: S215-S216. As follows:

[0185] S215. If it does not exist, perform KD tree partitioning on the coded point cloud to obtain a hierarchical structure.

[0186] S216: traverse the hierarchical structure and obtain a point belonging to the same level as the point to be encoded as at least one neighborhood point.

[0187] In an embodiment of the present application, for a point cloud that does not contain a normal vector for each point, a traversal is performed based on a multi-dimensional binary tree (KD, K-dimension binary tree), so as to facilitate the search for neighborhood points.

[0188] In an embodiment of the present application, the encoder performs KD tree division on the point cloud to be encoded to obtain a hierarchical structure. That is, the encoder first performs KD tree division on the points in the point cloud, that is, first sorting the points in the point cloud along the x direction according to the size of the coordinates, and finding the coordinates of the first root node of the middle point to divide the point cloud into the median of two parts with the same number of points, and then divides the point cloud along two leaf nodes of different coordinate axes (in the order of x, y, and z) in turn until the last layer with a number of points not exceeding P (P is an integer) is reached to obtain a hierarchical structure. Traverse the hierarchical structure and obtain a point belonging to the same level as the point to be encoded as at least one neighborhood point, that is, calculate the normal vector in units of subtrees.

[0189] It is understandable that when KD partitioning is used, each node is a point to be encoded. Compared with the octree whose parent node is a combined point, directly judging the point to be encoded and then obtaining the transformation order is more accurate, which improves the encoding accuracy.

[0190] like Fig.14 As shown, an embodiment of the present application provides a transformation method, which may include:

[0191] S301, selecting feature points from the point cloud to be encoded.

[0192] S302 , estimating the normal vector of the feature point to obtain the normal vector of the feature point.

[0193] S303: Determine whether the point to be encoded and its nearest neighboring point in spatial distance are continuous.

[0194] S304: If they are continuous and the neighborhood point is a feature point, the normal vector of the neighborhood point is used as the normal vector of the point to be encoded.

[0195] S305: If it is discontinuous, determine the normal vector of the point to be encoded based on the geometric information of the neighborhood points within the preset neighborhood range of the point to be encoded.

[0196] In an embodiment of the present application, the encoder may also first select some points from the point cloud to be encoded as feature points, and first calculate the normal vector of each feature point by the normal vector estimation method in the aforementioned embodiment. In this way, when determining the normal vectors of other points to be encoded, the encoder determines whether the nearest neighboring points in spatial distance are continuous. If they are continuous, the characterization can use the normal vector of the neighboring point to characterize the current point to be encoded. If they are not continuous, then the characterization of the neighboring points that are not continuous with the current point to be encoded is directly obtained according to the normal vector estimation method of the aforementioned embodiment. However, if the neighboring point can be found and the neighboring point belongs to a feature point, then the normal vector of the neighboring point is known, and the encoder can use the normal vector of the neighboring point as the normal vector of the point to be encoded.

[0197] It should be noted that the encoder backtracks within a preset neighborhood range in the order of the Morton code to determine whether the point to be encoded and its nearest neighboring point in spatial distance are continuous.

[0198] It should be noted that the implementation of S304-305 here is consistent with the implementation description of S1013-S1014 in the aforementioned embodiment, and will not be repeated here.

[0199] It is understandable that the encoder can find the nearest neighbors to the point to be encoded in space and the neighbors where the Morton code is continuous, thus ensuring both the proximity in the encoding order and the proximity in the actual spatial position. In this way, the normal vector of the neighborhood point can be used to correctly represent the point to be encoded, thereby improving the accuracy of the normal vector estimation, thereby improving the optimality of the transformation order and ultimately improving the encoding performance.

[0200] S306 , based on the normal vector of the point to be encoded, counting the size of the sum of the coordinate components of the normal vector.

[0201] S307: Determine the transformation order based on the sum of the coordinate components of the normal vector.

[0202] S308. Perform RAHT transformation based on the transformation order.

[0203] S309: Encode the transformation sequence and write it into the attribute bitstream.

[0204] It should be noted that the implementation of S306-309 here is consistent with the implementation description of S102-S105 in the aforementioned embodiment, and will not be repeated here.

[0205] like Fig.15 As shown, an embodiment of the present application provides a transformation method, which may include:

[0206] S401, dividing the point cloud to be encoded into preset blocks to obtain n preset blocks.

[0207] S402: Determine a normal vector of a point to be encoded in each of the n preset blocks.

[0208] S403: Based on the normal vector of the point to be encoded, count the sum of the coordinate components of the normal vector in each preset block.

[0209] S404: Determine a transformation order corresponding to each preset block based on the size of the sum of the coordinate components of the normal vector corresponding to each preset block.

[0210] S405 . Perform RAHT transformation on each preset block based on the transformation order.

[0211] S406: Encode the transformation sequence corresponding to each preset block and write it into the attribute bitstream.

[0212] In an embodiment of the present application, the encoder can perform preset block division to obtain n preset blocks, determine the normal vector of the point to be encoded in each of the n preset blocks, take one preset block as a unit, based on the normal vector of the point to be encoded, count the size of the sum of each coordinate component of the normal vector in each preset block, and then determine the transformation order corresponding to each preset block based on the size of the sum of each coordinate component of the normal vector corresponding to each preset block, directly perform RAHT transformation on each preset block according to the transformation order corresponding to each preset block and each of its own preset blocks, encode the transformation order corresponding to each preset block, and write it into the attribute bit stream.

[0213] It should be noted that when performing RAHT transformation of point cloud attributes, the point cloud to be encoded can be divided, and the three RAHT direction order judgments can be performed on different point clouds corresponding to different areas obtained by the division. The specific method of dividing the area can be different. This example introduces the use of a slice division scheme, that is, according to the point cloud slice division method in MPEG G-PCC, the point cloud is divided into different slices (i.e., preset blocks), and the point cloud contained in each slice is then used to make a RAHT transformation direction order judgment using the normal vector estimation method, that is, different slices may use different RAHT transformation orders.

[0214] For example, the preset block may also be a block smaller than a slice and larger than an octree leaf node, etc., which is not limited in the embodiments of the present application.

[0215] It can be understood that when slice division is adopted, encoding can be performed in parallel based on each slice, which also improves the fault tolerance and encoding speed.

[0216] like Fig.16A As shown, an embodiment of the present application provides a transformation method, which may include:

[0217] S601, determining three two-dimensional projection surfaces of the points to be encoded in the point cloud to be encoded on three coordinate planes formed in the three-dimensional space.

[0218] S602: Based on the three two-dimensional projection surfaces, count the projection area of ​​each coordinate surface.

[0219] S603: Determine a transformation order based on the projection area.

[0220] like Fig. 16B As shown, the embodiment of the present application provides a transformation method, after S603, further comprising: S604-605. As follows:

[0221] S604: Perform RAHT transformation based on the transformation order.

[0222] S605: Encode the transformation sequence and write it into the attribute bitstream.

[0223] In an embodiment of the present application, the encoder projects each point (point to be encoded) in the three-dimensional point cloud (i.e., the point cloud to be encoded) to three coordinate planes (three planes formed by the X, Y, and Z coordinate axes) formed in the three-dimensional space, i.e., the XoY plane, the YoZ plane, and the XoZ plane, and finally obtains three two-dimensional projections of the point to be encoded, i.e., three two-dimensional projection planes. The encoder calculates the area of ​​each two-dimensional projection plane and counts the projection area of ​​each coordinate plane. The projection area here characterizes the main distribution concentration characteristics of the point cloud to be encoded in the three-dimensional space. Based on the projection area, the transformation order is determined. Since different point clouds have different spatial distributions, before performing the RAHT transformation, the encoder can determine the transformation order suitable for its own distribution characteristics based on the spatial distribution characteristics of each point cloud to be encoded. In this way, the encoder performs a RAHT transformation based on the transformation order, and the transformation coefficients obtained have small redundancy, thereby improving the coding efficiency.

[0224] It should be noted that, in the embodiment of the present application, the transformation order can be determined based on the projection area by counting the number of projection points on each projection surface, and determining the transformation order of RAHT based on the principle that the more projection surfaces there are, the higher the priority of the transformation order.

[0225] It can be understood that since different point clouds have different spatial distributions, before performing the RAHT transform, the encoder can determine the transformation order that is suitable for the spatial distribution characteristics of each point cloud to be encoded, so that the encoder performs a RAHT transform based on the transformation order, and the resulting transformation coefficients have little redundancy, thereby improving the coding efficiency.

[0226] It should be noted that in the embodiment of the present application, since the transformation order of each point cloud to be encoded may be determined differently, when the transformation order is determined, the encoder needs to write the transformation order into the attribute code stream and attribute bit stream during the encoding process. For example, this order can be transmitted to the decoder using a 3-bit bit stream, so that the decoder can directly parse the transformation order of RAHT during decoding.

[0227] In the embodiment of the present application, the area of ​​the projection surface can be represented by the number of projection points on each projection plane.

[0228] For example, the number of projection points on plane XoY is recorded as Num(xoy), the number of projection points on plane YoZ is recorded as Num(yoz), and the number of projection points on plane ZoX is recorded as Num(zox).

[0229] Num(zox), the transformation order is determined to be yxz; when the projection area is Num(xoy)>Num(zox)>Num(yoz), the transformation order is determined to be xyz; when the projection area is Num(yoz)>Num(xoy)>Num(zox), the transformation order is determined to be yzx; when the projection area is Num(yoz)>Num(zox)>Num(xoy), the transformation order is determined to be zyx; when the projection area is Num(zox)>Num(yoz)>Num(xoy), the transformation order is determined to be zxy; when the projection area is Num(zox)>Num(xoy)>Num(yoz), the transformation order is determined to be xzy.

[0230] like Fig.17 As shown, an embodiment of the present application provides a transformation method, which may include:

[0231] S701. Divide the point cloud to be encoded into at least one cubic sub-block based on a preset cube side length.

[0232] S702, determining three two-dimensional projection planes on three coordinate planes formed in three-dimensional space for the voxel points to be encoded in each cubic sub-block of at least one cubic sub-block; the voxel points to be encoded represent the points to be encoded.

[0233] S703: Based on the three two-dimensional projection surfaces, count the projection area of ​​each coordinate surface corresponding to each cubic sub-block.

[0234] S704: Arrange the projection area of ​​each coordinate plane corresponding to each cubic sub-block from large to small, and determine the order of coordinate axes perpendicular to each coordinate axis plane as the transformation order of each cubic sub-block.

[0235] S705 , performing RAHT transformation based on the transformation order of each cube sub-block.

[0236] S706: Encode the transformation sequence of each cube sub-block and write it into the attribute bit stream.

[0237] In the embodiment of the present application, the encoder may divide the space where the point cloud to be encoded is located into blocks to obtain n blocks. The transformation order of RAHT is determined by the projection size or projection area of ​​each block on the plane formed by the three coordinate axes x, y, and z.

[0238] It should be noted that the RAHT transformation is performed on the hierarchical structure obtained by dividing the point cloud data (the point cloud to be encoded) into an octree, starting from the bottom layer of the octree and performing the transformation layer by layer. The encoder divides the space where the point cloud to be encoded is located into blocks, and the implementation process of obtaining n blocks is as follows: Fig.18 As shown, the encoder divides the point cloud into several N x N x N blocks of the same size using an octree, where N can be set to a fixed value or set according to different point clouds, which is not limited in the embodiments of the present application. That is, each block contains N x N x N voxels, or voxel points (voxel). The voxel unit is 1, which represents a point to be encoded in the point cloud to be encoded.

[0239] In an embodiment of the present application, the encoder determines three two-dimensional projection planes on three coordinate planes formed in three-dimensional space for the voxel points to be encoded in each cubic sub-block of at least one cubic sub-block; the voxel points to be encoded represent the points to be encoded, and based on the three two-dimensional projection planes, the projection area of ​​each coordinate plane corresponding to each cubic sub-block is counted, and then the projection area of ​​each coordinate plane corresponding to each cubic sub-block is arranged from large to small, and the coordinate axis order perpendicular to each coordinate axis plane is determined as the transformation order of each cubic sub-block, and based on the transformation order of each cubic sub-block, RAHT transformation is performed, and the transformation order corresponding to each cubic sub-block is encoded and written into the attribute bit stream.

[0240] Exemplarily, in each block, the encoder calculates its projection area on the XoY, XoZ and YoZ planes, the encoder counts the total number of projections in the three projection planes, regards the total number of projections as the projection area, and after sorting the projection areas from large to small, takes the order of the coordinate axis directions perpendicular to the projection planes as the order of RAHT transformation in the block. For example, the XoY projection area is larger than the XoZ projection area, and the XoZ projection area is larger than the YoZ projection area. At this time, the projection areas are sorted as: XoY, XoZ and YoZ. Then, the coordinate axis direction of the XoY projection plane perpendicular to the coordinate axis direction of the projection plane is z, the coordinate axis direction of the XoZ projection plane perpendicular to the coordinate axis direction of the projection plane is y, and the coordinate axis direction of the YoZ projection plane perpendicular to the coordinate axis direction of the projection plane is x. Then based on the order of XoY, XoZ and YoZ, the transformation order determined is zyx.

[0241] It should be noted that when performing RAHT transformation of point cloud attributes, the point cloud to be encoded can be divided, and the different point clouds corresponding to the different divided areas can be judged in the order of the three RAHT directions. The specific method of dividing the area can be different. This example introduces the use of block division scheme, that is, according to the point cloud block division method in MPEG G-PCC, the point cloud is divided into blocks, and the point cloud contained in each block is then judged once for the RAHT transformation order using the projection area statistics method, that is, different blocks may use different RAHT transformation orders.

[0242] For example, the size of the partition may also be a slice, etc., which is not limited in the embodiments of the present application.

[0243] S707 . Perform RAHT transformation on the to-be-encoded voxel points of each cubic sub-block according to the transformation order of each cubic sub-block to obtain the sub-voxel points of each cubic sub-block.

[0244] S708. According to the projection area of ​​each coordinate plane corresponding to each cubic sub-block, calculate the sum of the absolute values ​​of the projection areas corresponding to each coordinate plane.

[0245] S709, sorting the sums of the absolute values ​​of the projection areas from large to small to obtain a transformation order.

[0246] S710 , performing RAHT transformation on the sub-voxel points of each cubic sub-block according to the transformation order.

[0247] S711. Write the transformation order of each cube sub-block into the attribute bitstream.

[0248] In an embodiment of the present application, after the encoder determines the transformation order of each cubic sub-block, the encoder can perform a RAHT transformation on the voxel points to be encoded of each cubic sub-block according to the transformation order of each cubic sub-block to obtain the sub-voxel points of each cubic sub-block, and according to the projection area of ​​each coordinate plane corresponding to each cubic sub-block, calculate the sum of the absolute values ​​of the projection areas corresponding to each coordinate plane, sort the sums of the absolute values ​​of the projection areas from large to small to obtain the transformation order, and finally, perform a RAHT transformation on the sub-voxel points of each cubic sub-block according to the transformation order.

[0249] That is to say, after obtaining the transformation order of each block, the encoder performs a RAHT transformation within the block based on this transformation order to obtain the sub-voxel points of each cubic sub-block. After the RAHT transformation in the block is completed, the projection areas in all directions of all blocks are summed up and sorted from large to small to obtain a total RAHT transformation order. Then, based on this total RAHT transformation order, RAHT transformation is performed between the sub-voxel points of each cubic sub-block. Finally, the transformation order of each cubic sub-block needs to be written into the attribute bitstream for use by the decoder when decoding.

[0250] It can be understood that the projection area of ​​each coordinate component is counted through the projection area of ​​the point to be encoded, and the transformation order of the RAHT transformation is finally determined based on the size of the projection area of ​​each coordinate component. In this way, considering the accumulation of projection areas, that is, the spatial distribution characteristics, the transformation in the direction of significant features is prioritized, thereby achieving the purpose of reducing the redundancy of the transformation coefficients obtained by the transformation and improving the encoding and decoding efficiency.

[0251] In some embodiments of the present application, Fig.19 As shown, after S707 and before S710, the method further includes:

[0252] S712. Obtain the main projection direction corresponding to each cubic sub-block according to the transformation order corresponding to each cubic sub-block.

[0253] S713. Count the number of main projection directions of each coordinate component according to the main projection direction corresponding to each cubic sub-block.

[0254] S714. Sort the number of main projection directions of each coordinate component from large to small to obtain a transformation order.

[0255] In an embodiment of the present application, the encoder can also determine the transformation order of each block by performing a RAHT transform on the voxel points to be encoded of each cubic sub-block according to the transformation order of each cubic sub-block. After obtaining the sub-voxel points of each cubic sub-block, the main projection direction in the transformation order of each cubic sub-block is obtained. Based on the main projection direction of each cubic sub-block, the number of main projection directions of each coordinate component is counted, and the number of main projection directions of each coordinate component is sorted from large to small to obtain the transformation order. Based on the transformation order, the entire point cloud to be encoded can be subjected to a RAHT transform.

[0256] It should be noted that, in the embodiment of the present application, the main projection direction corresponding to each cubic sub-block is the first coordinate direction in the transformation order corresponding to each cubic sub-block.

[0257] For example, assume that the encoder divides the point cloud to be encoded into 3 blocks. Among them, the transformation order of block1 is xyz, the transformation order of block2 is zyx, and the transformation order of block3 is zxy. Then the encoder obtains the main projection direction of block1 as x, the main projection direction of block2 as z, and the main projection direction of block3 as z. After obtaining the 3 main projection directions, according to the main projection direction corresponding to each cubic sub-block, the number of main projection directions of the x quantity is counted as 1, the number of main projection directions of the y quantity is counted as 0, and the number of main projection directions of the z quantity is counted as 2. Since 2>1>0, the number of main projection directions of each coordinate component is sorted from large to small, and the transformation order is zxy.

[0258] like Fig. 20 As shown, the implementation process of S713 may include S7131-S7132.

[0259] S7131. From the main projection directions corresponding to each cubic sub-block, select the main projection directions corresponding to the sub-cube sub-blocks of a preset proportion.

[0260] S7132. Count the number of main projection directions of each coordinate component according to the main projection directions corresponding to the sub-cube sub-blocks.

[0261] In an embodiment of the present application, the encoder divides the space where the point cloud to be encoded is located into N blocks, and can select sub-cube blocks of a preset proportion from the N blocks, and use the main projection direction corresponding to the sub-cube sub-block to count the number of main projection directions of each coordinate component, thereby obtaining the transformation order.

[0262] The preset ratio may be 10%, which is determined based on actual needs and designs and is not limited in the embodiments of the present application.

[0263] Exemplarily, the encoder divides the space where the point cloud to be encoded is located into 100 blocks with 100 main projection directions. When the preset ratio is 10%, the encoder can select 10 blocks from the 100 blocks and count the number of main projection directions of each coordinate component according to their three-dimensional main projection directions.

[0264] It is understandable that using partial blocks for statistics improves processing speed and reduces the amount of calculation.

[0265] like Fig.21 As shown, in some embodiments of the present application, before S702, the method further includes: S715. As follows:

[0266] S715: construct at least one cubic sub-block with the to-be-encoded point in the to-be-encoded point cloud as the center.

[0267] In an embodiment of the present application, the encoder can also divide the space where the point cloud to be encoded is located into blocks by taking each point to be encoded as the center, or the central axis, to construct a cubic sub-block with a length of NxNxN voxels with each point to be encoded as the voxel center.

[0268] The difference between this and direct block division is that the voxel blocks in each block are divided with the block as the center, and the distribution of points in each voxel is determined by which voxel the point falls into. However, the division of each voxel in the cubic sub-block here is divided with each to-be-encoded point as the center, with a unit of 1, and there may be overlap between voxels.

[0269] In the embodiment of the present application, a method for determining a better RAHT transformation order can bring performance gain to the reconstructed point cloud. As shown in Table 1 below, the PSNR of the reconstructed point cloud is reduced, and the BD-rate is also significantly improved. (PSNR is an objective standard for image evaluation. The larger the PSNR, the better the image quality. BD-rate is a parameter used to measure the performance. When BD-rate is negative, it means that the performance has improved. On this basis, the larger the absolute value of BD-rate, the greater the performance gain.)

[0270] Table 1

[0271]

[0272]

[0273] It can be seen from Table 1 that for the four point clouds, the RAHT transform is performed in different transformation orders, and the average gain obtained is very significant, and the encoder performance is greatly improved.

[0274] It is understandable that, with this implementation, since each voxel is centered on the point to be encoded, the projection area of ​​the voxel obtained in this way will be more accurate as the projection area of ​​the point to be encoded.

[0275] Based on the background introduced above, the transformation method provided in the embodiment of the present application is introduced below, which mainly focuses on the process of obtaining the transformation order during RAHT inverse transformation in the decoder framework and is applied to the decoder (point cloud decoder).

[0276] like Fig. 22 As shown, an embodiment of the present application provides an inverse transformation method, which is applied to a decoder, including:

[0277] S801. Analyze the transformation order from the attribute bit stream.

[0278] S802: During decoding, perform RAHT inverse transform based on the transform order.

[0279] In an embodiment of the present application, the encoded bit stream is transmitted to a decoder, and the decoder can parse the transformation order from the attribute bit stream in the encoded bit stream. Then, when the decoder performs RAHT inverse transformation, the transformation order can be used to implement it.

[0280] It can be understood that the encoder determines the optimal transformation order of the RAHT transformation corresponding to each point cloud to be encoded based on the spatial distribution characteristics of the point cloud to be encoded. In this way, taking into account the normal vector accumulation, the transformation in the direction of significant features is prioritized, thereby achieving the purpose of reducing the redundancy of the transformation coefficients obtained by the transformation and improving the encoding and decoding efficiency. Since the transformation order corresponding to each point cloud to be encoded may be different, it is necessary to encode the transformation order into the attribute bit stream during encoding, so that the decoder can use it when decoding and performing the RAHT inverse transformation.

[0281] Based on the implementation basis of the aforementioned embodiment, Fig.23 As shown, the embodiment of the present application provides an encoder 1, comprising:

[0282] A determination part 10 is configured to determine a normal vector of a point to be encoded in a point cloud to be encoded;

[0283] The acquisition part 11 is configured to count the size of the sum of each coordinate component of the normal vector based on the normal vector of the point to be encoded;

[0284] The determination part 10 is further configured to determine the transformation order based on the magnitude of the sum of the coordinate components of the normal vector.

[0285] In some embodiments of the present application, the encoder further includes: a transform part and an encoding part.

[0286] The transform part 12 is configured to perform RAHT transform based on a transform order;

[0287] The encoding part 13 is configured to encode the transformation sequence and write it into an attribute bit stream.

[0288] In some embodiments of the present application, the encoder further includes: a determination part 14;

[0289] The acquisition part 11 is further configured to acquire attribute information of the point cloud to be encoded;

[0290] The judging part 14 is further configured to judge whether there is a normal vector of the point to be encoded in the attribute information of the point cloud to be encoded;

[0291] The acquisition part 11 is further configured to directly acquire the normal vector of the point to be encoded if it exists;

[0292] The determining part 10 is further configured to determine the normal vector of the point to be encoded based on the attribute information of the neighborhood points within the preset neighborhood range of the point to be encoded if it does not exist.

[0293] In some embodiments of the present application, the acquisition part 11 is further configured to acquire at least one neighboring point closest to the to-be-encoded point within the preset neighborhood range; acquire geometric information of the at least one neighboring point;

[0294] The determining part 10 is further configured to determine at least one distance from the at least one neighborhood point to the fitting plane according to the geometric information of the at least one neighborhood point and a preset fitting surface equation;

[0295] The acquisition part 11 is further configured to obtain a system eigenvector corresponding to the preset fitting surface equation based on minimization of the sum of squares of the at least one distance; the system eigenvector is used as the normal vector of the point to be encoded.

[0296] In some embodiments of the present application, the preset fitting surface equation includes: a plane equation that does not pass through the origin and a plane equation that passes through the origin.

[0297] In some embodiments of the present application, the acquisition part 11 is further configured to traverse the to-be-encoded point cloud in the order of the Morton code, and select the at least one nearest neighborhood point within a preset neighborhood range of the to-be-encoded point.

[0298] In some embodiments of the present application, the acquisition part 11 is further configured to traverse the to-be-encoded point cloud according to spatial distance, and select the at least one nearest neighborhood point within a preset neighborhood range of the to-be-encoded point.

[0299] In some embodiments of the present application, the acquisition part 11 is also configured to acquire the normal vector of at least one neighborhood point closest to the point to be encoded within the preset neighborhood range, and estimate the normal vector of the feature point to obtain the normal vector of the feature point.

[0300] In some embodiments of the present application, the encoder further includes: a determination part 14;

[0301] The determining part 10 is further configured to select a feature point from the point cloud to be encoded; perform normal vector estimation on the feature point to obtain a normal vector of the feature point;

[0302] The judging part 14 is configured to judge whether the to-be-encoded point and its nearest neighboring point in spatial distance are continuous;

[0303] The determination part 10 is also configured to, if continuous and the neighborhood point belongs to the feature point, use the normal vector of the neighborhood point as the normal vector of the point to be encoded; and if discontinuous, determine the normal vector of the point to be encoded based on the geometric information of the neighborhood point within a preset neighborhood range of the point to be encoded.

[0304] In some embodiments of the present application, the judging part 14 is further configured to backtrack within a preset neighborhood range according to the order of the Morton code to judge whether the point to be encoded is continuous with its nearest neighboring point in spatial distance.

[0305] In some embodiments of the present application, the acquisition part 11 is further configured to divide the to-be-encoded point cloud into preset blocks to obtain n preset blocks;

[0306] The determining part 10 is further configured to determine a normal vector of a point to be encoded in each of the n preset blocks;

[0307] The acquisition part 11 is further configured to count the size of the sum of each coordinate component of the normal vector in each preset block based on the normal vector of the point to be encoded.

[0308] In some embodiments of the present application, the determination part 10 is further configured to determine the transformation order corresponding to each preset block based on the size of the sum of the coordinate components of the normal vector corresponding to each preset block.

[0309] In some embodiments of the present application, the acquisition part 11 is also configured to calculate the sum of the absolute values ​​of each coordinate component of the normal vector based on the normal vector of the point to be encoded; the sum of the absolute values ​​represents the size of the sum of the coordinate components of the normal vector.

[0310] In some embodiments of the present application, the determining part 10 is further configured to arrange the sums of the absolute values ​​in order from large to small to determine the transformation order.

[0311] The embodiment of the present application further provides an encoder 1, comprising:

[0312] The determination part 10 is configured to determine three two-dimensional projection surfaces of the points to be encoded in the point cloud to be encoded on three coordinate planes formed in the three-dimensional space;

[0313] The acquisition part 11 is configured to count the projection area of ​​each coordinate plane based on the three two-dimensional projection planes;

[0314] The determining part 10 is further configured to determine a transformation order based on the projection area;

[0315] In some embodiments of the present application, the encoder further includes: a transform part and an encoding part.

[0316] The transform section 12 is configured to perform RAHT transform based on a transform order;

[0317] The encoding part 13 is configured to encode the transformation sequence and write it into an attribute bit stream.

[0318] In some embodiments of the present application, the acquisition part 11 is also configured to divide the point cloud to be encoded into at least one cubic sub-block based on a preset cube side length; determine three two-dimensional projection planes on three coordinate planes formed in three-dimensional space for the voxel points to be encoded in each cubic sub-block of the at least one cubic sub-block; the voxel points to be encoded represent the points to be encoded; and based on the three two-dimensional projection planes, count the projection area of ​​each coordinate plane corresponding to each cubic sub-block.

[0319] In some embodiments of the present application, the determination part 10 is also configured to arrange the projection area of ​​each coordinate plane corresponding to each cubic sub-block from large to small, and determine the coordinate axis order perpendicular to each coordinate axis plane as the transformation order of each cubic sub-block.

[0320] In some embodiments of the present application, the transformation part 12 is further configured to arrange the projection area of ​​each coordinate plane corresponding to each cubic sub-block from large to small, and determine the coordinate axis order perpendicular to each coordinate axis plane as the transformation order of each cubic sub-block, and then perform RAHT transformation on the voxel point to be encoded of each cubic sub-block according to the transformation order of each cubic sub-block to obtain the sub-voxel point of each cubic sub-block;

[0321] The acquisition part 11 is further configured to calculate the sum of the absolute values ​​of the projection areas corresponding to each coordinate plane according to the projection areas of each coordinate plane corresponding to each cubic sub-block; sort the sums of the absolute values ​​of the projection areas from large to small to obtain the transformation order;

[0322] The transformation part 12 is further configured to perform RAHT transformation on the sub-voxel points of each cubic sub-block according to the transformation order;

[0323] The encoding part 13 is further configured to write the transformation order of each cubic sub-block into the attribute bit stream.

[0324] In some embodiments of the present application, the acquisition part 11 is also configured to perform RAHT transformation on the voxel points to be encoded of each cubic sub-block according to the transformation order of each cubic sub-block to obtain the sub-voxel points of each cubic sub-block, and before performing RAHT transformation on the sub-voxel points of each cubic sub-block according to the transformation order, obtain the main projection direction corresponding to each cubic sub-block according to the transformation order corresponding to each cubic sub-block; and count the number of main projection directions of each coordinate component according to the main projection direction corresponding to each cubic sub-block; and sort the number of main projection directions of each coordinate component from large to small to obtain the transformation order.

[0325] In some embodiments of the present application, the acquisition part 11 is also configured to select the main projection directions corresponding to the sub-cube sub-blocks of a preset proportion from the main projection directions corresponding to each cube sub-block; and count the number of main projection directions of each coordinate component according to the main projection directions corresponding to the sub-cube sub-blocks.

[0326] In some embodiments of the present application, the acquisition part 11 is also configured to construct the at least one cubic sub-block with the to-be-encoded point in the to-be-encoded point cloud as the center before determining the three two-dimensional projection planes on the three coordinate planes formed by the three-dimensional space for the to-be-encoded voxel points in each cubic sub-block of the at least one cubic sub-block.

[0327] In some embodiments of the present application, the determining part 10 is further configured to, when the projection area is Num(xoy)

[0328] >Num(yoz)>Num(zox), the transformation order is determined to be yxz; when the projection area is Num(xoy)>Num(zox)

[0329] >Num(yoz), the transformation order is determined to be xyz; when the projection area is Num(yoz)>Num(xoy)>Num(zox), the transformation order is determined to be yzx; when the projection area is Num(yoz)>Num(zox)>Num(xoy), the transformation order is determined to be zyx; when the projection area is Num(zox)>Num(yoz)>Num(xoy), the transformation order is determined to be zxy; when the projection area is Num(zox)>Num(xoy)>Num(yoz), the transformation order is determined to be xzy.

[0330] In practical applications, such as Fig.24 As shown, the embodiment of the present application also provides an encoder, including:

[0331] A first memory 15, used for storing executable instructions;

[0332] The first processor 16 is configured to implement the transformation method on the encoder side when executing the executable instructions stored in the first memory 15 .

[0333] Among them, the processor can be implemented by software, hardware, firmware or a combination thereof, and can use circuits, single or multiple application specific integrated circuits (ASICs), single or multiple general-purpose integrated circuits, single or multiple microprocessors, single or multiple programmable logic devices, or a combination of the aforementioned circuits or devices, or other suitable circuits or devices, so that the processor can execute the corresponding steps of the transformation method in the aforementioned embodiment.

[0334] An embodiment of the present application provides a computer-readable storage medium, comprising: storing executable instructions for causing a first processor to execute and implement a transformation method on the encoder side.

[0335] The components in the embodiments of the present application may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit. The above-mentioned integrated unit may be implemented in the form of hardware or in the form of software function modules.

[0336] If the integrated unit is implemented in the form of a software function module and is not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this embodiment is essentially or the part that contributes to the prior art or all or part of the technical solution can be embodied in the form of a software product. The computer software product is stored in a storage medium and includes a number of instructions for enabling a computer device (which can be a personal computer, a server, or a network device, etc.) or a processor to execute all or part of the steps of the method described in this embodiment. The aforementioned storage media include: ferromagnetic random access memory (FRAM), read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory, magnetic surface storage, optical disk, or compact disc read-only memory (CD-ROM), etc., which can store program codes, and the embodiments of the present disclosure are not limited thereto.

[0337] like Fig.25 As shown, the embodiment of the present application provides a decoder 2, including:

[0338] The parsing part 20 is configured to parse the transformation order from the attribute bit stream;

[0339] The decoding part 21 is configured to perform RAHT inverse transform based on the transform order during decoding.

[0340] In practical applications, such as Fig.26 As shown, the embodiment of the present application also provides a decoder, including:

[0341] A second memory 22, used for storing executable instructions;

[0342] The second processor 23 is used to implement the transformation method on the decoder side when executing the executable instructions stored in the second memory 22.

[0343] An embodiment of the present application provides a computer-readable storage medium, comprising: storing executable instructions for causing a second processor to execute and implement a transformation method on the decoder side.

[0344] It is understandable that, in the process of attribute encoding, the encoder uses the normal vector of the point to be encoded to calculate the sum of the coordinate components of the normal vector, and finally determines the transformation order of the RAHT transformation based on the sum of the coordinate components of the normal vector. In this way, considering the accumulation of normal vectors, the transformation in the direction of significant features is prioritized, thereby achieving the purpose of reducing the redundancy of the transformation coefficients obtained by the transformation and improving the encoding and decoding efficiency.

[0345] Industrial Applicability

[0346] The embodiments of the present application provide a transformation method, an encoder, a decoder, and a computer-readable storage medium, including: determining the normal vector of a point to be encoded in a point cloud to be encoded; based on the normal vector of the point to be encoded, counting the size of the sum of the coordinate components of the normal vector; determining the transformation order based on the size of the sum of the coordinate components of the normal vector; performing a RAHT transformation based on the transformation order; encoding the transformation order and writing it into an attribute bit stream. Since the encoder, in the process of attribute encoding, counts the size of the sum of the coordinate components of the normal vector through the normal vector of the point to be encoded, for the implementation of the RAHT transformation, the transformation order for the RAHT transformation is finally determined based on the size of the sum of the coordinate components of the normal vector. In this way, taking into account the accumulation of normal vectors, the transformation in the direction of significant features is prioritized, thereby achieving the purpose of reducing the redundancy of the transformation coefficients obtained by the transformation and improving the encoding and decoding efficiency.

Claims

1. A transformation method, applied to an encoder, comprising: Determine three two-dimensional projection surfaces of the points to be encoded in the point cloud to be encoded on three coordinate planes formed in the three-dimensional space; Based on the three two-dimensional projection surfaces, counting the projection area of ​​each coordinate surface; Based on the projection area, a transformation order is determined; wherein, after the transformation order is determined based on the projection area, the method further includes: Based on the transformation order, performing a regional adaptive hierarchical transformation (RAHT) transformation; The transformation order is encoded and written into an attribute bit stream; wherein the transformation order is a coordinate axis order.

2. The method according to claim 1, wherein: The step of determining three two-dimensional projection surfaces of the points to be encoded in the point cloud to be encoded on three coordinate surfaces formed in the three-dimensional space includes: Based on a preset cube side length, dividing the to-be-encoded point cloud into at least one cube sub-block; Determining three two-dimensional projection planes on three coordinate planes formed in a three-dimensional space for a voxel point to be encoded in each cubic sub-block of the at least one cubic sub-block; the voxel point to be encoded represents the point to be encoded; The counting of the projection area of ​​each coordinate plane based on the three two-dimensional projection planes includes: Based on the three two-dimensional projection surfaces, the projection area of ​​each coordinate surface corresponding to each cubic sub-block is counted.

3. The method according to claim 2, wherein: The step of determining a transformation order based on the projection area includes: The projection area of ​​each coordinate plane corresponding to each cubic sub-block is arranged from large to small, and the order of the coordinate axes perpendicular to each coordinate axis plane is determined as the transformation order of each cubic sub-block.

4. The method according to claim 3, wherein: The method further comprises: According to the transformation order of each cubic sub-block, RAHT transformation is performed on the to-be-encoded voxel points of each cubic sub-block to obtain sub-voxel points of each cubic sub-block; According to the projection area of ​​each coordinate plane corresponding to each cubic sub-block, the sum of the absolute values ​​of the projection areas corresponding to each coordinate plane is calculated; The sums of the absolute values ​​of the projection areas are sorted from large to small to obtain the transformation order; According to the transformation order, RAHT transformation is performed on the sub-voxel points of each cubic sub-block; The transformation order of each cube sub-block is written into the attribute bitstream.

5. The method according to claim 4, wherein: After performing RAHT transformation on the voxel points to be encoded of each cubic sub-block according to the transformation order of each cubic sub-block to obtain the sub-voxel points of each cubic sub-block, and before performing RAHT transformation on the sub-voxel points of each cubic sub-block according to the transformation order, the method further includes: According to the transformation order corresponding to each cubic sub-block, obtaining the main projection direction corresponding to each cubic sub-block; According to the main projection direction corresponding to each cube sub-block, count the number of main projection directions of each coordinate component; The number of main projection directions of each coordinate component is sorted from large to small to obtain the transformation order.

6. The method according to claim 5, wherein: The counting of the number of main projection directions of each coordinate component according to the main projection direction corresponding to each cube sub-block includes: Selecting the main projection directions corresponding to the sub-cube sub-blocks of a preset proportion from the main projection directions corresponding to each of the cube sub-blocks; According to the main projection directions corresponding to the sub-cube sub-blocks, the number of the main projection directions of each coordinate component is counted.

7. The method according to claim 2, wherein: The method further comprises: The at least one cubic sub-block is constructed with the to-be-encoded point in the to-be-encoded point cloud as the center.

8. The method according to claim 1, wherein: The step of determining a transformation order based on the projection area includes: When the projection area is Num(xoy)>Num(yoz)>Num(zox), the transformation order is determined to be yxz; When the projection area is Num(xoy)>Num(zox)>Num(yoz), the transformation order is determined to be xyz; When the projection area is Num(yoz)>Num(xoy)>Num(zox), the transformation order is determined to be yzx; When the projection area is Num(yoz)>Num(zox)>Num(xoy), the transformation order is determined to be zyx; When the projection area is Num(zox)>Num(yoz)>Num(xoy), the transformation order is determined to be zxy; When the projection area is Num(zox)>Num(xoy)>Num(yoz), the transformation order is determined to be xzy.

9. An inverse transform method, applied in decoding, comprising: Parse the transformation order from the attribute bit stream; During decoding, a region adaptive hierarchical transform (RAHT) inverse transform is performed based on the transform order, wherein the transform order is a coordinate axis order.

10. The method according to claim 9, wherein: The bitstream contains attribute information.

11. The method according to claim 9, further comprising: During decoding, each point in the point cloud is sorted according to the Morton code, and all points in the point cloud are subjected to RAHT inverse transform in the order after the Morton code sorting.

12. The method according to claim 11, wherein: Set the weight of each point to 1.

13. The method according to claim 12, wherein: Perform an inverse RAHT transform on the attribute values ​​according to the weights.

14. An encoder comprising: A determination part is configured to determine three two-dimensional projection surfaces of the points to be encoded in the point cloud to be encoded on three coordinate surfaces formed in the three-dimensional space; An acquisition part is configured to count the projection area of ​​each coordinate plane based on the three two-dimensional projection planes; The determining part is further configured to determine a transformation order based on the projection area; wherein the encoder further includes: A transform unit, configured to perform a region adaptive hierarchical transform (RAHT) based on the transform order; An encoding unit, configured to encode the transformation sequence and write it into an attribute bitstream; The transformation order is the order of coordinate axes.

15. A decoder comprising: The parsing part is configured to parse the transformation order from the attribute bit stream; The decoding part is configured to perform a region adaptive hierarchical transform (RAHT) inverse transform based on the transform order during decoding; wherein the transform order is a coordinate axis order.

16. The decoder according to claim 15, wherein: The bitstream contains attribute information.

17. The decoder according to claim 15, wherein: The decoding part is also configured to: during decoding, sort each point in the point cloud according to the Morton code, and perform RAHT inverse transformation on all points in the point cloud according to the order after the Morton code sorting.

18. The decoder according to claim 17, wherein: Set the weight of each point to 1.

19. The decoder according to claim 18, wherein: Perform an inverse RAHT transform on the attribute values ​​according to the weights.

20. An encoder comprising: A first memory, used to store executable instructions; The first processor is used to implement any one of the methods described in 1 to 8 when executing the executable instructions stored in the first memory.

21. A decoder comprising: A second memory, used for storing executable instructions; The second processor is configured to implement the method according to any one of claims 9 to 13 when executing the executable instructions stored in the second memory.