Discrimination method, encoder, decoder, and computer storage medium
The Morton code-based partitioning method for LOD division in G-PCC reduces computational complexity and bit overhead by accurately predicting neighbor nodes, enhancing encoding and decoding efficiency through spatial distribution consideration.
Patent Information
- Application Number
- JP2024100630
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2024-06-21
- Publication Date
- 2025-07-28
- Estimated Expiration
- 2040-01-06
AI Technical Summary
Current methods for LOD division in geometry-based point cloud compression (G-PCC) suffer from high computational complexity and insufficient accuracy in neighbor node prediction, leading to increased bit overhead and decreased encoding efficiency due to the lack of consideration for spatial distribution characteristics of point clouds.
A partitioning method that calculates Morton codes for points in a point cloud, determines the right shift bit number for each LOD layer, and uses these codes to classify nodes into different LOD layers without calculating spatial distances, thereby reducing computational complexity and improving neighbor node prediction accuracy.
This approach reduces computational complexity and bit overhead while enhancing the accuracy of neighbor node prediction, improving the efficiency of encoding and decoding by considering the spatial distribution of point clouds.
Smart Images

Figure 0007714089000013 
Figure 0007714089000014 
Figure 0007714089000015
Abstract
Description
Technical Field
[0001] The embodiments of the present application relate to a technique for dividing the level of detail (LOD) in the field of video encoding and multiplexing technology, and particularly relate to a dividing method, an encoder, a decoder, and a computer storage medium.
Background Art
[0002] In the frame of an encoder for geometry-based point cloud compression (G-PCC), the geometric information of the point cloud and the attribute information corresponding to each point cloud are respectively encoded. After the geometry coding is completed, the geometric information is reconstructed, and the encoding of the attribute information depends on the reconstructed geometric information. The encoding of the attribute information is mainly the encoding of color information. There are mainly two types of conversion methods for the encoding of color information. One method is a lifting conversion that performs LOD division based on distance, and the other method is a region adaptive hierarchical transform (RAHT) that is directly performed. Both of these two methods convert the color information from the spatial domain to the frequency domain, obtain high-frequency coefficients and low-frequency coefficients through the conversion, and finally quantize and encode the coefficients to generate a binary bitstream.
[0003] Currently, when performing LOD division based on distance for a point cloud, on the one hand, the computational complexity is relatively high, and on the other hand, due to the lack of consideration elements, the accuracy of the neighboring nodes obtained by searching is insufficient, the prediction residual is relatively large, the number of encoding bits increases, and the encoding efficiency decreases.
Summary of the Invention
Problems to be Solved by the Invention
[0004] The embodiments of the present application provide a partitioning method, an encoder, a decoder, and a computer storage medium, which can improve the accuracy of the predicted attributes of neighbor nodes, effectively reduce the bit overhead of encoding, and improve the efficiency of encoding and decoding.
Means for Solving the Problems
[0005] The technical solution according to the embodiments of the present application can be realized as follows.
[0006] In a first aspect, the embodiments of the present application provide a partitioning method, which is applied to an encoder or a decoder, and the method includes: Calculating the Morton code of the points in the point cloud waiting to be partitioned based on the point cloud waiting to be partitioned; Determining the right shift bit number N corresponding to the i-th detailed level (LOD) layer in the point cloud waiting to be partitioned, where i is an integer greater than or equal to 0, and N i is an integer greater than 0; i Determining whether i is less than or equal to M-1, where M represents the preset number of layers of LOD partitioning; When i is less than or equal to M-1, for the i-th LOD layer, right-shifting the Morton code of the points in the point cloud waiting to be partitioned by N bits, and storing the right-shifted Morton code in a preset storage area; i Determining the Morton code of the parent node corresponding to the current node in the i-th LOD layer; Searching for the neighbor node corresponding to the parent node in the preset storage area based on the determined Morton code of the parent node; Partitioning the current node into the i-th LOD layer, and partitioning the neighbor node into the (i + 1)-th LOD layer; Updating i based on i + 1, and returning to the determination of whether i is less than or equal to M-1; When i is greater than M - 1, determining the 0th LOD layer to the (M - 1)th LOD layer as the LOD layers classified corresponding to the point cloud waiting for classification.
[0007] In a second aspect, the embodiments of the present application provide an encoder, which includes a first calculation unit, a first determination unit, a first judgment unit, a first right shift unit, a first search unit, and a first classification unit. The first calculation unit is configured to calculate the Morton code of the points in the point cloud waiting for classification based on the point cloud waiting for classification. The first determination unit is configured to determine the number of right shift bits N corresponding to the i-th detailed level (LOD) layer in the point cloud waiting for classification. i where i is an integer greater than or equal to 0, and N i is an integer greater than 0. The first judgment unit is configured to judge whether i is less than or equal to M - 1, where M represents the preset number of LOD classification layers. When i is less than or equal to M - 1, the first right shift unit is configured to right shift the Morton code of the points in the point cloud waiting for classification by N bits for the i-th LOD layer, and store the right-shifted Morton code in a preset storage area. i The first determination unit is further configured to determine the Morton code of the parent node corresponding to the current node in the i-th LOD layer. The first search unit is configured to search for the neighbor node corresponding to the parent node in the preset storage area based on the determined Morton code of the parent node. The first classification unit is configured to classify the current node into the i-th LOD layer and classify the neighbor node into the (i + 1)-th LOD layer. The first judgment unit is further configured to update i based on i + 1 and return to the judgment of whether i is less than or equal to M - 1. When i is greater than M - 1, the first decision unit is further configured to determine the 0th LOD layer to the (M - 1)th LOD layer as the LOD layers classified corresponding to the point cloud waiting for classification.
[0008] In a third aspect, an embodiment of the present application provides an encoder, comprising a first memory and a first processor. The first memory is used to store a computer program executable by the first processor. When executing the computer program, the first processor is used to execute the method described in the first aspect.
[0009] In a fourth aspect, an embodiment of the present application provides a decoder, comprising a second calculation unit, a second decision unit, a second judgment unit, a second right shift unit, a second search unit, and a second classification unit. The second calculation unit is configured to calculate the Morton code of the points in the point cloud waiting for classification based on the point cloud waiting for classification. The second decision unit is configured to determine the number of right shift bits N corresponding to the i-th detailed level (LOD) layer in the point cloud waiting for classification. i where i is an integer greater than or equal to 0, and N i is an integer greater than 0. The second judgment unit is configured to judge whether i is less than or equal to M - 1, where M represents the preset number of LOD classification layers. When i is less than or equal to M - 1, the second right shift unit is configured to right shift the Morton code of the points in the point cloud waiting for classification by N i bits for the i-th LOD layer and store the right-shifted Morton code in a preset storage area. The second decision unit is further configured to determine the Morton code of the parent node corresponding to the current node in the i-th LOD layer. The second search unit is configured to search for neighbor nodes corresponding to the parent node in the preset storage area based on the Morton code of the determined parent node. The second partitioning unit is configured to partition the current node into the i-th LOD layer and partition the neighbor node into the (i + 1)-th LOD layer. The second determination unit is further configured to update i based on i + 1 and return to the determination of whether i is less than or equal to M - 1. The second determination unit is further configured to, when i is greater than M - 1, determine the 0-th LOD layer to the (M - 1)-th LOD layer as the LOD layers partitioned corresponding to the point cloud waiting to be partitioned.
[0010] In a fifth aspect, an embodiment of the present application provides a decoder, comprising a second memory and a second processor. The second memory is used to store a computer program executable by the second processor. The second processor is used to execute the method described in the first aspect when executing the computer program.
[0011] In a sixth aspect, an embodiment of the present application provides a computer storage medium, in which a computer program is stored. When the computer program is executed by a first processor, the method described in the first aspect is realized, or when the computer program is executed by a second processor, the method described in the first aspect is realized.
Advantages of the Invention
[0012] Embodiments of the present application provide a partitioning method, an encoder, a decoder, and a computer storage medium. Based on the point cloud waiting to be partitioned, calculating the Morton code of the points in the point cloud waiting to be partitioned, and the right shift bit number N corresponding to the i-th level of detail (LOD) layer in the point cloud waiting to be partitioned, where i is an integer greater than or equal to 0, and N i is determined, and i is an integer greater than or equal to 0, and N iis an integer greater than 0, determine whether i is less than or equal to M - 1, where M indicates the preset number of layers in the LOD division, and if i is less than or equal to M - 1, for the i-th LOD layer, shift the Morton code of the points in the point cloud waiting for division to the right by N i bits, store the shifted Morton code to the preset storage area, determine the Morton code of the parent node corresponding to the current node in the i-th LOD layer, search for the neighbor node corresponding to the parent node in the preset storage area based on the determined Morton code of the parent node, classify the current node into the i-th LOD layer and the neighbor node into the (i + 1)-th LOD layer, update i based on i + 1, and return to the determination of whether i is less than or equal to M - 1. If i is greater than M - 1, determine the 0-th LOD layer to the (M - 1)-th LOD layer as the LOD layers divided corresponding to the point cloud waiting for division. In this way, the technical solution of the present application does not calculate the spatial distance between the current node and the neighbor node. Each time the LOD layer is divided, the Morton code is used to search for the neighbor node of the parent node corresponding to the current node, and the neighbor node is predicted with the current node as the sampling point. Thereby, not only the computational complexity is reduced, but also considering the spatial distribution characteristics of the point cloud, the accuracy of the predicted attributes of the neighbor node is improved, the reconstruction quality of the attribute part is improved, the bit overhead of encoding is effectively reduced, and the efficiency of encoding and decoding can be improved.
Brief Description of the Drawings
[0013]
Figure 1
Figure 2
Figure 3A
Figure 3B
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Embodiments for Carrying out the Invention
[0014] To understand the features and technical content of the embodiments of the present application in more detail, hereinafter, with reference to the drawings, the realization of the embodiments of the present application will be described in detail. The accompanying drawings are for reference and explanation purposes and are not intended to limit the embodiments of the present application.
[0015] In the frame of the point cloud G-PCC encoder, after performing slice segmentation on the point cloud input into the three-dimensional image model, independent encoding is performed on each slice.
[0016] Referring to FIG. 1, FIG. 1 shows a flow block diagram of G-PCC encoding according to the related art. The flow block diagram of G-PCC encoding shown in FIG. 1 is applied to a point cloud encoder. For the point cloud data waiting to be encoded, first, the point cloud data is divided into a plurality of slices by slice division. In each slice, the geometric information of the point cloud and the attribute information corresponding to each point cloud are encoded respectively. In the geometric encoding process, first, coordinate transformation is performed on the geometric information to include all the point clouds in one bounding box, and then quantization is performed. This quantization step mainly plays a role in scaling. Due to quantization rounding, the geometric information of some point clouds is the same, so it is determined whether to remove duplicate points based on the parameters. The process of quantization and removal of duplicate points is also called the voxelization process. Next, octree division is performed on the bounding box. In the encoding flow of geometric information based on the octree, the bounding box is evenly divided into 8 sub-cubes, and the non-empty sub-cubes (including points in the point cloud) are subsequently divided into 8 equal parts. When the leaf node obtained by division is a 1×1×1 unit cube, the division stops. Arithmetic coding is performed on the points in the leaf node to generate a binary geometric bitstream, that is, a geometric bitstream. In the process of encoding geometric information based on triangle soup (trisoup), it is also necessary to perform octree division first. Different from the encoding of geometric information based on the octree, the trisoup does not need to divide the point cloud into unit cubes with a side length of 1×1×1 for each level. It divides until the side length of the block (sub-block) becomes W, and then stops the division. Based on the surface formed by the distribution of the point cloud in each block, at most 12 vertices composed of the surface and the 12 sides of the block are obtained, and arithmetic coding is performed on the vertices (surface fitting is performed based on the vertices) to generate a binary geometric bitstream, that is, a geometric bitstream.Vertices are also used in the realization process of geometric reconstruction, and the reconstructed set information is used in the encoding of the attributes of the point cloud.
[0017] After the geometric encoding is performed, the geometric information is reconstructed. Currently, the attribute encoding is mainly performed on color information. In the process of attribute encoding, first, the color information (i.e., attribute information) is converted from the RGB color space to the YUV color space. Then, using the reconstructed geometric information, the point cloud is recolored to associate the unencoded attribute information with the reconstructed geometric information. In the process of color information encoding, there are mainly two conversion methods. One method is a distance-based lifting conversion that is segmented depending on the level of detail (LOD). The current LOD segmentation is mainly divided into two methods: distance-based LOD segmentation (mainly for Category1 sequences) and fixed sampling rate-based LOD segmentation (mainly for Category3 sequences). The other method is a conversion that directly performs a region adaptive hierarchical transform (RAHT). Here, both of these methods convert the color information from the spatial domain to the frequency domain, obtain high-frequency coefficients and low-frequency coefficients through the conversion, and finally quantize the coefficients (i.e., quantization coefficients). Finally, after performing slice synthesis on the geometric encoding data through octree segmentation and surface fitting and the attribute encoding data through quantization coefficient processing, the vertex coordinates of each block are encoded in order (i.e., arithmetic encoding) to generate a binary attribute bitstream, that is, an attribute bitstream.
[0018] Referring to FIG. 2, FIG. 2 shows a flow block diagram of G-PCC decoding according to the related art. The flow block diagram of G-PCC decoding shown in FIG. 2 is applied to a point cloud decoder. For the acquired binary bitstream, first, independent decoding is performed on the geometric bitstream and the attribute bitstream in the binary bitstream respectively. In the decoding of the geometric bitstream, through arithmetic decoding - octree synthesis - surface fitting - geometric reconstruction - inverse coordinate transformation, the geometric information of the point cloud is obtained. In the decoding of the attribute bitstream, through arithmetic decoding - inverse quantization - inverse lifting based on LOD or inverse transformation based on RAHT - inverse color transformation, the attribute information of the point cloud is obtained. Based on the geometric information and the attribute information, a three-dimensional image model of the point cloud data waiting for encoding is restored.
[0019] In the flow block diagram of G-PCC encoding shown in FIG. 1, the LOD division is mainly used in two ways: Predicting and lifting in the point cloud attribute transformation. Hereinafter, the LOD division based on distance will be described in detail.
[0020] JPEG0007714089000001.jpg43147
[0021] The process of LOD division is performed after the geometric reconstruction of the point cloud. At this time, the geometric coordinate information of the point cloud can be directly obtained. The process of LOD division can be applied to both the point cloud encoder and the point cloud decoder at the same time. The specific process is as follows.
[0022] (1) Place all points in the point cloud into the set of points that "will not be accessed", and initialize the set of points that "may be accessed" (denoted by V) to an empty set.
[0023] JPEG0007714089000002.jpg17147
[0024] JPEG0007714089000003.jpg49147
[0025] JPEG0007714089000004.jpg14147
[0026] (4) Repeat the processes of (1) to (3) continuously by iteration until all LOD layers are generated or all points are traversed.
[0027] Referring to FIG. 3A, FIG. 3A shows a structural schematic diagram of the LOD generation process according to the related art solution.
[0028] In FIG. 3A, the point cloud includes 10 points P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, and LOD classification is performed based on the distance threshold. In this way, the LOD0 set includes P0, P5, P4, P2 in sequence, the LOD1 set includes P0, P5, P4, P2, P1, P6, P3 in sequence, and the LOD2 set includes P0, P5, P4, P2, P1, P6, P3, P9, P8, P7 in sequence.
[0029] In the related art solution, a technical solution for performing LOD classification based on the Morton code has been proposed. Compared with the technical solution of originally traversing and searching all points to perform LOD classification, the technical solution for performing LOD classification based on the Morton code can reduce the computational complexity.
[0030] JPEG0007714089000005.jpg35147
[0031] JPEG0007714089000006.jpg43147
[0032] JPEG0007714089000007.jpg38147
[0033] Furthermore, D0 (the threshold of the initial distance) and ρ (the distance threshold ratio for adjacent LOD layer divisions) are initial parameters customized by the user, and ρ > 1. Assuming I represents the indices of all points, at the k-th iteration, the points in LODk search for the nearest neighbor, i.e., the point with the closest distance, from LOD0 to LODk-1 layers, where k = 1, 2,..., N - 1. Here, N is the total number of LOD divisions. When k = 0, at the 0-th iteration, the points in LOD0 directly search for the nearest neighbor from LOD0. The specific process is as follows.
[0034] JPEG0007714089000008.jpg8147
[0035] (2) At the k-th iteration, the set L(k) stores the points belonging to the k-th layer of LOD, and the set O(k) stores the set of points with a higher level of detail than the LODk layer. Here, the calculation processes of L(k) and O(k) are as follows.
[0036] First, both O(k) and L(k) are initialized as empty sets.
[0037] JPEG0007714089000009.jpg53147
[0038] (3) In the process of each iteration, the sets L(k) and O(k) are calculated respectively, and the points in O(k) are used for predicting the points in L(k). Assuming the set R(k) = L(k) / L(k - 1), that is, R(k) represents the set of points in the difference part between the LOD(k - 1) and LOD(k) sets, for the points located in the set R(k), search for the h nearest predicted neighbors from the set O(k) (generally, h can be set to 3). The specific process of searching for the nearest neighbor is as follows.
[0039] a. For the point Pi in the set R(k), the corresponding Morton code for this point is Mi. b. Search for the index j of the first point in the set O(k) that is larger than the Morton code Mi corresponding to the current point Pi. c. Based on the index j, search for the nearest neighbor of the current point Pi within a search range [j - SR2, j + SR2] in the set O(k) (where SR2 represents a search range, and the value is generally 8, 16, 32, or 64).
[0040] (4) Repeat the processes (1) to (3) iteratively until all the points in the set I have been traversed.
[0041] Referring to FIG. 3B, FIG. 3B shows a structural schematic diagram of another LOD generation process according to the related art. In FIG. 3B, the point cloud includes 10 points P0, P1, P2, P3, P4, P5, P6, P7, P8, P9. LOD classification is performed based on the Morton code. First, they are arranged in ascending order of the Morton code, and the order of these 10 points is P4, P1, P9, P5, P0, P6, P8, P2, P7, P3. Next, the nearest neighbor is searched. In this way, the LOD0 set still contains P0, P5, P4, P2 in order, the LOD1 set still contains P0, P5, P4, P2, P1, P6, P3 in order, and the LOD2 set still contains P0, P5, P4, P2, P1, P6, P3, P9, P8, P7 in order.
[0042] However, in the current solution, before the point cloud attribute conversion Predicting and lifting, LOD classification is first performed based on different distance thresholds. Specifically, the current LOD classification calculates the distance between all points each time. If the distance between the point and all points is smaller than the distance threshold, the point may be added to the current LOD layer; otherwise, the point is placed in the next layer for LOD classification, and iterations are continuously performed according to different threshold ranges until all points are traversed or the classification of all LOD layers is completed, which increases the computational complexity. In addition, since different point clouds have different spatial distributions, the object densities of different point clouds are different. When performing LOD classification based on the distance threshold, the spatial distribution characteristics of the point cloud are not considered, the accuracy of the searched neighbor nodes is insufficient, the prediction residuals finally obtained by predicting based on the neighbor nodes are relatively large, there is still relatively large redundancy in the attribute information, the number of encoded bits increases, and the achievement of the optimal encoding / decoding efficiency cannot be ensured.
[0043] The embodiments of the present application provide a classification method, which may be applied to an encoder (which may also be referred to as a point cloud encoder) or a decoder (which may also be referred to as a point cloud decoder). Based on the point cloud to be classified, calculate the Morton code of the points in the point cloud to be classified, and determine the right shift bit number N corresponding to the i-th detailed level (LOD) layer in the point cloud to be classified. i where i is an integer greater than or equal to 0, and N i is an integer greater than 0, determine whether i is less than or equal to M - 1, where M represents the preset number of layers for LOD classification. If i is less than or equal to M - 1, for the i-th LOD layer, shift the Morton code of the points in the point cloud to be classified to the right by N iBit-shift and store the Morton code shifted to the right in the preset memory area, determine the Morton code of the parent node corresponding to the current node in the i-th LOD layer, search for the neighbor node corresponding to the parent node in the preset memory area based on the determined Morton code of the parent node, classify the current node into the i-th LOD layer and classify the neighbor node into the i+1-th LOD layer, update i based on i+1, and return to the determination of whether i is less than or equal to M-1. When i is greater than M-1, determine the 0-th LOD layer to the M-1-th LOD layer as the LOD layers classified corresponding to the point cloud waiting to be classified. By doing so, the technical solution of the present application does not calculate the spatial distance between the current node and the neighbor node. Each time the LOD layer is classified, the Morton code is used to search for the neighbor node of the parent node corresponding to the current node, and the neighbor node is predicted with the current node as the sampling point. Thereby, not only the computational complexity is reduced, but also considering the spatial distribution characteristics of the point cloud, the accuracy of the predicted attributes of the neighbor node is improved, the reconstruction quality of the attribute part is improved, the bit overhead of encoding is effectively reduced, and the encoding / decoding efficiency can be improved.
[0044] Hereinafter, each embodiment of the present application will be described in detail with reference to the drawings.
[0045] Referring to FIG. 4, FIG. 4 shows a flow schematic diagram of the classification method according to an embodiment of the present application. As shown in FIG. 4, when applied to an encoder or a decoder, the method may include the following steps S401 to S409.
[0046] In step S401, based on the point cloud waiting to be classified, calculate the Morton code of the points in the point cloud waiting to be classified.
[0047] In addition, in the point cloud, the points may be all the points in the point cloud or some of the points in the point cloud, and these points are relatively concentrated in space.
[0048] Furthermore, as described in more detail, the classification method according to the embodiments of the present application improves the generation process of LOD in lifting and Predicting attribute conversion. That is, before performing lifting or Predicting conversion, it is necessary to first perform LOD layer classification using the classification method. Specifically, the classification method may be applied to the LOD generation part in the flow block diagram of G-PCC encoding shown in FIG. 1, may be applied to the LOD generation part in the flow block diagram of G-PCC decoding shown in FIG. 2, and may also be simultaneously applied to the LOD generation part in the flow block diagram of G-PCC encoding shown in FIG. 1 and the LOD generation part in the flow block diagram of G-PCC decoding shown in FIG. 2. The embodiments of the present application are not specifically limited.
[0049] Thus, after obtaining the point cloud waiting to be classified, first calculate the Morton code of the points in the point cloud waiting to be classified, so that the neighbor nodes of the parent node corresponding to the current node can be searched using the Morton code in subsequent iterative operations. Thereby, when performing LOD layer classification, it contributes to predicting neighbor nodes using the current node as a sampling point.
[0050] In step S402, determine the right shift bit number N i corresponding to the i-th LOD layer in the point cloud waiting to be classified.
[0051] Note that i is an integer greater than or equal to 0, and N iis an integer greater than 0. To divide the point cloud waiting to be divided into multiple LOD layers, an iteration method is used here for division. The number of LOD division layers for the point cloud waiting to be divided may be set in advance. Generally, the preset number of LOD division layers may be represented by M, and M is an integer greater than 0.
[0052] Thus, after determining the Morton code of the points in the point cloud waiting to be divided, the Morton code of the points in the point cloud waiting to be divided can be sorted, and the right shift bit number corresponding to each LOD layer can be determined. Therefore, in some embodiments, the method further sorting the Morton code of the points in the point cloud waiting to be divided according to a preset sorting policy, and determining the sorted Morton code as the Morton code of the points in the point cloud waiting to be divided may be included.
[0053] Note that the preset sorting policy may be an ascending order policy in ascending order, a descending order policy in descending order, or even another sorting policy (such as a random sorting policy, etc.). Preferably, the preset sorting policy is an ascending order policy. That is, the Morton code of the points in the point cloud waiting to be divided is sorted in ascending order in ascending order, and the sorted Morton code is determined as the Morton code of the points in the point cloud waiting to be divided.
[0054] Thus, after sorting the Morton code, based on the sorted Morton code, the initial right shift bit number of the Morton code of the points in the point cloud waiting to be divided can be determined. Here, the initial right shift bit number indicates the right shift bit number (which may also be represented by N0) corresponding to the 0th LOD layer of the Morton code of the points in the point cloud waiting to be divided. Specifically, in some embodiments, when i is equal to 0, for step S402, the right shift bit number N corresponding to the i-th LOD layer in the point cloud waiting to be dividedi Determining sampling the sorted Morton codes to obtain the Morton codes of K sampling points, where K is an integer greater than 0, performing a right shift operation on the Morton codes of the K sampling points to obtain K sampling points corresponding to the right-shifted Morton codes, determining whether the K sampling points corresponding to the right-shifted Morton codes correspond to at least one neighbor node per sampling point, when the K sampling points corresponding to the right-shifted Morton codes do not correspond to at least one neighbor node per sampling point, continuously executing the step of performing a right shift operation on the Morton codes of the K sampling points, when the K sampling points corresponding to the right-shifted Morton codes correspond to at least one neighbor node per sampling point, obtaining the number of right shift bits of the K sampling points, determining the number of right shift bits as the initial right shift bit number of the Morton codes of the points in the point cloud waiting for classification, and the initial right shift bit number indicating the corresponding right shift bit number N0 in the 0th LOD layer of the Morton codes of the points in the point cloud waiting for classification. It may also include.
[0055] That is, when initially dividing the LOD layers, i.e., dividing the 0th LOD layer, first sample the sorted Morton codes to obtain the Morton codes of K sampling points. Then, continuously perform a right shift operation on the Morton codes of these K sampling points until the K sampling points corresponding to the right-shifted Morton codes each correspond to at least one neighbor node per sampling point. Finally, set the obtained number of right shift bits as the initial right shift bit number N0. Specifically, for the process of obtaining the initial right shift bit number N0, as shown in FIG. 5, it may include the following steps S501 to S506.
[0056] In step S501, sample the sorted Morton codes to obtain the Morton codes of K sampling points.
[0057] In step S502, n = 0.
[0058] In step S503, n = n + 3.
[0059] In step S504, perform a right shift operation of n bits on the Morton codes of the K sampling points.
[0060] In step S505, determine whether the number of neighbor nodes corresponding to each sampling point is greater than 1.
[0061] In step S506, N0 = n.
[0062] Note that n is a preset variable, and its initial value is set to 0. Then, in order to execute the subsequent step S504, that is, to perform a right shift operation of n bits on the Morton codes of the K sampling points, the value of n is updated by n + 3 each time.
[0063] Also, for step S505, if the judgment result is "Yes", step S506 is executed, that is, the initial right shift bit number N0 can be obtained. If the judgment result is "No", it is necessary to return to step S503 and execute it until the judgment result of step S505 becomes "Yes", thereby finally obtaining the initial right shift bit number N0.
[0064] Furthermore, as will be further described, K is an integer greater than 0. For example, the value of K may be set to 100, but the embodiments of the present application do not specifically limit it. That is, in the process of determining the initial right shift bit number N0, the value of K is generally set randomly. However, the method of obtaining the value of K may further include performing characteristic analysis on the point cloud of the partition wait and determining the value of K.
[0065] Here, the value of K is generally related to the characteristic information of the point cloud of the partition wait, such as the number of points, spatial density, etc. in the point cloud of the partition wait. In this way, by performing characteristic analysis on the point cloud of the partition wait, the value of K can be determined, and further the initial right shift bit number N0 can be determined. Since the value of K is obtained by combining the characteristics of the entire point cloud of the partition wait, the efficiency of encoding and decoding can be improved.
[0066] As can be understood, after sorting the Morton code, the initial right shift bit number N0 can be determined by continuously performing right shift processing based on the difference value between the maximum Morton code and the minimum Morton code. Specifically, in some embodiments, when i is equal to 0, for step S402, determining the right shift bit number N i corresponding to the i-th LOD layer in the point cloud of the partition wait is determining the maximum Morton code and the minimum Morton code based on the sorted Morton code, and calculating the difference value between the maximum Morton code and the minimum Morton code, and Perform a right shift operation on the difference value. When the right-shifted difference value satisfies the preset range, obtain the number of right shift bits of the difference value. It may include determining the number of right shift bits as the initial right shift bit number of the point cloud waiting for classification.
[0067] Note that since the Morton code is sorted in ascending order of low order, based on the sorted Morton code, the maximum Morton code and the minimum Morton code can be determined, and the difference value (which may be indicated by delta) between the maximum Morton code and the minimum Morton code can be calculated.
[0068] Shift the delta bits to the right. After shifting the delta bits N bits to the right, obtain the shifted delta. Thereby, when the shifted delta satisfies the preset range, N can be determined as the initial right shift bit number N0. Shifting the delta bits N bits to the right may be regarded as shifting the maximum Morton code bits N bits to the right, shifting the minimum Morton code bits N bits to the right, and then calculating the difference value between the two, and considering the obtained difference value, that is, shifting the delta bits N bits to the right.
[0069] To explain further, the preset range indicates whether the number of neighboring nodes corresponding to each sampling point is greater than 1. In this way, when the difference value shifted N bits to the right satisfies the preset range, the right shift bit number N at this time can be determined as the initial right shift bit number N0, thereby improving the efficiency of encoding and decoding.
[0070] Furthermore, after determining the initial right shift bit number N0, that is, determining the right shift bit number corresponding to the 0th LOD layer in the point cloud waiting for classification, based on the initial right shift bit number N0, the right shift bit number N corresponding to the ith LOD layer in the point cloud waiting for classification iIt may be determined. Here, i is not equal to 0. Specifically, in some embodiments, when i is equal to 0, for step S402, the right shift bit number N corresponding to the i-th LOD layer in the segmented waiting point cloud i determining using the first preset calculation model to determine the right shift bit number N corresponding to the i-th LOD layer in the segmented waiting point cloud i may include.
[0071] Furthermore, in some embodiments, using the first preset calculation model to determine the right shift bit number N corresponding to the i-th LOD layer in the segmented waiting point cloud i determining obtaining the right shift bit number N corresponding to the i-1-th LOD layer i-1 and adding the preset value to the right shift bit number N corresponding to the i-1-th LOD layer to obtain an added value i-1 and determining the added value as the right shift bit number N corresponding to the i-th LOD layer i may include.
[0072] That is, when segmenting subsequent LOD layers, the right shift bit number corresponding to the i-th LOD layer is determined based on the right shift bit number corresponding to the previous LOD layer (i.e., the i-1-th LOD layer). Here, the first preset calculation model is as follows.
[0073] JPEG0007714089000010.jpg34146
[0074] Note that the preset value may be specifically set based on the actual point cloud space information. Preferably, the preset value may be equal to 3. The embodiments of the present application are not limited.
[0075] Furthermore, in some embodiments, the method further includes Characteristic analysis may be performed on the point cloud waiting to be classified to determine the preset value.
[0076] Here, the preset value is generally related to the characteristic information of the point cloud waiting to be classified, such as the number of points, spatial density, etc. in the point cloud waiting to be classified. In this way, characteristic analysis can be performed on the point cloud waiting to be classified to determine the preset value. The preset values corresponding to each LOD layer may be the same or different. For example, based on the characteristics of the point cloud waiting to be classified, the corresponding preset values during the calculation of the right shift bit number of different LOD layers can be adaptively adjusted, so as to more accurately search for adjacent regions corresponding to different regions and further improve the prediction performance.
[0077] In this way, after determining the right shift bit number corresponding to each LOD layer, a right shift process can be performed based on the right shift bit number corresponding to each LOD layer to execute the classification of each LOD layer.
[0078] In step S403, it is determined whether i is less than or equal to M - 1.
[0079] Note that M represents the preset number of layers for LOD classification, where M is an integer greater than 0. When i is less than or equal to M - 1, since it is necessary to perform classification on each LOD layer, steps S404 to S408 are executed. When i is greater than M - 1, since the classification for each LOD has already been completed, step S409 is executed.
[0080] In step S404, when i is less than or equal to M - 1, for the i-th LOD layer, the Morton code of the points in the point cloud waiting to be classified is right-shifted by N i bit shifts, and the right-shifted Morton code is stored in the preset storage area.
[0081] In step S405, determine the Morton code of the parent node corresponding to the current node in the i-th LOD layer.
[0082] In step S406, based on the determined Morton code of the parent node, search for the neighbor node corresponding to the parent node in the preset storage area.
[0083] In step S407, classify the current node into the i-th LOD layer and classify the neighbor node into the i+1-th LOD layer.
[0084] Note that the preset storage area may be indicated by inputMorton. Mainly, before the classification of each LOD layer, after performing a right shift process on the Morton code of the points in the point cloud waiting for classification, store it in inputMorton, which contributes to the search for the corresponding neighbor node by the subsequent Morton code.
[0085] Furthermore, as will be further explained, before searching for the corresponding neighbor node by the Morton code, it is necessary to first determine the Morton code of the parent node corresponding to the current node in the i-th LOD layer. Specifically, in some embodiments, for step S405, determining the Morton code of the parent node corresponding to the current node in the i-th LOD layer may include the number of right shift bits N corresponding to the i-th LOD layer i performing a right shift process on the Morton code of the current node in the i-th LOD layer based on it, and determining the right-shifted Morton code as the Morton code of the parent node corresponding to the current node in the i-th LOD layer.
[0086] Here, the Morton code of the current node is indicated by childrenMorton, and the Morton code of the parent node is indicated by parentMorton. Then, the correspondence between the two is shown as follows.
[0087] JPEG0007714089000011.jpg9147
[0088] That is, based on the number of right shift bits N corresponding to the i-th LOD layer, the Morton code (indicated by childrenMorton) of the current node in the i-th LOD layer is right-shifted by N i bits, and then, the right-shifted Morton code may be determined as the Morton code (indicated by parentMorton) of the parent node corresponding to the current node in the i-th LOD layer. i
[0089] Furthermore, after determining the Morton code of the parent node corresponding to the current node, a neighbor node corresponding to the parent node may be searched based on the Morton code of the parent node. Specifically, in some embodiments, for step S406, searching for a neighbor node corresponding to the parent node in the preset storage area based on the determined Morton code of the parent node may include determining the Morton code of the neighbor node corresponding to the parent node based on the determined Morton code of the parent node, and searching for a neighbor node corresponding to the Morton code of the neighbor node in the preset storage area based on the Morton code of the neighbor node.
[0090] Furthermore, determining the Morton code of the neighbor node corresponding to the parent node based on the determined Morton code of the parent node may include calculating the Morton codes of all neighbor nodes that are on the same plane as, on the same straight line as, and at the same point as the parent node based on the determined Morton code of the parent node, and obtaining the Morton codes of the first number of neighbor nodes, and comparing the Morton codes of the first number of neighbor nodes with the Morton code of the current node respectively. If the Morton code of the neighbor node is smaller than the Morton code of the current node, discard the Morton code of the neighbor node, and If the Morton code of the neighbor node is greater than or equal to the Morton code of the current node, retain the Morton code of the neighbor node, obtain the Morton codes of the second number of neighbor nodes, and the second number is less than or equal to the first number, and determine the Morton codes of the second number of neighbor nodes as the Morton codes of the neighbor nodes corresponding to the parent node.
[0091] Note that after determining the Morton code of the parent node, it is also possible to calculate the Morton codes of those that are on the same plane as the parent node (a total of 6 neighbor nodes), on the same straight line (a total of 12 neighbor nodes), and at the same point (a total of 8 neighbor nodes). By adding the Morton code of the parent node itself, it is possible to obtain the Morton codes of a total of the first number (for example, 27) of neighbor nodes. Since the division of the LOD layer is performed in ascending order of the Morton code, at this time, the 27 neighbor nodes may be reduced to the second number (for example, 20) of neighbor nodes. Specifically, compare the Morton codes of the 27 neighbor nodes with the Morton code of the current node respectively. If the Morton code of the neighbor node is smaller than the Morton code of the current node, the Morton code of the neighbor node may be discarded. For example, if the Morton codes of 7 neighbor nodes are smaller than the Morton code of the current node, then excluding the Morton codes of these 7 neighbor nodes, the Morton codes of the remaining 20 neighbor nodes are greater than or equal to the Morton code of the current node, that is, only the Morton codes of these remaining 20 neighbor nodes are retained. Here, the remaining 20 neighbor nodes may include the parent node corresponding to the current node, neighbor nodes on the same plane (3 neighbor nodes), neighbor nodes on the same straight line (9 neighbor nodes), and neighbor nodes at the same point (7 neighbor nodes).
[0092] Exemplarily, referring to FIG. 6, FIG. 6 shows a schematic diagram of the spatial relationship between the current node and neighboring nodes according to an embodiment of the present application. In FIG. 6, the spatial block marked with a thick mark is the current node. As can be seen from FIG. 6, there are six neighboring nodes on the same plane as the spatial block, twelve neighboring nodes on the same straight line as the spatial block, and eight neighboring nodes at the same point as the spatial block. Thus, based on the determined Morton code of the parent node, the Morton code of the neighboring nodes corresponding to the parent node can be determined, and by using the Morton code of the neighboring nodes, the corresponding neighboring nodes can be searched in the preset storage area (inputMorton).
[0093] Thus, after searching for and obtaining neighboring nodes for the i-th LOD layer, the current node can be divided into the i-th LOD layer, that is, placed in the set O(k), and the neighboring nodes can be divided into the (i + 1)-th LOD layer, that is, placed in the set L(k). Here, k is an integer greater than or equal to 0. Thereby, the division for the i-th LOD layer can be realized.
[0094] Furthermore, in order to improve the effect of the predicted attributes of neighboring nodes, the mass center of the adjacent region can be calculated, and the neighboring nodes can be predicted by taking the point closest to the mass center as the target node. Therefore, in some embodiments, after obtaining the Morton codes of the first quantity of neighboring nodes, the method further includes determining an adjacent region corresponding to the current node in the i-th LOD layer based on the point cloud waiting to be divided; calculating the mass center of the adjacent region, and selecting, from the current node and the first quantity of neighboring nodes, the node closest to the mass center as the target node; dividing the target node into the i-th LOD layer and dividing the remaining nodes into the (i + 1)-th LOD layer.
[0095] Note that the remaining nodes indicate the nodes other than the target node among the current node and the first number of neighbor nodes. In this way, based on the neighbor nodes of the parent node corresponding to the current node, the adjacent region corresponding to the current node in the i-th LOD layer is determined, and then the centroid of the adjacent region is calculated, and the node closest to the centroid can be selected as the target node from the current node and the first number of neighbor nodes. Then, the target nodes are classified into the i-th LOD layer, and the remaining nodes are classified into the (i + 1)-th LOD layer, and the classification for the i-th LOD layer can also be realized.
[0096] Furthermore, as described in more detail, after determining the adjacent region corresponding to the current node in the i-th LOD layer based on the neighbor nodes of the parent node corresponding to the current node, the adjacent region can be further divided into different spatial regions, and the corresponding points selected from the different spatial regions can be used as the target nodes. Then, the target nodes are classified into the i-th LOD layer, and the remaining nodes are classified into the (i + 1)-th LOD layer, and the classification for the i-th LOD layer can also be realized. At the same time, since further spatial division is performed on the adjacent region, the prediction performance can be further improved.
[0097] In step S408, i is updated based on i + 1, and the process returns to the determination of whether i is less than or equal to M - 1.
[0098] In step S409, when i is greater than M - 1, the 0-th LOD layer to the (M - 1)-th LOD layer are determined as the LOD layers corresponding to the point cloud waiting to be classified.
[0099] Note that after the classification for the i-th LOD layer, the value of i is updated using i = i + 1, and then the process returns to the execution of step S403, that is, to determine whether i is less than or equal to M - 1. Until the classification for the (M - 1)-th LOD layer is completed, that is, when i is equal to M, it indicates that the classification of the LOD layers of the point cloud waiting to be classified has been completed. At this time, the 0-th LOD layer to the (M - 1)-th LOD layer may be determined as the LOD layers corresponding to the point cloud waiting to be classified.
[0100] As will be further described, after performing a right shift operation on the Morton code of the points in the point cloud waiting to be classified, different sets can be obtained. That is, the points in the point cloud waiting to be classified are clustered, and the points in adjacent regions in space (i.e., where the space is relatively concentrated) are classified into the same set. Then, LOD layer classification is performed on each set. Specifically, in some embodiments, the method further performs a right shift operation on the Morton code of the points in the point cloud waiting to be classified to obtain a plurality of sets, each set including a partial point cloud waiting to be classified among the point clouds waiting to be classified, and performing, for each set among the plurality of sets, a step of performing LOD layer classification on a partial point cloud waiting to be classified included in each set, respectively, may be included.
[0101] That is, by adjusting the number of right shift bits of the Morton code of the points in the point cloud waiting to be classified, the point cloud waiting to be classified is divided into a plurality of sets, and each set includes a partial point cloud waiting to be classified in the point cloud waiting to be classified, that is, includes some points. For each set, the classification method of the embodiments of the present application is also used to search for the neighbor nodes of the parent node corresponding to the current node based on the Morton code. This classification method classifies the point clouds in adjacent regions in space into the same set, and can further improve the prediction performance.
[0102] In an embodiment of the present application, the LOD layer may be segmented using a method of searching for neighbor nodes based on Morton codes. Specifically, whether it is a method of searching for neighbor nodes of the parent node corresponding to the current node using the Morton code of the current node, that is, predicting neighbor nodes with the current node as a sampling point, or using the Morton code of the current node to segment adjacent regions in the point cloud space, that is, segmenting parts of the point cloud space that are close in space to obtain different sets (or clusterings), both can improve the effect of attribute prediction based on neighbor nodes, thereby improving the encoding efficiency.
[0103] That is, by searching for neighbor nodes of the parent node corresponding to the current node based on the Morton code and predicting neighbor nodes with the current node as a sampling point, the spatial distribution characteristics of the point cloud and the spatial distance between points in the point cloud can be considered together, and the effect of attribute prediction based on neighbor nodes can be improved. That is, on the premise of basically not affecting the performance, the reconstruction quality of the attribute part can be improved, and further, the encoding / decoding time and computational complexity of the predicted attributes can be reduced, thereby improving the encoding efficiency. Peak Signal to Noise Ratio (PSNR) may be used as an objective standard for image evaluation. The larger the PSNR, the better the image quality. BD-rate may also be used as a parameter to evaluate performance superiority and inferiority. When the BD-rate is a negative value, it indicates that under the same PSNR condition, the bit rate decreases and the performance improves. Moreover, the larger the absolute value of the BD-rate, the greater the performance gain. As shown in Table 1, on the premise of basically not affecting the performance, the bit rate of the color channels (indicated by U and V) of the attribute part can be reduced, and the BD-rate of the reconstructed point cloud can be significantly improved.
[0104]
Table 1
[0105] The embodiments of the present application provide a classification method. Based on the point cloud to be classified, calculate the Morton code of the points in the point cloud to be classified, and the number of right shift bits N corresponding to the i-th detailed level (LOD) layer in the point cloud to be classified i is determined, where i is an integer greater than or equal to 0, and N i is an integer greater than 0, and it is judged whether i is less than or equal to M-1, where M represents the preset number of LOD classification layers. When i is less than or equal to M-1, for the i-th LOD layer, shift the Morton code of the points in the point cloud to be classified to the right by N i bit shifts, store the shifted Morton code in the preset storage area, determine the Morton code of the parent node corresponding to the current node in the i-th LOD layer, and based on the determined Morton code of the parent node, search for the neighbor node corresponding to the parent node in the preset storage area, classify the current node into the i-th LOD layer, classify the neighbor node into the i+1-th LOD layer, update i based on i+1, and return to the judgment of whether i is less than or equal to M-1. When i is greater than M-1, determine the 0-th LOD layer to the M-1-th LOD layer as the LOD layers classified corresponding to the point cloud to be classified. In this way, the technical solution of the present application does not calculate the spatial distance between the current node and the neighbor node. Each time the LOD layer is classified, the Morton code is used to search for the neighbor node of the parent node corresponding to the current node, and the neighbor node is predicted with the current node as the sampling point. Thereby, not only the calculation complexity is reduced, but also considering the spatial distribution characteristics of the point cloud, the accuracy of the predicted attributes of the neighbor node is improved, the reconstruction quality of the attribute part is improved, the bit overhead of coding is effectively reduced, and the efficiency of coding and decoding can be improved
[0106] Based on the same invention-creation of the above embodiments, referring to FIG. 7, FIG. 7 shows a detailed flow schematic diagram of the classification method according to the embodiments of the present application. As shown in FIG. 7, it is applied to an encoder or a decoder, and the detailed flow may include the following steps S701 to S711.
[0107] In step S701, based on the point cloud waiting to be classified, calculate the Morton code of the points in the point cloud waiting to be classified.
[0108] In step S702, sort the Morton codes of the points in the point cloud waiting to be classified in ascending order.
[0109] Note that for the point cloud waiting to be classified, if the point cloud waiting to be classified contains N points, each point is denoted as Pi, and the Morton code corresponding to each point Pi is Mi, where i = 0, 1, 2,..., N - 1. That is, first calculate the Morton code (which may also be denoted as packVoxel) corresponding to the points in the point cloud waiting to be classified, then sort the Morton codes of the points in the point cloud waiting to be classified in ascending order from low to high, and the sorted Morton codes may be determined as the Morton codes of the points in the point cloud waiting to be classified.
[0110] In step S703, determine whether lodindex < lodcount.
[0111] Note that lodindex indicates which LOD layer the currently processed classification is, for example, it is the lodindex-th LOD layer, and lodcount indicates the total number of classification layers of the preset point cloud waiting to be classified. Here, lodcount is an integer greater than 0, and lodindex is an integer greater than or equal to 0 and less than or equal to lodcount - 1.
[0112] Furthermore, as will be further described, when lodindex < lodcount, that is, when the judgment result is "yes", step S704 is executed. When lodindex ≧ lodcount, that is, when the judgment result is "no", the flow ends.
[0113] In step S704, when the judgment result is "yes", it is determined whether lodindex == 0.
[0114] In step S705, when the judgment result is "yes", the initial right shift bit number N of the Morton code of the points in the segmented waiting point cloud is calculated.
[0115] In step S706, when the judgment result is "no", N curlod = N lastlod + 3, and N curlod is determined as N.
[0116] Note that N curlod indicates the right shift bit number corresponding to the currently processed LOD layer, and N lastlod indicates the right shift bit number corresponding to the previous processed LOD layer. For example, if the initial right shift bit number corresponding to the 0th LOD layer is 4, the right shift bit number corresponding to the 1st LOD layer is 7, the right shift bit number corresponding to the 2nd LOD layer is 10, and the right shift bit number corresponding to the 3rd LOD layer is 13. By analogy, the right shift bit numbers corresponding to each LOD layer can be obtained.
[0117] Thus, when lodindex < lodcount, it is necessary to further determine whether lodindex is equal to 0. When lodindex is equal to 0, that is, when the judgment result is "yes", step S705 is executed, that is, the initial right shift bit number N of the Morton code of the points in the segmented waiting point cloud is calculated. When lodindex is not equal to 0, that is, when the judgment result is "no", step S706 is executed, that is, N curlod = N lastlodIt is +3, and then N curlod is determined as N and used for the execution of the subsequent step S707.
[0118] In step S707, the Morton code of the points in the point cloud waiting for classification is shifted N bits to the right, and the shifted Morton code is stored in inputMorton.
[0119] In step S708, it is determined whether pointindex < inputMorton.size.
[0120] Note that pointindex indicates the index number of the current node in inputMorton, and inputMorton.size indicates the length of inputMorton. In this way, when pointindex < inputMorton.size, that is, when the judgment result is "yes", it indicates that the current node is still in the LOD layer of the lodindex-th level, and at this time, it is necessary to execute step S709. When pointindex ≥ inputMorton.size, that is, when the judgment result is "no", it indicates that the current node is not in the LOD layer of the lodindex-th level, and at this time, it is necessary to execute step S710.
[0121] In step S709, when the judgment result is "yes", the current node is added to the set O(lodindex), and the neighbor node corresponding to the current node is added to the set L(lodindex).
[0122] In step S710, pointindex = pointindex + 1, and the process returns to the execution of step S708.
[0123] In step S711, when the judgment result is "no", lodindex = lodindex + 1, and the process returns to the execution of step S703.
[0124] When pointindex < inputMorton.size, add the current node to set O(lodindex), that is, classify the current node into the lodindex-th LOD layer. At the same time, add the neighbor node corresponding to the current node to set L(lodindex), that is, classify the neighbor node corresponding to the current node into the (lodindex + 1)-th LOD layer. Then, set pointindex = pointindex + 1, and return to the execution of step S708 until pointindex = inputMorton.size - 1, thereby realizing the classification for the lodindex-th LOD layer. Further, when pointindex ≥ inputMorton.size, it indicates the completion of the classification for the lodindex-th LOD layer. At this time, it is necessary to set lodindex = lodindex + 1, and return to the execution of step S703 until lodindex = lodcount - 1, thereby realizing the classification for the (lodcount - 1)-th LOD layer. Thereby, the LOD classification for the point cloud waiting for classification is also realized. Here, the 0-th LOD layer to the (lodcount - 1)-th LOD layer are determined as the LOD layers corresponding to the point cloud waiting for classification.
[0125] Specifically, the Morton codes of the sorted point clouds waiting for classification can be sampled to obtain the Morton codes of K sampling points, and by performing a right shift operation on the Morton codes of these K sampling points, the initial right shift bit number N corresponding to the point cloud waiting for classification can be obtained, and further the right shift bit numbers corresponding to each LOD layer can be determined. Then, when classifying each LOD layer, the Morton code of the point in the input point cloud waiting for classification is shifted right by N bits, and the shifted right Morton code is stored in inputMorton. At this time, the Morton code of the parent node corresponding to the current node can be calculated, and the Morton codes of its neighbor nodes can be calculated by the parent node. Finally, the neighbor nodes corresponding to the Morton codes of the neighbor nodes are searched from inputMorton, the current node is classified into O(lodindex), and these neighbor nodes obtained by the search are classified into L(lodindex).
[0126] In the embodiments of the present application, it is not necessary to calculate the spatial distance between the current node and the neighbor nodes. Generally, it is recognized that the spatial distances between the neighbor nodes that are in the same parent node as the current node in space and are on the same plane or the same straight line and at the same point as the current node are all very close, and they may be regarded as belonging to the same adjacent region. At this time, based on the Morton code, the neighbor nodes of the parent node corresponding to the current node may be searched. Compared with the conventional technical solution of searching for neighbor nodes based on different distance thresholds, the classification method of the embodiments of the present application does not require setting different threshold parameters, nor does it require calculating the spatial distance between points each time, thereby greatly reducing the calculation complexity.
[0127] Furthermore, in the embodiments of the present application, every time the LOD layer is divided, only the neighbor nodes of the parent node corresponding to the current node are determined, the current node is added to the set O(k), and the neighbor nodes corresponding to the current node are added to the set L(k). Therefore, not only the spatial geometric distance between points is considered, but also the spatial distribution characteristics of the point cloud are considered in terms of spatial distribution. That is, by comprehensively considering the spatial geometric distance of points in space and the spatial distribution characteristics of the point cloud in space, the prediction performance can be improved, and relatively good encoding and decoding performance can also be obtained. It should be particularly noted that the division method in the embodiments of the present application searches and samples the neighbor nodes of the current node based only on the Morton code of the original point cloud. Compared with the original division method that searches for the nearest neighbor within a certain range based on the index of the Morton code each time, the computational complexity is greatly reduced.
[0128] This embodiment provides a division method, and the division method is applied to an encoder or a decoder. By explaining the specific implementation of the above embodiment in detail, the technical solution of the present application does not calculate the spatial distance between the current node and the neighbor node. Every time the LOD layer is divided, the Morton code is used to search for the neighbor nodes of the parent node corresponding to the current node, and the neighbor nodes are predicted with the current node as the sampling point. Thereby, not only the computational complexity is reduced, but also the spatial distribution characteristics of the point cloud are considered, so that the accuracy of the predicted attributes of the neighbor nodes is improved, the reconstruction quality of the attribute part is improved, the bit overhead of encoding is effectively reduced, and the encoding and decoding efficiency can be improved.
[0129] Based on the same inventive concept of the above embodiment, referring to FIG. 8, FIG. 8 shows a structural schematic diagram of an encoder 80 according to an embodiment of the present application. As shown in FIG. 8, the encoder 80 may include a first calculation unit 801, a first determination unit 802, a first judgment unit 803, a first right shift unit 804, a first search unit 805, and a first division unit 806. The first computing unit 801 is configured to calculate the Morton code of the points in the point cloud waiting for classification based on the point cloud waiting for classification. The first determining unit 802 is the right shift bit number N corresponding to the i-th detailed level (LOD) layer in the point cloud waiting for classification. i is determined, where i is an integer greater than or equal to 0, and N i is an integer greater than 0. The first judging unit 803 is configured to judge whether i is less than or equal to M-1, where M represents the preset number of layers in the LOD classification. When i is less than or equal to M-1, the first right shift unit 804 is configured to right shift the Morton code of the points in the point cloud waiting for classification by N i bits for the i-th LOD layer and store the right-shifted Morton code in a preset storage area. The first determining unit 802 is further configured to determine the Morton code of the parent node corresponding to the current node in the i-th LOD layer. Based on the determined Morton code of the parent node, the first search unit 805 is configured to search for the neighbor node corresponding to the parent node in the preset storage area. The first classification unit 806 is configured to classify the current node into the i-th LOD layer and classify the neighbor node into the (i + 1)-th LOD layer. The first judging unit 803 is further configured to update i based on i + 1 and return to the judgment of whether i is less than or equal to M-1. When i is greater than M-1, the first determining unit 802 is further configured to determine the 0-th LOD layer to the (M-1)-th LOD layer as the LOD layers classified corresponding to the point cloud waiting for classification.
[0130] In the above technical solution, referring to FIG. 8, the encoder 80 may further include a first sorting unit 807. The first sorting unit 807 is configured to sort the Morton codes of the points in the segmented waiting point cloud according to a preset sorting policy, and determine the sorted Morton code as the Morton code of the points in the segmented waiting point cloud.
[0131] In the above technical solution, referring to FIG. 8, the encoder 80 may further include a first sampling unit 808. The first sampling unit 808 is configured to sample the sorted Morton code to obtain the Morton codes of K sampling points, where K is an integer greater than 0. The first right shift unit 804 is further configured to perform a right shift process on the Morton codes of the K sampling points to obtain K sampling points corresponding to the right-shifted Morton codes. The first determination unit 803 is further configured to determine whether the K sampling points corresponding to the right-shifted Morton codes correspond to at least one neighbor node per sampling point. If the K sampling points corresponding to the right-shifted Morton codes do not correspond to at least one neighbor node per sampling point, continue to execute the step of performing a right shift process on the Morton codes of the K sampling points. When the K sampling points corresponding to the right-shifted Morton codes correspond to at least one neighbor node per sampling point, obtain the right shift bit number of the K sampling points, and determine the right shift bit number as the initial right shift bit number of the Morton codes of the points in the segmented waiting point cloud. The initial right shift bit number indicates the corresponding right shift bit number N0 in the 0th LOD layer of the Morton codes of the points in the segmented waiting point cloud.
[0132] In the above technical solution, referring to FIG. 8, the encoder 80 may further include a first analysis unit 809. The first analysis unit 809 is configured to perform characteristic analysis on the point cloud waiting for classification and determine the value of K.
[0133] In the above technical solution, the first determination unit 802 is further configured to determine the maximum Morton code and the minimum Morton code based on the sorted Morton codes. The first calculation unit 801 is further configured to calculate the difference value between the maximum Morton code and the minimum Morton code. The first right shift unit 804 is further configured to perform a right shift operation on the difference value. When the right-shifted difference value satisfies a preset range, it is configured to obtain the number of right shift bits of the difference value. The first determination unit 802 is further configured to determine the number of right shift bits as the initial number of right shift bits of the point cloud waiting for classification.
[0134] In the above technical solution, when i is not equal to 0, the first determination unit 802 further uses a first preset calculation model to determine the number of right shift bits N corresponding to the i-th LOD layer in the point cloud waiting for classification. i is set to be determined.
[0135] In the above technical solution, specifically, the first determination unit 802 obtains the number of right shift bits N corresponding to the (i - 1)-th LOD layer. i-1 and adds the preset value to the number of right shift bits N corresponding to the (i - 1)-th LOD layer to obtain an added value, and determines the added value as the number of right shift bits N corresponding to the i-th LOD layer. i-1 is set to be determined. i is set to be determined.
[0136] In the above technical solution, the first analysis unit 809 is further configured to perform characteristic analysis on the point cloud waiting for classification and determine the preset value.
[0137] In the above technical solution, the preset value is equal to 3.
[0138] In the above technical solution, the first right shift unit 804 is further set to perform a right shift process on the Morton code of the current node in the i-th LOD layer based on the number of right shift bits N i corresponding to the i-th LOD layer. The first determination unit 802 is further set to determine the Morton code of the shifted right Morton code as the Morton code of the parent node corresponding to the current node in the i-th LOD layer.
[0139] In the above technical solution, the first determination unit 802 is further set to determine the Morton code of the neighbor node corresponding to the parent node based on the determined Morton code of the parent node. Specifically, the first search unit 805 is set to search for the neighbor node corresponding to the Morton code of the neighbor node in the preset storage area based on the Morton code of the neighbor node.
[0140] In the above technical solution, the first calculation unit 801 is further set to calculate the Morton codes of all neighbor nodes that are on the same plane as the parent node, on the same straight line, and at the same point based on the determined Morton code of the parent node, and obtain the Morton codes of the first quantity of neighbor nodes. Specifically, the first decision unit 802 compares the Morton codes of the first quantity of neighbor nodes with the Morton code of the current node respectively. If the Morton code of a neighbor node is smaller than the Morton code of the current node, the Morton code of the neighbor node is discarded. If the Morton code of a neighbor node is greater than or equal to the Morton code of the current node, the Morton code of the neighbor node is reserved to obtain the Morton codes of the second quantity of neighbor nodes. The second quantity is less than or equal to the first quantity, and the Morton codes of the second quantity of neighbor nodes are set to be determined as the Morton codes of the neighbor nodes corresponding to the parent node.
[0141] In the above technical solution, the first decision unit 802 is further set to determine the adjacent region corresponding to the current node in the i-th LOD layer based on the point cloud waiting for classification. The first calculation unit 801 is further set to calculate the centroid of mass of the adjacent region, and select, from the current node and the first quantity of neighbor nodes, the node closest to the centroid of mass as the target node. The first classification unit 806 is further set to classify the target node into the i-th LOD layer and classify the remaining nodes into the (i + 1)-th LOD layer, where the remaining nodes refer to the nodes other than the target node among the current node and the first quantity of neighbor nodes.
[0142] In the above technical solution, the first right shift unit 804 is further set to perform a right shift process on the Morton codes of the points in the point cloud waiting for classification to obtain a plurality of sets, where each set includes a part of the point cloud waiting for classification in the point cloud waiting for classification. The first classification unit 806 is further set to execute, for each set among the plurality of sets, the step of performing LOD layer classification on a part of the point cloud waiting for classification included in each set respectively.
[0143] For better understanding, in this embodiment, the "unit" may be some electronic circuits, some processors, some programs or software, etc. Of course, it may also be a module or non-modularized. And each component in this embodiment may be integrated into one processing unit, or each unit may physically exist separately, or two or more units may be integrated into one unit. The above integrated unit may be realized in the form of hardware or in the form of a software functional module.
[0144] When the above integrated unit is realized in the form of a software functional module and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on such an understanding, the essence of the technical solution of this embodiment or the contribution to the prior art, or all or part of the technical solution, may be embodied in the form of a software product. The computer software product is stored in a storage medium and contains some instructions for a computer device (which may be a personal computer, a server, or a network device, etc.) or a processor to execute all or part of the steps of the method described in this embodiment. The storage medium includes various media that can store program codes, such as a USB disk, a removable hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk.
[0145] Therefore, this embodiment provides a computer storage medium, which is applied to the encoder 80, and a segmentation program is stored in the computer storage medium. When the segmentation program is executed by the first processor, the method described in any one of the above embodiments is realized.
[0146] Based on the configuration of the above encoder 80 and the computer storage medium, referring to FIG. 9, FIG. 9 shows the specific hardware structure of the encoder 80 according to an embodiment of the present application, which may include a first communication interface 901, a first memory 902, and a first processor 903, and each component is coupled by a first bus system 904. As can be understood, the first bus system 904 is used to realize the connection and communication between these components. The first bus system 904 includes a power bus, a control bus, and a status signal bus in addition to a data bus. However, for the sake of clarity in the description, in FIG. 9, various buses are denoted as the first bus system 904. Among them, The first communication interface 901 is used for transmitting and receiving signals in the process of transmitting and receiving information with other external network elements, The first memory 902 is used to store a computer program executable by the first processor 903, When the first processor 903 executes the computer program, Based on the point cloud of the partition waiting, calculate the Morton code of the points in the point cloud of the partition waiting, and The number of right shift bits N corresponding to the i-th detailed level (LOD) layer in the point cloud of the partition waiting i is determined, where i is an integer greater than or equal to 0, and N i is an integer greater than 0, and It is judged whether i is less than or equal to M - 1, where M represents the preset number of layers of the LOD partition, and If i is less than or equal to M - 1, for the i-th LOD layer, shift the Morton code of the points in the point cloud of the partition waiting to the right by N i bit shifts, and store the right-shifted Morton code in a preset storage area, and Determine the Morton code of the parent node corresponding to the current node in the i-th LOD layer, and Based on the determined Morton code of the parent node, search for the neighbor nodes corresponding to the parent node in the preset storage area, Divide the current node into the i-th LOD layer and divide the neighbor node into the (i + 1)-th LOD layer, Update i based on i + 1 and return to the determination of whether i is less than or equal to M - 1, When i is greater than M - 1, determine the 0-th LOD layer to the (M - 1)-th LOD layer as the LOD layers divided corresponding to the point cloud waiting to be divided. It is used to execute.
[0147] For the sake of understanding, the first memory 902 in the embodiments of the present application may be a volatile memory or a non-volatile memory, or may include both a volatile memory and a non-volatile memory. Here, the non-volatile memory may be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory may be a random access memory (RAM) used as an external cache. By way of non-limiting and illustrative explanation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchlink dynamic random access memory (SLDRAM), direct rambus RAM (DRRAM). The first memory 902 of the systems and methods described in the present application includes these memories and any other suitable types of memories, but is not limited thereto.
[0148] The first processor 903 may be an integrated circuit chip and has signal processing capabilities. In the implementation process, each step of the above method can be performed by the integrated logic circuit of the hardware in the first processor 903 or instructions in the form of software. The above first processor 903 may be a general-purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic devices, discrete gates or transistor logic devices, discrete hardware modules. The various methods, steps and logic block diagrams disclosed in the embodiments of the present application can be realized or executed. The general-purpose processor may be a microprocessor, or the processor may be any ordinary processor or the like. The steps of the method disclosed by combining the embodiments of the present application are directly executed by the hardware decoding processor, or executed by a combination of the hardware and software modules in the decoding processor. The software module may be located in a storage medium mature in this field such as random access memory, flash memory, read-only memory, programmable read-only memory, or electrically rewritable programmable memory, register, etc. The storage medium is in the first memory 902, and the first processor 903 reads the information in the first memory 902 and performs the steps of the above method together with its hardware.
[0149] As can be understood, these embodiments described in the present application can be implemented by hardware, software, firmware, middleware, microcode, or a combination thereof. For implementation by hardware, the processing unit can be implemented in one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described in the present application, or a combination thereof. For implementation by software, the techniques described in the present application can be implemented by modules (such as processes, functions, etc.) of the functions described in the present application. The software code can be stored in a memory and executed by a processor. The memory can be implemented inside or outside the processor.
[0150] As an option, as another embodiment, the first processor 903 is further configured to execute the method described in any one of the above embodiments when executing the computer program.
[0151] The embodiments of the present application provide an encoder, which may include a first calculation unit, a first decision unit, a first judgment unit, a first right shift unit, a first search unit, and a first division unit. The first calculation unit is configured to calculate the Morton code of the points in the point cloud waiting for division based on the point cloud waiting for division. The first decision unit determines the number of right shift bits N i corresponding to the i-th level of detail (LOD) layer in the point cloud waiting for division, where i is an integer greater than or equal to 0, and N iis an integer greater than 0. The first determination unit is set to determine whether i is less than or equal to M - 1, where M represents the preset number of LOD levels. The first right shift unit is configured to, when i is less than or equal to M - 1, right-shift the Morton code of the points in the point cloud waiting for classification for the i-th LOD level by N i bits and store the right-shifted Morton code in a preset storage area. The first determination unit is further configured to determine the Morton code of the parent node corresponding to the current node in the i-th LOD level. The first search unit is configured to search for the neighbor node corresponding to the parent node in the preset storage area based on the determined Morton code of the parent node. The first classification unit is configured to classify the current node into the i-th LOD level and classify the neighbor node into the (i + 1)-th LOD level. The first determination unit is further configured to update i based on i + 1 and return to the determination of whether i is less than or equal to M - 1. The first determination unit is further configured to, when i is greater than M - 1, determine the 0-th LOD level to the (M - 1)-th LOD level as the LOD levels classified corresponding to the point cloud waiting for classification. In this way, the technical solution of the present application does not calculate the spatial distance between the current node and the neighbor node. Each time the LOD level is classified, the Morton code is used to search for the neighbor node of the parent node corresponding to the current node, and the neighbor node is predicted with the current node as the sampling point. Thereby, not only the computational complexity is reduced, but also the accuracy of the predicted attributes of the neighbor node is improved, the reconstruction quality of the attribute part is improved, the bit overhead of encoding is effectively reduced, and the efficiency of encoding and decoding can be improved by considering the spatial distribution characteristics of the point cloud.
[0152] Based on the same invention-creation of the above embodiment, referring to FIG. 10, FIG. 10 shows a structural schematic diagram of a decoder 100 according to an embodiment of the present application. As shown in FIG. 10, the decoder 100 may include a second calculation unit 1001, a second determination unit 1002, a second judgment unit 1003, a second right shift unit 1004, a second search unit 1005, and a second division unit 1006. The second calculation unit 1001 is set to calculate the Morton code of the points in the point cloud waiting for division based on the point cloud waiting for division. The second determination unit 1002 is the number of right shift bits N corresponding to the i-th detailed level (LOD) layer in the point cloud waiting for division. i to be determined, where i is an integer greater than or equal to 0, and N i is an integer greater than 0. The second judgment unit 1003 is set to judge whether i is less than or equal to M-1, where M represents the preset number of layers of LOD division. When i is less than or equal to M-1, the second right shift unit 1004 is configured to right-shift the Morton code of the points in the point cloud waiting for division by N i bits for the i-th LOD layer and store the right-shifted Morton code in a preset storage area. The second determination unit 1002 is further set to determine the Morton code of the parent node corresponding to the current node in the i-th LOD layer. Based on the determined Morton code of the parent node, the second search unit 1005 is set to search for the neighbor node corresponding to the parent node in the preset storage area. The second division unit 1006 is set to divide the current node into the i-th LOD layer and divide the neighbor node into the (i + 1)-th LOD layer. The second judgment unit 1003 is further set to update i based on i + 1 and return to the judgment of whether i is less than or equal to M-1. When i is greater than M - 1, the second decision unit 1002 is further configured to determine the 0th LOD layer to the (M - 1)th LOD layer as the LOD layers divided corresponding to the point cloud waiting for division.
[0153] In the above technical solution, referring to FIG. 10, the decoder 100 may further include a second sorting unit 1007. The second sorting unit 1007 is configured to sort the Morton codes of the points in the point cloud waiting for division according to a preset sorting policy, and determine the sorted Morton codes as the Morton codes of the points in the point cloud waiting for division.
[0154] In the above technical solution, referring to FIG. 10, the decoder 100 may further include a second sampling unit 1008. The second sampling unit 1008 is configured to sample the sorted Morton codes to obtain the Morton codes of K sampling points, where K is an integer greater than 0. The second right shift unit 1004 is further configured to perform a right shift process on the Morton codes of the K sampling points to obtain K sampling points corresponding to the right-shifted Morton codes. The second determination unit 1003 further determines whether K sampling points corresponding to the right-shifted Morton code correspond to at least one neighbor node per sampling point. When the K sampling points corresponding to the right-shifted Morton code do not correspond to at least one neighbor node per sampling point, the step of continuously performing a right-shift process on the Morton codes of the K sampling points is executed. When the K sampling points corresponding to the right-shifted Morton code correspond to at least one neighbor node per sampling point, the number of right-shift bits of the K sampling points is obtained, and the number of right-shift bits is set to be determined as the initial right-shift bit number of the Morton code of the points in the point cloud waiting for classification. The initial right-shift bit number indicates the corresponding right-shift bit number N0 in the 0th LOD layer of the Morton code of the points in the point cloud waiting for classification.
[0155] In the above technical solution, referring to FIG. 10, the decoder 100 may further include a second analysis unit 1009. The second analysis unit 1009 performs characteristic analysis on the point cloud waiting for classification and is set to determine the value of K.
[0156] In the above technical solution, the second determination unit 1002 is further set to determine a maximum Morton code and a minimum Morton code based on the sorted Morton codes. The second calculation unit 1001 is further set to calculate a difference value between the maximum Morton code and the minimum Morton code. The second right-shift unit 1004 is further set to perform a right-shift process on the difference value and obtain the number of right-shift bits of the difference value when the right-shifted difference value satisfies a preset range. The second determination unit 1002 is further set to determine the number of right-shift bits as the initial right-shift bit number of the point cloud waiting for classification.
[0157] In the above technical solution, when i is not equal to 0, the second determination unit 1002 is further configured to use the first preset calculation model to determine the right shift bit number N corresponding to the i-th LOD layer in the segmented waiting point cloud. i It is set to be determined.
[0158] In the above technical solution, specifically, the second determination unit 1002 obtains the right shift bit number N corresponding to the (i - 1)-th LOD layer, adds the right shift bit number N corresponding to the (i - 1)-th LOD layer and a preset value to obtain an added value, and determines the added value as the right shift bit number N corresponding to the i-th LOD layer. i-1 It is set to be determined. i-1 It is set to be determined. i It is set to be determined.
[0159] In the above technical solution, the second analysis unit 1009 is further configured to perform characteristic analysis on the segmented waiting point cloud and determine the preset value. In the above technical solution, the preset value is equal to 3.
[0160] In the above technical solution, the second right shift unit 1004 is further configured to perform a right shift process on the Morton code of the current node in the i-th LOD layer based on the right shift bit number N corresponding to the i-th LOD layer. i The second determination unit 1002 is further configured to determine the right-shifted Morton code as the Morton code of the parent node corresponding to the current node in the i-th LOD layer. The second determination unit 1002 is further configured to determine the Morton code of the neighbor node corresponding to the parent node based on the determined Morton code of the parent node.
[0161] In the above technical solution, the second determination unit 1002 is further configured to determine the Morton code of the neighbor node corresponding to the parent node based on the determined Morton code of the parent node. Specifically, the second search unit 1005 is configured to search for a neighbor node corresponding to the Morton code of the neighbor node in the preset storage area based on the Morton code of the neighbor node.
[0162] In the above technical solution, the second calculation unit 1001 is further configured to calculate the Morton codes of all neighbor nodes that are on the same plane, on the same straight line, and at the same point as the determined parent node based on the Morton code of the determined parent node, and obtain the Morton codes of the first quantity of neighbor nodes. Specifically, the second determination unit 1002 compares the Morton codes of the first quantity of neighbor nodes with the Morton code of the current node respectively. If the Morton code of the neighbor node is smaller than the Morton code of the current node, the Morton code of the neighbor node is discarded. If the Morton code of the neighbor node is greater than or equal to the Morton code of the current node, the Morton code of the neighbor node is reserved, and the Morton codes of the second quantity of neighbor nodes are obtained. The second quantity is less than or equal to the first quantity, and the Morton codes of the second quantity of neighbor nodes are determined as the Morton codes of the neighbor nodes corresponding to the parent node.
[0163] In the above technical solution, the second determination unit 1002 is further configured to determine an adjacent area corresponding to the current node in the i-th LOD layer based on the point cloud waiting for classification. The second calculation unit 1001 is further configured to calculate the centroid of mass of the adjacent area, and select, as the target node, the node closest to the centroid of mass from the current node and the first quantity of neighbor nodes. The second classification unit 1006 is further configured to classify the target node into the i-th LOD layer and classify the remaining nodes into the i + 1-th LOD layer. The remaining nodes refer to the nodes other than the target node among the current node and the first quantity of neighbor nodes.
[0164] In the above technical solution, the second right shift unit 1004 is further configured to perform a right shift process on the Morton code of the points in the segmented waiting point cloud to obtain a plurality of sets, and each set includes a part of the segmented waiting point cloud among the segmented waiting point clouds, The second segmentation unit 1006 is further configured to execute, for each of the plurality of sets, a step of performing LOD layer segmentation on a part of the segmented waiting point cloud included in each set.
[0165] As can be understood, in this embodiment, the "unit" may be a part of an electronic circuit, a part of a processor, a part of a program or software, etc. Of course, it may also be a module or non-modularized. And each component in this embodiment may be integrated into one processing unit, each unit may physically exist respectively, or two or more units may be integrated into one unit. The above integrated unit may be realized in the form of hardware or in the form of a software function module.
[0166] When the above integrated unit is realized in the form of a software function module and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on such an understanding, this embodiment provides a computer storage medium, which is applied to the decoder 100, and a segmentation program is stored in the computer storage medium. When the segmentation program is executed by a second processor, the method described in any one of the above embodiments is realized.
[0167] Based on the configuration of the decoder 100 and the computer storage medium described above, referring to FIG. 11, FIG. 11 shows the specific hardware structure of the decoder 100 according to an embodiment of the present application, and may include a second communication interface 1101, a second memory 1102, and a second processor 1103. Each component is coupled by a second bus system 1104. As can be understood, the second bus system 1104 is used to realize connection communication between these components. The second bus system 1104 includes a power bus, a control bus, and a status signal bus in addition to a data bus. However, for the sake of clarity in the description, in FIG. 11, various buses are denoted as the second bus system 1104. Among them, The second communication interface 1101 is used for transmitting and receiving signals in the process of transmitting and receiving information with other external network elements. The second memory 1102 is used for storing a computer program executable by the second processor 1103. When the second processor 1103 executes the computer program, Based on the point cloud waiting for classification, calculating the Morton code of the points in the point cloud waiting for classification, The number of right shift bits N corresponding to the i-th detailed level (LOD) layer in the point cloud waiting for classification, i is determined, where i is an integer greater than or equal to 0, and N i is an integer greater than 0, It is determined whether i is less than or equal to M - 1, where M indicates the preset number of layers of the LOD classification, If i is less than or equal to M - 1, for the i-th LOD layer, the Morton code of the points in the point cloud waiting for classification is right-shifted by N i bit shifts, and the right-shifted Morton code is stored in a preset storage area. Determining the Morton code of the parent node corresponding to the current node in the i-th LOD layer. Based on the Morton code of the determined parent node, search for the neighbor node corresponding to the parent node in the preset storage area; Divide the current node into the i-th LOD layer, and divide the neighbor node into the (i + 1)-th LOD layer; Update i based on i + 1, and return to the judgment of whether i is less than or equal to M - 1; When i is greater than M - 1, determine the 0-th LOD layer to the (M - 1)-th LOD layer as the LOD layers divided corresponding to the point cloud waiting to be divided. It is used to execute.
[0168] As an option, as another embodiment, when the second processor 1103 further executes the computer program, it is set to execute the method described in any one of the above embodiments.
[0169] For better understanding, since the hardware functions of the second memory 1102 and the first memory 902 are similar, and the hardware functions of the second processor 1103 and the first processor 903 are similar, they will not be repeatedly described here.
[0170] The embodiment of the present application provides a decoder, which may include a second calculation unit, a second determination unit, a second judgment unit, a second right shift unit, a second search unit and a second division unit. The second calculation unit is set to calculate the Morton code of the points in the point cloud waiting to be divided based on the point cloud waiting to be divided. The second determination unit determines the number of right shift bits N corresponding to the i-th level of detail (LOD) layer in the point cloud waiting to be divided, where i is an integer greater than or equal to 0, and N is an integer greater than 0. The second judgment unit is set to judge whether i is less than or equal to M - 1, where M represents the preset number of LOD division layers. When i is less than or equal to M - 1, the second right shift unit shifts the Morton code of the points in the point cloud waiting to be divided to the right by N for the i-th LOD layer. i is determined, i is an integer greater than or equal to 0, and N i is an integer greater than 0. The second judgment unit is set to judge whether i is less than or equal to M - 1, where M represents the preset number of LOD division layers. The second right shift unit shifts the Morton code of the points in the point cloud waiting to be divided to the right by N for the i-th LOD layer when i is less than or equal to M - 1. iIt is set to perform a bit shift and store the Morton code shifted to the right in the preset storage area. The second determination unit is further set to determine the Morton code of the parent node corresponding to the current node in the i-th LOD layer. The second search unit is set to search for the neighbor node corresponding to the parent node in the preset storage area based on the determined Morton code of the parent node. The second division unit is set to divide the current node into the i-th LOD layer and divide the neighbor node into the (i + 1)-th LOD layer. The second judgment unit is further set to update i based on i + 1 and return to the judgment as to whether i is less than or equal to M - 1. The second determination unit is further set to, when i is greater than M - 1, determine the 0-th LOD layer to the (M - 1)-th LOD layer as the LOD layers divided corresponding to the point cloud waiting for division. In this way, the technical solution of the present application does not calculate the spatial distance between the current node and the neighbor node. Each time the LOD layer is divided, the Morton code is used to search for the neighbor node of the parent node corresponding to the current node, and the neighbor node is predicted with the current node as the sampling point. Thereby, not only the computational complexity is reduced, but also in consideration of the spatial distribution characteristics of the point cloud, the accuracy of the predicted attributes of the neighbor node is improved, the reconstruction quality of the attribute part is improved, the bit overhead of encoding is effectively reduced, and the encoding / decoding efficiency can be improved.
[0171] In the present application, the terms "including", "comprising" or any other variation thereof mean non-exclusive inclusion, whereby a process, method, article or apparatus that includes a series of elements includes not only those elements but also other elements not expressly listed, or further includes elements inherent to such process, method, article or apparatus. Without more limitations, an element limited by the sentence "including one..." does not exclude the further presence of another identical element in the process, method, article or apparatus including the element.
[0172] The numbers of the above embodiments of the present application are only for description purposes and do not represent the superiority or inferiority of the embodiments.
[0173] The methods disclosed in some method embodiments according to this application can be arbitrarily combined, when there is no conflict, to obtain new method embodiments.
[0174] The features disclosed in some product embodiments according to this application can be arbitrarily combined, when there is no conflict, to obtain new product embodiments.
[0175] The features disclosed in some method or apparatus embodiments according to this application can be arbitrarily combined, when there is no conflict, to obtain new method embodiments or apparatus embodiments.
[0176] The above are only specific embodiments of this application, and the protection scope of this application is not limited thereto. Any change or replacement that can be easily conceived by any person skilled in the art within the technical scope disclosed in this application should be included within the protection scope of this application. Therefore, the protection scope of this application should be based on the protection scope of the described claims.
Industrial Applicability
[0177] In the embodiments of this application, the method is applied to an encoder. Based on the point cloud waiting to be segmented, calculating the Morton code of the points in the point cloud waiting to be segmented, and the number of right shift bits N corresponding to the i-th detailed level (LOD) layer in the point cloud waiting to be segmented i is determined, where i is an integer greater than or equal to 0, and N i is an integer greater than 0, and it is judged whether i is less than or equal to M - 1, where M represents the preset number of layers of the LOD segmentation, and when i is less than or equal to M - 1, for the i-th LOD layer, the Morton code of the points in the point cloud waiting to be segmented is shifted to the right by N iBit-shift and store the Morton code shifted to the right in the preset memory area; determine the Morton code of the parent node corresponding to the current node in the i-th LOD layer; based on the determined Morton code of the parent node, search for the neighbor node corresponding to the parent node in the preset memory area; divide the current node into the i-th LOD layer and divide the neighbor node into the i+1-th LOD layer; update i based on i+1 and return to the judgment of whether i is less than or equal to M-1; when i is greater than M-1, determine the 0-th LOD layer to the M-1-th LOD layer as the LOD layers divided corresponding to the point cloud waiting to be divided. By doing so, the technical solution of the present application does not calculate the spatial distance between the current node and the neighbor node. Each time the LOD layer is divided, the Morton code is used to search for the neighbor node of the parent node corresponding to the current node, and the neighbor node is predicted with the current node as the sampling point. Thereby, not only the computational complexity is reduced, but also considering the spatial distribution characteristics of the point cloud, the accuracy of the predicted attributes of the neighbor node is improved, the reconstruction quality of the attribute part is improved, the bit overhead of encoding is effectively reduced, and the efficiency of encoding and decoding can be improved.
Claims
**Claim 1** A classification method applied to an encoder, the method comprising: determining position information of points in the point cloud waiting to be classified based on the point cloud waiting to be classified; The number of right shift bits N corresponding to the i-th detailed level (LOD) layer in the point cloud waiting to be segmented i is determined, where i is an integer greater than or equal to 0, and N i is an integer greater than 0, and M represents the maximum preset layer number of the LOD segmentation For the i-th LOD layer, the position information of the points in the point cloud waiting for classification is bit-shifted to the right by N i bits, and based on the position information shifted to the right, it is stored in a preset storage area. determining position information of a parent point corresponding to a current point in the i-th LOD layer; searching for a neighbor point corresponding to the parent point in the preset storage area based on the determined position information of the parent point; classifying the current point into the (i + 1)-th LOD layer, or classifying the neighbor point into the i-th LOD layer. **Claim 2** The method further comprises: sorting the position information of points in the point cloud waiting to be classified according to a preset sorting policy, and determining the sorted position information as the position information of points in the point cloud waiting to be classified, as described in claim 1. **Claim 3** The method further comprises: determining maximum position information and minimum position information based on the sorted position information; calculating a difference value between the maximum position information and the minimum position information; performing a right shift process on the difference value, and obtaining the number of right shift bits of the difference value when the right-shifted difference value satisfies a preset range; determining the number of right shift bits as the initial number of right shift bits of the point cloud waiting to be classified, as described in claim 2. **Claim 4** The number of right shift bits N corresponding to the i-th LOD layer in the point cloud waiting to be segmented i to determine is When i is less than or equal to M - 1, using the first preset calculation model, the number of right shift bits N corresponding to the i-th LOD layer in the point cloud of the division waiting is determined. i The method according to claim 1, including determining. **Claim 5** Determining the position information of the parent point corresponding to the current point in the i-th LOD layer comprises: The number of right shift bits N corresponding to the i-th LOD layer i Based on this, perform a right shift process on the position information of the current point in the i-th LOD layer, and determining the right-shifted position information as the position information of the parent point corresponding to the current point in the i-th LOD layer, as described in claim 1. **Claim 6** Searching for the neighbor point corresponding to the parent point in the preset storage area based on the determined position information of the parent point comprises: determining the position information of the neighbor point corresponding to the parent point based on the determined position information of the parent point; searching for the neighbor point corresponding to the position information of the neighbor point in the preset storage area based on the position information of the neighbor point, as described in claim 1. **Claim 7** Determining the position information of the neighbor points corresponding to the determined parent point based on the position information of the determined parent point includes: Calculating the position information of all neighbor points that are on the same plane as, on the same straight line as, and at the same point as the parent point based on the determined position information of the parent point, and obtaining the position information of the first quantity of neighbor points; Comparing the position information of the first quantity of neighbor points with the position information of the current point respectively; When the position information of the neighbor point is smaller than the position information of the current point, discarding the position information of the neighbor point; When the position information of the neighbor point is greater than or equal to the position information of the current point, retaining the position information of the neighbor point, obtaining the position information of the second quantity of neighbor points, and the second quantity being less than or equal to the first quantity; Determining the position information of the second quantity of neighbor points as the position information of the neighbor points corresponding to the parent point, the method according to claim 6.
8. A classification method, applied to a decoder, the method includes: Determining the position information of the points in the point cloud to be classified based on the point cloud to be classified; The number of right shift bits N corresponding to the i-th detailed level (LOD) layer in the point cloud waiting to be segmented i is determined, where i is an integer greater than or equal to 0, and N i is an integer greater than 0, and M indicates the maximum preset layer number of the LOD segmentation For the i-th LOD layer, the position information of the points in the point cloud waiting for classification is bit-shifted to the right by N i i bits, and based on the position information shifted to the right, it is stored in a preset storage area; Determining the position information of the parent point corresponding to the current point in the i-th LOD layer; Searching for the neighbor points corresponding to the parent point in the preset storage area based on the determined position information of the parent point; Classifying the current point into the (i + 1)-th LOD layer, or classifying the neighbor points into the i-th LOD layer, the classification method.
9. The method further includes: Sorting the position information of the points in the point cloud to be classified according to a preset sorting policy, and determining the sorted position information as the position information of the points in the point cloud to be classified, the method according to claim 8.
10. The method further includes: Determining the maximum position information and the minimum position information based on the sorted position information; Calculating the difference value between the maximum position information and the minimum position information; Performing a right shift operation on the difference value, and when the right-shifted difference value satisfies a preset range, obtaining the number of right shift bits of the difference value; Determining the number of right shift bits as the initial number of right shift bits of the point cloud waiting for classification, the method according to claim 9, comprising.
11. The right shift bit number N corresponding to the i-th LOD layer in the point cloud waiting to be segmented i to determine is When i is less than or equal to M - 1, using the first preset calculation model, the number of right shift bits N corresponding to the i-th LOD layer in the point cloud in the classification waiting state is determined i The method according to claim 8, comprising determining
12. Determining the position information of the parent point corresponding to the current point in the i-th LOD layer, The right shift bit number N corresponding to the i-th LOD layer i Based on this, perform a right shift process on the position information of the current point in the i-th LOD layer, and Determining the shifted position information as the position information of the parent point corresponding to the current point in the i-th LOD layer, the method according to claim 8, comprising.
13. Searching for the neighbor point corresponding to the parent point in the preset storage area based on the determined position information of the parent point, Determining the position information of the neighbor point corresponding to the parent point based on the determined position information of the parent point, Searching for the neighbor point corresponding to the position information of the neighbor point in the preset storage area based on the position information of the neighbor point, the method according to claim 8, comprising.
14. Determining the position information of the neighbor point corresponding to the parent point based on the determined position information of the parent point, Calculating the position information of all neighbor points that are on the same plane, on the same straight line, and at the same point as the parent point based on the determined position information of the parent point, and obtaining the position information of the first number of neighbor points, Comparing the position information of the first number of neighbor points with the position information of the current point respectively, When the position information of the neighbor point is smaller than the position information of the current point, discarding the position information of the neighbor point, When the position information of the neighbor point is greater than or equal to the position information of the current point, retaining the position information of the neighbor point, obtaining the position information of the second number of neighbor points, and the second number is less than or equal to the first number, Determining the position information of the second number of neighbor points as the position information of the neighbor point corresponding to the parent point, the method according to claim 13, comprising.
15. An encoder, comprising a first determination unit, a first right shift unit, a first search unit, and a first classification unit, The first determination unit determines position information of points in the point cloud waiting for classification based on the point cloud waiting for classification, and determines a right shift bit number N corresponding to the i-th detailed level (LOD) layer in the point cloud waiting for classification, where i is an integer greater than or equal to 0, and N i is set to be determined, and N i is an integer greater than 0, and M represents the maximum preset layer number of LOD classification. The first right shift unit is configured to right-shift the position information of the points in the point cloud waiting for classification by N bits with respect to the i-th LOD layer, and store it in a preset storage area based on the right-shifted position information. i The first determination unit is further set to determine the position information of the parent point corresponding to the current point in the i-th LOD layer, The first search unit is configured to search for a neighbor point corresponding to the parent point in the preset storage area based on the position information of the determined parent point. The first division unit is an encoder configured to divide the current point into the (i + 1)-th LOD layer or divide the neighbor point into the i-th LOD layer. **Claim 16** A decoder comprising a second determination unit, a second right shift unit, a second search unit, and a second division unit. The second determination unit determines position information of points in the point cloud waiting for classification based on the point cloud waiting for classification, and determines a right shift bit number N corresponding to the i-th detailed level (LOD) layer in the point cloud waiting for classification, where i is an integer greater than or equal to 0, and N i is set to be determined, where i is an integer greater than or equal to 0, and N i is an integer greater than 0, and M indicates the maximum preset layer number of the LOD classification The second right shift unit is configured to right-shift the position information of the points in the point cloud waiting for classification by N bits with respect to the i-th LOD layer, and store the right-shifted position information in a preset storage area based on the right-shifted position information. i The second determination unit is further configured to determine the position information of a parent point corresponding to the current point in the i-th LOD layer. The second search unit is configured to search for a neighbor point corresponding to the parent point in the preset storage area based on the position information of the determined parent point. The second division unit is a decoder configured to divide the current point into the (i + 1)-th LOD layer or divide the neighbor point into the i-th LOD layer.
Citation Information
Patent Citations
Point cloud encoding and decoding method, encoding device and decoding device
CN109889840A
Point Cloud Compression
US20190080483A1
Bezier volume representation of point cloud attributes
US20190228050A1
Indexation of massive point cloud data for efficient visualization
US20200027248A1
Information processing device and method
WO2019078000A1