Data coding method, apparatus, and device
By dividing the point cloud into a tree structure based on its distribution characteristics and using these characteristics to determine the partitioning identifier code, the problem of excessive identifier bits in the tree structure is solved, thus improving the point cloud compression rate and transmission efficiency.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- HUAWEI TECH CO LTD
- Filing Date
- 2021-12-20
- Publication Date
- 2026-07-10
AI Technical Summary
In existing point cloud compression algorithms based on tree structures, the tree structure identifier occupies a large number of bits, resulting in a low compression ratio. How to improve the compression ratio of point clouds based on tree structures is an urgent problem to be solved.
The computing device divides the point cloud into a tree structure based on its distribution characteristics, and uses tree structure identifiers to indicate the distribution characteristics of the point cloud within the division node. The division identifier code is determined by using the distribution characteristics of the point cloud within the node, which reduces the use of bits and improves the compression rate.
It reduces the number of bits occupied by the tree structure identifier in the bitstream, improves the compression ratio of point cloud compression, reduces the bandwidth required for transmitting the bitstream, and increases the transmission rate.
Smart Images

Figure CN116309896B_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of data processing, and more particularly to a data encoding and decoding method, apparatus, and device. Background Technology
[0002] A point cloud is a collection of points used to represent the shape of an object. Points in a point cloud contain at least three-dimensional coordinates or color information. In the fields of virtual reality / augmented reality (VR / AR), point clouds can be used to represent digital people and virtual objects. For example, in the field of autonomous driving, point clouds can be used to simulate reference objects to achieve precise vehicle positioning and navigation. Because point clouds contain a large amount of data, they are compressed before storage to reduce the storage space they occupy.
[0003] Typically, point clouds are spatially partitioned based on tree structures (e.g., octrees, quadtrees, binary trees), and context prediction is performed on the treeified point clouds. Compression is then based on the context prediction results. During point cloud compression, a tree structure identifier is used to indicate the tree structure used for partitioning the point cloud. Since a tree structure identifier is needed to indicate the tree structure used for each partition during point cloud treeification, this identifier occupies a significant number of bits in the bitstream, reducing the compression ratio. Therefore, improving the compression ratio of point clouds based on tree structures is a pressing issue that needs to be addressed. Summary of the Invention
[0004] This application provides data encoding and decoding methods, apparatus, and devices to ensure improved compression rates for point clouds based on tree structures.
[0005] Firstly, a data encoding method is provided, which can be executed by a computing device for geometric compression of point clouds. The method specifically includes the following steps: The computing device divides the original point cloud into a tree structure based on its distribution characteristics. This tree structure includes the point clouds within all nodes of the tree structure except for the leaf nodes (e.g., octree, quadtree, or binary tree). Since the distribution characteristics of the point clouds within different nodes of the tree structure differ, the tree structures used to divide the point clouds within different nodes can be the same or different; that is, the tree structure includes at least one tree structure. To facilitate the reconstruction of the tree structure at the decoding end, the computing device uses a tree structure identifier to indicate the method of dividing the point clouds within each node, i.e., the tree structure used to divide the point clouds within each node. Therefore, the computing device determines a partitioning identifier code based on the distribution characteristics of the point cloud within nodes other than leaf nodes in the tree structure. The partitioning identifier code contains bit values from the tree structure identifier of nodes other than leaf nodes. The number of bits in the partitioning identifier code is less than the sum of the number of bits in the tree structure identifiers of all nodes of the first type (excluding leaf nodes). Understandably, the number of bits in the partitioning identifier code of at least one branch in the tree structure is less than the sum of the number of bits in the tree structure identifier of that branch. A branch can refer to a portion of the tree structure from the root node to a leaf node. Furthermore, the computing device encodes the data occupancy code and the partitioning identifier code to obtain a bitstream. The data occupancy code is used to indicate the data distribution of the original point cloud within the tree structure.
[0006] Thus, the encoder analyzes the distribution characteristics of the point cloud within nodes other than leaf nodes in the tree structure. It uses these distribution characteristics to determine partial bit values in the tree structure identifier of each node. These partial bit values represent the different distribution characteristics of the point cloud within different nodes, resulting in a partitioning identifier code. Since the partitioning identifier code contains fewer bits than the sum of the bits in the tree structure identifiers of nodes other than leaf nodes, the data size of the partitioning identifier code is smaller than that of the tree structure identifiers of nodes other than leaf nodes. This reduces the number of bits occupied by the tree structure identifier in the bitstream and improves the compression ratio of point cloud compression based on the tree structure.
[0007] The computing device can acquire point clouds through sensors. These sensors include at least one of LiDAR, millimeter-wave radar, and sonar. The edge device can be a terminal, such as a mobile phone, tablet, laptop, virtual reality (VR) device, augmented reality (AR) device, mixed reality (MR) device, extended reality (ER) device, camera, or in-vehicle terminal, etc.
[0008] In one possible implementation, the computing device determines a partitioning identifier code based on the distribution characteristics of nodes other than leaf nodes in the tree structure. This includes: the computing device determining the non-reusable bit values of the parent node's tree structure identifier in the child node's tree structure identifier based on the distribution characteristics of the point cloud within the child node and the distribution characteristics of the point cloud within the parent node to which the child node belongs. The partitioning identifier code is obtained by combining the bit values of the tree structure identifiers of nodes other than leaf nodes in the tree structure. Understandably, the partitioning identifier code includes non-reusable bit values from the tree structure identifiers of nodes other than leaf nodes in the tree structure, but does not include reusable bit values from the tree structure identifiers of nodes other than leaf nodes in the tree structure, where child nodes are nodes other than leaf nodes in the tree structure.
[0009] Specifically, based on the distribution characteristics of the point cloud within the child node and the distribution characteristics of the point cloud within the parent node to which the child node belongs, the method determines the bit values of the non-reusable parent node tree structure identifier in the tree structure identifier of the child node, including: the computing device determines the non-reusable distribution characteristics in the distribution characteristics of the point cloud within the child node based on the distribution characteristics of the point cloud within the parent node; determines the tree structure used to partition the point cloud within the child node based on the non-reusable distribution characteristics in the distribution characteristics of the point cloud within the child node; and determines the non-reusable bit values in the tree structure identifier of the child node based on the tree structure identifier of the child node and the tree structure identifier of the parent node.
[0010] Therefore, based on the distribution characteristics of the point clouds within child nodes and the distribution characteristics of the point clouds within parent nodes, the encoding end determines the non-reusable distribution characteristics of the point clouds within the child nodes. It then uses a portion of the bit values from the tree structure identifier of the child node to represent these non-reusable distribution characteristics. Since the bitstream includes non-reusable bit values from the tree structure identifiers of nodes other than leaf nodes, and does not include reusable bit values, the amount of data used to divide the identifier code in the bitstream is less than the amount of data used for the tree structure identifiers of nodes other than leaf nodes. This reduces the number of bits occupied by the tree structure identifier in the bitstream, improves the compression ratio of point cloud compression based on the tree structure, reduces the bandwidth required for transmitting the bitstream, and increases the transmission rate of the bitstream.
[0011] Optionally, the tree structure used for partitioning the point cloud within a child node is determined based on non-reusable distribution features in the distribution characteristics of the point cloud within the child node. This includes: the computing device determining the tree structure used for partitioning the point cloud within the child node based on non-reusable distribution features and distribution rules in the distribution characteristics of the point cloud within the child node. The distribution rules are used to indicate that the point cloud within the child node is distributed within a half-region of the dimension in the dimensional direction. Thus, the computing device determines the distribution characteristics of the point cloud within the node based on pre-set distribution rules, and then determines the tree structure used for partitioning the point cloud within the child node.
[0012] It should be noted that the distribution characteristics of the point cloud within a node in the tree structure include the x-dimensional, y-dimensional, and z-dimensional distribution characteristics of the point cloud within the node in three-dimensional space. The tree structure identifier contains three bit values, which respectively indicate the x-dimensional, y-dimensional, and z-dimensional distribution characteristics. The tree structure identifier of a child node cannot reuse the bit values of the tree structure identifier of the parent node, which include at least one of the bit values of the x-dimensional, y-dimensional, and z-dimensional distribution characteristics.
[0013] In another possible implementation, the tree structure used to partition the point cloud within the child node is determined based on the non-reusable distribution characteristics of the point cloud within the child node, including: determining whether to use a binary tree or an octree to partition the point cloud within the child node based on the non-reusable distribution characteristics of one dimension of the point cloud within the child node.
[0014] In another possible implementation, the tree structure used to divide the point cloud within the child node is determined based on the non-reusable distribution features in the distribution characteristics of the point cloud within the child node. This includes determining whether to use a binary tree, quadtree, or octree to divide the point cloud within the child node based on the non-reusable two-dimensional or three-dimensional distribution features in the distribution characteristics of the point cloud within the child node.
[0015] Secondly, a data decoding method is provided, executed by a computing device. The computing device decodes the bitstream received from the encoding end to reconstruct the original point cloud. Specifically, the method includes the following steps: The computing device decodes the bitstream sent by the encoding end to obtain a data occupancy code and a partitioning identifier code. The data occupancy code indicates the data distribution of the original point cloud in a tree structure. The tree structure is obtained by the encoding end by partitioning the original point cloud according to its distribution characteristics. The partitioning identifier code contains non-reusable bit values from the tree structure identifiers of nodes other than leaf nodes, and does not contain reusable bit values from the tree structure identifiers of nodes other than leaf nodes. The tree structure identifier indicates the partitioning method of the point cloud within a node in the tree structure. Furthermore, the computing device determines the tree structure identifiers of the child nodes of the parent node based on the tree structure identifier of the parent node. After obtaining the tree structure identifiers of the nodes other than leaf nodes, the computing device reconstructs the original point cloud based on the data occupancy code and the tree structure identifiers of the nodes other than leaf nodes, resulting in the reconstructed point cloud.
[0016] Since the computing device can deduce the tree structure identifier of the child node from the tree structure identifier of the parent node and the non-reusable bit values in the tree structure identifier of the child node in the partition identifier code, the bitstream contains the non-reusable bit values in the tree structure identifier of the nodes other than the leaf nodes in the tree structure, and does not contain the reusable bit values in the tree structure identifier of the nodes other than the leaf nodes in the tree structure. Therefore, the amount of data in the partition identifier code in the bitstream is less than the amount of data in the tree structure identifier of the nodes other than the leaf nodes in the tree structure. Thus, the number of bits occupied by the tree structure identifier in the bitstream is reduced, the compression rate of point cloud compression based on tree structure is improved, and the bandwidth required for transmitting the bitstream is reduced and the transmission rate of the bitstream is increased.
[0017] In one possible implementation, determining the tree structure identifier of a child node based on the tree structure identifier of the parent node in the tree structure includes: the computing device determining whether the tree structure identifier of the child node can reuse the tree structure identifier of the parent node; if the tree structure identifier of the child node cannot reuse the tree structure identifier of the parent node, determining the tree structure identifier of the child node from the partition identifier code; if the tree structure identifier of the child node can reuse some bit values in the tree structure identifier of the parent node, determining the non-reusable bit values in the tree structure identifier of the child node from the partition identifier code, and determining the tree structure identifier of the child node based on the non-reusable bit values in the tree structure identifier of the child node and the reusable bit values in the tree structure identifier of the parent node.
[0018] The data in this application can be two-dimensional data (e.g., images), three-dimensional data (e.g., point clouds), or other multi-dimensional data (e.g., data with four or more dimensions). Data of any dimension can be encoded and decoded according to the data encoding and decoding method described in the embodiments of this application. It should be noted that the number of bits contained in the tree structure identifier is the same as the dimension. For example, when the original data is two-dimensional, the tree structure identifier contains 2 bits. Similarly, when the original data is four-dimensional, the tree structure identifier contains 4 bits.
[0019] Thirdly, a data encoding apparatus is provided, the apparatus comprising modules for performing the data encoding method of the first aspect or any possible design of the first aspect.
[0020] Fourthly, a data decoding apparatus is provided, the apparatus comprising modules for performing the data decoding method of the second aspect or any possible design of the second aspect.
[0021] Fifthly, a computing device is provided, comprising at least one processor and a memory for storing a set of computer instructions; when the processor executes the set of computer instructions as an execution device in the first aspect or any possible implementation of the first aspect, it executes the operation steps of the data encoding method in the first aspect or any possible implementation of the first aspect; or, when the processor executes the set of computer instructions as an execution device in the second aspect or any possible implementation of the second aspect, it executes the operation steps of the data decoding method in the second aspect or any possible implementation of the second aspect.
[0022] A sixth aspect provides a computer-readable storage medium comprising: computer software instructions; which, when executed in a computing device, cause the computing device to perform operational steps of the method as described in the first aspect or any possible implementation thereof, or to perform operational steps of the method as described in the second aspect or any possible implementation thereof.
[0023] In a seventh aspect, a computer program product is provided, which, when run on a computer, causes a computing device to perform the operation steps of the method as described in the first aspect or any possible implementation thereof, or to perform the operation steps of the method as described in the second aspect or any possible implementation thereof.
[0024] Based on the implementation methods provided in the above aspects, this application can be further combined to provide more implementation methods. Attached Figure Description
[0025] Figure 1This application provides a schematic diagram of a point cloud application scenario system.
[0026] Figure 2 This application provides a schematic diagram of the structure of a point cloud encoding and decoding system;
[0027] Figure 3 This application provides a schematic diagram of a point cloud application scenario.
[0028] Figure 4 A schematic diagram of an octree provided in this application;
[0029] Figure 5 A schematic diagram of a quadtree and a binary tree provided in this application;
[0030] Figure 6 A flowchart illustrating a data encoding / decoding method provided in this application;
[0031] Figure 7 A schematic diagram illustrating the distribution characteristics of a point cloud provided in this application;
[0032] Figure 8 A schematic diagram illustrating another distribution feature of point clouds provided in this application;
[0033] Figure 9 A schematic diagram illustrating the distribution characteristics of another point cloud provided in this application;
[0034] Figure 10 This application provides a schematic diagram of a point cloud encoding and decoding process;
[0035] Figure 11 A schematic diagram of the structure of a data encoding device provided in this application;
[0036] Figure 12 A schematic diagram of the structure of a data decoding device provided in this application;
[0037] Figure 13 A schematic diagram of the structure of a computing device provided in this application. Detailed Implementation
[0038] Point clouds are datasets obtained by collecting sampling points of surface features of an object from a terminal. Point cloud data contains three-dimensional coordinates (X, Y, Z). Point clouds obtained based on laser measurement principles can also contain laser reflection intensity. Similarly, point clouds obtained based on photogrammetry principles can also contain color information (RGB). Therefore, high-precision point clouds can simulate and recreate objects in the real world, leading to their increasingly widespread applications. For example, point clouds can be applied in surveying, autonomous driving, archaeology and cultural relic preservation, agriculture, and medicine.
[0039] Figure 1 This is a schematic diagram of a point cloud application scenario system provided in an embodiment of this application. The system includes a terminal and a data center 130.
[0040] Data center 130 can be a collection of multiple servers (such as...) Figure 1 The application server 131 shown is a server cluster. The data center 130 is, for example, a cloud data center built by the application server 131. The multiple servers contained in the data center 130 can be independent and different physical devices, or they can be virtual servers integrated on the same physical device (such as servers under the jurisdiction of a cloud service provider).
[0041] The terminal connects to the data center 130 wirelessly or via a wired connection. The terminal can send point clouds to the data center 130 through a network 120. The network 120 can be an internetwork. The terminal can be fixed in location or mobile. This embodiment does not limit the number of terminals and servers included in the system.
[0042] In some embodiments, a terminal may also be referred to as a terminal device, user equipment (UE), mobile station (MS), or mobile terminal (MT), etc. For example, a terminal may be a mobile phone (such as...). Figure 1 The terminal 111 shown), tablet computer (such as Figure 1 The terminal 112 shown) or a computer with wireless transceiver capabilities (such as...) Figure 1 The terminal shown is 113. The terminal can also be a wearable device. For example, a virtual reality (VR) device, an augmented reality (AR) device, a mixed reality (MR) device, or an extended reality (ER) device.
[0043] In other embodiments, the terminal may be a device in industrial control, a device in self-driving (such as one integrated into...) Figure 1 The devices shown include lidar on autonomous vehicles 114 and 115, devices in transportation safety, devices in smart cities, devices in smart homes (such as smart screens), and devices in remote medical surgery.
[0044] The terminal can perform functions such as collecting point clouds, compressing point clouds, or decompressing point clouds. The servers in data center 130 can also perform similar functions. For example, such as... Figure 1 As shown, when the autonomous vehicle 114 is traveling straight, the LiDAR installed on it can collect point clouds of office buildings and residences in the driving environment, and transmit these point clouds to the processor for compression. When the autonomous vehicle 115 is turning right, the LiDAR installed on it can collect point clouds of traffic lights and vegetation along the roadside in the driving environment. Figure 1 The point cloud of the tree shown is transmitted to the processor for compression. After the autonomous vehicles 114 and 115 compress the point cloud, they transmit it to the data center 130 so that the server in the data center 130 can decompress the point cloud and perform other processing (e.g., guide the driving direction or route of autonomous vehicles 114 and 115 based on the decompressed point cloud).
[0045] Figure 2 This is a schematic diagram of a point cloud encoding / decoding system provided in an embodiment of this application. The point cloud encoding / decoding system 200 includes a source device 210 and a destination device 220. The source device 210 compresses and encodes the original point cloud to obtain a bitstream, and transmits the bitstream to the destination device 220. The destination device 220 decodes the bitstream and reconstructs the original point cloud. The source device 210 can refer to the encoding end. The destination device 220 can refer to the decoding end. Both the source device 210 and the destination device 220 can be computing devices with computing capabilities. For example, the source device 210 can be... Figure 1 The terminal in the point cloud application scenario system shown (e.g., autonomous vehicle 114). The source device 210 can also be a point cloud compression system installed on the autonomous vehicle 114, for example, the point cloud compression system includes a lidar and a processing device communicatively connected to the lidar. The destination device 220 can be... Figure 1 The data center 130 in the point cloud application scenario system shown contains servers.
[0046] Specifically, the source device 210 includes a point cloud collector 211, a preprocessor 212, an encoder 213, and a communication interface 214.
[0047] Point cloud collector 211 is used to acquire raw point clouds. Point cloud collector 211 may include or can be any type of electronic device for capturing raw point clouds, and / or any type of raw point cloud generation device, such as a computer graphics processor for generating computer animation scenes or any type of device for acquiring and / or providing real-world point clouds or computer-generated point clouds. Point cloud collector 211 can be any type of memory or storage device for storing arbitrary point data in the raw point cloud.
[0048] The preprocessor 212 receives the raw point cloud collected by the point cloud collector 211 and preprocesses the raw point cloud to obtain a preprocessed point cloud. For example, the preprocessing performed by the preprocessor 212 may include color format conversion (e.g., from RGB to YCbCr), octree structuring, etc.
[0049] Encoder 213 receives the preprocessed point cloud generated by preprocessor 212 and compresses and encodes it to obtain a bitstream. For example, the preprocessed point cloud is spatially partitioned based on a tree structure (e.g., octree, quadtree, binary tree) to obtain a tree-structured point cloud. The bitstream is obtained by compressing the data occupancy code and partition identifier code. The data occupancy code indicates the data distribution of the original point cloud within the tree structure. The partition identifier code contains bit values from the tree structure identifier of nodes other than leaf nodes in the tree structure.
[0050] The communication interface 214 is used to receive the code stream generated by the encoder 213 and send the code stream to the destination device 220 through the communication channel 230 so that the destination device 220 can reconstruct the original point cloud based on the code stream.
[0051] The target device 220 includes a display device 221, a post-processor 222, a decoder 223, and a communication interface 224.
[0052] Communication interface 224 is used to receive the bit stream sent by communication interface 214 and transmit the bit stream to decoder 223. This allows decoder 223 to decode the bit stream to obtain data occupancy code and partition identifier code, determine the tree structure identifier of the child nodes of the parent node based on the tree structure identifier of the parent node in the tree structure, and reconstruct the original point cloud based on the data occupancy code and the tree structure identifier of the nodes in the tree structure other than the leaf nodes, thus obtaining the reconstructed point cloud.
[0053] Communication interfaces 214 and 224 can be used to send or receive relevant data of the raw point cloud through a direct communication link between the source device 210 and the destination device 220, such as a direct wired or wireless connection, or through any type of network, such as a wired network, a wireless network or any combination thereof, any type of private network and public network or any combination thereof.
[0054] For example, the communication interface 214 can be used to encapsulate the bitstream into a suitable format such as a message, and / or process the bitstream using any type of transmission encoding or processing, so as to transmit it on a communication link or communication network.
[0055] Communication interface 224 corresponds to communication interface 214. For example, it can be used to receive transmitted data and process the transmitted data using any type of corresponding transmission decoding or processing and / or decapsulation to obtain a bitstream.
[0056] Both communication interface 224 and communication interface 214 can be configured as follows: Figure 2 The arrow pointing from the source device 210 to the corresponding communication channel 230 of the destination device 220 indicates a one-way communication interface or a two-way communication interface, and can be used to send and receive messages, etc., to establish a connection, confirm and exchange any other information related to the communication link and / or data transmission such as encoded bitstream transmission, etc.
[0057] Decoder 223 is used to decode the bitstream, and reconstruct the original point cloud based on the data occupancy code and the tree structure identifier of the nodes in the tree structure excluding the leaf nodes, to obtain the reconstructed point cloud.
[0058] The post-processor 222 receives the reconstructed point cloud generated by the decoder 223, performs post-processing on the reconstructed point cloud, and obtains post-processed data. For example, post-processing may include color format conversion (e.g., from YCbCr to RGB) or noise reduction, or any other processing such as generating data for display device 221 to display.
[0059] Display device 221 is used to receive post-processed data for display to a user or viewer. Display device 221 can be or includes any type of display for representing the reconstructed image, such as an integrated or external display screen or monitor. For example, the display screen may include a liquid crystal display (LCD), an organic light emitting diode (OLED) display, a plasma display, a projector, a micro-LED display, a liquid crystal on silicon (LCoS), a digital light processor (DLP), or any other type of display screen.
[0060] As an optional implementation, the source device 210 and the destination device 220 can transmit the bitstream using a data forwarding device. For example, the data forwarding device can be a router or a switch.
[0061] It should be noted that the point cloud collector 211 and encoder 213 can be integrated into a single physical device or set on different physical devices; there is no limitation on this. For example, such as... Figure 2The source device 210 shown includes a point cloud collector 211 and an encoder 213, indicating that the point cloud collector 211 and the encoder 213 are integrated into a single physical device. Therefore, the source device 210 can also be referred to as a collection device. The source device 210 can be, for example, an AR device, a VR device, a LiDAR device, or other point cloud collection devices. If the source device 210 does not include the point cloud collector 211, it means that the point cloud collector 211 and the encoder 213 are two different physical devices, and the source device 210 can obtain raw point clouds from other devices (such as point cloud collection devices or point cloud storage devices).
[0062] Furthermore, the display device 221 and the decoder 223 can be integrated into a single physical device or located on different physical devices; there is no limitation on this. For example, such as... Figure 2 The destination device 220 shown includes a display device 221 and a decoder 223, indicating that the display device 221 and decoder 223 are integrated into a single physical device. Therefore, the destination device 220 can also be called a playback device. The destination device 220 has the function of decoding and displaying the reconstructed point cloud. The destination device 220 can be, for example, an AR device, a VR device, a display, or other device for displaying the reconstructed point cloud. If the destination device 220 does not include the display device 221, it means that the display device 221 and the decoder 223 are two different physical devices. After decoding the bitstream and reconstructing the point cloud, the destination device 220 transmits the reconstructed point cloud to other display devices for playback.
[0063] also, Figure 2 It is shown that the source device 210 and the destination device 220 can be integrated into one physical device or set on different physical devices, without limitation.
[0064] For example, such as Figure 3 As shown in (a), the source device 210 can be a LiDAR in an autonomous vehicle, and the destination device 220 can be a server in a data center. The source device 210 can collect the original point cloud of various objects on the road during the autonomous vehicle's driving process, transmit the original point cloud to the encoding and decoding device, and the encoding and decoding device performs encoding and decoding processing on the original point cloud to obtain the reconstructed point cloud. The destination device 220 guides the autonomous vehicle's driving based on the reconstructed point cloud.
[0065] For example, such as Figure 3 As shown in (b), if the source device 210 and the destination device 220 are integrated into a VR device, AR device, MR device, or XR device, then the VR / AR / MR / XR device has the functions of acquiring raw point clouds, displaying point clouds, and encoding / decoding. The source device 210 can acquire point clouds of the user's location and point clouds of virtual objects in the user's virtual environment.
[0066] In these embodiments, the source device 210 or its corresponding functions and the destination device 220 or its corresponding functions may be implemented using the same hardware and / or software or by separate hardware and / or software or any combination thereof. As described, Figure 2 The presence and division of different units or functions in the source device 210 and / or destination device 220 shown may vary depending on the actual device and application, which is obvious to those skilled in the art.
[0067] The structure of the point cloud encoding / decoding system described above is only illustrative. In some possible implementations, the point cloud encoding / decoding system may also include other devices, such as end-side devices or cloud-side devices. After the source device 210 acquires the raw point cloud, it preprocesses the raw point cloud to obtain a preprocessed point cloud; and transmits the preprocessed point cloud to the end-side device or cloud-side device, which then performs encoding / decoding on the preprocessed point cloud.
[0068] However, high-precision point cloud data is extremely large. For example, a mainstream 64-line LiDAR can collect over 100 gigabytes (GB) of point cloud data per hour, posing a significant challenge to storage and transmission. Therefore, efficient compression algorithms are indispensable for reducing transmission latency and storage capacity.
[0069] Currently, mainstream point cloud compression algorithms are based on tree-structured (octree, quadtree, binary tree) spatial partitioning for point cloud compression. For example, traditional point cloud compression algorithms convert the point cloud into a tree structure before performing entropy encoding. Examples include the Draco algorithm based on kd-trees and geometric compression algorithms based on octrees (Moving Pictures Experts Group (MPEG) G-PCC). Another example is point cloud compression algorithms based on artificial intelligence (AI) (such as the Oct Squeeze algorithm, an autoencoder algorithm based on "Point net++" features).
[0070] An octree is a tree-like data structure used to describe three-dimensional space. Each node in an octree represents a volume element (voxel) of a cube. A parent node in an octree has eight child nodes, and the sum of the volumes of the voxels corresponding to the eight child nodes equals the volume of the voxel corresponding to the parent node. For example, such as... Figure 4As shown in (a) of the diagram, this is a schematic diagram of the voxels corresponding to the nodes in an octree. It can be understood that an octree is obtained by dividing the voxels of the parent node into front-back, left-right, and top-bottom sections. That is, the point cloud is completely enclosed by a bounding box, and then the point cloud is divided into octree sections. If a child node contains point cloud data, it is further divided until the size of each node reaches the required precision. The eight child nodes connected to the parent node of the octree correspond to the eight voxels obtained from the voxel division of the parent node. For example, child node 1 corresponds to voxel 1.
[0071] When representing point clouds using an octree, a node is assigned a value of "1" or "0" based on whether its corresponding voxel contains point cloud data. For example, "1" indicates that the voxel contains point cloud data, while "0" indicates that the voxel does not. The occupancy code of a parent node indicates the data distribution of that parent node. The occupancy code contains 8 bits, resulting in 256 possible values from 0 (binary 00000000) to 255 (binary 11111111). If the occupancy code contains 8 bits, it can also be called an occupancy byte.
[0072] For example, such as Figure 4 As shown in (b), assume that black nodes indicate that the voxel corresponding to the node has data, and white nodes indicate that the voxel corresponding to the node has no data. The voxel corresponding to the first child node of the parent node has point cloud data, and the voxel corresponding to the sixth child node of the parent node has point cloud data. The occupancy code of the parent node is 10000100.
[0073] It should be understood that in a quadtree, a parent node has four child nodes, and the sum of the volumes of the voxels corresponding to the four child nodes equals the volume of the voxel corresponding to the parent node. In a binary tree, a parent node has two child nodes, and the sum of the volumes of the voxels corresponding to the two child nodes equals the volume of the voxel corresponding to the parent node. For example... Figure 5 As shown in (a) above, this is a voxel diagram corresponding to a node in a quadtree. The occupancy code of the parent node in the quadtree contains 4 bits. For example... Figure 5 As shown in (b) above, this is a voxel diagram corresponding to a node in a binary tree. The occupancy code of the parent node in the binary tree contains 2 bits.
[0074] During point cloud compression, a tree structure identifier is used to indicate the tree structure (e.g., binary tree, quadtree, octree) used to partition the point cloud. The tree structure identifier is used to indicate the partitioning method of the point cloud within the partitioning node. The tree structure identifier can also be called a partitioning identifier bit.
[0075] This application provides a data encoding / decoding method, particularly an encoding / decoding technique for point cloud geometry. Specifically, it provides an encoding / decoding technique that uses fewer bits to represent the partitioning of point clouds within nodes, improving upon traditional tree structure identification encoding / decoding methods. Point cloud encoding (or commonly referred to as encoding) includes two parts: point cloud encoding and point cloud decoding. Point cloud encoding is performed on the source side and typically includes processing (e.g., compressing) the original point cloud to reduce the amount of data required to represent it, thereby enabling more efficient storage and / or transmission. Point cloud decoding is performed on the destination side and typically includes inverse processing relative to the encoder to reconstruct the original point cloud. The encoding and decoding parts are collectively referred to as encoding / decoding. The embodiments of this application will now be described in detail with reference to the accompanying drawings.
[0076] Figure 6 This is a flowchart illustrating a data encoding / decoding method provided in an embodiment of this application. Figure 2 The point cloud encoding and decoding process performed by the source device 210 and the destination device 220 will be used as an example for illustration. Figure 6 As shown, the method includes the following steps.
[0077] S610 and source device 210 acquire the original point cloud.
[0078] As described in the above embodiments, if the source device 210 carries a point cloud collector 211, the source device 210 can collect the raw point cloud through the point cloud collector 211. Optionally, the source device 210 can also receive raw point clouds collected by other devices; or obtain the raw point cloud from the memory or other memory in the source device 210. The raw point cloud may include real-world point clouds collected in real time or point clouds stored in the device. This embodiment does not limit the method of acquiring the raw point cloud or the type of the raw point cloud.
[0079] S620 and source device 210 divide the original point cloud into a tree structure based on the distribution characteristics of the original point cloud.
[0080] The source device 210 determines the tree structure for dividing the original point cloud based on its distribution characteristics; that is, the source device 210 determines the division method for the original point cloud based on its distribution characteristics. The source device 210 divides the original point cloud based on the determined division method, obtaining the tree structure of the root node in the tree structure. For example, the source device 210 selects a tree structure for dividing the original point cloud from octrees, quadtrees, and binary trees based on its distribution characteristics, dividing the original point cloud into an octree, a quadtree, or a binary tree.
[0081] Furthermore, for the child nodes of the root node that have point cloud data, the source device 210 determines the tree structure for dividing the point cloud within the child nodes based on the distribution characteristics of the point cloud within the child nodes of the root node, thus obtaining the tree structure of the child nodes of the root node in the tree structure.
[0082] Secondly, for the child nodes of the parent node that have point cloud data, the source device 210 determines the tree structure of dividing the point cloud within the child node according to the distribution characteristics of the point cloud within the child node of the parent node, thus obtaining the tree structure of the child nodes of the parent node in the tree structure.
[0083] The source device 210 divides the data sequentially according to the above rules until the size of the leaf nodes reaches the required precision, thus obtaining the tree structure of the original point cloud.
[0084] Understandably, source device 210 starts from the root node in the tree structure and, based on the distribution characteristics of the point clouds within the nodes (excluding leaf nodes) of the tree structure, divides the point clouds within the nodes into a tree structure (e.g., octree, quadtree, or binary tree). The tree structures obtained by dividing the point clouds within the nodes (excluding leaf nodes) of the tree structure constitute the tree structure. The tree structures used to divide the point clouds within different nodes of the tree structure can be the same or different. For example, the tree structure includes at least one of octree, quadtree, and binary tree.
[0085] It should be noted that the distribution characteristics of the point cloud within nodes (e.g., root node, parent node, child node, leaf node) in the tree structure include the x-dimensional, y-dimensional, and z-dimensional distribution characteristics of the point cloud within the node in three-dimensional space. In some embodiments, the source device 210 determines the tree structure used to partition the point cloud within the node based on the distribution characteristics and distribution rules of the point cloud within the node. The distribution rules are used to indicate that the point cloud within the node is distributed in a half-region of the dimension in the dimensional direction. The dimensional direction includes one or more of the x-dimensional, y-dimensional, and z-dimensional directions. A half-region of the dimension, for example, refers to the first region or the second region of the dimension. The first region and the second region combine the space of the point cloud within the node in that dimension.
[0086] Figure 7 This refers to the distribution characteristics of point clouds within a node that satisfy a distribution rule in one dimension. For example... Figure 7 As shown in (a), the distribution characteristics of the point cloud within a node are that the point cloud is distributed in the first region along the x-dimensional direction, as well as in the y-dimensional and z-dimensional directions. Figure 7 As shown in (b), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the second region in the x-dimensional direction, as well as in the y-dimensional and z-dimensional directions.
[0087] like Figure 7 As shown in (c), the distribution characteristics of the point cloud within a node are that the point cloud is distributed in the first region along the y-dimensional direction, as well as in the x-dimensional and z-dimensional directions. Figure 7 As shown in (d), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the second region in the y-dimensional direction, as well as in the x-dimensional and z-dimensional directions.
[0088] like Figure 7As shown in (e), the distribution characteristics of the point cloud within a node are that the point cloud is distributed in the first region along the z-dimensional direction, as well as in the x-dimensional and y-dimensional directions. Figure 7 As shown in (f), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the second region in the z-dimensional direction, as well as in the x-dimensional and y-dimensional directions.
[0089] Figure 8 This refers to the distribution characteristics of the point cloud within a node that satisfy distribution rules in two dimensions. For example... Figure 8 As shown in (a), the distribution characteristics of the point cloud within a node are that the point cloud is distributed in the first region in the x-dimensional direction and the first region in the y-dimensional direction. Figure 8 As shown in (b), the distribution characteristics of the point cloud within a node are that the point cloud is distributed in a first region in the x-dimensional direction and a second region in the y-dimensional direction. Figure 8 As shown in (c), the distribution characteristics of the point cloud within a node are that the point cloud is distributed in the second region in the x-dimensional direction and the first region in the y-dimensional direction. For example... Figure 8 As shown in (d), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the second region in the x-dimensional direction and the second region in the y-dimensional direction.
[0090] like Figure 8 As shown in (e), the distribution characteristics of the point cloud within a node are that the point cloud is distributed in the first region in the x-dimensional direction and the first region in the z-dimensional direction. Figure 8 As shown in (f), the distribution characteristics of the point cloud within a node are that the point cloud is distributed in a first region in the x-dimensional direction and a second region in the z-dimensional direction. Figure 8 As shown in (g), the distribution characteristics of the point cloud within a node are that the point cloud is distributed in the second region in the x-dimensional direction and the first region in the z-dimensional direction. For example... Figure 8 As shown in (h), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the second region in the x-dimensional direction and the second region in the z-dimensional direction.
[0091] like Figure 8 As shown in (i), the distribution characteristics of the point cloud within a node are that the point cloud is distributed in the first region in the y-dimensional direction and the first region in the z-dimensional direction. Figure 8 As shown in (j), the distribution characteristics of the point cloud within a node are that the point cloud is distributed in the first region in the y-dimensional direction and the second region in the z-dimensional direction. Figure 8 As shown in (k), the distribution characteristics of the point cloud within a node are that the point cloud is distributed in the second region in the y-dimensional direction and the first region in the z-dimensional direction. For example... Figure 8 As shown in (l), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the second region in the y-dimensional direction and the second region in the z-dimensional direction.
[0092] Figure 9 This refers to the distribution characteristics of the point cloud within a node that satisfy distribution rules in three dimensions. For example... Figure 9As shown in (a), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the first region in the x-dimensional direction, the first region in the y-dimensional direction, and the first region in the z-dimensional direction.
[0093] like Figure 9 As shown in (b), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the first region in the x-dimensional direction, the second region in the y-dimensional direction, and the first region in the z-dimensional direction.
[0094] like Figure 9 As shown in (c), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the first region in the x-dimensional direction, the first region in the y-dimensional direction, and the second region in the z-dimensional direction.
[0095] like Figure 9 As shown in (d), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the first region in the x-dimensional direction, the second region in the y-dimensional direction, and the second region in the z-dimensional direction.
[0096] like Figure 9 As shown in (e), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the second region in the x-dimensional direction, the first region in the y-dimensional direction, and the first region in the z-dimensional direction.
[0097] like Figure 9 As shown in (f), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the second region in the x-dimensional direction, the second region in the y-dimensional direction, and the first region in the z-dimensional direction.
[0098] like Figure 9 As shown in (g), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the second region in the x-dimensional direction, the first region in the y-dimensional direction, and the second region in the z-dimensional direction.
[0099] like Figure 9 As shown in (h), the distribution characteristics of the point cloud within the node are that the point cloud is distributed in the second region in the x-dimensional direction, the second region in the y-dimensional direction, and the second region in the z-dimensional direction.
[0100] Therefore, if the distribution characteristics of the point cloud within a node satisfy the distribution rule in one dimension, the source device 210 uses a binary tree to partition the point cloud within the node. If the distribution characteristics of the point cloud within a node satisfy the distribution rule in two dimensions, the source device 210 uses a quadtree to partition the point cloud within the node. If the distribution characteristics of the point cloud within a node satisfy the distribution rule in three dimensions, the source device 210 uses an octree to partition the point cloud within the node. If the distribution characteristics of the point cloud within a node do not satisfy the distribution rule in any of the three dimensions, the source device 210 uses an octree to partition the point cloud within the node.
[0101] S630 and source device 210 determine the partitioning identifier code based on the distribution characteristics of nodes other than leaf nodes in the tree structure.
[0102] To facilitate the reconstruction of the tree structure by the target device 220, the source device 210 uses a tree structure identifier to indicate the division method of the point cloud within the node, that is, the tree structure used to divide the point cloud within the node.
[0103] In this embodiment, the tree structure identifier is defined as 0bxyz. The three bit values in 0bxyz indicate the x-dimensional distribution features, y-dimensional distribution features, and z-dimensional distribution features, respectively. If the distribution features of the point cloud within a node in the dimensional directions (x-dimensional, y-dimensional, and z-dimensional) satisfy the distribution rules, the bit value corresponding to that dimensional direction is 1; conversely, if the distribution features of the point cloud within a node in the dimensional directions (x-dimensional, y-dimensional, and z-dimensional) do not satisfy the distribution rules, the bit value corresponding to that dimensional direction is 0. As shown in Table 1, the possible values of the tree structure identifier are as follows.
[0104] Table 1
[0105]
[0106]
[0107] Understandably, based on the distribution rules provided in the embodiments of this application, it can be inferred that if the distribution characteristics of the point cloud within the parent node do not satisfy the distribution rule in at least one of the x-, y-, and z-dimensional directions, then the distribution characteristics of the point cloud within the child node of the parent node also do not satisfy the distribution rule in at least one of the x-, y-, and z-dimensional directions. If the distribution characteristics of the point cloud within the parent node satisfy the distribution rule in at least one of the x-, y-, and z-dimensional directions, then the distribution characteristics of the point cloud within the child node of the parent node may or may not satisfy the distribution rule in at least one of the x-, y-, and z-dimensional directions.
[0108] Therefore, it can be seen that there is an inheritance relationship (or reuse relationship) between the distribution characteristics of the point cloud within the child node of a parent node and the distribution characteristics of the point cloud within the parent node. That is, the distribution characteristics of the point cloud within the child node inherit the distribution characteristics of the point cloud within the parent node that do not satisfy the distribution rules in the same dimensional direction. The three bits in the tree structure identifier indicate the x-dimensional, y-dimensional, and z-dimensional distribution characteristics. Thus, there is an inheritance relationship between the tree structure identifier of the child node of a parent node and the tree structure identifier of the parent node; that is, the bits in the tree structure identifier of the parent node and the tree structure identifier of the child node that indicate distribution characteristics that do not satisfy the distribution rules are inherited.
[0109] For example, suppose the point cloud distribution characteristics within the parent node satisfy the distribution rule in the x-dimensional direction but not in the y- and z-dimensional directions. The point cloud distribution characteristics within the child nodes of the parent node also do not satisfy the distribution rule in the y- and z-dimensional directions. The point cloud distribution characteristics within the child nodes of the parent node may or may not satisfy the distribution rule in the x-dimensional direction. In this case, the tree structure identifier for the parent node is 0b100, and the tree structure identifier for the child nodes is 0b*00. * indicates that the bit values in the tree structure identifier are uncertain. If the point cloud distribution characteristics within the child nodes of the parent node satisfy the distribution rule in the x-dimensional direction, the tree structure identifier for the child nodes is 0b100; if the point cloud distribution characteristics within the child nodes of the parent node do not satisfy the distribution rule in the x-dimensional direction, the tree structure identifier for the child nodes is 0b000.
[0110] As shown in Table 2, there is an inheritance relationship between the tree structure identifier of the parent node and the tree structure identifier of the child node of the parent node.
[0111] Table 2
[0112]
[0113]
[0114] As shown in Table 2, if a binary tree is used to partition the point cloud within the parent node, then a binary tree or an octree is used to partition the point cloud within the child nodes of the parent node. For example, if the tree structure identifier of the parent node is 0b100, then the tree structure identifier of the child node can also be 0b100, indicating that a binary tree is used to partition the point cloud within the child node; or, the tree structure identifier of the child node can be 0b000, indicating that an octree is used to partition the point cloud within the child node.
[0115] If a quadtree is used to partition the point cloud within the parent node, then a binary tree, quadtree, or octree is used to partition the point cloud within the child nodes of the parent node. For example, if the tree structure identifier of the parent node is 0b110, then the tree structure identifier of the child node can be 0b000, indicating that an octree is used to partition the point cloud within the child node; or, the tree structure identifier of the child node can be 0b010 or 0b100, indicating that a binary tree is used to partition the point cloud within the child node; or, the tree structure identifier of the child node can be 0b110, indicating that a quadtree is used to partition the point cloud within the child node.
[0116] It should be noted that if the bit value in the tree structure identifier of the parent node is used to indicate that the point cloud distribution features in the x-dimensional, y-dimensional, and z-dimensional directions all satisfy the distribution rules or do not satisfy the distribution rules, the tree structure identifier of the child node cannot inherit the tree structure identifier of the parent node.
[0117] If an octree is used to partition the point cloud within the parent node, then a binary tree, quadtree, or octree is used to partition the point cloud within the child nodes of the parent node. For example, if the tree structure identifier of the parent node is 0b111 or 0b000, then the tree structure identifier of the child node can be 0b000 or 0b111, indicating that an octree is used to partition the point cloud within the child node; or, the tree structure identifier of the child node can be 0b010, 0b100, or 0b001, indicating that a binary tree is used to partition the point cloud within the child node; or, the tree structure identifier of the child node can be 0b110, 0b101, or 0b011, indicating that a quadtree is used to partition the point cloud within the child node.
[0118] In some embodiments, the source device 210 determines the bit values in the tree structure identifier of the child node that cannot reuse the tree structure identifier of the parent node, based on the distribution characteristics of the point cloud within the child node and the distribution characteristics of the point cloud within the parent node to which the child node belongs. Specifically, as... Figure 6 As shown, S631 and source device 210 determine the non-reusable distribution features of the point cloud in the child node based on the distribution features of the point cloud in the parent node.
[0119] Understandably, non-reusable distribution features in the point cloud distribution characteristics of a child node are those distribution features in the point cloud distribution characteristics of the child node that do not have an inheritance relationship with the distribution features in the point cloud distribution characteristics of the parent node in the same dimensional direction. Non-reusable distribution features in the point cloud distribution characteristics of a child node include features other than those that are inherited from the point cloud distribution characteristics of the child node but do not satisfy the distribution rules in the same dimensional direction of the point cloud distribution characteristics of the parent node.
[0120] S632, Source device 210 determines the tree structure used to divide the point cloud within the child node based on the non-reusable distribution characteristics and distribution rules in the distribution characteristics of the point cloud within the child node.
[0121] In one example, the source device 210 determines whether to use a binary tree or an octree to partition the point cloud within the child node based on one non-reusable dimension of the point cloud's distribution characteristics. In another example, the source device 210 determines whether to use a binary tree, quadtree, or octree to partition the point cloud within the child node based on two or three non-reusable dimensions of the point cloud's distribution characteristics. The specific partitioning method for a binary tree is as follows... Figure 7 As shown. The specific partitioning method of a quadtree is as follows: Figure 8 As shown. The specific partitioning method of an octree is as follows: Figure 9 As shown.
[0122] S633, source device 210 determines the non-reusable bit value in the tree structure identifier of the child node based on the tree structure identifier of the child node and the tree structure identifier of the parent node.
[0123] The source device 210 can determine the non-reusable bit values in the tree structure identifier of child nodes based on the inheritance relationship shown in Table 2. Specifically, the values represented by * in the tree structure identifier of child nodes in Table 2 are determined as non-reusable bit values in the tree structure identifier of child nodes. For any node in the tree structure other than the leaf nodes, the source device 210 determines whether the tree structure identifier of the child node can be inherited by using the tree structure identifier of the parent node. The non-reusable bit values in the tree structure identifier of the child node include at least one of the following: bit values with x-dimensional distribution characteristics, bit values with y-dimensional distribution characteristics, and bit values with z-dimensional distribution characteristics. A child node is a node in the tree structure other than the leaf nodes.
[0124] For example, if the tree structure identifier of the parent node is 0b100 and the tree structure identifier of the child node is also 0b100, then the non-reusable bits in the tree structure identifier of the child node are the first bit of the child node's tree structure identifier, which is 1. The reusable bits in the tree structure identifier of the child node are the second bit and the third bit, which are both 0.
[0125] For example, if the tree structure identifier of the parent node is 0b100 and the tree structure identifier of the child node is 0b000, then the non-reusable bits in the tree structure identifier of the child node are the first bit of the tree structure identifier, which is 0. The reusable bits in the tree structure identifier of the child node are the second bit and the third bit, which are both 0.
[0126] For example, if the tree structure identifier of the parent node is 0b011 and the tree structure identifier of the child node is 0b000, then the non-reusable bits in the tree structure identifier of the child node are the values of the second and third bits of the tree structure identifier of the child node, both of which are 0. The reusable bits in the tree structure identifier of the child node are the value of the first bit of the tree structure identifier of the child node, which is 0.
[0127] For example, if the tree structure identifier of the parent node is 0b011 and the tree structure identifier of the child node is 0b010, then the non-reusable bits in the tree structure identifier of the child node are the second bit (1) and the third bit (0). The reusable bits in the tree structure identifier of the child node are the first bit (0).
[0128] For example, if the tree structure identifier of the parent node is 0b011 and the tree structure identifier of the child node is 0b010, then the non-reusable bits in the tree structure identifier of the child node are the second bit (1) and the third bit (0). The reusable bits in the tree structure identifier of the child node are the first bit (0).
[0129] For example, if the tree structure identifier of the parent node is 0b000 or 0b111, and the tree structure identifier of the child node is 0b010, then the non-reusable bit value in the tree structure identifier of the child node is the tree structure identifier 010 of the child node.
[0130] Source device 210 combines the non-reusable bit values from the tree structure identifiers of nodes other than leaf nodes in the tree structure to obtain a partition identifier code. The partition identifier code contains the non-reusable bit values from the tree structure identifiers of nodes other than leaf nodes, but does not contain the reusable bit values from the tree structure identifiers of nodes other than leaf nodes. For example, suppose the tree structure contains a root node, parent node, child nodes, and leaf nodes. The tree structure identifier of the root node is 0b010, the tree structure identifier of the parent node is 0b010, and the tree structure identifier of the child node is 0b000. The first and third bits of the tree structure identifier of the parent node can inherit the first and third bits of the tree structure identifier of the root node, and the first and third bits of the tree structure identifier of the child node can inherit the first and third bits of the tree structure identifier of the parent node; then the partition identifier code is 01010.
[0131] Since the number of bits contained in the partition identifier code is less than the sum of the number of bits contained in the tree structure identifier of the nodes other than the leaf nodes in the tree structure, the data volume of the partition identifier code is less than the data volume of the tree structure identifier of the nodes other than the leaf nodes in the tree structure. Therefore, the number of bits occupied by the tree structure identifier in the bit stream is reduced, and the compression rate of point cloud compression based on tree structure is improved.
[0132] The source device 210 encoding data occupancy code and partitioning identifier code are used to obtain the bitstream.
[0133] During the process of dividing the original point cloud into a tree structure based on its distribution characteristics, the source device 210 can obtain the data occupancy status of nodes in the tree structure. The data occupancy code indicates the data distribution of the original point cloud within the tree structure. The data occupancy code contains the occupancy status code of all nodes in the tree structure.
[0134] Source device 210 compresses the data occupancy code and partition identifier code to obtain a bitstream. For example, source device 210 performs entropy encoding on the data occupancy code and partition identifier code to obtain a bitstream. Thus, the amount of data in the partition identifier code in the bitstream is less than the amount of data in the tree structure identifier of nodes other than leaf nodes in the tree structure. This reduces the number of bits occupied by the tree structure identifier in the bitstream, improves the compression ratio of point cloud compression based on the tree structure, and reduces the bandwidth required for transmitting the bitstream while increasing the transmission rate of the bitstream.
[0135] It should be noted that the order of steps in the data encoding method provided in this application embodiment can be appropriately adjusted. For example, the source device 210 can execute S620 first and then S630, that is, the source device 210 divides the original point cloud into a tree structure according to the distribution characteristics of the original point cloud, and then assigns a tree structure partitioning identifier code. Alternatively, the source device 210 can execute S620 and S630 in a loop, that is, after dividing the original point cloud according to the distribution characteristics to obtain the root node and child nodes of the tree structure, the source device 210 determines the tree structure identifier and occupancy code of the root node, and writes the non-reusable bit values in the tree structure identifier of the root node into the partitioning identifier code. S620 and S630 are executed on the child nodes of the root node that have point cloud data, and this process is repeated until the leaf nodes of the tree structure are reached. Finally, the data occupancy code and partitioning identifier code are obtained. Any variations that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this application should be included within the protection scope of this application, and therefore will not be elaborated further.
[0136] S650, source device 210 transmits the bit stream to destination device 220.
[0137] The source device 110 can send the bitstream of the original point cloud to the destination device 120 after encoding the entire original point cloud. Alternatively, the source device 110 can encode the original point cloud in real time, frame by frame, and send the bitstream of one frame after encoding. Specific methods for sending the bitstream can be found in existing technologies and the descriptions of communication interfaces 214 and 224 in the above embodiments.
[0138] S660, the destination device 220 decodes the bitstream sent by the source device 210 to obtain the data occupancy code and the partitioning identifier code.
[0139] The destination device 220 can perform entropy decoding on the bitstream sent by the source device 210 to obtain a data occupancy code and a partitioning identifier code. The data occupancy code indicates the data distribution of the original point cloud within a tree structure. The tree structure is obtained by the source device 210 by partitioning the original point cloud according to its distribution characteristics. The partitioning identifier code contains non-reusable bit values from the tree structure identifiers of nodes other than leaf nodes, and does not contain reusable bit values from the tree structure identifiers of nodes other than leaf nodes. The tree structure identifier indicates the partitioning method of the point cloud within a node in the tree structure.
[0140] S670, the target device 220 determines the tree structure identifier of the child node of the parent node based on the tree structure identifier of the parent node in the tree structure.
[0141] For any node in the tree structure, the destination device 220 executes S671 to determine whether the tree structure identifier of the child node is inherited from the tree structure identifier of the parent node according to the inheritance relationship shown in Table 2, until the leaf node of the tree structure.
[0142] If the tree structure identifier of a child node cannot reuse the tree structure identifier of a parent node, the destination device 220 executes S672 to determine the tree structure identifier of the child node from the partition identifier code.
[0143] If the tree structure identifier of a child node can reuse some bit values in the tree structure identifier of the parent node, the destination device 220 executes S673 to determine the non-reusable bit values in the tree structure identifier of the child node from the partition identifier code, and determines the tree structure identifier of the child node based on the non-reusable bit values in the tree structure identifier of the child node and the reusable bit values in the tree structure identifier of the parent node.
[0144] For example, if the partition identifier is 0000100, then the tree structure identifier of the root node is 0b000. Since the tree structure identifier of the root node is not inheritable, the destination device 220 determines the non-reusable bit value in the tree structure identifier of the parent node from the partition identifier, and the tree structure identifier of the parent node is 0b010. Since the values of the first and third bits in the tree structure identifier of the parent node are inheritable, the destination device 220 determines the value of the second non-reusable bit in the tree structure identifier of the child node from the partition identifier, and the tree structure identifier of the child node is 0b000.
[0145] S680 and target device 220 reconstruct the original point cloud based on the data occupancy code and the tree structure identifier of the nodes other than the leaf nodes in the tree structure, and obtain the reconstructed point cloud.
[0146] Since the target device 220 can deduce the tree structure identifier of the child node based on the non-reusable bit values in the tree structure identifier of the parent node and the tree structure identifier of the child node in the partition identifier code, the bitstream contains the non-reusable bit values in the tree structure identifier of the nodes other than the leaf nodes in the tree structure, and does not contain the reusable bit values in the tree structure identifier of the nodes other than the leaf nodes in the tree structure. Therefore, the amount of data in the partition identifier code in the bitstream is less than the amount of data in the tree structure identifier of the nodes other than the leaf nodes in the tree structure. This reduces the number of bits occupied by the tree structure identifier in the bitstream, improves the compression rate of point cloud compression based on tree structure, and reduces the bandwidth required for transmitting the bitstream and increases the transmission rate of the bitstream.
[0147] The following example illustrates the point cloud encoding and decoding method provided in the embodiments of this application. For example... Figure 10 As shown, assuming the depth of the tree structure is 4, that is, the tree structure contains a root node, a parent node, child nodes, and leaf nodes.
[0148] like Figure 10 As shown in (a), the distribution characteristics of the point cloud within the root node do not satisfy the distribution rules in the x, y, and z dimensions. Therefore, an octree is used to partition the point cloud within the root node, and the tree structure identifier of the root node is 0b000. The root node has 8 parent nodes, numbered 1 to 8. The data occupancy of the root node is as follows: Figure 10 As shown in (b), if the voxels corresponding to the two parent nodes with serial numbers "1" and "6" in the voxel corresponding to the root node contain data, then the occupancy code of the root node is 10000100.
[0149] like Figure 10 As shown in (c), the distribution characteristics of the point cloud within parent node 1 satisfy the distribution rule in the x-dimensional direction but do not satisfy the distribution rule in the y-dimensional and z-dimensional directions. Therefore, a binary tree is used to partition the point cloud within parent node 1, and the tree structure identifier of parent node 1 is 0b100. Parent node 1 has 2 child nodes, numbered 1 to 2. The data occupancy status of parent node 1 includes the presence of data in the voxel corresponding to child node 1 with sequence number "1" in the voxel corresponding to parent node 1. In this case, the occupancy status code of parent node 1 is 10.
[0150] like Figure 10 As shown in (d), the distribution characteristics of the point cloud within parent node 6 satisfy the distribution rules in the x and y dimensions but not in the z dimension. Therefore, a quadtree is used to partition the point cloud within parent node 6, and the tree structure identifier of parent node 6 is 0b110. Parent node 6 has 4 child nodes, numbered 1 to 4. The data occupancy status of parent node 6 includes the presence of data in the voxel corresponding to child node 4 with sequence number "4". Therefore, the occupancy status code of parent node 6 is 0001.
[0151] like Figure 10 As shown in (e), the distribution characteristics of the point cloud within child node 1 satisfy the distribution rule in the x-dimensional direction but do not satisfy the distribution rule in the y-dimensional and z-dimensional directions. Therefore, a binary tree is used to partition the point cloud within child node 1, and the tree structure identifier of child node 1 is 0b100. Child node 1 has 2 child nodes, which are numbered 1 to 2. The data occupancy status of child node 1 includes the presence of data in the voxel corresponding to child node 1 with the sequence number "1". In this case, the occupancy status code of child node 1 is 10.
[0152] like Figure 10As shown in (f), the distribution characteristics of the point cloud within child node 4 satisfy the distribution rule in the y-dimensional direction but do not satisfy the distribution rule in the x-dimensional and z-dimensional directions. Therefore, a binary tree is used to partition the point cloud within child node 4, and the tree structure identifier of child node 4 is 0b010. Child node 4 has 2 child nodes, which are numbered 1 to 2. Regarding the data occupancy of child node 1, the voxel corresponding to child node 4 with the sequence number "1" contains data, so the occupancy code of child node 4 is 10.
[0153] Therefore, the data occupancy code for the tree structure is 100001001000011010. Since the non-reusable bit value of the root node is 000, the non-reusable bit value of parent node 1 is 100, the non-reusable bit value of parent node 6 is 110, the non-reusable bit value of child node 1 is 1, and the non-reusable bit value of child node 4 is 01, the partition identifier code is 000100110101.
[0154] Understandably, the partition identifier of at least one branch in a tree structure contains fewer bits than the sum of the bits contained in the tree structure identifier of that branch. A branch can refer to a portion of the tree structure from the root node to a leaf node.
[0155] For example, such as Figure 10 As shown, assume the first branch is root node -> parent node 1 -> child node 1 -> leaf node 1. The tree structure identifier of the root node is 0b000, the tree structure identifier of parent node 1 is 0b100, the tree structure identifier of child node 1 is 0b100, and the tree structure identifier of the nodes other than the leaf nodes included in the first branch is 000100100. The sum of the bits in the tree structure identifier of the first branch is 9. Since the second and third bit values 0 in the tree structure identifier of child node 1 can inherit the second and third bit values 0 in the tree structure identifier of parent node 1, the bit value of the partition identifier code of the first branch is 0001001, and the sum of the bits in the tree structure identifier of the first branch is 7.
[0156] For example, such as Figure 10 As shown, assume the second branch is root node -> parent node 6 -> child node 4 -> leaf node 1. The tree structure identifier of the root node is 0b000, the tree structure identifier of parent node 6 is 0b110, the tree structure identifier of child node 4 is 0b010, and the tree structure identifier of all nodes included in the second branch is 000110010. The sum of the bits in the tree structure identifier of the second branch is 9. Since the third bit value 0 in the tree structure identifier of child node 4 can inherit the third bit value 0 in the tree structure identifier of parent node 6, the bit value of the partition identifier code of the second branch is 00011001, and the sum of the bits in the tree structure identifier of the second branch is 8.
[0157] Optionally, in some embodiments, if the bit value in the tree structure identifier of the parent node is used to indicate that the point cloud distribution features in the x-dimensional, y-dimensional, and z-dimensional directions all satisfy the distribution rules or do not satisfy the distribution rules, the tree structure identifier of the child node can also inherit the tree structure identifier of the parent node.
[0158] It is understood that, in order to achieve the functions in the above embodiments, the source device 210 and the destination device 220 include hardware structures and / or software modules corresponding to the execution of each function. Those skilled in the art should readily recognize that, based on the units and method steps of the various examples described in conjunction with the embodiments disclosed in this application, this application can be implemented in hardware or a combination of hardware and computer software. Whether a function is executed in hardware or by computer software driving hardware depends on the specific application scenario and design constraints of the technical solution.
[0159] The above text combines Figures 1 to 10 The data encoding and decoding method provided according to this embodiment is described in detail below. Figures 11 to 12 This describes the data encoding / decoding apparatus provided according to this embodiment.
[0160] Figure 11 This is a schematic diagram of a possible data encoding device provided in this embodiment. These data encoding devices can be used to implement the functions of the source device 210 in the above method embodiments, and therefore can also achieve the beneficial effects of the above method embodiments. In this embodiment, the data encoding device can be as follows: Figure 2 The source device 210 shown can also be a module (such as a chip) used in a server.
[0161] like Figure 11 As shown, the data encoding device 1100 includes a communication module 1110, a partitioning module 1120, an encoding module 1130, a compression module 1140, and a storage module 1150. The data encoding device 1100 is used to implement the above-mentioned... Figure 6 The method embodiment shown illustrates the function of the source device 210.
[0162] Communication module 1110 is used to acquire the raw point cloud and transmit the bitstream to the destination device 220. For example, communication module 1110 is used to perform... Figure 6 The S610 and S650 are Chinese models.
[0163] The partitioning module 1120 is used to partition the original point cloud into a tree structure based on the distribution characteristics of the original point cloud. For example, the partitioning module 1120 is used to perform... Figure 6 S620.
[0164] Encoding module 1130 is used to determine the partition identifier code based on the distribution characteristics of nodes other than leaf nodes in the tree structure. For example, encoding module 1130 is used to perform... Figure 6 S630.
[0165] Compression module 1140 is used to encode the data occupancy code and the partition identifier code to obtain a bitstream. For example, compression module 1140 is used to perform... Figure 6 S640.
[0166] Optionally, the encoding module 1130 is specifically used to determine the bit values in the tree structure identifier of the child node that cannot reuse the tree structure identifier of the parent node based on the distribution characteristics of the point cloud in the child node in the tree structure and the distribution characteristics of the point cloud in the parent node to which the child node belongs, and obtain the partition identifier code; the partition identifier code includes the bit values in the tree structure identifier of the nodes other than the leaf nodes in the tree structure that cannot be reused, and does not include the bit values in the tree structure identifier of the nodes other than the leaf nodes in the tree structure, and the child node is the child node in the tree structure other than the leaf nodes.
[0167] If the data encoding device 1100 has the function of acquiring point clouds, the data encoding device 1100 may also include an acquisition module 1160. The storage module 1150 is used to store the original point cloud, code stream, data occupancy code and partitioning identifier code, as well as the application program required to perform encoding.
[0168] It should be understood that the data encoding device 1100 in this application embodiment can be implemented using a GPU, NPU, ASIC, or a programmable logic device (PLD). The PLD can be a complex programmable logical device (CPLD), a field-programmable gate array (FPGA), a generic array logic (GAL), or any combination thereof. It can also be implemented in software. Figure 6 In the data encoding and decoding method shown, the data encoding device 1100 and its various modules can also be software modules.
[0169] The data encoding apparatus 1100 according to the embodiments of this application can correspondingly execute the method described in the embodiments of this application, and the above and other operations and / or functions of each unit in the data encoding apparatus 1100 are respectively for implementing Figure 6 For the sake of brevity, the corresponding processes of each method in the code will not be elaborated here.
[0170] Figure 12 This is a schematic diagram of a possible data decoding device provided in this embodiment. These data decoding devices can be used to implement the function of the target device 220 in the above method embodiment, and therefore can also achieve the beneficial effects of the above method embodiment. In this embodiment, the data decoding device can be as follows: Figure 2 The target device 220 shown can also be a module (such as a chip) used in a server.
[0171] like Figure 12 As shown, the data decoding device 1200 includes a communication module 1210, a decoding module 1220, a reconstruction module 1230, and a storage module 1240. The data decoding device 1200 is used to implement the above-mentioned... Figure 6 The function of the target device 220 in the method embodiment shown.
[0172] The communication module 1210 is used to receive the bit stream sent by the source device 210.
[0173] The decoding module 1220 is used to decode the bitstream sent by the encoding end to obtain the data occupancy code and the partition identifier code. For example, the decoding module 1220 is used to perform... Figure 6 S660.
[0174] The reconstruction module 1230 is used to determine the tree structure identifier of the child node of the parent node based on the tree structure identifier of the parent node in the tree structure; and to reconstruct the original point cloud based on the data occupancy code and the tree structure identifiers of the nodes in the tree structure other than the leaf nodes, to obtain the reconstructed point cloud. For example, the reconstruction module 1230 is used to perform... Figure 6 The S670 and S680 are Chinese models.
[0175] Optionally, the reconstruction module 1230 is specifically used to determine whether the tree structure identifier of the child node can reuse the tree structure identifier of the parent node; if the tree structure identifier of the child node cannot reuse the tree structure identifier of the parent node, the tree structure identifier of the child node is determined from the partition identifier code; if the tree structure identifier of the child node can reuse some bit values in the tree structure identifier of the parent node, the non-reusable bit values in the tree structure identifier of the child node are determined from the partition identifier code, and the tree structure identifier of the child node is determined based on the non-reusable bit values in the tree structure identifier of the child node and the reusable bit values in the tree structure identifier of the parent node.
[0176] The storage module 1240 is used to store the bitstream, data occupancy code, partition identifier code and tree structure identifier, as well as the application program required to perform decoding.
[0177] It should be understood that the data decoding device 1200 in this application embodiment can be implemented using a graphics processing unit (GPU), a neural network processing unit (NPU), an application-specific integrated circuit (ASIC), or a programmable logic device (PLD). The PLD can be a complex programmable logical device (CPLD), a field-programmable gate array (FPGA), a generic array logic (GAL), or any combination thereof. It can also be implemented in software. Figure 6 In the data encoding and decoding method shown, the data decoding device 1200 and its various modules can also be software modules.
[0178] The data decoding apparatus 1200 according to the embodiments of this application can correspond to the execution of the methods described in the embodiments of this application, and the above and other operations and / or functions of each unit in the data decoding apparatus 1200 are respectively for implementing Figure 6 For the sake of brevity, the corresponding processes of each method in the code will not be elaborated here.
[0179] Figure 13 This is a schematic diagram of a computing device 1300 provided in this embodiment. As shown in the figure, the computing device 1300 includes a processor 1310, a bus 1320, a memory 1330, a memory unit 1350 (also referred to as a main memory unit), and a communication interface 1340. The processor 1310, memory 1330, memory unit 1350, and communication interface 1340 are connected via the bus 1320.
[0180] It should be understood that in this embodiment, the processor 1310 may be a CPU, but it may also be other general-purpose processors, DSPs, ASICs, FPGAs, or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc. A general-purpose processor may be a microprocessor or any conventional processor.
[0181] The processor may also be a GPU, NPU, microprocessor, ASIC, or one or more integrated circuits used to control the execution of the program in this application.
[0182] The communication interface 1340 is used to enable communication between the computing device 1300 and external devices or components. In this embodiment, the communication interface 1340 is used to receive the original point cloud or send a bitstream after compressing the original point cloud.
[0183] Bus 1320 may include a pathway for transferring information between the aforementioned components (such as processor 1310, memory unit 1350, and memory 1330). In addition to a data bus, bus 1320 may also include a power bus, control bus, and status signal bus. However, for clarity, all buses are labeled as bus 1320 in the figure. Bus 1320 may be a Peripheral Component Interconnect Express (PCIe) bus, or an Extended Industry Standard Architecture (EISA) bus, a Unified Bus (Ubus or UB), a Compute Express Link (CXL), a Cache Coherent Interconnect for Accelerators (CCIX), etc.
[0184] As an example, computing device 1300 may include multiple processors. A processor may be a multi-CPU processor. Here, "processor" can refer to one or more devices, circuits, and / or computing units used to process data (e.g., computer program instructions). If computing device 1300 is used to implement the functions of source device 210, processor 1310 may call the original point cloud stored in memory 1330, divide the original point cloud into a tree structure according to its distribution characteristics, determine a partitioning identifier code according to the distribution characteristics of the nodes in the tree structure excluding leaf nodes, and compress the data occupancy code and the partitioning identifier code to obtain a bitstream.
[0185] If the computing device 1300 is used to implement the functions of the target device 220, the processor 1310 can also call the bitstream stored in the memory 1330, decode the bitstream to obtain the data occupancy code and the partitioning identifier code, determine the tree structure identifier of the child node of the parent node according to the tree structure identifier of the parent node in the tree structure, and reconstruct the original point cloud according to the data occupancy code and the tree structure identifier of the nodes other than the leaf nodes in the tree structure to obtain the reconstructed point cloud.
[0186] It is worth noting that, Figure 13Taking computing device 1300 as an example, which includes one processor 1310 and one memory 1330, the processor 1310 and memory 1330 are used to indicate a type of device or equipment. In specific embodiments, the number of each type of device or equipment can be determined according to business needs.
[0187] Memory unit 1350 can correspond to the storage medium used to store information such as partition identifier codes in the above method embodiments. Memory unit 1350 can be volatile memory or non-volatile memory, or it can include both volatile and non-volatile memory. The non-volatile memory can be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. The volatile memory can be random access memory (RAM), which is used as an external cache. By way of example, but not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous linked dynamic random access memory (SLDRAM), and direct rambus RAM (DR RAM).
[0188] The memory 1330 is used to store data and can be a solid-state drive or a hard disk drive.
[0189] The aforementioned computing device 1300 can be a general-purpose device or a dedicated device. For example, computing device 1300 can be a mobile terminal, tablet computer, laptop computer, VR device, AR device, Mixed Reality (MR) device, Extended Reality (ER) device, vehicle terminal, etc., or it can be an edge device (e.g., a box carrying a chip with processing capabilities). Optionally, computing device 1300 can also be a server or other device with computing capabilities.
[0190] It should be understood that the computing device 1300 according to this embodiment may correspond to the data encoding device 1100 or the data decoding device 1200 in this embodiment, and may correspond to the execution of the data encoding device 1100 or the data decoding device 1200 in this embodiment. Figure 6 The corresponding entities in the data encoding device 1100 and the data decoding device 1200, and the aforementioned and other operations and / or functions of each module are respectively implemented to achieve Figure 6 The corresponding processes are omitted here for the sake of brevity.
[0191] The method steps in this embodiment can be implemented in hardware or by a processor executing software instructions. The software instructions can consist of corresponding software modules, which can be stored in random access memory (RAM), flash memory, read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), registers, hard disks, portable hard disks, CD-ROMs, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor, enabling the processor to read information from and write information to the storage medium. Of course, the storage medium can also be a component of the processor. The processor and storage medium can reside in an ASIC. Alternatively, the ASIC can reside in a computing device. Of course, the processor and storage medium can also exist as discrete components in a network device or terminal device.
[0192] In the above embodiments, implementation can be achieved entirely or partially through software, hardware, firmware, or any combination thereof. When implemented using software, it can be implemented entirely or partially in the form of a computer program product. The computer program product includes one or more computer programs or instructions. When the computer program or instructions are loaded and executed on a computer, the processes or functions described in the embodiments of this application are performed entirely or partially. The computer can be a general-purpose computer, a special-purpose computer, a computer network, a network device, a user equipment, or other programmable device. The computer program or instructions can be stored in a computer-readable storage medium or transferred from one computer-readable storage medium to another. For example, the computer program or instructions can be transferred from one website, computer, server, or data center to another website, computer, server, or data center via wired or wireless means. The computer-readable storage medium can be any available medium that a computer can access or a data storage device such as a server or data center that integrates one or more available media. The available medium can be a magnetic medium, such as a floppy disk, hard disk, or magnetic tape; it can also be an optical medium, such as a digital video disc (DVD); or it can be a semiconductor medium, such as a solid-state drive (SSD).
[0193] The above description is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any person skilled in the art can easily conceive of various equivalent modifications or substitutions within the technical scope disclosed in this application, and these modifications or substitutions should all be covered within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.
Claims
1. A data encoding method, characterized in that, The method is performed by a computing device, and the method includes: The original point cloud is divided into a tree structure based on its distribution characteristics; A partitioning identifier code is determined based on the distribution characteristics of nodes other than leaf nodes in the tree structure. The partitioning identifier code contains bit values from the tree structure identifier of nodes other than leaf nodes in the tree structure. The tree structure identifier is used to indicate the partitioning method of the point cloud within the node. The number of bits contained in the partitioning identifier code is less than the sum of the number of bits contained in the tree structure identifiers of all first-type nodes. The first-type nodes are nodes other than leaf nodes in the tree structure. The encoded data occupancy code and the partition identifier code are used to obtain a code stream, wherein the data occupancy code is used to indicate the data distribution of the original point cloud in the tree structure.
2. The method according to claim 1, characterized in that, The partitioning identifier code is determined based on the distribution characteristics of nodes other than leaf nodes in the tree structure, including: Based on the distribution characteristics of the point cloud within the child node in the tree structure and the distribution characteristics of the point cloud within the parent node to which the child node belongs, the bit values in the tree structure identifier of the child node that cannot reuse the tree structure identifier of the parent node are determined to obtain the partition identifier code; the partition identifier code includes the non-reusable bit values in the tree structure identifiers of nodes other than leaf nodes in the tree structure, and does not include the reusable bit values in the tree structure identifiers of nodes other than leaf nodes in the tree structure, where the child node is a node in the tree structure other than leaf nodes.
3. The method according to claim 2, characterized in that, Based on the distribution characteristics of the point cloud within the child node in the tree structure and the distribution characteristics of the point cloud within the parent node to which the child node belongs, determine the bit values in the tree structure identifier of the child node that cannot reuse the tree structure identifier of the parent node, including: Based on the distribution characteristics of the point cloud within the parent node, determine the non-reusable distribution characteristics among the distribution characteristics of the point cloud within the child node. The tree structure used to divide the point cloud within the child node is determined based on the non-reusable distribution characteristics in the distribution characteristics of the point cloud within the child node. The non-reusable bit values in the tree structure identifier of the child node are determined based on the tree structure identifier of the child node and the tree structure identifier of the parent node.
4. The method according to claim 3, characterized in that, The tree structure used to partition the point cloud within the child node is determined based on the non-reusable distribution features in the distribution characteristics of the point cloud within the child node, including: The tree structure used to divide the point cloud within the child node is determined based on the non-reusable distribution features and distribution rules in the distribution characteristics of the point cloud within the child node. The distribution rules are used to indicate that the point cloud within the child node is distributed in a half-region of the dimension in the dimensional direction.
5. The method according to claim 3 or 4, characterized in that, The distribution features of the point cloud within a node in the tree structure include the x-dimensional, y-dimensional, and z-dimensional distribution features of the point cloud within the node in three-dimensional space. The tree structure identifier contains three bit values, which respectively indicate the x-dimensional, y-dimensional, and z-dimensional distribution features. The tree structure identifier of the child node cannot reuse the bit values of the tree structure identifier of the parent node, which include at least one of the bit values of the x-dimensional, y-dimensional, and z-dimensional distribution features.
6. The method according to claim 5, characterized in that, The tree structure used to partition the point cloud within the child node is determined based on the non-reusable distribution features in the distribution characteristics of the point cloud within the child node, including: Based on the distribution characteristics of one non-reusable dimension of the point cloud within the child node, determine whether to use a binary tree or an octree to divide the point cloud within the child node.
7. The method according to claim 5, characterized in that, The tree structure used to partition the point cloud within the child node is determined based on the non-reusable distribution features in the distribution characteristics of the point cloud within the child node, including: Based on the distribution characteristics of the point cloud within the child node that are not reusable in two dimensions or three dimensions, determine whether to use a binary tree, quadtree, or octree to divide the point cloud within the child node.
8. The method according to any one of claims 1-7, characterized in that, Before dividing the original point cloud into a tree structure based on its distribution characteristics, the method further includes: The raw point cloud is acquired by sensors, including at least one of lidar, millimeter-wave radar, and sonar.
9. A data decoding method, characterized in that, The method is performed by a computing device, and the method includes: The code stream sent by the encoding end is decoded to obtain a data occupancy code and a partitioning identifier code. The data occupancy code is used to indicate the data distribution of the original point cloud in the tree structure. The tree structure is obtained by the encoding end by partitioning the original point cloud according to the distribution characteristics of the original point cloud using a tree structure. The partitioning identifier code contains non-reusable bit values in the tree structure identifier of nodes other than leaf nodes in the tree structure, and does not contain reusable bit values in the tree structure identifier of nodes other than leaf nodes in the tree structure. The tree structure identifier is used to indicate the partitioning method of the point cloud within the nodes in the tree structure. The tree structure identifier of the child node of the parent node is determined based on the tree structure identifier of the parent node in the tree structure; The original point cloud is reconstructed based on the data occupancy code and the tree structure identifiers of the nodes other than the leaf nodes in the tree structure, resulting in the reconstructed point cloud.
10. The method according to claim 9, characterized in that, The tree structure identifier of the child node of the parent node is determined based on the tree structure identifier of the parent node in the tree structure, including: Determine whether the tree structure identifier of the child node can reuse the tree structure identifier of the parent node; If the tree structure identifier of the child node cannot reuse the tree structure identifier of the parent node, the tree structure identifier of the child node is determined from the partition identifier code; If the tree structure identifier of the child node can reuse some bit values in the tree structure identifier of the parent node, the non-reusable bit values in the tree structure identifier of the child node are determined from the partition identifier code, and the tree structure identifier of the child node is determined based on the non-reusable bit values in the tree structure identifier of the child node and the reusable bit values in the tree structure identifier of the parent node.
11. A data encoding device, characterized in that, include: A segmentation module is used to segment the original point cloud into a tree structure based on the distribution characteristics of the original point cloud; An encoding module is used to determine a partitioning identifier code based on the distribution characteristics of nodes other than leaf nodes in the tree structure. The partitioning identifier code contains bit values in the tree structure identifier of nodes other than leaf nodes in the tree structure. The tree structure identifier is used to indicate the partitioning method of the point cloud within the node. The number of bits contained in the partitioning identifier code is less than the sum of the number of bits contained in the tree structure identifiers of all first-type nodes. The first-type nodes are nodes other than leaf nodes in the tree structure. A compression module is used to encode a data occupancy code and a partition identifier code to obtain a bitstream, wherein the data occupancy code is used to indicate the data distribution of the original point cloud in the tree structure.
12. The apparatus according to claim 11, characterized in that, When the encoding module determines the partition identifier code based on the distribution characteristics of nodes other than leaf nodes in the tree structure, it is specifically used for: Based on the distribution characteristics of the point cloud within the child node in the tree structure and the distribution characteristics of the point cloud within the parent node to which the child node belongs, the bit values in the tree structure identifier of the child node that cannot reuse the tree structure identifier of the parent node are determined to obtain the partition identifier code; the partition identifier code includes the non-reusable bit values in the tree structure identifiers of nodes other than leaf nodes in the tree structure, and does not include the reusable bit values in the tree structure identifiers of nodes other than leaf nodes in the tree structure, where the child node is a child node in the tree structure other than leaf nodes.
13. The apparatus according to claim 12, characterized in that, When the encoding module determines the bit value in the tree structure identifier of the child node that cannot reuse the tree structure identifier of the parent node, based on the distribution characteristics of the point cloud within the child node and the distribution characteristics of the point cloud within the parent node to which the child node belongs, it is specifically used for: Based on the distribution characteristics of the point cloud within the parent node, determine the non-reusable distribution characteristics among the distribution characteristics of the point cloud within the child node. The tree structure used to divide the point cloud within the child node is determined based on the non-reusable distribution characteristics in the distribution characteristics of the point cloud within the child node. The non-reusable bit values in the tree structure identifier of the child node are determined based on the tree structure identifier of the child node and the tree structure identifier of the parent node.
14. The apparatus according to claim 13, characterized in that, When the encoding module determines the tree structure used to partition the point cloud within the child node based on the non-reusable distribution features in the distribution characteristics of the point cloud within the child node, it is specifically used for: The tree structure used to divide the point cloud within the child node is determined based on the non-reusable distribution features and distribution rules in the distribution characteristics of the point cloud within the child node. The distribution rules are used to indicate that the point cloud within the child node is distributed in a half-region of the dimension in the dimensional direction.
15. The apparatus according to claim 13 or 14, characterized in that, The distribution features of the point cloud within a node in the tree structure include the x-dimensional, y-dimensional, and z-dimensional distribution features of the point cloud within the node in three-dimensional space. The tree structure identifier contains three bit values, which respectively indicate the x-dimensional, y-dimensional, and z-dimensional distribution features. The tree structure identifier of the child node cannot reuse the bit values of the tree structure identifier of the parent node, which include at least one of the bit values of the x-dimensional, y-dimensional, and z-dimensional distribution features.
16. The apparatus according to claim 15, characterized in that, When the encoding module determines the tree structure used to partition the point cloud within the child node based on the non-reusable distribution features in the distribution characteristics of the point cloud within the child node, it is specifically used for: Based on the distribution characteristics of one non-reusable dimension of the point cloud within the child node, determine whether to use a binary tree or an octree to divide the point cloud within the child node.
17. The apparatus according to claim 15, characterized in that, When the encoding module determines the tree structure used to partition the point cloud within the child node based on the non-reusable distribution features in the distribution characteristics of the point cloud within the child node, it is specifically used for: Based on the distribution characteristics of the point cloud within the child node that are not reusable in two dimensions or three dimensions, determine whether to use a binary tree, quadtree, or octree to divide the point cloud within the child node.
18. The apparatus according to any one of claims 11-17, characterized in that, The device also includes a data acquisition module: The acquisition module is used to acquire the original point cloud through sensors, including at least one of lidar, millimeter-wave radar and sonar.
19. A data decoding device, characterized in that, include: The decoding module is used to decode the bitstream sent by the encoding end to obtain a data occupancy code and a partitioning identifier code. The data occupancy code is used to indicate the data distribution of the original point cloud in a tree structure. The tree structure is obtained by the encoding end by partitioning the original point cloud using a tree structure according to the distribution characteristics of the original point cloud. The partitioning identifier code contains non-reusable bit values in the tree structure identifier of nodes other than leaf nodes in the tree structure, and does not contain reusable bit values in the tree structure identifier of nodes other than leaf nodes in the tree structure. The tree structure identifier is used to indicate the partitioning method of the point cloud within the nodes in the tree structure. The reconstruction module is used to determine the tree structure identifier of the child node of the parent node based on the tree structure identifier of the parent node in the tree structure. Furthermore, the original point cloud is reconstructed based on the data occupancy code and the tree structure identifiers of the nodes other than the leaf nodes in the tree structure, to obtain the reconstructed point cloud.
20. The apparatus according to claim 19, characterized in that, When the reconstruction module determines the tree structure identifier of the child node of the parent node based on the tree structure identifier of the parent node in the tree structure, it is specifically used for: Determine whether the tree structure identifier of the child node can reuse the tree structure identifier of the parent node; If the tree structure identifier of the child node cannot reuse the tree structure identifier of the parent node, the tree structure identifier of the child node is determined from the partition identifier code; If the tree structure identifier of the child node can reuse some bit values in the tree structure identifier of the parent node, the non-reusable bit values in the tree structure identifier of the child node are determined from the partition identifier code, and the tree structure identifier of the child node is determined based on the non-reusable bit values in the tree structure identifier of the child node and the reusable bit values in the tree structure identifier of the parent node.
21. A computing device, characterized in that, The computing device includes a memory and at least one processor, the memory being used to store a set of computer instructions; when the processor executes the set of computer instructions, it performs the operational steps of the method according to any one of claims 1 to 10.