WO2021000205A1 - 变换方法、逆变换方法、编码器、解码器及存储介质 - Google Patents
变换方法、逆变换方法、编码器、解码器及存储介质 Download PDFInfo
- Publication number
- WO2021000205A1 WO2021000205A1 PCT/CN2019/094105 CN2019094105W WO2021000205A1 WO 2021000205 A1 WO2021000205 A1 WO 2021000205A1 CN 2019094105 W CN2019094105 W CN 2019094105W WO 2021000205 A1 WO2021000205 A1 WO 2021000205A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- point
- coded
- transformation
- normal vector
- block
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Definitions
- the embodiments of the present application relate to the technical field of video coding and decoding, in particular to a transformation method, an inverse transformation method, an encoder, a decoder, and a storage medium.
- Geometry-based Point Cloud Compression G-PCC, Geometry-based Point Cloud Compression
- the geometric information of the point cloud and the attribute information corresponding to each point cloud are separately encoded.
- the geometric information is reconstructed, and the coding of the attribute information will depend on the reconstructed geometric information.
- the coding of attribute information is mainly for the coding of color information.
- the color information is converted from the RGB color space to the YUV color space.
- the reconstructed geometric information is used to recolor the point cloud, so that the uncoded attribute information corresponds to the reconstructed geometric information.
- color information coding there are mainly two transformation methods.
- the RAHT transformation is carried out on the basis of the hierarchical structure obtained by dividing the octree of the point cloud data, starting from the lowest level of the octree to the highest level, looping through each node in each layer.
- the RAHT transformation of each node is performed sequentially in the x, y and z directions of the three-dimensional coordinates according to the transformation sequence.
- 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 the transformation coefficients obtained by the transformation and improve the coding efficiency.
- an embodiment of the present application provides a transformation method applied to an encoder, including:
- the transformation order is determined.
- an embodiment of the present application also provides a transformation method applied to an encoder, including:
- the transformation order is determined.
- an embodiment of the present application also provides an inverse transformation method, including:
- a region-adaptive hierarchical transformation RAHT inverse transformation is performed.
- an encoder including:
- the determining part is configured to determine the normal vector of the point to be coded in the point cloud to be coded;
- the acquiring 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 coded;
- the determining part is further configured to determine the transformation order based on the sum size of each coordinate component of the normal vector.
- an encoder including:
- the determining part is configured to determine three two-dimensional projection surfaces of the points to be coded in the point cloud to be coded on the three coordinate planes formed by the three-dimensional space;
- the acquiring 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 the transformation order based on the projected area.
- an embodiment of the present application provides a decoder, including:
- the parsing part is configured to analyze the transformation order from the attribute bit stream
- the decoding part is configured to perform region adaptive hierarchical transformation RAHT inverse transformation based on the transformation sequence during decoding.
- an encoder including:
- the first memory is used to store executable instructions
- the first processor is configured 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.
- an embodiment of the present application further provides a decoder, including:
- the second memory is used to store executable instructions
- the second processor is configured to implement the method described in the third aspect when executing the executable instructions stored in the second memory.
- an embodiment of the present application provides a computer-readable storage medium applied to encoding, including: storing executable instructions for causing the first processor to execute the method described in the first aspect, or , The method described in the second aspect.
- an embodiment of the present application provides a computer-readable storage medium applied to a decoder, including: storing executable instructions for causing a second processor to execute, implementing the method described in the third aspect.
- a transformation method, an inverse transformation method, an encoder, a decoder, and a storage medium include: determining the normal vector of the point to be coded in the point cloud to be coded; statistical method based on the normal vector of the point to be coded The sum size of each coordinate component of the vector; determine the transformation order based on the sum size of each coordinate component of the normal vector.
- the encoder is in the process of attribute encoding, for the realization of the RAHT transformation, through the normal vector of the point to be coded, the total size of each coordinate component of the normal vector of each coordinate component is calculated, and it is finally based on The sum of the various coordinate components of the normal vector determines the transformation order of the RAHT transformation.
- priority is given to the transformation in the direction with significant characteristics, which achieves the purpose of reducing the redundancy of the transformation coefficients obtained by the transformation and improving the coding and decoding efficiency.
- FIG. 1 is a block diagram of an exemplary encoding process provided by an embodiment of the application
- Figure 2 is a block diagram of an exemplary decoding process provided by an embodiment of the application.
- 3A is a schematic diagram 1 of an exemplary two-dimensional Morton code provided by an embodiment of the application.
- FIG. 3B is a second schematic diagram of an exemplary two-dimensional Morton code provided by an embodiment of this application.
- 4A is a schematic diagram 1 of an exemplary three-dimensional Morton encoding provided by an embodiment of the application;
- FIG. 4B is a second schematic diagram of an exemplary three-dimensional Morton encoding provided by an embodiment of this application.
- FIG. 5 is a schematic diagram of an exemplary hierarchical RAHT transformation provided by an embodiment of the application.
- FIG. 6 is a schematic diagram of storage of transform coefficients of an exemplary hierarchical RAHT transform provided by an embodiment of the application;
- FIG. 7 is a schematic diagram of storage of transform coefficients of an exemplary hierarchical inverse RAHT transform provided by an embodiment of the application;
- FIG. 8A is a first flowchart of a conversion method provided by an embodiment of this application.
- FIG. 8B is a second flowchart of the conversion method provided by an embodiment of the application.
- FIG. 9 is a third flowchart of the conversion method provided by an embodiment of the application.
- FIG. 10 is a schematic flowchart of an exemplary conversion sequence provided by an embodiment of the application.
- FIG. 11 is a fourth flowchart of a conversion method provided by an embodiment of this application.
- FIG. 12 is a fifth flowchart of a conversion method provided by an embodiment of this application.
- FIG. 13 is a sixth flowchart of a conversion method provided by an embodiment of this application.
- FIG. 14 is a seventh flowchart of the conversion method provided by an embodiment of the application.
- FIG. 15 is the eighth flowchart of the conversion method provided by an embodiment of this application.
- FIG. 16A is a flowchart 9 of the conversion method provided by an embodiment of the application.
- 16B is a tenth flowchart of the conversion method provided by an embodiment of this application.
- FIG. 17 is a flowchart eleven of the conversion method provided by an embodiment of this application.
- FIG. 19 is a twelfth flowchart of the conversion method provided by an embodiment of the application.
- FIG. 21 is a fourteenth flowchart of a conversion method provided by an embodiment of this application.
- FIG. 22 is a flowchart of an inverse transform method provided by an embodiment of the application.
- FIG. 23 is a first structural diagram of an encoder provided by an embodiment of the application.
- FIG. 24 is a second structural diagram of an encoder provided by an embodiment of the application.
- FIG. 25 is a first structural diagram of a decoder provided by an embodiment of this application.
- FIG. 26 is a second structural diagram of a decoder provided by an embodiment of this application.
- each slice is encoded independently.
- the point cloud data is divided into multiple slices first.
- the geometric information of the point cloud and the attribute information corresponding to each point cloud are separately coded.
- the geometric information is coordinated to convert the point cloud into a bounding box (bounding box), and then quantized.
- This step of quantization mainly plays a role of scaling. Due to quantization rounding, a part of The geometric information of the point cloud is the same, so it is determined whether to remove duplicate points based on the parameters.
- the process of quantifying and removing duplicate points is also called the voxelization process.
- the bounding box is divided into 8 sub-cubes, and the non-empty (containing points in the point cloud) sub-cubes are continued to be divided into eight equals until the leaf knots are obtained.
- the point is a 1x1x1 unit cube
- the division is stopped, and the points in the leaf nodes are arithmetic coded to generate a binary geometric bit stream, that is, a geometric code stream.
- octree division In the process of encoding geometric information based on trisoup (triangle soup, triangular face set), octree division must also be performed first, but different from the geometric information encoding based on octree, the trisoup does not need to step the point cloud. Divided into a unit cube with a side length of 1x1x1, but divided into a block (sub-block) when the side length is W, and the division stops.
- the geometric coding is completed. After the geometric information is reconstructed, color conversion is performed to convert the color information (that is, the attribute information) from the RGB color space to the YUV color space. Then, the reconstructed geometric information is used to recolor the point cloud, so that the uncoded attribute information corresponds to the reconstructed geometric information.
- the color information coding process there are two main transformation methods. One is the distance-based lifting transformation that relies on the level of detail (Level of Detail, LOD) division, and the other is the direct region adaptive hierarchal transformation (Region Adaptive Hierarchal Transform).
- RAHT RAHT
- these two 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 (ie, quantized coefficients), and finally, pass through the octree
- the vertex coordinates of each block are sequentially coded (that is, arithmetic coding) to generate a binary attribute bit stream, that is, an attribute code stream.
- the decoder obtains the binary code stream, and independently decodes the geometric bit stream and the attribute bit stream in the binary code stream.
- the geometric bit stream When decoding the geometric bit stream, through arithmetic decoding-octree synthesis-surface fitting-reconstruction geometry-inverse coordinate transformation, the geometric information of the point cloud is obtained;
- the attribute bit stream when decoding the attribute bit stream, through arithmetic decoding-inverse Quantification-LOD-based inverse elevation or RAHT-based inverse transformation-inverse color conversion, to obtain the attribute information of the point cloud, and restore the three-dimensional image model of the point cloud data to be encoded based on the geometric information and attribute information.
- the geometric coordinate information of the point cloud can be obtained at this time.
- the Morton code corresponding to each point in the point cloud can be obtained.
- Morton coding is also called z-order code, because its coding sequence is in spatial z order. The specific method of 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 the three components is realized as follows:
- Morton code M is to start from the highest position of x, y, z and alternately arrange x l , y l , z l to the lowest position in turn.
- the calculation formula of M is as follows:
- the points in the point cloud are arranged in the order of Morton code from small to large, and the weight w of each point is set to 1.
- Figure 3A shows the spatial encoding of each pixel of an 8*8 image, from 000000 to 111111, using one-dimensional binary numbers to encode the position coordinates of x and y values between 0-7. Interleave binary coordinate values to obtain a binary z-value map. Connect the z-shape along the numerical direction to produce a recursive z-shaped curve. In each position in the figure, the z value is placed in the order of connection.
- the above figure is iteratively generated in the z direction, from 00-11 (one z in the entire figure), then from 0000-1111 (one z for each point of the previous z), and then from 000000-111111 (the previous Put one z) for each point of z, and increase by two bits each time, recursively increase.
- FIG. 3B shows the 2x2, 4x4, 8x8 and 16x16 spatial coding sequence, from which it can be seen that the coding sequence of Morton code is implemented in the spatial z sequence.
- Fig. 4A and Fig. 4B Ascending to the three-dimensional situation, the recursive process is shown in Fig. 4A and Fig. 4B, which realizes coordinate staggering, and what the whole is doing is to continuously disperse the coordinate values.
- (z ⁇ 2) that is, each coordinate value is scattered, and the bits are staggered in turn, first z then y and finally x.
- the decoding process is the aggregation process.
- the RAHT transformation is performed on the basis of the hierarchical structure obtained by dividing the point cloud data into an octree. Starting from the bottom layer of the octree, the transformation is performed hierarchically. As shown in Fig. 5, voxel block 1 is obtained after the octree division is completed (that is, the geometry with three different color depths in Fig. 5, and each block represents a point in the point cloud). Start the RAHT transformation from the bottom layer. Take the transformation sequence xyz as an example. As shown in Figure 5 below, perform the RAHT transformation along the x direction first.
- RAHT is performed on the two to obtain the average (DC coefficient) and detail (AC coefficient) of the attribute values of the two adjacent points.
- DC coefficient the average
- AC coefficient detail
- the obtained DC coefficients exist 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 coefficients are retained and used for the final coding.
- the attribute value of the voxel block is directly transferred to the second-level parent node. In the second layer of RAHT transformation, it is performed along the y direction.
- RAHT is performed on the two, and the average (DC coefficient) and details (AC coefficient) of the attribute values of two adjacent points are obtained.
- the third layer of RAHT transformation is performed along the z direction, and the parent node voxel block 3 with three different color depths is obtained as the child node of the next layer in the octree, and then RAHT transformation is performed cyclically along the x, y, and z directions , Until there is only one parent node in the entire point cloud.
- the Morton code of the sorted point cloud is used, which is convenient for the combination of adjacent points in the octree as shown in the figure.
- w w 1 +w 2
- Luma is configured by the incoming quantization parameters
- w is the weight corresponding to the DC coefficient, which is calculated.
- the DC coefficient is the weighted average of the attributes
- the AC coefficient is the attribute residuals of two adjacent points.
- c 1, c 2 in the first layer is a corresponding attribute value w 1 and w 2, for the DC coefficient values obtained by calculation of the other layer.
- the RAHT transformation sequence also needs to be used in the RAHT inverse transformation.
- the RAHT decoding process is the inverse transformation of the RAHT encoding process. It is the same as the encoding process. Before the inverse transformation, the Morton code of each point is calculated in the point cloud, and the Morton code M of each point is obtained. The points are arranged in ascending order, and the weight of each point is set to 1. The RAHT inverse process traverses all points in the point cloud according to the order of Morton code sorting.
- the RAHT transformation is carried out in layers, starting from the bottom layer, the adjacent points in the point cloud are judged layer by layer, and RAHT transformation is performed on the attribute value according to the weight.
- the process of inverse RAHT transformation starts from the top layer and performs the inverse transformation of RAHT from top to bottom. Therefore, the weight information of each layer needs to be obtained before the inverse RAHT transformation.
- the inverse RAHT transform uses the obtained Morton code information, starting from the bottom layer, and make a judgment on the adjacent nodes of each layer of RAHT in the encoding end, and the weight information of each layer and the corresponding position of the AC coefficient can be obtained.
- the corresponding Morton code is shifted one bit to the left. Record the weight information and the Morton code information corresponding to the nodes in each layer into the buffer for later use.
- the adjacent nodes are judged according to the Morton code information of each layer, and the inverse RAHT transformation is performed using the obtained weight information and the decoded attribute information.
- the inverse RAHT transform is equivalent to the process from the k+1th layer to the kth layer.
- the following introduces the transformation cut method provided by the embodiments of the present application, mainly for the different ways of determining the transformation order during the RAHT transformation in the encoder framework, and is applied to the encoder (point cloud encoder) .
- an embodiment of the present application provides a conversion method, which may include:
- S101 Determine the normal vector of the point to be coded in the point cloud to be coded.
- S102 Based on the normal vector of the point to be coded, count the total size of each coordinate component of the normal vector.
- S103 Determine a transformation order based on the sum size of each coordinate component of the normal vector.
- S103 after S103, it further includes: S104-105.
- S104 Perform RAHT transformation based on the transformation sequence.
- the transformation method provided by the embodiment of the application considers the distribution of the point cloud space and the surface orientation of the RAHT transformation method, and no longer adopts a fixed transformation order, but analyzes the block to be transformed and the content contained in the preset neighborhood range before the RAHT transformation According to the spatial distribution of the point cloud, the RAHT transformation sequence is determined according to the results of the analysis, so as to obtain better coding performance.
- the point cloud to be coded is the point cloud data of the object to be coded in the point cloud to be coded in this application.
- a point cloud to be coded it may include N points, that is, N points to be coded. Among them, N is greater than or equal to 1.
- the encoder can count 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 coded. The size of the sum characterizes the main distribution characteristics of the point cloud to be coded in the three-dimensional space.
- the encoder can determine the transformation sequence suitable for its own distribution characteristics according to the spatial distribution characteristics of each point cloud to be encoded, so that the encoder performs the transformation based on the transformation sequence RAHT transform, the obtained transform coefficients are less redundant, and the coding efficiency can be improved.
- the encoder needs to change the transformation order and write in the encoding process.
- Attribute code stream attribute bit stream.
- this order can be transmitted to the decoder with a 3-bit bit stream, so that the decoder can directly analyze the RAHT transformation order during decoding.
- the points to be coded are multiple objects in the point cloud to be coded
- the encoder can calculate the x-axis method of multiple points to be coded on the x coordinate component based on the normal vector of each point to be coded
- the size of the sum of the coordinate components of the vector, the sum of the coordinate components of the y-axis normal vector of multiple points to be coded on the y coordinate component, and the coordinates of the z-axis normal vector of the multiple points to be coded on the z coordinate component The size of the sum of the components; then, according to the size of the sum of each coordinate component of the x-axis normal vector, the size of the sum of each coordinate component of the y-axis normal vector, and the size of the sum of each coordinate component of the z-axis normal vector, the distribution is dense or distributed , Determine the order of density or accumulation of more normal vectors to obtain the transformation order, where the transformation order corresponds to the order of normal vector distribution from most to small.
- a way to determine the transformation order is: the encoder counts the sum of the absolute values of the coordinate components of the normal vector based on the normal vector of the point to be encoded; the sum of the absolute values represents the sum of the coordinate components of the normal vector Arrange the sum of absolute values in descending order to determine the order of transformation.
- the implementation of the encoder to count the sum of the absolute values of the various coordinate components of the normal vector is to first count all the normal vectors of each coordinate component, and then perform normalization. For the sum of absolute values, the normal vectors in the embodiments of the present application are all used after normalization.
- 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 respective normal vectors of the N points to be coded, if the sum of the absolute values of the x-axis is ⁇ X;
- the sum of absolute values on the y-axis is ⁇
- the sum of absolute values on the z-axis is ⁇
- the encoder adopts a normal vector estimation method to obtain the normal vector information of each point.
- the RAHT transformation direction order is judged, that is, by analyzing the spatial distribution of the point cloud to be coded, the normal vector of the point cloud to be coded is estimated and summed along each direction
- the RAHT transform sequence is calculated, which improves the coding efficiency and coding performance of the G-PCC attribute coding part.
- S101 includes: S1011-S1014. as follows:
- S1012 Determine whether there is a normal vector of the point to be coded in the attribute information of the point cloud to be coded.
- the encoder when the encoder performs attribute encoding, it can obtain attribute information through the header information of the point cloud to be encoded, and the attribute information here may include the color information of the point and the additional normal vector information. That is to say, in this embodiment of the application, for the points to be coded in the point cloud to be coded, the attribute information parsed by the encoder may include some normal vectors of the points to be coded in the point cloud to be coded, or All are included, it may be partially included, or it may not be included.
- the encoder can detect the acquired attribute information of the point cloud to be coded, and for each point to be coded, determine whether the attribute information of the point cloud to be coded exists in the normal vector of the point to be coded.
- the normal vector of the point If it exists, it directly obtains the normal vector of the point to be coded from the attribute information; at the same time, the encoder can also obtain the geometric information of the point cloud to be coded, that is, obtain the spatial coordinate information of the point to be coded. If it does not exist, the normal vector of the point to be coded is determined based on the geometric information of the neighborhood point within the preset neighborhood range of the point to be coded.
- the point to be coded of the corresponding normal vector is not found in the attribute information, and it needs to be obtained by normal vector estimation.
- the encoder traverses whether there is a normal vector of the point to be coded in the point cloud to be coded from the attribute information, and completes the judgment of whether the normal vector of each point exists in the point cloud. If it exists, get the normal vector directly. For those without normal vector, get the normal vector through normal vector estimation. After normalizing the normal vector of each code point, it will directly target all normal vectors and count on the x-axis.
- the normal vector estimation method is used to calculate the normal vector information of each point. According to the sum of normal vectors in different directions, the RAHT transform order is judged.
- the geometric information includes: spatial coordinate information; for a point cloud that does not contain the normal vector of each point, the encoder obtains at least one neighborhood point closest to the point to be coded within a preset neighborhood range ; Acquire geometric information of at least one neighborhood point; determine at least one distance from at least one neighborhood point to the fitting plane according to the geometric information of at least one neighborhood point and a preset fitting surface equation; according to at least one distance
- the system feature vector corresponding to the preset fitting surface equation is obtained; the system feature vector is used as the normal vector of the point to be coded.
- the encoder further determines the normal vector of the point to be coded based on the attribute information of the neighborhood point within the preset neighborhood range of the point to be coded. 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 based on the normal vector of the at least one neighborhood point, determine the point to be coded Normal vector.
- the normal vector of this neighborhood point is determined as the normal vector of the point to be encoded; when the encoder only finds the normal vector of the point to be encoded from the attribute information
- the mean value of the normal vector of the multiple neighboring points is determined as the normal vector of the point to be coded.
- the encoder can use the normal direction of each point to solve the spatial distribution of the point cloud, all in order to determine the optimal RAHT transformation order along the X, Y, and Z directions, optimize the distribution of AC transformation coefficients, and remove The redundancy of AC coefficients improves coding efficiency.
- an embodiment of the present application provides a conversion method, which may include:
- S202 Determine whether there is a normal vector of the point to be coded in the attribute information of the point cloud to be coded.
- S206 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 the preset fitting surface equation.
- S207 Obtain the system feature vector corresponding to the preset fitting surface equation according to the minimization of the square sum of at least one distance; the system feature vector is used as the normal vector of the point to be coded.
- the normal vector estimation method that can be used is the method of obtaining the normal vector based on the PCA principal component analysis method of local surface fitting, and the SVD normal vector can also be used Estimate method.
- the preset fitting surface equation includes: a plane equation that does not pass the origin and a plane equation that passes through the origin.
- the normal vector can be estimated by PCA principal component analysis.
- the preset fitting surface equation adopted by the encoder is a plane equation passing through the origin, it can be estimated by the SVD normal vector.
- the spatial coordinate information of other points in the preset neighborhood of the point that is, the spatial coordinates of the neighborhood point Information
- the spatial coordinate information of the neighborhood point can be obtained from the geometric information.
- the Morton code of each point is calculated for the point cloud to be coded, and the Morton code of the point to be coded in the point cloud to be coded is arranged in ascending order to obtain the Morton code
- the nearest K points are selected for each point within a certain range of points (within the preset neighborhood range) around the sorting as its K nearest neighbors.
- the preset neighborhood range is not limited in this embodiment of the application, and the actual setting range shall prevail.
- the selection of at least one neighborhood point K can be different. The smaller the K is, the smaller the calculation complexity is, and the error of the obtained normal vector will be larger. The larger the K, the greater the computational complexity when solving the normal direction, but the obtained normal direction error is smaller.
- the encoder can know through simple calculations that the centroid of the locally fitted surface passing through the K neighborhood is: then
- K For the SVD normal vector estimation method, select points in the K neighborhood.
- the selection of K can be 20.
- the encoder by making the fitted curve as close to the plane as possible, proposes to estimate the normal vector using the plane passing the origin and the plane passing the origin, so that the normal vector estimation can be accurately obtained in each situation. Improve the estimation accuracy of the normal vector, thereby improving the optimality of the transformation sequence, and ultimately improving the coding performance.
- S209 Determine the transformation order based on the size of the sum of the various coordinate components of the normal vector.
- an alternative implementation of S204 is: S214. as follows:
- the encoder can use the search method based on the spatial distance to find the K nearest neighbor point (at least one neighbor Domain point). In order to accurately find the domain point of each point, it is possible to traverse all the points in the point cloud to be coded to search for K nearest neighbors.
- traverse all the points of the point cloud to be coded determine the spatial distance between all the points and the current point to be coded, and find one or more of the smallest spatial distances, that is, determine the K nearest neighbor points.
- S204 is: S215-S216. as follows:
- S216 Traverse the hierarchical structure, and obtain a point belonging to the same level as the point to be coded as at least one neighboring point.
- traversal is performed based on a multi-dimensional binary tree (K-D, K-dimension binary tree), so as to facilitate the search for neighboring points.
- K-D multi-dimensional binary tree
- the encoder performs K-D tree division on the point cloud to be coded to obtain the hierarchical structure.
- the encoder first divides the points in the point cloud into the KD tree, that is, first sorts the points in the point cloud according to the size of the coordinates along the x direction, and finds the middle point.
- the first root node coordinates the point
- the cloud is divided into the median of two parts with the same number of points, and then the point cloud is divided into two leaf nodes along different coordinate axes (the order of x, y, z) until the number of points is not more than P(P Is an integer) to get the hierarchy structure.
- Traverse the hierarchical structure and obtain the point belonging to the same level as the point to be coded as at least one neighborhood point, that is, the normal vector is calculated in the unit of subtree.
- each node is a point to be coded. Compared with the point after the parent node of the octree is a combined point, the code point is directly judged to obtain the transformation order. Accuracy improves the encoding accuracy.
- an embodiment of the present application provides a conversion method, which may include:
- S301 Select feature points from the point cloud to be coded.
- S302 Perform normal vector estimation on the feature point to obtain the normal vector of the feature point.
- S303 Determine whether the point to be coded and its nearest neighbor point in the spatial distance are continuous.
- 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 through the normal vector estimation method in the foregoing embodiment, and then proceed When determining the normal vectors of other points to be coded, after the encoder determines whether the nearest neighbor points in the spatial distance are continuous, if contact is made, the normal vector of the neighbor points can be used to represent the current points to be coded. Discontinuity, then the characterization does not have a neighboring point with the current point to be coded, and it is obtained directly according to the normal vector estimation method of the foregoing embodiment. But if the neighborhood point can be found, and the neighborhood point is a feature point, then the normal vector of the neighborhood point is known, and the encoder can use the normal vector of the neighborhood point as the normal vector of the point to be encoded.
- the encoder traces back within the preset neighborhood according to the sequence of the Morton code to determine whether the point to be coded is continuous with the nearest neighborhood point in the spatial distance.
- the encoder can search for the neighbors that are the closest in space to the points to be coded and the neighbors that are also connected by the Morton code, which ensures the proximity of the coding sequence and the proximity of the actual position in space.
- the normal vector of the neighboring point can be used to correctly represent the point to be coded, which improves the estimation accuracy of the normal vector, thereby improving the optimality of the transformation sequence, and finally improving the coding performance.
- S306 Based on the normal vector of the point to be coded, count the size of the sum of the coordinate components of the normal vector.
- S307 Determine the transformation order based on the size of the sum of the various coordinate components of the normal vector.
- an embodiment of the present application provides a conversion method, which may include:
- S402 Determine a normal vector for a point to be coded in each of the n preset blocks.
- S403 Based on the normal vector of the point to be coded, count the sum of the coordinate components of the normal vector in each preset block.
- S404 Determine a transformation sequence corresponding to each preset block based on the size of the sum of the respective coordinate components of the normal vector corresponding to each preset block.
- S405 Perform RAHT transformation on each preset block based on the transformation sequence.
- S406 Encode the transformation sequence corresponding to each preset block, and write it into the attribute bit stream.
- the encoder can perform preset block division to obtain n preset blocks, and determine the normal vector of the point to be encoded in each preset block of the n preset blocks, using a preset Block as a unit, based on the normal vector of the point to be coded, count the sum of the coordinate components of the normal vector in each preset block, and then determine the size of the sum of the coordinate components of the normal vector corresponding to each preset block
- the transformation sequence corresponding to each preset block is directly based on the transformation sequence corresponding to each preset block and each preset block of its own, and RAHT transformation is performed on each preset block, and each preset block corresponds to The transformation sequence is encoded and written into the attribute bitstream.
- the point cloud to be coded may be divided, and the different point clouds corresponding to the different regions obtained by the division may be subjected to the RAHT three-direction sequence judgment.
- the specific area division method can be different.
- This example introduces the use of the 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 (ie, preset blocks). Each slice contains The point cloud uses the vector estimation method to make a judgment of the RAHT transformation direction order, that is, different slices may use different RAHT transformation orders.
- the preset block may also be a block smaller than a slice, larger than an octree leaf node, etc., which is not limited in the embodiment of the present application.
- an embodiment of the present application provides a conversion method, which may include:
- S601 Determine three two-dimensional projection planes of the points to be encoded in the point cloud to be encoded on the three coordinate planes formed by the three-dimensional space.
- S602 Based on the three two-dimensional projection surfaces, count the projection area of each coordinate surface.
- S603 Determine a transformation order based on the projected area.
- an embodiment of the present application provides a conversion method, and after S603, it further includes: S604-605. as follows:
- the encoder projects each point (point to be encoded) in the three-dimensional point cloud (point cloud to be encoded) to three coordinate planes (X, Y, and Z coordinate axes) formed by the three-dimensional space.
- the three surfaces of namely XoY plane, YoZ plane and XoZ plane, finally obtain three two-dimensional projections of the points to be coded, namely three two-dimensional projection planes.
- the encoder calculates the area of each two-dimensional projection surface, and counts the projection area of each coordinate surface.
- the projection area here represents the main distribution and concentration of the point cloud to be encoded in the three-dimensional space. Based on the projected area, the transformation order is determined.
- the encoder can determine the transformation sequence suitable for its own distribution characteristics according to the spatial distribution characteristics of each point cloud to be encoded, so that the encoder performs the transformation based on the transformation sequence RAHT transform, the obtained transform coefficients are less redundant, and the coding efficiency can be improved.
- determining the transformation order may be: counting the number of projection points on each projection surface, based on the principle that the greater the number of projection surfaces, the more priority the transformation order is.
- the transformation order of RAHT may be: counting the number of projection points on each projection surface, based on the principle that the greater the number of projection surfaces, the more priority the transformation order is.
- the encoder can determine the transformation sequence suitable for its own distribution characteristics according to the spatial distribution characteristics of each point cloud to be encoded, so that the encoder is based on The transformation sequence, the RAHT transformation, and the resulting transformation coefficients are less redundant, which can improve the coding efficiency.
- the encoder needs to change the transformation order and write in the encoding process.
- Attribute code stream attribute bit stream.
- this order can be transmitted to the decoder with a 3-bit bit stream, so that the decoder can directly analyze the RAHT transformation order during decoding.
- the area of the projection surface can be represented by the number of projection points on each projection plane.
- the number of projection points on the plane XoY is recorded as Num(xoy)
- the number of projection points on the plane YoZ is recorded as Num(yoz)
- the number of projection points on the plane ZoX is recorded as Num(zox).
- an embodiment of the present application provides a conversion method, which may include:
- S701 Divide the point cloud to be coded into at least one cube sub-block based on a preset cube side length.
- S704 Arrange the projected area of each coordinate plane corresponding to each cube sub-block in descending order, and determine the order of the coordinate axis perpendicular to each coordinate axis surface as the transformation order of each cube sub-block.
- S705 Perform RAHT transformation based on the transformation order of each cube sub-block.
- the encoder may perform block division on the space where the point cloud to be coded is located to obtain n blocks. Use the projection size or projection area of each block on the plane formed by the x, y, and z three coordinate axes to determine the RAHT transformation order.
- the RAHT transformation is performed on the basis of the hierarchical structure obtained by dividing the point cloud data (point cloud to be coded) into an octree, starting from the bottom layer of the octree, and performing hierarchical transformation.
- the encoder divides the block in the space where the point cloud to be encoded is located, and the realization process of obtaining n blocks is as follows: As shown in Figure 18, the encoder divides the point cloud into several N x N x N of the same size in an octree manner. Where N can be set as a fixed value or set separately according to different point clouds, which is not limited in the embodiment of the present application. That is, each block contains N x N x N voxels, or voxels.
- the voxel unit is 1, which means a point to be coded in the point cloud to be coded.
- the encoder performs three two-dimensional projection surfaces on three coordinate planes formed by three coordinate planes in each cube sub-block of at least one cube sub-block;
- the point represents the point to be coded.
- the projected area of each coordinate surface corresponding to each cube sub-block is counted, and the projected area of each coordinate surface corresponding to each cube sub-block is calculated from large to Small arrangement, the coordinate axis order perpendicular to each coordinate axis plane is determined as the transformation order of each cube sub-block, based on the transformation order of each cube sub-block, RAHT transformation is performed, and the transformation order corresponding to each cube sub-block Encode and write the attribute bitstream.
- the encoder calculates its projection area on the XoY, XoZ, and YoZ planes.
- the encoder counts the total number of projections on the three projection surfaces, and considers the total number of projections as the projection area. After sorting from large to small, the order of the coordinate axis direction perpendicular to the projection surface is taken 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.
- the shadow area is sorted as : XoY, XoZ and YoZ, then, the coordinate axis direction of the XoY projection surface is z, the coordinate axis direction of the XoZ projection surface is perpendicular to the coordinate axis direction of the projection surface, then the transformation order is y , The coordinate axis direction of the YoZ projection surface perpendicular to the coordinate axis direction of the projection surface is x, then the order of XoY, XoZ and YoZ is rushed, and the determined transformation order is zyx.
- the point cloud to be coded may be divided, and the different point clouds corresponding to the different regions obtained by the division may be subjected to the RAHT three-direction sequence judgment.
- the specific area division method can be different.
- This example introduces the 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 counted by the projection area.
- the method makes a judgment of the RAHT transformation sequence, that is, different blocks may use different RAHT transformation sequences.
- the size of the division may also be slicek, etc., which is not limited in the embodiment of the present application.
- S707 Perform RAHT transformation on the voxel points to be coded of each cube sub-block according to the transformation order of each cube sub-block to obtain sub-voxel points of each cube sub-block.
- S710 Perform RAHT transformation on the sub-voxel points of each cube sub-block according to the transformation sequence.
- the encoder can perform RAHT transformation on the voxel points to be encoded of each cube sub-block according to the transformation order of each cube sub-block , Get the sub-voxel points of each cube sub-block, and calculate the sum of the absolute value of the projected area corresponding to each coordinate surface according to the projected area of each coordinate surface corresponding to each cube sub-block. The sum is sorted from large to small to get the transformation order.
- RAHT transformation is performed on the sub-voxel points of each cube sub-block.
- the sub-voxel points of each cube sub-block are processed RAHT transformation.
- the encoder After the encoder obtains the transformation order of each block, it performs RAHT transformation within a block based on this transformation order to obtain the sub-voxel points of each cube sub-block. After the RAHT transformation in the block is completed, the The projected areas in all directions in all blocks are summed and sorted from largest to smallest to obtain a total RAHT transformation order. Then, based on this total RAHT transformation order, the sub-voxel points of each cube sub-block are obtained. To perform RAHT transformation in the middle, it is finally necessary to encode the transformation order and transformation order of each cube sub-block and write it into the attribute bit stream, which is convenient for the decoder to use when decoding.
- the projected area of each coordinate component is counted through the projected area of the point to be coded, and finally the transformation order for RAHT transformation is determined based on the size of the projected area of each coordinate component.
- the projection area that is, the spatial distribution characteristics
- priority is given to the transformation in the direction with significant characteristics, which achieves the purpose of reducing the redundancy of the transformation coefficients obtained by the transformation and improving the coding and decoding efficiency.
- the method further includes:
- S712 Obtain the main projection direction corresponding to each cube sub-block according to the transformation sequence corresponding to each cube sub-block.
- S713 Count the number of main projection directions of each coordinate component according to the main projection direction corresponding to each cube sub-block.
- S714 Sort the number of main projection directions of each coordinate component in descending order to obtain a transformation order.
- the way for the encoder to determine the transformation order of each block can also be RAHT transformation on the voxel points to be encoded in each cube sub-block according to the transformation order of each cube sub-block, to obtain each After the sub-voxel points of the cube sub-blocks, obtain the main projection direction in the transformation sequence of each cube sub-block, and count the number of main projection directions of each coordinate component based on the main projection direction of each cube sub-block. The number of main projection directions of the coordinate components are sorted from large to small, and the transformation order is obtained. Based on the transformation order, RAHT transformation can be performed on the entire point cloud to be coded.
- the main projection direction corresponding to each cube sub-block is the first coordinate direction in the transformation sequence corresponding to each cube sub-block.
- the encoder divides the point cloud to be encoded into 3 blocks.
- the transformation order of block1 is xyz
- the transformation order of block2 is zyx
- the transformation order of block3 is zxy.
- the encoder obtains that the main projection direction of block1 is x, the main projection direction of block2 is z, and the main projection direction of block3 is Is z
- the number of the main projection directions of the statistics x is 1
- the number of the main projection directions of the y is 0, and the statistics z
- the number of main projection directions of the quantity is 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.
- the implementation process of S713 may include S7131-S7132, and also include:
- the encoder divides the space where the point cloud to be encoded is located into N blocks. From the N blocks, sub-cube blocks with a preset ratio can be selected, and the main projection direction corresponding to the sub-cube sub-blocks is used for statistics. The number of main projection directions of each coordinate component, and then the transformation order is obtained.
- the preset ratio may be 10%, which is determined based on actual requirements and design, and is not limited in the embodiment of the present application.
- the encoder divides the space of the point cloud to be encoded into 100 blocks with 100 main projection directions.
- the encoder can select 10 block three-dimensional main projection directions from 100 blocks. To count the number of main projection directions of each coordinate component.
- the method before S702, the method further includes: S715. as follows:
- the way that the encoder divides the space where the point cloud to be coded is located can also adopt each point to be coded as the center, or the central axis, to construct each point to be coded as the voxel center, Construct a cube sub-block with a length of NxNxN voxels.
- each voxel block in each block is divided with the block as the center, and the distribution of points in each voxel is determined by which voxel the point falls into.
- the division of each voxel in the cube sub-blocks here is centered on each point to be coded and divided by unit 1. There may also be overlap between voxels and voxels.
- adopting a method for determining a better RAHT transformation sequence can bring performance gains to the reconstructed point cloud.
- Table 1 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. A negative BD-rate indicates better performance. On this basis The greater the absolute value of BD-rate, the greater the performance gain.
- the following introduces the transformation method provided by the embodiments of the present application, mainly for the process of acquiring the transformation order during the inverse RAHT transformation in the decoder framework, and is applied to the decoder (point cloud decoder).
- an embodiment of the present application provides an inverse transform method applied to a decoder, including:
- the encoded bit stream is transmitted to the decoder, and the decoder can analyze the transformation order from the attribute bit stream in the encoded bit stream. Then, when the decoder performs the inverse RAHT transformation, the transformation can be used Order to achieve.
- the encoder determines the optimal RAHT transformation sequence corresponding to each point cloud to be coded based on the spatial distribution characteristics of the point cloud to be coded. In this way, taking into account the accumulation of normal vectors, the transformation in the direction with significant features is given priority to reduce the redundancy of the transformation coefficients obtained by the transformation and improve the coding and decoding efficiency. Because, each point cloud to be coded corresponds to the transformation The order may be different. Therefore, it is necessary to encode the transformation order into the attribute bit stream during encoding, so that the decoder can use it when performing the RAHT inverse transformation.
- the embodiment of the present application provides an encoder 1 according to the embodiment of the present application, including:
- the determining part 10 is configured to determine the normal vector of the point to be coded in the point cloud to be coded;
- the acquiring part 11 is configured to count the sum of the coordinate components of the normal vector based on the normal vector of the point to be coded;
- the determining part 10 is further configured to determine the transformation order based on the size of the sum of the respective coordinate components of the normal vector.
- the encoder further includes: a transformation part and an encoding part.
- the transformation part 12 is configured to perform RAHT transformation based on the transformation sequence
- the encoding part 13 is configured to encode the transformation sequence and write it into the attribute bit stream.
- the encoder further includes: a judgment part 14;
- the acquiring part 11 is also configured to acquire attribute information of the point cloud to be encoded
- the determining part 14 is further configured to determine whether the normal vector of the point to be coded exists in the attribute information of the point cloud to be coded;
- the obtaining part 11 is further configured to directly obtain the normal vector of the point to be coded if it exists;
- the determining part 10 is further configured to determine the normal vector of the point to be coded based on the attribute information of the neighborhood point within the preset neighborhood range of the point to be coded if it does not exist.
- the acquiring part 11 is further configured to acquire at least one neighborhood point closest to the point to be coded within the preset neighborhood; acquiring the at least one neighborhood Geometric information of points;
- 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;
- the acquiring part 11 is further configured to obtain the system feature vector corresponding to the preset curved surface equation according to the minimization of the square sum of the at least one distance; the system feature vector is used as the point to be coded Normal vector.
- the preset curved surface equation includes: a plane equation that does not pass the origin and a plane equation that passes through the origin.
- the acquiring part 11 is further configured to traverse the point cloud to be coded in the order of Morton codes, and select the nearest point cloud to be coded within a preset neighborhood. The at least one neighborhood point.
- the acquiring part 11 is further configured to traverse the point cloud to be coded according to the spatial distance, and select the nearest at least one point cloud to be coded within a preset neighborhood range. A neighborhood point.
- the acquiring part 11 is further configured to traverse the point cloud to be coded according to the spatial distance, and select the nearest at least one point cloud to be coded within a preset neighborhood range. A neighborhood point.
- the acquiring part 11 is further configured to acquire the at least one neighborhood point closest to the point to be coded within the preset neighborhood range.
- a normal vector of a neighboring point performing normal vector estimation on the feature point to obtain the normal vector of the feature point.
- the encoder further includes: a judgment part 14;
- the determining part 10 is also configured to select feature points from the point cloud to be coded; perform normal vector estimation on the feature points to obtain the normal vector of the feature points;
- the judging part 14 is configured to judge whether the point to be coded and its nearest neighbor point in space are continuous;
- the determining part 10 is further configured to use the normal vector of the neighboring point as the normal vector of the point to be coded if it is continuous and the neighboring point belongs to the feature point; and if it is not continuous, based on The geometric information of the neighboring points within the preset neighboring range of the point to be coded determines the normal vector of the point to be coded.
- the judging part 14 is further configured to trace back within a preset neighborhood according to the sequence of Morton codes, and judge the point to be coded and its closest neighborhood in spatial distance Whether the points are continuous.
- the obtaining part 11 is further configured to divide the point cloud to be coded into preset blocks to obtain n preset blocks;
- the determining part 10 is further configured to determine a normal vector for a point to be coded in each of the n preset blocks;
- the acquiring part 11 is also configured to count the sum of the coordinate components of the normal vector in each preset block based on the normal vector of the point to be coded.
- the determining part 10 is further configured to determine that each preset block corresponds to the sum of the coordinate components of the normal vector corresponding to each preset block. The order of transformation.
- the acquiring part 11 is further configured to calculate the sum of absolute values of the respective coordinate components of the normal vector based on the normal vector of the point to be coded; the sum of absolute values represents the The size of the sum of the coordinate components of the normal vector.
- the acquiring part 11 is further configured to calculate the sum of absolute values of the respective coordinate components of the normal vector based on the normal vector of the point to be coded; the sum of absolute values represents the The size of the sum of the coordinate components of the normal vector.
- the determining part 10 is further configured to arrange the sum of the absolute values in descending order to determine the transformation order.
- the embodiment of the present application also provides an encoder 1, including:
- the determining part 10 is configured to determine three two-dimensional projection surfaces of the points to be coded in the point cloud to be coded on the three coordinate planes formed by the three-dimensional space;
- the acquiring part 11 is configured to count the projection area of each coordinate plane based on the three two-dimensional projection planes;
- the determining part 10 is further configured to determine a transformation order based on the projected area
- the encoder further includes: a transformation part and an encoding part.
- the transformation part 12 is configured to perform RAHT transformation based on the transformation order
- the encoding part 13 is configured to encode the transformation sequence and write it into the attribute bit stream.
- the acquiring part 11 is further configured to divide the point cloud to be encoded into at least one cube sub-block based on a preset cube side length;
- the three two-dimensional projection surfaces of the voxel points to be coded in each cube sub-block on the three coordinate planes formed by the three-dimensional space; the voxel points to be coded represent the points to be coded;
- a three-dimensional projection surface, and the projection area of each coordinate surface corresponding to each cube sub-block is calculated.
- the determining part 10 is further configured to arrange the projected area of each coordinate plane corresponding to each cube sub-block in descending order, perpendicular to each coordinate axis plane.
- the order of coordinate axes is determined as the transformation order of each cube sub-block.
- the transformation part 12 is further configured to arrange the projected area of each coordinate plane corresponding to each cube sub-block in descending order, perpendicular to each coordinate. After the coordinate axis order of the axial plane is determined as the transformation order of each cube sub-block, RAHT transformation is performed on the voxel points to be coded of each cube sub-block according to the transformation order of each cube sub-block to obtain The sub-voxel points of each cube sub-block;
- the acquiring part 11 is also configured to calculate the sum of the absolute value of the projection area corresponding to each coordinate plane according to the projection area of each coordinate plane corresponding to each cube sub-block; The sum of values is sorted from largest to smallest to obtain the transformation order;
- the transformation part 12 is further configured to perform RAHT transformation on the sub-voxel points of each cube sub-block according to the transformation sequence;
- the encoding part 13 is further configured to encode the transformation order of each cube sub-block and the transformation order, and write the attribute bitstream into the attribute bitstream.
- the acquiring part 11 is further configured to perform RAHT transformation on the voxel points to be coded of each cube sub-block according to the transformation order of each cube sub-block , After obtaining the sub-voxel points of each cube sub-block, and before performing RAHT transformation on the sub-voxel points of each cube sub-block according to the transformation order, according to the transformation corresponding to each cube sub-block Order, obtain the main projection direction corresponding to each cube sub-block; and, according to the main projection direction corresponding to each cube sub-block, count the number of main projection directions of each coordinate component; for the main projection direction of each coordinate component The number of is sorted from largest to smallest, and the transformation order is obtained.
- the acquiring part 11 is further configured to select, from the main projection directions corresponding to each cube sub-block, the main projection direction corresponding to the sub-cube sub-block of a preset ratio; And 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.
- the acquiring part 11 is further configured to form three coordinates in a three-dimensional space of the voxel points to be encoded in each cube sub-block of the at least one cube sub-block.
- the at least one cube sub-block is constructed by taking the point to be coded in the point cloud to be coded as the center.
- the determining part 10 is further configured to determine that the transformation order is yxz when the projected area is Num(xoy)>Num(yoz)>Num(zox); When the projected area is Num(xoy)>Num(zox)>Num(yoz), determine the transformation order as xyz; when the projected area is Num(yoz)>Num(xoy)>Num(zox), determine the transformation The order is yzx; when the projected area is Num(yoz)>Num(zox)>Num(xoy), the transformation order is determined to be zyx; when the projected area is Num(zox)>Num(yoz)>Num( xoy), the transformation order is determined to be zxy; when the projected area is Num(zox)>Num(xoy)>Num(yoz), the transformation order is determined to be xzy.
- an encoder including:
- the first memory 15 is used to store executable instructions
- the first processor 16 is configured to implement the conversion method on the encoder side when executing the executable instructions stored in the first memory 15.
- the processor can be implemented by software, hardware, firmware, or a combination thereof, and can use circuits, single or multiple application specific integrated circuits (ASIC), single or multiple general integrated circuits, single or multiple micro-processing A processor, a single or multiple programmable logic devices, or a combination of the foregoing circuits or devices, or other suitable circuits or devices, so that the processor can execute the corresponding steps of the transformation method in the foregoing embodiments.
- ASIC application specific integrated circuits
- a processor a single or multiple programmable logic devices, or a combination of the foregoing circuits or devices, or other suitable circuits or devices, so that the processor can execute the corresponding steps of the transformation method in the foregoing embodiments.
- the embodiment of the present application provides a computer-readable storage medium, including: executable instructions stored therein are used to cause a first processor to execute, and implement a conversion method on the encoder side.
- each unit may exist alone physically, or two or more units may be integrated into one unit.
- the above-mentioned integrated unit can be realized in the form of hardware or software function module.
- 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.
- the technical solution of this embodiment is essentially or It is said that the part that contributes to the existing technology 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 several instructions to enable a computer device (which can A personal computer, server, or network device, etc.) or a processor (processor) executes all or part of the steps of the method described in this embodiment.
- the aforementioned storage media include: magnetic random access memory (FRAM, ferromagnetic random access memory), read-only memory (ROM, Read Only Memory), programmable read-only memory (PROM, Programmable Read-Only Memory), erasable Programmable Read-Only Memory (EPROM, Erasable Programmable Read-Only Memory), Electrically Erasable Programmable Read-Only Memory (EEPROM, Electrically Erasable Programmable Read-Only Memory), Flash Memory, Magnetic Surface Memory, Optical Disk
- FRAM magnetic random access memory
- ROM read-only memory
- PROM programmable Read-Only Memory
- EPROM Erasable Programmable Read-Only Memory
- EEPROM Electrically Erasable Programmable Read-Only Memory
- Flash Memory Magnetic Surface Memory
- Optical Disk Various media that can store program codes, such as CD-ROM (Compact Disc Read-Only Memory), etc., are not limited in the embodiments of the present disclosure.
- an embodiment of the present application provides a decoder 2, including:
- the parsing part 20 is configured to parse out the transformation order from the attribute bit stream;
- the decoding part 21 is configured to perform an inverse RAHT transformation based on the transformation order during decoding.
- an embodiment of the present application also provides a decoder, including:
- the second memory 22 is used to store executable instructions
- the second processor 23 is configured to implement the conversion method on the decoder side when executing the executable instructions stored in the second memory 22.
- the embodiment of the present application provides a computer-readable storage medium, including: executable instructions stored therein are used to cause a second processor to execute, to implement a decoder-side transformation method.
- the normal vector of the point to be encoded is used to calculate the sum of the various coordinate components of the normal vector, which is finally based on the various coordinate components of the normal vector The size of the sum to determine the transformation order of RAHT transformation. In this way, taking into account the accumulation of normal vectors, priority is given to the transformation in the direction with significant characteristics, which achieves the purpose of reducing the redundancy of the transformation coefficients obtained by the transformation and improving the coding and decoding efficiency.
- the embodiment of the application provides a transformation method, an encoder, a decoder, and a computer-readable storage medium, including: determining the normal vector of the point to be coded in the point cloud to be coded; and statistical normal vector based on the normal vector of the point to be coded The size of the sum of each coordinate component; determine the transformation order based on the size of the sum of each coordinate component of the normal vector; perform the RAHT transformation based on the transformation order; encode the transformation order and write it into the attribute bit stream.
- the encoder Since the encoder is in the process of attribute encoding, for the realization of the RAHT transformation, through the normal vector of the point to be coded, the total size of the coordinate components of the normal vector is calculated, and finally it is based on the size of the sum of the coordinate components of the normal vector Determine the transformation order for RAHT transformation. In this way, taking into account the accumulation of normal vectors, priority is given to the transformation in the direction with significant characteristics, which achieves the purpose of reducing the redundancy of the transformation coefficients obtained by the transformation and improving the coding and decoding efficiency.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Analysis (AREA)
Abstract
本申请实施例提供的一种变换方法、编码器、解码器及计算机可读存储介质,包括:确定待编码点云中的待编码点的法向量;基于所述待编码点的法向量,统计法向量各个坐标分量的总和大小;基于所述法向量各个坐标分量的总和大小,确定变换顺序。
Description
本申请实施例涉及视频编解码的技术领域,尤其涉及一种变换方法、逆变换方法、编码器、解码器及存储介质。
在基于几何的点云压缩(G-PCC,Geometry-based Point Cloud Compression)编码器框架中,点云的几何信息和每个点云所对应的属性信息是分开进行编码的。几何编码完成后,对几何信息进行重建,而属性信息的编码将依赖于重建的几何信息。
目前,属性信息编码主要针对颜色信息的编码。首先,将颜色信息从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色,使得未编码的属性信息与重建的几何信息对应起来。在颜色信息编码中,主要有两种变换方法,一是依赖于细节层次(LOD,Level of Detail,)划分的基于距离的提升变换,另一是直接进行的区域自适应分层变换(RAHT,Region Adaptive Hierarchal Transform),这两种方法都会将颜色信息从空间域转换到频域,通过变换得到高频系数和低频系数,最后对系数进行量化并编码,生成二进制码流。其中,RAHT变换是在对点云数据进行八叉树划分得到的层级结构基础上进行的,从八叉树的最底层开始一直变换到最高层,循环遍历每一层中的每一个节点。每一个节点的RAHT变换均按照变换顺序,在三维坐标的x、y和z方向依次进行。
然而,由于不同点云具有不同的空间分布,因此,在进行RAHT变换时,沿用固定的变换顺序所得到的变换系数仍存在较大信息冗余,导致编码效率较差。
发明内容
本申请实施例提供了一种变换方法、逆变换方法、编码器、解码器及存储介质,能够减少变换得到的变换系数的冗余度,提高编码效率。
本申请实施例的技术方案可以如下实现:
第一方面,本申请实施例提供了一种变换方法,应用于编码器,包括:
确定待编码点云中的待编码点的法向量;
基于所述待编码点的法向量,统计法向量各个坐标分量的总和大小;
基于所述法向量各个坐标分量的总和大小,确定变换顺序。
第二方面,本申请实施例还提供了一种变换方法,应用于编码器,包括:
确定待编码点云中的待编码点在三维空间构成的三个坐标面上的三个二维投影面;
基于所述三个二维投影面,统计每个坐标面的投影面积;
基于所述投影面积,确定变换顺序。
第三方面,本申请实施例还提供了一种逆变换方法,包括:
从属性比特流中,解析出变换顺序;
在解码时,基于所述变换顺序,进行区域自适应分层变换RAHT逆变换。
第四方面,本申请实施例提供了一种编码器,包括:
确定部分,被配置为确定待编码点云中的待编码点的法向量;
获取部分,被配置为基于所述待编码点的法向量,统计法向量各个坐标分量的总和大小;
所述确定部分,还被配置基于所述法向量各个坐标分量的总和大小,确定变换顺序。
第五方面,本申请实施例还提供了一种编码器,包括:
确定部分,被配置为确定待编码点云中的待编码点在三维空间构成的三个坐标面上的三个二 维投影面;
获取部分,被配置为基于所述三个二维投影面,统计每个坐标面的投影面积;
所述确定部分,还被配置为基于所述投影面积,确定变换顺序。
第六方面,本申请实施例提供了一种解码器,包括:
解析部分,被配置为从属性比特流中,解析出变换顺序;
解码部分,被配置为在解码时,基于所述变换顺序,进行区域自适应分层变换RAHT逆变换。
第七方面,本申请实施例又提供了一种编码器,包括:
第一存储器,用于存储可执行指令;
第一处理器,用于执行所述第一存储器中存储的可执行指令时,实现第一方面所述的方法,或者,第二方面项所述的方法。
第八方面,本申请实施例又提供了一种解码器,包括:
第二存储器,用于存储可执行指令;
第二处理器,用于执行所述第二存储器中存储的可执行指令时,实现第三方面所述的方法。
第九方面,本申请实施例提供了一种计算机可读存储介质,应用于编码,包括:存储有可执行指令,用于引起第一处理器执行时,实现第一方面所述的方法,或者,第二方面所述的方法。
第十方面,本申请实施例提供了一种计算机可读存储介质,应用于解码器,包括:存储有可执行指令,用于引起第二处理器执行时,实现第三方面所述的方法。
本申请实施例提供的一种变换方法、逆变换方法、编码器、解码器及存储介质,包括:确定待编码点云中的待编码点的法向量;基于待编码点的法向量,统计法向量各个坐标分量的总和大小;基于法向量各个坐标分量的总和大小,确定变换顺序。采用上述技术实现方案,由于编码器在进行属性编码的过程中,针对RAHT变换的实现,通过待编码点的法向量,统计出每个坐标分量的法向量各个坐标分量的总和大小,最终是基于法向量各个坐标分量的总和大小来确定进行RAHT变换的变换顺序的。这样,在考虑到法向量积累,优先进行特征显著的方向上的变换,达到了减少变换得到的变换系数的冗余度,提高编解码效率的目的。
图1为本申请实施例提供的示例性的编码流程框图;
图2为本申请实施例提供的示例性的解码流程框图;
图3A为本申请实施例提供的示例性的二维莫顿编码示意图一;
图3B为本申请实施例提供的示例性的二维莫顿编码示意图二;
图4A为本申请实施例提供的示例性的三维莫顿编码示意图一;
图4B为本申请实施例提供的示例性的三维莫顿编码示意图二;
图5为本申请实施例提供的示例性的分层RAHT变换示意图;
图6为本申请实施例提供的示例性的分层RAHT变换的变换系数存储示意图;
图7为本申请实施例提供的示例性的分层RAHT逆变换的变换系数存储示意图;
图8A为本申请实施例提供的变换方法的流程图一;
图8B为本申请实施例提供的变换方法的流程图二;
图9为本申请实施例提供的变换方法的流程图三;
图10为本申请实施例提供的示例性的变换顺序的流程示意图;
图11为本申请实施例提供的变换方法的流程图四;
图12为本申请实施例提供的变换方法的流程图五;
图13为本申请实施例提供的变换方法的流程图六;
图14为本申请实施例提供的变换方法的流程图七;
图15为本申请实施例提供的变换方法的流程图八;
图16A为本申请实施例提供的变换方法的流程图九
图16B为本申请实施例提供的变换方法的流程图十;
图17为本申请实施例提供的变换方法的流程图十一;
图18为本申请实施例提供的示例性的空间划分示意图;
图19为本申请实施例提供的变换方法的流程图十二;
图20为本申请实施例提供的变换方法的流程图十三;
图21为本申请实施例提供的变换方法的流程图十四;
图22为本申请实施例还提供的逆变换方法的流程图;
图23为本申请实施例提供的编码器的结构示意图一;
图24为本申请实施例提供的编码器的结构示意图二;
图25为本申请实施例提供的解码器的结构示意图一;
图26为本申请实施例提供的解码器的结构示意图二。
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
在本申请实施例中,在点云G-PCC编码器框架中,将输入三维图像模型的点云进行slice划分后,对每一个slice进行独立编码。
如图1所示的G-PCC编码的流程框图中,应用于点云编码器中,针对待编码的点云数据,先通过slice划分,将点云数据划分为多个slice。在每一个slice中,点云的几何信息和每个点云所对应的属性信息是分开进行编码的。在几何编码过程中,对几何信息进行坐标转换,使点云全都包含在一个bounding box(包围盒)中,然后再进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点云的几何信息相同,于是在基于参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化过程。接着对bounding box进行八叉树划分。在基于八叉树的几何信息编码流程中,将包围盒八等分为8个子立方体,对非空的(包含点云中的点)的子立方体继续进行八等分,直到划分得到的叶子结点为1x1x1的单位立方体时停止划分,对叶子结点中的点进行算术编码,生成二进制的几何比特流,即几何码流。在基于trisoup(triangle soup,三角面片集)的几何信息编码过程中,同样也要先进行八叉树划分,但区别于基于八叉树的几何信息编码,该trisoup不需要将点云逐级划分到边长为1x1x1的单位立方体,而是划分到block(子块)边长为W时停止划分,基于每个block中点云的分布所形成的表面,得到该表面与block的十二条边所产生的至多十二个vertex(交点),对vertex进行算术编码(基于交点进行表面拟合),生成二进制的几何比特流,即几何码流。Vertex还用于在几何重建的过程的实现,而重建的集合信息在对点云的属性编码时使用。
在属性编码过程中,几何编码完成,对几何信息进行重建后,进行颜色转换,将颜色信息(即属性信息)从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色,使得未编码的属性信息与重建的几何信息对应起来。在颜色信息编码过程中,主要有两种变换方法,一是依赖于细节层次(Level of Detail,LOD)划分的基于距离的提升变换,二是直接进行区域自适应分层变换(Region Adaptive Hierarchal Transform,RAHT)的变换,这两种方法都会将颜色信息从空间域转换到频域,通过变换得到高频系数和低频系数,最后对系数进行量化(即量化系数),最后,将经过八叉树划分及表面拟合的几何编码数据与量化系数处理属性编码数据进行slice合成后,依次编码每个block的vertex坐标(即算数编码),生成二进制的属性比特流,即属性码流。
如图2所示的G-PCC解码的流程框图中,应用于点云解码器中。解码器获取二进制码流,针对二进制码流中的几何比特流和属性比特流分别进行独立解码。在对几何比特流的解码时,通过算术解码-八叉树合成-表面拟合-重建几何-反坐标变换,得到点云的几何信息;在对属性比特流的解码时,通过算术解码-反量化-基于LOD的反提升或者基于RAHT的反变换-反颜色转换,得到点云的属性信息,基于几何信息和属性信息还原待编码的点云数据的三维图像模型。
在属性编码过程中,RAHT变换在点云重新着色之后,这时可以得到点云的几何坐标信息。利用点的坐标信息可以得到对应于点云中每一点的莫顿码。莫顿编码也叫z-order code,因为其编码顺序按照空间z序。具体的计算莫顿码的具体方法描述如下所示,对于每一个分量用d比特二进制数表示的三维坐标,其三个分量的表示通过以下实现:
其中,x
l,y
l,z
l∈{0,1}分别是x,y,z的最高位(l=1)到最低位(l=d)对应的二进制数值。莫 顿码M是对x,y,z从最高位开始,依次交叉排列x
l,y
l,z
l到最低位,M的计算公式如下所示:
其中,m
l′∈{0,1}分别是M的最高位(l′=1)到最低位(l′=3d)的值。在得到点云中每个点的莫顿码M后,将点云中的点按莫顿码由小到大的顺序进行排列,并将每个点的权值w设为1。表示为计算机语言,类似于z|(y<<1)|(x<<2)的组合。
结合图3A和3B进行说明,以高低位排列顺序这里是z、y、x(x|(y<<1)|(z<<2))为例进行说明。
图3A展示了8*8的图像每个像素的空间编码,从000000到111111,用一维二进制数,编码了x,y值在0-7的位置坐标。交错二进制坐标值,获得二进制z值图。沿着数值方向连接z型,产生递归的z形曲线。图中每个位置上就按连接顺序放上了z值。实际上,上图就是按z方向迭代产生的,从00-11(整个图一个z),再从0000-1111(之前的z的每个点放一个z),再从000000-111111(之前的z的每个点放一个z),每次增加两位,递归升高。
示例性的,如图3B示出了2x2,4x4,8x8和16x16空间编码顺序,从中可以看出,莫顿码的编码顺序按照空间z序实现的。
上升到3维情况,其递归过程如图4A和图4B所示,其实现了坐标交错,整体在做的就是不断地将坐标值分散开。x|(y<<1)|(z<<2);即每个坐标值分散开,各位依次交错,先z后y最后x。解码过程就就是聚合过程。)
RAHT变换是在对点云数据进行八叉树划分得到的层级结构基础上进行的,从八叉树的底层开始,分层进行变换。如图5所示,在八叉树划分结束后得到体素块1(即图5中三种颜色深度相间的几何体,每个方块都代表点云中的点)。从最底层开始进行RAHT变换,以变换顺序xyz为例,如下图5所示先沿x方向进行RAHT变换。若x方向上存在相邻的体素块,则二者进行RAHT,得到相邻两点属性值的平均(DC系数)与细节(AC系数)。其中,得到的DC系数作为父节点的体素块2的属性信息存在,并进行下一层的RAHT变换;而AC系数保留起来,用于最后的编码。若不存在相邻点,则将该体素块的属性值直接传递给第二层父节点。第二层RAHT变换时,沿y方向进行,若y方向上存在相邻体素块,二者进行RAHT,并得到相邻两点属性值的平均(DC系数)与细节(AC系数)。之后,第三层RAHT变换沿z方向进行,并得到三种颜色深度相间的父节点体素块3作为八叉树中下一层的子节点,再沿x、y、z方向循环进行RAHT变换,直至整个点云只存在一个父节点为止。
在实际中进行点云中的点的遍历时,利用经过排序的点云的莫顿码进行,这样便于进行如图所示的八叉树中相邻点的结合。
对于相邻两点的属性值c
1,c
2具体的RAHT变换过程如下所示:
[根据细则26改正06.08.2019]
其中,w=w 1+w 2, luma为传入的量化参数配置得到的,w为DC系数所对应的权重,是计算得到的。DC系数为属性的加权平均值,AC系数为相邻两点的属性残差。c 1,c 2在第一层为属性值对应w 1和w 2,用于在其他层为计算获得的DC系数值。
其中,w=w 1+w 2, luma为传入的量化参数配置得到的,w为DC系数所对应的权重,是计算得到的。DC系数为属性的加权平均值,AC系数为相邻两点的属性残差。c 1,c 2在第一层为属性值对应w 1和w 2,用于在其他层为计算获得的DC系数值。
在本申请实施例中,RAHT变换的具体步骤如下:
(1)、将点云中的点的属性值作为第一层DC系数并将它们的权重全部设为1,开始进行RAHT变换。
(2)、这一层的DC系数和AC系数按照对应的索引填入下一层双亲层,父节点。要用,若无AC系数则不填。
(3)、照莫顿码排序后的索引,遍历索引所对应的DC系数。
(4)、将所有DC系数对应的莫顿码?右移一位,这时每个DC系数的莫顿码表示其父节点的莫顿码。
(5)、如图6所示,判断两个DC系数的莫顿码是否相同,若相同,则表示在相同父节点下,二者进行RAHT,将得到的DC系数填入下一层父节点的DC系数处、AC系数填入下一层最后的DC系数处并将两个DC系数加和的权重赋给父节点的DC系数;若不同,则将此DC系数和其权重 直接填入下一层。
(6)、重复2)-5)直到某一层只有一个DC系数为止。
(7)、最后,对DC系数进行量化,并对这一层的DC系数和AC系数属性值进行编码。
相应的,在解码器框图中,RAHT的变换顺序也是需要在RAHT逆变换中使用。
下面介绍下RAHT的解码过程。
RAHT解码过程是RAHT编码过程的逆变换,同编码过程相同,在逆变换之前,先对点云中计算每个点莫顿码,得到每个点的莫顿码M后,将点云中的点按由小到大的顺序进行排列,并将每个点的权值设为1,RAHT逆过程依照莫顿码排序后的顺序遍历点云中所有的点。
由于RAHT变换是通过分层进行的,由底层开始,一层一层进行点云中相邻点的判断,依据权重对属性值进行RAHT变换。而RAHT逆变换的过程是由顶层开始,由上往下进行RAHT的逆变换,因此RAHT逆变换前需要得到每一层的权重信息,。
在做逆RAHT变换前,利用得到的莫顿码信息,由底层开始,做一次编码端中对每一层RAHT相邻节点的判断,可以得到每一层的权重信息和AC系数的相应位置,每做一层RAHT,将相应的莫顿码左移一位。将权重信息和每一层中节点对应的莫顿码信息记录到buffer中,方便之后的使用。
RAHT逆变换时,从顶层开始,依据每一层的莫顿码信息来进行相邻节点的判断,利用得到的权重信息和解码得到的属性信息进行RAHT的逆变换。如图7所示,RAHT逆变换相当于第k+1层到第k层的过程。当判断出相邻节点时,取遍历到的DC系数和相应的AC系数进行RAHT的逆变换。
更详细的,对于相邻两点的属性值c
1,c
2,具体的RAHT逆变换过程如下所示:
基于上述介绍的背景下,下面介绍本申请实施例提供的变换割方法,主要针对在编码器框架中,RAHT变换时的变换顺序进行确定的方式不同,应用于编码器(点云编码器)中。
如图8A所示,本申请实施例提供了一种变换方法,该方法可以包括:
S101、确定待编码点云中的待编码点的法向量。
S102、基于待编码点的法向量,统计法向量各个坐标分量的总和大小。
S103、基于法向量各个坐标分量的总和大小,确定变换顺序。
在本申请的一些实施例中,如图8B所示,在S103之后,还包括:S104-105。
S104、基于变换顺序,进行RAHT变换。
S105、将变换顺序编码,写入属性比特流。
本申请实施例提供的变换方法考虑点云空间的分布和表面朝向的RAHT变换方法,不再采用固定的变换顺序,而是在进行RAHT变换之前分析待变换块及预设邻域范围内包含的点云的空间分布情况,根据该分析所得结果确定RAHT变换顺序,从而得到较好的编码性能。
在本申请实施例中,待编码点云为本申请中的待编码点云对待编码对象的点云数据,针对一个待编码点云,其可以包含N个点,即N个待编码点。其中,N大于等于1。编码器通过确定待编码点云中的待编码点的法向量,就可以基于待编码点的法向量,统计三维空间中的法向量各个坐标分量的总和的大小,这里的法向量各个坐标分量的总和的大小表征了待编码点云在三维空间的主要分布集中的特点。由于不同点云具有不同的空间分布,在进行RAHT变换之前,编码器可以针对每个待编码点云自身的空间分布特性,确定适合自身分布特点的变换顺序,这样编码器基于变换顺序,进行的RAHT变换,得到的变换系数冗余小,进而可以提高编码效率。
需要说明的是,在本申请实施例中,由于每个待编码点云的变换顺序确定的可能不一样,那么在确定出变换顺序时,就需要编码器在编码过程中将变换顺序与写进属性码流,属性比特流。例如可以将此顺序用3位比特流传到解码器,便于解码器在解码时可以直接解析出RAHT的变换顺序。
在本申请实施例中,待编码点是待编码点云中的多个对象,编码器可以基于每个待编码点的法向量,统计出多个待编码点在x坐标分量上的x轴法向量各个坐标分量的总和的大小,多个待编码点在y坐标分量上的y轴法向量各个坐标分量的总和的大小,以及多个待编码点在z坐标分量上的z轴法向量各个坐标分量的总和的大小;然后,根据x轴法向量各个坐标分量的总和的大小、y轴法向量各个坐标分量的总和的大小和z轴法向量各个坐标分量的总和的大小的分布密集或分布大小,确定密集度或者法向量积累较多的顺序,从而得到变换顺序,其中,变换顺序与由多到小的法向量分布顺序对应。
在本申请实施例中,一种确定变换顺序的方式为:编码器基于待编码点的法向量,统计法向量各个坐标分量的绝对值之和;绝对值之和表征法向量各个坐标分量的总和的大小;并将绝对值之和按照由大到小的顺序进行排列,确定变换顺序。
需要说明的是,在本申请实施例中,编码器统计法向量各个坐标分量的绝对值之和的实现,是先统计出每个坐标分量的所有法向量,再进行归一化后才进行的绝对值之和的,本申请实施例中的法向量都是采用经过归一化后的法向量进行使用的。
示例性的,编码器针对N个各待编码点各自的法向量,统计在x轴,y轴和z轴的法向量的投影的绝对值之和,若x轴绝对值之和为∑X;y轴绝对值之和为∑|Y|;z轴绝对值之和为∑|Z|。
那么,当∑|X|>∑|Y|>∑|Z|时,变换顺序为xyz;
当∑|X|>∑|Z|>∑|Y|时,变换顺序为xzy;
当∑|Y|>∑|Z|>∑|X|时,变换顺序为yzx;
当∑|Y|>∑|X|>∑|Z|时,变换顺序为yxz;
当∑|Z|>∑|Y|>∑|X|时,变换顺序为zyx;
当∑|Z|>∑|X|>∑|Y|时,变换顺序为zxy。
可以理解的是,编码器采用法向量估计的方法获取每点的法向量信息。根据得到的不同方向的法向量总和的大小,从而对RAHT变换方向顺序进行判断,即通过分析待编码点云的空间分布情况,对待编码点云进行法向量预估和沿每个方向进行求和计算得到RAHT变换顺序,改善了G-PCC属性编码部分的编码效率和编码性能。
在本申请的一些实施例中,基于图8B,如图9所示,S101的具体实现包括:S1011-S1014。如下:
S1011、获取待编码点云的属性信息。
S1012、判断待编码点云的属性信息中是否存在待编码点的法向量。
S1013、若存在,则直接获取待编码点的法向量。
S1014、若不存在,则基于待编码点的预设邻域范围内的邻域点的几何信息,确定待编码点的法向量。
在本申请实施例中,编码器在进行属性编码的时候,可以通过待编码点云的头信息来获取属性信息,并且这里的属性信息可以包括点的颜色信息和附加的法向量信息的。也就是说,在本申请实施例中,针对待编码点云中的待编码点,编码器解析出来的属性信息中是可能包含一些待编码点云中的待编码点的法向量,也可以能全都包含,也可能部分包含,还可能都不包含。针对这些情况,编码器可以对获取的待编码点云的属性信息进行检测,针对每个待编码点,判断待编码点云的属性信息中是否存在待编码点的法向量中是否存在这个待编码点的法向量了。若存在,则直接从属性信息中,获取待编码点的法向量;同时,编码器也可以获取到待编码点云几何信息,即获取到待编码点的空间坐标信息。若不存在,则基于待编码点的预设邻域范围内的邻域点的几何信息,确定待编码点的法向量。
也就是说,在属性信息中没有找到自己对应的法向量的待编码点,是需要进行法向量估计来得到的。
示例性的,如图10所示,待编码点云包含N个点,每点对应的属性信息为A
n,n=1,2,...N。编码器从属性信息遍历是否存在待编码点云中的待编码点的法向量,完成对点云是否存在每一点的法向量的判断。若存在,直接获取法向量,针对不存在法向量的,就通过法向量估计来获取法向量,对每个编码点的法向量进行归一化后,就直接针对所有法向量,统计在x轴,y轴和z轴的法向量的投影的绝对值之和,若x轴绝对值之和为∑X;y轴绝对值之和为∑|Y|;z轴绝对值之和为∑|Z|,对绝对值之和从大到小排序,那么,当∑|X|>∑|Y|>∑|Z|时,变换顺序为xyz;当∑|X|>∑|Z|>∑|Y|时,变换顺序为xzy;当∑|Y|>∑|Z|>∑|X|时,变换顺序为yzx;当∑|Y|>∑|X|>∑|Z|时,变换顺序为yxz;当∑|Z|>∑|Y|>∑|X|时,变换顺序为zyx;当∑|Z|>∑|X|>∑|Y|时,变换顺序为zxy。
示例性的,本申请实施例提到的法向量的表示方式可以为:Norm
n=(normX
n,normY
n,normZ
n)。若待编码点云包含每点的法向量,则对Norm
n,n=1,2,3...N分别作归一化操作,即:
需要说明的是,若待编码点云本身不包含每点的法向量,则采用法向量估计的方法计算每点的法向量信息。根据得到的不同方向的法向量总和的大小,从而对RAHT变换顺序进行判断。
在本申请的一些实施例中,几何信息包括:空间坐标信息;对于本身不包含每点法向量的点云,编码器获取预设邻域范围内,与待编码点最近的至少一个邻域点;获取至少一个邻域点的几何信息;根据至少一个邻域点的几何信息息和预设拟合曲面方程,确定出至少一个邻域点到拟合平面的至少一个距离;依据至少一个距离的平方和的最小化,得到预设拟合曲面方程对应的系统特征向量;系统特征向量作为待编码点的法向量。
在本申请的一些实施例中,编码器还基于待编码点的预设邻域范围内的邻域点的属性信息,确定待编码点的法向量。例如,属性信息中包含有至少一个邻域点的法向量的时候,编码器可以从属性信息中获取至少一个邻域点的法向量;再基于至少一个邻域点的法向量,确定待编码点的法向量。
需要说明的是,当编码器从属性信息中只找到一个邻域点的法向量时,将这个邻域点的法向量确定为待编码点的法向量;当编码器从属性信息中只找到多个邻域点的法向量时,将这多个邻域点的法向量的均值确定为待编码点的法向量。
可以理解的是,编码器可以利用每点法线方向求解点云空间分布,都是为了确定RAHT沿X,Y,Z三个方向的最优的RAHT变换顺序,优化AC变换系数的分布,去除AC系数的冗余,从而提升编码效率。
如图11所示,本申请实施例提供了一种变换方法,该方法可以包括:
S201、获取待编码点云的属性信息。
S202、判断待编码点云的属性信息中是否存在待编码点的法向量。
S203、若存在,则直接获取待编码点的法向量。
需要说明的是,这里的S201-S203的实现与前述实施例中的S1011-S1013的实现描述一致,此处不再赘述。
S204、若不存在,则按照莫顿码的顺序遍历待编码点云,在待编码点在预设邻域范围内的选取最近的至少一个邻域点。
S205、获取至少一个邻域点的几何信息。
S206、根据至少一个邻域点的几何信息和预设拟合曲面方程,确定出至少一个邻域点到拟合平面的至少一个距离。
S207、依据至少一个距离的平方和的最小化,得到预设拟合曲面方程对应的系统特征向量;系统特征向量作为待编码点的法向量。
在本申请实施例中,对于本身不包含每点法向量的点云,可以采用的法向量估计方法为基于局部表面拟合的PCA主成分分析法获取法向量的方法,还可以采用SVD法向量估计方法。
其中,预设拟合曲面方程包括:不过原点的平面方程和过原点的平面方程。编码器采用的预设拟合曲面方程为不过原点的平面方程时,实现通过PCA主成分分析法对法向量的估计。编码器采用的预设拟合曲面方程为过原点的平面方程时,实现通过SVD法向量估计。
针对PCA主成分分析法,在进行待编码点云中每个待编码点的法向量估计时,需要利用到该点预设邻域范围内其他点的空间坐标信息,即邻域点的空间坐标信息,而邻域点的空间坐标信息可以从几何信息中获取到。采用一种快速的K近邻搜索方法,对待编码点云计算每个点的莫顿码,将待编码点云中的待编码点的莫顿码按照由小到大的顺序排列,得到莫顿码的顺序,根据莫顿码的顺序对每个点在排序周围的一定范围点内(预设邻域范围内)选取最近的K个点,作为其K最近邻点。
需要说明的是,预设邻域范围本申请实施例不作限制,以实际设置范围为准。至少一个邻域点K的选取可以不同,K越小,计算的复杂度越小,同时得到的法向量的误差会大。K越大则求解法线方向时的计算复杂度越大,但求得的法线方向误差较小。
示例性的,对选取的K邻域点,其空间坐标信息为:(x
i,y
i,z
i),i=1,2,3...K,假设预设拟合曲面方程为x+by+cz=d(d>0),其中,a
2+b
2+c
2=1。编码器根据至少一个邻域点的空间坐标 信息和预设拟合曲面方程,确定出至少一个邻域点到拟合平面的至少一个距离,其中,任意一点(x
i,y
i,z
i)到平面的距离为d
i=|ax
i+by
i+cz
i-d|。
为了求得f的极值,对f求偏导如(4、(5)和(6)所示:
根据公式(4)、(5)和(6)的合并,得到协方差矩阵(7):
这样,通过求解协方差矩阵的特征值和特征向量,得到了特征向量为(a,b,c)
T,那么,待编码点云中的待编码点n对应的法向量可以表示为:Norm
n=(NormX
n,NormY
n,NormZ
n)=(a,b,c)。
通过这种主成分分析法,PCA得到待编码点云中所有待编码点的法向量后,将X,Y。Z每一个方向的所有法向量投影的绝对值进行求和,然后将求和得到的值进行由大到小排序,就得到的是变换顺序。
针对SVD法向量估计方法,K邻域内选点,本示例中K的选取可以为20。选取K邻域点的空间坐标信息为:(x
i,y
i,z
i),i=1,2,3...K。预设拟合曲面方程过原点,为ax+by+cz=0,a
2+b
2+c
2=1。编码器根据至少一个邻域点的空间坐标信息和预设拟合曲面方程,确定出至少一个邻域点到拟合平面的至少一个距离,其中,任意一点(x
i,y
i,z
i)到平面的距离为d
i=|ax
i+by
i+cz
i|。
为了求得f的极值,对f求偏导(8)、(9)和(10)所示:
根据公式(8)、(9)和(10)的合并,得到协方差矩阵(11):
这样,通过求解协方差矩阵的特征值和特征向量,得到了特征向量为(a,b,c)
T,那么,待编码 点云中的待编码点n对应的法向量可以表示为:Norm
n=(NormX
n,NormY
n,NormZ
n)=(a,b,c)。
可以理解的是,编码器通过尽可能的使拟合曲线与平面接近,提出来采用过原点平面和不过原点平面等方式进行法向量的估计,使得法向量估计在各个情况下都能准确得到,提高了法向量的估计准确性,进而提高变换顺序的最优性,最终提升编码性能。
S208、基于待编码点的法向量,统计法向量各个坐标分量的总和的大小。
S209、基于法向量各个坐标分量的总和的大小,确定变换顺序。
S210、基于变换顺序,进行变换。
S211、将变换顺序编码,写入属性比特流。
需要说明的是,这里的S208-S211的实现过程与前面描述的S102-105的实现过程一致,此处不再赘述。
在本申请的一些实施例中,如图12所示,与S204的实现可替换的实现为:S214。如下:
S214、若不存在,则按照空间距离遍历待编码点云,在待编码点在预设邻域范围内的选取最近的至少一个邻域点。
在本申请实施例中,对于本身不包含每点法向量的点云,编码器在进行K近邻搜索时,可以采用基于空间距离的搜索方法,找到空间距离最近的K近邻域点(至少一个邻域点)。为准确的找到每个点的领域点,可以遍历待编码点云所有的点来进行K近邻的搜索。
详细的,遍历待编码点云所有的点,确定所有的点与当前待编码点空间距离,从中找出空间距离最小的一个或多个,即确定出K近邻域点。
在本申请的一些实施例中,如图13所示,与S204的实现可替换的实现为:S215-S216。如下:
S215、若不存在,则对待编码点云,进行K-D树划分,得到层级数结构。
S216、遍历从层级数结构,获取与待编码点属于同一层级的点作为至少一个邻域点。
在本申请实施例中,对于本身不包含每点法向量的点云,基于多维二叉树树(K-D,K-dimension binary tree)进行遍历,这样以便于搜索邻域点。
在本申请实施例中,编码器对待编码点云,进行K-D树划分,得到层级数结构。也就是说,编码器对点云中的点先进行K-D树的划分,即首先沿x方向将点云中的点按坐标的大小排序,并找到中间的点第一个根节点的坐标将点云划分为点数相同的两部分的中位数,之后依次沿不同的坐标轴(x、y、z的顺序)的两个叶子节点将点云进行划分,直到划分到点数为不超过P(P为整数)的最后一层,得到层级数结构。遍历从层级数结构,获取与待编码点属于同一层级的点作为至少一个邻域点,即以子树为单位进行法向量的计算。
可以理解的是,采用K-D划分时,每个节点都是待编码点,相比八叉树的父节点是结合后的点而言,直接对待编码点进行判断,进而得到变换顺序的方式更为精度,使得编码准确度提高。
如图14所示,本申请实施例提供了一种变换方法,该方法可以包括:
S301、从待编码点云中选取特征点。
S302、对特征点进行法向量估计,得到特征点的法向量。
S303、判断待编码点与其在空间距离上最近的邻域点是否连续。
S304、若连续,且邻域点属于特征点,则将邻域点的法向量作为待编码点的法向量。
S305、若不连续,则基于待编码点的预设邻域范围内的邻域点的几何信息,确定待编码点的法向量。
在本申请实施例中,编码器还可以先从待编码点云中选取一些点作为特征点,先通过前述实施例中的法向量估计方法计算出每个特征点的法向量,这样,再进行其他待编码点的法向量的确定时,编码器在判断出在空间距离上最近的邻域点是不是连续后,若联系,表征可以采用邻域点法向量来表征当前的待编码点,若不连续,那么表征没有与当前待编码点的邻域点,就直接依据前述实施例的法向量的估计方法得到。但是若可以找到邻域点,且邻域点属于特征点,那么邻域点的法向量已知,编码器就可以将邻域点的法向量作为待编码点的法向量了。
需要说明的是,编码器是按照莫顿码的顺序,在预设邻域范围内回溯,判断待编码点与其在空间距离上最近的邻域点是否连续的。
需要说明的是,这里的S304-305的实现与前述实施例中的S1013-S1014的实现描述一致,此处不再赘述。
可以理解的是,编码器可以通过寻找待编码点在空间上距离最近的邻域和莫顿码也联系的邻域,即保证了编码顺序上的邻近,又保证了空间实际位置的邻近,这样才可以用邻域点的法向量正确的表示待编码点,提高了法向量的估计准确性,进而提高变换顺序的最优性,最终提升编码性能。
S306、基于待编码点的法向量,统计法向量各个坐标分量的总和的大小。
S307、基于法向量各个坐标分量的总和的大小,确定变换顺序。
S308、基于变换顺序,进行RAHT变换。
S309、将变换顺序编码,写入属性比特流。
需要说明的是,这里的S306-309的实现与前述实施例中的S102-S105的实现描述一致,此处不再赘述。
如图15所示,本申请实施例提供了一种变换方法,该方法可以包括:
S401、将待编码点云进行预设块划分,得到n个预设块。
S402、确定对n个预设块中的每个预设块中的待编码点的法向量。
S403、基于待编码点的法向量,统计每个预设块中的法向量各个坐标分量的总和的大小。
S404、基于每个预设块对应的法向量各个坐标分量的总和的大小,确定每个预设块对应的变换顺序。
S405、基于变换顺序,对每个预设块进行RAHT变换。
S406、将每个预设块对应的变换顺序编码,写入属性比特流。
在本申请实施例中,编码器可以进行预设块划分,得到n个预设块,确定对n个预设块中的每个预设块中的待编码点的法向量,以一个预设块为单位,基于待编码点的法向量,统计每个预设块中的法向量各个坐标分量的总和的大小,再基于每个预设块对应的法向量各个坐标分量的总和的大小,确定每个预设块对应的变换顺序,直接就针对每个预设块和其自己的每个预设块对应的变换顺序,各自对每个预设块进行RAHT变换,将每个预设块对应的变换顺序编码,写入属性比特流。
需要说明的是,在进行点云属性的RAHT变换时,可对待编码点云进行划分,对划分得到的不同区域对应的不同点云分别进行RAHT三个方向顺序判断。具体的划分区域方式可以不同,本示例介绍采用slice划分方案,即按照MPEG G-PCC中的点云slice划分方法,将点云分割成不同的slice(即预设块),每一slice包含的点云再用法向量估计的方法做一次RAHT变换方向顺序的判断,即不同slice可能使用不同的RAHT变换顺序。
例如,预设块也可以是比slice小,比八叉树叶子结点大的block等,本申请实施例不作限制。
可以理解的是,采用slice划分时,基于每个slice可以并行进行编码,还提高了容错能力和编码速度。
如图16A所示,本申请实施例提供了一种变换方法,该方法可以包括:
S601、确定待编码点云中的待编码点在三维空间构成的三个坐标面上的三个二维投影面。
S602、基于三个二维投影面,统计每个坐标面的投影面积。
S603、基于投影面积,确定变换顺序。
如图16B所示,本申请实施例提供了一种变换方法,S603之后,还包括:S604-605。如下:
S604、基于变换顺序,进行RAHT变换。
S605、将变换顺序编码,写入属性比特流。
在本申请实施例中,编码器将三维点云(即待编码点云)中的每一点(待编码点)分别投影到三维空间构成的三个坐标面(X,Y,Z坐标轴所构成的的三个面),即XoY平面,YoZ平面和XoZ平面,最终得到待编码点的三个二维投影,即三个二维投影面。编码器计算每个二维投影面的面积,统计每个坐标面的投影面积,这里的投影面积表征了待编码点云在三维空间的主要分布集中的特点。基于投影面积,确定变换顺序。由于不同点云具有不同的空间分布,在进行RAHT变换之前,编码器可以针对每个待编码点云自身的空间分布特性,确定适合自身分布特点的变换顺序,这样编码器基于变换顺序,进行的RAHT变换,得到的变换系数冗余小,进而可以提高编码效率。
需要说明的是,在本申请实施例中,基于投影面积,确定变换顺序可以为:统计每个投影面上的投影点的数量,基于投影面的数量越多,变换顺序越优先的原则,确定出RAHT的变换顺序。
可以理解的是,由于不同点云具有不同的空间分布,在进行RAHT变换之前,编码器可以针对每个待编码点云自身的空间分布特性,确定适合自身分布特点的变换顺序,这样编码器基于变换顺序,进行的RAHT变换,得到的变换系数冗余小,进而可以提高编码效率。
需要说明的是,在本申请实施例中,由于每个待编码点云的变换顺序确定的可能不一样,那么在确定出变换顺序时,就需要编码器在编码过程中将变换顺序与写进属性码流,属性比特流。例如可以将此顺序用3位比特流传到解码器,便于解码器在解码时可以直接解析出RAHT的变换顺序。
在本申请实施例中,投影面的面积可以用在每个投影平面上的投影点的个数来表示。
示例性的,将平面XoY上的投影点数记为Num(xoy),平面YoZ上的投影点数记为Num(yoz), 平面ZoX上的投影点数记为Num(zox)。当投影面积为Num(xoy)>Num(yoz)>Num(zox)时,确定变换顺序为yxz;当投影面积为Num(xoy)>Num(zox)>Num(yoz)时,确定变换顺序为xyz;当投影面积为Num(yoz)>Num(xoy)>Num(zox)时,确定变换顺序为yzx;当投影面积为Num(yoz)>Num(zox)>Num(xoy)时,确定变换顺序为zyx;当投影面积为Num(zox)>Num(yoz)>Num(xoy)时,确定变换顺序为zxy;当投影面积为Num(zox)>Num(xoy)>Num(yoz)时,确定变换顺序为xzy。
如图17所示,本申请实施例提供了一种变换方法,该方法可以包括:
S701、基于预设立方体边长,将待编码点云划分成至少一个立方体子块。
S702、对至少一个立方体子块的每个立方体子块中的待编码体素点在三维空间构成的三个坐标面上的三个二维投影面;待编码体素点表征待编码点。
S703、基于三个二维投影面,统计每个立方体子块对应的每个坐标面的投影面积。
S704、将每个立方体子块对应的每个坐标面的投影面积按照从大到小排列,垂直于每个坐标轴面的坐标轴顺序,确定为每个立方体子块的变换顺序。
S705、基于每个立方体子块的变换顺序,进行RAHT变换。
S706、将每个立方体子块的变换顺序编码,写入属性比特流。
在本申请实施例中,编码器可以对待编码点云所在空间进行block划分,得到n个block。采用用每个block在x、y、z三个坐标轴两两构成的平面上的投影大小或投影面积来判断RAHT的变换顺序。
需要说明的是,RAHT变换是在对点云数据(待编码点云)进行八叉树划分得到的层级结构基础上进行的,从八叉树的底层开始,分层进行变换。编码器在待编码点云所在空间进行block划分,得到n个block的实现过程为:如图18所示,编码器将点云用八叉树的方式划分成若干相同大小的N x N x N的block,其中N可以设定为固定值或根据不同点云分别设定,本申请实施例不作限制。即每个block包含N x N x N个体素,或称为体素点(voxel)。体素单位为1,表示待编码点云中的一个待编码点。
在本申请实施例中,编码器对至少一个立方体子块的每个立方体子块中的待编码体素点在三维空间构成的三个坐标面上的三个二维投影面;待编码体素点表征待编码点,基于三个二维投影面,统计每个立方体子块对应的每个坐标面的投影面积,再将每个立方体子块对应的每个坐标面的投影面积按照从大到小排列,垂直于每个坐标轴面的坐标轴顺序,确定为每个立方体子块的变换顺序,基于每个立方体子块的变换顺序,进行RAHT变换,将每个立方体子块对应的变换顺序编码,写入属性比特流。
示例性的,每个block中,编码器计算其在XoY,XoZ和YoZ平面上的投影面积,编码器统计在三个投影面中的投影总数,将投影总数认为是投影面积,将投影面积按从大到小排序后,将垂直于该投影面的坐标轴方向的顺序作为block中RAHT变换的顺序,如XoY投影面积大于XoZ投影面积,XoZ投影面积大于YoZ投影面积,这时影面积排序为:XoY、XoZ和YoZ,那么,垂直于该投影面的坐标轴方向XoY投影面的坐标轴方向为z,垂直于该投影面的坐标轴方向XoZ投影面的坐标轴方向为则变换顺序为y,垂直于该投影面的坐标轴方向YoZ投影面的坐标轴方向为x,那么急于XoY、XoZ和YoZ这个顺序,确定出的变换顺序为zyx。
需要说明的是,在进行点云属性的RAHT变换时,可对待编码点云进行划分,对划分得到的不同区域对应的不同点云分别进行RAHT三个方向顺序判断。具体的划分区域方式可以不同,本示例介绍采用block划分方案,即按照MPEG G-PCC中的点云block划分方法,将点云分割成block,每一block包含的点云再用投影面积统计的方法做一次RAHT变换顺序的判断,即不同block可能使用不同的RAHT变换顺序。
例如,划分的大小也可以是slicek等,本申请实施例不作限制。
S707、按照每个立方体子块的变换顺序,对每个立方体子块的待编码体素点进行RAHT变换,得到每个立方体子块的子体素点。
S708、根据每个立方体子块对应的每个坐标面的投影面积,统计出每个坐标面对应的投影面积绝对值之和。
S709、对投影面积绝对值之和按照从大到小排序,得到变换顺序。
S710、根据变换顺序,对每个立方体子块的子体素点进行RAHT变换。
S711、将每个立方体子块的变换顺序和变换顺序编码,写入属性比特流。
在本申请实施例中,编码器在确定了每个立方体子块的变换顺序之后,编码器可以按照每个立 方体子块的变换顺序,对每个立方体子块的待编码体素点进行RAHT变换,得到每个立方体子块的子体素点,根据每个立方体子块对应的每个坐标面的投影面积,统计出每个坐标面对应的投影面积绝对值之和,对投影面积绝对值之和按照从大到小排序,得到变换顺序,根据变换顺序,对每个立方体子块的子体素点进行RAHT变换,最后,根据变换顺序,对每个立方体子块的子体素点进行RAHT变换。
也就是说,编码器在获取了每个block的变换顺序后,基于这个变换顺序进行一个block内部的RAHT变换,得到每个立方体子块的子体素点,在block中RAHT变换结束后,将所有block中的各个方向的投影面积进行求和,并由大到小排序,得到一个总的RAHT变换顺序,然后基于这个总的RAHT变换顺序,对得到每个立方体子块的子体素点之间进行RAHT变换,最终需要将每个立方体子块的变换顺序和变换顺序编码,写入属性比特流,便于解码器解码时使用。
可以理解的是,通过待编码点的投影面积,统计出每个坐标分量的投影面积,最终是基于每个坐标分量的投影面积的大小排序,来确定进行RAHT变换的变换顺序的。这样,在考虑到投影面积积累,即空间分布特性,优先进行特征显著的方向上的变换,达到了减少变换得到的变换系数的冗余度,提高编解码效率的目的。
在本申请的一些实施例中,图19所示,S707之后,S710之前,该方法还包括:
S712、根据每个立方体子块对应的变换顺序,获取每个立方体子块对应的主投影方向。
S713、根据每个立方体子块对应的主投影方向,统计每个坐标分量的主投影方向的数量。
S714、对每个坐标分量的主投影方向的数量按照从大到小排序,得到变换顺序。
在本申请实施例中,编码器判断每个block的变换顺序的方式还可以在按照每个立方体子块的变换顺序,对每个立方体子块的待编码体素点进行RAHT变换,得到每个立方体子块的子体素点之后,获取每个立方体子块的变换顺序中的主投影方向,基于每个立方体子块的主投影方向,统计每个坐标分量的主投影方向的数量,对每个坐标分量的主投影方向的数量按照从大到小排序,得到变换顺序,基于该变换顺序,就可以对整个待编码点云进行RAHT变换了。
需要说明的是,在本申请实施例中,每个立方体子块对应的主投影方向就是每个立方体子块对应的变换顺序中的第一个坐标方向。
示例性的,假设编码器将待编码点云划分为3个block。其中,block1的变换顺序为xyz,block2的变换顺序为zyx,block3的变换顺序为zxy,那么编码器获取到block1的主投影方向为x,block2的主投影方向为z,block3的的主投影方向为z,获取了3个主投影方向后,根据每个立方体子块对应的主投影方向,统计x量的主投影方向的数量为1,统计y量的主投影方向的数量为0,统计z量的主投影方向的数量为2,由于2>1>0,对每个坐标分量的主投影方向的数量按照从大到小排序,得到变换顺序为zxy。
如图20所示,S713的实现过程可以包括S7131-S7132,还包括:
S7131、从每个立方体子块对应的主投影方向中,选出预设比例的子立方体子块对应的主投影方向。
S7132、根据子立方体子块对应的主投影方向,统计每个坐标分量的主投影方向的数量。
在本申请实施例中,编码器将待编码点云所在空间划分为N个block,可以从N个block,选取出预设比例的子立方体块,采用子立方体子块对应的主投影方向来统计每个坐标分量的主投影方向的数量,进而得到变换顺序。
其中,预设比例可以为10%,这是基于实际的需求和设计决定的,本申请实施例不做限制。
示例性的,编码器将待编码点云所在空间划分为100个block,有100个主投影方向,预设比例为10%时,编码器可以从100个block选取10个block三维主投影方向,来统计每个坐标分量的主投影方向的数量。
可以理解的是,采用部分block来做统计,提高了处理速度,降低了运算量。
如图21所示,在本申请的一些实施例中,S702之前,方法还包括:S715。如下:
S715、将待编码点云中的待编码点为中心,构建至少一个立方体子块。
在本申请实施例中,编码器将待编码点云所在空间进行块划分的方式还可以采用以每个待编码点为中心,或中心轴,构建出以每个待编码点作为体素中心,构建的一个长度为NxNxN体素的立方体子块。
这与直接进行block划分的区别为,每个block中的体素块是以block为中心进行划分的,每个体素中的点的分布是看点落入哪个体素来决定的。而这里的立方体子块中的每个体素的划分则是以每个待编码点为中心,以单位1划分出来的,体素与体素之间还可能存在重叠。
在本申请实施例中,采用确定一种较优的RAHT变换顺序的确定方法可以为重建点云带来性能的增益。如下表1所示,重建点云的PSNR降低,且BD-rate也有较为明显的提升。(PSNR是一种图像评价的客观标准,PSNR越大则图像的质量越好。BD-rate是用来衡量性能的好坏的参数,BD-rate为负时表示性能变好,在此基础上BD-rate的绝对值越大,则性能的增益越大。)
表1
由表1可知,针对4个点云,采用各自不同的变换顺序进行RAHT变换,得到的Average平均增益均很显著,编码器性能上得到了很大的提高。
可以理解的是,采用这种实现方案,由于每个体素是以待编码点为中心的,这样获得的体素的投影面积作为待编码点的投影面积的话会更准确。
基于前述介绍的背景下,下面介绍本申请实施例提供的变换方法,主要针对在解码器框架中,RAHT逆变换时的获取变换顺序的过程,应用于解码器(点云解码器)中。
如图22所示,本申请实施例提供了一种逆变换方法,应用于解码器中,包括:
S801、从属性比特流中,解析出变换顺序。
S802、在解码时,基于变换顺序,进行RAHT逆变换。
在本申请实施例中,编码比特流传输到解码器,该解码器就可以从编码比特流中的属性比特流中,解析出变换顺序,那么在解码器进行RAHT逆变换时,就可以使用变换顺序来实现。
可以理解的是,编码器基于通过待编码点云的空间分布特点,来每个待编码点云对应的最优的RAHT变换的变换顺序。这样,在考虑到法向量积累,优先进行特征显著的方向上的变换,达到了减少变换得到的变换系数的冗余度,提高编解码效率的目的,由于,每个待编码点云对应的变换顺序可能不同,因此,需要在编码的时候,将变换顺序也编码写入属性比特流中,便于解码器解码进行RAHT逆变换时使用。
基于前述实施例的实现基础,如图23所示,本申请实施例提供了本申请实施例提供了一种编码器1,包括:
确定部分10,被配置为确定待编码点云中的待编码点的法向量;
获取部分11,被配置为基于所述待编码点的法向量,统计法向量各个坐标分量的总和的大小;
所述确定部分10,还被配置基于所述法向量各个坐标分量的总和的大小,确定变换顺序。
在本申请的一些实施例中,所述编码器还包括:变换部分和编码部分。
所述变换部分12,被配置为基于变换顺序,进行RAHT变换;
所述编码部分13,被配置为将所述变换顺序编码,写入属性比特流。
在本申请的一些实施例中,所述编码器还包括:判断部分14;
所述获取部分11,还被配置为获取待编码点云的属性信息;
所述判断部分14,还被配置为判断所述待编码点云的属性信息中是否存在所述待编码点的法向量;
所述获取部分11,还被配置为若存在,则直接获取所述待编码点的法向量;
所述确定部分10,还被配置为若不存在,则基于所述待编码点的预设邻域范围内的邻域点的属性信息,确定所述待编码点的法向量。
在本申请的一些实施例中,所述获取部分11,还被配置为获取所述预设邻域范围内,与所述待 编码点最近的至少一个邻域点;获取所述至少一个邻域点的几何信息;
所述确定部分10,还被配置根据所述至少一个邻域点的几何信息和预设拟合曲面方程,确定出所述至少一个邻域点到拟合平面的至少一个距离;
所述获取部分11,还被配置为依据所述至少一个距离的平方和的最小化,得到所述预设拟合曲面方程对应的系统特征向量;所述系统特征向量作为所述待编码点的法向量。
在本申请的一些实施例中,所述预设拟合曲面方程包括:不过原点的平面方程和过原点的平面方程。
在本申请的一些实施例中,所述获取部分11,还被配置为按照莫顿码的顺序遍历所述待编码点云,在所述待编码点在预设邻域范围内的选取最近的所述至少一个邻域点。
在本申请的一些实施例中,所述获取部分11,还被配置为按照空间距离遍历所述待编码点云,在所述待编码点在预设邻域范围内的选取最近的所述至少一个邻域点。
在本申请的一些实施例中,所述获取部分11,还被配置为按照空间距离遍历所述待编码点云,在所述待编码点在预设邻域范围内的选取最近的所述至少一个邻域点。
在本申请的一些实施例中,所述获取部分11,还被配置为所述获取所述预设邻域范围内,与所述待编码点最近的至少一个邻域点之后,获取所述至少一个邻域点的法向量;对所述特征点进行法向量估计,得到所述特征点的法向量。
在本申请的一些实施例中,所述编码器还包括:判断部分14;
所述确定部分10,还被配置为从所述待编码点云中选取特征点;对所述特征点进行法向量估计,得到所述特征点的法向量;
所述判断部分14,被配置为判断所述待编码点与其在空间距离上最近的邻域点是否连续;
所述确定部分10,还被配置为若连续,且所述邻域点属于所述特征点,则将邻域点的法向量作为所述待编码点的法向量;以及若不连续,则基于所述待编码点的预设邻域范围内的邻域点的几何信息,确定所述待编码点的法向量。
在本申请的一些实施例中,所述判断部分14,还被配置为按照莫顿码的顺序,在预设邻域范围内回溯,判断所述待编码点与其在空间距离上最近的邻域点是否连续。
在本申请的一些实施例中,所述获取部分11,还被配置为将所述待编码点云进行预设块划分,得到n个预设块;
所述确定部分10,还被配置为确定对所述n个预设块中的每个预设块中的待编码点的法向量;
所述获取部分11,还被配置为基于所述待编码点的法向量,统计每个预设块中的法向量各个坐标分量的总和的大小。
在本申请的一些实施例中,所述确定部分10,还被配置为基于所述每个预设块对应的所述法向量各个坐标分量的总和的大小,确定所述每个预设块对应的变换顺序。
在本申请的一些实施例中,所述获取部分11,还被配置为基于所述待编码点的法向量,统计法向量各个坐标分量的绝对值之和;所述绝对值之和表征所述法向量各个坐标分量的总和的大小。
在本申请的一些实施例中,所述获取部分11,还被配置为基于所述待编码点的法向量,统计法向量各个坐标分量的绝对值之和;所述绝对值之和表征所述法向量各个坐标分量的总和的大小。
在本申请的一些实施例中,所述确定部分10,还被配置为诶将所述绝对值之和按照由大到小的顺序进行排列,确定所述变换顺序。
本申请实施例还提供了一种编码器1,包括:
确定部分10,被配置为确定待编码点云中的待编码点在三维空间构成的三个坐标面上的三个二维投影面;
获取部分11,被配置为基于所述三个二维投影面,统计每个坐标面的投影面积;
所述确定部分10,还被配置为基于所述投影面积,确定变换顺序;
在本申请的一些实施例中,所述编码器还包括:变换部分和编码部分。
所述变换部分,12被配置为基于变换顺序,进行RAHT变换;
所述编码部分13,被配置为将所述变换顺序编码,写入属性比特流。
在本申请的一些实施例中,所述获取部分11,还被配置为基于预设立方体边长,将所述待编码点云划分成至少一个立方体子块;对所述至少一个立方体子块的每个立方体子块中的待编码体 素点在三维空间构成的三个坐标面上的三个二维投影面;所述待编码体素点表征所述待编码点;基于所述三个二维投影面,统计所述每个立方体子块对应的每个坐标面的投影面积。
在本申请的一些实施例中,所述确定部分10,还被配置为将所述每个立方体子块对应的每个坐标面的投影面积按照从大到小排列,垂直于每个坐标轴面的坐标轴顺序,确定为每个立方体子块的变换顺序。
在本申请的一些实施例中,所述变换部分12,还被配置为所述将所述每个立方体子块对应的每个坐标面的投影面积按照从大到小排列,垂直于每个坐标轴面的坐标轴顺序,确定为每个立方体子块的变换顺序之后,按照所述每个立方体子块的变换顺序,对所述每个立方体子块的待编码体素点进行RAHT变换,得到每个立方体子块的子体素点;
所述获取部分11,还被配置为根据所述每个立方体子块对应的每个坐标面的投影面积,统计出每个坐标面对应的投影面积绝对值之和;对所述投影面积绝对值之和按照从大到小排序,得到所述变换顺序;
所述变换部分12,还被配置为根据所述变换顺序,对每个立方体子块的子体素点进行RAHT变换;
所述编码部分13,还被配置为将所述每个立方体子块的变换顺序和所述变换顺序编码,写入属性比特流。
在本申请的一些实施例中,所述获取部分11,还被配置为所述按照所述每个立方体子块的变换顺序,对所述每个立方体子块的待编码体素点进行RAHT变换,得到每个立方体子块的子体素点之后,且所述根据所述变换顺序,对每个立方体子块的子体素点进行RAHT变换之前,根据所述每个立方体子块对应的变换顺序,获取每个立方体子块对应的主投影方向;以及根据每个立方体子块对应的主投影方向,统计每个坐标分量的主投影方向的数量;对所述每个坐标分量的主投影方向的数量按照从大到小排序,得到所述变换顺序。
在本申请的一些实施例中,所述获取部分11,还被配置为从所述每个立方体子块对应的主投影方向中,选出预设比例的子立方体子块对应的主投影方向;以及根据所述子立方体子块对应的主投影方向,统计所述每个坐标分量的主投影方向的数量。
在本申请的一些实施例中,所述获取部分11,还被配置为所述对所述至少一个立方体子块的每个立方体子块中的待编码体素点在三维空间构成的三个坐标面上的三个二维投影面之前,将所述待编码点云中的待编码点为中心,构建所述至少一个立方体子块。
在本申请的一些实施例中,所述确定部分10,还被配置为诶当所述投影面积为Num(xoy)>Num(yoz)>Num(zox)时,确定变换顺序为yxz;当所述投影面积为Num(xoy)>Num(zox)>Num(yoz)时,确定变换顺序为xyz;当所述投影面积为Num(yoz)>Num(xoy)>Num(zox)时,确定变换顺序为yzx;当所述投影面积为Num(yoz)>Num(zox)>Num(xoy)时,确定变换顺序为zyx;当所述投影面积为Num(zox)>Num(yoz)>Num(xoy)时,确定变换顺序为zxy;当所述投影面积为Num(zox)>Num(xoy)>Num(yoz)时,确定变换顺序为xzy。
在实际应用中,如图24所示,本申请实施例还提供了一种编码器,包括:
第一存储器15,用于存储可执行指令;
第一处理器16,用于执行所述第一存储器15中存储的可执行指令时,实现编码器侧的变换方法。
其中,处理器可以通过软件、硬件、固件或者其组合实现,可以使用电路、单个或多个专用集成电路(application specific integrated circuits,ASIC)、单个或多个通用集成电路、单个或多个微处理器、单个或多个可编程逻辑器件、或者前述电路或器件的组合、或者其他适合的电路或器件,从而使得该处理器可以执行前述实施例中的变换方法的相应步骤。
本申请实施例提供了一种计算机可读存储介质,包括:存储有可执行指令,用于引起第一处理器执行时,实现编码器侧的变换方法。
在本申请实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件 产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:磁性随机存取存储器(FRAM,ferromagnetic random access memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory)等各种可以存储程序代码的介质,本公开实施例不作限制。
如图25所示,本申请实施例提供了一种解码器2,包括:
解析部分20,被配置为从属性比特流中,解析出变换顺序;
解码部分21,被配置为在解码时,基于所述变换顺序,进行RAHT逆变换。
在实际应用中,如图26所示,本申请实施例还提供了一种解码器,包括:
第二存储器22,用于存储可执行指令;
第二处理器23,用于执行所述第二存储器22中存储的可执行指令时,实现解码器侧的变换方法。
本申请实施例提供了一种计算机可读存储介质,包括:存储有可执行指令,用于引起第二处理器执行时,实现解码器侧的变换方法。
可以理解的是,由于编码器在进行属性编码的过程中,针对RAHT变换的实现,通过待编码点的法向量,统计出法向量各个坐标分量的总和的大小,最终是基于法向量各个坐标分量的总和的大小来确定进行RAHT变换的变换顺序的。这样,在考虑到法向量积累,优先进行特征显著的方向上的变换,达到了减少变换得到的变换系数的冗余度,提高编解码效率的目的。
本申请实施例提供了一种变换方法、编码器、解码器及计算机可读存储介质,包括:确定待编码点云中的待编码点的法向量;基于待编码点的法向量,统计法向量各个坐标分量的总和的大小;基于法向量各个坐标分量的总和的大小,确定变换顺序;基于变换顺序,进行RAHT变换;将变换顺序编码,写入属性比特流。由于编码器在进行属性编码的过程中,针对RAHT变换的实现,通过待编码点的法向量,统计出法向量各个坐标分量的总和的大小,最终是基于法向量各个坐标分量的总和的大小来确定进行RAHT变换的变换顺序的。这样,在考虑到法向量积累,优先进行特征显著的方向上的变换,达到了减少变换得到的变换系数的冗余度,提高编解码效率的目的。
Claims (32)
- 一种变换方法,应用于编码器中,包括:确定待编码点云中的待编码点的法向量;基于所述待编码点的法向量,统计法向量各个坐标分量的总和大小;基于所述法向量各个坐标分量的总和大小,确定变换顺序。
- 根据权利要求1所述的方法,其中,所述基于所述法向量总和大小,确定变换顺序之后,所述方法还包括:基于所述变换顺序,进行区域自适应分层变换RAHT变换;将所述变换顺序编码,写入属性比特流。
- 根据权利要求1或2所述的方法,其中,所述确定待编码点云中的待编码点的法向量,包括:获取待编码点云的属性信息;判断所述待编码点云的属性信息中是否存在所述待编码点的法向量;若存在,则直接获取所述待编码点的法向量;若不存在,则基于所述待编码点的预设邻域范围内的邻域点的几何信息,确定所述待编码点的法向量。
- 根据权利要求3所述的方法,其中,所述基于所述待编码点的预设邻域范围内的邻域点的几何信息,确定所述待编码点的法向量,包括:获取所述预设邻域范围内,与所述待编码点最近的至少一个邻域点;获取所述至少一个邻域点的几何信息;根据所述至少一个邻域点的几何信息和预设拟合曲面方程,确定出所述至少一个邻域点到拟合平面的至少一个距离;依据所述至少一个距离的平方和的最小化,得到所述预设拟合曲面方程对应的系统特征向量;所述系统特征向量作为所述待编码点的法向量。
- 根据权利要求4所述的方法,其中,所述预设拟合曲面方程包括:不过原点的平面方程和过原点的平面方程。
- 根据权利要求4所述的方法,其中,所述获取所述预设邻域范围内,与所述待编码点最近的至少一个邻域点,包括:按照莫顿码的顺序遍历所述待编码点云,在所述待编码点在预设邻域范围内的选取最近的所述至少一个邻域点。
- 根据权利要求4所述的方法,其中,所述获取所述预设邻域范围内,与所述待编码点最近的至少一个邻域点,包括:按照空间距离遍历所述待编码点云,在所述待编码点在预设邻域范围内的选取最近的所述至少一个邻域点。
- 根据权利要求4所述的方法,其中,所述获取所述预设邻域范围内,与所述待编码点最近的至少一个邻域点,包括:对所述待编码点云,进行K-D树划分,得到层级数结构;遍历从所述层级数结构,获取与所述待编码点属于同一层级的点作为所述至少一个邻域点。
- 根据权利要求6至8任一项所述的方法,其中,所述获取所述预设邻域范围内,与所述待编码点最近的至少一个邻域点之后,所述方法包括:获取所述至少一个邻域点的法向量;基于所述至少一个邻域点的法向量,确定所述待编码点的法向量。
- 根据权利要求1或2所述的方法,其中,所述确定待编码点云中的待编码点的法向量,包括:从所述待编码点云中选取特征点;对所述特征点进行法向量估计,得到所述特征点的法向量;判断所述待编码点与其在空间距离上最近的邻域点是否连续;若连续,且所述邻域点属于所述特征点,则将邻域点的法向量作为所述待编码点的法向量;若不连续,则基于所述待编码点的预设邻域范围内的邻域点的几何信息,确定所述待编码点的法向量。
- 根据权利要求10所述的方法,其中,所述判断所述待编码点与其在空间距离上最近的邻域点是否连续,包括:按照莫顿码的顺序,在预设邻域范围内回溯,判断所述待编码点与其在空间距离上最近的邻域点是否连续。
- 根据权利要求1或2所述的方法,其中,所述确定待编码点云中的待编码点的法向量,包括:将所述待编码点云进行预设块划分,得到n个预设块;确定对所述n个预设块中的每个预设块中的待编码点的法向量;相应的,所述基于所述待编码点的法向量,统计法向量各个坐标分量的总和的大小,包括:基于所述待编码点的法向量,统计每个预设块中的法向量各个坐标分量的总和的大小。
- 根据权利要求12所述的方法,其中,所述基于所述法向量各个坐标分量的总和大小,确定变换顺序,包括:基于所述每个预设块对应的所述法向量各个坐标分量的总和大小,确定所述每个预设块对应的变换顺序。
- 根据权利要求1至11任一项所述的方法,其中,所述基于所述待编码点的法向量,统计法向量各个坐标分量的总和的大小,包括:基于所述待编码点的法向量,统计法向量各个坐标分量的绝对值之和。
- 根据权利要求14所述的方法,其中,基于所述各个坐标分量的总和大小,确定变换顺序,包括:将所述绝对值之和按照由大到小的顺序进行排列,确定所述变换顺序。
- 一种变换方法,应用于编码器中,包括:确定待编码点云中的待编码点在三维空间构成的三个坐标面上的三个二维投影面;基于所述三个二维投影面,统计每个坐标面的投影面积;基于所述投影面积,确定变换顺序。
- 根据权利要求16所述的方法,其中,所述基于所述投影面积,确定变换顺序之后,所述方法还包括:基于所述变换顺序,进行区域自适应分层变换RAHT变换;将所述变换顺序编码,写入属性比特流。
- 根据权利要求16或17所述的方法,其中,所述确定待编码点云中的待编码点在三维空间构成的三个坐标面上的三个二维投影面,包括:基于预设立方体边长,将所述待编码点云划分成至少一个立方体子块;对所述至少一个立方体子块的每个立方体子块中的待编码体素点在三维空间构成的三个坐标面上的三个二维投影面;所述待编码体素点表征所述待编码点;相应的,所述基于所述三个二维投影面,统计每个坐标面的投影面积,包括:基于所述三个二维投影面,统计所述每个立方体子块对应的每个坐标面的投影面积。
- 根据权利要求18所述的方法,其中,所述基于所述投影面积,确定变换顺序,包括:将所述每个立方体子块对应的每个坐标面的投影面积按照从大到小排列,垂直于每个坐标轴面的坐标轴顺序,确定为每个立方体子块的变换顺序。
- 根据权利要求19所述的方法,其中,所述将所述每个立方体子块对应的每个坐标面的投影面积按照从大到小排列,垂直于每个坐标轴面的坐标轴顺序,确定为每个立方体子块的变换顺序之后,所述方法还包括:按照所述每个立方体子块的变换顺序,对所述每个立方体子块的待编码体素点进行RAHT变换,得到每个立方体子块的子体素点;根据所述每个立方体子块对应的每个坐标面的投影面积,统计出每个坐标面对应的投影面积绝对值之和;对所述投影面积绝对值之和按照从大到小排序,得到所述变换顺序;根据所述变换顺序,对每个立方体子块的子体素点进行RAHT变换;将所述每个立方体子块的变换顺序和所述变换顺序编码,写入属性比特流。
- 根据权利要求20所述的方法,其中,所述按照所述每个立方体子块的变换顺序,对所 述每个立方体子块的待编码体素点进行RAHT变换,得到每个立方体子块的子体素点之后,且所述根据所述变换顺序,对每个立方体子块的子体素点进行RAHT变换之前,所述方法还包括:根据所述每个立方体子块对应的变换顺序,获取每个立方体子块对应的主投影方向;根据每个立方体子块对应的主投影方向,统计每个坐标分量的主投影方向的数量;对所述每个坐标分量的主投影方向的数量按照从大到小排序,得到所述变换顺序。
- 根据权利要求21所述的方法,其中,所述根据每个立方体子块对应的主投影方向,统计每个坐标分量的主投影方向的数量,包括:从所述每个立方体子块对应的主投影方向中,选出预设比例的子立方体子块对应的主投影方向;根据所述子立方体子块对应的主投影方向,统计所述每个坐标分量的主投影方向的数量。
- 根据权利要求18所述的方法,其中,所述对所述至少一个立方体子块的每个立方体子块中的待编码体素点在三维空间构成的三个坐标面上的三个二维投影面之前,所述方法还包括:将所述待编码点云中的待编码点为中心,构建所述至少一个立方体子块。
- 根据权利要求16所述的方法,其中,所述基于所述投影面积,确定变换顺序,包括:当所述投影面积为Num(xoy)>Num(yoz)>Num(zox)时,确定变换顺序为yxz;当所述投影面积为Num(xoy)>Num(zox)>Num(yoz)时,确定变换顺序为xyz;当所述投影面积为Num(yoz)>Num(xoy)>Num(zox)时,确定变换顺序为yzx;当所述投影面积为Num(yoz)>Num(zox)>Num(xoy)时,确定变换顺序为zyx;当所述投影面积为Num(zox)>Num(yoz)>Num(xoy)时,确定变换顺序为zxy;当所述投影面积为Num(zox)>Num(xoy)>Num(yoz)时,确定变换顺序为xzy。
- 一种逆变换方法,应用于解码中,包括:从属性比特流中,解析出变换顺序;在解码时,基于所述变换顺序,进行区域自适应分层变换RAHT逆变换。
- 一种编码器,包括:确定部分,被配置为确定待编码点云中的待编码点的法向量;获取部分,被配置为基于所述待编码点的法向量,统计法向量各个坐标分量的总和的大小;所述确定部分,还被配置基于所述法向量各个坐标分量的总和的大小,确定变换顺序。
- 一种编码器,包括:确定部分,被配置为确定待编码点云中的待编码点在三维空间构成的三个坐标面上的三个二维投影面;获取部分,被配置为基于所述三个二维投影面,统计每个坐标面的投影面积;所述确定部分,还被配置为基于所述投影面积,确定变换顺序。
- 一种解码器,包括:解析部分,被配置为从属性比特流中,解析出变换顺序;解码部分,被配置为在解码时,基于所述变换顺序,进行区域自适应分层变换RAHT逆变换。
- 一种编码器,包括:第一存储器,用于存储可执行指令;第一处理器,用于执行所述第一存储器中存储的可执行指令时,实现权利要求1至15任一项所述的方法,或者,16至24任一项所述的方法。
- 一种解码器,包括:第二存储器,用于存储可执行指令;第二处理器,用于执行所述第二存储器中存储的可执行指令时,实现权利要求25所述的方法。
- 一种计算机可读存储介质,包括:存储有可执行指令,用于引起第一处理器执行时,实现权利要求1至15任一项所述的方法,或者,16至24任一项所述的方法。
- 一种计算机可读存储介质,包括:存储有可执行指令,用于引起第二处理器执行时,实现权利要求25所述的方法。
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/094105 WO2021000205A1 (zh) | 2019-06-30 | 2019-06-30 | 变换方法、逆变换方法、编码器、解码器及存储介质 |
JP2021578138A JP7330306B2 (ja) | 2019-06-30 | 2019-06-30 | 変換方法、逆変換方法、エンコーダ、デコーダ及び記憶媒体 |
KR1020217043222A KR20220027882A (ko) | 2019-06-30 | 2019-06-30 | 변환 방법, 역변환 방법, 인코더, 디코더 및 저장 매체 |
CN202210083335.9A CN114363634A (zh) | 2019-06-30 | 2019-06-30 | 变换方法、逆变换方法、编码器、解码器及存储介质 |
CN201980096775.4A CN113875254A (zh) | 2019-06-30 | 2019-06-30 | 变换方法、逆变换方法、编码器、解码器及存储介质 |
EP19936282.3A EP3993424A4 (en) | 2019-06-30 | 2019-06-30 | TRANSFORMATION METHOD, INVERSE TRANSFORMATION METHOD, ENCODER, DECODER AND STORAGE MEDIUM |
US17/646,168 US11412259B2 (en) | 2019-06-30 | 2021-12-28 | Transform method, inverse transform method, coder, decoder and storage medium |
US17/807,927 US11843803B2 (en) | 2019-06-30 | 2022-06-21 | Transform method, inverse transform method, coder, decoder and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/094105 WO2021000205A1 (zh) | 2019-06-30 | 2019-06-30 | 变换方法、逆变换方法、编码器、解码器及存储介质 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/646,168 Continuation US11412259B2 (en) | 2019-06-30 | 2021-12-28 | Transform method, inverse transform method, coder, decoder and storage medium |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021000205A1 true WO2021000205A1 (zh) | 2021-01-07 |
Family
ID=74100843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2019/094105 WO2021000205A1 (zh) | 2019-06-30 | 2019-06-30 | 变换方法、逆变换方法、编码器、解码器及存储介质 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11412259B2 (zh) |
EP (1) | EP3993424A4 (zh) |
JP (1) | JP7330306B2 (zh) |
KR (1) | KR20220027882A (zh) |
CN (2) | CN113875254A (zh) |
WO (1) | WO2021000205A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114339215A (zh) * | 2019-07-03 | 2022-04-12 | Oppo广东移动通信有限公司 | 点云编解码方法、编码器、解码器及计算机存储介质 |
JP2022538680A (ja) * | 2019-07-03 | 2022-09-05 | エルジー エレクトロニクス インコーポレイティド | ポイントクラウドデータ送信装置、ポイントクラウドデータ送信方法、ポイントクラウドデータ受信装置及びポイントクラウドデータ受信方法。 |
JP2023508271A (ja) * | 2020-01-07 | 2023-03-02 | エルジー エレクトロニクス インコーポレイティド | ポイントクラウドデータ送信装置、ポイントクラウドデータ送信方法、ポイントクラウドデータ受信装置及びポイントクラウドデータ受信方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021002594A1 (ko) * | 2019-07-04 | 2021-01-07 | 엘지전자 주식회사 | 포인트 클라우드 데이터 처리 장치 및 방법 |
EP4040793A4 (en) * | 2019-09-30 | 2023-01-11 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | TRANSFORMATION METHOD, INVERSE TRANSFORMATION METHOD, ENCODER, DECODER AND STORAGE MEDIUM |
US11741637B2 (en) * | 2020-02-10 | 2023-08-29 | Tencent America LLC | Node-based geometry and attribute coding for a point cloud |
US12062214B2 (en) * | 2021-12-27 | 2024-08-13 | Advanced Micro Devices, Inc. | Systems and method for generating Morton code |
EP4250234A1 (en) * | 2022-03-25 | 2023-09-27 | Beijing Xiaomi Mobile Software Co., Ltd. | Encoding/decoding positions of points of a point cloud emcompassed in a cuboid volume |
WO2023191605A1 (ko) * | 2022-04-01 | 2023-10-05 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
WO2024043659A1 (ko) * | 2022-08-22 | 2024-02-29 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
CN116503409B (zh) * | 2023-06-28 | 2023-09-12 | 矽瞻科技(成都)有限公司 | 一种焊缝缺陷3d点云检测方法、设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170214943A1 (en) * | 2016-01-22 | 2017-07-27 | Mitsubishi Electric Research Laboratories, Inc. | Point Cloud Compression using Prediction and Shape-Adaptive Transforms |
US20170347122A1 (en) * | 2016-05-28 | 2017-11-30 | Microsoft Technology Licensing, Llc | Scalable point cloud compression with transform, and corresponding decompression |
CN108632607A (zh) * | 2018-05-09 | 2018-10-09 | 北京大学深圳研究生院 | 一种基于多角度自适应帧内预测的点云属性压缩方法 |
CN109196559A (zh) * | 2016-05-28 | 2019-01-11 | 微软技术许可有限责任公司 | 动态体素化点云的运动补偿压缩 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9633473B2 (en) | 2012-02-09 | 2017-04-25 | Thomson Licensing | Efficient compression of 3D models based on octree decomposition |
US20170034122A1 (en) * | 2014-04-11 | 2017-02-02 | Nokia Solutions And Networks Management International Gmbh | Multi tenancy in software defined networking |
US10223810B2 (en) | 2016-05-28 | 2019-03-05 | Microsoft Technology Licensing, Llc | Region-adaptive hierarchical transform and entropy coding for point cloud compression, and corresponding decompression |
WO2019103009A1 (ja) | 2017-11-22 | 2019-05-31 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
US11803989B2 (en) * | 2020-01-08 | 2023-10-31 | Qualcomm Incorporated | Quantization for geometry-based point cloud compression |
-
2019
- 2019-06-30 CN CN201980096775.4A patent/CN113875254A/zh active Pending
- 2019-06-30 EP EP19936282.3A patent/EP3993424A4/en active Pending
- 2019-06-30 KR KR1020217043222A patent/KR20220027882A/ko unknown
- 2019-06-30 CN CN202210083335.9A patent/CN114363634A/zh active Pending
- 2019-06-30 WO PCT/CN2019/094105 patent/WO2021000205A1/zh unknown
- 2019-06-30 JP JP2021578138A patent/JP7330306B2/ja active Active
-
2021
- 2021-12-28 US US17/646,168 patent/US11412259B2/en active Active
-
2022
- 2022-06-21 US US17/807,927 patent/US11843803B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170214943A1 (en) * | 2016-01-22 | 2017-07-27 | Mitsubishi Electric Research Laboratories, Inc. | Point Cloud Compression using Prediction and Shape-Adaptive Transforms |
US20170347122A1 (en) * | 2016-05-28 | 2017-11-30 | Microsoft Technology Licensing, Llc | Scalable point cloud compression with transform, and corresponding decompression |
CN109196559A (zh) * | 2016-05-28 | 2019-01-11 | 微软技术许可有限责任公司 | 动态体素化点云的运动补偿压缩 |
CN108632607A (zh) * | 2018-05-09 | 2018-10-09 | 北京大学深圳研究生院 | 一种基于多角度自适应帧内预测的点云属性压缩方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114339215A (zh) * | 2019-07-03 | 2022-04-12 | Oppo广东移动通信有限公司 | 点云编解码方法、编码器、解码器及计算机存储介质 |
JP2022538680A (ja) * | 2019-07-03 | 2022-09-05 | エルジー エレクトロニクス インコーポレイティド | ポイントクラウドデータ送信装置、ポイントクラウドデータ送信方法、ポイントクラウドデータ受信装置及びポイントクラウドデータ受信方法。 |
EP3979638A4 (en) * | 2019-07-03 | 2022-09-21 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | POINT CLOUD ENCODING AND DECODER METHOD, ENCODER, DECODER AND COMPUTER STORAGE MEDIA |
US11509939B2 (en) | 2019-07-03 | 2022-11-22 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Point cloud encoding and decoding method, encoder, and decoder |
JP7307260B2 (ja) | 2019-07-03 | 2023-07-11 | エルジー エレクトロニクス インコーポレイティド | ポイントクラウドデータ送信装置、ポイントクラウドデータ送信方法、ポイントクラウドデータ受信装置及びポイントクラウドデータ受信方法。 |
CN114339215B (zh) * | 2019-07-03 | 2024-10-01 | Oppo广东移动通信有限公司 | 点云编解码方法、编码器、解码器及计算机存储介质 |
JP2023508271A (ja) * | 2020-01-07 | 2023-03-02 | エルジー エレクトロニクス インコーポレイティド | ポイントクラウドデータ送信装置、ポイントクラウドデータ送信方法、ポイントクラウドデータ受信装置及びポイントクラウドデータ受信方法 |
JP7448660B2 (ja) | 2020-01-07 | 2024-03-12 | エルジー エレクトロニクス インコーポレイティド | ポイントクラウドデータ送信装置、ポイントクラウドデータ送信方法、ポイントクラウドデータ受信装置及びポイントクラウドデータ受信方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3993424A1 (en) | 2022-05-04 |
CN114363634A (zh) | 2022-04-15 |
JP7330306B2 (ja) | 2023-08-21 |
US11843803B2 (en) | 2023-12-12 |
JP2022540569A (ja) | 2022-09-16 |
US11412259B2 (en) | 2022-08-09 |
KR20220027882A (ko) | 2022-03-08 |
CN113875254A (zh) | 2021-12-31 |
US20220124371A1 (en) | 2022-04-21 |
EP3993424A4 (en) | 2023-03-01 |
US20220329858A1 (en) | 2022-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021000205A1 (zh) | 变换方法、逆变换方法、编码器、解码器及存储介质 | |
Huang et al. | Octree-Based Progressive Geometry Coding of Point Clouds. | |
WO2021000658A1 (zh) | 点云编解码方法、编码器、解码器及计算机存储介质 | |
CN110996098A (zh) | 处理点云数据的方法和装置 | |
CN109257604A (zh) | 一种基于tmc3点云编码器的颜色属性编码方法 | |
CN110708560A (zh) | 点云数据处理方法和装置 | |
JP2019521417A (ja) | シーンを表す点群を符号化する方法、符号化器システム、及びプログラムを記憶した非一時的コンピューター可読記録媒体 | |
WO2022042538A1 (zh) | 一种基于块的点云几何帧间预测方法和解码方法 | |
WO2021062743A1 (zh) | 占位信息的预测方法、编码器、解码器、及存储介质 | |
US20230048381A1 (en) | Context determination for planar mode in octree-based point cloud coding | |
US20220207781A1 (en) | Transform method, inverse transform method, encoder, decoder and storage medium | |
JP7520223B2 (ja) | 点群階層化方法、デコーダ、エンコーダ及び記憶媒体 | |
CN113284250A (zh) | 一种点云的几何编码方法和解码方法及设备 | |
US20220210471A1 (en) | Prediction method, encoder, decoder, and computer storage medium | |
WO2022120594A1 (zh) | 点云编解码方法、编码器、解码器及计算机存储介质 | |
JP2024050705A (ja) | 属性情報の予測方法、エンコーダ、デコーダ及び記憶媒体 | |
CN113518226A (zh) | 一种基于地面分割的g-pcc点云编码改进方法 | |
Xu et al. | Dynamic point cloud geometry compression via patch-wise polynomial fitting | |
EP4066161A1 (en) | Method and apparatus for point cloud coding | |
WO2021062771A1 (zh) | 颜色分量预测方法、编码器、解码器及计算机存储介质 | |
Wang et al. | Point-voting based point cloud geometry compression | |
WO2021138785A1 (zh) | 划分方法、编码器、解码器及计算机存储介质 | |
WO2021108970A1 (zh) | 点云处理方法、编码器、解码器及存储介质 | |
KR20210152186A (ko) | 인트라 예측을 이용한 포인트 클라우드 데이터 부호화/복호화 방법 및 장치 | |
WO2023231872A1 (zh) | 编码方法、解码方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19936282 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2021578138 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
ENP | Entry into the national phase |
Ref document number: 2019936282 Country of ref document: EP Effective date: 20220131 |