Partitioning method, encoder, decoder, and computer storage media
Patent Information
- Application Number
- KR1020227023052
- Authority / Receiving Office
- KR · KR
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2020-01-06
- Publication Date
- 2026-09-11
- Estimated Expiration
- 2040-01-06
Smart Images

Figure 112022070000702-PCT00052_ABST
Abstract
Description
Technology Field
[0001] The embodiments of the present application relate to level of detail (LOD) partitioning technology in the field of video encoding / decoding technology, and in particular to a partitioning method, an encoder, a decoder, and a computer storage medium. Background Technology
[0002] In a geometry-based point cloud compression (G-PCC) encoder frame, the geometry information of the point cloud and the attribute information corresponding to each point cloud are encoded separately. After the geometry encoding is completed, reconstruction is performed on the geometry information, and the encoding of the attribute information depends on the reconstructed geometry information. Here, the encoding of attribute information mainly concerns the encoding of color information, and there are mainly two transformation methods for encoding color information: one is an enhancement transformation that performs LOD division based on distance, and the other is a Region Adaptive Hierarchal Transform (RAHT) that performs it directly. Both of these methods convert color information from the spatial domain to the frequency domain, obtain high frequency coefficients and low frequency coefficients through the transformation, and finally, perform quantization on the coefficients and encode them to generate a binary bit stream.
[0003] Currently, when performing distance-based LOD segmentation on point clouds, computational complexity is high on the one hand, and on the other, due to incomplete consideration of factors, neighbor nodes obtained through search are not sufficiently accurate, resulting in larger prediction residuals; this increases the number of encoding bits, thereby reducing encoding efficiency. The problem to be solved
[0004] Embodiments of the present application provide a partitioning method, an encoder, a decoder, and a computer storage medium, which can increase the accuracy of neighbor node prediction attributes and effectively reduce encoding bit overhead, thereby increasing encoding / decoding efficiency. means of solving the problem
[0005] The technical method of the embodiment of the present application can be implemented as follows.
[0006] In a first aspect, an embodiment of the present application provides a splitting method applicable to an encoder or a decoder, wherein the method comprises:
[0007] Computing the main code of the points among the point clouds to be divided based on the point cloud to be divided;
[0008] The number of right shift bits (N) corresponding to the i-th level of detail (LOD) layer of the point cloud to be segmented above i Determining ); where, i is an integer greater than or equal to 0 and N i is an integer greater than 0;
[0009] Determines whether i is less than or equal to M-1; where M represents the number of preset layers for LOD partitioning;
[0010] When i is less than or equal to M-1, for the i-th LOD layer, the modal code of the points in the point cloud to be segmented is N i Shift to the right by bits, and also store the former code after the right shift in a preset storage area;
[0011] Determines the parent code of the parent node corresponding to the current node among the i-th LOD layers;
[0012] Searching for neighbor nodes corresponding to the parent node within the preset storage area by the Morton code of the determined parent node;
[0013] Dividing the current node into the i-th LOD layer and dividing the neighboring node into the i+1-th LOD layer;
[0014] Update i by i+1 and return a determination of whether i is less than or equal to M-1;
[0015] When i is greater than M-1, it includes determining the LOD layers from the 0th LOD layer to the M-1th LOD layer as LOD layers corresponding to the division of the point cloud to be divided.
[0016] In a second aspect, an embodiment of the present application provides an encoder, wherein the encoder comprises a first computing unit, a first decision unit, a first judgment unit, a first right shift unit, a first search unit, and a first division unit, wherein,
[0017] The first computing unit is configured to compute the modal code of a point among the point clouds to be divided based on the point cloud to be divided;
[0018] The first decision unit is the number of right shift bits (N) corresponding to the i-th level of detail (LOD) layer of the point cloud to be divided. i It is configured to determine ); where i is an integer greater than or equal to 0 and N i is an integer greater than 0;
[0019] The first judgment unit is configured to determine whether i is less than or equal to M-1; where M represents the number of preset layers of LOD partitioning;
[0020] The first right shift unit N is the mother code of the point among the point clouds to be divided for the i-th LOD layer when i is less than or equal to M-1. i It is configured to shift to the right by bits and also store the former code after the right shift in a preset storage area;
[0021] The first decision unit is also configured to determine the parent node's modulo code corresponding to the current node among the i-th LOD layers;
[0022] The first search unit is configured to search for neighbor nodes corresponding to the parent node within the preset storage area by the Morton code of the determined parent node;
[0023] The first partitioning unit is configured to partition the current node into the i-th LOD layer and the neighboring node into the i+1-th LOD layer;
[0024] The first decision unit is also configured to update i by i+1 and return a decision on whether i is less than or equal to M-1;
[0025] The first decision unit is also configured to determine the LOD layers from the 0th LOD layer to the M-1th LOD layer as LOD layers corresponding to the division of the point cloud to be divided when i is greater than M-1.
[0026] An embodiment of the present application in a third aspect provides an encoder, wherein the encoder includes a first memory device and a first processor, and wherein,
[0027] The first memory device stores a computer program that can be run on a first processor;
[0028] The first processor executes the above method of the first aspect when running a computer program.
[0029] In a fourth aspect, an embodiment of the present application provides a decoder, wherein the decoder comprises a second computing unit, a second decision unit, a second judgment unit, a second right shift unit, a second search unit, and a second division unit, wherein,
[0030] The second computing unit is configured to compute the modal code of the points in the point cloud to be divided based on the point cloud to be divided;
[0031] The second decision unit is the number of right shift bits (N) corresponding to the i-th level of detail (LOD) layer of the point cloud to be divided. i It is configured to determine ); where i is an integer greater than or equal to 0 and N i is an integer greater than 0;
[0032] The second judgment unit is configured to determine whether i is less than or equal to M-1; where M represents the number of preset layers of LOD partitioning;
[0033] The second right shift unit N is the Morton code of the points in the point cloud to be divided for the i-th LOD layer when i is less than or equal to M-1. i It is configured to shift to the right by bit and also store the Morton code after the right shift in a preset storage area;
[0034] The second decision unit is also configured to determine the parent node's modulo code corresponding to the current node among the i-th LOD layers;
[0035] The second search unit is configured to search for neighbor nodes corresponding to the parent node within the preset storage area by the Morton code of the determined parent node;
[0036] The second partitioning unit is configured to partition the current node into the i-th LOD layer and partition the neighboring node into the i+1-th LOD layer;
[0037] The second decision unit is also configured to update i by i+1 and return a decision on whether i is less than or equal to M-1;
[0038] The second decision unit is also configured to determine the LOD layers from the 0th LOD layer to the M-1th LOD layer as LOD layers corresponding to the division of the point cloud to be divided when i is greater than M-1.
[0039] In a fifth aspect, an embodiment of the present application provides a decoder, wherein the decoder includes a second memory device and a second processor, and wherein,
[0040] The second memory device stores a computer program that can be run on a second processor;
[0041] The second processor executes the above method of the first aspect when running a computer program.
[0042] In a sixth aspect, an embodiment of the present application provides a computer storage medium, wherein a computer program is stored in the computer storage medium, and when the computer program is executed by a first processor, the method of the first aspect is implemented, or when it is executed by a second processor, the method of the first aspect is implemented. Effects of the invention
[0043] Embodiments of the present application provide a partitioning method, an encoder, a decoder, and a computer storage medium, wherein a number of right shift bits (N) corresponding to the i-th level of detail (LOD) layer of the point cloud to be partitioned is computed based on the point cloud to be partitioned. i Determines ), where i is an integer greater than or equal to 0, and N i is an integer greater than 0; determines whether i is less than or equal to M-1, where M represents the number of preset layers for LOD segmentation; and when i is less than or equal to M-1, N is the modal code of the points in the point cloud to be segmented for the i-th LOD layer. iShift to the right by bit, and also store the Morton code after the right shift in a preset storage area; determine the Morton code of the parent node corresponding to the current node among the i-th LOD layers; search for neighbor nodes corresponding to the parent node within the preset storage area based on the determined Morton code of the parent node; divide the current node into the i-th LOD layer and divide the neighbor nodes into the i+1-th LOD layer; update i by i+1 and return a determination of whether i is less than or equal to M-1; when i is greater than M-1, determine the LOD layers from the 0th LOD layer to the M-1-th LOD layer as the LOD layers corresponding to the division of the point cloud to be divided; In this way, the technical solution of the present application no longer computes the spatial distance between the current node and neighbor nodes, but instead searches for neighbor nodes of the parent node corresponding to the current node using Morton code whenever the LOD layer is partitioned, and predicts neighbor nodes using the current node as a sampling point, thereby reducing computational complexity. Furthermore, because it considers the spatial distribution characteristics of the point cloud, it increases the accuracy of the predicted attributes of neighbor nodes and improves the reconstruction quality of the attribute parts, which can effectively reduce the overhead of encoding bits and further improve encoding / decoding efficiency. Brief explanation of the drawing
[0044] Figure 1 is a flow block diagram of G-PCC encoding provided in the relevant technical plan. Figure 2 is a flow block diagram of G-PCC decoding provided in the relevant technical plan. Fig. 3A is a structural diagram of the LOD generation process provided in the relevant technical plan. FIG. 3B is a structural diagram of another LOD generation process provided in the related technical plan. FIG. 4 is a flowchart of a segmentation method provided by an embodiment of the present application. FIG. 5 is a flowchart for determining the initial right shift bit number provided by an embodiment of the present application. FIG. 6 is a diagram of the spatial relationship between the current node and neighboring nodes provided by an embodiment of the present application. FIG. 7 is a detailed flowchart of the division method provided by an embodiment of the present application. FIG. 8 is a diagram of the configuration structure of an encoder provided by an embodiment of the present application. FIG. 9 is a diagram of the specific hardware structure of an encoder provided by an embodiment of the present application. FIG. 10 is a diagram of the configuration structure of a decoder provided by an embodiment of the present application. FIG. 11 is a diagram of the specific hardware structure of a decoder provided by an embodiment of the present application. Specific details for implementing the invention
[0045] To further understand the specifics and technical details of the embodiments of the present application, the implementation of the embodiments of the present application is described in detail below with reference to the drawings. The attached drawings are for illustrative purposes only and are not intended to limit the embodiments of the present application.
[0046] In a point cloud G-PCC encoder frame, slice segmentation is performed on the point cloud inputting a 3D picture model, and then independent encoding is performed for each slice.
[0047] Referring to FIG. 1, a flow block diagram of the G-PCC encoding flow provided for the related technical method is illustrated. In the flow block diagram of the G-PCC encoding flow shown in FIG. 1, regarding the point cloud data to be encoded, which is applied to the point cloud encoder, the point cloud data is first divided into multiple slices through slice partitioning. In each slice, the geometry information of the point cloud and the attribute information corresponding to each point cloud are encoded separately. During the geometry encoding process, coordinate transformation is first performed on the geometry information to contain all point clouds within a single bounding box, and then quantization is performed. The quantization at this stage serves as the primary zoom, and because the geometry information of some point clouds is made identical due to rounding during quantization, a decision is made whether to remove repeating points based on parameters; the process of quantization and removal of repeating points is also referred to as the voxelization process. Subsequently, octal tree partitioning is performed on the bounding box. In a geometry information encoding flow based on an octal tree, the bounding box is divided into 8 subcubes, and the non-empty (points in the point cloud) subcubes are continuously divided into 8 equal parts. When the leaf node obtained by the division becomes a unit cube of 1x1x1, the division is stopped, arithmetic encoding is performed on the points among the leaf nodes, and a binary geometry bit stream, i.e., a geometry bit stream, is generated.In the geometry information encoding process based on a triangle soup (trisoup), octal tree partitioning must also be performed first; however, unlike geometry information encoding based on an octal tree, the trisoup does not require the point cloud to be divided step-by-step into unit cubes with sides of 1x1x1, and the partitioning stops when the block (sub-block) is divided into W sides. For each block, up to 12 vertices (intersections) are obtained based on the surface formed by the distribution of the point cloud and the 12 side lengths of the corresponding surface and block. Arithmetic encoding (surface fitting based on intersections) is performed on the vertices, and a binary geometry bit stream, i.e., a geometry bit stream, is generated. The vertices are also used in the implementation of the geometry reconstruction process, and the set information of the reconstruction is used when encoding the attributes of the point cloud.
[0048] Once geometry encoding is complete, the geometry information is reconstructed. Currently, attribute encoding is primarily performed on color information. During the attribute encoding process, color information (i.e., attribute information) is first converted from the RGB color space to the YUV color space. Then, the reconstructed geometry information is used to recolor the point cloud, and the unencoded attribute information is matched with the reconstructed geometry information. There are mainly two conversion methods in the color information encoding process: one is a distance-based enhancement transformation based on Level of Detail (LOD) subdivision, and currently, LOD subdivision mainly involves two methods, such as performing LOD subdivision based on distance (mainly for Category 1 sequences) and performing LOD subdivision based on a fixed sampling rate (mainly for Category 3 sequences); the other is a transformation that directly performs the Region Adaptive Hierarchical Transform (RAHT). Here, both of these methods convert color information from the spatial domain to the frequency domain, obtain high frequency coefficients and low frequency coefficients through the conversion, and finally perform quantization on the coefficients (i.e., coefficient quantization). Finally, after performing slice synthesis of geometry encoding data and quantization coefficient processing attribute encoding data that have undergone octal tree splitting and surface fitting, the vertex coordinates of each block are sequentially encoded (i.e., arithmetic encoding), and a binary attribute bit stream, i.e., an attribute bit stream, is generated.
[0049] Referring to FIG. 2, a flow block diagram of G-PCC decoding provided in the relevant technical method is illustrated. In the flow block diagram of G-PCC decoding shown in FIG. 2, the point cloud decoder is applied, and for the acquired binary bit stream, decoding is first performed independently on the geometry bit stream and the attribute bit stream within the binary bit stream. When decoding is performed on the geometry bit stream, geometry information of the point cloud is acquired through arithmetic decoding, octal tree synthesis, surface fitting, reconstructed geometry, and inverse coordinate transformation; when decoding is performed on the attribute bit stream, attribute information of the point cloud is acquired through arithmetic decoding, inverse quantization, inverse transform enhancement based on LOD or inverse transform based on RAHT, and a 3D picture model of the point cloud data to be encoded is restored based on the geometry information and attribute information.
[0050] In the flow block diagram of G-PCC encoding shown in Fig. 1, LOD segmentation is primarily used in two methods: Predicting and lifting in point cloud attribute transformation. Below, we will provide a detailed explanation of performing LOD segmentation based on distance.
[0051] Specifically, LOD partitioning is a distance threshold of one group ( Marked as, Through ), the input point cloud at a different level of detail ( Marked as, It divides the points in the point cloud into different sets ( Splits into ). Here, the corresponding distance threshold can be a user-defined value. Distance threshold( )silver and Two conditions must be met.
[0052] The LOD segmentation process involves reconstructing the point cloud geometry, at which point the geometry coordinate information of the point cloud can be directly obtained. The LOD segmentation process can be applied simultaneously to a point cloud encoder and a point cloud decoder as follows.
[0053] (1) Place all points of the point cloud into the “unvisited” point set and initialize the “visited” point set (indicated by V) as an empty set.
[0054] (2) Continuously repeat the process of dividing the LOD layer, and Level of detail corresponding to repetition ( The generation process is as follows.
[0055] a, iterating through all points in the point cloud;
[0056] b, if the current point has already been traversed, ignore that point;
[0057] c, otherwise, compute the distance from the corresponding point to each point of the set (V), and record the closest distance among them as D;
[0058] d, distance (D) is threshold ( If it is greater than or equal to ), the corresponding point is at the level of detail ( Adding to ) and set(V);
[0059] e, repeating the process from a to d until all points in the point cloud have been traversed;
[0060] (3), For the th LOD set, that is is the level of subdivision , , … , Points are merged and acquired;
[0061] (4), the process from (1) to (3) is repeated continuously until all LOD layers are created or all points are traversed.
[0062] Referring to FIG. 3A, a structural diagram of the LOD generation process provided by the technical solution related thereto is illustrated. In FIG. 3A, the point cloud contains 10 points P0, P1, P2, P3, P4, P5, P6, P7, P8, and P9. Since LOD segmentation is performed based on a distance threshold, P0, P5, P4, and P2 are included in order within the LOD0 set, P0, P5, P4, P2, P1, P6, and P3 are included in order within the LOD1 set, and P0, P5, P4, P2, P1, P6, P3, P9, P8, and P7 are included in order within the LOD2 set.
[0063] The related technical solution proposes a method for performing LOD partitioning based on Morton code. Compared to the method of performing LOD partitioning by searching and traversing all original points, the method of performing LOD partitioning based on Morton code can reduce computational complexity.
[0064] Specifically, since Morton encoding is also referred to as a z-order code, its encoding order follows the spatial z-order. First, the variable ( Represents points from the input point cloud as ), and variables( )Is This is Morton code related to, and here, The description of the specific process for computing Morton code is as follows: for a 3-dimensional coordinate where each component is represented by a d-bit binary number, the representation of its three coordinate components is implemented in the following manner.
[0065] , ,
[0066] Here, are each , , The best beat of ( From ) the lowest bit( It is a binary value corresponding to ). Morton code( )Is , , Starting from the highest bit, sequentially The least significant bit is arranged in an alternating array, and the calculation formula for M is as shown below.
[0067] (1)
[0068] Here, are each The best beat of ( From ) the lowest bit( It is the value as ). The Morton code of each point in the point cloud ( After obtaining ), the points in the point cloud are ranked from the smallest moton code to the largest moton code.
[0069] Furthermore, D0 (initial distance threshold) and ρ (distance threshold ratio when splitting adjacent LOD layers) are user-defined initial parameters, and ρ > 1. I represents the index of all points, and it is assumed that during the k-th iteration, points within LODk find their nearest neighbors—that is, the points closest in distance—from layers LOD0 to LODk-1; k = 1, 2, ..., N-1. Here, N is the total number of layers for LOD splitting; and when k = 0, during the 0th iteration, points within LOD0 directly find their nearest neighbors within LOD0. The specific process is as follows.
[0070] (1), the initialization split distance threshold is is;
[0071] (2), when iterating the k-th time, set L(k) stores points belonging to the LOD of the k-th layer, and set O(k) stores a set of points with a higher level of detail than the LODk layer. Here, the computing process of L(k) and O(k) is as follows.
[0072] First, O(k) and L(k) are both initialized to empty sets;
[0073] Next, each iteration is traversed in the order of the indices of the points stored in set (I). Specifically, each iteration computes the geometric distance from the current point to all points within a specific range of set O(k), and also, based on the Morton code corresponding to the current point in I, looks up the first index in set O(k) greater than the Morton code point corresponding to the current point, and then performs a lookup within a search range (SR1) of that index (where SR1 indicates a search range based on Morton codes, typically set to values 8, 16, or 64); if the distance of the current point within that range is a threshold ( If a point smaller than ) is found, add the current point to set L(k), otherwise add the current point to set O(k);
[0074] (3), in each iteration, sets L(k) and O(k) are computed, and points in O(k) are used to predict points in set L(k). It is assumed that set R(k) = L(k) \L(k-1), that is, R(k) represents the set of points that differ between sets LOD(k-1) and LOD(k). For points in set R(k), h (typically h can be set to 3) closest predicted neighbors in set O(k) are looked up. The specific process for finding the closest neighbors is as follows.
[0075] a, points of set R(k) (P iFor ), the Morton code corresponding to the point is M i is;
[0076] b, current point (P at set O(k) i Morton code (M) corresponding to ) i Retrieves the index (j) of the first point greater than );
[0077] c, based on index (j), at the current point (P) in one of the search ranges [j-SR2, j+SR2] of set O(k) (where SR2 represents a single search range and is generally set to values 8, 16, 32, 64). i Looking up the nearest neighbors of );
[0078] (4), the process from (1) to (3) is repeated continuously until all points in set (I) are traversed.
[0079] Referring to FIG. 3B, a structural diagram of another LOD generation process provided by the related technical method is illustrated. In FIG. 3B, the point cloud contains 10 points P0, P1, P2, P3, P4, P5, P6, P7, P8, and P9. LOD segmentation is performed based on Morton codes, and first, the Morton codes are ranked in ascending order, i.e., P4, P1, P9, P5, P0, P6, P8, P2, P7, and P3; then, the nearest neighbors are queried, and then the LOD0 set still contains P0, P5, P4, and P2 in order, the LOD1 set still contains P0, P5, P4, P2, P1, P6, and P3 in order, and the LOD2 set still contains P0, P5, P4, P2, P1, P6, P3, P9, P8, and P7 in order.
[0080] However, the current solution performs LOD segmentation based on different distance thresholds before predicting and lifting point cloud attribute transformations. Specifically, the current LOD segmentation computes the distance between every point at every step; if the distance between a point and all other points is less than the distance threshold, that point can be added to the current LOD layer, otherwise, it is placed in the next layer to perform LOD segmentation. This process is endlessly repeated based on different threshold ranges until all points are traversed or all LOD layers are segmented and completed, resulting in high computational complexity. Furthermore, since different point clouds have different spatial distributions that cause object densities to vary, performing LOD segmentation based on distance thresholds fails to consider the spatial distribution characteristics of the point clouds. Consequently, neighbor nodes obtained through search become inaccurate, leading to a larger residual in predictions based on neighbor node predictions. This results in significant redundancy in attribute information and an increased number of encoded bits, making it impossible to guarantee optimal encoding / decoding efficiency.
[0081] Embodiments of the present application provide a segmentation method, which can be applied to an encoder (also referred to as a point cloud encoder) or a decoder (also referred to as a point cloud decoder). Herein, based on the point cloud to be segmented, the Morton code of a point in the point cloud to be segmented is computed; and the number of right shift bits (N) corresponding to the i-th Level of Detail (LOD) layer in the point cloud to be segmented i Determines ), where i is an integer greater than or equal to 0, and N iis an integer greater than 0; determines whether i is less than or equal to M-1, where M represents the number of preset layers for LOD segmentation; and when i is less than or equal to M-1, N is the modal code of the points in the point cloud to be segmented for the i-th LOD layer. i Shift to the right by bit, and the Morton code after the right shift is stored in a preset storage area; determine the Morton code of the parent node corresponding to the current node among the i-th LOD layers; search for neighbor nodes corresponding to the parent node within the preset storage area based on the determined Morton code of the parent node; divide the current node into the i-th LOD layer and divide the neighbor nodes into the i+1-th LOD layer; update i by i+1 and return a determination of whether i is less than or equal to M-1; when i is greater than M-1, determine the LOD layers from the 0th LOD layer to the M-1-th LOD layer as the LOD layers corresponding to the division of the point cloud to be divided; Then, the technical solution of the present application can reduce computational complexity by no longer computing the spatial distance between the current node and neighbor nodes, but by using Morton codes to search for neighbor nodes of the parent node corresponding to the current node whenever the LOD layer is partitioned, and by predicting neighbor nodes using the current node as a sampling point. Furthermore, by considering the spatial distribution characteristics of the point cloud, it can increase the accuracy of the predicted attributes of neighbor nodes and improve the reconstruction quality of the attribute parts, which can effectively reduce encoding bit overhead and further increase encoding / decoding efficiency.
[0082] Below, a detailed description of the embodiments of the present application will be provided by combining the drawings.
[0083] Referring to FIG. 4, a flowchart of a segmentation method provided by an embodiment of the present application is illustrated. As illustrated in FIG. 4, the method is applied to an encoder or a decoder, and the method may include the following.
[0084] S401, based on the point cloud to be divided, computes the main code of the points among the point clouds to be divided;
[0085] To explain, in a point cloud, a point can be any point in the point cloud or a partial point in the point cloud, and these points are relatively concentrated in space.
[0086] It should also be explained that the segmentation method provided by the embodiment of the present application is intended to improve the process of generating LODs in lifting and predicting attribute transformations; in other words, the segmentation of the LOD layer must first be performed using the segmentation method before performing lifting or predicting transformations. Specifically, the segmentation method can be applied to the part generating LODs in the flow block diagram of G-PCC encoding shown in FIG. 1, and can also be applied to the part generating LODs in the flow block diagram of G-PCC decoding shown in FIG. 2, and can also be applied simultaneously to the part generating LODs in the flow block diagram of G-PCC encoding shown in FIG. 1 and the part generating LODs in the flow block diagram of G-PCC decoding shown in FIG. 2, and the embodiment of the present application is not specifically limited thereto.
[0087] By doing this, after acquiring the point cloud to be segmented, the Morton code of the points within the cloud is first computed. Since the Morton code can be used in subsequent iterative operations to search for neighbor nodes corresponding to the parent node of the current node, it is advantageous for predicting neighbor nodes by using the current node as a sampling point when performing LOD layer segmentation.
[0088] S402, number of right shift bits (N) corresponding to the i-th LOD layer of the point cloud to be divided. i Deciding on );
[0089] As for what needs to be explained, i is an integer greater than or equal to 0 and N i is an integer greater than 0. Segmentation is performed using an iterative method to divide the point cloud to be segmented into multiple LOD layers. Here, the number of layers for LOD segmentation of the point cloud to be segmented can be pre-set, and generally, the pre-set number of layers for LOD segmentation can be represented by M, an integer greater than 0.
[0090] In this way, after determining the Morton code of a point in the point cloud to be segmented, a ranking is also performed on the Morton code of the point in the point cloud to be segmented in order to determine the number of right shift bars corresponding to each LOD layer. Therefore, in some embodiments, the method also,
[0091] It includes performing a ranking on the parent code of a point among the point clouds to be divided according to a preset ranking policy, and determining the parent code after ranking as the parent code of a point among the point clouds to be divided.
[0092] As to be explained, the preset ranking policy may be an ascending policy from smallest to largest, a descending policy from largest to smallest, or other ranking policies (e.g., random ranking policy, etc.); firstly, the preset ranking policy is an ascending policy. In other words, ranking is performed on the point codes of the points in the point cloud to be partitioned in ascending order from smallest to largest, and the ranked codes are determined as the point codes of the points in the point cloud to be partitioned.
[0093] In this way, after ranking the Morton code, the initial right shift bit number of the Morton code of a point in the point cloud to be segmented is determined by the ranked Morton code; wherein the initial right shift bit number represents the right shift bit number (which may be denoted as N0) corresponding to the 0th LOD layer of the Morton code of a point in the point cloud to be segmented. Specifically, in some embodiments, when i is equal to 0, in the case of S402, the right shift bit number (N) corresponding to the i-th LOD layer of the point cloud to be segmented i Determining ) may include the following.
[0094] Sampling is performed on the Morton codes after ranking to obtain the Morton codes of K sampling points; where K is an integer greater than 0;
[0095] Right shift processing is performed on the Morton codes of the above K sampling points to obtain the K sampling points corresponding to the Morton codes after they have been right-shifted;
[0096] Determining whether the K corresponding sampling points after the above Morton code is right-shifted have, on average, each sampling point corresponding to at least one neighbor node;
[0097] If, after the above Morton code is right-shifted, the K corresponding sampling points do not, on average, have each sampling point corresponding to at least one neighbor node, the step of performing right-shift processing on the Morton codes of the K sampling points is continued;
[0098] If, after the above Morton code is right-shifted, the corresponding K sampling points have, on average, each sampling point corresponds to at least one neighbor node, the number of right-shift bits of the K sampling points is obtained, and the number of right-shift bits is determined as the initial number of right-shift bits of the Morton code of the point in the point cloud to be divided; where the initial number of right-shift bits represents the number of right-shift bits (N0) in which the Morton code of the point in the point cloud to be divided corresponds to the 0th LOD layer.
[0099] In other words, when performing the initial LOD layer partitioning, that is, partitioning the 0th LOD layer, the Morton codes of K sampling points are obtained by sampling the Morton codes after they have been ranked; and the Morton codes of these K sampling points are continuously right-shifted until the K sampling points corresponding to the Morton codes after they have been right-shifted have, on average, each sampling point corresponding to at least one neighbor node, and the number of right-shift bits finally obtained is set as the initial right-shift bit number (N0). Specifically, the process of obtaining the initial right-shift bit number (N0) may include the following as illustrated in FIG. 5.
[0100] S501, samples the Morton code after ranking to obtain the Morton code of K sampling points;
[0101] S502, n = 0;
[0102] S503, n = n + 3;
[0103] S504, performs a right shift operation on the first code of K sampling points by n bits;
[0104] S505, determining whether the number of neighbor nodes corresponding to each sampling point on average is greater than 1;
[0105] S506, N0= n.
[0106] As to be explained, n is a preset variable, and the initial value of n is set to 0. The value of n is updated each time using n+3, and the subsequent step (S504), that is, the first code of K sampling points, is right-shifted to n bits.
[0107] Additionally, in the case of step (S505), if the judgment result is determined to be yes, step (S506) is performed to obtain the initial right shift bit number (N0); if the judgment result is determined to be no, the process returns to execute step (S503) until the judgment result of step (S505) becomes yes, thereby finally obtaining the initial right shift bit number (N0).
[0108] It should also be noted that K is an integer greater than 0, and for example, the value of K can be set to 100, but the embodiments of the present application are not specifically limited. In other words, in the process of determining the initial right shift bit number (N0), the value of K is generally set randomly; however, the way K takes a value may also include determining the value of K by performing characteristic analysis on the point cloud to be divided.
[0109] Here, the value of K is generally related to characteristic information of the point cloud to be segmented, such as the number of points and spatial density; by doing so, the value of K is determined by analyzing the characteristics of the point cloud to be segmented, and furthermore, the number of initial right shift bits (N0) can be determined. Since the value of K is combined with the characteristics of the entire point cloud to be segmented, encoding / decoding efficiency can be improved.
[0110] It can be understood that after ranking the Morton codes, the initial number of right shift bits (N0) can also 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, in the case of S402, the number of right shift bits (N) corresponding to the i-th LOD layer among the point clouds to be segmented i Determining ) may include the following.
[0111] Determine the maximum and minimum Morton codes based on the Morton codes after ranking;
[0112] Computing the difference between the above maximum Morton code and the above minimum Morton code;
[0113] Right shift processing is performed on the above difference value, and when the difference value after right shifting satisfies a preset range, the number of right shift bits of the above difference value is obtained;
[0114] The above number of right shift bits is determined as the initial number of right shift bits of the point cloud to be divided.
[0115] As to what needs to be explained, since Morton codes are ranked in ascending order from smallest to largest, the maximum Morton code and minimum Morton code are determined by the Morton codes after ranking, and furthermore, the difference between the maximum Morton code and the minimum Morton code (which can be represented as delta) can be computed.
[0116] By shifting the delta bit to the right, if the delta bit is shifted N bits to the right, the delta after the shift can be obtained, and the delta after the shift can satisfy a preset range, at which point N can be determined as the initial number of right shift bits (N0). Here, when the delta bit is shifted N bits to the right, the maximum turn bit is shifted N bits to the right and the minimum turn bit is shifted N bits to the right, and the difference between the two is computed; the difference obtained can be seen as the delta bit shifting N bits to the right.
[0117] In addition, the preset range indicates whether the number of neighbor nodes corresponding to each sampling point is greater than 1 on average. In this way, when the difference value after shifting to the right by N bits satisfies the preset range, the number of right shift bits (N) is determined as the initial number of right shift bits (N0), thereby increasing encoding / decoding efficiency.
[0118] Furthermore, after the initial right shift bit number (N0), that is, the right shift bit number corresponding to the 0th LOD layer of the point cloud to be divided, is determined, the right shift bit number (N) corresponding to the i-th LOD layer of the point cloud to be divided by the initial right shift bit number (N0) is also determined. i) can be determined, where i is not equal to 0. Specifically, in some embodiments, when i is equal to 0, in the case of S402, the number of right shift bits (N) corresponding to the i-th LOD layer among the point clouds to be divided i In determining )
[0119] Using the first preset computing model, the number of right shift bits (N) corresponding to the i-th LOD layer among the point clouds to be segmented i It may include determining ).
[0120] Furthermore, in some embodiments, the number of right shift bits (N) corresponding to the i-th LOD layer of the point cloud to be divided using the first preset computing model. i In determining ),
[0121] Number of right shift bits corresponding to the i-1th LOD layer (N i-1 Acquiring );
[0122] Number of right shift bits corresponding to the i-1th LOD layer (N i-1 Obtaining an overlapping value by overlapping ) with the preset value;
[0123] The above overlap value is the number of right shift bits (N) corresponding to the i-th LOD layer i It may include deciding as ).
[0124] In other words, when subsequently splitting the LOD layer, the number of right shift bits corresponding to the i-th LOD layer is determined by the number of right shift bits corresponding to the previous LOD layer (the i-1th LOD layer). Here, the first preset computing model is as follows, and
[0125] (2)
[0126] Here, , represents the number of right shift bits of the current LOD layer, that is, the number of right shift bits corresponding to the i-th LOD layer; represents the number of right shift bits of the previous LOD layer, i.e., the number of right shift bits corresponding to the i-1th LOD layer; m is a preset value.
[0127] As to be explained, the preset value may be specifically set based on the actual point cloud spatial conditions; preferably, the preset value may be equal to 3, but the embodiments of the present application are not limited thereto.
[0128] Furthermore, in some embodiments, the method also
[0129] It may include determining the preset value by performing characteristic analysis on the point cloud to be divided.
[0130] Here, the preset values are generally related to characteristic information of the point cloud to be segmented, such as the quantity of points and spatial density; this allows the preset values to be determined by analyzing the characteristics of the point cloud to be segmented. Here, the preset values corresponding to each LOD layer may be the same or different; for example, when computing the number of right shift bits of different LOD layers based on the characteristics of the point cloud to be segmented, the corresponding preset values can be adjusted accordingly, allowing for more accurate retrieval of adjacent areas corresponding to different regions and further improving prediction performance.
[0131] By doing this, the number of right shift bits corresponding to each LOD layer is determined, and then the division of each LOD layer can be performed by right shifting based on the number of right shift bits corresponding to each LOD layer.
[0132] S403, determining whether i is less than or equal to M-1;
[0133] As to be explained, M represents the number of preset layers for LOD division, where M is an integer greater than 0. When i is less than or equal to M-1, each LOD layer must be divided, i.e., steps (S404 to S408) are performed; when i is greater than M-1, the division for each LOD is completed, i.e., step (S409) is performed.
[0134] S404, when i is less than or equal to M-1, for the i-th LOD layer, the former code of the point among the point clouds to be segmented is moved to the right N i Stores the code after shifting bits and also right-shifting in a preset storage area;
[0135] S405, determining the parent code of the parent node corresponding to the current node among the i-th LOD layers;
[0136] S406, searching for neighbor nodes corresponding to the parent node within the preset storage area by the Morton code of the determined parent node;
[0137] S407, dividing the current node into the i-th LOD layer and dividing the neighboring node into the i+1-th LOD layer;
[0138] To explain further, the preset storage area can be denoted as inputMorton. Typically, before splitting each LOD layer, the Morton codes of the points in the point cloud to be split are right-shifted and stored in inputMorton, allowing corresponding neighbor nodes to be queried subsequently using the Morton codes.
[0139] As to be explained, before querying the corresponding neighbor node through the Morton code, the Morton code of the parent node corresponding to the current node among the i-th LOD layers must also be determined first. Specifically, in some embodiments, for S405, determining the Morton code of the parent node corresponding to the current node among the i-th LOD layers includes,
[0140] Number of right shift bits corresponding to the i-th LOD layer (N i Based on ), right shift processing is performed on the former code of the current node among the i-th LOD layers;
[0141] It may include determining the parent code of the parent node corresponding to the current node among the i-th LOD layers as the parent code of the parent node after shifting to the right.
[0142] Here, the Morton code of the current node is denoted as childrenMorton, and the Morton code of the parent node is denoted as parentMorton, and the correspondence between the two is as follows.
[0143] (3)
[0144] In other words, the number of right shift bits (N) corresponding to the i-th LOD layer i Based on ), for the Morton code of the current node (indicated as childrenMorton) among the i-th LOD layers, move N to the right i The Morton code after bit shifting and right shifting can be determined as the Morton code of the parent node corresponding to the current node among the i-th LOD layers (indicated as parentMorton).
[0145] Furthermore, after determining the parent node's modulo code corresponding to the current node, neighbor nodes corresponding to the parent node can also be searched using the parent node's modulo code. Specifically, in some embodiments, in the case of S406, searching for neighbor nodes corresponding to the parent node within the preset storage area using the determined parent node's modulo code includes:
[0146] The Morton code of the neighbor node corresponding to the parent node is determined by the Morton code of the determined parent node;
[0147] It may include searching for a neighbor node corresponding to the neighbor node's Morton code within the preset storage area by the neighbor node's Morton code.
[0148] Furthermore, regarding the determination of the Morton code of the neighbor node corresponding to the parent node by the Morton code of the determined parent node,
[0149] By computing the Morton codes of all neighbor nodes coplanar, collinear, and at the same point as the parent node using the Morton code of the determined parent node, the Morton codes of the first quantity of neighbor nodes are obtained;
[0150] Comparing the Morton codes of the first quantity of neighboring nodes with the Morton code of the current node, respectively;
[0151] When the Morton code of a neighboring node is smaller than the Morton code of the current node, the Morton code of the neighboring node is discarded;
[0152] When 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 withheld to obtain the Morton codes of a second quantity of neighbor nodes; wherein the second quantity is less than or equal to the first quantity;
[0153] It may include determining the parent code of the neighbor node corresponding to the parent node as the parent code of the neighbor node corresponding to the second quantity of neighbor nodes.
[0154] To be explained, after the Morton code of the parent node is determined, the Morton codes of nodes coplanar (a total of 6 neighbor nodes), collinear (a total of 12 neighbor nodes), and at the same point (a total of 8 neighbor nodes) with respect to the parent node can be computed, and by adding the Morton code of the parent node itself, the Morton codes of a first quantity (e.g., 27) of neighbor nodes can be obtained. Since the LOD layer is partitioned in ascending order of Morton codes, the 27 neighbor nodes can be reduced to a second quantity (e.g., 20) of neighbor nodes; Specifically, the Morton codes of 27 neighbor nodes are each compared with the Morton code of the current node, and if the Morton code of a neighbor node is smaller than the Morton code of the current node, the Morton code of that neighbor node may be discarded, for example, if the Morton code of 7 neighbor nodes is smaller than the Morton code of the current node, the Morton codes of these 7 neighbor nodes are removed, and since the Morton codes of the remaining 20 neighbor nodes are greater than or equal to the Morton code of the current node, 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 line (9 neighbor nodes), and neighbor nodes at the same point (7 neighbor nodes).
[0155] For example, with reference to FIG. 6, a diagram illustrating the spatial relationship between a current node and neighbor nodes provided by an embodiment of the present application is illustrated. In FIG. 6, the spatial block indicated in bold is the current node; as can be seen in FIG. 6, there are 6 neighbor nodes in the same plane as the spatial block, 12 neighbor nodes on the same line as the spatial block, and 8 neighbor nodes at the same point as the spatial block. In this way, the Morton code of the neighbor node corresponding to the parent node can be determined by the Morton code of the determined parent node; and the corresponding neighbor node can be searched within a preset storage area (inputMorton) using the Morton code of the neighbor node.
[0156] In this way, for the i-th LOD layer, neighbor nodes are searched and obtained, and the current node is partitioned into the i-th LOD layer, i.e., into set O(k), and neighbor nodes are partitioned into the i+1-th LOD layer, i.e., into set L(k); where k is an integer greater than or equal to 0; partitioning for the i-th LOD layer can be implemented.
[0157] Furthermore, to enhance the effectiveness of the predictive properties of neighbor nodes, the centroid of the adjacent area can also be computed, and then the neighbor nodes can be predicted using the point closest to the centroid as the target node. Accordingly, in some embodiments, after obtaining the Morton codes of a first quantity of neighbor nodes, the method also,
[0158] Based on the point cloud to be divided, the adjacent area corresponding to the current node in the i-th LOD layer is determined;
[0159] Compute the centroid of the above adjacent area, and select the node closest to the centroid from the current node and the first quantity of neighbor nodes as the target node;
[0160] It may include dividing the above target node into the i-th LOD layer and dividing the remaining nodes into the i+1-th LOD layer.
[0161] As to be explained, the remaining nodes represent the current node and the nodes excluding the target node among the first quantity of neighbor nodes. In this way, the neighbor region corresponding to the current node in the i-th LOD layer can be determined by the neighbor node corresponding to the parent node of the current node; then, the centroid of that neighbor region is computed, and then the node closest to that centroid among the current node and the first quantity of neighbor nodes is selected as the target node; in this way, the target node is partitioned into the i-th LOD layer and the remaining nodes are partitioned into the i+1-th LOD layer, and the partitioning for the i-th LOD layer can also be implemented.
[0162] Additionally, it should be explained that after the adjacent region corresponding to the current node is determined in the i-th LOD layer by the neighbor nodes of the parent node corresponding to the current node, the adjacent region can be further divided into other spatial regions, and a corresponding point in the next different spatial region can be selected as the target node; in this way, the target node is divided into the i-th LOD layer and the remaining nodes are divided into the i+1-th LOD layer, and the division of the i-th LOD layer can also be implemented; furthermore, since the adjacent region is divided more spatially, prediction performance can be further improved.
[0163] S408, update i by i+1 and return a determination of whether i is less than or equal to M-1;
[0164] S409, when i is greater than M-1, the LOD layers from the 0th LOD layer to the M-1th LOD layer are determined as LOD layers corresponding to the division of the point cloud to be divided.
[0165] As to explain, after splitting the i-th LOD layer, the value of i is updated using i=i+1 and the next step (S403) is executed, that is, determining whether i is less than or equal to M-1; until the splitting for the M-1-th LOD layer is completed, that is, when i is equal to M, the LOD layer splitting of the point cloud to be split is indicated as completed, and at this time, the LOD layer from the 0th LOD layer to the M-1-th LOD layer can be determined as the LOD layer corresponding to the splitting of the point cloud to be split.
[0166] It should also be explained that after right-shifting the point codes of the points in the point cloud to be segmented, another set can be obtained, that is, by clustering the points in the point cloud to be segmented and dividing the points of adjacent areas of space (i.e., areas where space is relatively concentrated) into the same set; and then performing LOD layer segmentation for each set. Specifically, in some embodiments, the method also,
[0167] A plurality of sets are obtained by shifting the point codes of the points among the point clouds to be divided to the right; wherein each set includes a portion of the point clouds to be divided among the point clouds to be divided;
[0168] For each of the above multiple sets, the step of performing LOD layer segmentation for a portion of the point cloud to be segmented included in each set may be included.
[0169] In other words, the point cloud to be divided is divided into multiple sets by adjusting the number of right shift bits of the Morton code of the points among the point clouds to be divided, and each set includes a part of the point cloud to be divided, i.e., a part of the points; for each set, a neighbor node corresponding to the parent node of the current node is searched based on the Morton code using the division method of the embodiment of the present application, and furthermore, this division method can further improve prediction performance by dividing the point clouds of adjacent regions in space into the same set.
[0170] In an embodiment of the present application, the partitioning of the LOD layer can be performed by finding neighbor nodes based on Morton codes. Specifically, whether it is a method of predicting neighbor nodes using the Morton code of the current node to search for neighbor nodes corresponding to the parent node of the current node (i.e., using the current node as a sampling point) or a method of partitioning adjacent regions of the point cloud space using the Morton code of the current node (i.e., partitioning spatially adjacent parts of the point cloud space to obtain different sets (or clustering), both methods can improve the effect of performing attribute prediction based on neighbor nodes and increase encoding efficiency.
[0171] In other words, neighbor nodes corresponding to the parent node of the current node are searched based on Morton codes, and neighbor nodes are predicted using the current node as a sampling point; by doing so, the effectiveness of attribute prediction based on neighbor nodes can be enhanced by comprehensively considering the spatial distribution characteristics of the point cloud and the spatial distance between points within the point cloud. In other words, the reconstruction quality of the attribute portion can be improved under the premise that it has almost no impact on performance, and encoding / decoding efficiency can be increased by reducing the encoding / decoding time and computational complexity of the predicted attributes. Here, the Peak Signal to Noise Ratio (PSNR) can serve as an objective criterion for picture evaluation, and the higher the PSNR, the better the picture quality; additionally, the BD-rate can be used as a parameter to measure the quality of performance, and a negative BD-rate indicates that the code ratio decreases and performance improves under the same PSNR conditions; based on this, the greater the absolute value of the BD-rate, the greater the performance gain. As shown in Table 1, under the premise that performance is not affected, the bit rate of the color channels (indicated by U and V) of the attribute part can be reduced to further improve the BD-rate of the reconstructed point cloud.
[0172] Point cloud file Initial right shift bit count BD-Attribute time U V Encoder_time Decoder_time frog_00067_vox12 6 -7.4% -16.6% 95% 89% facade_00064_vox11 6 13.3% -4.5% 96% 86% house_without_roof_vox12 6 -3.4% -3.3% 88% 78% Average gain (Average) 6 -0.8% -8.1% 93% 84%
[0173] An embodiment of the present application provides a segmentation method comprising computing the Morton code of a point in the point cloud to be segmented based on the point cloud to be segmented; and a number of right shift bits (N) corresponding to the i-th Level of Detail (LOD) layer in the point cloud to be segmented. i Determines ), where i is an integer greater than or equal to 0, and N iis an integer greater than 0; determines whether i is less than or equal to M-1, where M represents the number of preset layers for LOD segmentation; and when i is less than or equal to M-1, N is the modal code of the points in the point cloud to be segmented for the i-th LOD layer. i Shift to the right by bit, and also store the Morton code after the right shift in a preset storage area; determine the Morton code of the parent node corresponding to the current node among the i-th LOD layers; search for neighbor nodes corresponding to the parent node within the preset storage area based on the determined Morton code of the parent node; divide the current node into the i-th LOD layer and divide the neighbor nodes into the i+1-th LOD layer; update i by i+1 and return a determination of whether i is less than or equal to M-1; when i is greater than M-1, determine the LOD layers from the 0th LOD layer to the M-1-th LOD layer as the LOD layers corresponding to the division of the point cloud to be divided; In this way, the technical solution of the present application can reduce computational complexity by searching for neighbor nodes corresponding to the parent nodes of the current node using Morton codes whenever the LOD layer is partitioned, without computing the spatial distance between the current node and neighbor nodes, and by predicting neighbor nodes using the current node as a sampling point. Furthermore, by considering the spatial distribution characteristics of the point cloud, it increases the accuracy of the predicted attributes of neighbor nodes and improves the reconstruction quality of the attribute parts, which can effectively reduce encoding bit overhead and further improve encoding / decoding efficiency.
[0174] Based on the inventive concept of the aforementioned embodiment, a detailed flowchart of the segmentation method provided by the embodiment of the present application is illustrated with reference to FIG. 7. As illustrated in FIG. 7, it is applied to an encoder or a decoder, and the detailed flowchart may include the following process.
[0175] S701, computing the entire code of the points in the point cloud to be divided based on the point cloud to be divided;
[0176] S702, ranking the parent codes of points in the point cloud to be segmented in ascending order;
[0177] As I explain, in the case of the point cloud to be partitioned, the point cloud to be partitioned contains N points, and each point is P i Indicated by and each point P i The Morton code corresponding to is M i It is assumed that i=0,1,2,…,N-1. In other words, the Morton code (which can be represented as packVoxel) corresponding to a point in the point cloud to be partitioned can be computed first; then, the Morton codes of the points in the point cloud to be partitioned are ranked in ascending order from smallest to largest, and the ranked Morton codes are determined as the Morton codes of the points in the point cloud to be partitioned.
[0178] S703, determining whether lodindex < lodcount;
[0179] As to be explained, lodindex represents the current LOD layer being divided, such as the lodindex LOD layer; lodcount represents the total number of layers to be divided in the point cloud, which is preset; where 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.
[0180] As to what needs to be explained, step (S704) can be performed when the result is determined to be yes if lodindex < lodcount; and the flow can be terminated when lodindex ≥ lodcount, that is, when the result is determined to be no.
[0181] S704, if the result is determined to be yes, determine whether lodindex==0;
[0182] S705, if the result is determined to be yes, compute the number of initial right shift bits (N) of the Morton code of the point in the point cloud to be divided;
[0183] S706, if the result is determined to be No, N curlod =N lastlod +3 and N curlod Determining as N;
[0184] As for what needs to be explained, N curlod represents the number of right shift bits corresponding to the currently processed LOD layer, and N lastlod represents the number of right shift bits corresponding to the previously processed LOD layer; for example, if the initial number of right shift bits corresponding to the 0th LOD layer is 4, the number of right shift bits corresponding to the first LOD layer is 7, the number of right shift bits corresponding to the second LOD layer is 10, the number of right shift bits corresponding to the third LOD layer is 13, and so on, and the number of right shift bits corresponding to each LOD layer can be obtained sequentially.
[0185] In this way, when lodindex < lodcount, further determine whether lodindex is equal to 0; if lodindex is equal to 0, i.e., when the result is determined to be yes, step (S705), i.e., the number of initial right shift bits (N) of the Morton code of the point in the point cloud to be divided can be computed; if lodindex is different from 0, i.e., when the result is determined to be no, step (S706), i.e., N curlod =N lastlod After performing +3, N curlod You can determine N and subsequently perform step (S707).
[0186] S707, shifts the Morton code of a point in the point cloud to be divided to the right by N bits and stores the Morton code after the right shift in inputMorton;
[0187] S708, determining whether pointindex < inputMorton.size;
[0188] As to be explained, pointindex represents the index number of the current node in inputMorton, and inputMorton.size represents the length of inputMorton. Thus, when pointindex < inputMorton.size, that is, when the result is determined to be yes, it indicates that the current node is still in the LOD layer of the lodindex, and at this time, step (S709) must be performed; when pointindex ≥ inputMorton.size, that is, when the result is determined to be no, it indicates that the current node is not in the LOD layer of the lodindex, and at this time, step (S710) must be performed.
[0189] S709, if the result is determined to be yes, add the current node to set (O(lodindex)), and add the neighbor nodes corresponding to the current node to set L(lodindex);
[0190] S710, pointindex=pointindex+1 and also return to execute step (S708);
[0191] S711, if the result is determined to be no, lodindex=lodindex+1 and return to execute step (S703).
[0192] As to be explained, when pointindex < inputMorton.size, the current node is added to set O (lodindex), i.e., the current node is partitioned into the lodindex-th LOD layer; simultaneously, the neighbor node corresponding to the current node is added to set L (lodindex), i.e., the neighbor node corresponding to the current node is partitioned into the lodindex+1-th LOD layer; then, the step (S708) is executed up to pointindex=pointindex+1 and also pointindex=inputMorton.size-1, thereby implementing the partitioning of the lodindex-th LOD layer. Furthermore, when pointindex ≥ inputMorton.size, it is indicated that the partitioning of the lodindex-th LOD layer is completed, in which case the step (S703) is executed up to lodindex=lodindex+1 and also lodindex=lodcount-1, thereby implementing the partitioning of the lodcount-1-th LOD layer; in this way, the LOD partitioning of the point cloud to be partitioned is implemented; Here, the LOD layers from the 0th LOD layer to the lodcount-1st LOD layer are determined as LOD layers corresponding to the division of the point cloud to be divided.
[0193] Specifically, the Morton codes of K sampling points can be obtained by sampling the Morton codes of the point cloud to be divided after ranking them, and the initial number of right shift bits (N) corresponding to the point cloud to be divided can be obtained by right shifting the Morton codes of these K sampling points, and furthermore, the number of right shift bits corresponding to each LOD layer can be determined. Then, when dividing for each LOD layer, the Morton code of a point among the input point cloud to be divided is right shifted by N bits, and the Morton code after right shifting is stored in inputMorton. At this time, the Morton code corresponding to the parent node of the current node is computed, and the Morton code of its neighbor node can be computed through the parent node, and finally, the neighbor node corresponding to the Morton code of the neighbor node in inputMorton is queried to divide the current node in O(lodindex) and simultaneously divide the queried neighbor node in L(lodindex).
[0194] In the embodiment of the present application, there is no need to compute the spatial distance between the current point and neighbor points. Generally, neighbor nodes that are in the same parent node as the current node in space, and also coplanar, collinear, and at the same point as the current node, can all be considered to have very close spatial distances from the current node and belong to the same neighborhood area. In this case, neighbor nodes corresponding to the parent node of the current node can be queried based on Morton codes. Compared to existing methods that query neighbor nodes based on different distance thresholds, the partitioning method of the embodiment of the present application does not require setting different threshold parameters and does not require computing the spatial distance between points every time, thereby significantly reducing computing complexity.
[0195] Furthermore, in the embodiment of the present application, whenever the LOD layer is partitioned, a neighbor node corresponding to the parent node of the current node is determined, and the current node is added to set O(k), and a neighbor node corresponding to the current node is added to set L(k). Therefore, not only the spatial geometry distance between points is considered, but the spatial distribution characteristics of the point cloud based on the spatial distribution must also be considered. In other words, by comprehensively considering the spatial geometry distance of points in space and the spatial distribution characteristics of the point cloud in space, prediction performance can be improved and better encoding / decoding performance can be obtained. Of particular note is that the partitioning method of the embodiment of the present application merely queries the neighbor nodes of the current node based on the Morton code of the original point cloud and performs sampling, and the computational complexity can be significantly reduced compared to the original partitioning method, which queries the nearest neighbor within a certain range through the index of the Morton code every time.
[0196] The present embodiment provides a partitioning method, which can be applied to an encoder or a decoder. The specific implementation of the above-described embodiment is described in detail through the above-described embodiment. As can be seen here, the technical solution of the present application does not compute the spatial distance between the current node and neighbor nodes, but instead, whenever the LOD layer is partitioned, searches for a neighbor node corresponding to the parent node of the current node using Morton code and predicts neighbor nodes using the current node as a sampling point. This not only reduces computational complexity but also increases the accuracy of the predicted attributes of neighbor nodes and improves the reconstruction quality of the attribute parts by considering the spatial distribution characteristics of the point cloud. This effectively reduces encoding bit overhead and further improves encoding / decoding efficiency.
[0197] Based on the concept of the invention as described above, with reference to FIG. 8, a structural diagram of the encoder (80) provided by the embodiment of the present application is illustrated. As shown in FIG. 8, the encoder (80) may include a first computing unit (801), a second decision unit (802), a first judgment unit (803), a first right shift unit (804), a first search unit (805), and a first division unit (806), wherein,
[0198] The first computing unit (801) is configured to compute the modal code of a point among the point clouds to be divided based on the point cloud to be divided;
[0199] The first decision unit (802) has a number of right shift bits (N) corresponding to the i-th level of detail (LOD) layer of the point cloud to be divided. i It is configured to determine ); where i is an integer greater than or equal to 0 and N i is an integer greater than 0;
[0200] The first judgment unit (803) is configured to determine whether i is less than or equal to M-1; where M represents the number of preset layers of LOD division;
[0201] The first right shift unit (804) [determines] the original code of the point among the point clouds to be divided for the i-th LOD layer when i is less than or equal to M-1. i It is configured to shift to the right by bit and also store the Morton code after the right shift in a preset storage area;
[0202] The first decision unit (802) is also configured to determine the parent node's modulo code corresponding to the current node among the i-th LOD layers;
[0203] The first search unit (805) is configured to search for neighbor nodes corresponding to the parent node within the preset storage area based on the parent node's modal code;
[0204] The first division unit (806) is configured to divide the current node into the i-th LOD layer and divide the neighboring node into the i+1-th LOD layer;
[0205] The first judgment unit (803) is also configured to update i by i+1 and return a judgment of whether i is less than or equal to M-1;
[0206] The first decision unit (802) is also configured so that when i is greater than M-1, the LOD layer from the 0th LOD layer to the M-1th LOD layer is determined as the LOD layer corresponding to the division of the point cloud to be divided.
[0207] Referring to FIG. 8 in the above-described method, the encoder (80) may also include a first ranking unit (807) and is configured to rank the main code of a point among the point clouds to be divided according to a preset ranking policy, and to determine the main code after ranking as the main code of a point among the point clouds to be divided.
[0208] Referring to FIG. 8 in the above-described method, the encoder (80) may also include a first sampling unit (808) and is configured to sample Morton codes after ranking to obtain Morton codes of K sampling points; where K is an integer greater than 0;
[0209] The first right shift unit (804) is also configured to right shift the Morton code of the K sampling points to obtain the K sampling points corresponding after right shifting the Morton code;
[0210] The first judgment unit (803) also determines whether the K sampling points corresponding after the Morton code is right-shifted have, on average, each sampling point corresponding to at least one neighbor node; and if the K sampling points corresponding after the Morton code is right-shifted do not have, on average, each sampling point corresponding to at least one neighbor node, the step of performing right-shift processing on the Morton code of the K sampling points continues; and if the K sampling points corresponding after the Morton code is right-shifted have, on average, each sampling point corresponding to at least one neighbor node, the number of right-shift bits of the K sampling points is obtained, and the number of right-shift bits is determined as the initial number of right-shift bits of the Morton code of the point in the point cloud to be divided; wherein the initial number of right-shift bits represents the number of right-shift bits (N0) of the Morton code of the point in the point cloud to be divided that corresponds to the 0th LOD layer.
[0211] Referring to FIG. 8 in the above-described method, the encoder (80) may also include a first analysis unit (809) and is configured to determine the value of K by analyzing the characteristics of the point cloud to be divided.
[0212] In the above-described method, the first decision unit (802) is also configured to determine a maximum Morton code and a minimum Morton code based on the Morton code after ranking;
[0213] The first computing unit (801) is also configured to compute the difference value between the maximum Morton code and the minimum Morton code;
[0214] The first right shift unit (804) is also configured to right shift the difference value and acquire the number of right shift bits of the difference value when the difference value after right shifting satisfies a preset range;
[0215] The first decision unit (802) is also configured to determine the number of right shift bits as the initial number of right shift bits of the point cloud to be divided.
[0216] In the above-described method, the first decision unit (802) also uses a first preset computing model when i is not equal to 0 to determine the number of right shift bits (N) corresponding to the i-th LOD layer of the point cloud to be divided. i It is configured to determine ).
[0217] In the above-described method, the first decision unit (802) specifically has a number of right shift bits (N) corresponding to the i-1th LOD layer. i-1 Acquires ); and the number of right shift bits (N) corresponding to the i-1th LOD layer i-1 ) is overlapped with a preset value to obtain an overlap value; and the number of right shift bits (N) corresponding to the i-th LOD layer for the overlap value i It is configured to be determined by ).
[0218] In the above-described method, the first analysis unit (809) is also configured to perform characteristic analysis on the point cloud to be divided and to determine the preset value.
[0219] In the above-described method, the above preset value is equal to 3.
[0220] In the above-described method, the first right shift unit (804) also has a number of right shift bits (N) corresponding to the i-th LOD layer. i It is configured to perform right shift processing on the current node's code among the above i-th LOD layers based on );
[0221] The first decision unit (802) is also configured to determine the Morton code after shifting to the right as the Morton code of the parent node corresponding to the current node among the i-th LOD layers.
[0222] In the above-described method, the first decision unit (802) is also configured to determine the Morton code of a neighbor node corresponding to the parent node by the Morton code of the determined parent node;
[0223] The first search unit (805) is specifically configured to search for a neighbor node corresponding to the Morton code of the neighbor node within the preset storage area by the Morton code of the neighbor node.
[0224] In the above-described method, the first computing unit (801) is also configured to obtain the first quantity of neighboring node codes by computing the parent node codes of all neighboring nodes that are on the same plane, on the same line, and at the same point as the parent node by the parent node code of the parent node determined;
[0225] The first decision unit (802) is specifically configured to compare the Morton codes of the first quantity of neighbor nodes with the Morton code of the current node; and when 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 when the Morton code of the neighbor node is larger than or equal to the Morton code of the current node, retain the Morton code of the neighbor node to obtain the Morton codes of the second quantity of neighbor nodes; wherein the second quantity is smaller 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.
[0226] In the above-described method, the first decision unit (802) is also configured to determine an adjacent area corresponding to the current node among the i-th LOD layers based on the point cloud to be divided;
[0227] The first computing unit (801) is also configured to compute the centroid of the adjacent area and to select the node closest to the centroid among the current node and the first quantity of neighbor nodes as the target node;
[0228] The first splitting unit (806) is also configured to split the target node into the i-th LOD layer and the remaining nodes into the i+1-th LOD layer; wherein the remaining nodes represent the nodes excluding the target node from the current node and the first quantity of neighboring nodes.
[0229] In the above-described method, the first right shift unit (804) is also configured to right shift the point code of the point among the point clouds to be divided to obtain a plurality of sets; wherein each set includes a part of the point cloud among the point clouds to be divided;
[0230] The first division unit (806) is also configured to perform the step of dividing the LOD layer for each of the sets of the plurality of sets, for each part of the point cloud to be divided included in each set.
[0231] In this embodiment, it will be understood that a “unit” may be some circuit, some processor, some program or software, and it is obvious that it may be a module or a non-module. Furthermore, each component in this embodiment may be integrated into a single processing unit, may exist as an independent physical entity of each unit, or may have two or more units integrated into a single unit. The aforementioned integrated unit may be implemented in the form of hardware or in the form of a software function module.
[0232] If the integrated unit is implemented in the form of a software function module and is also sold or used as an independent product, it can be stored on a single computer-readable storage medium. Based thereon, the essential or prior art-contributing parts of the technical solution of the present embodiment, or all or part of the said technical solution, may be implemented in the form of a software product. Since said computer software product may be stored on a single storage medium, some instructions may be included to enable a computer facility (which may be a personal computer, server, or network facility, etc.) or a processor to implement all or part of the steps of the method of each embodiment of the present application. The aforementioned storage medium includes various media capable of storing program code, such as USB memory, shift hard drive, Read Only Memory (ROM), Random Access Memory (RAM), magnetic disk, or optical disk.
[0233] Accordingly, the present embodiment provides a computer storage medium, which is applied to an encoder (80), and the computer storage medium stores a partitioning program, and when the partitioning program is executed by a first processor, any one of the methods of the above-described embodiment is executed.
[0234] Based on the configuration of the encoder (80) and the computer storage medium described above, with reference to FIG. 9, a specific hardware structure of the encoder (80) provided by an embodiment of the present application is illustrated, which may include a first communication interface (901), a first memory device (902), and a first processor (903); and each assembly is coupled through a first bus system (904). It will be understood that the first bus system (904) implements connection communication between these assemblies. In addition to including a data bus in the first bus system (904), a power bus, a control bus, and a status signal bus are also included. However, for clarity, in FIG. 9, various buses are referred to as the first bus system (904). Here,
[0235] The first communication interface (901) is used for receiving and transmitting signals in the process of transmitting and receiving information with other external network elements;
[0236] The first memory device (902) stores a computer program that can be run on the first processor (903);
[0237] The first processor (903) executes the following steps when running the computer program.
[0238] Computing the main code of the points among the point clouds to be divided based on the point cloud to be divided;
[0239] The number of right shift bits (N) corresponding to the i-th level of detail (LOD) layer of the point cloud to be segmented above i Determining ); where i is an integer greater than or equal to 0 and N i is an integer greater than 0;
[0240] Determines whether i is less than or equal to M-1; where M represents the number of preset layers for LOD partitioning;
[0241] When i is less than or equal to M-1, for the i-th LOD layer, the modal code of the points in the point cloud to be segmented is N i Shift to the right by bits, and also store the former code after the right shift in a preset storage area;
[0242] Determines the parent code of the parent node corresponding to the current node among the i-th LOD layers;
[0243] Searching for neighbor nodes corresponding to the parent node within the preset storage area by the Morton code of the determined parent node;
[0244] Dividing the current node into the i-th LOD layer and dividing the neighboring node into the i+1-th LOD layer;
[0245] Update i by i+1 and return a determination of whether i is less than or equal to M-1;
[0246] When i is greater than M-1, the LOD layers from the 0th LOD layer to the M-1th LOD layer are determined as LOD layers corresponding to the division of the point cloud to be divided.
[0247] It will be understood that the first memory device (902) in the embodiment of the present application may be a volatile memory device or a non-volatile memory device, or may include both volatile and non-volatile memory devices. Here, the non-volatile memory device may be a Read-Only Memory (ROM), a Programmable Memory (PROM), an Erasable Programmable Memory (EPROM), an Electrically Erasable Programmable Memory (EEPROM), or a flash memory. The volatile memory may be a Random Access Memory (RAM), which is used as an external high-speed cache. By way of exemplary but not limiting description, many types of RAM are available, such as Static RAM (SRAM), Dynamic RAM (DRAM), Synchronous DRAM (SDRAM), Double Data Rate SDRAM (DDR SDRAM), Enhanced Synchronous DRAM (ESDRAM), Synchronous Link DRAM (SLDRAM), and Direct Rambus RAM (DR RAM). The first memory device (902) of the system and method described in this application is intended to include, but not be limited to, these and any other suitable type of memory device.
[0248] The first processor (903) may be an integrated circuit chip and has the capability to process signals. In the implementation process, each step of the method described above may be completed through an integrated logic circuit of hardware or a software-type instruction of the first processor (903). The 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 elements, individual gate or transistor logic elements, individual hardware components, etc. Each method, step, and logic block diagram disclosed in the embodiments of the present application may be implemented or executed. The general-purpose processor may be a microprocessor, and the processor may also be any general processor, etc. It may be implemented by executing directly with a hardware decoding processor in combination with the steps of the method disclosed in the embodiments of the present application, or it may be completed by executing with a combination of hardware and software modules in the decoding processor. The software module may be located in a mature storage medium in the industry, such as random memory, flash memory, read-only memory, programmable read-only memory, electrically volatile programmable memory, or a register. The storage medium is located in the first memory device (902), and the first processor (903) reads information from the first memory device (902) and combines it with the hardware to complete the steps of the above method.
[0249] It will be understood that the embodiments described in this application may be implemented using hardware, software, firmware, middleware, microcode, or a combination thereof. In a hardware implementation, the processing unit may 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 that perform the functions of this application, or a combination thereof. In a software implementation, the functions of this application are implemented through modules (e.g., processes, functions, etc.) that perform the functions of this application. Software code may be stored in memory and executed by a processor. Memory may be implemented outside of the processor or processor.
[0250] Optionally, as another embodiment, the first processor (903) is also configured to execute any one of the methods of the above embodiments when running the computer program.
[0251] The present embodiment provides an encoder, wherein the encoder may include a first computing unit, a first decision unit, a first judgment unit, a first right shift unit, a first search unit, and a first segmentation unit; wherein the first computing unit is configured to compute the modal code of a point in the point cloud to be segmented based on the point cloud to be segmented; and the first decision unit determines the number of right shift bits (N) corresponding to the i-th level of detail (LOD) layer in the point cloud to be segmentedi It is configured to determine ); 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 determine whether i is less than or equal to M-1; where M represents the number of preset layers for LOD division; and the first right shift unit determines the modal code of a point among the point clouds to be divided for the i-th LOD layer when i is less than or equal to M-1. iIt is configured to shift bits to the right and store the Morton code after the right shift in a preset storage area; the first decision unit is also configured to determine the Morton code of the parent node corresponding to the current node of the i-th LOD layer; the first search unit is configured to search for neighbor nodes corresponding to the parent node within the preset storage area based on the determined Morton code of the parent node; the first division unit is configured to divide the current node into the i-th LOD layer and divide the neighbor nodes into the i+1-th LOD layer; the first judgment unit is also configured to update i by i+1 and determine whether i is less than or equal to M-1; and the first decision unit is also configured to determine the LOD layers corresponding to the division of the point cloud to be divided from the 0th LOD layer to the M-1-th LOD layer when i is greater than M-1. In this way, the technical solution of the present application can reduce computational complexity by searching for neighbor nodes corresponding to the parent nodes of the current node using Morton codes whenever the LOD layer is partitioned, without computing the spatial distance between the current node and neighbor nodes, and by predicting neighbor nodes using the current node as a sampling point. Furthermore, because it considers the spatial distribution characteristics of the point cloud, it increases the accuracy of the predicted attributes of neighbor nodes and improves the reconstruction quality of the attribute parts, which can effectively reduce encoding bit overhead and improve coding efficiency.
[0252] Based on the concept of the invention as described above, with reference to FIG. 10, a structural diagram of the decoder (100) provided by the embodiment of the present application is illustrated. As shown in FIG. 10, the decoder (100) may include a second computing unit (1001), a second decision unit (1002), a second judgment unit (1003), a second right shift unit (1004), a second search unit (1005), and a second division unit (1006), wherein,
[0253] The second computing unit (1001) is configured to compute the modal code of a point among the point clouds to be divided based on the point cloud to be divided;
[0254] The second decision unit (1002) has a number of right shift bits (N) corresponding to the i-th level of detail (LOD) layer of the point cloud to be divided. i It is configured to determine ); where i is an integer greater than or equal to 0 and N i is an integer greater than 0;
[0255] The second judgment unit (1003) is configured to determine whether i is less than or equal to M-1; where M represents the number of preset layers for LOD division;
[0256] The second right shift unit (1004) [determines] the original code of the point among the point clouds to be divided for the i-th LOD layer when i is less than or equal to M-1. i It is configured to shift the bits to the right and also store the Morton code after the right shift in a preset storage area;
[0257] The second decision unit (1002) is also configured to determine the parent node's modulo code corresponding to the current node among the i-th LOD layers;
[0258] The second search unit (1005) is configured to search for neighbor nodes corresponding to the parent node within the preset storage area by the parent node's modal code;
[0259] The second division unit (1006) is configured to divide the current node into the i-th LOD layer and divide the neighboring node into the i+1-th LOD layer;
[0260] The second judgment unit (1003) is also configured to update i by i+1 and return a judgment of whether i is less than or equal to M-1;
[0261] The second decision unit (1002) is also configured to determine the LOD layers from the 0th LOD layer to the M-1th LOD layer as LOD layers corresponding to the division of the point cloud to be divided when i is greater than M-1.
[0262] Referring to FIG. 10 in the above-described method, the decoder (100) may also include a second ranking unit (1007) and is configured to rank the main code of a point among the point clouds to be divided according to a preset ranking policy and determine the main code after ranking as the main code of a point among the point clouds to be divided.
[0263] Referring to FIG. 10 in the above-described method, the decoder (100) may also include a second sampling unit (1008) and is configured to sample Morton codes after ranking to obtain Morton codes of K sampling points; where K is an integer greater than 0;
[0264] The second right shift unit (1004) is also configured to right shift the mother code of the K sampling points to obtain the K sampling points corresponding to the mother code after right shifting;
[0265] The second judgment unit (1003) also determines whether the K sampling points corresponding to the Morton code after it is right-shifted have, on average, each sampling point corresponding to at least one neighbor node; and if the K sampling points corresponding to the Morton code after it is right-shifted do not have, on average, each sampling point corresponding to at least one neighbor node, it continues to perform the step of performing right-shift processing on the Morton code of the K sampling points; and if the K sampling points corresponding to the Morton code after it is right-shifted have, on average, each sampling point corresponding to at least one neighbor node, it obtains the number of right-shift bits of the K sampling points, and is configured to determine the number of right-shift bits as the initial number of right-shift bits of the Morton code of the point in the point cloud to be divided; wherein the initial number of right-shift bits represents the number of right-shift bits (N0) of the Morton code of the point in the point cloud to be divided that corresponds to the 0th LOD layer.
[0266] Referring to FIG. 10 in the above-described method, the decoder (100) may also include a second analysis unit (1009) and is configured to determine the value of K by analyzing the characteristics of the point cloud to be divided.
[0267] In the above-described method, the second decision unit (1002) is also configured to determine a maximum Morton code and a minimum Morton code based on the Morton code after ranking;
[0268] The second computing unit (1001) is also configured to compute the difference value between the maximum Morton code and the minimum Morton code;
[0269] The second right shift unit (1004) is also configured to right shift the difference value and acquire the number of right shift bits of the difference value when the difference value after right shifting satisfies a preset range;
[0270] The second decision unit (1002) is also configured to determine the number of right shift bits as the initial number of right shift bits of the point cloud to be divided.
[0271] In the above-described method, the second decision unit (1002) also uses a first preset computing model when i is not equal to 0 to determine the number of right shift bits (N) corresponding to the i-th LOD layer among the point clouds to be divided. i It is configured to determine ).
[0272] In the above-described method, the second decision unit (1002) specifically has a right shift bit number (N) corresponding to the i-1th LOD layer. i-1 Acquires ); and the number of right shift bits (N) corresponding to the i-1th LOD layer i-1 ) is overlapped with a preset value to obtain an overlap value; and the number of right shift bits (N) corresponding to the i-th LOD layer for the overlap value i It is configured to be determined by ).
[0273] In the above-described method, the second analysis unit (1009) is also configured to perform characteristic analysis on the point cloud to be divided and determine the preset value.
[0274] In the above-described method, the above preset value is equal to 3.
[0275] In the above-described method, the second right shift unit (1004) also has a number of right shift bits (N) corresponding to the i-th LOD layer. i It is configured to shift the current node's modulo code of the i-th LOD layer to the right based on );
[0276] The second decision unit (1002) is also configured to determine the Morton code after shifting to the right as the Morton code of the parent node corresponding to the current node among the i-th LOD layers.
[0277] In the above-described method, the second decision unit (1002) is also configured to determine the parent node's parent code corresponding to the parent node by the parent node's parent code.
[0278] The second search unit (1005) is specifically configured to search for a neighbor node corresponding to the Morton code of the neighbor node within the preset storage area by the Morton code of the neighbor node.
[0279] In the above-described method, the second computing unit (1001) is also configured to obtain the first quantity of neighboring node codes by computing the parent node codes of all neighboring nodes that are on the same plane, on the same line, and at the same point as the parent node by the parent node code of the parent node determined;
[0280] The second decision unit (1002) is specifically configured to compare the Morton codes of the first quantity of neighbor nodes with the Morton code of the current node; and discard the Morton code of the neighbor node when the Morton code of the neighbor node is smaller than the Morton code of the current node; and when 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 to obtain the Morton codes of the second quantity of neighbor nodes; wherein the second quantity is less than or equal to the first quantity; and determine the Morton codes of the second quantity of neighbor nodes as the Morton codes of the neighbor nodes corresponding to the parent node.
[0281] In the above-described method, the second decision unit (1002) is also configured to determine an adjacent area corresponding to the current node among the i-th LOD layers based on the point cloud to be divided;
[0282] The second computing unit (1001) is also configured to compute the centroid of the adjacent area and select the node closest to the centroid among the current node and the first quantity of neighbor nodes as the target node;
[0283] The second division unit (1006) is also configured to divide the target node into the i-th LOD layer and the remaining nodes into the i+1-th LOD layer; wherein the remaining nodes represent the nodes excluding the target node from the current node and the first quantity of neighboring nodes.
[0284] In the above-described method, the second right shift unit (1004) is also configured to acquire a plurality of sets by right-shifting the point code of the point among the point clouds to be divided; wherein each set includes a part of the point cloud to be divided.
[0285] The second division unit (1006) is also configured to perform the step of performing LOD layer division for each of the sets among the plurality of sets, for a portion of the point cloud to be divided included in each set.
[0286] In this embodiment, it will be understood that a “unit” may be some circuit, some processor, some program or software, and it is obvious that it may be a module or a non-module. Furthermore, each component in this embodiment may be integrated into a single processing unit, may exist as an independent physical entity of each unit, or may have two or more units integrated into a single unit. The aforementioned integrated unit may be implemented in the form of hardware or in the form of a software function module.
[0287] The above-mentioned integrated unit may be stored on a single computer-readable storage medium when implemented in the form of a software function module and sold or used as an independent product. Based on this, the present embodiment provides a computer storage medium that is applied to a decoder (100), wherein the computer storage medium stores a partitioning program, and when the partitioning program is executed by a second processor, any one of the methods of the above-mentioned embodiment is executed.
[0288] Based on the configuration of the decoder (100) and the computer storage medium described above, with reference to FIG. 11, a specific hardware structure of the decoder (100) provided by an embodiment of the present application is illustrated, which may include a second communication interface (1101), a second memory device (1102), and a second processor (1103); and each assembly is coupled through a second bus system (1104). It will be understood that the second bus system (1104) implements connection communication between these assemblies. In addition to including a data bus in the second bus system (1104), a power bus, a control bus, and a status signal bus are also included. However, for clarity, in FIG. 11, all various buses are referred to as the second bus system (1104). Here,
[0289] The second communication interface (1101) is used for receiving and transmitting signals in the process of transmitting and receiving information between other external network elements;
[0290] The second memory device (1102) stores a computer program that can be run on the second processor (1103);
[0291] The second processor (1103) performs the following steps when running the computer program.
[0292] Computing the main code of the points among the point clouds to be divided based on the point cloud to be divided;
[0293] The number of right shift bits (N) corresponding to the i-th level of detail (LOD) layer of the point cloud to be segmented above i Determining ); where i is an integer greater than or equal to 0 and N i is an integer greater than 0;
[0294] Determines whether i is less than or equal to M-1; where M represents the number of preset layers for LOD partitioning;
[0295] When i is less than or equal to M-1, for the i-th LOD layer, the modal code of the points in the point cloud to be segmented is N i Shift to the right by bit, and also save the code after the right shift to the preset storage area.
[0296] Determines the parent node's modulo code corresponding to the current node of the i-th LOD layer;
[0297] Searching for neighbor nodes corresponding to the parent node within the preset storage area by the Morton code of the determined parent node;
[0298] Dividing the current node into the i-th LOD layer and dividing the neighboring node into the i+1-th LOD layer;
[0299] Update i by i+1 and return a determination of whether i is less than or equal to M-1;
[0300] When i is greater than M-1, the LOD layers from the 0th LOD layer to the M-1th LOD layer are determined as LOD layers corresponding to the division of the point cloud to be divided.
[0301] Optionally, as another embodiment, the second processor (1103) is also configured to execute any one of the methods of the above embodiments when running the computer program.
[0302] The hardware functions of the second memory device (1002) and the first memory device (902) are similar, and the hardware functions of the second processor (1003) and the first processor (903) are similar; here, a detailed description is omitted.
[0303] The present embodiment provides a decoder, wherein the decoder may include a second computing unit, a second decision unit, a second judgment unit, a second right shift unit, a second search unit, and a second partitioning unit; wherein the second computing unit is configured to compute the modal code of a point in the point cloud to be partitioned based on the point cloud to be partitioned; and the second decision unit determines the number of right shift bits (N) corresponding to the i-th level of detail (LOD) layer in the point cloud to be partitioned. i It is configured to determine ); where i is an integer greater than or equal to 0 and N i is an integer greater than 0; the second decision unit is configured to determine whether i is less than or equal to M-1; where M represents the number of preset layers for LOD segmentation; and the second right shift unit, when i is less than or equal to M-1, N for the Morton code of a point in the point cloud to be segmented for the i-th LOD layer iThe bits are configured to be shifted to the right and the right-shifted Morton code is stored in a preset storage area; the second decision unit is also configured to determine the Morton code of the parent node corresponding to the current node among the i-th LOD layers; the second search unit is configured to search for neighbor nodes corresponding to the parent node within the preset storage area by the determined Morton code of the parent node; the second division unit is configured to divide the current node into the i-th LOD layer and divide neighbor nodes into the i+1-th LOD layer; the second judgment unit is also configured to update i by i+1 and return a judgment on whether i is less than or equal to M-1; and the second decision unit is also configured to determine the LOD layers from the 0th LOD layer to the M-1-th LOD layer as LOD layers corresponding to the division of the point cloud to be divided when i is greater than M-1. In this way, the technical solution of the present application can reduce computational complexity by searching for neighbor nodes corresponding to the parent nodes of the current node using Morton codes whenever the LOD layer is partitioned, without computing the spatial distance between the current node and neighbor nodes, and by predicting neighbor nodes using the current node as a sampling point. Furthermore, because it considers the spatial distribution characteristics of the point cloud, it increases the accuracy of the predicted attributes of neighbor nodes and improves the reconstruction quality of the attribute parts, which can effectively reduce encoding bit overhead and improve coding efficiency.
[0304] As must be explained, in this application, the term “included” or any other variation thereof includes a non-exclusive inclusion, which not only causes such element to be included in a process, method, article, or device comprising a series of elements, but also includes other elements not explicitly enumerated, or elements unique to such process, method, article, or device. Unless further limitations are given, the element limited by the term “one included…” does not exclude the existence of other such elements in the process, method, article, or device comprising the element.
[0305] The example numbers of the present application described above are for illustrative purposes only and do not represent the superiority or inferiority of the examples.
[0306] Among the method embodiments provided in this application, the disclosed method may be combined at will to obtain new method embodiments.
[0307] The disclosed features among the product embodiments provided in this application may be combined at will to obtain new product embodiments.
[0308] The disclosed features among the several method or device embodiments provided in this application may be combined at will to obtain new method embodiments or device embodiments.
[0309] The foregoing is merely a specific method of implementation of the present application, and the scope of protection of the present application is not limited thereto. A person skilled in the art to which the present invention pertains may implement it with various modifications within the technical scope disclosed in the present application, and such modifications should be included within the scope of protection of the present application. Therefore, the scope of protection of the present application must be based on the scope of protection of the claims.
[0310] Industrial applicability
[0311] In an embodiment of the present application, the method is applied to an encoder, and by computing the modal code of a point in the point cloud to be segmented based on the point cloud to be segmented, the number of right shift bits (N) corresponding to the i-th level of detail (LOD) layer of the point cloud to be segmented i Determines ), where i is an integer greater than or equal to 0, and N i is an integer greater than 0; determines whether i is less than or equal to M-1, where M represents the number of preset layers for LOD segmentation; and when i is less than or equal to M-1, N is the modal code of the points in the point cloud to be segmented for the i-th LOD layer. iShift to the right by bit, and also store the Morton code after the right shift in a preset storage area; determine the Morton code of the parent node corresponding to the current node among the i-th LOD layers; search for neighbor nodes corresponding to the parent node within the preset storage area based on the determined Morton code of the parent node; divide the current node into the i-th LOD layer and divide the neighbor nodes into the i+1-th LOD layer; update i by i+1 and return a determination of whether i is less than or equal to M-1; when i is greater than M-1, determine the LOD layers from the 0th LOD layer to the M-1-th LOD layer as the LOD layers corresponding to the division of the point cloud to be divided; In this way, the technical solution of the present application reduces computational complexity by searching for neighbor nodes corresponding to the parent nodes of the current node using Morton codes whenever the LOD layer is partitioned, without computing the spatial distance between the current node and neighbor nodes, and by predicting neighbor nodes using the current node as a sampling point. Furthermore, by considering the spatial distribution characteristics of the point cloud, it increases the accuracy of the predicted attributes of neighbor nodes and improves the reconstruction quality of the attribute parts, which can effectively reduce encoding bit overhead and further improve encoding / decoding efficiency.
Claims
Claim 1 In a segmentation method, applied to an encoder, the method determines position information of a point in the point cloud to be segmented based on the point cloud to be segmented; and when i is less than or equal to M-1, the number of right shift bits (N) corresponding to the i-th Level of Detail (LOD) layer in the point cloud to be segmented i Determining ); i is an integer greater than or equal to 0 and N i is an integer greater than 0, and M represents the maximum number of preset layers for LOD segmentation; for the i-th LOD layer, N is the location information of the points among the point clouds to be segmented. i A partitioning method characterized by including: shifting to the right by bits and storing in a preset storage area based on position information after shifting to the right; determining position information of a parent point corresponding to the current point among the i-th LOD layers; searching for a neighbor point corresponding to the parent point within the preset storage area based on the determined position information of the parent point; and partitioning the current point into the i+1-th LOD layer or partitioning the neighbor point into the i-th LOD layer. Claim 2 A division method according to claim 1, wherein the method further comprises ranking location information of a point among the point clouds to be divided according to a preset ranking policy, and determining the location information after ranking as the location information of the point among the point clouds to be divided. Claim 3 A segmentation method according to paragraph 2, wherein the method further comprises determining a maximum position information and a minimum position information based on position information after ranking; computing a difference value between the maximum position information and the minimum position information; performing a right shift on the difference value, and obtaining the number of right shift bits of the difference value when the difference value after right shift satisfies a preset range; and determining the number of right shift bits as the initial number of right shift bits of the point cloud to be segmented. Claim 4 In claim 1, when i is less than or equal to M-1, the number of right shift bits (N) corresponding to the i-th LOD layer among the point clouds to be divided is i In determining ), the number of right shift bits (N) corresponding to the i-th LOD layer among the point clouds to be segmented using a first preset computing model. i A division method characterized by including determining ). Claim 5 In claim 1, determining the position information of the parent point corresponding to the current point among the i-th LOD layers includes the number of right shift bits (N) corresponding to the i-th LOD layer. i A segmentation method characterized by including, based on ), right-shifting the position information of the current point among the i-th LOD layers; and determining the position information after right-shifting as the position information of the parent point corresponding to the current point among the i-th LOD layers. Claim 6 A partitioning method according to claim 1, wherein searching for a neighbor point corresponding to the parent point within the preset storage area by means of the determined parent point location information includes determining the location information of the neighbor point corresponding to the parent point by means of the determined parent point location information; and searching for a neighbor point corresponding to the location information of the neighbor point within the preset storage area by means of the neighbor point location information. Claim 7 A partitioning method according to claim 6, wherein determining the location information of neighbor points corresponding to the parent point by the location information of the determined parent point comprises: computing the location information of all neighbor points that are in the same plane, on the same line, and at the same point as the parent point by the location information of the determined parent point to obtain a first quantity of location information of neighbor points; comparing the location information of the first quantity of neighbor points with the location information of the current point; discarding the location information of the neighbor points when the location information of the neighbor points is smaller than the location information of the current point; retaining the location information of the neighbor points when the location information of the neighbor points is greater than or equal to the location information of the current point to obtain a second quantity of location information of neighbor points; and determining the location information of the second quantity of neighbor points as the location information of the neighbor points corresponding to the parent point. Claim 8 A segmentation method applied to a decoder, wherein the method comprises: determining position information of a point in the point cloud to be segmented based on the point cloud to be segmented; determining the number of right shift bits (Ni) corresponding to the i-th level of detail (LOD) layer in the point cloud to be segmented when i is less than or equal to M-1; i is an integer greater than or equal to 0 and Ni is an integer greater than 0, and M represents the maximum number of preset layers for LOD segmentation; right-shifting the position information of a point in the point cloud to be segmented by Ni bits for the i-th LOD layer and storing it in a preset storage area based on the position information after right-shifting; determining the position information of a parent point corresponding to the current point in the i-th LOD layer; searching for a neighbor point corresponding to the parent point within the preset storage area based on the determined position information of the parent point; and segmenting the current point into the i+1-th LOD layer or segmenting the neighbor point into the i-th LOD layer. Claim 9 A division method according to claim 8, wherein the method further comprises ranking location information of a point among the point clouds to be divided according to a preset ranking policy, and determining the location information after ranking as the location information of the point among the point clouds to be divided. Claim 10 A segmentation method according to claim 9, wherein the method further comprises determining a maximum position information and a minimum position information based on position information after ranking; computing a difference value between the maximum position information and the minimum position information; performing a right shift on the difference value, and obtaining the number of right shift bits of the difference value when the difference value after right shift satisfies a preset range; and determining the number of right shift bits as the initial number of right shift bits of the point cloud to be segmented. Claim 11 A segmentation method according to claim 8, wherein when i is less than or equal to M-1, determining the number of right shift bits (Ni) corresponding to the i-th LOD layer of the point cloud to be segmented includes determining the number of right shift bits (Ni) corresponding to the i-th LOD layer of the point cloud to be segmented using a first preset computing model. Claim 12 A partitioning method characterized in that, in claim 8, determining the position information of a parent point corresponding to a current point among the i-th LOD layers includes right-shifting the position information of the current point among the i-th LOD layers based on the number of right-shift bits (Ni) corresponding to the i-th LOD layer; and determining the position information after right-shifting as the position information of the parent point corresponding to the current point among the i-th LOD layers. Claim 13 A partitioning method according to claim 8, wherein searching for a neighbor point corresponding to the parent point within the preset storage area by means of the determined parent point location information includes determining the location information of the neighbor point corresponding to the parent point by means of the determined parent point location information; and searching for a neighbor point corresponding to the location information of the neighbor point within the preset storage area by means of the neighbor point location information. Claim 14 A partitioning method according to claim 13, wherein determining the location information of a neighbor point corresponding to the parent point by the location information of the determined parent point comprises: computing the location information of all neighbor points that are in the same plane, on the same line, and at the same point as the parent point by the location information of the determined parent point to obtain a first quantity of location information of neighbor points; comparing the location information of the first quantity of neighbor points with the location information of the current point; discarding the location information of the neighbor points when the location information of the neighbor points is smaller than the location information of the current point; retaining the location information of the neighbor points when the location information of the neighbor points is greater than or equal to the location information of the current point to obtain a second quantity of location information of neighbor points; and determining the location information of the second quantity of neighbor points as the location information of the neighbor point corresponding to the parent point. Claim 15 In an encoder, the encoder comprises a first determination unit, a first right shift unit, a first search unit, and a first segmentation unit, wherein the first determination unit determines position information of a point in the point cloud to be segmented based on the point cloud to be segmented; and when i is less than or equal to M-1, the number of right shift bits (N) corresponding to the i-th level of detail (LOD) layer in the point cloud to be segmented i It is configured to determine ); i is an integer greater than or equal to 0 and N i is an integer greater than 0, and M represents the maximum number of preset layers for LOD division; the first right shift unit [represents] the position information of a point among the point clouds to be divided for the i-th LOD layer N i An encoder characterized by being configured to shift bits to the right and store position information after the right shift in a preset storage area; the first determination unit is also configured to determine position information of a parent point corresponding to the current point among the i-th LOD layers; the first search unit is configured to search for a neighbor point corresponding to the parent point within the preset storage area based on the determined position information of the parent point; and the first division unit is 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 In a decoder, the decoder comprises a second decision unit, a second right shift unit, a second search unit, and a second segmentation unit, wherein the second decision unit determines position information of a point in the point cloud to be segmented based on the point cloud to be segmented; and when i is less than or equal to M-1, the number of right shift bits (N) corresponding to the i-th level of detail (LOD) layer in the point cloud to be segmented i It is configured to determine ); i is an integer greater than or equal to 0 and N i is an integer greater than 0, and M represents the maximum number of preset layers for LOD division; the second right shift unit provides N position information of a point among the point cloud to be divided for the i-th LOD layer. i A decoder configured to shift to the right by bit and store in a preset storage area based on position information after the right shift; the second determination unit is also configured to determine position information of a parent point corresponding to the current point among the i-th LOD layers; the second search unit is configured to search for a neighbor point corresponding to the parent point within the preset storage area based on the determined position information of the parent point; and the second division unit is 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 17 A computer-readable storage medium, wherein the computer program and bit stream are stored therein, and the bit stream is generated by implementing the step of the partitioning method of claim 1 when the computer program is executed by a processor. Claim 18 delete Claim 19 delete
Citation Information
Patent Citations
Point Cloud Compression
US20190080483A1
Hierarchical point cloud compression
US20190081638A1
Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
WO2019240167A1
