WO2020143007A1 - 用于三维数据点集处理的方法和设备 - Google Patents

用于三维数据点集处理的方法和设备 Download PDF

Info

Publication number
WO2020143007A1
WO2020143007A1 PCT/CN2019/071240 CN2019071240W WO2020143007A1 WO 2020143007 A1 WO2020143007 A1 WO 2020143007A1 CN 2019071240 W CN2019071240 W CN 2019071240W WO 2020143007 A1 WO2020143007 A1 WO 2020143007A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
layer
encoding
dimensional data
decoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/CN2019/071240
Other languages
English (en)
French (fr)
Inventor
李璞
郑萧桢
张富
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SZ DJI Technology Co Ltd
Original Assignee
SZ DJI Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SZ DJI Technology Co Ltd filed Critical SZ DJI Technology Co Ltd
Priority to PCT/CN2019/071240 priority Critical patent/WO2020143007A1/zh
Priority to CN201980005156.XA priority patent/CN111247802B/zh
Publication of WO2020143007A1 publication Critical patent/WO2020143007A1/zh
Priority to US17/371,819 priority patent/US20210335019A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S17/00Systems using the reflection or reradiation of electromagnetic waves other than radio waves, e.g. lidar systems
    • G01S17/02Systems using the reflection of electromagnetic waves other than radio waves
    • G01S17/06Systems determining position data of a target
    • G01S17/08Systems determining position data of a target for measuring distance only
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Definitions

  • the present application relates to the field of information processing, and more specifically, to a method and device for three-dimensional data point set processing.
  • a three-dimensional data point set is a form of representation of a three-dimensional object or scene. It is composed of a set of discrete points in the space that irregularly distribute and express the spatial structure and surface properties of the three-dimensional object or scene.
  • the data of a three-dimensional data set point can be It includes three-dimensional coordinates describing coordinate information, and further includes attributes of the position coordinates. In order to accurately reflect the information in space, the number of discrete points required is huge.
  • Embodiments of the present application provide a method and device for processing a three-dimensional data point set, which can increase the flexibility of encoding a three-dimensional data point set, thereby improving encoding performance.
  • a method for processing a three-dimensional data point set is provided.
  • the three-dimensional data point set is divided in a multi-tree manner.
  • the method includes:
  • the first node is performed in a depth-first manner Encoding or decoding; where N and M are integers greater than or equal to 1.
  • a device for processing a three-dimensional data point set is provided.
  • the three-dimensional data point set is divided in a multi-tree manner.
  • the device includes:
  • a first encoding or decoding unit used to encode or decode the Nth layer of the multi-tree in a breadth-first manner
  • the second encoding or decoding unit is used to adopt depth priority when all three-dimensional data points in the first node of the Nth layer fall into the same node of the Mth layer under the first node To encode or decode the first node; wherein, N and M are integers greater than or equal to 1.
  • a computer system including: a memory for storing computer-executable instructions; a processor for accessing the memory and executing the computer-executable instructions to perform the method in the first aspect operating.
  • a computer storage medium stores a program code, and the program code may be used to instruct to execute the method of the first aspect.
  • a computer program product includes program code, and the program code may be used to instruct to execute the method of the first aspect.
  • the breadth-first way is used to encode or decode the Nth layer of the multi-fork tree, and all the point clouds of one of the nodes in the Nth layer fall to the same node in the layer below
  • the node is encoded or decoded in a depth-first manner, which enables flexible encoding of the node, thereby improving encoding performance.
  • FIG. 1 is a schematic block diagram of a method for encoding a three-dimensional data point set according to an embodiment of the present application.
  • FIG. 2 is a schematic block diagram of a method for decoding a three-dimensional data point set according to an embodiment of the present application.
  • FIG. 3 is a schematic diagram of cubic octree partitioning according to an embodiment of the present application.
  • FIG. 4 is a schematic diagram of an octree coding scheme according to an embodiment of the present application.
  • FIG. 5 is a schematic flowchart of a method for three-dimensional data point set processing according to an embodiment of the present application.
  • FIG. 6 is a schematic diagram of a node index according to an embodiment of the present application.
  • FIG. 7 is a schematic diagram of another node index according to an embodiment of the present application.
  • FIG. 8 is a schematic diagram of another octree coding scheme according to an embodiment of the present application.
  • FIG. 9 is a schematic diagram of another octree coding scheme according to an embodiment of the present application.
  • FIG. 10 is a schematic block diagram of another method for encoding a three-dimensional data point set according to an embodiment of the present application.
  • FIG. 11 is a schematic block diagram of another method for decoding a three-dimensional data point set according to an embodiment of the present application.
  • LOD level of detail
  • FIG. 13 is a schematic block diagram of another method for encoding a three-dimensional data point set according to an embodiment of the present application.
  • FIG. 14 is a schematic block diagram of another method for decoding a three-dimensional data point set according to an embodiment of the present application.
  • 15 is a schematic block diagram of another method for decoding a three-dimensional data point set according to an embodiment of the present application.
  • 16 is a schematic block diagram of another method for decoding a three-dimensional data point set according to an embodiment of the present application.
  • 17 is a schematic diagram of a distance measuring device according to an embodiment of the present application.
  • FIG. 18 is a schematic diagram of a distance measuring device according to an embodiment of the present application.
  • FIG. 19 is a schematic diagram of a scanning pattern according to an embodiment of the present application.
  • 20 is a schematic block diagram of a device for processing a three-dimensional data point set according to an embodiment of the present application.
  • 21 is a schematic block diagram of a computer system according to an embodiment of the present application.
  • the three-dimensional data point set may be composed of discrete three-dimensional data points, and the data of each three-dimensional data point may include information describing the position coordinates of the three-dimensional data point, and may further include attribute information.
  • the position coordinates of the three-dimensional data point may be three-dimensional position coordinates (x, y, z).
  • the attributes of the three-dimensional data point may include the reflectance and/or color of the three-dimensional data point.
  • the three-dimensional data point set mentioned in the embodiment of the present application may be a point cloud, and correspondingly, the three-dimensional data point may be a point cloud point.
  • the three-dimensional data point set mentioned in the embodiments of the present application can be used for high-precision 3D maps.
  • the three-dimensional data point set in the embodiment of the present application may be obtained by the light detection device performing light detection (for example, laser detection) on the object to be detected.
  • the light detection device may be, for example, photoelectric radar, or lidar.
  • the encoder in the embodiment of the present application may be integrated into the light detection device.
  • the number of three-dimensional data points included in the three-dimensional data point set is usually large.
  • the data of the three-dimensional data point set is input to the encoder; in 120, the position coordinates in the data of the three-dimensional data point set are quantified. For example, according to the position coordinates, The difference between the maximum and minimum values of the three axes, and the quantization accuracy determined according to the input parameters, quantize the position coordinates of each 3D data point, and convert the position coordinates of the input 3D data point to greater than or equal to zero Integer coordinates; in 130, encode the quantized position coordinates in position coordinates; in 140, encode the attributes in the data of the three-dimensional data point set in the order of the encoded position coordinates; in 150 , Entropy encoding the code stream obtained after encoding the position coordinates and the code stream obtained after the attribute encoding; in 160, the data of the encoded three-dimensional data point set is output, for example, it can be output to a memory for storage, or, it can be Send to the decoder.
  • the code stream to be decoded of the three-dimensional data point set is obtained, for example, the code stream can be obtained from a memory, or the code stream transmitted by the encoding end is obtained; in 220 , Entropy decoding the code stream to obtain the code stream corresponding to the position coordinates and the code stream corresponding to the attributes; in 230, the position coordinate decoding is performed on the code stream corresponding to the position coordinates; in 240, the decoded position coordinates Inverse quantization is performed; in 250, the attributes can be decoded in the order of the decoded position coordinates; 260, according to the decoded attributes and position coordinates, the decoded three-dimensional data point set data is obtained.
  • the three-dimensional data point data mentioned above may include attribute information, but it should be understood that, in the embodiment of the present application, the three-dimensional data point data may not include attribute information, but only include position coordinate information.
  • the multi-fork tree mentioned in the embodiment of the present application may be an octree, a quad-tree, a binary tree, or a mixture of two of them, or a mixture of three types of trees.
  • the corresponding node when performing multi-tree coding, can be divided into multiple nodes in each layer, and the bit is used to reflect the division of the node's multi-tree. Specifically, the node can be divided into each child node Data exists.
  • corresponding bits can be obtained, and the corresponding nodes are divided into multi-trees according to the obtained bits.
  • each layer of the multi-fork tree can use the coordinates of the center point of the current node to divide the child nodes, and divide the current node into multiple child nodes through the center point, and then you can judge If there are 3D data points in each child node, the child nodes with 3D data points will be further divided until the child nodes are divided to a preset size, for example, they can be divided into child nodes with side length 1 to stop dividing.
  • FIG. 3 a node is divided into 8 sub-nodes, and as shown in FIG. 4 is a schematic diagram of node-by-layer division.
  • the octrees when compressing and encoding the position coordinates of three-dimensional data points, the octrees can be traversed in order of priority, and the encoding can be performed layer by layer, and the division of each octree can be encoded layer by layer. And, the eight child nodes obtained by dividing each node into an octree can determine whether it contains three-dimensional data points, and if it contains three-dimensional data points, it will be further divided until the child nodes are divided to a preset size.
  • the black squares in the figure indicate that the current child node contains three-dimensional data points
  • the white squares indicate that the current sub-block does not contain three-dimensional data points.
  • the child nodes containing data points that is, the second layer in Figure 4, in the second layer, the third node and the eighth node contain three-dimensional data points, then this time octree
  • the division can be represented by 00100001.
  • the two child nodes with three-dimensional data points can be divided in sequence. Among them, it can be further divided in order of breadth priority.
  • the third layer first divide the left child node. The division result is shown in the left half of the third layer in Figure 4.
  • the first child node and the fourth child node contain three-dimensional data points, then this time the octree can be divided Represented by 10010000.
  • the second child node with three-dimensional data points in the second layer are the division result.
  • the division result is shown in the right half of the third layer in Figure 4.
  • the second child node and the eighth child node contain three-dimensional data points, then This time the octree division can be represented by 0100 0001.
  • the division of the subsequent layers is similar to the previous description, and the division is performed layer by layer in the order of breadth-first traversal.
  • the binary code stream corresponding to the division result in FIG. 4 is 0010, 0000, 0010, 0001, 1001, 0000, 0100, 0001...
  • the deepest position of the octree division has been reached, that is, the leaf node of the current octree has been reached, no further division is required, and then coding is required.
  • the number of 3D data points contained in the current leaf node When the current leaf node contains a three-dimensional data point, directly encode a 0 to represent. When the current leaf node contains more than one three-dimensional data point, you can set the current leaf node to contain n three-dimensional data points. At this time, a 1 will be encoded first, and then the value (n-1) will be encoded.
  • the binary bit stream previously coded to indicate the octree division can be sent to the arithmetic coding engine bit by bit for arithmetic coding, and then the binary bit stream indicating the number of three-dimensional data points in the leaf node can be sent to the arithmetic coding engine for arithmetic coding.
  • the position coordinates in the point cloud data can be encoded.
  • FIG. 5 is a schematic diagram of processing a three-dimensional data point set according to an embodiment of the present application.
  • the three-dimensional data point set can be encoded or decoded in a multi-tree manner.
  • This method can be implemented by the encoding end or the decoding end. The method may include at least part of the following content.
  • the Nth layer of the multi-ary tree is encoded or decoded in a breadth-first manner.
  • a depth-first approach is used for the The first node performs encoding or decoding; where N can be greater than or equal to 0, and M is an integer greater than or equal to 1.
  • N can be greater than or equal to 0, and M is an integer greater than or equal to 1.
  • the counting start points of N and M in the Mth layer and the Nth layer are the same, that is, the counting is performed at the same layer. At this time, it may mean that the value of M is greater than N.
  • the division depth of the octree may be equal to or greater than M.
  • the Mth layer may be a leaf node.
  • the above Mth layer may also be understood as counting from the Nth layer as the counting start point 0.
  • the Mth layer may be the first layer below the first node, that is, the third layer of the octree.
  • the depth of the octree may be equal to N+M (the Mth layer may be a leaf node), or it may be greater than N+M.
  • the root node in the embodiment of the present application may be layer 0 of the octree.
  • the encoding end it may have an action of determining whether all the three-dimensional data points in the first node of the Nth layer fall into the same node of the Mth layer under the first node; For the decoding end, there may be no action to determine whether "all three-dimensional data points in the first node of the Nth layer fall within the same node of the Mth layer under the first node".
  • the first layer may be Use depth-first encoding.
  • all three-dimensional data points fall into one of the divided nodes.
  • the three-dimensional data points can be encoded in a depth-first manner.
  • the above “encoding or decoding the first node in a depth-first manner” may be understood as encoding the first node by switching the breadth-first manner to the depth-first manner
  • “switching the breadth-first approach to depth-first approach to encode and decode the first node” can be understood as the system’s default is the initial Encoding or decoding in breadth-first mode is only carried out in depth-first mode because certain conditions are met.
  • the execution of the certain action does not mean that the certain action must be executed as long as the certain condition is met, but only that the action Before that certain condition needs to be met, it may also be necessary to judge that other conditions need to be met.
  • the node in the embodiment of the present application may be referred to as a block, and the child node may be referred to as a sub-block.
  • the node (or block) and the child node (or sub-block) in the embodiments of the present application are relative concepts.
  • a node of the layer may be a child node of the upper layer (or upper layers), and may be a parent node of the next layer.
  • encoding or decoding in a breadth-first manner in a certain layer may refer to encoding or decoding the next node in the specified range of the layer, and then encoding the next
  • the nodes of the layer where the multiple nodes in the specified range can refer to all nodes of a layer in the multi-tree coding process, or can be child nodes of the nodes of the previous layer or multiple layers, or can be divided by the following Nodes other than nodes: nodes and/or their child nodes that are encoded or decoded in a depth-first manner.
  • encoding or decoding a node in a depth-first manner may refer to the encoded bits of the node at the current layer and the layers below the current layer (which may be bits reflecting the division of the multi-tree, And may further include bits describing the number of point cloud points included in the leaf node) bits that are not interspersed with other nodes, that is, the bits of the node and its child nodes are continuous and clustered together.
  • breadth first or depth first mentioned in the embodiments of the present application may also have other names, for example, breadth first or depth first.
  • a node of a certain layer can be understood as a node that has not been divided into multi-level trees in this layer, and multi-level tree division of this layer can be understood as A node with three-dimensional data points divides multiple child nodes.
  • the Mth layer may be different from the Nth layer by one layer or multiple layers, that is, all the three-dimensional data points in the first node of the Nth layer.
  • the same node of the Mth layer under the first node can be understood as each layer of the multi-layer under the N-layer is judged by the three-dimensional data point of a node of the current layer. In a node.
  • the index value of a child node can start from 0 and accumulate in sequence according to 1.
  • the index value of each node of the octree may be 000, 001, 010, 011, 100, 101, 110, 111.
  • the bit value corresponding to the Kth layer of the three-dimensional data point of the first node includes: the index value of the node to which the three-dimensional data point of the first node belongs in the K layer, wherein the The K-layer is one of the layers under the first node, and at the K-th layer, all three-dimensional data points in the first node fall into one node.
  • the three-dimensional data point of a node falls into the first child node of the eight nodes of a certain layer, then the coded bit for this layer can be 000, that is, the description
  • the bit of the node's octree division can be 000.
  • the value of K may be greater than or equal to M. That is to say, for the encoding end, when determining each of the two layers below a certain node, when the three-dimensional data point of the node falls within the same node, the first node Perform depth-first encoding. However, there may be a case where each layer of the three layers below the node, when the three-dimensional data points of the node fall into the same node, when encoding each layer of the three layers , Can encode the index value of the node to which the 3D data point belongs.
  • the index value of each node in the Kth layer is preset.
  • the index value of each node in the Kth layer is preset based on the location of each node. That is, the index value of each node is fixed
  • the index value of the block at the same position is fixed.
  • the index value of the upper left block is 0 (000 converted to binary)
  • the index value of the lower right block is 7 (111 converted to binary).
  • index value of the node shown in FIG. 6 is only a specific implementation manner of the embodiment of the present application, and should not be particularly limited to the embodiment of the present application.
  • the embodiment of the present application may also have other implementation manners. For example, any number from 0 to 7 can be encoded for any of the eight blocks, but the index values in 0 to 7 in a one-time encoding scheme can only be used by a block at one location, and cannot be reused.
  • the starting index values of the multiple index values corresponding to the multiple nodes in the Kth layer are determined based on the following: the at least one three-dimensional data point is on the Kth layer The node to which the layer belongs
  • the index value of the node where the node to which the previous layer belongs is at the corresponding position in the Kth layer is the starting index value.
  • a depth-first octree partitioning sub-block of the first layer adopts a fixed allocation scheme.
  • the allocation scheme refer to the scheme described in FIG. 6 above, and perform an octree on the subsequent layers.
  • the position of the sub-block with three-dimensional data points divided by the previous layer in the octree is used as the position of index 0 in the new octree replacement molecular block.
  • the previous In the layer the block before the lower right is the block with the three-dimensional data points in the previous block, then the block is further divided to obtain the cube on the right side of FIG. 7, and the index value of the block before the lower right can be 0 to determine each The index value of the block.
  • the first node is only in the lower part of the layer, and the three-dimensional data points existing in the first node fall into a child node, and in other lower layers , There will be a case where the 3D data point in the first node falls into multiple child nodes.
  • the index value cannot be encoded, because if the index value is encoded, the decoding end will not be able to In the case of decoding.
  • the child node of the first node may be encoded or decoded in a breadth-first manner at the lower layer.
  • a first identifier is set before the coded bit corresponding to the Qth layer, and the first identifier indicates that a breadth-first approach is adopted at the Qth layer. Encode the child nodes of the first node.
  • the index value can no longer be used for encoding.
  • the first identifier can be added before the bit corresponding to the first layer or all layers of the at least some layers (the bit is a bit of the child node of the first node), Instructing to encode or decode the child nodes of the first node in a breadth-first manner at the current layer (further including subsequent layers). Therefore, when acquiring the first identifier at the decoding end, the child node of the first node may be decoded in a breadth-first manner in the current layer (further including the subsequent layer).
  • the Qth layer is a layer below the Nth layer
  • the first layer encodes the child nodes of the first node in a breadth-first manner
  • the first identifier is set before the coded bit corresponding to the Q-th layer (specifically, a bit describing the division of the first node in the Q-layer octree).
  • the first identifier is set before the coded bit corresponding to the layer coded in the breadth-first manner.
  • the number of bits of the first identifier may be equal to the number of bits of the index value of each node.
  • the index value of a node may have 4 bits, and the first identifier may also have 4 bits.
  • the bit value of the first identifier may not be equal to any index value. Value, and the bit value of each node's index value is different.
  • the bit value of the first identifier is equal to the bit value of the index value of a node in each node; a first identification bit exists after the first identifier, and the first The identification bit is used to indicate that the previous bit value represents the first identifier; there is a second identification bit after the index value of the one node, and the second identification bit is used to indicate that the previous bit value represents the The index value of a node; the number of bits of the first identification bit is equal to the number of bits of the second identification bit, but the bit values are different.
  • the index value of the node can be from 000 to 111
  • the bit value of the first identifier can be 111.
  • the first identification bit after the first identifier does not belong to the first identifier and the second identification bit after the index value of a node does not belong to the index value.
  • the embodiments of the present application may also have other understandings.
  • the first identifier includes a prefix and a suffix
  • the index value of one node includes the prefix and suffix
  • the bit value of the prefix of the first identifier is equal to the bit value of the prefix of the index value of the one node
  • the number of suffix bits of the first identifier is equal to the number of suffix bits of the index value of the one node, and the value of the suffix bits of the first identifier is not equal to the suffix bits of the index value of the one node Value
  • the number of bits of the prefix of the index value of the one node is equal to the number of bits of the index value of other nodes, and the value of the prefix bits of the index value of the one node is different from the index value of other nodes.
  • the index value of a node may include an index value from 000 to 110 and 1111, and the bit value of the first identifier may be 1110, where the first three 1s in the index value 1111 are Prefix, the last 1 is the suffix, the first three 1s in the first identifier 1110 are the prefix, and the last 0 is the suffix.
  • the decoding end can determine whether the index value or the first identifier is decoded according to the suffix.
  • the first node there is only one three-dimensional data point in the first node.
  • the first node contains a three-dimensional data point
  • all the layers below the first node are not converted to breadth-first manner for the child nodes of the first node Encoding or decoding.
  • the first node when there is only one three-dimensional data point in the first node of the Nth layer, the first node is encoded or decoded in a depth-first manner. Moreover, when encoding or decoding the first node in a depth-first manner, there is no need to switch from the depth-first method to the breadth-first method for encoding or decoding. In an example, when there is only one three-dimensional data point in the first node of the Nth layer, and the side length of the first node is greater than the threshold, the first node is encoded or decoded in a depth-first manner.
  • the bit value corresponding to the K-th layer of the three-dimensional data point of the first node includes an index value, and the index value is a preset fixed value.
  • the index value is 111.
  • the number of bits of the index value of each node is the same, that is, the index of one node no longer exists in each node
  • the value includes the prefix and suffix, or, it can also be understood as: an index bit needs to be added after the index value of a node does not exist. This is because when the first node contains a three-dimensional data point, there is no need to switch from depth-first to breadth-first, and the first identifier does not need to be added to the bitstream.
  • a bit when encoding or decoding the first node in a depth-first manner, a bit may be provided before the bit used to describe the situation where the first node divides the child node , Instructing to switch from breadth-first to depth-first to encode or decode the first node.
  • a second identifier may be set before the bit used to describe the division of the first node by the child node, the second identifier indicating that the breadth-first switching to the depth-first manner is adopted.
  • the first node encodes or decodes, so that when the encoding end obtains the second identifier, it can determine to use a depth-first manner to decode the first node.
  • the second identifier may represent that all three-dimensional data points in the first node fall into the same node of the Mth layer under the first node, and the decoding end may obtain When the second identifier is reached, the first node is decoded in a depth-first manner.
  • the decoding end does not need to judge whether all three-dimensional data points in the first node fall into the same node of the Mth layer under the first node, and only needs to obtain the second identifier to use the depth Encode or decode the first node in a preferential manner.
  • the number of bits of the second identifier may be the same as the number of nodes obtained when dividing the multi-fork tree, and may specifically be multiple 0s, where 0 indicates that the corresponding node has no three-dimensional data points.
  • an octree it can be 00000000.
  • the 00000000 can be considered as the second identifier symbol.
  • the second identifier may be composed of multiple ones.
  • the one represents that the corresponding node has no three-dimensional data points.
  • the second identifier may be set before the coding bit corresponding to each first node.
  • the process of encoding or decoding the first node has been described above.
  • there may be such a node at the Nth layer and its child nodes do not fall into a child node at the Mth layer.
  • the node and its sub-nodes can be encoded in the breadth-first manner at the Nth layer and below.
  • each layer may determine whether each node of the layer satisfies the above-mentioned condition (the condition in 320), if it is not satisfied, for the corresponding node, in the current layer Use breadth-first encoding, otherwise use depth-first encoding.
  • the above conditions may be judged only on a part of layers.
  • the judgment of the above conditions may be started at the fifth level divided by the octree.
  • a second node is encoded in a breadth-first manner in at least one layer of the Nth layer and below, where the second node includes the Nth layer At least one node among the nodes below and except the first node and its child nodes.
  • the child nodes of the first node when encoding the child nodes of the second node in a breadth-first manner, the child nodes of the first node may be skipped, that is, the bitstream for breadth-first encoding may not be set The bit of the child node of the first node.
  • the first node mentioned in the embodiment of the present application may be a node that satisfies the conditions mentioned in 320, and the second node may be a node that does not satisfy the conditions mentioned in 320.
  • the condition mentioned in 320 is that all three-dimensional data points in a node fall within the same node in at least one layer below the node.
  • the first layer of the encoded bit stream can be as follows: 01100001.
  • the third child node B is found to be the first node (that is, the node that satisfies the condition mentioned in 320), the second child node A and the eighth node C It may be a node other than the first node.
  • point cloud point data exists in the first child node D and the two child nodes E.
  • the encoded bit after 01100001 can be 11000000 (representing the above 2nd child node A octree division) + 00000000 (second identifier) + depth-first coded bit for the 3rd child node B (110+ coded bit of layer below the 3rd child node B) + 00110000 (representing the above eighth child node C octree division).
  • the coding bits of the layer below the third child node B may include the bits describing the division of the octree from the third layer to the bottom layer and the number of 3D data points in each leaf node in the bottom layer Of bits.
  • the following describes the depth-first encoded bits of the third child node B.
  • the depth-first encoded bits may include 110, and then include the encoded bits of the layer below the third child node B. Since the second child node B is in the second layer The child node of is the 7th child node F with 3D data points.
  • the 7th child node F is divided in the third layer because there are point cloud points in the 1st child node I and the 5th child node K, the above The depth-first coded bit of the second child node C, the coded bit after 110 may be 1111 (the above-mentioned first identifier + an indication bit indicating 111 is the first identifier) + 10001000...
  • the third layer of breadth-first encoding can be continued.
  • the child node of the third child node B as the first node can be skipped, that is, the bit stream (11000000 (representing the second child node A Octree division) +00000000 (second identifier) + depth-first coded bit for the third child node B (110+ coded bit of the layer below the third child node B) +00110000 (represents the above 8 child node C octree division case))
  • the subsequent encoded bits no longer contain the bit of the child node of the third child node B as the first node.
  • the encoding or decoding process of any one of the first node and its child nodes and the encoding or decoding of other first nodes and their child nodes or The decoding process is parallel.
  • the encoding or decoding processing of each first node is independent of each other, the encoding or decoding processing of any one of the first node and its child nodes is different from the encoding or decoding of the other first nodes and its child nodes.
  • the decoding process can be parallel, so that the encoding or decoding efficiency can be improved.
  • the encoding or decoding processing of any one of the child nodes of the first node and the encoding or decoding processing of the other child nodes of the first node may be parallel.
  • the encoding or decoding processing of the first node and its child nodes is parallel to the following processing:
  • the encoding or decoding process of the first node and the encoding or decoding process of other nodes are independent of each other, the encoding or decoding process of the first node and its child nodes can be divided from the Nth layer
  • the encoding or decoding processes of the nodes other than the first node and its child nodes are parallel, so that the encoding or decoding efficiency can be improved.
  • the encoding or decoding processing of the child nodes of the first node is parallel to the following processing:
  • FIG. 8 shows that when there is only one 3D data point in the block, the block is encoded in a depth-first manner. This is because if there is only one 3D data point in the block, the subsequent layer , The one three-dimensional data point only falls within a sub-block, so that it can be encoded in a deep manner.
  • each sub-block corresponds to 1 bit of the binary number in turn. If there are three-dimensional data points in the sub-block, the corresponding one bit of the sub-block is represented by 1, if there is no three-dimensional data point in the sub-block, the corresponding one bit of the sub-block is represented by zero.
  • the sub-blocks with three-dimensional data points in the m-1 layer are traversed, the sub-blocks are divided into octrees, and the data distribution after the sub-block division is coded according to the same method. All the octree partitions of the m-1 layer are encoded, followed by the octree partitions of the m layer.
  • the division of the F block is converted into a priority order for encoding at this time.
  • an identifier that switches from breadth-first to depth-first may be encoded in the code stream (the identifier may preferably be 8-bit 00000000).
  • the m layer will continue to encode the m+1 layer.
  • sub-blocks that select depth-first blocks such as sub-blocks to F
  • the sub-block sub-blocks, etc. are divided into octrees, It will be skipped directly here, without repeated coding.
  • there is only one 3D data point in a block at the m+1 layer or later it will switch to the depth-first order for encoding.
  • the encoding rules are the same as those for the F block described above.
  • the input code stream to be decoded can be arithmetically decoded to decode the code stream related to the position information.
  • the code stream at the position coordinate is decoded in turn.
  • the code stream is When breadth is first, decoding is performed in order of breadth priority, and when the codestream is depth first, decoding is performed in order of depth first.
  • the reconstructed position coordinates are obtained.
  • the attribute decoding is performed to obtain the reconstructed attribute information.
  • the code stream of the three-dimensional data point set can be decoded according to the above procedure.
  • the code stream of the position coordinates is decoded, and it can be decoded in breadth-first order by default.
  • depth-first identifier for example, decoded to 8-bit 0 That is, 0000
  • the breadth-first order is used for coding, and the octree sub-blocks are divided according to the order in the layer and the 8-bit binary number is used to indicate the current block division.
  • Each sub-block It corresponds to 1 bit of 8-bit binary number in sequence. If there are three-dimensional data points in the sub-block, 1 bit corresponding to the sub-block is represented by 1, if there is no three-dimensional data point in the sub-block, 1 bit corresponding to the sub-block is represented by 0.
  • the sub-blocks with three-dimensional data points in the m-1 layer are traversed, the sub-blocks are divided into octrees, and the data distribution after the sub-block division is coded according to the same method. All the octree partitions of the m-1 layer are encoded, followed by the octree partitions of the m layer.
  • this time can be converted to the depth-first traversal order, so that the octree division of the B block will be encoded first, and then there are three-dimensional data points in the m+1 layer of the B block.
  • the number of 3D data points contained in the current leaf node block needs to be encoded.
  • the current leaf node block contains a three-dimensional data point, it can be directly encoded with a 0 to represent.
  • the current leaf node block contains more than one three-dimensional data point, suppose the current leaf node block contains n three-dimensional data points, then a 1 will be encoded first, and then the value (n-1) will be encoded.
  • the binary bitstream describing the octree division of block B and its sub-blocks is stored between the bitstream describing the octree division of block B and the binary code stream describing the octree division of block F Storage space.
  • this coding method when coding the division of the B block and the sub-blocks of the B block, the code stream information is continuously stored, and there is no need to rely on the coding information of other sibling blocks in the current layer.
  • a depth-first octree position coordinate coding scheme can be selected, or a breadth-first octree position coordinate coding scheme can also be adopted.
  • the depth-first octree position coordinate coding scheme is used for the F block, the coding process is similar to the depth-first octree position coordinate coding scheme described above for the B block.
  • the coding process is similar to the previous coding process, and the octree division of the mth layer F block will be encoded first, and then the subsequent mth layer containing three-dimensional data The octree division of the block of points. After the block coding of the mth layer is finished, the block of the m+1th layer is coded. It should be noted that when encoding to sub-blocks that select depth-first blocks, such as sub-blocks to B, since these blocks and their sub-blocks, sub-blocks of sub-blocks, etc.
  • the input code stream to be decoded is arithmetically decoded first, and the code stream related to the position information is decoded.
  • the code stream of the position coordinates is decoded sequentially.
  • the code stream is breadth
  • it is prioritized, it is decoded in the breadth priority order, and when the codestream is depth-first, it is decoded in the depth-first order.
  • the attribute decoding is performed to obtain the reconstructed attribute information. According to the above process, the decoding of the three-dimensional data point set can be realized.
  • an identifier when the breadth priority is switched to depth priority, an identifier may be added, for example, 0000000, and when the depth priority is switched to breadth priority, an identifier may be added, for example, 1111.
  • the previously described embodiment of the octree coding may also adopt a parallel implementation scheme, which will be described in detail below.
  • this parallel octree coding scheme of breadth-first and depth-first mixing will be described.
  • the breadth-first order is used for coding, and the octree sub-blocks are divided in order within a layer and the 8-bit binary number is used to indicate the current block division, each sub-block is in turn 1 bit corresponding to 8-bit binary number.
  • the 1 bit corresponding to the sub-block is represented by 1
  • the 1 bit corresponding to the sub-block is represented by 0.
  • the sub-blocks of a little cloud data point in the m-1 layer are traversed, the sub-blocks are divided into octrees, and the data distribution after the sub-block division is coded according to the same method. All the octree partitions of the m-1 layer are encoded, followed by the octree partitions of the m layer.
  • this time can be converted to the depth-first traversal order, so that the octree division of the B block will be encoded first, and then the cloud data in the m+1 layer of the B block will be encoded.
  • the octree division of the sub-block and then encode the m+2 layer of the B block... until the side length of the block is 1, that is, when it reaches the leaf node of the octree, no further division is required, and then Encode the number of point cloud data points contained in the current leaf node block.
  • the current leaf node block contains a point cloud data point, directly encode a 0 to represent.
  • the current leaf node block contains more than one point cloud data point
  • n point cloud data points
  • a 1 will be encoded first, and then the value (n-1) will be encoded. Then it will return to the mth layer, and then divide the octree sub-block of the F block, and encode the octree division of the F block. If there is a cloud data point in the sub block, the corresponding 1 bit of the sub block is represented by 1. If there is no point cloud data point in the sub-block, the corresponding 1 bit of the sub-block is represented by 0.
  • the binary bitstream describing the octree division of block B and its sub-blocks is stored between the bitstream describing the octree division of block B and the binary code stream describing the octree division of block F Storage space.
  • this coding method when coding the division of the B block and the sub-blocks of the B block, the code stream information is continuously stored, and there is no need to rely on the coding information of other sibling blocks in the current layer.
  • a depth-first octree position coordinate coding scheme can be selected, or a breadth-first octree position coordinate coding scheme can also be adopted.
  • the coding process is similar to the depth-first octree position coordinate coding scheme described above for the B block.
  • the coding process is similar to the previous coding process, and the octree division of the m-th layer F block will be encoded first, and then the subsequent m-th layer will contain the point cloud The octree division of blocks of data points. After the block coding of the mth layer is finished, the block of the m+1th layer is coded.
  • the input code stream to be decoded is first subjected to arithmetic decoding to decode the bit stream related to position information.
  • the bit stream of position coordinates is decoded in turn.
  • the stream is breadth-first
  • decoding is performed in the breadth-first order
  • the code stream is depth-first
  • decoding is performed in the depth-first order.
  • the attribute decoding is performed to obtain the reconstructed attribute information.
  • a breadth-first depth-first mixed octree coding scheme is adopted, which improves the flexibility and parallelism of the octree coding process and reduces the The granularity in the octree coding process.
  • the octree is divided into sub-blocks that contain only one point cloud data point, directly encode in the order of depth first, and directly use 3 bits to encode the index value of the block with data.
  • This scheme is to a certain extent. It also improves the compression rate of position coding.
  • the present invention can use an 8-bit 0, ie, 0000, 0000 in the code stream to perform the identification when switching the breadth-first mode to the depth-first mode.
  • the above describes how to encode the three-dimensional data point set with multi-tree coding.
  • the multi-tree coding can be the position coordinates of the three-dimensional data points.
  • the attribute information may be further encoded.
  • the attribute coding can be coded in hierarchical coding or binary coding.
  • FIGS. 10 and 11 The hierarchical coding scheme will be described below in conjunction with FIGS. 10 and 11. Among the marks in FIG. 10 and FIG. 11, the same marks as those in FIG. 1 and FIG. 2 are not explained below, and specific reference may be made to the description for FIG. 1 and FIG. 2.
  • the encoding operation of the attributes may include 142, 144, and 146; in 142, a level coding scheme (level of detail, LOD) is generated based on the position coordinates after the position coordinates are encoded; In 144, predictive coding is performed based on the hierarchical coding scheme; in 146, the result of the predictive coding is quantized.
  • LOD level of detail
  • the decoding operation of the attributes may include 252, 254, and 256; in 252, the decoded attribute code stream is inversely quantized; in 254, the position coordinates after decoding based on the position coordinates , To generate a layered decoding scheme; in 256, based on the layered coding scheme, predictive decoding.
  • the LOD layering can be performed according to the parameters configured by the LOD, in which the following layer will contain the points of the previous layer.
  • the included three-dimensional data points are P0, P5, P4, P2;
  • the included three-dimensional data points are P0, P5, P4, P2, P1, P6, P3;
  • the three-dimensional data points contained in LOD2 (layer 2) are P0, P5, P4, P2, P1, P6, P3, P9, P8, P7.
  • the layering process first select the first 3D data point in the 3D data point set data, place it at the first point in the LOD0 layer, and then start to traverse the 3D data points in sequence, calculate this point and the current layer The distance in the Cartesian coordinate system between all the points already included. If the minimum distance is greater than the distance threshold (dist2) set by the current LOD layer, this point will be drawn into the current LOD layer. In this process, the calculated distances are sorted, and the smallest number is selected. This number is determined by the number of neighbors (numberOfNeighborsInPrediction)N during prediction.
  • the number of selected reference points may be less than this number N.
  • the nearest point selected before can be used to assign weights for prediction.
  • the nearest point selected before can be used to assign weights for prediction.
  • the following can be obtained according to 1 reference point, 2 reference points up to N reference points Weight distribution plan.
  • N kinds of weight distribution schemes There are N kinds of weight distribution schemes. Among them, when one reference point is the point with the smallest distance as the reference point, then its weight is 1; when two reference points are the points with the smallest distance as the reference point , At this time, the weights will be assigned according to the distance between the two reference points and the point to be predicted.
  • the specific weight is inversely proportional to the distance. The farther the distance is, the smaller the weight is, and the weight sum is guaranteed to be 1; until N reference points, it is Select N reference points, the weight distribution method is the same as before.
  • the number of reference points can be selected. It should be noted here that the number of adjacent reference points that can be selected for a prediction point is N or less. Specifically, it will traverse the limited reference point to a maximum of 1. At this time, the residual value of the predicted value (weight multiplied by the attribute value of the corresponding position) and the actual attribute value after quantization is worth, this sum is the maximum number of reference points is 1. The cost of time will then traverse the cost when the number of limited reference points is at most 2, until the cost when the number of limited reference points is at most N, and finally choose a solution with the maximum number of reference points with minimum cost. And further encode the residual value after quantization under this scheme.
  • the header information about the attribute in the coded bitstream can describe the relevant information about the layered coding attribute, that is, the LOD, which specifically includes the selection of the near reference point (the position coordinate used to calculate the residual) when predicting at each layer
  • the number of points number of points (numberOfNeighborsInPrediction), the number of LOD layers (levelOfDetailCount), the distance threshold (dist2) on which each layer of LOD is divided, the quantization steps of each layer of LOD (quantizationSteps), the size of the dead zone of each layer of LOD (quantizationDeadZoneSizes) (That is, to quantize the residual to a residual interval of 0), wherein the last three attributes can be set for each layer of the LOD, and the attributes of each layer can be written in the stream header information.
  • the encoding of the attribute may also be encoded in a binary encoding manner.
  • the decoding of attributes can also be decoded using binary decoding.
  • FIG. 12 and FIG. 13 as those in FIG. 1 and FIG. 2 are not explained below, and specific reference may be made to the description for FIG. 1 and FIG. 2.
  • encoding by using binary encoding can simplify the encoding method and reduce the time overhead of encoding and decoding, and there is no need to add more encoding information to the code stream, thereby improving the compression rate.
  • the coding method of the binary coding in the embodiment of the present application may be a fixed-length code coding method, a truncated Rice coding method, or a K-order exponential Golomb coding method.
  • the decoding method of the binary decoding may be a fixed-length code decoding method, a truncated Rice decoding method or a K-order exponential Golomb decoding method.
  • At least two position coordinates may have the same position coordinates after quantization, and the at least two position coordinates correspond to at least two attribute values
  • the duplicate coordinates may be removed (for example, step 125 shown in FIGS. 15 and 16), that is, the position coordinates after the quantization of the at least two position coordinates are One (for example, called the first position coordinate), correspondingly, at least two values of the attribute can be merged (for example, step 135 shown in FIGS. 15 and 16) to obtain a value, for example, weighted merge.
  • the decoding end will decode a position coordinate and an attribute value for the at least two position coordinates during decoding.
  • the decoding end can decode at least two attribute values for the quantized position coordinates, so that at least two three-dimensional data points can be obtained.
  • the quantized different position coordinates may correspond to different numbers of attribute values
  • the number of corresponding attribute values can be written in the code stream for each quantized position coordinate, then the decoding end can carry according to the code stream Information to determine the number of attributes corresponding to each position coordinate.
  • the attribute code stream is continuous, and each attribute is decoded in sequence, and corresponding to the sequence of three-dimensional data points in order to achieve the correspondence between position coordinates and attributes.
  • whether the encoder removes duplicate coordinates and performs attribute merging may be preset on the encoder. For example, some encoders are preset to remove duplicate coordinates and perform attribute merging, and some encoders The preset is not to remove duplicate coordinates and not to merge attributes.
  • whether the encoder removes duplicate coordinates and performs attribute merging may also be selected by the encoder, where the encoder may determine whether to remove duplicate coordinates and attribute merging according to current encoding conditions. For example, as shown in FIG. 16, after quantization at 120, you can choose to directly encode the position coordinates in 130, and directly perform the attribute encoding in 140 without merging the attributes in 135. Alternatively, the encoder can choose to remove the duplicate coordinates in 125 after quantization at 120, then encode the position coordinates in 130, and merge the attributes in 135 first, and then encode the attributes in 140.
  • the breadth-first way is used to encode or decode the Nth layer of the multi-fork tree, and all the point clouds of one of the nodes in the Nth layer fall to the same node in the layer below
  • the node is encoded or decoded in a depth-first manner, which enables flexible encoding of the node, thereby improving encoding performance.
  • the above three-dimensional data point may be any point cloud point in the point cloud data acquired by the distance measuring device.
  • the distance measuring device may be an electronic device such as a laser radar or a laser distance measuring device.
  • the distance measuring device is used to sense external environment information, for example, distance information, azimuth information, reflection intensity information, speed information, etc. of the environmental target.
  • One point cloud point may include at least one of the external environment information measured by the distance measuring device.
  • each time the ranging device acquires a certain number of three-dimensional data points a data packet is generated according to the certain number of three-dimensional data points.
  • the encoding/decoding method of the three-dimensional data point set provided in the present invention can be applied to encoding/decoding three-dimensional data points in a data packet.
  • the distance measuring device can detect the distance between the detecting object and the distance measuring device by measuring the time of light propagation between the distance measuring device and the detection object, that is, Time-of-Flight (TOF).
  • TOF Time-of-Flight
  • the distance measuring device can also detect the distance between the detected object and the distance measuring device through other techniques, such as a distance measuring method based on phase shift measurement or a distance measuring method based on frequency shift measurement. There are no restrictions.
  • the scanning trajectory of the distance measuring device changes with time. In this way, as the scanning time accumulates, the three-dimensional data points scanned by the distance measuring device in the field of view are more and more densely distributed in the field of view.
  • the distance measuring device that generates the three-dimensional data points mentioned herein will be described as an example in conjunction with the distance measuring device 1100 shown in FIG. 17.
  • the distance measuring device 1100 may include a transmitting circuit 1110, a receiving circuit 1120, a sampling circuit 1130, and an arithmetic circuit 1140.
  • the transmitting circuit 1110 may transmit a sequence of light pulses (for example, a sequence of laser pulses).
  • the receiving circuit 1120 can receive the optical pulse sequence reflected by the detected object, and photoelectrically convert the optical pulse sequence to obtain an electrical signal, which can be output to the sampling circuit 1130 after processing the electrical signal.
  • the sampling circuit 1130 may sample the electrical signal to obtain the sampling result.
  • the arithmetic circuit 1140 may determine the distance between the distance measuring device 1100 and the detected object based on the sampling result of the sampling circuit 1130.
  • the distance measuring device 1100 may further include a control circuit 1150, which may control other circuits, for example, may control the working time of each circuit and/or set parameters for each circuit.
  • a control circuit 1150 may control other circuits, for example, may control the working time of each circuit and/or set parameters for each circuit.
  • the distance measuring device shown in FIG. 17 includes a transmitting circuit, a receiving circuit, a sampling circuit, and an arithmetic circuit for emitting a beam of light for detection
  • the embodiments of the present application are not limited thereto, and the transmitting circuit
  • the number of any one of the receiving circuit, the sampling circuit, and the arithmetic circuit may also be at least two, for emitting at least two light beams in the same direction or respectively in different directions; wherein, the at least two light paths may be simultaneously
  • the shot may be shot at different times.
  • the light-emitting chips in the at least two emission circuits are packaged in the same module.
  • each emitting circuit includes a laser emitting chip, and the die in the laser emitting chips in the at least two emitting circuits are packaged together and housed in the same packaging space.
  • the distance measuring device 1100 may further include a scanning module 1160 for changing the propagation direction of at least one laser pulse sequence emitted from the transmitting circuit.
  • the module including the transmitting circuit 1110, the receiving circuit 1120, the sampling circuit 1130, and the arithmetic circuit 1140, or the module including the transmitting circuit 1110, the receiving circuit 1120, the sampling circuit 1130, the arithmetic circuit 1140, and the control circuit 1150 can be called a measurement
  • the distance measuring module 1150 may be independent of other modules, for example, the scanning module 1160.
  • a coaxial optical path may be used in the distance measuring device, that is, the light beam emitted by the distance measuring device and the reflected light beam share at least part of the optical path in the distance measuring device.
  • the distance measuring device may also adopt an off-axis optical path, that is, the light beam emitted from the distance measuring device and the reflected light beam are respectively transmitted along different optical paths in the distance measuring device.
  • 18 shows a schematic diagram of an embodiment of the distance measuring device of the present invention using a coaxial optical path.
  • the distance measuring device 1200 includes a distance measuring module 1201.
  • the distance measuring module 1210 includes a transmitter 1203 (which may include the above-mentioned transmitting circuit), a collimating element 1204, and a detector 1205 (which may include the above-mentioned receiving circuit, sampling circuit, and arithmetic circuit) and Optical path changing element 1206.
  • the ranging module 1210 is used to emit a light beam, and receive back light, and convert the back light into an electrical signal.
  • the transmitter 1203 may be used to transmit a sequence of light pulses.
  • the transmitter 1203 may emit a sequence of laser pulses.
  • the laser beam emitted by the transmitter 1203 is a narrow-bandwidth beam with a wavelength outside the visible light range.
  • the collimating element 1204 is disposed on the exit optical path of the emitter, and is used to collimate the light beam emitted from the emitter 1203, and collimate the light beam emitted from the emitter 1203 into parallel light to the scanning module.
  • the collimating element is also used to converge at least a part of the return light reflected by the detection object.
  • the collimating element 204 may be a collimating lens or other element capable of collimating the light beam.
  • the optical path changing element 1206 is used to combine the transmitting optical path and the receiving optical path in the distance measuring device before the collimating element 1204, so that the transmitting optical path and the receiving optical path can share the same collimating element, so that the optical path More compact.
  • the emitter 1203 and the detector 1205 may respectively use respective collimating elements, and the optical path changing element 1206 is disposed on the optical path behind the collimating element.
  • the light path changing element can use a small area mirror to The transmitting optical path and the receiving optical path are combined.
  • the light path changing element may also use a reflector with a through hole, where the through hole is used to transmit the outgoing light of the emitter 1203, and the reflector is used to reflect the return light to the detector 1205. In this way, the support of the small mirror can block the return light in the case of the small mirror.
  • the optical path changing element is offset from the optical axis of the collimating element 1204. In some other implementations, the optical path changing element may also be located on the optical axis of the collimating element 204.
  • the distance measuring device 200 further includes a scanning module 1202.
  • the scanning module 1202 is placed on the exit optical path of the distance measuring module 1201.
  • the scanning module 1202 is used to change the transmission direction of the collimated light beam 1219 emitted through the collimating element 1204 and project it to the external environment, and project the return light to the collimating element 1204. .
  • the returned light is converged on the detector 1205 via the collimating element 1204.
  • the scanning module 1202 may include at least one optical element for changing the propagation path of the light beam, wherein the optical element may change the propagation path of the light beam by reflecting, refracting, diffracting, etc. the light beam.
  • the scanning module 202 includes a lens, a mirror, a prism, a galvanometer, a grating, a liquid crystal, an optical phased array (Optical Phased Array), or any combination of the above optical elements.
  • at least part of the optical element is moving, for example, the at least part of the optical element is driven to move by a driving module, and the moving optical element can reflect, refract or diffract the light beam to different directions at different times.
  • multiple optical elements of the scanning module 1202 may rotate or vibrate about a common axis 1209, and each rotating or vibrating optical element is used to continuously change the direction of propagation of the incident light beam.
  • the multiple optical elements of the scanning module 1202 may rotate at different rotation speeds, or vibrate at different speeds.
  • at least part of the optical elements of the scanning module 1202 can rotate at substantially the same rotational speed.
  • the multiple optical elements of the scanning module may also rotate around different axes.
  • the multiple optical elements of the scanning module may also rotate in the same direction, or rotate in different directions; or vibrate in the same direction, or vibrate in different directions, which is not limited herein.
  • the scanning module 1202 includes a first optical element 1214 and a driver 1216 connected to the first optical element 1214.
  • the driver 1216 is used to drive the first optical element 1214 to rotate about a rotation axis 1209 to change the first optical element 1214 The direction of the collimated beam 1219.
  • the first optical element 1214 projects the collimated light beam 1219 to different directions.
  • the angle between the direction of the collimated light beam 1219 changed by the first optical element and the rotation axis 109 changes as the first optical element 1214 rotates.
  • the first optical element 1214 includes a pair of opposed non-parallel surfaces through which the collimated light beam 1219 passes.
  • the first optical element 1214 includes a prism whose thickness varies along at least one radial direction.
  • the first optical element 1214 includes a wedge-angle prism, which refracts the collimated beam 1219.
  • the scanning module 1202 further includes a second optical element 1215.
  • the second optical element 1215 rotates about a rotation axis 1209.
  • the rotation speed of the second optical element 1215 is different from the rotation speed of the first optical element 1214.
  • the second optical element 1215 is used to change the direction of the light beam projected by the first optical element 1214.
  • the second optical element 1215 is connected to another driver 1217, and the driver 1217 drives the second optical element 1215 to rotate.
  • the first optical element 1214 and the second optical element 1215 may be driven by the same or different drivers, so that the rotation speed and/or rotation of the first optical element 1214 and the second optical element 1215 are different, thereby projecting the collimated light beam 1219 to the outside space Different directions can scan a larger spatial range.
  • the controller 1218 controls the drivers 1216 and 1217 to drive the first optical element 1214 and the second optical element 1215, respectively.
  • the rotation speeds of the first optical element 1214 and the second optical element 1215 can be determined according to the area and pattern expected to be scanned in practical applications.
  • Drives 1216 and 1217 may include motors or other drives.
  • the second optical element 1215 includes a pair of opposed non-parallel surfaces through which the light beam passes. In one embodiment, the second optical element 1215 includes a prism whose thickness varies along at least one radial direction. In one embodiment, the second optical element 1215 includes a wedge angle prism.
  • the scanning module 1202 further includes a third optical element (not shown) and a driver for driving the third optical element to move.
  • the third optical element includes a pair of opposed non-parallel surfaces through which the light beam passes.
  • the third optical element includes a prism whose thickness varies along at least one radial direction.
  • the third optical element includes a wedge angle prism. At least two of the first, second and third optical elements rotate at different rotational speeds and/or turns.
  • each optical element in the scanning module 1202 can project light into different directions, such as directions 1211 and 1213, so as to scan the space around the distance measuring device 1200.
  • FIG. 19 is a schematic diagram of a scanning pattern of the distance measuring device 1200. It can be understood that when the speed of the optical element in the scanning module changes, the scanning pattern will also change accordingly.
  • the detection object 1202 When the light 1211 projected by the scanning module 1202 hits the detection object 1201, a part of the light is reflected by the detection object 1201 to the distance measuring device 1200 in a direction opposite to the projected light 1211.
  • the returned light 1212 reflected by the detection object 1201 passes through the scanning module 1202 and enters the collimating element 1204.
  • the detector 1205 and the emitter 1203 are placed on the same side of the collimating element 1204.
  • the detector 1205 is used to convert at least part of the returned light passing through the collimating element 1204 into an electrical signal.
  • each optical element is coated with an antireflection coating.
  • the thickness of the AR coating is equal to or close to the wavelength of the beam emitted by the emitter 1203, which can increase the intensity of the transmitted beam.
  • a filter layer is plated on the surface of an element on the beam propagation path in the distance measuring device, or a filter is provided on the beam propagation path to transmit at least the wavelength band of the beam emitted by the transmitter, Reflect other bands to reduce the noise caused by ambient light to the receiver.
  • the transmitter 1203 may include a laser diode through which laser pulses in the order of nanoseconds are emitted.
  • the laser pulse receiving time may be determined, for example, by detecting the rising edge time and/or the falling edge time of the electrical signal pulse. In this way, the distance measuring device 1200 can use the pulse reception time information and the pulse emission time information to calculate the TOF, thereby determining the distance between the probe 1201 and the distance measuring device 1200.
  • the distance and orientation detected by the distance measuring device 1200 can be used for remote sensing, obstacle avoidance, mapping, modeling, navigation, and the like.
  • the distance measuring device of the embodiment of the present invention can be applied to a mobile platform, and the distance measuring device can be installed on the platform body of the mobile platform.
  • a mobile platform with a distance measuring device can measure the external environment, for example, measuring the distance between the mobile platform and obstacles for obstacle avoidance and other purposes, and performing two-dimensional or three-dimensional mapping on the external environment.
  • the mobile platform includes at least one of an unmanned aerial vehicle, a car, a remote control car, a robot, and a camera.
  • the distance measuring device is applied to an unmanned aerial vehicle, the platform body is the fuselage of the unmanned aerial vehicle.
  • the platform body When the distance measuring device is applied to an automobile, the platform body is the body of the automobile.
  • the car may be a self-driving car or a semi-automatic car, and no restriction is made here.
  • the platform body When the distance measuring device is applied to a remote control car, the platform body is the body of the remote control car.
  • the platform body When the distance measuring device is applied to a robot, the platform body is a robot.
  • the distance measuring device is applied to a camera, the platform body is the camera itself.
  • FIG. 20 is a schematic block diagram of a device 400 for three-dimensional data point set processing according to an embodiment of the present application.
  • the three-dimensional data point set is divided in a multi-fork tree manner, and the device 400 includes:
  • the first encoding or decoding unit 410 is configured to encode or decode the Nth layer of the multi-tree in a breadth-first manner
  • the second encoding or decoding unit 420 is used to adopt depth when all three-dimensional data points in the first node of the Nth layer fall within the same node of the Mth layer under the first node Encode or decode the first node in a preferential manner; N is an integer greater than or equal to 0, and M is an integer greater than or equal to 1.
  • bit values corresponding to the K-th layer of the three-dimensional data points of the first node include:
  • the index value of each node in the Kth layer is preset; or,
  • the starting index values of the multiple index values corresponding to the multiple nodes in the Kth layer are determined based on the following: the node to which the at least one three-dimensional data point belongs to the layer above the Kth layer.
  • the index value of each node in the Kth layer is preset based on the location of each node
  • the index value of the node where the node to which the upper layer belongs is at the corresponding position in the Kth layer is the starting index value.
  • the second encoding or decoding unit 420 is specifically used to:
  • the device is used for an encoding end, and the second encoding or decoding unit 420 is further used for:
  • a first identifier is set before the bit corresponding to the Qth layer, and the first identifier indicates that a breadth-first manner is used in the Qth layer to encode or decode the child nodes of the first node.
  • the device is used for a decoding end, and the second encoding or decoding unit 420 is further used for:
  • the first identifier is acquired before the bit corresponding to the Qth layer, in the Qth layer, a child node of the first node is decoded in a breadth-first manner, and the first identifier Instructing the Q-layer to use a breadth-first approach to encode or decode the child nodes of the first node.
  • the first layer in the layer where the Qth layer is below the Nth layer, the first layer to encode or decode the child nodes of the first node in a breadth-first manner At this time, the first identifier is set before the bit corresponding to the Qth layer.
  • the first identifier includes a prefix and a suffix
  • the index value of a node includes the prefix and the suffix
  • the bit value of the prefix of the first identifier is equal to the bit value of the prefix of the index value of the one node
  • the number of suffix bits of the first identifier is equal to the number of suffix bits of the index value of the one node, and the value of the suffix bits of the first identifier is not equal to the suffix bits of the index value of the one node Value
  • the number of bits of the prefix of the index value of the one node is equal to the number of bits of the index value of other nodes, and the value of the bits of the prefix of the index value of the one node is different from the index value of other nodes.
  • the device is used for an encoding end, and the second encoding or decoding unit 420 is further used for:
  • a second identifier is set, and the second identifier indicates that the first node is encoded or decoded by switching from breadth-first to depth-first.
  • the device is used for a decoding end, and the second encoding or decoding unit 420 is used for:
  • the first node is decoded in a depth-first manner; wherein, the second identifier indicates that the slave breadth is adopted
  • the first node is preferentially switched to a depth-first manner to encode or decode the first node.
  • a second identifier is acquired before the bit describing the division of the child node by the first node to represent that all three-dimensional data points in the first node fall under the first node Within the same node of layer M.
  • the second identifier is a plurality of zeros or ones, and the number of zeros or ones is equal to the number of nodes of the Nth layer.
  • the first encoding or decoding unit 410 is further used to:
  • the child nodes of the second node are encoded or decoded, wherein the second node includes the nodes of the Nth layer except the first Any node other than a node.
  • the first encoding or decoding unit 410 is further used to:
  • the encoding process of any one of the first node and its child nodes is different from that of the other first nodes and their The encoding or decoding processing of child nodes is parallel.
  • the encoding or decoding processing of the first node and its child nodes is parallel to the following processing:
  • the octree encodes or decodes the position coordinates of the three-dimensional data point set.
  • the device 400 further includes a third encoding or decoding unit 430, which is used to:
  • the multi-fork tree is an octree.
  • the device 800 may be used to implement the corresponding operations implemented by the decoding end in the above method, and for the sake of brevity, details are not described here.
  • FIG. 21 shows a schematic block diagram of a computer system 500 according to an embodiment of the present application.
  • the computer system 500 may include a processor 510, and further may include a memory 520.
  • computer system 500 may also include components generally included in other computer systems, such as input and output devices, communication interfaces, and the like, which are not limited in the embodiments of the present application.
  • the memory 520 is used to store computer executable instructions.
  • the memory 520 may be various types of memory, for example, may include a high-speed random access memory (Random Access Memory, RAM), and may also include a non-volatile memory (non-volatile memory), such as at least one disk memory, implemented in this application Examples are not limited to this.
  • RAM Random Access Memory
  • non-volatile memory such as at least one disk memory
  • the processor 510 is used to access the memory 520 and execute the computer-executable instructions to perform the operations in the method for three-dimensional data point set processing according to the embodiment of the present application described above.
  • the processor 510 may include a microprocessor, a field-programmable gate array (Field-Programmable Array, FPGA), a central processor (Central Processing Unit, CPU), a graphics processor (Graphics Processing Unit, GPU), etc., implemented in this application Examples are not limited to this.
  • a microprocessor a field-programmable gate array (Field-Programmable Array, FPGA), a central processor (Central Processing Unit, CPU), a graphics processor (Graphics Processing Unit, GPU), etc., implemented in this application Examples are not limited to this.
  • the device and computer system for processing a three-dimensional data point set according to an embodiment of the present application may correspond to the execution subject of the method for processing a three-dimensional data point set according to an embodiment of the present application, and the device and computer for processing a three-dimensional data point set
  • the above and other operations and/or functions of each module in the system are respectively for implementing the corresponding processes of the foregoing methods, and for the sake of brevity, they are not repeated here.
  • An embodiment of the present application also provides an electronic device.
  • the electronic device may include the above-mentioned various embodiments of the present application for a three-dimensional data point set processing device or a computer system.
  • An embodiment of the present application further provides a computer storage medium, and the computer storage medium stores program code, and the program code may be used to instruct to execute the method for three-dimensional data point set processing in the embodiment of the present application.
  • association relationship describing an association object, and indicates that there may be three types of relationships.
  • a and/or B may indicate that there are three cases in which A exists alone, A and B exist simultaneously, and B exists alone.
  • character “/” in this article generally indicates that the related objects before and after it are in an “or” relationship.
  • the disclosed system, device, and method may be implemented in other ways.
  • the device embodiments described above are only schematic.
  • the division of the unit is only a logical function division, and there may be other divisions in actual implementation, for example, multiple units or components may be combined or Can be integrated into another system, or some features can be ignored, or not implemented.
  • the displayed or discussed mutual couplings or direct couplings or communication connections may be indirect couplings or communication connections through some interfaces, devices, or units, and may also be electrical, mechanical, or other forms of connection.
  • the units described as separate components may or may not be physically separated, and the components displayed as units may or may not be physical units, that is, they may be located in one place or may be distributed on multiple network units. Some or all of the units may be selected according to actual needs to achieve the objectives of the solutions of the embodiments of the present application.
  • each functional unit in each embodiment of the present application may be integrated into one processing unit, or each unit may exist alone physically, or two or more units are integrated into one unit.
  • the above integrated unit can be implemented in the form of hardware or software function unit.
  • the integrated unit is implemented in the form of a software functional unit and sold or used as an independent product, it may be stored in a computer-readable storage medium.
  • the technical solution of the present application essentially or part of the contribution to the existing technology, or all or part of the technical solution can be embodied in the form of a software product
  • the computer software product is stored in a storage medium
  • several instructions are included to enable a computer device (which may be a personal computer, server, or network device, etc.) to perform all or part of the steps of the methods described in the embodiments of the present application.
  • the aforementioned storage media include: U disk, mobile hard disk, read-only memory (ROM, Read-Only Memory), random access memory (RAM, Random Access Memory), magnetic disk or optical disk and other media that can store program code .

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Electromagnetism (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

一种用于三维数据点集处理的方法和设备,可以提高对三维数据点集进行编码的灵活性,从而可以提高编码性能。所述方法包括:对所述多叉树的第N层采用广度优先的方式进行编码或解码(310);在所述第N层的第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;其中,N和M为大于或等于1的整数(320)。

Description

用于三维数据点集处理的方法和设备
版权申明
本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。
技术领域
本申请涉及信息处理领域,并且更具体地,涉及一种用于三维数据点集处理的方法和设备。
背景技术
三维数据点集是三维物体或场景的一种表现形式,是由空间中一组无规则分布、表达三维物体或场景的空间结构和表面属性的离散点所构成,一个三维数据集点的数据可以包括描述坐标信息的三维坐标,以及进一步包括该位置坐标的属性。为了准确反映空间中的信息,所需离散点的数目是巨大的。
为了减少三维数据点集数据存储和传输时所占用的带宽,需要对三维数据点集进行编码压缩处理。
如何提高对三维数据点集进行编码的编码性能是一项亟待解决的问题。
发明内容
本申请实施例提供一种用于三维数据点集处理的方法和设备,可以提高对三维数据点集进行编码的灵活性,从而可以提高编码性能。
第一方面,提供了一种用于三维数据点集处理的方法,所述三维数据点集采用多叉树的方式进行划分,所述方法包括:
对所述多叉树的第N层采用广度优先的方式进行编码或解码;
在所述第N层的第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;其中,N和M为大于或等于1的整数。
第二方面,提供了一种用于三维数据点集处理的设备,所述三维数据点集采用多叉树的方式进行划分,所述设备包括:
第一编码或解码单元,用于对所述多叉树的第N层采用广度优先的方式进行编码或解码;
第二编码或解码单元,用于在所述第N层的第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;其中,N和M为大于或等于1的整数。
第三方面,提供了一种计算机系统,包括:存储器,用于存储计算机可执行指令;处理器,用于访问该存储器,并执行该计算机可执行指令,以进行上述第一方面的方法中的操作。
第四方面,提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码可以用于指示执行上述第一方面的方法。
第五方面,提供了一种计算机程序产品,该程序产品包括程序代码,该程序代码可以用于指示执行上述第一方面的方法。
在本申请实施例中,采用广度优先的方式对多叉树的第N层进行编码或解码,并在第N层的其中一个节点的全部点云点落入到之下的层中的同一节点内的情况下,采用深度优先的方式对该节点进行编码或解码,实现了对节点的灵活编码,从而提高了编码性能。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1根据本申请实施例的一种对三维数据点集进行编码的方法的示意性框图。
图2根据本申请实施例的一种对三维数据点集进行解码的方法的示意性框图。
图3是根据本申请实施例的立方体八叉树划分的示意性图。
图4是根据本申请实施例的一种八叉树编码方案的示意性图。
图5是根据本申请实施例的一种用于三维数据点集处理的方法的示意性流程图。
图6是根据本申请实施例的一种节点索引的示意性图。
图7是根据本申请实施例的另一种节点索引的示意性图
图8是根据本申请实施例的另一种八叉树编码方案的示意性图。
图9是根据本申请实施例的另一种八叉树编码方案的示意性图。
图10根据本申请实施例的另一种对三维数据点集进行编码的方法的示意性框图。
图11根据本申请实施例的另一种对三维数据点集进行解码的方法的示意性框图。
图12是层次编码方案(level of detail,LOD)分层结构示意性图。
图13根据本申请实施例的另一种对三维数据点集进行编码的方法的示意性框图。
图14根据本申请实施例的另一种对三维数据点集进行解码的方法的示意性框图。
图15根据本申请实施例的另一种对三维数据点集进行解码的方法的示意性框图。
图16根据本申请实施例的另一种对三维数据点集进行解码的方法的示意性框图。
图17是根据本申请实施例的一种测距装置的示意性图。
图18是根据本申请实施例的一种测距装置的示意性图。
图19是根据本申请实施例的一种扫描图案的示意性图。
图20是根据本申请实施例的一种用于三维数据点集处理的设备的示意性框图。
图21是根据本申请实施例的一种计算机系统的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
除非另有说明,本申请实施例所使用的所有技术和科学术语与本申请的技术领域的技术人员通常理解的含义相同。本申请中所使用的术语只是为了 描述具体的实施例的目的,不是旨在限制本申请的范围。
三维数据点集可以由离散的三维数据点构成,每个三维数据点的数据可以包括描述该三维数据点的位置坐标的信息,以及进一步可以包括属性的信息。其中,三维数据点的位置坐标可以为三维位置坐标(x,y,z)。三维数据点的属性可以包括三维数据点的反射率和/或颜色等。
本申请实施例提到的三维数据点集可以为点云,相应地,三维数据点可以为点云点。本申请实施例提到的三维数据点集可以用于高精3D地图。
本申请实施例中的三维数据点集可以是光探测装置对待探测物体进行光探测(例如激光探测)所得到。该光探测装置诸如可以为光电雷达、或激光雷达等。本申请实施例中的编码器可以集成于光探测装置中。
为了准确反映空间的信息,三维数据点集包括的三维数据点的数量通常是较大的。为了减少三维数据点集数据存储和传输时所占用的带宽,需要对三维数据点集数据进行编码压缩处理。以下将结合图1至图2描述如何对三维数据点集进行编码和解码处理。
如图1所示的编码方法,在110中,向编码器中输入三维数据点集的数据;在120中,对三维数据点集的数据中的位置坐标进行量化,例如,可以根据位置坐标在三个轴的最大值、最小值之间的差值,以及根据输入参数确定的量化精度,对每个三维数据点的位置坐标进行量化,将输入的三维数据点的位置坐标转换为大于等于零的整数坐标;在130中,对量化后的位置坐标进行位置坐标编码;在140中,按照位置坐标编码后的位置坐标的顺序,对三维数据点集的数据中的属性进行属性编码;在150中,对位置坐标编码后得到的码流以及属性编码后得到的码流进行熵编码;在160中,输出编码后的三维数据点集的数据,例如,可以输出到存储器中进行存储,或者,可以传送到解码端。
以及,如图2所示的解码方法,在210中,获取三维数据点集的待解码码流,例如,可以从存储器中获取该码流,或者获取编码端传送的该码流;在220中,对该码流进行熵解码,可以得到位置坐标对应的码流和属性对应的码流;在230中,对位置坐标对应的码流进行位置坐标解码;在240中,对解码后的位置坐标进行逆量化;在250中,可以按照解码后的位置坐标的顺序,对属性进行解码;260,根据解码后的属性以及位置坐标,得到解码 后的三维数据点集的数据。
应理解,以上提到了三维数据点的数据可以包括属性的信息,但应理解,本申请实施例中,三维数据点的数据也可以不包括属性的信息,仅包括位置坐标的信息。
在对三维数据点的位置坐标进行编码或解码时,可以采用多叉树的方式进行编码或解码。其中,本申请实施例提到的多叉树可以是八叉树、四叉树、二叉树或是其中两种叉树的两两混合,或是三种叉树的混合。
其中,在进行多叉树编码时,可以在各层,对相应的节点进行多叉树的划分,并利用比特体现该节点的多叉树的划分情况,具体可以是节点划分得到各个子节点中的数据存在情况。
相应地,在进行多叉树解码时,在各层,可以获取对应的比特,根据获取的比特对相应的节点进行多叉树的划分。
对于编码端而言,进行多叉树划分时,每层多叉树的划分可以利用当前节点的中心点的坐标进行子节点的划分,通过中心点将当前节点划分为多个子节点,然后可以判断每个子节点内是否存在三维数据点,对存在三维数据点的子节点会再进一步进行划分,直至子节点划分至预设大小,例如,可以划分到边长为1的子节点时停止划分。
例如,以八叉树划分为例,如图3所示,是一个节点划分为8个子节点的划分方式,如图4所示的为节点逐层划分的示意性图。
在进行多叉树编码或解码时,可以采用广度优先的方式进行编码。
例如,在对三维数据点的位置坐标进行压缩编码时,可以按照八叉树的广度优先遍历顺序,逐层进行编码,逐层逐个编码每个八叉树的划分情况。以及,对每个节点进行八叉树划分后得到的八个子节点可以判断是否含有三维数据点,如果含有三维数据点则会进一步进行划分,直至子节点划分至预设大小。
以下以八叉树编码为例,结合图4描述如何采用广度优先的方式进行编码。
以图4为例,图中黑色方块表示当前子节点内含有三维数据点,白色方块表示当前子块内不含有三维数据点。在对根节点进行八叉树划分时,依次判断每个子节点内是否含有三维数据点,以图4中的第一层为例,第一次划分的八叉树中第三个节点含有三维数据点,剩余七个节点不含有三维数据 点,则这样的划分可以用8比特来表示,具体为0010 0000。接着可以对含有数据点的子节点接着进行划分,即图4中的第二层划分,在第二层中,第三个节点与第八个节点内含有三维数据点,则这次八叉树划分可以用0010 0001来表示。接着,可以依次对这两个有三维数据点的子节点进行划分。其中,可以按照广度优先的顺序进行进一步划分。在第三层首先划分左边的子节点,划分结果如图4中第三层左半部分所示,第一个子节点和第四个子节点内含有三维数据点,则这次八叉树划分可以用1001 0000进行表示。接着对第二层的第二个有三维数据点的子节点进行划分,划分结果如图4中第三层右半部分所示,第二个子节点和第八个子节点内含有三维数据点,则这次八叉树划分可以用0100 0001所表示。后面层的划分与前面描述相似,按照广度优先遍历的顺序逐层进行划分。
图4中的划分结果对应的二进制码流为0010 0000 0010 0001 1001 0000 0100 0001……。当划分到最后一层,即子块的边长为1的时候,此时已经到达八叉树划分的最深位置,即到达了当前八叉树的叶子节点,不需要再进一步划分,接着需要编码当前叶子节点内含有的三维数据点的数目。当当前叶子节点内含有一个三维数据点时,直接编码一个0进行表示。当当前叶子节点内含有不止一个三维数据点时,可以设当前叶子节点内含有n个三维数据点,此时会先编码一个1,接着编码数值(n-1)。
其中,可以依次将前面编码表示八叉树划分的二进制比特流逐比特送入算术编码引擎中进行算术编码,接着将表示叶子节点内含有三维数据点数目的二进制比特流送入算术编码引擎中进行算术编码。根据上述流程即可以实现对点云数据中的位置坐标的编码。
随着编码技术的发展,对三维数据点集的编码性能的要求越来越高。如何提高多叉树编码的性能是一项亟待解决的问题。
图5是根据本申请实施例对三维数据点集处理的示意性图。其中,该三维数据点集可以采用多叉树的方式进行编码或解码。该方法可以由编码端实现,也可以由解码端实现。该方法可以包括以下内容中的至少部分内容。
在310中,对多叉树的第N层采用广度优先的方式进行编码或解码。
在320中,在所述第N层的第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;其中,N可以大于或等于0,M为大于或等于1 的整数。其中,第M层与第N层中的N和M的计数起始点(均是从根节点进行计数)是相同的,也即是以相同的层进行计数的。此时,可以意味着M的取值大于N。一些示例中,八叉树的划分深度可以等于M或者大于M。一些示例中,第M层可以是叶子节点。
或者,一些示例中,上述第M层也可以理解为从第N层作为计数起点0进行计数的。例如,第N层是第2层,则第M层可以是第一节点之下的第一层,也即,八叉树的第三层。一些示例中,八叉树的深度可以等于N+M(第M层可以是叶子节点),也可以大于N+M。
可选地,本申请实施例中根节点可以是八叉树的第0层。
应理解,在本申请实施例中,“在所述第N层的第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码”的表述中的“在所述第N层的第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内的情况下”可以是指第一节点中的全部三维数据点是落入到第M层的同一节点内的,而该方法的执行主体可以具有判断“所述第N层的第一节点中的全部三维数据点是否落入到所述第一节点下的第M层的同一个节点内”的动作,也可以不具有判断“所述第N层的第一节点中的全部三维数据点落是否入到所述第一节点下的第M层的同一个节点内”的动作。
例如,对于编码端而言,可以具有判断“所述第N层的第一节点中的全部三维数据点是否落入到所述第一节点下的第M层的同一个节点内”的动作;而对于解码端而言,可以不具有判断“所述第N层的第一节点中的全部三维数据点是否落入到所述第一节点下的第M层的同一个节点内”的动作。
应理解,上述提到在第N层采用广度优先的方式进行编码或解码,但本申请实施例并不限于此,在对三维数据点集的编码或解码过程中,也可以在第一层即采用深度优先的方式进行编码。例如,在第一层,所有的三维数据点均落入到划分后的节点中的一个节点内,则此时,可以采用深度优先的方式对三维数据点进行编码。
可选地,在本申请实施例中,上述“采用深度优先的方式对所述第一节点进行编码或解码”可以理解为采用将广度优先的方式切换为深度优先的方式对第一节点进行编码或解码,如果在第一层即采用深度优先的方式进行编码或解码,则“采用将广度优先的方式切换为深度优先的方式对第一节点进 行编码解码”可以理解为系统默认的是初始要采用广度优先的方式进行编码或解码的,只是由于满足了一定条件,才转为深度优先的方式进行编码或解码的。
还应理解,在本申请实施例中,在满足某一条件时,执行某某动作并不代表着只要满足该某一条件,就必须要执行该某某动作,只是代表着执行该某某动作之前需要满足该某一条件,也有可能需要判断其他的条件需要得到满足。
可选地,本申请实施例中的节点可以称为块,子节点可以称为子块。本申请实施例中的节点(或块)和子节点(或子块)是相对的概念。例如,对于第N层而言,该层的一个节点可以是上一层(或上多层)的子节点,以及可以是下一层的父节点。
可选地,在本申请实施例中,在某个层进行广度优先的方式进行编码或解码可以是指在编码或解码完该层的指定范围内的多个节点的情况下,再编码下一层的节点,其中,该指定范围内的多个节点可以是指多叉树编码过程中一个层的全部节点,也可以是上一个或多个层的节点中的子节点,也可以是除以下节点之外的节点:被采用深度优先的方式编码或解码的节点和/或其子节点。
可选地,在本申请实施例中,对节点进行深度优先的方式进行编码或解码可以是指该节点在当前层以及当前层之下层的编码比特(可以是反映多叉树划分情况的比特,以及可以进一步包括描述叶子节点中包括的点云点的数量的比特)中未穿插有其他节点的比特,也就是该节点及其子节点的比特是连续的,聚集在一起的。
应理解,本申请实施例中提到的广度优先或深度优先也可以具有其他的名称,例如,广度或深度等。
可选地,在本申请实施例中,某一层的节点可以理解为在该层中还未被进行多叉树划分的节点,对该层进行多叉树划分,可以理解为对该层的具有三维数据点的节点进行多个子节点的划分。
可选地,在本申请实施例中,上述第M层可以与第N层相差一层,也可以相差多层,也就是说,所述第N层的第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点,可以理解为在判断当前层的某一节点的三维数据点在该N层之下的多层中的每一层均落入了一个节点中。
可选地,在本申请实施例中,由于一个节点的三维数据点可以落入到其下某一层的同一个子节点内,所以在针对该节点在该层进行编码时,可以只需编码该一个子节点的索引值。其中,索引值的取值可以从0开始,按照1依次累加。例如,八叉树的各个节点的索引值可以为000、001、010、011、100、101、110、111。
具体地,所述第一节点的三维数据点在第K层对应的比特取值包括:所述第一节点的三维数据点在所述K层中所属的节点的索引值,其中,所述第K层为所述第一节点下的其中一层,且在所述第K层,所述第一节点中的全部三维数据点落入到一个节点内。
以八叉树编码为例,一个节点的三维数据点落入到某一层的八个节点中的第一个子节点,则此时针对该层的编码比特可以为000,也就是说,描述该节点的八叉树划分情况的比特可以为000。
应理解,在本申请实施例中,上述K的取值可以大于或等于上述M。也就是说,对于编码端而言,可以在确定某一节点其下的两层中的每一层,该节点的三维数据点均落入到同一个节点内时,则可以对该第一节点进行深度优先编码。而有可能存在这样一种情况,在该节点其下的三层中的每一层,该节点的三维数据点均落入到同一个节点内时,对该三层的每一层进行编码时,均可以编码三维数据点所属的节点的索引值。
可选地,在本申请实施例中,所述第K层中各个节点的索引值是预设的。
具体而言,所述第K层中各个节点的索引值是基于各个节点所处的位置预设的。也就是各个节点的索引值是固定的
例如,如图6所示,不管是哪一层的八叉树划分,同一位置的块的索引值是固定的。例如,左上后的块的索引值是0(转成二进制为000),右下后的块的索引值是7(转成二进制为111)。
应理解,图6所示的节点的索引值仅仅是本申请实施例的一种具体实现方式,不应对本申请实施例造成特别限定,本申请实施例还可以具有其他的实现方式。例如,对八个块中的任何一个都可以编码0至7中的任何一个数,但是在一次编码方案中0至7中的索引值只能被一个位置的块使用,不可重复使用。
或者,在本申请实施例中,所述第K层中多个节点对应的多个索引值的起始索引值是基于以下确定的:所述至少一个三维数据点在所述第K层的上 一层所属的节点
具体而言,所述上一层所属的节点所处的位置在所述第K层中对应位置处的节点的索引值为起始索引值。
例如,在对块分配索引值时,对第一层进行深度优先的八叉树划分子块采用固定分配的方案,分配方案可以参考前面图6所述的方案,对后面的层进行八叉树划分子块时,以前面一层划分存在三维数据点的子块在八叉树的位置作为新的一次八叉树换分子块中的索引0的位置,例如,如图7所示,上一层中,是右下前的块是上一个块中存在三维数据点的块,则对该块进一步划分得到图7右侧的立方体,则可以以右下前的块的索引值为0确定各个块的索引值。
可选地,在本申请实施例中,有可能第一节点只有在之下的部分层内,存在该第一节点中的三维数据点落入到一个子节点中,而在其他更下的层,则会存在该第一节点中的三维数据点落入到多个子节点的情况,在该其他更下的层,则没法无法编码索引值,因为如果编码索引值,将会造成解码端无法解码的情况下。在本申请实施例中,可以在该其他更下的层,可以对该第一节点的子节点采用广度优先的方式进行编码或解码。
具体地,在所述第一节点的全部三维数据点落入到所述第一节点在第Q层的多个子节点时,在所述第Q层,采用广度优先的方式,对所述第一节点的所述的多个子节点进行编码,Q为大于或等于1的整数,且所述第Q层为所述第M层之下的层。
可选地,在本申请实施例中,在所述第Q层对应的编码比特之前设置有第一标识符,所述第一标识符指示在所述第Q层采用广度优先的方式,对所述第一节点的子节点进行编码。
具体地说,由于第一节点从第N层开始是采用深度优先的方式进行编码或解码的,但是在之后的至少一些层中,由于第一节点的三维数据点落入到多个子节点中,无法再采用索引值的方式进行编码,此时可以在该至少一些层的第一个层或全部层对应的比特(该比特是第一节点的子节点的比特)之前加上第一标识符,指示在当前层(进一步可以包括之后的层)采用广度优先的方式,对所述第一节点的子节点进行编码或解码。由此,可以在解码端在获取该第一标识符时,可以在当前层(进一步可以包括之后的层)采用广度优先的方式,对所述第一节点的子节点进行解码。
可选地,在本申请实施例中,在所述第Q层为所述第N层以下的层中,首个对所述第一节点的子节点采用广度优先的方式进行编码的层时,在所述第Q层对应的编码比特(具体可以为描述第一节点在第Q层八叉树划分情况的比特)之前设置有所述第一标识符。
也就是说,在第N层之外,如果存在多个层对该第一节点的子节点采用广度优先的方式进行编码或解码,则只有在第一个对所述第一节点的子节点采用广度优先的方式进行编码的层对应的编码比特之前设置有第一标识符。
可选地,在本申请实施例中,第一标识符的比特数量可以等于各个节点的索引值的比特数量。例如,对于八叉树而言,节点的索引值可以具有4个比特位,第一标识符也可以具有4个比特位,该第一标识符的比特取值可以不等于任一索引值的比特取值,且各个节点的索引值的比特取值各不相同。
或者,在本申请实施例中,所述第一标识符的比特取值等于各个节点中一个节点的索引值的比特取值;所述第一标识符之后存在第一标识位,所述第一标识位用于指示在前的比特取值表示所述第一标识符;所述一个节点的索引值之后存在第二标识位,所述第二标识位用于指示在前的比特取值表示所述一个节点的索引值;所述第一标识位的比特数量等于所述第二标识位的比特数量,但是比特取值不同。
例如,对于八叉树编码而言,节点的索引值可以是从000到111,第一标识符的比特取值可以是111,为了区分111是索引值还是第一标识符,可以在111之后加上一个标识位,该标识位取值为1,则代表111为索引值,该标识位取值为0,则代表111为第一标识符。
以上描述了将第一标识符后的第一标识位不属于第一标识符以及一个节点的索引值后的第二标识位不属于该索引值为例进行描述。本申请实施例还可以具有其他的理解。
例如,所述第一标识符包括前缀和后缀,一个节点的索引值包括前缀和后缀;所述第一标识符的前缀的比特取值等于所述一个节点的索引值的前缀的比特取值;所述第一标识符的后缀的比特数量等于所述一个节点的索引值的后缀的比特数量,所述第一标识符的后缀的比特取值不等于所述一个节点的索引值的后缀的比特取值;所述一个节点的索引值的前缀的比特数量等于其他节点的索引值的比特数量,且所述一个节点的索引值的前缀的比特取值不同于其他节点的索引值。
例如,对于八叉树编码而言,节点的索引值可以包括从000到110的索引值以及1111,第一标识符的比特取值可以是1110,其中,索引值1111中的前三个1是前缀,后个1是后缀,第一标识符1110中的前三个1是前缀,后个0是后缀。
从而解码端在解码到该前缀时,可以根据后缀判断解码出的是索引值还是第一标识符。
一些示例中,第一节点中只有一个三维数据点。可选地,在本申请实施例中,在第一节点内含有一个三维数据点的情况下,第一节点之下的全部层不转换为广度优先的方式对所述第一节点的子节点进行编码或解码。
一个示例中,当第N层的第一节点中只有一个三维数据点时,采用深度优先的方式对该第一节点进行编码或解码。而且,在对第一节点采用深度优先的方式进行编码或解码时,不需要再从深度优先的方式转回广度优先的方式进行编码或解码。一个示例中,当第N层的第一节点中只有一个三维数据点时,而且该第一节点的边长大于阈值时,采用深度优先的方式对该第一节点进行编码或解码。
可选地,在本申请实施例中,所述第一节点的三维数据点在第K层对应的比特取值包括索引值,所述索引值为预设的固定值。
可选地,所述索引值为111。
可选地,在本申请实施例中,在第一节点内含有一个三维数据点的情况下,各个节点的索引值的比特位数量相同,也就是说,各个节点中不再存在一个节点的索引值包括前缀和后缀,或者,也可以理解为:不存在一个节点的索引值后需要加上标识位。这是由于在第一节点内含有一个三维数据点的情况下,无需进行深度优先向广度优先的方式进行切换,比特流中不需加入上述第一标识符。
可选地,在本申请实施例中,在采用深度优先的方式对第一节点进行编码或解码时,在用于描述该第一节点进行子节点划分情况的比特之前,可以具有第二标识符,指示从广度优先切换到深度优先的方式对该第一节点进行编码或解码。
具体而言,对于编码端而言,可以在用于描述该第一节点进行子节点划分情况的比特之前设置第二标识符,所述第二标识符指示采用广度优先切换到深度优先的方式对所述第一节点进行编码或解码,从而编码端在获取到第 二标识符时,可以判断采用深度优先的方式对第一节点进行解码。
可选地,在本申请实施例中,第二标识符可以表征第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内,则解码端可以获取到该第二标识符时,利用深度优先的方式对第一节点进行解码。
也就是说,解码端无需判断第一节点中的全部三维数据点是否落入到所述第一节点下的第M层的同一个节点内,只需获取到第二标识符,即可采用深度优先的方式对第一节点编码或解码。
可选地,在本申请实施例中,该第二标识符的比特数量可以与多叉树进行划分时得到节点的数量相同,具体可以为多个0,0代表对应的节点没有三维数据点。
例如,对于八叉树而言,可以是00000000,在解码端进行解码时,在获取到该00000000之后,由于不会存在000000标识八叉树划分的结果,则可以认为该00000000是上述第二标识符。
应理解,第二标识符可以由多个1组成,在该种情况下,1代表对应的节点没有三维数据点。
其中,如果第N层存在多个上述第一节点,则可以在每个第一节点对应的编码比特之前均设置上述第二标识符。
以上已经描述了第一节点如何进行编码或解码的过程,在进行八叉树编码时,在第N层可以存在这样的一种节点,其子节点未落入到第M层的一个子节点内,则此时可以在第N层及其以下的层,可以采用广度优先的方式,对该节点及其子节点进行编码。
可选地,在本申请实施例中,可以在每个层均判断该层的各个节点是否满足上述提到的条件(320中的条件),如果不满足,则针对相应的节点,在当前层采用广度优先的方式进行编码,否则采用深度优先的方式进行编码。
或者,在本申请实施例中,也可以仅在部分层进行上述条件(320中的条件)的判断。例如,可以八叉树划分的第五层开始进行上述条件的判断。
可选地,在本申请实施例中,在所述第N层及以下的至少一层,采用广度优先的方式,对第二节点进行编码,其中,所述第二节点包括所述第N层及以下层的节点中除所述第一节点及其子节点之外的至少一个节点。
其中,在采用广度优先的方式,对所述第二节点的子节点进行编码时,可以跳过所述第一节点的子节点,也就是说,可以不在进行广度优先编码的 比特流中设置该第一节点的子节点的比特。
本申请实施例提到的第一节点可以是满足320中提到的条件的节点,第二节点可以是不满足320中提到的条件的节点。320中提到的条件也即是节点中的全部三维数据点落入该节点之下的至少一层的同一个节点内。
为了更加清楚地理解本申请,以下将以八叉树为例,描述编码比特流中比特的位置关系。
假设在第1层八叉树划分后,存在第2个子节点A、第3个子节点B和第8个子节点C中存在三维数据点,则第一层的编码比特流可以如下:01100001。
在进行第二层的八叉树划分后,发现上述第3个子节点B是上述第一节点(也就是满足320所提到的条件的节点),上述第2个子节点A和第8个节点C可以是除第一节点之外的节点,上述第2个子节点A被划分后,第1个子节点D和2个子节点E中存在点云点数据,上述第3个子节点B被划分后,第7个子节点F存在点云数据,而上述第8个节点C被划分后,是第3个子节点G和第4个子节点H中存在点云点数据,则01100001之后的编码比特可以是11000000(代表上述第2个子节点A八叉树划分情况)+00000000(第二标识符)+针对上述第3个子节点B的深度优先编码比特(110+上述第3个子节点B之下的层的编码比特)+00110000(代表上述第8个子节点C八叉树划分情况)。
其中,上述第3个子节点B之下的层的编码比特可以包括从第三层开始一直到最底层的描述八叉树划分情况的比特和描述最底层中各个叶子节点中的三维数据点的数量的比特。下面介绍上述第3个子节点B的深度优先编码比特,该深度优先编码比特可以包括110,然后包括上述第3个子节点B之下的层的编码比特,由于上述第2个子节点B在第二层的子节点是第7个子节点F存在三维数据点,如果该第7个子节点F在第三层被划分是是在第1个子节点I和第5个子节点K中存在点云点,则针对上述第2个子节点C的深度优先编码比特,110之后的编码比特可以为1111(上述第一标识符+指示111为第一标识符的标识位)+10001000…。
可以继续进行第三层的广度优先编码,其中编码过程中,可以跳过作为第一节点的上述第3个子节点B的子节点,也就是说,比特流(11000000(代表上述第2个子节点A八叉树划分情况)+00000000(第二标识符)+ 针对上述第3个子节点B的深度优先编码比特(110+上述第3个子节点B之下的层的编码比特)+00110000(代表上述第8个子节点C八叉树划分情况))之后的编码比特不再包含作为第一节点的上述第3个子节点B的子节点的比特。
可选地,在所述第N层存在多个所述第一节点时,任一个所述第一节点及其子节点的编码或解码处理与其他所述第一节点及其子节点的编码或解码处理是并行的。
具体地,由于各个第一节点的编码或解码处理是相互的独立的,则任一个所述第一节点及其子节点的编码或解码处理与其他所述第一节点及其子节点的编码或解码处理可以是并行的,从而可以提高编码或解码效率。
或者,也可以是任一个所述第一节点的子节点的编码或解码处理与其他所述第一节点的子节点的编码或解码处理是并行的。
可选地,在本申请实施例中,所述第一节点及其子节点的编码或解码处理是与以下处理并行的:
所述第N层中除所述第一节点之外的节点(第二节点)及其子节点的编码或解码处理。
具体地,由于第一节点的编码或解码处理与其他节点的编码或解码处理是相互独立的,则所述第一节点及其子节点的编码或解码处理可以与所述第N层中除所述第一节点之外的节点及其子节点的编码或解码处理是并行的,从而可以提高编码或解码效率。
或者,也可以是所述第一节点的子节点的编码或解码处理是与以下处理并行的:
所述第N层中除所述第一节点之外的节点的子节点的编码或解码处理。
为了更加清楚地理解本申请,以下将以图8为例对本申请实施例进行描述。其中,图8所示的为在块内仅还有一个三维数据点时,对该块以深度优先的方式进行编码,这是由于如果块内仅含有一个三维数据点,则在其后续的层,该一个三维数据点均仅落入一子块内,从而可以深度的方式进行编码。
如图8所示,在第m-1层八叉树划分编码时,采用广度优先的顺序进行编码,在一层内按照顺序进行八叉树子块划分并利用8比特二进制数表示当前块的划分情况,每个子块依次对应比特二进制数的1比特。如果子块内有三维数据点则子块对应的1比特用1进行表示,如果子块内没有三维数据点 则子块对应的1比特用0进行表示。按照这样的编码方案,遍历第m-1层内有三维数据点的子块,对这些子块进行八叉树划分,并按照相同的方法编码子块划分后的数据分布情况。编码了第m-1层的所有八叉树划分后接着编码第m层的八叉树划分。当编码到F块时,假设F块内仅含有一个三维数据点时,此时对F块的划分转换为优先的顺序进行编码。这时可选地,可以先在码流中编码一个从广度优先切换到深度优先的标识符(该标识符优选的可以为8比特的00000000)。接着对F的子块进行八叉树划分编码,对F子块的子块进行八叉树划分编码……一直编码至块的边长为1时即到达八叉树的叶子节点时,不需要再进一步划分,此时块内如果仅含有1个三维数据点,则此时不编码块内三维数据点数目。接着继续按照广度优先的顺序编码第m层的接下来的子块。当遇到下一个块内仅含有一个三维数据点的子块时,再度切换至深度优先的顺序进行编码。当编码结束m层会继续编码m+1层。需要注意的是,当编码至选择深度优先的块的子块时,比如编码到F的子块时,由于在前面已经编码过这些子块,子块的子块等的八叉树划分情况,在这里会直接跳过,不重复进行编码。当在m+1层或之后的层遇到某个块仅还有一个三维数据点,又会切换至深度优先的顺序进行编码,编码规则与前面描述的编码F块的规则相同。当按照广度优先顺序八叉树划分编码至子块边长为1时即到达八叉树的叶子节点时,不需要再进一步划分,接着直接编码当前子块即叶子节点内含有的三维数据点集数据点的数目。按照这样的方案即可实现对位置坐标的基于广度优先深度优先混合的八叉树编码。
对于解码端而言,对输入的待解码的码流,可以先进行算术解码,解码位置信息相关码流,在进行八叉树解码时,依次对位置坐标的码流进行解码,当码流为广度优先时即按照广度优先顺序进行解码,当码流为深度优先时即按照深度优先的顺序进行解码。通过八叉树解码,逆量化,得到重建的位置坐标。相应地,按照位置解码后的位置坐标顺序,根据算术解码得到的属性信息相关码流,进行属性解码,即可得到重建的属性信息。按照上述的流程即可实现对三维数据点集的码流的解码。
其中,在进行八叉树解码时,对位置坐标的码流进行解码,可以默认以广度优先的顺序进行解码,当解码到广度优先切换到深度优先的标识符(例如,解码到8比特的0即0000 0000)时,转换为深度优先进行解码重建,按照这样的顺序进行解码,即可实现对位置坐标的八叉树解码。
除了以上的实施例外,本申请实施例还存在其他的实现方式。例如,判断某个节点是否是采用深度优先的方式进行编码,则可以通过判断该节点内的点云点的数量,基于节点内的点云点的数量,确定是否采用深度优先的方式进行编码。例如,该节点内的点云点的数量小于或等于一定阈值,则采用深度优先的方式进行编码,否则采用广度优先的方式进行编码。
以下以图9为例对本申请实施例的其他方式进行描述。
在第m-1层八叉树划分编码时,采用广度优先的顺序进行编码,在一层内按照顺序进行八叉树子块划分并利用8比特二进制数表示当前块的划分情况,每个子块依次对应8比特二进制数的1比特。如果子块内有三维数据点则子块对应的1比特用1进行表示,如果子块内没有三维数据点则子块对应的1比特用0进行表示。按照这样的编码方案,遍历第m-1层内的有三维数据点的子块,对这些子块进行八叉树划分,并按照相同的方法编码子块划分后的数据分布情况。编码了第m-1层的所有八叉树划分后接着编码第m层的八叉树划分。当编码到图9的B块时,这个时候可以转为深度优先遍历的顺序,这样就会先编码B块的八叉树划分情况,接着编码B块的第m+1层中有三维数据点的子块的八叉树划分情况,接着再编码B块的第m+2层……一直编码至块的边长为1时即到达八叉树的叶子节点时,不需要再进一步划分,接着需要编码当前叶子节点块内含有的三维数据点的数目。当当前叶子节点块内含有一个三维数据点时,可以直接编码一个0进行表示。当当前叶子节点块内含有不止一个三维数据点时,设当前叶子节点块内含有n个三维数据点,此时会先编码一个1,接着编码数值(n-1)。接着会返回至第m层,接着对F块进行八叉树子块划分,并编码F块的八叉树划分情况,如果子块内有三维数据点则子块对应的1比特用1进行表示,如果子块内没有三维数据点则子块对应的1比特用0进行表示。这个时候,B块及B块的子块描述八叉树划分情况的二进制比特流会存储在描述B块八叉树划分情况的比特流与描述F块八叉树划分情况的二进制码流之间的存储空间中。按照这样的编码方式,编码B块及B块的子块的划分情况时,码流信息是连续存储的,不需要依赖当前层其他的兄弟块的编码信息。而对于F块的子块,可以选择进行深度优先的八叉树位置坐标编码方案,也可以接着采用广度优先的八叉树位置坐标编码方案。对F块采用深度优先的八叉树位置坐标编码方案时,其编码过程与前面描述的B块的深度优先的八叉树位置坐标编码方案相类 似。对F块采用广度优先的八叉树位置编码方案时,其编码过程与之前的编码过程类似,会先编码第m层F块的八叉树划分情况,接着编码第m层后续的含有三维数据点的块的八叉树划分情况。当第m层的块编码结束后接着编码第m+1层的块。需要注意的是,当编码至选择深度优先的块的子块时,比如编码到B的子块时,由于在前面已经编码过这些块以及其子块,子块的子块等的八叉树划分情况,在这里会直接跳过,不重复进行编码,直接编码F块的子块在第m+1层的八叉树划分情况。后续块的八叉树划分情况编码与前面描述相似。
对于解码端而言,对输入的待解码的码流,先进行算术解码,解码位置信息相关码流,在进行八叉树解码时,依次对位置坐标的码流进行解码,当码流为广度优先时即按照广度优先顺序进行解码,当码流为深度优先时即按照深度优先的顺序进行解码。通过八叉树解码,逆量化,得到重建的位置坐标。相应地,按照位置解码后的位置坐标顺序,根据算术解码得到的属性信息相关码流,进行属性解码,即可得到重建的属性信息。按照上述的流程即可实现对三维数据点集的解码。
同样地,在上述图9所示的实施例中,在广度优先切换为深度优先时,可以添加标识符,例如0000000,以及在深度优先切换为广度优先时,也可以添加标识符,例如1111。
对前面介绍的八叉树编码的实施例还可以采用一种并行实现的方案,下面来具体介绍。以图9为例对这种广度优先、深度优先混合的并行的八叉树编码方案进行说明。在第m-1层八叉树划分编码时,采用广度优先的顺序进行编码,在一层内按照顺序进行八叉树子块划分并利用8bit二进制数表示当前块的划分情况,每个子块依次对应8比特二进制数的1比特。如果子块内有点云数据点则子块对应的1比特用1进行表示,如果子块内没有点云数据点则子块对应的1比特用0进行表示。按照这样的编码方案,遍历第m-1层内的有点云数据点的子块,对这些子块进行八叉树划分,并按照相同的方法编码子块划分后的数据分布情况。编码了第m-1层的所有八叉树划分后接着编码第m层的八叉树划分。当编码到图9的B块时,这个时候可以转为深度优先遍历的顺序,这样就会先编码B块的八叉树划分情况,接着编码B块的第m+1层中有点云数据的子块的八叉树划分情况,接着再编码B块的第m+2层……一直编码至块的边长为1时即到达八叉树的叶子节点时,不 需要再进一步划分,接着需要编码当前叶子节点块内含有的点云数据点的数目。当当前叶子节点块内含有一个点云数据点时,直接编码一个0进行表示。当当前叶子节点块内含有不止一个点云数据点时,设当前叶子节点块内含有n个点云数据点,此时会先编码一个1,接着编码数值(n-1)。接着会返回至第m层,接着对F块进行八叉树子块划分,并编码F块的八叉树划分情况,如果子块内有点云数据点则子块对应的1比特用1进行表示,如果子块内没有点云数据点则子块对应的1比特用0进行表示。这个时候,B块及B块的子块描述八叉树划分情况的二进制比特流会存储在描述B块八叉树划分情况的比特流与描述F块八叉树划分情况的二进制码流之间的存储空间中。按照这样的编码方式,编码B块及B块的子块的划分情况时,码流信息是连续存储的,不需要依赖当前层其他的兄弟块的编码信息。而对于F块的子块,可以选择进行深度优先的八叉树位置坐标编码方案,也可以接着采用广度优先的八叉树位置坐标编码方案。对F块采用深度优先的八叉树位置坐标编码方案时,其编码过程与前面描述的B块的深度优先的八叉树位置坐标编码方案相类似。对F块采用广度优先的八叉树位置编码方案时,其编码过程与之前的编码过程类似,会先编码第m层F块的八叉树划分情况,接着编码第m层后续的含有点云数据点的块的八叉树划分情况。当第m层的块编码结束后接着编码第m+1层的块。需要注意的是,当编码至选择深度优先的块的子块时,比如编码到B的子块时,由于在前面已经编码过这些块以及其子块,子块的子块等的八叉树划分情况,在这里会直接跳过,不重复进行编码,直接编码F块的子块在第m+1层的八叉树划分情况。后续块的八叉树划分情况编码与前面描述相似。而前面描述的编码B块以及B块子块的编码结果与后面编码块F之间并没有依赖关系,故在这里对将广度优先顺序转换为深度优先的子块可以单独利用一个线程进行八叉树编码,待该子块编码完成后,将编码后的码流添加进对应位置即可。
相应的,对于解码端而言,对输入的待解码的码流,先进行算术解码,解码位置信息相关码流,在进行八叉树解码时,依次对位置坐标的码流进行解码,当码流为广度优先时即按照广度优先顺序进行解码,当码流为深度优先时即按照深度优先的顺序进行解码。通过八叉树解码,逆量化,得到重建的位置坐标。相应地,按照位置解码后的位置坐标顺序,根据算术解码得到的属性信息相关码流,进行属性解码,即可得到重建的属性信息。按照上述 的流程即可实现三维数据点集的码流的解码。
在本申请实施例中,针对点云位置坐标的八叉树编码过程,采用了广度优先深度优先混合的八叉树编码方案,提高了八叉树编码过程的灵活性以及并行程度,减小了八叉树编码过程中的颗粒度。并且当八叉树划分至子块内仅含有一个点云数据点时,直接按照深度优先的顺序进行编码,并且直接利用3比特来编码有数据的那一个块的索引值,这个方案在一定程度上也提高了位置编码的压缩率。在这种广度优先深度优先混合的结构中为了表示优先的类别,本发明可以在码流中使用8比特的0即0000 0000来进行切换广度优先模式至深度优先模式时的标识。
以上介绍了如何对三维数据点集进行多叉树编码,多叉树编码的可以是三维数据点的位置坐标。在三维数据点的数据还包括属性信息时,可以进一步对属性信息进行编码。对属性编码可以采用层次编码方式或二值化编码方式进行编码。
以下将结合图10和11对层次编码方案进行介绍。其中,图10和图11的标记中与图1和图2的相同的标记在下不再阐述,具体可以参考针对图1和图2的描述。
其中,如图10所示,在140中,对属性的编码操作可以包括142、144和146;在142中,基于位置坐标编码后的位置坐标,生成层次编码方案(level of detail,LOD);在144中,基于层次编码方案,进行预测编码;在146中,对预测编码的结果进行量化。
如图11所示,在250中,对属性的解码操作可以包括252、254和256;在252中,对解码得到的属性码流进行逆量化;在254中,基于位置坐标解码后的位置坐标,生成层次解码方案;在256中,基于层次编码方案,进行预测解码。
在实际编码过程中,可以根据LOD配置的参数来进行LOD分层,其中,后面的层会包含有前面层的点。例如,如图12所示,在LOD0(层0),包含的三维数据点为P0,P5,P4,P2;在LOD1(层1),包含的三维数据点为P0,P5,P4,P2,P1,P6,P3;以及在LOD2(层2)包含的三维数据点为P0,P5,P4,P2,P1,P6,P3,P9,P8,P7。
在分层的过程中,先选择三维数据点集数据中的第一个三维数据点,将 其放在LOD0层的第一个点,接着开始依次遍历三维数据点,计算这个点和当前层里面已经含有的所有点之间的笛卡尔坐标系下的距离,如果最小的距离是大于当前LOD层的设置的距离阈值(dist2)时,这个点就会被划入到当前LOD层。并且在这个过程中,会将计算得到的距离排序,选择出最小的若干个,这个数目是由预测时相邻点的数量(numberOfNeighborsInPrediction)N确定。其中,一个三维数据点被划入一个LOD层后,后续可以不需要再接着判断其是否还属于下一个LOD层,因为下一层是包含上一层的所以其一定属于下一个LOD层;以及在LOD0层的前面几个点,由于在LOD内的点数比较少所以选择出的参考点数目有可能小于该数量N。
在划分结束LOD层之后,可以利用前面选择的最临近的点来分配预测时的权重。具体的,对每个三维数据点,在前面已经得到了按照距离排序的最邻近的N个点之后,接下来可以按照1个参考点,2个参考点一直到N个参考点来分别求出权重分配方案。权重分配方案共有N种,其中,1个参考点时就是距离最小的1个点作为参考点,这时它的权重即为1;2个参考点时就是选择距离最小的2个点作为参考点,这时会根据这两个参考点和待预测点之间的距离来分配权重,具体权重为距离反比,距离越远权重越小,并保证权重和为1;直到N个参考点时,就是选择N个参考点,权重分配方法与前面相同。
在分配完权重后,可以选择参考点数,在这里需要注意的是,对一个预测点可以选择的临近参考点的数目是小于等于N。具体会遍历限定参考点最大为1个时,这时预测值(权重乘以对应位置的属性值)与实际属性值的残差经过量化后的值得和,这个和即为参考点数目最大为1时的代价,接着会遍历限定参考点数目最大为2个时的代价,直至限定参考点数目最大为N时的代价,最终选择一个代价最小的最大参考点数的方案。并进一步编码这个方案下量化后的残差值。
在编码后的码流中关于属性的头信息可以描述关于分层编码属性即LOD的相关信息,具体包括在每个层进行预测时,选择临近参考点(用于计算残差的位置坐标)的点数(numberOfNeighborsInPrediction),LOD的层数(levelOfDetailCount),划分LOD每一层所依据的距离阈值(dist2), LOD每一层量化的步长(quantizationSteps),LOD每一层的死区大小(quantizationDeadZoneSizes)(也即将残差量化为0的残差区间),其中,后面三个属性可以分别对LOD每层均设定,每层的属性均可以写入码流头信息中。
可选地,在本申请实施例中,例如如图13所示,在142中,对属性的编码还可以采用二值化编码的方式进行编码,相应地,如图14所示,在252中,对属性的解码还可以采用二值化解码的方式进行解码。其中,图12和图13的标记中与图1和图2的相同的标记在下不再阐述,具体可以参考针对图1和图2的描述。
其中,采用二值化编码的方式进行编码可以简化编码方法并降低编解码的时间开销,以及无需在码流中加入较多的编码信息,从而可以提高压缩率。
本申请实施例中的二值化编码的编码方式可以为定长码编码方式、截断莱斯编码方式或K阶指数哥伦布编码方式。相应地,二值化解码的解码方式可以为定长码解码方式、截断莱斯解码方式或K阶指数哥伦布解码方式。
可选地,在本申请实施例中,编码器在对位置坐标进行量化之后,至少两个位置坐标量化后的位置坐标可能是相同的,而这至少两个位置坐标则对应至少两个属性值,此时,在对量化后的位置坐标进行位置坐标编码之前,可以去除重复坐标(例如,如图15和16所示的步骤125),也即将该至少两个位置坐标量化后的位置坐标为一个(例如,称为第一位置坐标),相应地,可以对属性的至少两个值进行合并(例如,如图15和16所示的步骤135)以得到一个取值,例如,可以进行加权合并。解码端在解码时针对该至少两个位置坐标,将会解码出一个位置坐标以及一个属性值。
当然,在本申请实施例中,即使至少两个位置坐标量化后的位置坐标是相同的,也可以不去除重复坐标以及不对至少两个属性值进行合并,则此时一个量化后的位置坐标对应至少两个属性值,解码端进行解码时,可以针对该量化后的位置坐标解码出至少两个属性值,从而可以得到至少两个三维数据点。
其中,由于量化后的不同位置坐标可能会对应不同数量的属性值,则可以在码流中针对各个量化后的位置坐标写入其对应的属性值的数量,则解码端可以根据码流中携带的信息,确定各个位置坐标对应的属性的数量。并且属性的码流是连续的,依次解码每个属性,按照顺序与三维数据点顺序对应 上即可实现位置坐标与属性的对应。
当然,也可以只针对特殊的量化后的位置坐标(例如,对应的属性值的数量不是一个而是多个)进行标注。
可选地,在本申请实施例中,编码器是否去除重复坐标和进行属性合并可以是预设在编码器上的,例如,有些编码器预设为去除重复坐标和进行属性合并,有些编码器预设为不去除重复坐标和不进行属性合并。
或者,编码器是否去除重复坐标和进行属性合并也可以是由编码器进行选择的,其中,编码器可以根据当前的编码条件确定是否去除重复坐标和属性合并。例如,如图16所示,在120量化后,可以选择直接进行130中的位置坐标编码,以及不进行135中的属性合并,而直接进行140中的属性编码。或者,编码器可以选择在120量化后,先进行125中的重复坐标的去除,再进行130中的位置坐标编码,以及先进行135中的属性合并,再进行140中的属性编码。
具体地,如果当前对编码的损失希望尽量低或者对压缩率要求不高,则不进行重复坐标的去除和属性合并,否则,则进行重复坐标的去除和属性合并。
在本申请实施例中,采用广度优先的方式对多叉树的第N层进行编码或解码,并在第N层的其中一个节点的全部点云点落入到之下的层中的同一节点内的情况下,采用深度优先的方式对该节点进行编码或解码,实现了对节点的灵活编码,从而提高了编码性能。
一些示例中,上文中的三维数据点可以是测距装置所获取到的点云数据中的任意一个点云点。其中,该测距装置可以是激光雷达、激光测距设备等电子设备。在一种实施方式中,测距装置用于感测外部环境信息,例如,环境目标的距离信息、方位信息、反射强度信息、速度信息等。一个点云点可以包括测距装置所测到的外部环境信息中的至少一种。一些示例中,测距装置每获取到一定数量的三维数据点时,根据该一定数量的三维数据点生成数据包。本发明中提供的三维数据点集的编/解码方法可以应用于对一个数据包内的三维数据点进行编/解码。
一种实现方式中,测距装置可以通过测量测距装置和探测物之间光传播的时间,即光飞行时间(Time-of-Flight,TOF),来探测探测物到测距装置的距离。或者,测距装置也可以通过其他技术来探测探测物到测距装置的距 离,例如基于相位移动(phase shift)测量的测距方法,或者基于频率移动(frequency shift)测量的测距方法,在此不做限制。
一些示例中,测距装置的扫描轨迹随着时间改变,这样,随着扫描时间的积累,测距装置在视场内扫描得到的三维数据点在视场内的分布越来越密。
为了便于理解,以下将结合图17所示的测距装置1100对产生本文中提到的三维数据点的测距装置举例描述。
如图17所示,测距装置1100可以包括发射电路1110、接收电路1120、采样电路1130和运算电路1140。
发射电路1110可以发射光脉冲序列(例如激光脉冲序列)。接收电路1120可以接收经过被探测物反射的光脉冲序列,并对该光脉冲序列进行光电转换,以得到电信号,再对电信号进行处理之后可以输出给采样电路1130。采样电路1130可以对电信号进行采样,以获取采样结果。运算电路1140可以基于采样电路1130的采样结果,以确定测距装置1100与被探测物之间的距离。
可选地,该测距装置1100还可以包括控制电路1150,该控制电路150可以实现对其他电路的控制,例如,可以控制各个电路的工作时间和/或对各个电路进行参数设置等。
应理解,虽然图17示出的测距装置中包括一个发射电路、一个接收电路、一个采样电路和一个运算电路,用于出射一路光束进行探测,但是本申请实施例并不限于此,发射电路、接收电路、采样电路、运算电路中的任一种电路的数量也可以是至少两个,用于沿相同方向或分别沿不同方向出射至少两路光束;其中,该至少两束光路可以是同时出射,也可以是分别在不同时刻出射。一个示例中,该至少两个发射电路中的发光芯片封装在同一个模块中。例如,每个发射电路包括一个激光发射芯片,该至少两个发射电路中的激光发射芯片中的die封装到一起,容置在同一个封装空间中。
一些实现方式中,除了图17所示的电路,测距装置1100还可以包括扫描模块1160,用于将发射电路出射的至少一路激光脉冲序列改变传播方向出射。
其中,可以将包括发射电路1110、接收电路1120、采样电路1130和运 算电路1140的模块,或者,包括发射电路1110、接收电路1120、采样电路1130、运算电路1140和控制电路1150的模块称为测距模块,该测距模块1150可以独立于其他模块,例如,扫描模块1160。
测距装置中可以采用同轴光路,也即测距装置出射的光束和经反射回来的光束在测距装置内共用至少部分光路。例如,发射电路出射的至少一路激光脉冲序列经扫描模块改变传播方向出射后,经探测物反射回来的激光脉冲序列经过扫描模块后入射至接收电路。或者,测距装置也可以采用异轴光路,也即测距装置出射的光束和经反射回来的光束在测距装置内分别沿不同的光路传输。图18示出了本发明的测距装置采用同轴光路的一种实施例的示意图。
测距装置1200包括测距模块1201,测距模块1210包括发射器1203(可以包括上述的发射电路)、准直元件1204、探测器1205(可以包括上述的接收电路、采样电路和运算电路)和光路改变元件1206。测距模块1210用于发射光束,且接收回光,将回光转换为电信号。其中,发射器1203可以用于发射光脉冲序列。在一个实施例中,发射器1203可以发射激光脉冲序列。可选的,发射器1203发射出的激光束为波长在可见光范围之外的窄带宽光束。准直元件1204设置于发射器的出射光路上,用于准直从发射器1203发出的光束,将发射器1203发出的光束准直为平行光出射至扫描模块。准直元件还用于会聚经探测物反射的回光的至少一部分。该准直元件204可以是准直透镜或者是其他能够准直光束的元件。
在图18所示实施例中,通过光路改变元件1206来将测距装置内的发射光路和接收光路在准直元件1204之前合并,使得发射光路和接收光路可以共用同一个准直元件,使得光路更加紧凑。在其他的一些实现方式中,也可以是发射器1203和探测器1205分别使用各自的准直元件,将光路改变元件1206设置在准直元件之后的光路上。
在图18所示实施例中,由于发射器1203出射的光束的光束孔径较小,测距装置所接收到的回光的光束孔径较大,所以光路改变元件可以采用小面积的反射镜来将发射光路和接收光路合并。在其他的一些实现方式中,光路改变元件也可以采用带通孔的反射镜,其中该通孔用于透射发射器1203的出射光,反射镜用于将回光反射至探测器1205。这样可以减小采用小反射镜 的情况中小反射镜的支架会对回光的遮挡。
在图18所示实施例中,光路改变元件偏离了准直元件1204的光轴。在其他的一些实现方式中,光路改变元件也可以位于准直元件204的光轴上。
测距装置200还包括扫描模块1202。扫描模块1202放置于测距模块1201的出射光路上,扫描模块1202用于改变经准直元件1204出射的准直光束1219的传输方向并投射至外界环境,并将回光投射至准直元件1204。回光经准直元件1204汇聚到探测器1205上。
在一个实施例中,扫描模块1202可以包括至少一个光学元件,用于改变光束的传播路径,其中,该光学元件可以通过对光束进行反射、折射、衍射等等方式来改变光束传播路径。例如,扫描模块202包括透镜、反射镜、棱镜、振镜、光栅、液晶、光学相控阵(Optical Phased Array)或上述光学元件的任意组合。一个示例中,至少部分光学元件是运动的,例如通过驱动模块来驱动该至少部分光学元件进行运动,该运动的光学元件可以在不同时刻将光束反射、折射或衍射至不同的方向。在一些实施例中,扫描模块1202的多个光学元件可以绕共同的轴1209旋转或振动,每个旋转或振动的光学元件用于不断改变入射光束的传播方向。在一个实施例中,扫描模块1202的多个光学元件可以以不同的转速旋转,或以不同的速度振动。在另一个实施例中,扫描模块1202的至少部分光学元件可以以基本相同的转速旋转。在一些实施例中,扫描模块的多个光学元件也可以是绕不同的轴旋转。在一些实施例中,扫描模块的多个光学元件也可以是以相同的方向旋转,或以不同的方向旋转;或者沿相同的方向振动,或者沿不同的方向振动,在此不作限制。
在一个实施例中,扫描模块1202包括第一光学元件1214和与第一光学元件1214连接的驱动器1216,驱动器1216用于驱动第一光学元件1214绕转动轴1209转动,使第一光学元件1214改变准直光束1219的方向。第一光学元件1214将准直光束1219投射至不同的方向。在一个实施例中,准直光束1219经第一光学元件改变后的方向与转动轴109的夹角随着第一光学元件1214的转动而变化。在一个实施例中,第一光学元件1214包括相对的非平行的一对表面,准直光束1219穿过该对表面。在一个实施例中,第一光学元件1214包括厚度沿至少一个径向变化的棱镜。在一个实施例中,第 一光学元件1214包括楔角棱镜,对准直光束1219进行折射。
在一个实施例中,扫描模块1202还包括第二光学元件1215,第二光学元件1215绕转动轴1209转动,第二光学元件1215的转动速度与第一光学元件1214的转动速度不同。第二光学元件1215用于改变第一光学元件1214投射的光束的方向。在一个实施例中,第二光学元件1215与另一驱动器1217连接,驱动器1217驱动第二光学元件1215转动。第一光学元件1214和第二光学元件1215可以由相同或不同的驱动器驱动,使第一光学元件1214和第二光学元件1215的转速和/或转向不同,从而将准直光束1219投射至外界空间不同的方向,可以扫描较大的空间范围。在一个实施例中,控制器1218控制驱动器1216和1217,分别驱动第一光学元件1214和第二光学元件1215。第一光学元件1214和第二光学元件1215的转速可以根据实际应用中预期扫描的区域和样式确定。驱动器1216和1217可以包括电机或其他驱动器。
在一个实施例中,第二光学元件1215包括相对的非平行的一对表面,光束穿过该对表面。在一个实施例中,第二光学元件1215包括厚度沿至少一个径向变化的棱镜。在一个实施例中,第二光学元件1215包括楔角棱镜。
一个实施例中,扫描模块1202还包括第三光学元件(图未示)和用于驱动第三光学元件运动的驱动器。可选地,该第三光学元件包括相对的非平行的一对表面,光束穿过该对表面。在一个实施例中,第三光学元件包括厚度沿至少一个径向变化的棱镜。在一个实施例中,第三光学元件包括楔角棱镜。第一、第二和第三光学元件中的至少两个光学元件以不同的转速和/或转向转动。
扫描模块1202中的各光学元件旋转可以将光投射至不同的方向,例如方向1211和1213,如此对测距装置1200周围的空间进行扫描。如图19所示,图19为测距装置1200的一种扫描图案的示意图。可以理解的是,扫描模块内的光学元件的速度变化时,扫描图案也会随之变化。
当扫描模块1202投射出的光1211打到探测物1201时,一部分光被探测物1201沿与投射的光1211相反的方向反射至测距装置1200。探测物1201反射的回光1212经过扫描模块1202后入射至准直元件1204。
探测器1205与发射器1203放置于准直元件1204的同一侧,探测器1205用于将穿过准直元件1204的至少部分回光转换为电信号。
一个实施例中,各光学元件上镀有增透膜。可选的,增透膜的厚度与发射器1203发射出的光束的波长相等或接近,能够增加透射光束的强度。
一个实施例中,测距装置中位于光束传播路径上的一个元件表面上镀有滤光层,或者在光束传播路径上设置有滤光器,用于至少透射发射器所出射的光束所在波段,反射其他波段,以减少环境光给接收器带来的噪音。
在一些实施例中,发射器1203可以包括激光二极管,通过激光二极管发射纳秒级别的激光脉冲。进一步地,可以确定激光脉冲接收时间,例如,通过探测电信号脉冲的上升沿时间和/或下降沿时间确定激光脉冲接收时间。如此,测距装置1200可以利用脉冲接收时间信息和脉冲发出时间信息计算TOF,从而确定探测物1201到测距装置1200的距离。
测距装置1200探测到的距离和方位可以用于遥感、避障、测绘、建模、导航等。在一种实施方式中,本发明实施方式的测距装置可应用于移动平台,测距装置可安装在移动平台的平台本体。具有测距装置的移动平台可对外部环境进行测量,例如,测量移动平台与障碍物的距离用于避障等用途,和对外部环境进行二维或三维的测绘。在某些实施方式中,移动平台包括无人飞行器、汽车、遥控车、机器人、相机中的至少一种。当测距装置应用于无人飞行器时,平台本体为无人飞行器的机身。当测距装置应用于汽车时,平台本体为汽车的车身。该汽车可以是自动驾驶汽车或者半自动驾驶汽车,在此不做限制。当测距装置应用于遥控车时,平台本体为遥控车的车身。当测距装置应用于机器人时,平台本体为机器人。当测距装置应用于相机时,平台本体为相机本身。
图20是根据本申请实施例的一种用于三维数据点集处理的设备400的示意性框图。所述三维数据点集采用多叉树的方式进行划分,所述设备400包括:
第一编码或解码单元410,用于对所述多叉树的第N层采用广度优先的方式进行编码或解码;
第二编码或解码单元420,用于在所述第N层的第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;N为大于或等于0的整数,M为大于或等于1的整数。
可选地,在本申请实施例中,所述第一节点的三维数据点在第K层对应的比特取值包括:
所述第一节点的三维数据点在所述K层中所属的节点的索引值,其中,所述第K层为所述第一节点下的其中一层,且在所述第K层,所述第一节点中的全部三维数据点落入到同一个节点内。
可选地,在本申请实施例中,所述第K层中各个节点的索引值是预设的;或,
所述第K层中多个节点对应的多个索引值的起始索引值是基于以下确定的:所述至少一个三维数据点在所述第K层的上一层所属的节点。
可选地,在本申请实施例中,所述第K层中各个节点的索引值是基于各个节点所处的位置预设的;
所述上一层所属的节点所处的位置在所述第K层中对应位置处的节点的索引值为起始索引值。
可选地,在本申请实施例中,所述第二编码或解码单元420具体用于:
在所述第一节点的全部三维数据点落入到所述第一节点在第Q层的多个子节点时,在所述第Q层,采用广度优先的方式,对所述第一节点的子节点进行编码或解码,Q为大于或等于1的整数,且所述第Q层为所述第M层之下的层。
可选地,在本申请实施例中,所述设备用于编码端,所述第二编码或解码单元420进一步用于:
在所述第Q层对应的比特之前设置第一标识符,所述第一标识符指示在所述第Q层采用广度优先的方式,对所述第一节点的子节点进行编码或解码。
可选地,在本申请实施例中,所述设备用于解码端,所述第二编码或解码单元420进一步用于:
在所述第Q层对应的比特之前获取第一标识符的情况下,在所述第Q层,采用广度优先的方式,对所述第一节点的子节点进行解码,所述第一标识符指示在所述第Q层采用广度优先的方式,对所述第一节点的子节点进行编码或解码。
可选地,在本申请实施例中,在所述第Q层为所述第N层以下的层中,首个对所述第一节点的子节点采用广度优先的方式进行编码或解码的层时, 在所述第Q层对应的比特之前设置有所述第一标识符。
可选地,在本申请实施例中,所述第一标识符包括前缀和后缀,一个节点的索引值包括前缀和后缀;
所述第一标识符的前缀的比特取值等于所述一个节点的索引值的前缀的比特取值;
所述第一标识符的后缀的比特数量等于所述一个节点的索引值的后缀的比特数量,所述第一标识符的后缀的比特取值不等于所述一个节点的索引值的后缀的比特取值;
所述一个节点的索引值的前缀的比特数量等于其他节点的索引值的比特数量,且所述一个节点的索引值的前缀的比特取值不同于其他节点的索引值。
可选地,在本申请实施例中,所述设备用于编码端,所述第二编码或解码单元420进一步用于:
在描述所述第一节点进行子节点划分情况的比特之前,设置第二标识符,所述第二标识符指示采用从广度优先切换到深度优先的方式对所述第一节点进行编码或解码。
可选地,在本申请实施例中,所述设备用于解码端,所述第二编码或解码单元420用于:
在描述所述第一节点进行子节点划分情况的比特之前获取第二标识符的情况下,采用深度优先的方式对所述第一节点进行解码;其中,所述第二标识符指示采用从广度优先切换到深度优先的方式对所述第一节点进行编码或解码。
可选地,在本申请实施例中,在描述所述第一节点进行子节点划分情况的比特之前获取第二标识符表征第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内。
可选地,在本申请实施例中,所述第二标识符为多个零或一,零或一的数量等于所述第N层的节点的数量。
可选地,在本申请实施例中,所述第一编码或解码单元410进一步用于:
在所述第N层之下的层,采用广度优先的方式,对第二节点的子节点进行编码或解码,其中,所述第二节点包括所述第N层的节点中除所述第一节点之外的任一节点。
可选地,在本申请实施例中,所述第一编码或解码单元410进一步用于:
在采用广度优先的方式,对所述第二节点的子节点进行编码或解码时,跳过所述第一节点的子节点。
可选地,在本申请实施例中,在所述第N层存在多个所述第一节点时,任一个所述第一节点及其子节点的编码处理与其他所述第一节点及其子节点的编码或解码处理是并行的。
可选地,在本申请实施例中,所述第一节点及其子节点的编码或解码处理是与以下处理并行的:
所述第N层中除所述第一节点之外的节点及其子节点的编码或解码处理。
可选地,在本申请实施例中,八叉树编码或解码的是所述三维数据点集的位置坐标。
可选地,在本申请实施例中,设备400还包括第三编码或解码单元430,用于:
利用二值化编码或解码的方式,或层次编码方案,对所述三维数据点集中的三维数据点的属性进行编码或解码。
可选地,在本申请实施例中,所述多叉树为八叉树。
应理解,该设备800可以用于实现上述方法中由解码端实现的相应操作,为了简洁,在此不再赘述。
图21示出了本申请实施例的计算机系统500的示意性框图。
如图21所示,该计算机系统500可以包括处理器510,进一步地可以包括存储器520。
应理解,该计算机系统500还可以包括其他计算机系统中通常所包括的部件,例如,输入输出设备、通信接口等,本申请实施例对此并不限定。
存储器520用于存储计算机可执行指令。
存储器520可以是各种种类的存储器,例如可以包括高速随机存取存储器(Random Access Memory,RAM),还可以包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器,本申请实施例对此并不限定。
处理器510用于访问该存储器520,并执行该计算机可执行指令,以进行上述本申请实施例的用于三维数据点集处理的方法中的操作。
处理器510可以包括微处理器,现场可编程门阵列(Field-Programmable Gate Array,FPGA),中央处理器(Central Processing unit,CPU),图形处理器(Graphics Processing Unit,GPU)等,本申请实施例对此并不限定。
本申请实施例的用于三维数据点集处理的设备和计算机系统可对应于本申请实施例的用于三维数据点集处理的方法的执行主体,并且用于三维数据点集处理的设备和计算机系统中的各个模块的上述和其它操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。
本申请实施例还提供了一种电子设备,该电子设备可以包括上述本申请各种实施例的用于三维数据点集处理的设备或者计算机系统。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码可以用于指示执行上述本申请实施例的用于三维数据点集处理的方法。
应理解,在本申请实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的 耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (50)

  1. 一种用于三维数据点集处理的方法,其特征在于,所述三维数据点集采用多叉树的方式进行划分,所述方法包括:
    对所述多叉树的第N层采用广度优先的方式进行编码或解码;
    在所述第N层的第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;其中,N和M为大于或等于1的整数。
  2. 根据权利要求1所述的方法,其特征在于,所述第一节点的三维数据点在第K层对应的比特取值包括:
    所述第一节点的三维数据点在所述K层中所属的节点的索引值,其中,所述第K层为所述第一节点下的其中一层,且在所述第K层,所述第一节点中的全部三维数据点落入到同一个节点内。
  3. 根据权利要求2所述的方法,其特征在于,所述第K层中各个节点的索引值是预设的;或,
    所述第K层中多个节点对应的多个索引值的起始索引值是基于以下确定的:所述至少一个三维数据点在所述第K层的上一层所属的节点。
  4. 根据权利要求3所述的方法,其特征在于,所述第K层中各个节点的索引值是基于各个节点所处的位置预设的;
    所述上一层所属的节点所处的位置在所述第K层中对应位置处的节点的索引值为起始索引值。
  5. 根据权利要求1至4中任一项所述的方法,其特征在于,所述采用深度优先的方式对所述第一节点进行编码或解码,包括:
    在所述第一节点的全部三维数据点落入到所述第一节点在第Q层的多个子节点时,在所述第Q层,采用广度优先的方式,对所述第一节点的子节点进行编码或解码,Q为大于或等于1的整数,且所述第Q层为所述第M层之下的层。
  6. 根据权利要求5所述的方法,其特征在于,所述方法用于编码端,所述方法还包括:
    在所述第Q层对应的比特之前设置第一标识符,所述第一标识符指示在所述第Q层采用广度优先的方式,对所述第一节点的子节点进行编码或解码。
  7. 根据权利要求5所述的方法,其特征在于,所述方法用于解码端,所述在所述第Q层,采用广度优先的方式,对所述第一节点的子节点进行编码或解码,包括:
    在所述第Q层对应的比特之前获取第一标识符的情况下,在所述第Q层,采用广度优先的方式,对所述第一节点的子节点进行解码,所述第一标识符指示在所述第Q层采用广度优先的方式,对所述第一节点的子节点进行编码或解码。
  8. 根据权利要求6或7所述的方法,其特征在于,在所述第Q层为所述第N层以下的层中,首个对所述第一节点的子节点采用广度优先的方式进行编码或解码的层时,在所述第Q层对应的比特之前设置有所述第一标识符。
  9. 根据权利要求6至8中任一项所述的方法,其特征在于,所述第一标识符包括前缀和后缀,一个节点的索引值包括前缀和后缀;
    所述第一标识符的前缀的比特取值等于所述一个节点的索引值的前缀的比特取值;
    所述第一标识符的后缀的比特数量等于所述一个节点的索引值的后缀的比特数量,所述第一标识符的后缀的比特取值不等于所述一个节点的索引值的后缀的比特取值;
    所述一个节点的索引值的前缀的比特数量等于其他节点的索引值的比特数量,且所述一个节点的索引值的前缀的比特取值不同于其他节点的索引值。
  10. 根据权利要求1至9中任一项所述的方法,其特征在于,所述方法用于编码端,所述方法还包括:
    在描述所述第一节点进行子节点划分情况的比特之前,设置第二标识符,所述第二标识符指示采用从广度优先切换到深度优先的方式对所述第一节点进行编码或解码。
  11. 根据权利要求1至9中任一项所述的方法,其特征在于,所述方法用于解码端,所述采用深度优先的方式对所述第一节点进行编码或解码,包括:
    在描述所述第一节点进行子节点划分情况的比特之前获取第二标识符的情况下,采用深度优先的方式对所述第一节点进行解码;其中,所述第二 标识符指示采用从广度优先切换到深度优先的方式对所述第一节点进行编码或解码。
  12. 根据权利要求11所述的方法,其特征在于,在描述所述第一节点进行子节点划分情况的比特之前获取第二标识符表征第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内。
  13. 根据权利要求10至12中任一项所述的方法,其特征在于,所述第二标识符为多个零或一,零或一的数量等于所述第N层的节点的数量。
  14. 根据权利要求1至13中任一项所述的方法,其特征在于,所述方法还包括:
    在所述第N层之下的层,采用广度优先的方式,对第二节点的子节点进行编码或解码,其中,所述第二节点包括所述第N层的节点中除所述第一节点之外的任一节点。
  15. 根据权利要求14所述的方法,其特征在于,所述方法还包括:
    在采用广度优先的方式,对所述第二节点的子节点进行编码或解码时,跳过所述第一节点的子节点。
  16. 根据权利要求1至15中任一项所述的方法,其特征在于,在所述第N层存在多个所述第一节点时,任一个所述第一节点及其子节点的编码处理与其他所述第一节点及其子节点的编码或解码处理是并行的。
  17. 根据权利要求1至16中任一项所述的方法,其特征在于,所述第一节点及其子节点的编码或解码处理是与以下处理并行的:
    所述第N层中除所述第一节点之外的节点及其子节点的编码或解码处理。
  18. 根据权利要求1至17中任一项所述的方法,其特征在于,八叉树编码或解码的是所述三维数据点集的位置坐标。
  19. 根据权利要求18所述的方法,其特征在于,所述方法还包括:
    利用二值化编码或解码的方式,或层次编码方案,对所述三维数据点集中的三维数据点的属性进行编码或解码。
  20. 根据权利要求1至19中任一项所述的方法,其特征在于,所述多叉树为八叉树。
  21. 一种用于三维数据点集处理的设备,其特征在于,所述三维数据点集采用多叉树的方式进行划分,所述设备包括:
    第一编码或解码单元,用于对所述多叉树的第N层采用广度优先的方式进行编码或解码;
    第二编码或解码单元,用于在所述第N层的第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内的情况下,采用深度优先的方式对所述第一节点进行编码或解码;其中,N和M为大于或等于1的整数。
  22. 根据权利要求21所述的设备,其特征在于,所述第一节点的三维数据点在第K层对应的比特取值包括:
    所述第一节点的三维数据点在所述K层中所属的节点的索引值,其中,所述第K层为所述第一节点下的其中一层,且在所述第K层,所述第一节点中的全部三维数据点落入到同一个节点内。
  23. 根据权利要求22所述的设备,其特征在于,所述第K层中各个节点的索引值是预设的;或,
    所述第K层中多个节点对应的多个索引值的起始索引值是基于以下确定的:所述至少一个三维数据点在所述第K层的上一层所属的节点。
  24. 根据权利要求23所述的设备,其特征在于,所述第K层中各个节点的索引值是基于各个节点所处的位置预设的;
    所述上一层所属的节点所处的位置在所述第K层中对应位置处的节点的索引值为起始索引值。
  25. 根据权利要求21至24中任一项所述的设备,其特征在于,所述第二编码或解码单元具体用于:
    在所述第一节点的全部三维数据点落入到所述第一节点在第Q层的多个子节点时,在所述第Q层,采用广度优先的方式,对所述第一节点的子节点进行编码或解码,Q为大于或等于1的整数,且所述第Q层为所述第M层之下的层。
  26. 根据权利要求25所述的设备,其特征在于,所述设备用于编码端,所述第二编码或解码单元进一步用于:
    在所述第Q层对应的比特之前设置第一标识符,所述第一标识符指示在所述第Q层采用广度优先的方式,对所述第一节点的子节点进行编码或解码。
  27. 根据权利要求25所述的设备,其特征在于,所述设备用于解码端, 所述第二编码或解码单元进一步用于:
    在所述第Q层对应的比特之前获取第一标识符的情况下,在所述第Q层,采用广度优先的方式,对所述第一节点的子节点进行解码,所述第一标识符指示在所述第Q层采用广度优先的方式,对所述第一节点的子节点进行编码或解码。
  28. 根据权利要求26或27所述的设备,其特征在于,在所述第Q层为所述第N层以下的层中,首个对所述第一节点的子节点采用广度优先的方式进行编码或解码的层时,在所述第Q层对应的比特之前设置有所述第一标识符。
  29. 根据权利要求26至28中任一项所述的设备,其特征在于,所述第一标识符包括前缀和后缀,一个节点的索引值包括前缀和后缀;
    所述第一标识符的前缀的比特取值等于所述一个节点的索引值的前缀的比特取值;
    所述第一标识符的后缀的比特数量等于所述一个节点的索引值的后缀的比特数量,所述第一标识符的后缀的比特取值不等于所述一个节点的索引值的后缀的比特取值;
    所述一个节点的索引值的前缀的比特数量等于其他节点的索引值的比特数量,且所述一个节点的索引值的前缀的比特取值不同于其他节点的索引值。
  30. 根据权利要求21至29中任一项所述的设备,其特征在于,所述设备用于编码端,所述第二编码或解码单元进一步用于:
    在描述所述第一节点进行子节点划分情况的比特之前,设置第二标识符,所述第二标识符指示采用从广度优先切换到深度优先的方式对所述第一节点进行编码或解码。
  31. 根据权利要求21至29中任一项所述的设备,其特征在于,所述设备用于解码端,所述第二编码或解码单元用于:
    在描述所述第一节点进行子节点划分情况的比特之前获取第二标识符的情况下,采用深度优先的方式对所述第一节点进行解码;其中,所述第二标识符指示采用从广度优先切换到深度优先的方式对所述第一节点进行编码或解码。
  32. 根据权利要求31所述的设备,其特征在于,在描述所述第一节点 进行子节点划分情况的比特之前获取第二标识符表征第一节点中的全部三维数据点落入到所述第一节点下的第M层的同一个节点内。
  33. 根据权利要求30至32中任一项所述的设备,其特征在于,所述第二标识符为多个零或一,零或一的数量等于所述第N层的节点的数量。
  34. 根据权利要求21至33中任一项所述的设备,其特征在于,所述第一编码或解码单元进一步用于:
    在所述第N层之下的层,采用广度优先的方式,对第二节点的子节点进行编码或解码,其中,所述第二节点包括所述第N层的节点中除所述第一节点之外的任一节点。
  35. 根据权利要求34所述的设备,其特征在于,所述第一编码或解码单元进一步用于:
    在采用广度优先的方式,对所述第二节点的子节点进行编码或解码时,跳过所述第一节点的子节点。
  36. 根据权利要求21至35中任一项所述的设备,其特征在于,在所述第N层存在多个所述第一节点时,任一个所述第一节点及其子节点的编码处理与其他所述第一节点及其子节点的编码或解码处理是并行的。
  37. 根据权利要求21至36中任一项所述的设备,其特征在于,所述第一节点及其子节点的编码或解码处理是与以下处理并行的:
    所述第N层中除所述第一节点之外的节点及其子节点的编码或解码处理。
  38. 根据权利要求21至37中任一项所述的设备,其特征在于,八叉树编码或解码的是所述三维数据点集的位置坐标。
  39. 根据权利要求38所述的设备,其特征在于,还包括第三编码或解码单元,用于:
    利用二值化编码或解码的方式,或层次编码方案,对所述三维数据点集中的三维数据点的属性进行编码或解码。
  40. 根据权利要求21至39中任一项所述的设备,其特征在于,所述多叉树为八叉树。
  41. 根据权利要求21所述的设备,其特征在于,所述第二编码或解码单元,具体用于在所述第N层的第一节点含有一个三维数据点的情况下,采用深度优先的方式对所述第一节点进行编码或解码。
  42. 根据权利要求21所述的设备,其特征在于,所述第二编码或解码单元,具体用于在所述第N层的第一节点含有一个三维数据点,且所述第一节点的边长大于阈值的情况下,采用深度优先的方式对所述第一节点进行编码或解码。
  43. 根据权利要求41或42所述的设备,其特征在于,所述第一节点的三维数据点在第K层对应的比特取值包括索引值,所述索引值为预设的固定值。
  44. 根据权利要求43所述的设备,其特征在于,所述索引值固定为111。
  45. 根据权利要求1所述的方法,其特征在于,所述方法包括:
    在所述第N层的第一节点含有一个三维数据点的情况下,采用深度优先的方式对所述第一节点进行编码或解码。
  46. 根据权利要求1所述的方法,其特征在于,所述方法包括:
    在所述第N层的第一节点含有一个三维数据点,且所述第一节点的边长大于阈值的情况下,采用深度优先的方式对所述第一节点进行编码或解码。
  47. 根据权利要求45或46所述的方法,其特征在于,所述第一节点的三维数据点在第K层对应的比特取值包括索引值,所述索引值为预设的固定值。
  48. 根据权利要求47所述的方法,其特征在于,所述索引值固定为111。
  49. 一种用于三维数据点集处理的设备,其特征在于,包括处理器,所述处理器用于处理根据权利要求1至20、45-48中任一项所述的方法。
  50. 一种计算机可读存储介质,其特征在于,用于存储代码,所述代码用于使得处理器执行根据权利要求1至20、45-48中任一项所述的方法。
PCT/CN2019/071240 2019-01-10 2019-01-10 用于三维数据点集处理的方法和设备 Ceased WO2020143007A1 (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/CN2019/071240 WO2020143007A1 (zh) 2019-01-10 2019-01-10 用于三维数据点集处理的方法和设备
CN201980005156.XA CN111247802B (zh) 2019-01-10 2019-01-10 用于三维数据点集处理的方法和设备
US17/371,819 US20210335019A1 (en) 2019-01-10 2021-07-09 Method and device for processing three-dimensional data point set

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/071240 WO2020143007A1 (zh) 2019-01-10 2019-01-10 用于三维数据点集处理的方法和设备

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/371,819 Continuation US20210335019A1 (en) 2019-01-10 2021-07-09 Method and device for processing three-dimensional data point set

Publications (1)

Publication Number Publication Date
WO2020143007A1 true WO2020143007A1 (zh) 2020-07-16

Family

ID=70866466

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/071240 Ceased WO2020143007A1 (zh) 2019-01-10 2019-01-10 用于三维数据点集处理的方法和设备

Country Status (3)

Country Link
US (1) US20210335019A1 (zh)
CN (1) CN111247802B (zh)
WO (1) WO2020143007A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115170747A (zh) * 2021-06-15 2022-10-11 中移(成都)信息通信科技有限公司 路径规划的方法、装置、电子设备及计算机存储介质

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021109153A1 (zh) * 2019-12-06 2021-06-10 深圳市大疆创新科技有限公司 一种用于点云处理、解码的方法、设备及存储介质
US11741637B2 (en) * 2020-02-10 2023-08-29 Tencent America LLC Node-based geometry and attribute coding for a point cloud
WO2021248339A1 (zh) * 2020-06-09 2021-12-16 深圳市大疆创新科技有限公司 点云的编解码方法和装置
CN112689997B (zh) * 2020-06-10 2023-06-20 深圳市大疆创新科技有限公司 点云的排序方法和装置
CA3184622A1 (en) * 2020-06-18 2021-12-23 Lg Electronics Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method
CN115917602A (zh) * 2020-06-30 2023-04-04 索尼集团公司 信息处理装置和方法
JP2023549021A (ja) 2020-09-25 2023-11-22 オッポ広東移動通信有限公司 点群符号化方法、点群復号化方法及び関連装置
JP2023543752A (ja) 2020-09-25 2023-10-18 オッポ広東移動通信有限公司 点群コーデック方法及びシステム、並びに点群エンコーダ及び点群デコーダ
WO2022067776A1 (zh) * 2020-09-30 2022-04-07 Oppo广东移动通信有限公司 点云的解码、编码方法、解码器、编码器和编解码系统
JP7678112B2 (ja) * 2020-12-22 2025-05-15 オッポ広東移動通信有限公司 点群の符号化方法、復号化方法、エンコーダ及びデコーダ
CN112817538B (zh) * 2021-02-22 2022-08-30 腾讯科技(深圳)有限公司 数据处理的方法、装置、设备和存储介质
EP4152264A1 (en) * 2021-09-17 2023-03-22 Beijing Xiaomi Mobile Software Co., Ltd. Method and apparatus of encoding/decoding point cloud geometry data sensed by at least one sensor
CN114624719B (zh) * 2022-01-18 2025-08-15 深圳市恒天伟焱科技股份有限公司 测距方法、装置、电子设备及存储介质
CN118923107A (zh) * 2022-04-16 2024-11-08 Oppo广东移动通信有限公司 索引确定方法、装置、解码器以及编码器
KR20250079887A (ko) * 2023-11-27 2025-06-04 한국전자통신연구원 계층적 양자화에 기반한 잠재 표현 부호화/복호화 방법 및 이를 기록한 컴퓨터로 판독 가능한 기록 매체

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1681330A (zh) * 2004-03-08 2005-10-12 三星电子株式会社 自适应2n叉树生成方法及3D体数据编码和解码方法和设备
CN105468375A (zh) * 2015-11-30 2016-04-06 扬州大学 一种面向面结构光点云数据的对应点搜索结构的构建方法
CN106846425A (zh) * 2017-01-11 2017-06-13 东南大学 一种基于八叉树的散乱点云压缩方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104040592A (zh) * 2011-11-07 2014-09-10 汤姆逊许可公司 预测位置编码
CN104809760B (zh) * 2015-05-07 2016-03-30 武汉大学 基于深度优先策略的地理空间三维外轮廓自动构建方法
US11514613B2 (en) * 2017-03-16 2022-11-29 Samsung Electronics Co., Ltd. Point cloud and mesh compression using image/video codecs

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1681330A (zh) * 2004-03-08 2005-10-12 三星电子株式会社 自适应2n叉树生成方法及3D体数据编码和解码方法和设备
CN105468375A (zh) * 2015-11-30 2016-04-06 扬州大学 一种面向面结构光点云数据的对应点搜索结构的构建方法
CN106846425A (zh) * 2017-01-11 2017-06-13 东南大学 一种基于八叉树的散乱点云压缩方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS: "Octree and Space Search", 1 November 2018 (2018-11-01), pages 1 - 5, XP009521971, Retrieved from the Internet <URL:https://www.adastaybrave.com/pcl%E4%B8%8E%E7%82%B9%E4%BA%91%E4%B8%87%E8%B1%A1/2018/11/01/%E5%85%AB%E5%8F%89%E6%A0%91%E4%B8%8E%E7%A9%BA%E9%97%B4%E6%90%9C%E7%B4%A2/> *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115170747A (zh) * 2021-06-15 2022-10-11 中移(成都)信息通信科技有限公司 路径规划的方法、装置、电子设备及计算机存储介质

Also Published As

Publication number Publication date
US20210335019A1 (en) 2021-10-28
CN111247802B (zh) 2023-07-07
CN111247802A (zh) 2020-06-05

Similar Documents

Publication Publication Date Title
CN111247802B (zh) 用于三维数据点集处理的方法和设备
CN111247798B (zh) 对三维数据点集进行编码或解码的方法和设备
CN112740702B (zh) 点云的编解码方法和装置
US20220108494A1 (en) Method, device, and storage medium for point cloud processing and decoding
WO2020243874A1 (zh) 点云数据的位置坐标的编解码方法、系统和存储介质
KR20220166790A (ko) 지오메트리 기반 포인트 클라우드 압축에서의 각도 및 방위각 모드들에 대한 레이저 각도들의 코딩
EP4052474A1 (en) Angular priors for improved prediction in tree-based point cloud coding
KR20220166793A (ko) 지오메트리 기반 포인트 클라우드 압축을 위한 각도 모드 단순화
CN114503440A (zh) 基于树的点云编解码的角度模式
KR20220164702A (ko) 지오메트리 기반 포인트 클라우드 압축에서의 각도 및 방위각 모드들에 대한 레이저 각도들의 코딩
CN113632492B (zh) 一种用于点云处理、解码的方法、设备及存储介质
KR20220166792A (ko) 지오메트리 기반 포인트 클라우드 압축을 위한 각도 모드 단순화
US12198390B2 (en) Three-dimensional data point encoding and decoding method and device
US20210343047A1 (en) Three-dimensional data point encoding and decoding method and device
EP4172941A1 (en) Sorted laser angles for geometry-based point cloud compression (g-pcc)
KR20230084147A (ko) 포인트 클라우드 압축을 위한 예측 기하학 코딩에서의 레이저 인덱스 클리핑
CN109754455A (zh) 用于进行渲染的系统、方法和计算机可读介质
US20220108493A1 (en) Encoding/decoding method and device for three-dimensional data points
CN112689997B (zh) 点云的排序方法和装置
US12425658B2 (en) Predictive geometry coding for point cloud compression
US20250054195A1 (en) Coding apparatus, coding method and program
JP2026514749A (ja) 点群圧縮におけるエントロピー継続及び従属フレームエントロピーコーディング
HK40079981A (zh) 基於幾何的點雲壓縮中的角模式和方位角模式的激光角度譯碼

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19909497

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19909497

Country of ref document: EP

Kind code of ref document: A1