Point cloud lossy compression method, device, equipment, storage medium and program product
By constructing and encoding the occupancy code values of the octree and selectively transmitting the distribution probability of point cloud data, the problem of point loss in dense point clouds is solved, and efficient point cloud data reconstruction and transmission are achieved.
Patent Information
- Application Number
- CN202411041697.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2024-07-31
- Publication Date
- 2025-09-30
- Estimated Expiration
- 2044-07-31
AI Technical Summary
Existing octree-based lossy compression schemes for point cloud geometry often lead to the problem of a large number of point losses in dense point clouds.
By constructing an octree, the occupancy code values of leaf nodes are converted into binary representation, and the distribution probability of some occupancy code values is selectively encoded to generate a bit code stream that is transmitted to the decoding end; the decoding end predicts the occupancy code values of non-leaf nodes and leaf nodes based on the received bit code stream and reconstructs the point cloud.
Significantly reduce data volume, improve data transmission efficiency, ensure complete structural recovery of point cloud data, and reduce point loss during dense point cloud reconstruction.
Smart Images

Figure CN119094800B_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 lossy compression schemes for point cloud geometry all achieve this by adjusting the quantization step size when building the octree. This effectively results in lossless compression of the octree itself. However, in practice, applying this quantization step size adjustment method to lossy point cloud compression can lead to large-scale point cloud data loss (hereinafter referred to as points) in the reconstructed point cloud. Due to the high density of points in dense point clouds, adjusting the quantization step size causes a large number of points to be rounded to the same integer, resulting in loss.
[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, there is an urgent need to solve the problem of a large number of point losses 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, this 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 octree 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 an occupancy code value of a non-leaf node of the octree as 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 minimum voxels.
[0017] To achieve the above objectives, this application proposes a point cloud lossy compression method, wherein the method applied to the decoding end 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] predicting, based on the first bit stream, a first distribution probability that each bit of the first occupied code value portion is 0 or 1, and predicting, based on the first distribution probability, the occupied code value of the first occupied code value portion;
[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;
[0022] Converting 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;
[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 a second distribution probability of an occupied code value of a non-leaf node as any value between 1 and 255 based on the second bit code stream, and predicting an occupied code value of the non-leaf node based on the second distribution probability includes:
[0026] Predicting and obtaining ancestor node information of the non-leaf node according to the second bit code stream;
[0027] Predicting, based on the ancestor node information of the first non-leaf node with an even subscript and the second bit code stream, a second distribution probability that the first non-leaf node is any value between 1 and 255, and predicting, based on the second distribution probability of the first non-leaf node, an occupied code value of the first non-leaf node;
[0028] Predicting a second distribution probability of any value between 1 and 255 for 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;
[0029] An occupancy code value of the non-leaf node is obtained according to the occupancy code value of the first non-leaf node and the occupancy code value of the second non-leaf node.
[0030] In one embodiment, the step of predicting, based on the first bit 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 occupied code value of the first occupied code value portion includes:
[0031] Predicting the ancestor node information of the leaf node according to the first bit code stream;
[0032] Predicting, based on ancestor node information of a first leaf node with an even subscript and the first bit stream, a first distribution probability that each bit of a first occupied code value and a partial occupied code value of the first leaf node is 0 or 1, and predicting, based on the first distribution probability of the partial occupied code value of the first occupied code value of the first leaf node, a partial occupied code value of the first occupied code value of the first leaf node;
[0033] Predicting, based on 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 and the partially occupied code value of the second leaf node is 0 or 1, and predicting, based on the first distribution probability of the partially occupied code value of the first occupied code value of the second leaf node, a partially occupied code value of the first occupied code value of the second leaf node;
[0034] The first occupied code value and the partially occupied code value of the first leaf node are obtained according to the partially occupied code value of the first occupied code value of the first leaf node and the partially occupied code value of the first occupied code value of the second leaf node.
[0035] In one embodiment, the step of predicting the occupied code value of the remaining portion of the first occupied code value based on 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 partial 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, which includes:
[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, configured to convert the occupancy code value of the octree leaf node into a binary representation to obtain a first occupancy code value;
[0042] a first prediction module, configured to select some occupied code values from the first occupied code values, and predict a first distribution probability that each bit of the some occupied code values is 0 or 1, and / or predict a second distribution probability that the occupied code values of 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 stream to a decoding end, and / or to encode the second distribution probability to obtain and transmit a second bit stream to a decoding end;
[0044] And / or, the device is applied to a decoding end, including:
[0045] A receiving module, configured to receive a first bit stream and a second bit stream;
[0046] a second prediction module, 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 portion of the first occupied code value;
[0047] The 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, 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;
[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 the 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. When the computer program is executed by a processor, it implements the steps of the point cloud lossy compression method as described above.
[0052] At the encoding end, the present application converts the occupancy code value of the leaf node of the octagonal tree into a binary representation, and selectively encodes and transmits the distribution probability of part of the occupied code value, 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 occupancy code value of the non-leaf node and the partial occupancy code value of the first occupied code value of the leaf node are first predicted, and based on the occupancy code value of the non-leaf node and the partial occupancy code value of the first occupied code value of the leaf node, the occupancy code value of the untransmitted part of the leaf node is predicted. The decoding end predicts the distribution probability and predicts the occupancy code value according to the distribution probability, which can restore the complete structure of the point cloud data and improve the decoding speed and data processing efficiency.
[0053] Through the above encoding and decoding processes, 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 following briefly introduces the drawings required for use in the embodiments or the description of the prior art. Obviously, for ordinary technicians in this field, other drawings can be obtained based on these drawings without any creative work.
[0056] Figure 1 A flowchart illustrating an implementation of the first embodiment of the point cloud lossy compression method of the present application;
[0057] Figure 2 A flowchart of the third embodiment of the point cloud lossy compression method provided in this application;
[0058] Figure 3 Schematic diagram of the leaf node decoding process provided by 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 clouds 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 explained with reference to the accompanying drawings in conjunction with the embodiments. DETAILED DESCRIPTION
[0064] It should be understood that the specific embodiments described herein are merely used to explain the technical solutions of the present application and are not intended 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 can be a point cloud processing system, or a computing service device with data processing, network communication, and program execution functions, such as a tablet computer, personal computer, mobile phone, etc., or an electronic device or processor capable of implementing the above functions. Below, this embodiment and the following embodiments are described using a point cloud processing device as an example. For example, the following point clouds can be sparse point clouds or dense point clouds. This embodiment and the following embodiments use dense point clouds 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's important to note that octrees are a commonly used structure when processing dense point cloud data in three-dimensional space. A point cloud is a collection of a large number of points in three-dimensional space that represent the positional information of an object's surface. These points are called point cloud data. Quantization is the process of converting continuous spatial coordinates into discrete grid coordinates, which reduces the amount of data and facilitates processing. A quantized point cloud means that the points in the point cloud are mapped to a three-dimensional grid, with each point having geometric coordinates rounded to integers.
[0070] An octree is a tree-like data structure for three-dimensional space, similar to a quadtree for two-dimensional space. In an octree, each of its eight child nodes corresponds to eight subregions of the space represented by the current node. The octree is used to recursively partition space until there are no more points within the space represented by each leaf node, or the number of points falls 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 the actual point cloud data or information indicating that the area is occupied by the point cloud.
[0074] In the octree encoding method, an occupancy code value is a numerical 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 within 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 set to 0 or a specific value indicating unoccupied. Occupancy code values are used in the octree to efficiently represent and store the spatial distribution information of point cloud data.
[0075] The occupancy code values of octree leaf nodes are decimal numbers ranging from 1 to 255. Converting occupancy code values to binary representation means converting the decimal or any other base occupancy code values to binary numbers. This is to facilitate computer storage, processing, and transmission of data. For octree leaf nodes, this conversion helps to more compactly store the spatial occupancy information of point cloud data, while also facilitating 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. 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, greatly improving the efficiency of searching, rendering, and analyzing point cloud data in three-dimensional space.
[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 part of 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, instead of using the entire occupied code value, a portion of the bits is selected for processing. This is to reduce computational complexity and save bit rate, and only certain bits of the occupied code value are statistically analyzed. The selected portion of the occupied code value may be based on a specific rule or algorithm, such as selecting high or low bits, 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. Only the lossless part is encoded and transmitted, thereby achieving lossy compression of the leaf node.
[0082] Based on neural networks, by analyzing large amounts of point cloud data, the frequency of occurrence of 0 or 1 is predicted. This prediction helps 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, wherein the data input to the neural network will distinguish the base: for non-leaf nodes, the input is the decimal occupation code value, and the output is the distribution probability of the decimal occupation code value; for leaf nodes, the input is the binary occupation code value, and the output is the distribution probability of the binary occupation 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: Encode the first distribution probability to obtain a first bit stream and transmit it 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 values predicted in step S30. During the encoding phase, the first distribution probability is used to guide the encoding algorithm to generate a more compact bit 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. This minimizes the overall coding length, thereby achieving data compression. The resulting encoded bit stream, consisting of a series of 0s and 1s, is the result of compression encoding of the original data guided by a probability model. The first bit stream contains a compressed representation of the point cloud data while preserving the original information. The encoded first bit stream needs to be transmitted to the receiving end, i.e., the decoding end, via a communication channel. During transmission, the integrity of the bit stream must be guaranteed to ensure that the decoding end can accurately recover 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, which is 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 areas contain actual points and are marked as 1, while other areas 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, the probability prediction is achieved at the encoding end through a deep learning model, 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 areas, so the probability of the occupied code value corresponding to the spatial area is higher.
[0089] Step S60: Encode the second distribution probability to obtain a second bit code stream and transmit it 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 value of the non-leaf node 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 status of the leaf nodes in the octree into a first occupancy code value represented in binary, selects a portion of the occupancy code value from the first occupancy code value, and predicts a first distribution probability for each bit in these code values being 0 or 1. The encoder also predicts a second distribution probability for the occupancy code value (a value between 1 and 255) of the non-leaf nodes. The predicted first and second distribution probabilities are encoded to generate a first bit stream and a second bit stream, which are then transmitted to the decoder. By probabilistically predicting and selectively transmitting a portion of the occupancy code value, the amount of data is significantly reduced and the efficiency of data transmission is improved. Even if only a portion of the occupancy code value is transmitted, the information of the untransmitted portion can be obtained through prediction, maintaining high reconstruction accuracy and overcoming the problem of large-scale point loss in dense point clouds.
[0095] In one embodiment, in 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: Divide 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 eight cubic sub-blocks. This division is typically based on an octree structure, where each cubic sub-block can be considered a node in the octree. An octree is a spatial partitioning data structure that recursively divides space into eight equal sub-regions until the number of point cloud data points in each sub-region falls below a certain threshold or reaches a predefined depth. This division helps organize and index point cloud data, as well as achieve efficient data compression and querying.
[0099] Step A20: for each cube sub-block, if it contains at least one point cloud data of the point cloud, setting the occupancy code of the cube sub-block to 1, otherwise setting it to 0;
[0100] It should be noted that each cube 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 cube 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 a point cloud data point, 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, 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 octree encoding, each cube sub-block has an occupancy code that indicates whether it 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 eight sub-blocks are combined in sequence to form an 8-bit binary code. Since each occupancy code is a binary bit, the combined occupancy codes of the eight sub-blocks form an 8-bit binary number that can represent 256 states from 00000000 to 11111111. This fully utilizes the advantages of binary encoding and represents the occupancy status of the eight sub-blocks in a compact manner.
[0103] Convert the resulting 8-bit binary code to its equivalent decimal value. Since the maximum value of an 8-bit binary code is 11111111 (the decimal representation of 255), the converted decimal value will be between 1 and 255 (inclusive). 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 a region in space, and the occupancy code value is used to indicate the occupancy status of that region and its sub-regions. The occupancy code value is a decimal value converted from the binary combination of the sub-block occupancy codes.
[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 the pixel in a 2D image. The smallest voxel usually refers to the final result of the segmentation process, that is, the smallest cube sub-block that cannot be further divided. When divided into the smallest voxel, the loop is exited. 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] For example, the specific steps for constructing an octree may include: selecting an initial spatial region, typically a bounding box of point cloud data; determining whether the current region needs further division; if it contains multiple points and meets the division criteria, dividing it into eight subregions. Repeating the above process for each subregion until all subregions meet the stopping criteria. Calculating an occupancy code value for each node indicates the distribution of point cloud data in the spatial region represented by the node and its subregions.
[0107] In this implementation, the point cloud cube is first divided into eight equal cube sub-blocks. Next, the point cloud points are marked according to their occupancy within the cube sub-blocks, generating occupancy codes. Furthermore, the occupancy codes of the eight sub-blocks are combined into an 8-bit binary code, and after base conversion, the decimal node occupancy code values are obtained. Finally, an octree is constructed based on the node occupancy code values. This process not only facilitates data organization and storage but also provides a foundation for subsequent data compression and transmission. The use of an octree structure allows for efficient management and manipulation of large-scale point cloud data while preserving the data's geometric characteristics and details.
[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 introduction and will not be repeated hereafter. The embodiment of the present application provides a point cloud lossy compression method, which is applied to the 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 decoder receives the first and second bit streams and uses the same neural network model as the encoder to decode and restore the original point cloud data. The decoding process is the reverse 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 by the decoder can be a transformer model.
[0111] Step T20: predicting a second distribution probability of an occupied code value of a non-leaf node as any value between 1 and 255 based on the second bit code stream, and predicting an occupied code value of the non-leaf node based on the second distribution probability;
[0112] It should be noted that during the encoding and decoding process, the second distribution probability refers to the probability distribution associated with non-leaf nodes and is used to recover the occupancy status of non-leaf nodes. During decoding of the second bit stream, predictions are made based on the second distribution probability to obtain the occupancy code values of the non-leaf nodes. By decoding the second bit stream and utilizing prediction techniques, the occupancy code values of the non-leaf nodes in the octree structure can be efficiently recovered, i.e., non-leaf nodes are losslessly compressed.
[0113] Step T30: predicting, based on the first bit stream, a first distribution probability that each bit of the first occupied code value portion is 0 or 1, and predicting, based on the first distribution probability, the occupied code value of the first occupied code value portion;
[0114] It should be noted that decoding is the reverse process of data transmission and storage, recovering the original data from the compressed first bit stream. The decoding process typically requires performing the inverse operation based on the algorithm and parameters used during encoding to accurately restore the pre-compression data. For example, 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 encoding, prediction technology is the process of estimating unknown information based on known information, thereby reducing data redundancy and improving coding efficiency. When decoding the first bit stream, a prediction based on the first distribution probability can be made to obtain partial values of the first occupancy code value (i.e., the occupancy status of the octree node). The decoder can predict partial occupancy code values for certain child nodes based on the probabilistic model, eliminating the need to transmit the entire binary occupancy code in the bit stream, i.e., partial lossy compression of leaf nodes, thus saving bitrate.
[0117] Step T40, predicting an occupied code value of a remaining portion of the first occupied code value based on 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 during the decoding process, after the decoder obtains the occupancy code values of non-leaf nodes and the partially occupied code values of the first occupied code value of the leaf node, it also needs to predict or decode the remaining occupied code values of the first occupied code value of the leaf node to obtain the complete occupancy code value of the leaf node. Using the occupancy code values of the non-leaf nodes and the decoded partially occupied code values, the predictive neural network can predict the remaining occupancy code values, thereby recovering the complete occupancy code value of the leaf node.
[0119] Step T50, converting the partial occupation code value of the first occupation code value and the remaining occupation code value to obtain the decimal representation of the occupation code value of the leaf node;
[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 based on the occupancy code values of the leaf nodes and 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 the 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. Constructing an octree is a key step in the point cloud data decoding process. It 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: Obtain 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 during the decoding process based on the occupancy code values of leaf and non-leaf nodes. It contains information about the spatial distribution of the point cloud data. Reconstructing the point cloud is the ultimate goal of the decoding process—the process of recovering the original point cloud data from the compressed encoded data. During the decoding phase, the decoder first constructs a new octree based on the information in the bitstream. Then, based on the occupancy code values in the octree, it gradually recovers the position and attributes of each point in the point cloud data, thereby reconstructing the original point cloud data.
[0125] For example, point cloud reconstruction involves the following steps: Using an octree structure to partition the three-dimensional space and determine which regions contain point cloud data points; performing coordinate offsets based on the occupancy code values and additional attribute information of the octree leaf nodes to recover the positions and attributes of the point cloud data points. Furthermore, post-processing operations, such as filtering and denoising of the point cloud data, are required to improve the quality of the reconstructed point cloud.
[0126] In this embodiment, after receiving the first and second bit streams transmitted by the encoder, the decoder decodes the first bit stream to obtain a first distribution probability and predicts a portion of the occupied code values in the first occupancy code value based on the first distribution probability. The decoder decodes the second bit stream to obtain a second distribution probability and predicts the occupied code values of non-leaf nodes based on the second distribution probability. Then, based on the decoded occupancy code values of the non-leaf nodes and the portion of the occupied code values in the first occupancy code value, the occupancy code values of the remaining portion of the first occupancy code value are predicted. Further, the occupancy code values of the portion and the remaining portion of the first occupancy code value are converted to decimal representation of the occupancy code values of the leaf nodes. Finally, a new octree is constructed based on the occupancy code values of the leaf nodes and the non-leaf nodes. Based on the new octree, the quantized point cloud is reconstructed to obtain a reconstructed point cloud. Through the above process, efficient data representation and compression are achieved, ensuring accurate recovery of the decoded data, thereby preventing the occurrence of large-scale point loss during dense point cloud reconstruction and improving the quality of the reconstructed point cloud.
[0127] In one embodiment, in step T20, the point cloud lossy compression method includes steps D10 to D40:
[0128] Step D10, predicting and obtaining ancestor node information of the non-leaf node according to the second bit code stream;
[0129] It should be noted that in a tree data structure, an ancestor node refers to the set of all nodes above a node in the tree. For non-leaf nodes, the ancestor node information includes the node's location in the octree, as well as related spatial partitioning and encoding parameters, such as occupancy code values.
[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-level nodes of these even-numbered non-leaf nodes in the octree, including their positions, occupancy code values, etc. This information is crucial for predicting and understanding the occupancy code values of the lower-level 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 stream. The decoder uses a neural network model to predict the occupancy 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 between 1 and 255 for 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 for 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, occupancy 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, ancestor node information and occupancy code values of the even-numbered non-leaf nodes carried in the second bit code stream. The decoder uses a neural network model to predict the occupancy 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 occupancy code value of the first non-leaf node with an even subscript.
[0137] Step D40: Obtain the occupancy code value of the non-leaf node according to the occupancy code value of the first non-leaf node and the occupancy code value of the second non-leaf node.
[0138] It should be noted that the occupancy code value of the first non-leaf node obtained in step D20 and the occupancy code value of the second non-leaf node obtained in step D30 are used to completely restore the occupancy 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 by 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 by 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, and then the occupied code value of the non-leaf node is obtained. 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 ancestor node information of the leaf node based on the first bit stream;
[0143] It should be noted that the ancestor node information of a 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 occupancy 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, based on the ancestor node information of the first leaf node with an even subscript and the first bit stream, a first distribution probability of each bit of the first occupied code value partial occupied code value of the first leaf node being 0 or 1, and predicting, based on the first distribution probability of the first occupied code value partial occupied code value of the first leaf node, a 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 occupancy 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 an even subscript; after constructing the first distribution probability of the first leaf node, combined with the context information, the partial occupancy code value of the first leaf node with an even subscript is predicted.
[0146] Step E30: 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 portion of the second leaf node is 0 or 1, and predicting, based on the first distribution probability of the first occupied code value portion of the second leaf node, a first occupied code value portion 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 odd part.
[0148] Step E40: Obtain a first occupied code value and a partial occupied code value according to the first occupied code value of the first leaf node and the first occupied code value of the second leaf node.
[0149] It should be noted that the partial occupied code value of the first occupancy 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 losslessly compressed, and the untransmitted 4 bits are lossy compressed; 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 based on the occupied code value of the non-leaf node decoded from the second bit code stream, the partial occupied code value of 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, 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 and the partial occupied code value of the first leaf node are 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 odd part ancestor node information and the partial occupied code value of the first occupied code value of the even part, and then the complete first occupied code value and partial occupied code value are 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 achieving partial lossless compression of the leaf node. While ensuring that the partial binary number recovered from the compressed data is consistent with the transmitted part, 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 in 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 and partial occupied code value of the leaf node 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 a pre-trained neural network model based on 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 realizing 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 and using a pre-trained neural network model to predict the remaining occupancy code values of leaf nodes, lossy compression of the remaining occupancy code values of untransmitted leaf nodes is achieved. This method is suitable for processing large-scale point cloud data, such as dense point clouds, and can significantly improve decoding speed and reconstructed point cloud quality.
[0160] For example, in order to help understand this embodiment in combination with the above embodiment, a schematic diagram of obtaining the first occupied code value of the leaf node is shown. Figure 3 , including encoding a portion of the occupied code values in the first occupied code value of 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 portion of the occupied code values in the first occupied code value based on the first distribution probability; for the occupied code values of the unknown portion in the first occupied code value, predicting the occupied code values based on the occupied code values of the non-leaf nodes and the portion 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 embodiment, 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 represents the encoding stage, the green arrow represents the decoding stage, the orange circle represents the non-leaf node, and the green circle represents 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. The same applies to the green circle, so I will not repeat them.
[0163] First, an octree is constructed based on the quantized point cloud. This octree sequence, generated by a breadth-first search, is divided into a sequence of non-leaf nodes and a sequence of leaf nodes. For non-leaf nodes, a neural network is used to predict probabilities. To ensure consistency with the probabilities predicted by the decoder, context consistency must be ensured, and the same neural network must be used for probability prediction on both the encoder and decoder sides to achieve the same distribution probability.
[0164] The checkerboard prediction method is a method that can be used. For non-leaf nodes within 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 representing the predicted probability of each occupied code. Then, the occupied code values of half of the non-leaf nodes with even subscripts are obtained based on the second distribution probability of half of the non-leaf nodes with even subscripts. Then, based on the ancestor node information and the occupied code values of non-leaf nodes with even subscripts, the second distribution probability of non-leaf nodes with odd subscripts is predicted, that is, a 255-dimensional vector representing the predicted probability of each occupied code. Finally, the occupied code values of non-leaf nodes with odd subscripts are obtained based on the second distribution probability of non-leaf nodes with odd subscripts.
[0165] For leaf nodes, the decimal occupancy code value is first converted into 8 binary numbers, namely the first occupancy code value, and only a part of the binary number, namely the partial occupancy code value, is transmitted. The process of predicting the occupancy 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, that is, 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, that is, a 2-dimensional vector representing the probability of 0 or 1 of each binary number.
[0166] The second distribution probability of the non-leaf nodes and the first distribution probability of the first occupied code value of the leaf nodes are encoded into a bit code stream for actual transmission through an arithmetic encoder.
[0167] The decoding side uses an arithmetic decoder and the same neural network as the encoder. During decoding, the neural network uses the available context output (i.e., ancestor node information) and / or decoded occupancy code values, along with the same probability values as the encoder, to obtain the actual occupancy code values from the bit stream via the arithmetic decoder.
[0168] After obtaining the occupied code values of non-leaf nodes and the partially occupied code values of the first occupied code value 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. Another neural network is used for prediction. This neural network does not participate in encoding and decoding, but 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 bit rate.
[0169] Finally, the first occupancy code value is obtained based on the partial occupancy code value of the leaf node and the remaining occupancy code value, and converted to a decimal occupancy code value. The octree sequence is then generated based on the occupancy code values of the non-leaf nodes and the occupancy codes of the leaf nodes. The octree sequence is then used to reconstruct the quantized point cloud. Specifically, the coordinates are offset based on the octree occupancy code, and finally the integer points corresponding to the voxels are determined, thereby achieving 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 scope of protection 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 octree leaf node into a binary representation to obtain a first occupancy code value;
[0174] a first prediction module 30 configured to select a portion of the occupied code values from the first occupied code values and predict a first distribution probability that each bit of the portion of the occupied code values is 0 or 1, and / or predict a second distribution probability that the occupied code values of non-leaf nodes of the octree are any value between 1 and 255;
[0175] An encoding module 40 is configured to encode the first distribution probability to obtain a first bit stream and transmit it to a decoding end, and / or to encode the second distribution probability to obtain a second bit stream and transmit it to a decoding end;
[0176] Optionally, the construction module 10 is further configured 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 minimum 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 the decoding end, including:
[0181] A receiving module 50, configured to receive a first bit stream and a second bit stream;
[0182] a second prediction module 60 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 portion 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, based on the ancestor node information of the first non-leaf node with an even subscript and the second bit code stream, a second distribution probability that the first non-leaf node is any value between 1 and 255, and predicting, based on the second distribution probability of the first non-leaf node, an occupied code value of the first non-leaf node;
[0186] Predicting a second distribution probability of any value between 1 and 255 for 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;
[0187] An occupancy code value of the non-leaf node is obtained according to the occupancy code value of the first non-leaf node and the occupancy 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 stream;
[0189] Predicting, based on ancestor node information of a first leaf node with an even subscript and the first bit stream, a first distribution probability that each bit of a first occupied code value and a partial occupied code value of the first leaf node is 0 or 1, and predicting, based on the first distribution probability of the partial occupied code value of the first occupied code value of the first leaf node, a partial occupied code value of the first occupied code value of the first leaf node;
[0190] Predicting, based on 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 and the partially occupied code value of the second leaf node is 0 or 1, and predicting, based on the first distribution probability of the partially occupied code value of the first occupied code value of the second leaf node, a partially occupied code value of the first occupied code value of the second leaf node;
[0191] The first occupied code value and the partially occupied code value of the first leaf node are obtained according to the partially occupied code value of the first occupied code value of the first leaf node and the partially occupied code value of the first occupied code value of the second leaf node.
[0192] Optionally, the second prediction module 60 is further configured to obtain the occupied code value of the non-leaf node and the partial 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 in this application utilizes the point cloud lossy compression method described in the aforementioned embodiment to address the technical issue of large-scale point loss in dense point clouds. Compared to the prior art, the point cloud lossy compression device provided in this application offers the same beneficial effects as the point cloud lossy compression method described in the aforementioned embodiment. Other technical features of the point cloud lossy compression device are the same as those disclosed in the aforementioned embodiment and are not further elaborated 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 including: at least one processor; and a memory communicatively connected to the at least one processor; wherein the memory stores instructions that can be executed by the at least one processor, and the instructions are executed by the at least one processor to enable the at least one processor to execute the point cloud lossy compression method in the above 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 embodiments of the present application. The point cloud lossy compression device in the embodiments 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), in-vehicle terminals (such as in-vehicle navigation terminals), and fixed terminals such as digital TVs and desktop computers. Figure 7 The point cloud lossy compression device shown is merely an example and should not limit 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 (e.g., a central processing unit, a graphics processing unit, etc.), which can perform various appropriate actions and processes based on programs stored in a read-only memory (ROM) 1002 or programs loaded from a storage device 1003 into a random access memory (RAM) 1004. RAM 1004 also stores various programs and data required for the operation of the point cloud lossy compression device. Processing device 1001, ROM 1002, and RAM 1004 are interconnected via a bus 1005. An input / output (I / O) interface 1006 is also connected to the bus. Typically, the following systems may be connected to I / O interface 1006: input device 1007 including, for example, a touchscreen, touchpad, keyboard, mouse, image sensor, microphone, accelerometer, gyroscope, etc.; output device 1008 including, for example, a liquid crystal display (LCD), speaker, vibrator, etc.; storage device 1003 including, for example, a magnetic tape, hard disk, etc.; and communication device 1009. Communication device 1009 can allow the point cloud lossy compression device to communicate with other devices wirelessly or wired 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 of the systems shown. More or fewer systems may be implemented or have alternatively.
[0199] In particular, according to the embodiments disclosed in the present application, the processes described above with reference to the flowcharts can be implemented as computer software programs. For example, the embodiments disclosed in the present application include a computer program product comprising a computer program carried on a computer-readable medium, the computer program comprising 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 via 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 in this application utilizes the point cloud lossy compression method described in the aforementioned embodiment to address the technical issue of large-scale point loss in dense point clouds. Compared to the prior art, the beneficial effects of the point cloud lossy compression device provided in this application are the same as those of the point cloud lossy compression method described in the aforementioned embodiment. Other technical features of the point cloud lossy compression device are the same as those disclosed in the aforementioned embodiment and are not further elaborated here.
[0201] It should be understood that the various parts disclosed in this application can be implemented using 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 description is merely a specific embodiment of the present application, but the scope of protection of the present application is not limited thereto. Any changes or substitutions that can be easily conceived by a person skilled in the art within the technical scope disclosed in this application should be included in the scope of protection of this application. Therefore, the scope of protection of this application should be based on the scope of protection of the claims.
[0203] The present application provides a computer-readable storage medium having computer-readable program instructions (ie, a computer program) stored thereon, wherein 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 this 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 thereof. 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 thereof. In this embodiment, the computer-readable storage medium may be any tangible medium that contains or stores a program that can be used by or in conjunction 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 thereof.
[0205] The computer-readable storage medium may be included in the point cloud lossy compression device; or may exist independently without being incorporated into 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 a portion of the occupancy code values from the first occupancy code values, and predicts a first distribution probability that each bit of the portion of the occupancy code values is 0 or 1; encodes the first distribution probability to obtain and transmits a first bit code stream to a decoding end; predicts a second distribution probability that the occupancy code value of the non-leaf node of the octree is any value between 1 and 255; encodes the second distribution probability to obtain and transmits 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] predicting, based on the first bit stream, a first distribution probability that each bit of the first occupied code value portion is 0 or 1, and predicting, based on the first distribution probability, the occupied code value of the first occupied code value portion;
[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;
[0211] Converting 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;
[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 stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on the remote computer or server. In cases involving 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., through the Internet using an Internet service provider).
[0215] The flow charts and block diagrams in the accompanying drawings illustrate the possible architecture, functions and operations of the systems, methods and computer program products according to various embodiments of the present application. In this regard, each box in the flow chart or block diagram can represent a module, program segment or a part of code, and the module, program segment or a part of 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 box can also occur in a different order than that marked in the accompanying drawings. For example, two 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 box in the block diagram and / or flow chart, and the combination of the boxes in the block diagram and / or flow chart can be implemented by a dedicated hardware-based system that performs the specified function or operation, or can be implemented by a combination of dedicated hardware and computer instructions.
[0216] The modules described in the embodiments of the present application may be implemented in software or hardware, wherein the name of a module does not necessarily limit the unit itself.
[0217] The computer-readable storage medium provided in this application stores computer-readable program instructions (i.e., a computer program) for executing the aforementioned point cloud lossy compression method, which can address the technical issue of large point loss in dense point clouds. Compared to the prior art, the beneficial effects of the computer-readable storage medium provided in this application are similar to those of the point cloud lossy compression method provided in the aforementioned embodiments, and are not further elaborated here.
[0218] The present application also provides a computer program product, including a computer program, which implements the steps of the above-mentioned point cloud lossy compression method when executed by a processor.
[0219] The computer program product provided in this application can solve the technical problem of large-scale point loss in dense point clouds. Compared with the prior art, the beneficial effects of the computer program product provided in this application are the same as those of the point cloud lossy compression method provided in the above embodiment, and will not be elaborated here.
[0220] The above description is only part of the embodiments of the present application and does not limit the patent scope of the present application. All equivalent structural transformations made by using the contents of the present application specification and drawings under the technical concept of the present application, or direct / indirect application in other related technical fields are included in the patent protection scope of the present application.
Claims
1. A point cloud lossy compression method, characterized in that: The method is applied to the encoding end, including: An octree is constructed based on the quantized point cloud; Converting the occupancy code value of the octree 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 a second distribution probability of an occupancy code value of a non-leaf node of the octree being any value from 1 to 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, wherein 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 minimum voxels.
3. A point cloud lossy compression method, 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; predicting, based on the first bit stream, a first distribution probability that each bit of the first occupied code value portion is 0 or 1, and predicting, based on the first distribution probability, the occupied code value of the first occupied code value portion; 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; Converting 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; 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, wherein The step of predicting, based on the second bit code stream, a second distribution probability of an occupied code value of a non-leaf node as any value between 1 and 255, and predicting, based on the second distribution probability, an occupied code value of the non-leaf node comprises: Predicting ancestor node information of the non-leaf node according to the second bit code stream; Predicting, based on the ancestor node information of the first non-leaf node with an even subscript and the second bit code stream, a second distribution probability that the first non-leaf node is any value between 1 and 255, and predicting, based on the second distribution probability of the first non-leaf node, an occupied code value of the first non-leaf node; Predicting a second distribution probability of any value between 1 and 255 for 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; An occupancy code value of the non-leaf node is obtained according to the occupancy code value of the first non-leaf node and the occupancy code value of the second non-leaf node.
5. The method according to claim 3, wherein The step of predicting, based on the first bit 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: Predicting the ancestor node information of the leaf node according to the first bit code stream; Predicting, based on ancestor node information of a first leaf node with an even subscript and the first bit stream, a first distribution probability that each bit of a first occupied code value and a partial occupied code value of the first leaf node is 0 or 1, and predicting, based on the first distribution probability of the partial occupied code value of the first occupied code value of the first leaf node, a partial occupied code value of the first occupied code value of the first leaf node; Predicting, based on 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 and the partially occupied code value of the second leaf node is 0 or 1, and predicting, based on the first distribution probability of the partially occupied code value of the first occupied code value of the second leaf node, a partially occupied code value of the first occupied code value of the second leaf node; The first occupied code value and the partially occupied code value of the first leaf node are obtained according to the partially occupied code value of the first occupied code value of the first leaf node and the partially occupied code value of the first occupied code value of the second leaf node.
6. The method according to claim 3, wherein 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 partial 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, 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, configured to convert the occupancy code value of the octree leaf node into a binary representation to obtain a first occupancy code value; a first prediction module, configured to select a portion of occupied code values from the first occupied code values and predict a first distribution probability that each bit of the portion of occupied code values is 0 or 1; an encoding module, configured to encode the first distribution probability to obtain and transmit a first bit stream to a decoding end; The first prediction module is further configured to predict a second distribution probability of an occupancy code value of a non-leaf node of the octree being any value between 1 and 255; The encoding module is further configured to encode the second distribution probability to obtain and transmit a second bit code stream to a decoding end.
8. A point cloud lossy compression device, characterized in that: The device is applied to a decoding end and includes: A receiving module, configured to receive a first bit stream and a second bit stream; a second prediction module, 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; The second prediction module is further configured to predict, based on the first bit stream, a first distribution probability that each bit of the first occupied code value portion occupied code value is 0 or 1, and predict, based on the first distribution probability, an occupied code value of the first occupied code value portion; The second prediction module is further configured to predict an occupied code value of a remaining portion of the first occupied code value based on the occupied code value of the non-leaf node and the occupied code value of the first occupied code value; The 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.
9. A point cloud lossy compression device, 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 any one of 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 on 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 any one of claims 3 to 6.
10. A storage medium, 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.
11. A computer program product, 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
A point cloud geometric isolated point decoding method and device
CN114078170A