Point cloud lossy compression method and device, equipment, storage medium and program product
By building an octree in the point cloud lossy compression method and predicting the distribution probability for encoding, the problem of point loss in dense point clouds is solved, and efficient data transmission and reconstruction are achieved.
Patent Information
- Application Number
- CN202411041697.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-07-31
- Publication Date
- 2024-12-06
- Estimated Expiration
- 2044-07-31
AI Technical Summary
Existing octree-based point cloud geometric lossy compression schemes lead to the problem of large-scale points loss in dense point clouds.
A lossy compression method for point cloud is proposed. By constructing an octree on the encoding end, converting the occupancy code value of the leaf node into a binary representation, and predicting the distribution probability for encoding, transmitting the bit code stream; on the decoding end, according to the reception The bitcode stream predicts the occupancy code values of non-leaf nodes and leaf nodes, reconstructs point cloud data, and avoids the loss of a large number of points.
It significantly reduces the amount of data, saves code rate, improves data transmission efficiency, and quickly restores the complete structure of point cloud data at the decoding end, solving the problem of point loss in dense point clouds.
Smart Images

Figure CN119094800A_ABST
Abstract
Description
Technical Field
[0001] The present application relates to the technical field of dense point cloud processing, and in particular to a point cloud lossy compression method, a point cloud lossy compression apparatus, a point cloud lossy compression device, a storage medium and a computer program product. Background Art
[0002] Existing octree-based point cloud geometry lossy compression schemes are all implemented by adjusting the quantization step size when establishing the octree. The compression of the octree itself is actually lossless compression. However, in practice, when this method of adjusting the quantization step size is applied to point cloud lossy compression, a large amount of point cloud data (hereinafter referred to as points) will be lost in the reconstructed point cloud. Since the density of points in a dense point cloud is very high, adjusting the quantization step size will cause a large number of points to be rounded to the same integer point and lost.
[0003] The method of adjusting the quantization step size used in the existing octree-based point cloud geometry lossy compression scheme is not applicable to dense point clouds. Therefore, it is urgent to solve the problem of a large number of point loss in dense point clouds. Summary of the invention
[0004] The main purpose of this application is to provide a point cloud lossy compression method, a point cloud lossy compression device, a point cloud lossy compression equipment, a storage medium and a computer program product, aiming to solve the technical problem of a large number of points being lost in dense point clouds.
[0005] To achieve the above objectives, the present application proposes a point cloud lossy compression method, wherein the method applied to the encoding end includes:
[0006] An octree is constructed based on the quantized point cloud;
[0007] Converting the occupancy code value of the octahedral tree leaf node into a binary representation to obtain a first occupancy code value;
[0008] Selecting some occupied code values from the first occupied code values, and predicting a first distribution probability that each bit of the some occupied code values is 0 or 1;
[0009] Encoding the first distribution probability to obtain and transmit a first bit stream to a decoding end;
[0010] Predicting the occupancy code value of the non-leaf node of the octree to be a second distribution probability of any value between 1 and 255;
[0011] The second distribution probability is encoded to obtain a second bit code stream, which is then transmitted to a decoding end.
[0012] In one embodiment, the step of constructing an octree based on the quantized point cloud includes:
[0013] Divide the cube block of the point cloud into 8 equal cube sub-blocks;
[0014] For each of the cube sub-blocks, if it contains at least one point cloud data of the point cloud, the occupancy code of the cube sub-block is set to 1, otherwise it is set to 0;
[0015] Combining the occupancy codes of the eight cube sub-blocks into an 8-bit binary code, and converting the 8-bit binary code into a decimal value as the occupancy code value of the cube block at the octree node;
[0016] The cube sub-block is used as a new cube block, and the step of dividing the cube block of the point cloud into 8 equal cube sub-blocks is performed until the cube block of the point cloud is divided into the smallest voxels.
[0017] To achieve the above objectives, the present application proposes a point cloud lossy compression method, wherein the method is applied to a decoding end and includes:
[0018] receiving a first bit stream and a second bit stream;
[0019] Predicting, based on the second bit code stream, a second distribution probability that the occupied code value of the non-leaf node is any value between 1 and 255, and predicting, based on the second distribution probability, the occupied code value of the non-leaf node;
[0020] According to the first bit code stream, predicting a first distribution probability that each bit of the first occupied code value part occupied code value is 0 or 1, and according to the first distribution probability, predicting an occupied code value of the first occupied code value part;
[0021] Predicting an occupied code value of a remaining part of the first occupied code value according to the occupied code value of the non-leaf node and the occupied code value of the first occupied code value portion;
[0022] According to the occupied code value of the first occupied code value part and the occupied code value of the remaining part, converting to obtain the occupied code value of the leaf node in decimal representation;
[0023] According to the occupancy code values of leaf nodes and non-leaf nodes, a new octree is constructed;
[0024] According to the new octree, the reconstructed point cloud is obtained.
[0025] In one embodiment, the step of predicting the occupied code value of the non-leaf node as a second distribution probability of any value between 1 and 255 according to the second bit code stream, and predicting the occupied code value of the non-leaf node according to the second distribution probability comprises:
[0026] Predicting and obtaining ancestor node information of non-leaf nodes according to the second bit code stream;
[0027] Predicting a second distribution probability that the first non-leaf node is any value between 1 and 255 based on the ancestor node information of the first non-leaf node with an even subscript and the second bit code stream, and predicting an occupied code value of the first non-leaf node based on the second distribution probability of the first non-leaf node;
[0028] Predicting a second distribution probability of any value from 1 to 255 of the second non-leaf node according to the ancestor node information of the second non-leaf node with an odd subscript and the second bit code stream, and predicting an occupied code value of the second non-leaf node according to the second distribution probability of the second non-leaf node;
[0029] The occupied code value of the non-leaf node is obtained according to the occupied code value of the first non-leaf node and the occupied code value of the second non-leaf node.
[0030] In one embodiment, the step of predicting, based on the first bit code stream, a first distribution probability that each bit of the first occupied code value portion occupied code value is 0 or 1, and predicting, based on the first distribution probability, the first occupied code value portion occupied code value comprises:
[0031] Predicting the ancestor node information of the leaf node according to the first bit code stream;
[0032] Predicting, based on the ancestor node information of the first leaf node with an even subscript and the first bit code stream, a first distribution probability that each bit of the first occupied code value part of the first leaf node is 0 or 1, and predicting, based on the first distribution probability of the first occupied code value part of the first leaf node, a first occupied code value part of the first leaf node;
[0033] Predicting, based on the ancestor node information of the second leaf node with an odd subscript and the first bit code stream, a first distribution probability that each bit of the first occupied code value part of the second leaf node is 0 or 1, and predicting, based on the first distribution probability of the first occupied code value part of the second leaf node, a first occupied code value part of the second leaf node;
[0034] According to the first occupied code value partially occupied code value of the first leaf node and the first occupied code value partially occupied code value of the second leaf node, the first occupied code value partially occupied code value is obtained.
[0035] In one embodiment, the step of predicting the occupied code value of the remaining part of the first occupied code value according to the occupied code value of the non-leaf node and the occupied code value of the first occupied code value comprises:
[0036] Obtaining the occupied code value of the non-leaf node and the first occupied code value and part of the occupied code value of the leaf node;
[0037] According to the occupied code value of the non-leaf node and the partially occupied code value of the first occupied code value of the leaf node, the occupied code value of the remaining part of the first occupied code value is predicted in the pre-trained neural network model.
[0038] In addition, to achieve the above-mentioned purpose, the present application also proposes a point cloud lossy compression device, the point cloud lossy compression device comprising:
[0039] The device is applied to an encoding end, and includes:
[0040] A construction module is used to construct an octree based on the quantized point cloud;
[0041] A conversion module, used for converting the occupancy code value of the octahedral tree leaf node into a binary representation to obtain a first occupancy code value;
[0042] a first prediction module, configured to select a part of the occupied code values from the first occupied code values, and predict a first distribution probability that each bit of the part of the occupied code values is 0 or 1, and / or predict a second distribution probability that the occupied code values of the non-leaf nodes of the octree are any value between 1 and 255;
[0043] an encoding module, configured to encode the first distribution probability to obtain and transmit a first bit code stream to a decoding end, and / or to encode the second distribution probability to obtain and transmit a second bit code stream to a decoding end;
[0044] And / or, the device is applied to a decoding end, comprising:
[0045] A receiving module, used for receiving a first bit code stream and a second bit code stream;
[0046] A second prediction module is configured to predict, based on the second bit code stream, a second distribution probability that the occupied code value of the non-leaf node is any value between 1 and 255, and predict, based on the second distribution probability, the occupied code value of the non-leaf node, and / or, based on the first bit code stream, predict a first distribution probability that each bit of the partially occupied code value of the first occupied code value is 0 or 1, and predict, based on the first distribution probability, the partially occupied code value of the first occupied code value, and / or, based on the occupied code value of the non-leaf node and the partially occupied code value of the first occupied code value, predict the occupied code value of the remaining part of the first occupied code value;
[0047] A processing module is used to convert the occupancy code value of the leaf node in decimal representation according to the occupancy code value of the first occupancy code value part and the occupancy code value of the remaining part; construct a new octree according to the occupancy code values of the leaf node and the non-leaf node; and obtain a reconstructed point cloud according to the new octree.
[0048] In addition, to achieve the above-mentioned purpose, the present application also proposes a point cloud lossy compression device, which is an encoding device, including: a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the computer program is configured to implement the steps of the point cloud lossy compression method described above;
[0049] And / or, the point cloud lossy compression device is a decoding device, comprising: a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the computer program is configured to implement the steps of the point cloud lossy compression method described above.
[0050] In addition, to achieve the above-mentioned purpose, the present application also proposes a storage medium, which is a computer-readable storage medium, and a computer program is stored on the storage medium. When the computer program is executed by a processor, the steps of the point cloud lossy compression method described above are implemented.
[0051] In addition, to achieve the above-mentioned purpose, the present application also provides a computer program product, which includes a computer program, and when the computer program is executed by a processor, the steps of the point cloud lossy compression method described above are implemented.
[0052] At the encoding end, the present application converts the occupied code values of the leaf nodes of the octagonal tree into binary representation, and selectively encodes and transmits the distribution probability of some occupied code values through code stream transmission, which significantly reduces the amount of data, saves the code rate, and improves the efficiency of data transmission. Correspondingly, at the decoding end, based on the received bit code stream, the occupied code values of the non-leaf nodes and the partially occupied code values of the first occupied code value of the leaf node are first predicted, and the occupied code values of the untransmitted part of the leaf node are predicted based on the occupied code values of the non-leaf nodes and the partially occupied code values of the first occupied code value of the leaf node. The decoding end predicts the distribution probability, and the process of predicting the occupied code value based on the distribution probability can restore the complete structure of the point cloud data, thereby improving the decoding speed and data processing efficiency.
[0053] Through the above encoding and decoding process, the compression, transmission and reconstruction of point cloud data can control the loss of a large number of points in dense point clouds. BRIEF DESCRIPTION OF THE DRAWINGS
[0054] The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments consistent with the present application and, together with the description, serve to explain the principles of the present application.
[0055] In order to more clearly illustrate the embodiments of the present application or the technical solutions in the prior art, the drawings required for use in the embodiments or the description of the prior art will be briefly introduced below. Obviously, for ordinary technicians in this field, other drawings can be obtained based on these drawings without paying any creative labor.
[0056] Figure 1 A schematic diagram of a flow chart of an implementation method provided for the first embodiment of the point cloud lossy compression method of the present application;
[0057] Figure 2 A schematic diagram of a flow chart provided for the third embodiment of the point cloud lossy compression method of the present application;
[0058] Figure 3 Schematic diagram of leaf node decoding process provided for the point cloud lossy compression method of this application;
[0059] Figure 4 A brief flowchart of the point cloud lossy compression method provided in this application;
[0060] Figure 5 This is a schematic diagram of the module structure of the point cloud lossy compression device of this application;
[0061] Figure 6 This is a schematic diagram of the module structure of another device for lossy compression of point cloud in this application;
[0062] Figure 7 This is a schematic diagram of the device structure of the hardware operating environment involved in the point cloud lossy compression method of this application.
[0063] The purpose, features and advantages of this application will be further described in conjunction with the embodiments and with reference to the accompanying drawings. DETAILED DESCRIPTION
[0064] It should be understood that the specific embodiments described herein are only used to explain the technical solutions of the present application and are not used to limit the present application.
[0065] In order to better understand the technical solution of the present application, a detailed description will be given below in conjunction with the accompanying drawings and specific implementation methods.
[0066] It should be noted that the execution subject of this embodiment may be a point cloud processing system, or a computing service device with data processing, network communication and program running functions, such as a tablet computer, a personal computer, a mobile phone, etc., or an electronic device, a processor, etc. capable of realizing the above functions. The point cloud processing device is taken as an example to illustrate this embodiment and the following embodiments. By way of example, the following point cloud may be a sparse point cloud and a dense point cloud. This embodiment and the following embodiments take a dense point cloud as an example.
[0067] Based on this, an embodiment of the present application provides a point cloud lossy compression method, which is applied to an encoding end. In this embodiment, the point cloud lossy compression method includes steps S10 to S60:
[0068] Step S10, constructing an octree based on the quantized point cloud;
[0069] It should be noted that when processing dense point cloud data in three-dimensional space, octree is a commonly used structure. Point cloud refers to a collection of a large number of points in three-dimensional space. These points represent the position information of the surface of an object. These points can be called point cloud data. Quantization is the process of converting continuous spatial coordinates into discrete grid coordinates, which can reduce the amount of data and facilitate processing. A quantized point cloud means that the points in the point cloud are mapped to a three-dimensional grid, each point has geometric coordinates, and the geometric coordinate values of the points are rounded to integers.
[0070] Octree is a tree data structure in three-dimensional space, similar to quadtree in two-dimensional space. In octree, each of the eight child nodes corresponds to the eight sub-regions of the space represented by the current node. Octree is used to recursively divide the space until there are no more points in the space represented by each leaf node or the number of points is below a certain threshold.
[0071] After the step of constructing the octree, a breadth-first search is performed on the octree to generate an octree sequence, and the octree sequence is divided into a non-leaf node sequence and a leaf node sequence, wherein the non-leaf node sequence includes all non-leaf nodes of the octree, and the leaf node sequence includes all leaf nodes of the octree.
[0072] Step S20, converting the occupancy code value of the octree leaf node into a binary representation to obtain a first occupancy code value;
[0073] It should be noted that in the octree, leaf nodes are nodes without child nodes in the octree, and they represent the final subdivided spatial area. In point cloud processing, leaf nodes contain actual point cloud data or information indicating that the area is occupied by the point cloud.
[0074] In the octree encoding method, the occupancy code value refers to the value used to describe whether a specific spatial region contains point cloud data points. At the leaf node level, the occupancy code value is calculated based on the distribution of point cloud data points in the spatial region represented by the node. If the region contains at least one data point, it is set to 1 or a non-zero value, otherwise it is 0 or a specific value indicating unoccupied. The occupancy code value is used in the octree to efficiently represent and store the spatial distribution information of point cloud data.
[0075] The occupancy code value of the octet leaf node is a decimal number ranging from 1 to 255. Converting the occupancy code value to binary representation means converting the occupancy code value of decimal or any other base to binary, which is to facilitate the storage, processing and transmission of data in the computer. For the leaf nodes of the octet, this conversion helps to store the spatial occupancy information of the point cloud data more compactly, and also facilitates subsequent decoding and data recovery.
[0076] The first occupancy code value refers to the leaf node occupancy code value represented in binary form after conversion. It emphasizes that the specific representation of the occupancy code value is binary, and the first occupancy code value directly reflects the distribution characteristics of the point cloud data in space during the octree encoding and decoding process.
[0077] By using octrees and occupancy code values, point cloud data can be effectively compressed and indexed, making the efficiency of searching, rendering, and analyzing point cloud data in three-dimensional space greatly improved.
[0078] Step S30, selecting some occupied code values from the first occupied code values, and predicting a first distribution probability that each bit of the some occupied code values is 0 or 1;
[0079] It should be noted that, as mentioned above, the first occupancy code value refers to the occupancy code value of the octet tree leaf node after being converted into binary representation. It is a binary number;
[0080] When processing the first occupied code value, the entire occupied code value is not used, but a part of the bits are selected for processing, in order to reduce the computational complexity and save the code rate, and only some bits of the occupied code value are statistically analyzed. The selected part of the occupied code value may be based on a specific rule or algorithm, such as selecting a high bit, a low bit, or selecting according to a certain pattern.
[0081] Predicting the probability that each bit (i.e., each bit) of the selected partially occupied code value is 0 or 1 means estimating or calculating the probability of 0 and 1 appearing in these bits, wherein the selected partially occupied code value can be called a lossless part, and the partially occupied code value of the remaining part that is not selected can be called a lossy part, and only the lossless part is encoded and transmitted, thereby achieving lossy compression of the leaf node.
[0082] Based on neural networks, by analyzing a large amount of point cloud data, the frequency of 0 or 1 is predicted. This prediction helps to optimize the compression, transmission and storage of point cloud data, as well as fast recovery during decoding.
[0083] In one embodiment, referring to Figure 4 , a neural network can be used to predict the probability, where the data input to the neural network will distinguish the base: for non-leaf nodes, the input is the decimal occupied code value, and the output is the distribution probability of the decimal occupied code value; for leaf nodes, the input is the binary occupied code value, and the output is the distribution probability of the binary occupied code value. Therefore, the output of the neural network is consistent with the input base. In addition, it should be noted that in this application, the following can be used Figure 4 The neural network shown predicts the probabilities.
[0084] Step S40, encoding the first distribution probability to obtain and transmit a first bit code stream to a decoding end;
[0085] It should be noted that the first distribution probability refers to the distribution probability of each bit being 0 or 1 in the partially occupied code value predicted in step S30. In the encoding stage, the first distribution probability is used to guide the encoding algorithm to generate a more compact bit code stream. Common encoding methods include arithmetic coding and Huffman coding, both of which rely on the probability distribution of data to optimize coding efficiency. Specifically, symbols with a higher probability of occurrence (0 or 1) are encoded as shorter bit strings, while symbols with a lower probability of occurrence are encoded as longer bit strings. In this way, the overall coding length can be minimized, thereby achieving data compression. The bit code stream obtained after encoding, which consists of a series of 0s and 1s, is the result of compressed encoding of the original data guided by the probability model. The first bit code stream contains a compressed representation of the point cloud data while retaining the original information of the data. The encoded first bit code stream needs to be transmitted to the receiving end, i.e., the decoding end, through a communication channel. During the transmission process, the integrity of the code stream needs to be guaranteed to ensure that the decoding end can accurately restore the original data. In the context of point cloud data processing and transmission, an efficient transmission mechanism is particularly important for real-time applications and big data processing.
[0086] Step S50, predicting the occupancy code value of the non-leaf node of the octree to be a second distribution probability of any value between 1 and 255;
[0087] It should be noted that in the octree structure, the occupancy code value of a non-leaf node (i.e., an internal node) reflects the distribution of point cloud data in the spatial region represented by the node and its sub-regions. The occupancy code value is a decimal value between 1 and 255, which encodes the occupancy status of all child nodes (i.e., sub-regions) under the node. For example, if the occupancy code value of a non-leaf node is 150, it means that among the sub-nodes of the non-leaf node, some regions contain actual points and are marked as 1, while other regions do not contain actual points and are marked as 0.
[0088] The second distribution probability refers to the probability distribution of each possible value of the occupied code value in the range of 1 to 255 when predicting the second distribution probability of the occupied code value of the non-leaf node. This prediction is based on the spatial distribution characteristics and historical data of the point cloud data. In one embodiment, a deep learning model is used to realize probability prediction at the encoding end, such as a transformer model (a model based on an attention mechanism). For example, the points in a dense point cloud tend to be densely distributed in certain spatial regions, so the probability of the occupied code value corresponding to the spatial region is higher.
[0089] Step S60: encode the second distribution probability to obtain and transmit a second bit code stream to a decoding end.
[0090] It should be noted that, as described in step S50, the second distribution probability refers to the probability distribution of the occurrence of various possible values of the occupied code value of the non-leaf node of the octree in the range of 1 to 255, which is used to optimize the encoding process.
[0091] For the second distribution probability, the purpose of encoding is to generate a bit code stream (i.e., the second bit code stream) based on the predicted probability distribution. This code stream can represent the occupied code values of non-leaf nodes with the minimum number of bits. The bit code stream is the encoded data form, which saves more storage space or transmission bandwidth than the original data.
[0092] The encoding process utilizes the probability distribution of data, so that values with high probability of occurrence are represented by fewer bits, while values with low probability of occurrence are represented by more bits, thereby achieving data compression.
[0093] The method of transmitting to the decoding end is the same as that described in step S40 and will not be described in detail again.
[0094] In this embodiment, the encoder first constructs an octree based on the quantized point cloud data, converts the occupancy state of the leaf nodes in the octree into a first occupancy code value represented in binary, selects some occupancy code values from the first occupancy code values, and predicts the first distribution probability of each bit in these code values being 0 or 1; predicts the second distribution probability of the occupancy code value (a value from 1 to 255) of the non-leaf node, encodes the predicted first distribution probability and second distribution probability, generates a first bit code stream and a second bit code stream, and transmits them to the decoder. Through probability prediction and selective transmission of some occupancy code values, the amount of data is significantly reduced, the efficiency of data transmission is improved, even if only some occupancy code values are transmitted, the information of the untransmitted part can be obtained through prediction, maintaining a high reconstruction accuracy, and overcoming the problem of large-scale point loss in dense point clouds.
[0095] In one implementation, step S10, the point cloud lossy compression method includes steps A10 to A40:
[0096] Please refer to Figure 1 , Figure 1 A flowchart of an implementation method for point cloud lossy compression is provided;
[0097] Step A10, dividing the cube block of the point cloud into 8 equal cube sub-blocks;
[0098] It should be noted that after quantization, the point cloud data is divided into multiple smaller spatial regions, namely 8 cubic sub-blocks. This division is usually based on an octree structure, where each cubic sub-block can be regarded as a node of the octree. An octree is a spatial partitioning data structure that recursively divides the space into 8 equal sub-regions until the number of point cloud data points contained in each sub-region is below a certain threshold or reaches a predefined depth. This division helps to organize and index point cloud data, as well as achieve efficient data compression and query.
[0099] Step A20: for each of the cube sub-blocks, if it contains at least one point cloud data of the point cloud, then the occupancy code of the cube sub-block is set to 1, otherwise it is set to 0;
[0100] It should be noted that each cubic sub-block represents an area in space, which is used to accommodate points in the point cloud. Point cloud data is a data set consisting of a large number of three-dimensional points, and each point has coordinate information (x, y, z) in three-dimensional space. The occupancy code of the sub-block. In the octree encoding, each cubic sub-block has an occupancy code to indicate whether the sub-block contains at least one point cloud data point. The occupancy code is usually a binary value, 1 indicates that the sub-block is occupied by point cloud data points, and 0 indicates that the sub-block is empty (that is, it does not contain any point cloud data points).
[0101] Step A30, combining the occupancy codes of the eight cube sub-blocks into an 8-bit binary code, and converting the 8-bit binary code into a decimal value as the occupancy code value of the cube block at the octree node;
[0102] It should be noted that in the octree encoding, each cube sub-block has an occupancy code to indicate whether the sub-block contains point cloud data. The occupancy code of each cube sub-block reflects the spatial occupancy status of the sub-block. The occupancy codes of the 8 sub-blocks are combined in sequence to form an 8-bit binary code. Since each occupancy code is a binary bit, the occupancy codes of the 8 sub-blocks combined are exactly an 8-bit binary number, which can represent 256 states from 00000000 to 11111111, making full use of the advantages of binary encoding and representing the occupancy status of the 8 sub-blocks in a compact way.
[0103] Convert the obtained 8-bit binary code to an equivalent decimal value. Since the maximum value of the 8-bit binary code is 11111111 (i.e., the decimal representation of 255), the converted decimal value will be between 1 and 255 (including 1 and 255). This decimal value is the occupancy code value of the cube sub-block in the octree node. In the octree data structure, each node represents an area in space, and the occupancy code value is used to indicate the occupancy status of the area and its sub-areas. The occupancy code value is a decimal value converted from the binary combination of the sub-block occupancy code.
[0104] Step A40: Use the cube sub-block as a new cube block and execute the step of dividing the cube block of the point cloud into 8 equal cube sub-blocks until the cube block of the point cloud is divided into the smallest voxels.
[0105] It should be noted that in point cloud data processing, voxel is the smallest unit in 3D space, similar to pixels in 2D images. The smallest voxel usually refers to the final result of the segmentation process, that is, the smallest cube sub-block that cannot be further segmented. When divided into the smallest voxel, jump out of the loop. Each voxel may contain one or more points in the point cloud, or be represented as a position in space without point cloud data. In the processing of point cloud data, the process of gradually dividing the cube block into smaller cube sub-blocks until the smallest voxel is reached is a common spatial segmentation or data preprocessing step. This helps with subsequent data compression, feature extraction and other operations. By mapping point cloud data into smaller voxels, large-scale point cloud data sets can be effectively managed and processed while maintaining the integrity of spatial information.
[0106] Exemplarily, the specific steps of constructing an octree may include: selecting an initial spatial region, usually a bounding box of point cloud data; determining whether the current region needs to be further divided, and if it contains multiple points and meets the division conditions, dividing it into 8 sub-regions. Repeat the above process for each sub-region until all sub-regions meet the stop condition. Calculate the occupancy code value for each node to indicate the distribution of point cloud data in the spatial region represented by the node and its sub-regions.
[0107] In this embodiment, the cube block of the point cloud is first divided into 8 equal cube sub-blocks; then, the occupancy code is obtained according to the occupancy of the points of the point cloud in the cube sub-blocks; further, the occupancy codes of the 8 sub-blocks are combined into an 8-bit binary code, and after the base conversion, the decimal occupancy code value of the node is obtained; finally, an octree is constructed according to the occupancy code value of the node. The above process not only helps the organization and storage of data, but also provides a basis for subsequent data compression, transmission, etc. By using the octree structure, large-scale point cloud data can be effectively managed and operated while maintaining the geometric characteristics and details of the data.
[0108] Based on the first embodiment of the present application, in the second embodiment of the present application, the same or similar contents as those in the first embodiment can be referred to the above description, and will not be repeated in the following. The present application embodiment provides a point cloud lossy compression method, which is applied to a decoding end. In this embodiment, the point cloud lossy compression method includes steps T10 to T70:
[0109] Step T10, receiving a first bit stream and a second bit stream;
[0110] It should be noted that the decoding end is responsible for receiving the first bit stream and the second bit stream, and uses the same neural network model as the encoding end for decoding to restore the original point cloud data. The decoding process is the reverse operation of the encoding process, and also relies on the probability distribution of the data to efficiently decode and restore the original information. The neural network model used for decoding at the decoding end can be a transformer model.
[0111] Step T20, predicting a second distribution probability that the occupied code value of the non-leaf node is any value between 1 and 255 according to the second bit code stream, and predicting an occupied code value of the non-leaf node according to the second distribution probability;
[0112] It should be noted that, in the encoding and decoding process, the second distribution probability refers to the probability distribution associated with the non-leaf node, which is used to restore the occupancy state of the non-leaf node. In the process of decoding the second bit code stream, the occupancy code value of the non-leaf node can be obtained by prediction based on the second distribution probability; by decoding the second bit code stream and using the prediction technology, the occupancy code value of the non-leaf node in the octree structure can be efficiently restored, that is, the non-leaf node is losslessly compressed.
[0113] Step T30, predicting, based on the first bit code stream, a first distribution probability that each bit of the first occupied code value part occupied code value is 0 or 1, and predicting, based on the first distribution probability, the first occupied code value part occupied code value;
[0114] It should be noted that decoding is the reverse process of data transmission and storage, and recovers the original data from the compressed first bit stream. The decoding process usually requires an inverse operation based on the algorithm and parameters used in encoding to accurately restore the data before compression. Exemplarily, an arithmetic decoder can be used for decoding.
[0115] The first distribution probability refers to the probability distribution associated with the partial occupancy code value of the leaf node, which reflects the statistical distribution of occupancy features in the point cloud data.
[0116] In point cloud data coding, prediction technology is a process of estimating unknown information based on known information to reduce data redundancy and improve coding efficiency. When decoding the first bit stream, a partial value of the first occupancy code value (i.e., the occupancy state of the octree node) can be obtained by predicting based on the first distribution probability. The decoder can predict partial occupancy code values of certain child nodes based on the probability model without transmitting all binary occupancy codes in the bit stream, i.e., partial lossy compression of leaf nodes, which saves bit rate.
[0117] Step T40, predicting an occupied code value of a remaining part of the first occupied code value according to the occupied code value of the non-leaf node and the occupied code value of the first occupied code value;
[0118] It should be noted that, in the decoding process, after the decoder obtains the occupied code value of the non-leaf node and the partially occupied code value in the first occupied code value of the leaf node, it also needs to predict or decode the remaining occupied code value in the first occupied code value of the leaf node to obtain the complete occupied code value of the leaf node. Through the occupied code value of the non-leaf node and the decoded partially occupied code value, the prediction neural network can predict the remaining occupied code value, thereby restoring the complete occupied code value of the leaf node.
[0119] Step T50, converting the occupied code value of the first occupied code value part and the occupied code value of the remaining part to obtain the occupied code value of the leaf node in decimal representation;
[0120] It should be noted that part of the occupied code value of the first occupied code value is a partial binary number; the occupied code value of the remaining part of the first occupied code value is another partial binary number. After splicing the two parts of the occupied code value, the first occupied code value of the complete bit number is obtained, and then the binary representation of the first occupied code value is converted into a decimal representation, which can more intuitively reflect the occupancy status of the leaf node.
[0121] Step T60, constructing a new octree according to the occupancy code values of the leaf nodes and the non-leaf nodes;
[0122] It should be noted that during the decoding process, the decoder gradually constructs the octree structure of the point cloud data based on the occupancy code values of the decoded leaf nodes and non-leaf nodes. This process starts from the root node, recursively creates child nodes based on the occupancy code values of non-leaf nodes, and sets their occupancy status; when encountering a leaf node, it determines whether the area contains point cloud data points based on the occupancy code value. In this way, the decoder can recover the complete spatial distribution of the original point cloud data from the bit stream. Building an octree is a key step in the point cloud data decoding process, which allows the decoder to gradually recover the spatial structure of the point cloud data based on the occupancy code value information. This octree construction technology based on occupancy code values helps to efficiently decode and reconstruct point cloud data to ensure that the decoded point cloud data can accurately reflect the characteristics of the original data.
[0123] Step T70, obtaining a reconstructed point cloud based on the new octree.
[0124] It should be noted that the new octree specifically refers to the octree structure constructed according to the occupancy code values of leaf nodes and non-leaf nodes during the decoding process, which contains the spatial distribution information of the point cloud data. Reconstructing the point cloud is the ultimate goal of the decoding process, that is, the process of recovering the original point cloud data from the compressed encoded data. In the decoding stage, the decoder first constructs a new octree based on the information in the bit stream, and then gradually recovers the position and attributes of each point cloud data point according to the occupancy code value in the octree, thereby reconstructing the original point cloud data.
[0125] Exemplarily, the reconstruction of point cloud specifically includes the following steps: using the octree structure to divide the three-dimensional space and determine which areas contain point cloud data points; performing coordinate offset according to the occupancy code value and additional attribute information of the leaf nodes in the octree, and restoring the position and attributes of the point cloud data points. In addition, some post-processing operations are required, such as filtering and denoising of point cloud data, to improve the quality of the reconstructed point cloud.
[0126] In this embodiment, after receiving the first bit code stream and the second bit code stream transmitted by the encoder end, the decoder end decodes the first bit code stream to obtain the first distribution probability, and predicts the partial occupied code value in the first occupied code value according to the first distribution probability; decodes the second bit code stream to obtain the second distribution probability, and predicts the occupied code value of the non-leaf node according to the second distribution probability; then, according to the occupied code value of the non-leaf node obtained by decoding and the partial occupied code value in the first occupied code value, predict the occupied code value of the remaining part of the first occupied code value; further, convert the partial occupied code value of the first occupied code value and the occupied code value of the remaining part to obtain the occupied code value of the leaf node in decimal representation; finally, according to the occupied code values of the leaf node and the non-leaf node, construct a new octree, and reconstruct the quantized point cloud based on the new octree to obtain the reconstructed point cloud. Through the above process, efficient representation and compression of data are achieved, and accurate recovery of decoded data is guaranteed, thereby controlling the situation of a large number of point losses when reconstructing dense point clouds, and improving the quality of reconstructed point clouds.
[0127] In one implementation, step T20, the point cloud lossy compression method includes steps D10 to D40:
[0128] Step D10, predicting and obtaining ancestor node information of non-leaf nodes according to the second bit code stream;
[0129] It should be noted that in the tree data structure, the ancestor node refers to the set of all upper nodes of a node in the tree. For non-leaf nodes, the ancestor node information includes the location information of the node in the octree, as well as the related space division and encoding parameters, such as the occupancy code value.
[0130] In the decoding process of point cloud data, a neural network model is needed to perform probability prediction with the encoding end. The neural network model will have a prediction window with a preset number of non-leaf nodes in the prediction window. For example, there are one thousand non-leaf nodes in the prediction window. The ancestor node information of these one thousand non-leaf nodes is read from the second bit code stream as the input of the neural network model to decode the occupancy code value of the non-leaf node.
[0131] Step D20, predicting a second distribution probability of the first non-leaf node being any value between 1 and 255 based on the ancestor node information of the first non-leaf node with an even subscript and the second bit code stream, and predicting an occupied code value of the first non-leaf node based on the second distribution probability of the first non-leaf node;
[0132] It should be noted that the first non-leaf node with an even subscript refers to the set of non-leaf nodes whose positions or numbers in the octree are even.
[0133] The ancestor node information of the first non-leaf node with an even subscript refers to the relevant information of the upper nodes of these even-numbered non-leaf nodes in the octree, including their positions, occupied code values, etc. This information is crucial for predicting and understanding the occupied code values of the lower non-leaf nodes. During the decoding process, the decoder decodes the second distribution probability of the first non-leaf node with an even subscript based on the auxiliary information and ancestor node information carried in the second bit code stream. The decoder uses a neural network model to predict the occupied code value of the first non-leaf node with an even subscript. The prediction process is combined with context information. In this embodiment, the context information refers to the ancestor node information of the first non-leaf node with an even subscript.
[0134] Step D30, predicting a second distribution probability of any value from 1 to 255 of the second non-leaf node based on the ancestor node information of the second non-leaf node with an odd subscript and the second bit code stream, and predicting an occupied code value of the second non-leaf node based on the second distribution probability of the second non-leaf node;
[0135] It should be noted that the second non-leaf nodes with odd subscripts refer to the set of non-leaf nodes whose positions or numbers in the octree are odd.
[0136] The ancestor node information of the second non-leaf node with an odd subscript refers to the relevant information of the upper nodes of these odd-numbered non-leaf nodes in the octree, including their positions, occupied code values, etc. During the decoding process, the decoder decodes the second distribution probability of the second non-leaf node with an odd subscript based on the auxiliary information carried in the second bit code stream, the ancestor node information and the occupied code values of the even-numbered non-leaf nodes. The decoder uses a neural network model to predict the occupied code value of the second non-leaf node with an odd subscript. The prediction process is combined with context information. In this embodiment, the context information refers to the ancestor node information of the second non-leaf node with an odd subscript and the occupied code value of the first non-leaf node with an even subscript.
[0137] Step D40, obtaining the occupied code value of the non-leaf node according to the occupied code value of the first non-leaf node and the occupied code value of the second non-leaf node.
[0138] It should be noted that the occupied code value of the first non-leaf node obtained in step D20 and the occupied code value of the second non-leaf node obtained in step D30 are used to completely restore the occupied code values of the non-leaf nodes in the entire octree structure.
[0139] Exemplarily, the above prediction method may be a checkerboard prediction method.
[0140] In this embodiment, the occupied code value of the first non-leaf node with an even subscript is predicted through the information in the second bit code stream and the ancestor node information of the even part; the occupied code value of the second non-leaf node with an odd subscript is predicted through the information in the second bit code stream, the ancestor node information of the second non-leaf node with an odd subscript and the occupied code value of the first non-leaf node with an even subscript, thereby obtaining the occupied code value of the non-leaf node. The above process helps to improve the decoding speed, reduce data redundancy, and ultimately improve the reconstruction quality of the point cloud data. By combining the occupied code values of the first non-leaf node with an even subscript and the second non-leaf node with an odd subscript, it is ensured that the point cloud data recovered from the compressed data is as consistent as possible with the original data.
[0141] In another embodiment, in step T30, the point cloud lossy compression method includes steps E10 to E50:
[0142] Step E10, predicting and obtaining ancestor node information of the leaf node according to the first bit code stream;
[0143] It should be noted that the ancestor node information of the leaf node refers to the set of all non-leaf nodes on the path from the root node to the leaf node. These ancestor nodes contain occupied code values; the decoder will first read and decode the ancestor node information of the leaf node from the first bit stream, which includes understanding how the space is divided and how to locate a specific leaf node in the octree structure.
[0144] Step E20, predicting a first distribution probability that each bit of the first occupied code value partial occupied code value of the first leaf node is 0 or 1 based on the ancestor node information of the first leaf node with an even subscript and the first bit code stream, and predicting a first occupied code value partial occupied code value of the first leaf node based on the first distribution probability of the first occupied code value partial occupied code value of the first leaf node;
[0145] It should be noted that, based on the relevant information of the upper node of the even-numbered leaf node, such as the occupied code value, the first distribution probability of the first leaf node is decoded according to the information in the first bit code stream and the information of the ancestor node of the first leaf node with the even subscript; after constructing the first distribution probability of the first leaf node, combined with the context information, the partial occupied code value of the first leaf node with the even subscript is predicted.
[0146] Step E30, predicting a first distribution probability that each bit of the first occupied code value part of the second leaf node is 0 or 1 based on the ancestor node information of the second leaf node with an odd subscript and the first bit code stream, and predicting a first occupied code value part of the second leaf node based on the first distribution probability of the first occupied code value part of the second leaf node;
[0147] It should be noted that the ancestor node information of the odd part includes the occupied code value of the ancestor node; based on the information in the first bit code stream and the information of the ancestor node of the odd part, the first distribution probability of the odd part is decoded; based on the first distribution probability of the odd part, the decoder can predict the first occupied code value of the odd part and the occupied code value of the part.
[0148] Step E40, obtaining a first occupied code value partially occupied code value according to the first occupied code value partially occupied code value of the first leaf node and the first occupied code value partially occupied code value of the second leaf node.
[0149] It should be noted that the first occupied code value, partial occupied code value of the first leaf node with an even subscript obtained according to step E20 and the partial occupied code value of the second leaf node with an odd subscript obtained according to step E30 are combined to obtain the complete first occupied code value, that is, the occupied code value of the binary representation of all leaf nodes in the entire octree structure.
[0150] Exemplarily, the decimal code value of the leaf node is converted into a binary number, which is called the first occupied code value. The first occupied code value (binary number) is 8 bits, and the encoding end transmits 4 bits of them, that is, these 4 binary bits are lossless compression, and the 4 bits not transmitted are lossy compression; at the decoding end, the transmitted 4-bit binary number can be decoded according to the second bit code stream, and the remaining 4 bits need to be input into the prediction neural network according to the occupied code value of the non-leaf node decoded from the second bit code stream, the part of the occupied code value in the first occupied code value decoded from the first bit code stream, and the information of the ancestor node of the leaf node in the prediction window, so as to predict the occupied code value of the remaining part of the first occupied code value.
[0151] Exemplarily, the above prediction method may be a checkerboard prediction method.
[0152] In this embodiment, the first occupied code value of the first leaf node is predicted by the information in the first bit code stream and the ancestor node information of the first leaf node with an even subscript; the partial occupied code value of the second leaf node with an odd subscript is predicted by the information in the first bit code stream, the ancestor node information of the odd part and the partial occupied code value of the first occupied code value of the even part, and then the complete first occupied code value partial occupied code value is obtained. Through the above process, it is helpful to improve the decoding speed, reduce data redundancy, and ultimately improve the reconstruction quality of point cloud data. By combining the partial occupied code value of the first occupied code value of the first leaf node with an even subscript and the partial occupied code value of the first occupied code value of the second leaf node with an odd subscript, the partial occupied code value of the first occupied code value of the leaf node is obtained, thereby realizing partial lossless compression of the leaf node. While ensuring that the partial binary number consistent with the transmitted part is recovered from the compressed data, the technical effect of saving code rate is achieved because only part is transmitted.
[0153] Based on the second embodiment of the present application, in the third embodiment of the present application, the same or similar contents as those of the first embodiment can be referred to the above introduction, and will not be described in detail later. Figure 2 , Figure 2 This is a flow chart of the third embodiment of the present application;
[0154] In step T40, the point cloud lossy compression method includes steps F10 to F20:
[0155] Step F10, obtaining the occupied code value of the non-leaf node and the first occupied code value partial occupied code value of the leaf node;
[0156] It should be noted that the method of obtaining the occupied code value of the non-leaf node and the first occupied code value of the leaf node and the partially occupied code value is as described above, and will not be described in detail here.
[0157] Step F20, predicting the occupied code value of the remaining part of the first occupied code value in the pre-trained neural network model according to the occupied code value of the non-leaf node and the partially occupied code value of the first occupied code value of the leaf node.
[0158] It should be noted that part of the occupied code values of the first occupied code value of the leaf node is a partial binary number; the pre-trained neural network model is a deep learning model that has been trained with a large amount of data and can make predictions based on the input data. The pre-trained neural network model is used to predict the occupied code values of the remaining part of the first occupied code value of the leaf node based on the occupied code values of the non-leaf nodes and part of the occupied code values in the first occupied code value of the leaf node, thereby achieving lossy compression of the occupied code values of the remaining part of the leaf node that has not been transmitted.
[0159] In this embodiment, by combining the partial occupancy code values of non-leaf nodes and leaf nodes, the pre-trained neural network model is used for prediction to obtain the remaining occupancy code values of the leaf nodes, thereby achieving lossy compression of the occupancy code values of the remaining part of the leaf nodes that have not been transmitted. This method is suitable for processing large-scale point cloud data, such as dense point clouds, and can significantly improve the decoding speed and the quality of reconstructed point clouds.
[0160] For example, in order to help understand the present embodiment in combination with the above-mentioned embodiment, a schematic diagram of obtaining the first occupied code value of the leaf node is shown. Figure 3 , including encoding a part of the occupied code values in the first occupied code value in the leaf node to obtain a first bit code stream; then decoding the first bit code stream to obtain node information of the ancestor node, predicting a first distribution probability, and obtaining a part of the occupied code values in the first occupied code value according to the first distribution probability; for the occupied code values of the unknown part in the first occupied code value, predicting according to the occupied code values of the non-leaf nodes and the part of the occupied code values in the first occupied code value of the leaf node, to obtain the remaining occupied code values in the first occupied code value of the leaf node.
[0161] In one implementation, the implementation process of the point cloud lossy compression method is as follows: Figure 4 , Figure 4 A brief flowchart of a point cloud lossy compression method is provided, specifically:
[0162] The blue arrow indicates the encoding stage, the green arrow indicates the decoding stage, the orange circle indicates the non-leaf node, and the green circle indicates the leaf node; among them, the values 13, 106, 197, and 85 in the orange circle are the occupied code values of the non-leaf nodes represented by the orange circle, and the same is true for the green circle, which will not be repeated.
[0163] First, an octree is constructed based on the quantized point cloud. After the octree is constructed, an octree sequence generated by breadth-first search is obtained, which is divided into a non-leaf node sequence and a leaf node sequence. For non-leaf nodes, a neural network is used for probability prediction. In order to be consistent with the probability predicted by the decoding end, it is necessary to ensure the consistency of the context and use the same neural network for probability prediction at the encoding and decoding ends to obtain the same distribution probability.
[0164] The methods that can be used include the checkerboard prediction method. For non-leaf nodes in a prediction window, first use the available ancestor node information to predict the second distribution probability of half of the non-leaf nodes with even subscripts in all prediction windows, that is, a 255-dimensional vector represents the probability of each predicted occupied code. Then, the occupied code value of half of the non-leaf nodes with even subscripts is obtained according to the second distribution probability of half of the non-leaf nodes with even subscripts. After that, the second distribution probability of the non-leaf nodes with odd subscripts is predicted based on the ancestor node information and the occupied code value of the non-leaf nodes with even subscripts, that is, a 255-dimensional vector represents the probability of each predicted occupied code, and the occupied code value of the non-leaf nodes with odd subscripts is obtained according to the second distribution probability of the non-leaf nodes with odd subscripts.
[0165] For leaf nodes, the decimal occupied code value is first converted into 8 binary numbers, namely the first occupied code value, and only a part of the binary number, namely the partial occupied code value, is transmitted. The process of predicting the occupied code value is similar to that of non-leaf nodes, and the output is different from that of non-leaf nodes. The even part is output as the first distribution probability of the even part, namely a 2-dimensional vector representing the probability of 0 or 1 of each binary number; the odd part is output as the first distribution probability of the odd part, namely a 2-dimensional vector representing the probability of 0 or 1 of each binary number.
[0166] The second distribution probability of the non-leaf node and the first distribution probability of the first occupied code value of the leaf node are encoded into a bit code stream for actual transmission through an arithmetic encoder.
[0167] The decoding end uses an arithmetic decoder and the same neural network as the encoding end for decoding. During decoding, the neural network obtains the actual occupied code value from the bit stream through the arithmetic decoder based on the available context output, i.e., ancestor node information, and / or, the decoded occupied code value, and the same probability value as the encoder end.
[0168] After obtaining the occupied code values of non-leaf nodes and the partially occupied code values of the first occupied code values of leaf nodes, the decoding end uses this information to predict the occupied code values of the remaining part of the first occupied code value, which is the binary number that has not been transmitted. The neural network does not participate in encoding and decoding, and is only used to predict the occupied code values of the remaining part of the first occupied code value. Transmitting only part of the binary number saves code rate.
[0169] Finally, the first occupancy code value is obtained according to the partial occupancy code value of the leaf node and the remaining occupancy code value, and converted into an occupancy code value represented in decimal; the occupancy code value of the non-leaf node and the occupancy code of the leaf node are used to obtain the octree sequence. The quantized point cloud is then reconstructed using the octree sequence. The specific steps are to perform coordinate offset based on the octree occupancy code, and finally determine the integer point corresponding to the voxel, thereby realizing point cloud reconstruction and obtaining a reconstructed point cloud.
[0170] It should be noted that the above examples are only used to understand the present application and do not constitute a limitation on the point cloud lossy compression method of the present application. More simple transformations based on this technical concept are all within the protection scope of the present application.
[0171] This application also provides a point cloud lossy compression device, please refer to Figure 5 The point cloud lossy compression device is applied to the encoding end, including:
[0172] A construction module 10 is used to construct an octree based on the quantized point cloud;
[0173] A conversion module 20, configured to convert the occupancy code value of the octahedral tree leaf node into a binary representation to obtain a first occupancy code value;
[0174] A first prediction module 30 is used to select some occupied code values from the first occupied code values, and predict a first distribution probability that each bit of the part of the occupied code values is 0 or 1, and / or predict a second distribution probability that the occupied code value of the non-leaf node of the octree is any value between 1 and 255;
[0175] The encoding module 40 is used to encode the first distribution probability to obtain and transmit a first bit code stream to a decoding end, and / or to encode the second distribution probability to obtain and transmit a second bit code stream to a decoding end;
[0176] Optionally, the construction module 10 is further used to divide the cube block of the point cloud into 8 equal cube sub-blocks;
[0177] For each of the cube sub-blocks, if it contains at least one point cloud data of the point cloud, the occupancy code of the cube sub-block is set to 1, otherwise it is set to 0;
[0178] Combining the occupancy codes of the eight cube sub-blocks into an 8-bit binary code, and converting the 8-bit binary code into a decimal value as the occupancy code value of the cube block at the octree node;
[0179] The cube sub-block is used as a new cube block, and the step of dividing the cube block of the point cloud into 8 equal cube sub-blocks is performed until the cube block of the point cloud is divided into the smallest voxels.
[0180] This application also provides another point cloud lossy compression device, please refer to Figure 6 , the point cloud lossy compression device is applied to a decoding end, comprising:
[0181] A receiving module 50, configured to receive a first bit stream and a second bit stream;
[0182] A second prediction module 60 is used to predict, according to the second bit code stream, a second distribution probability that the occupied code value of the non-leaf node is any value between 1 and 255, and predict, according to the second distribution probability, the occupied code value of the non-leaf node, and / or, according to the first bit code stream, predict a first distribution probability that each bit of the partially occupied code value of the first occupied code value is 0 or 1, and predict, according to the first distribution probability, the partially occupied code value of the first occupied code value, and / or, according to the occupied code value of the non-leaf node and the partially occupied code value of the first occupied code value, predict the occupied code value of the remaining part of the first occupied code value;
[0183] The processing module 70 is used to convert the occupancy code value of the leaf node in decimal representation according to the occupancy code value of the first occupancy code value part and the occupancy code value of the remaining part; construct a new octree according to the occupancy code values of the leaf node and the non-leaf node; and obtain a reconstructed point cloud according to the new octree.
[0184] Optionally, the second prediction module 60 is further configured to predict ancestor node information of the non-leaf node according to the second bit code stream;
[0185] Predicting a second distribution probability that the first non-leaf node is any value between 1 and 255 based on the ancestor node information of the first non-leaf node with an even subscript and the second bit code stream, and predicting an occupied code value of the first non-leaf node based on the second distribution probability of the first non-leaf node;
[0186] Predicting a second distribution probability of any value from 1 to 255 of the second non-leaf node according to the ancestor node information of the second non-leaf node with an odd subscript and the second bit code stream, and predicting an occupied code value of the second non-leaf node according to the second distribution probability of the second non-leaf node;
[0187] The occupied code value of the non-leaf node is obtained according to the occupied code value of the first non-leaf node and the occupied code value of the second non-leaf node.
[0188] Optionally, the second prediction module 60 is further configured to predict ancestor node information of the leaf node according to the first bit code stream;
[0189] Predicting, based on the ancestor node information of the first leaf node with an even subscript and the first bit code stream, a first distribution probability that each bit of the first occupied code value part of the first leaf node is 0 or 1, and predicting, based on the first distribution probability of the first occupied code value part of the first leaf node, a first occupied code value part of the first leaf node;
[0190] Predicting, based on the ancestor node information of the second leaf node with an odd subscript and the first bit code stream, a first distribution probability that each bit of the first occupied code value part of the second leaf node is 0 or 1, and predicting, based on the first distribution probability of the first occupied code value part of the second leaf node, a first occupied code value part of the second leaf node;
[0191] According to the first occupied code value partially occupied code value of the first leaf node and the first occupied code value partially occupied code value of the second leaf node, the first occupied code value partially occupied code value is obtained.
[0192] Optionally, the second prediction module 60 is further used to obtain the occupied code value of the non-leaf node and the partially occupied code value of the first occupied code value of the leaf node;
[0193] According to the occupied code value of the non-leaf node and the partially occupied code value of the first occupied code value of the leaf node, the occupied code value of the remaining part of the first occupied code value is predicted in the pre-trained neural network model.
[0194] The point cloud lossy compression device provided by the present application adopts the point cloud lossy compression method in the above embodiment, which can solve the technical problem of a large number of points being lost in dense point clouds. Compared with the prior art, the beneficial effects of the point cloud lossy compression device provided by the present application are the same as the beneficial effects of the point cloud lossy compression method provided by the above embodiment, and the other technical features of the point cloud lossy compression device are the same as the features disclosed in the above embodiment method, which will not be repeated here.
[0195] The present application provides a point cloud lossy compression device, which is an encoding device including: at least one processor; and a memory communicatively connected to the at least one processor; wherein the memory stores instructions executable by the at least one processor, and the instructions are executed by the at least one processor so that the at least one processor can execute the point cloud lossy compression method in the above-mentioned embodiment.
[0196] The present application provides another point cloud lossy compression device, which is a decoding device comprising: at least one processor; and a memory communicatively connected to the at least one processor; wherein the memory stores instructions executable by the at least one processor, and the instructions are executed by the at least one processor so that the at least one processor can execute the point cloud lossy compression method in the above-mentioned embodiment.
[0197] Reference below Figure 7 , which shows a schematic diagram of the structure of a point cloud lossy compression device suitable for implementing the embodiment of the present application. The point cloud lossy compression device in the embodiment of the present application may include but is not limited to mobile terminals such as mobile phones, laptop computers, digital broadcast receivers, PDAs (Personal Digital Assistants), PADs (Portable Application Descriptions), PMPs (Portable Media Players), vehicle-mounted terminals (such as vehicle-mounted navigation terminals), etc., and fixed terminals such as digital TVs, desktop computers, etc. Figure 7 The point cloud lossy compression device shown is merely an example and should not bring any limitation to the functions and scope of use of the embodiments of the present application.
[0198] like Figure 7As shown, the point cloud lossy compression device may include a processing device 1001 (such as a central processing unit, a graphics processor, etc.), which can perform various appropriate actions and processes according to a program stored in a read-only memory (ROM: Read Only Memory) 1002 or a program loaded from a storage device 1003 to a random access memory (RAM: Random Access Memory) 1004. In RAM1004, various programs and data required for the operation of the point cloud lossy compression device are also stored. The processing device 1001, ROM1002 and RAM1004 are connected to each other through a bus 1005. An input / output (I / O) interface 1006 is also connected to the bus. Generally, the following systems can be connected to the I / O interface 1006: an input device 1007 including, for example, a touch screen, a touchpad, a keyboard, a mouse, an image sensor, a microphone, an accelerometer, a gyroscope, etc.; an output device 1008 including, for example, a liquid crystal display (LCD: Liquid Crystal Display), a speaker, a vibrator, etc.; a storage device 1003 including, for example, a tape, a hard disk, etc.; and a communication device 1009. The communication device 1009 can allow the point cloud lossy compression device to communicate with other devices wirelessly or by wire to exchange data. Although the figure shows a point cloud lossy compression device with various systems, it should be understood that it is not required to implement or have all the systems shown. More or fewer systems can be implemented or have alternatively.
[0199] In particular, according to the embodiments disclosed in the present application, the process described above with reference to the flowchart can be implemented as a computer software program. For example, the embodiments disclosed in the present application include a computer program product, which includes a computer program carried on a computer-readable medium, and the computer program includes a program code for executing the method shown in the flowchart. In such an embodiment, the computer program can be downloaded and installed from a network through a communication device, or installed from a storage device 1003, or installed from a ROM 1002. When the computer program is executed by the processing device 1001, the above-mentioned functions defined in the method of the embodiment disclosed in the present application are executed.
[0200] The point cloud lossy compression device provided by the present application adopts the point cloud lossy compression method in the above embodiment, which can solve the technical problem of a large number of points being lost in dense point clouds. Compared with the prior art, the beneficial effects of the point cloud lossy compression device provided by the present application are the same as the beneficial effects of the point cloud lossy compression method provided by the above embodiment, and the other technical features of the point cloud lossy compression device are the same as the features disclosed in the method of the previous embodiment, which will not be repeated here.
[0201] It should be understood that the various parts disclosed in this application can be implemented by hardware, software, firmware or a combination thereof. In the description of the above embodiments, specific features, structures, materials or characteristics can be combined in any one or more embodiments or examples in a suitable manner.
[0202] The above is only a specific implementation of the present application, but the protection scope of the present application is not limited thereto. Any person skilled in the art who is familiar with the present technical field can easily think of changes or substitutions within the technical scope disclosed in the present application, which should be included in the protection scope of the present application. Therefore, the protection scope of the present application should be based on the protection scope of the claims.
[0203] The present application provides a computer-readable storage medium having computer-readable program instructions (ie, computer programs) stored thereon, and the computer-readable program instructions are used to execute the point cloud lossy compression method in the above-mentioned embodiment.
[0204] The computer-readable storage medium provided in the present application may be, for example, a USB flash drive, but is not limited to electrical, magnetic, optical, electromagnetic, infrared, or semiconductor systems, systems or devices, or any combination of the above. More specific examples of computer-readable storage media may include, but are not limited to: an electrical connection with one or more wires, a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the above. In this embodiment, the computer-readable storage medium may be any tangible medium containing or storing a program that can be used by or in combination with an instruction execution system, system or device. The program code contained on the computer-readable storage medium may be transmitted using any appropriate medium, including but not limited to: wires, optical cables, RF (Radio Frequency), etc., or any suitable combination of the above.
[0205] The computer-readable storage medium may be included in the point cloud lossy compression device; or may exist independently without being installed in the point cloud lossy compression device.
[0206] The computer-readable storage medium carries one or more programs. When the one or more programs are executed by a point cloud lossy compression device, the point cloud lossy compression device: at the encoding end, constructs an octree based on the quantized point cloud; converts the occupancy code values of the leaf nodes of the octree into binary representation to obtain a first occupancy code value; selects part of the occupancy code values from the first occupancy code values, and predicts a first distribution probability that each bit of the part of the occupancy code values is 0 or 1; encodes the first distribution probability to obtain and transmit a first bit code stream to a decoding end; predicts the occupancy code value of the non-leaf node of the octree to be a second distribution probability of any value between 1 and 255; encodes the second distribution probability to obtain and transmit a second bit code stream to a decoding end.
[0207] At a decoding end, receiving a first bit stream and a second bit stream;
[0208] Predicting, based on the second bit code stream, a second distribution probability that the occupied code value of the non-leaf node is any value between 1 and 255, and predicting, based on the second distribution probability, the occupied code value of the non-leaf node;
[0209] According to the first bit code stream, predicting a first distribution probability that each bit of the first occupied code value part occupied code value is 0 or 1, and according to the first distribution probability, predicting an occupied code value of the first occupied code value part;
[0210] Predicting an occupied code value of a remaining part of the first occupied code value according to the occupied code value of the non-leaf node and the occupied code value of the first occupied code value portion;
[0211] According to the occupied code value of the first occupied code value part and the occupied code value of the remaining part, converting to obtain the occupied code value of the leaf node in decimal representation;
[0212] According to the occupancy code values of leaf nodes and non-leaf nodes, a new octree is constructed;
[0213] According to the new octree, the reconstructed point cloud is obtained.
[0214] Computer program code for performing the operations of the present application may be written in one or more programming languages or a combination thereof, including object-oriented programming languages such as Java, Smalltalk, C++, and conventional procedural programming languages such as "C" or similar programming languages. The program code may be executed entirely on the user's computer, partially on the user's computer, as a separate software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the case of a remote computer, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet service provider).
[0215] The flow chart and block diagram in the accompanying drawings illustrate the possible architecture, function and operation of the system, method and computer program product according to various embodiments of the present application. In this regard, each square box in the flow chart or block diagram can represent a module, a program segment or a part of a code, and the module, the program segment or a part of the code contains one or more executable instructions for realizing the specified logical function. It should also be noted that in some alternative implementations, the functions marked in the square box can also occur in a sequence different from that marked in the accompanying drawings. For example, two square boxes represented in succession can actually be executed substantially in parallel, and they can sometimes be executed in the opposite order, depending on the functions involved. It should also be noted that each square box in the block diagram and / or flow chart, and the combination of the square boxes in the block diagram and / or flow chart can be implemented with a dedicated hardware-based system that performs a specified function or operation, or can be implemented with a combination of dedicated hardware and computer instructions.
[0216] The modules involved in the embodiments described in this application may be implemented by software or hardware, wherein the name of the module does not constitute a limitation on the unit itself in some cases.
[0217] The readable storage medium provided by the present application is a computer-readable storage medium, which stores computer-readable program instructions (i.e., computer programs) for executing the above-mentioned point cloud lossy compression method, and can solve the technical problem of a large number of points being lost in dense point clouds. Compared with the prior art, the beneficial effects of the computer-readable storage medium provided by the present application are the same as the beneficial effects of the point cloud lossy compression method provided by the above-mentioned embodiment, and will not be elaborated here.
[0218] The present application also provides a computer program product, including a computer program, which implements the steps of the point cloud lossy compression method as described above when the computer program is executed by a processor.
[0219] The computer program product provided by the present application can solve the technical problem of a large number of points being lost in dense point clouds. Compared with the prior art, the beneficial effects of the computer program product provided by the present application are the same as the beneficial effects of the point cloud lossy compression method provided by the above embodiment, which will not be elaborated here.
[0220] The above descriptions are only some embodiments of the present application, and are not intended to limit the patent scope of the present application. All equivalent structural changes made using the contents of the present application specification and drawings under the technical concept of the present application, or direct / indirect applications in other related technical fields are included in the patent protection scope of the present application.
Claims
1. A point cloud lossy compression method, It is characterized in that The method is applied to the encoding end, comprising: An octree is constructed based on the quantized point cloud; Converting the occupancy code value of the octahedral tree leaf node into a binary representation to obtain a first occupancy code value; Selecting some occupied code values from the first occupied code values, and predicting a first distribution probability that each bit of the some occupied code values is 0 or 1; Encoding the first distribution probability to obtain and transmit a first bit stream to a decoding end; Predicting the occupancy code value of the non-leaf node of the octree to be a second distribution probability of any value between 1 and 255; The second distribution probability is encoded to obtain a second bit code stream, which is then transmitted to a decoding end.
2. The method according to claim 1, It is characterized in that The step of constructing an octree based on the quantized point cloud includes: Divide the cube block of the point cloud into 8 equal cube sub-blocks; For each of the cube sub-blocks, if it contains at least one point cloud data of the point cloud, the occupancy code of the cube sub-block is set to 1, otherwise it is set to 0; Combining the occupancy codes of the eight cube sub-blocks into an 8-bit binary code, and converting the 8-bit binary code into a decimal value as the occupancy code value of the cube block at the octree node; The cube sub-block is used as a new cube block, and the step of dividing the cube block of the point cloud into 8 equal cube sub-blocks is performed until the cube block of the point cloud is divided into the smallest voxels.
3. A point cloud lossy compression method, It is characterized in that The method is applied to a decoding end, comprising: receiving a first bit stream and a second bit stream; Predicting, based on the second bit code stream, a second distribution probability that the occupied code value of the non-leaf node is any value between 1 and 255, and predicting, based on the second distribution probability, the occupied code value of the non-leaf node; According to the first bit code stream, predicting a first distribution probability that each bit of the first occupied code value part occupied code value is 0 or 1, and according to the first distribution probability, predicting an occupied code value of the first occupied code value part; Predicting an occupied code value of a remaining part of the first occupied code value according to the occupied code value of the non-leaf node and the occupied code value of the first occupied code value portion; According to the occupied code value of the first occupied code value part and the occupied code value of the remaining part, converting to obtain the occupied code value of the leaf node in decimal representation; According to the occupancy code values of leaf nodes and non-leaf nodes, a new octree is constructed; According to the new octree, the reconstructed point cloud is obtained.
4. The method according to claim 3, It is characterized in that The step of predicting the occupied code value of the non-leaf node as a second distribution probability of any value between 1 and 255 according to the second bit code stream, and predicting the occupied code value of the non-leaf node according to the second distribution probability comprises: Predicting and obtaining ancestor node information of non-leaf nodes according to the second bit code stream; Predicting a second distribution probability that the first non-leaf node is any value between 1 and 255 based on the ancestor node information of the first non-leaf node with an even subscript and the second bit code stream, and predicting an occupied code value of the first non-leaf node based on the second distribution probability of the first non-leaf node; Predicting a second distribution probability of any value from 1 to 255 of the second non-leaf node according to the ancestor node information of the second non-leaf node with an odd subscript and the second bit code stream, and predicting an occupied code value of the second non-leaf node according to the second distribution probability of the second non-leaf node; The occupied code value of the non-leaf node is obtained according to the occupied code value of the first non-leaf node and the occupied code value of the second non-leaf node.
5. The method according to claim 3, It is characterized in that The step of predicting, based on the first bit code stream, a first distribution probability that each bit of the first occupied code value part occupied code value is 0 or 1, and predicting, based on the first distribution probability, the first occupied code value part occupied code value comprises: Predicting the ancestor node information of the leaf node according to the first bit code stream; Predicting, based on the ancestor node information of the first leaf node with an even subscript and the first bit code stream, a first distribution probability that each bit of the first occupied code value part of the first leaf node is 0 or 1, and predicting, based on the first distribution probability of the first occupied code value part of the first leaf node, a first occupied code value part of the first leaf node; Predicting, based on the ancestor node information of the second leaf node with an odd subscript and the first bit code stream, a first distribution probability that each bit of the first occupied code value part of the second leaf node is 0 or 1, and predicting, based on the first distribution probability of the first occupied code value part of the second leaf node, a first occupied code value part of the second leaf node; According to the first occupied code value partially occupied code value of the first leaf node and the first occupied code value partially occupied code value of the second leaf node, the first occupied code value partially occupied code value is obtained.
6. The method according to claim 3, It is characterized in that The step of predicting the occupied code value of the remaining part of the first occupied code value according to the occupied code value of the non-leaf node and the occupied code value of the first occupied code value comprises: Obtaining the occupied code value of the non-leaf node and the first occupied code value and part of the occupied code value of the leaf node; According to the occupied code value of the non-leaf node and the partially occupied code value of the first occupied code value of the leaf node, the occupied code value of the remaining part of the first occupied code value is predicted in the pre-trained neural network model.
7. A point cloud lossy compression device, It is characterized in that The device is applied to an encoding end and includes: A construction module is used to construct an octree based on the quantized point cloud; A conversion module, used for converting the occupancy code value of the octahedral tree leaf node into a binary representation to obtain a first occupancy code value; a first prediction module, configured to select a part of the occupied code values from the first occupied code values, and predict a first distribution probability that each bit of the part of the occupied code values is 0 or 1, and / or predict a second distribution probability that the occupied code values of the non-leaf nodes of the octree are any value between 1 and 255; an encoding module, configured to encode the first distribution probability to obtain and transmit a first bit code stream to a decoding end, and / or to encode the second distribution probability to obtain and transmit a second bit code stream to a decoding end; And / or, the device is applied to a decoding end, comprising: A receiving module, used for receiving a first bit code stream and a second bit code stream; A second prediction module is configured to predict, based on the second bit code stream, a second distribution probability that the occupied code value of the non-leaf node is any value between 1 and 255, and predict, based on the second distribution probability, the occupied code value of the non-leaf node, and / or, based on the first bit code stream, predict a first distribution probability that each bit of the partially occupied code value of the first occupied code value is 0 or 1, and predict, based on the first distribution probability, the partially occupied code value of the first occupied code value, and / or, based on the occupied code value of the non-leaf node and the partially occupied code value of the first occupied code value, predict the occupied code value of the remaining part of the first occupied code value; A processing module is used to convert the occupancy code value of the leaf node in decimal representation according to the occupancy code value of the first occupancy code value part and the occupancy code value of the remaining part; construct a new octree according to the occupancy code values of the leaf node and the non-leaf node; and obtain a reconstructed point cloud according to the new octree.
8. A point cloud lossy compression device, It is characterized in that The point cloud lossy compression device is an encoding device, comprising: a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the computer program is configured to implement the steps of the point cloud lossy compression method according to claims 1 to 2; And / or, the point cloud lossy compression device is a decoding device, comprising: a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the computer program is configured to implement the steps of the point cloud lossy compression method as described in claims 3 to 5.
9. A storage medium, It is characterized in that The storage medium is a computer-readable storage medium, and a computer program is stored on the storage medium. When the computer program is executed by a processor, the steps of the point cloud lossy compression method according to any one of claims 1 to 6 are implemented.
10. A computer program product, It is characterized in that The computer program product comprises a computer program, and when the computer program is executed by a processor, the steps of the point cloud lossy compression method according to any one of claims 1 to 6 are implemented.
Citation Information
Patent Citations
Method and apparatus for point cloud coding
CN113892128A
Point cloud compression method and device and computer readable storage medium
CN114004902A
A point cloud geometric isolated point decoding method and device
CN114078170A
Point cloud data compression method and device, equipment and storage medium
CN116843774A
Static point cloud coding method based on octree retention model
CN118354102A
