WO2020143005A1 - 对三维数据点集进行编码或解码的方法和设备 - Google Patents

对三维数据点集进行编码或解码的方法和设备 Download PDF

Info

Publication number
WO2020143005A1
WO2020143005A1 PCT/CN2019/071238 CN2019071238W WO2020143005A1 WO 2020143005 A1 WO2020143005 A1 WO 2020143005A1 CN 2019071238 W CN2019071238 W CN 2019071238W WO 2020143005 A1 WO2020143005 A1 WO 2020143005A1
Authority
WO
WIPO (PCT)
Prior art keywords
data point
dimensional data
binary
code stream
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/071238
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 CN201980005064.1A priority Critical patent/CN111247798B/zh
Priority to PCT/CN2019/071238 priority patent/WO2020143005A1/zh
Publication of WO2020143005A1 publication Critical patent/WO2020143005A1/zh
Priority to US17/372,042 priority patent/US20210335016A1/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/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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/005Statistical coding, e.g. Huffman, run length coding
    • 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/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/17Methods 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 an image region, e.g. an object
    • H04N19/176Methods 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 an image region, e.g. an object the region being a block, e.g. a macroblock
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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 encoding or decoding a three-dimensional data point set.
  • 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. In order to reduce the bandwidth occupied by the data storage and transmission of the 3D data point set, it is necessary to encode and compress the data of the 3D data point set. In the process of encoding and compressing three-dimensional data point sets, the encoding of position coordinates is usually performed separately from the encoding of attributes. When encoding attributes, a layered encoding method can be used.
  • this coding method needs to build a hierarchical structure, and it is necessary to traverse all 3D data points multiple times when selecting a reference point for the position of each 3D data point set.
  • This method will have a large time when encoding and decoding
  • the overhead especially when the data volume of the 3D data point set is large, the cost of this time complexity is particularly obvious.
  • the header information about the attribute in the encoded code stream needs to describe the relevant information about the layered encoding attribute.
  • the proportion of the compressed code stream will be It is relatively large, which becomes the bottleneck restricting the compression rate.
  • Embodiments of the present application provide a method and device for encoding or decoding a three-dimensional data point set, which can simplify the encoding and decoding method and reduce the time overhead of encoding and decoding, and can increase the compression rate.
  • a method for encoding a three-dimensional data point set including: encoding position coordinates of at least one three-dimensional data point set in a three-dimensional data point set to obtain a first binary code stream; The position coordinate sequence of the position coordinates of the at least one three-dimensional data point after encoding, and binary encoding the attributes of the at least one three-dimensional data point to obtain a second binary code stream; The binary code stream and the second binary code stream are entropy coded.
  • a method for decoding a three-dimensional data point set including: entropy decoding a code stream to be decoded of a three-dimensional data point set to obtain a first binary code stream and a second binary code Stream; decode position coordinates of the first binary code stream to obtain position coordinates of at least one three-dimensional data point in the three-dimensional data point set; in accordance with the decoded position coordinate order of the at least one three-dimensional data point , Perform binary decoding on the second binary code stream to obtain the attribute of the at least one three-dimensional data point.
  • a device for encoding a three-dimensional data point set including: a position coordinate encoding unit for encoding position coordinates of at least one three-dimensional data point in a three-dimensional data point set to obtain a first Binary code stream; Binary coding unit for binary coding the attributes of the at least one three-dimensional data point according to the position coordinate sequence after the position coordinates of the at least one three-dimensional data point are encoded to obtain A second binary code stream; an entropy encoding unit, used for entropy encoding the first binary code stream and the second binary code stream, respectively.
  • a device for decoding a three-dimensional data point set including: an entropy decoding unit for entropy decoding a code stream to be decoded of a three-dimensional data point set to obtain a first binary code stream and A second binary code stream; a position coordinate decoding unit for decoding the position coordinates of the first binary code stream to obtain the position coordinates of at least one three-dimensional data point in the three-dimensional data point set; binary The decoding unit is configured to perform binary decoding on the second binary code stream according to the decoded position coordinate order of the at least one three-dimensional data point to obtain the attribute of the at least one three-dimensional data point.
  • 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 first or second aspect Operation in the method.
  • a computer storage medium in which a program code is stored, and the program code may be used to instruct to perform the method of the first or second aspect.
  • a computer program product includes program code, and the program code may be used to instruct to perform the method of the first or second aspect.
  • the binary encoding of the attribute of at least one three-dimensional data point in the three-dimensional data point set can avoid the problem of high coding complexity caused by the layered coding method, thereby simplifying the coding method and The time overhead of coding and decoding is reduced, and the binary coding method does not need to add more coding information in the code stream, so that the compression rate can be improved.
  • FIG. 1 is a schematic block diagram of a method for encoding a three-dimensional data point set.
  • FIG. 2 is a schematic block diagram of another method for encoding a three-dimensional data point set.
  • FIG. 3 is a schematic block diagram of a method for decoding a three-dimensional data point set.
  • FIG. 4 is a schematic block diagram of another method for decoding a three-dimensional data point set.
  • LOD level of detail
  • FIG. 6 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. 7 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. 8 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. 9 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. 10 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. 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.
  • FIG. 12 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. 13 is a schematic block diagram of another method for decoding a three-dimensional data point set according to an embodiment of the present application.
  • FIG. 14 is a schematic diagram of cubic octree partitioning according to an embodiment of the present application.
  • 15 is a schematic diagram of an octree coding scheme according to an embodiment of the present application.
  • 16 is a schematic diagram of a distance measuring device 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 scanning pattern according to an embodiment of the present application.
  • 19 is a schematic block diagram of a device for encoding a three-dimensional data point set according to an embodiment of the present application.
  • 20 is a schematic block diagram of a device for decoding 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 number of three-dimensional data points included in the three-dimensional data point set is usually large.
  • the three-dimensional data point set data is input to the encoder; in 120, the position coordinates in the three-dimensional data point set data are quantized; in 130, after the quantization Encode the position coordinates of the location coordinates; in 140, encode the attributes in the three-dimensional data point set data in the order of the position coordinates after encoding the position coordinates; in 150, encode the code stream obtained by encoding the position coordinates and The code stream obtained after the attribute encoding is entropy encoded; in 160, the encoded three-dimensional data point set data is output, for example, it can be output to a memory for storage, or it can be transmitted to the decoding end.
  • the code stream to be decoded of the three-dimensional data point set data is obtained, for example, the code stream can be obtained from the memory, or the code stream transmitted by the encoding end is obtained; at 220 In the code stream, entropy decoding can be performed 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 The coordinates are inversely quantized; 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 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 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 weights can be separately calculated according to 1 reference point, 2 reference points up to N reference points 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.
  • this coding method needs to traverse all 3D data points multiple times when selecting a near reference point for each 3D data point when constructing a hierarchical structure.
  • This method will have a large time overhead when encoding and decoding, especially When the data volume of the three-dimensional data point set is large, the cost of this time complexity is particularly obvious.
  • the header information about the attribute in the coded code stream needs to describe the relevant information about the layered coding attribute, that is, the LOD, which specifically includes the selection of the near reference point (for calculating the position coordinates of the residual) when making predictions at each layer ) 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, the residuals are quantized to a residual interval of 0), in which the last three attributes need to be set for each layer of the LOD, and the attributes of each layer need to be written into the stream header information.
  • the LOD which specifically includes the selection of the near reference point (for calculating the position coordinates of the residual) when making predictions at each layer ) Points (numberOfNeighborsInPrediction
  • the embodiments of the present application provide the following solutions, which can simplify the codec method to reduce the time overhead of codec, and can increase the compression rate.
  • FIG. 6 is a method 300 for encoding a three-dimensional data point set according to an embodiment of the present application.
  • the method 300 may be implemented by an encoder.
  • the method 300 includes at least part of the following content.
  • the encoder encodes position coordinates of at least one three-dimensional data point in the three-dimensional data point set to obtain a first binary code stream.
  • the encoder performs binary encoding on the attributes of the at least one three-dimensional data point according to the position coordinate sequence after encoding the position coordinates of the at least one three-dimensional data point to obtain a second binary code stream.
  • the encoder performs entropy coding on the first binary code stream and the second binary code stream, which may specifically be arithmetic coding. Furthermore, the encoder can store or transmit the entropy-encoded code stream to the decoding end.
  • a method 400 for decoding a three-dimensional data point set is proposed below.
  • the method 400 can be implemented by a decoder. As shown in FIG. 7, the method 400 includes at least part of the following content.
  • the decoder entropy decodes the code stream to be decoded of the three-dimensional data point set to obtain a first binary code stream and a second binary code stream.
  • the code stream to be decoded can be transmitted to the decoder by the encoding end or read from the memory by the decoder.
  • the decoder performs position coordinate decoding on the first binary code stream to obtain position coordinates of at least one three-dimensional data point in the three-dimensional data point set.
  • the decoder performs binary decoding on the second binary code stream to obtain the attribute of the at least one three-dimensional data point.
  • the binary encoding of the attribute of at least one three-dimensional data point in the three-dimensional data point set can avoid the problem of high coding complexity caused by the layered coding method, thereby simplifying the coding method and The time overhead of coding and decoding is reduced, and the binary coding method does not need to add more coding information in the code stream, so that the compression rate can be improved.
  • 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.
  • FIGS. 6 and 7 may be part of the steps of the encoding and decoding process, and the encoding and decoding processes in the embodiments of the present application may also include other steps.
  • the position coordinates may also be quantized.
  • the data of the three-dimensional data point set is input to the encoder; in 520, the position coordinates in the data of the three-dimensional data point set are quantized; in 530, the position coordinates of the quantized position coordinates Encoding; in 540, according to the order of the position coordinates after the position coordinates are encoded, the attributes in the data of the three-dimensional data point set are binarized encoded; in 550, the code stream obtained after encoding the position coordinates and the attribute encoding The resulting code stream is entropy encoded; in 560, 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 transmitted to the decoding end.
  • the decoded position coordinates can also be inversely quantized.
  • the code stream to be decoded of the data of the three-dimensional data point set is obtained, for example, the code stream can be obtained from the memory or the code stream transmitted by the encoding end; in 620, the code stream is entropy decoded, The code stream corresponding to the position coordinates and the code stream corresponding to the attributes can be obtained; in 630, the code stream corresponding to the position coordinates is decoded in position coordinates; in 640, the decoded position coordinates are inversely quantized; in 650, the Perform binary decoding on the attributes in the order of the decoded position coordinates; 660, according to the decoded attributes and position coordinates, obtain the data of the decoded three-dimensional data point set.
  • 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 for example, step 525 shown in FIG. 9 may be removed, that is, the position coordinates after the quantization of the at least two position coordinates are one ( For example, referred to as the first position coordinate), correspondingly, at least two values of the attribute may be merged (for example, step 535 shown in FIG. 9) to obtain a value, for example, weighted combination may be performed.
  • 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 turn, and corresponding to the order of the three-dimensional data points in order to achieve the correspondence between the position coordinates and the 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. 10, after quantization at 520, you can choose to directly encode the position coordinates in 530, and do not perform the attribute combination in 535, but directly perform the binary encoding in 540. Alternatively, the encoder may choose to remove the repeated coordinates in 525, then encode the position coordinates in 530, and merge the attributes in 535, and then perform the binary encoding in 540 after quantization at 520.
  • the three-dimensional data points may be encoded according to packets, and correspondingly, at the decoding end, the three-dimensional data points may be decoded according to packets.
  • the three-dimensional data points may be subcontracted in 515.
  • each package can be merged to obtain the reconstructed 3D data point set data.
  • the encoding end subcontracts the three-dimensional data points
  • the number of transmitted three-dimensional data points reaches a preset value
  • it is considered that a three-dimensional data point set package is obtained, and the three-dimensional data in the three-dimensional data point set package Point set to encode.
  • the number of three-dimensional data points included in the three-dimensional data point set package may be determined based on the processing capacity and compression rate requirements of the encoding end, or may be determined based on other factors, which is not specifically limited in the embodiments of the present application.
  • processing the three-dimensional data points according to the three-dimensional data point set package can make the number of three-dimensional data points processed each time not exceed a certain number.
  • a layered coding scheme if a layered coding scheme is used, Relevant information about the layered encoding attribute, LOD, will occupy a large proportion, which will result in a low compression rate, and if the attribute is binarized, this situation can be avoided and the compression rate can be improved.
  • the attribute in the embodiment of the present application may be an attribute having one component, for example, the attribute may be reflectance.
  • the binary encoding method for this type of attribute can be used to avoid compression loss, and to avoid too much transmission bandwidth or storage of the compressed code stream space.
  • the attribute in the embodiment of the present application may also have more than one component, which is not specifically limited in the embodiment of the present application.
  • the binary code stream is obtained after the binary encoding.
  • the string before the binary encoding may be binary or non-binary, for example, it may be a string of decimal or octal.
  • the object of the binary decoding can be a binary code stream
  • the character string obtained by the binary decoding can be a binary character string or a non-binary character string, for example, it can be a decimal or octal character string.
  • 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.
  • the fixed-length code encoding method may refer to converting the attribute corresponding to the position coordinate of each 3D data point in the 3D data point set into a binary value, and the number of bits occupied by the value is fixed, that is, the converted value may be called a fixed value Long codes, where the depth of fixed-length codes is fixed.
  • the depth of the fixed-length code can be written into the code stream, specifically, it can be written into the header information of the code stream.
  • the decoding end may obtain the depth of the fixed-length code from the header information of the code stream, and based on the depth of the fixed-length code, obtain the attributes corresponding to the position coordinates.
  • the depth of the fixed-length code may be known to the encoding end and the decoding end.
  • the depth of the fixed-length code is preset at the encoding end and the decoding end, respectively. In this case, it is not necessary to write the fixed length in the code stream.
  • the depth of the long code is not necessary to write the fixed length in the code stream.
  • the depth of the fixed-length code may vary to a certain extent.
  • each 3D data point set packet may correspond to a fixed-length code depth, and the depth of the fixed-length code corresponding to different 3D data point set packets may be different.
  • the fixed-length codes of the depth corresponding to the three-dimensional data point set package can be used for binary encoding, and the depth can be Write to the header information of the code stream corresponding to the three-dimensional data point set packet.
  • the decoding end when it decodes each 3D data point set packet, it can obtain the depth of the fixed-length code corresponding to the 3D data point set packet from the header information of the 3D data point set packet, and based on the fixed-length code The depth, decode the attribute corresponding to each position coordinate of the 3D data point set package.
  • the depth of the fixed-length code may be determined based on the set of three-dimensional data points to be encoded.
  • bit depth of the fixed-length code may be determined according to the maximum value of the attributes of the three-dimensional data points in the set of three-dimensional data points to be encoded and/or the value distribution of the attributes of the at least one three-dimensional data point.
  • the encoding end may determine the number of bits occupied by the maximum value of the attribute of the three-dimensional data point to be encoded as the depth of the fixed-length code.
  • the maximum value of the attribute of the three-dimensional data point is 20 (decimal), then it takes 5 bits when generating the value as a binary string, and the depth of the fixed-length code can be 5, if some attributes are taken If the value is less than 20, the corresponding binary character string actually occupies less than 5 bits, and the upper bits can be padded with 0, so that the number of occupied bits reaches 5.
  • the encoding end may determine the depth of the fixed-length code according to the value distribution of the attributes of the three-dimensional data points. Specifically, if the value of the attribute is mostly less than or equal to a certain value, the number of bits occupied by the binary string corresponding to the value can be determined as the depth of the fixed-length code. For attributes with a value greater than the value Encode according to this value.
  • the depth of the fixed-length code can be 5, if some attributes are taken If the value is less than 20, the corresponding binary string actually occupies less than 5 bits, then you can fill in the high-order 0, so that the number of occupied bits reaches 5, if some attribute values are greater than 20, the corresponding binary If the actual number of bits occupied by the character string is greater than 5 bits, the value of this attribute is corrected to 20, that is, the number of occupied bits is unified to 5 bits.
  • the encoding end may determine the depth of the fixed-length code according to the maximum value of the attribute of the three-dimensional data point to be encoded and the value distribution of the attribute of the three-dimensional data point. Specifically, if the value of the attribute is mostly less than or equal to a certain value, and the difference between the value and the maximum value is less than or equal to a certain value, the number of bits occupied by the binary string corresponding to the value can be determined as a fixed The depth of the long code can be coded according to this value for attributes larger than this value.
  • the depth of the fixed-length code can be 5, if some attributes have a value less than 20, their corresponding If the actual number of bits occupied by the binary string is less than 5 bits, you can add 0 to the upper bits to make the number of occupied bits reach 5. If the value of some attributes is greater than 20, the corresponding number of bits occupied by the corresponding binary string is greater than 5 bits, the value of this attribute is corrected to 20, that is, the number of occupied bits is unified into 5 bits.
  • the encoding end may also determine the bit depth of the fixed-length code based on the hardware processing capability of the three-dimensional data point set when the data collection device works.
  • the hardware processing capability may determine the depth of the fixed-length code, and the encoding end may determine the depth of the fixed-length code based on this. For example, the hardware processing capacity determines the maximum value of the attribute, then the hardware processing capacity may indicate the depth corresponding to the maximum value.
  • the depth of the fixed-length code may also be preset at the encoding end.
  • the encoding end may use the preset depth of the fixed-length code to encode the attribute without considering the encoded code Flow characteristics.
  • the depth of the fixed-length code may also be preset at the decoding end, and the encoding end does not need to write the depth of the fixed-length code in the code stream.
  • a threshold value cMax a Rice parameter R
  • an attribute value Ref a Rice parameter R
  • the truncated Rice code is formed by connecting the prefix code P and the suffix code S in series.
  • the calculation method of the prefix code P is shown in Equation 1:
  • the prefix code consists of P 1s and a 0, and the length is P+1; if P is greater than or equal to the value (cMax>>R), the prefix code is (cMax>>R ) 1 unit, the length is (cMax>>R).
  • the suffix code S is a binary string and the length is R.
  • Ref is greater than or equal to cMax, there is no suffix code.
  • the truncated Rice code After acquiring the truncated Rice code at the encoding end, the truncated Rice code can be sequentially sent to the arithmetic coding engine for arithmetic coding according to the sequence of the position coordinate encoding, and finally the compressed encoded code stream is obtained. After obtaining the code stream to be decoded, the decoding end can decode the code stream to be decoded according to the threshold value cMax and the Rice parameter R.
  • the parameter threshold cMax and the Rice parameter R used for truncating Rice coding may be determined by the hardware processing capability and waiting time of the data acquisition device at the encoding end based on the three-dimensional data point set.
  • the maximum value of the encoded attribute and/or the distribution interval of the value of the attribute are determined, and may also be determined based on other parameters.
  • all the 3D data point set packages may have the same parameter threshold cMax and/or Rice
  • the parameter R or different three-dimensional data point set packages may have different parameter thresholds cMax and/or Rice parameter R.
  • the above-mentioned threshold value cMax and Rice parameter R may be written into the code stream, and specifically may be written into the header information of the code stream, so that the decoding end may be based on the cMax Decode with Rice parameter R.
  • one of the two parameters may also be written in the code stream, and the other parameter may be preset at the decoding end; or both parameters may be preset at the decoding end.
  • the K-order index Columbus coding method may include the following steps.
  • Step 1 Write the number N in binary form, remove the lowest k bits, and add 1 afterwards.
  • Step 2 Calculate the number of bits left, and reduce this number by one, that is, the number of prefix zeros to be added.
  • Step 3 The lowest k bits removed in step one are added back to the tail of the bit string, that is, the K-order exponential Golomb code is obtained.
  • the following uses the attribute as the reflectivity, and the attribute value is 4, and the value of K is 1 as an example.
  • steps 1 and 4 The binary representation of steps 1 and 4 is 100, the lowest one bit is removed, 0 becomes 10, and after adding 1, it becomes 11.
  • Step 3 Add the 0 removed in step 1 to the lowest bit of the bit string, and the final codeword is 0110, that is, the first-order exponential Golomb code is obtained.
  • the prefix is composed of m consecutive 0s and a 1
  • the suffix is composed of m+k, which is a binary representation of N-2 k (2 m -1).
  • the value of the attribute can be binarized to obtain a binary code stream.
  • the encoding end can sequentially send the binary code stream to the entropy encoding engine in order of position coordinate encoding for arithmetic encoding, and finally obtain the compressed encoded code stream.
  • the decoding end can decode the k-th order Columbus code that stores the attribute information according to the position sequence after decoding the position coordinates.
  • the k-order exponential Golomb code When parsing the k-order exponential Golomb code, first look for the first non-zero bit from the current position of the bit stream, and record the number of zero bits found as m, and the m+k binary bit string after the first non-zero bit The decimal value is the value, and the calculated decode value codeNum is shown in Equation 3.
  • Decoding the kth order exponential Golomb code can obtain the attribute information corresponding to the reconstructed position coordinates. According to this process, the data of the three-dimensional data point set can be decoded.
  • the value of K may be written into the code stream, for example, the header information of the code stream may be written, and the decoding end may perform according to the value of K in the code stream decoding.
  • the value of the K may also be preset at the decoding end. In this case, the encoding end does not need to write the K in the code stream.
  • the value of K used for K-order exponential Columbus coding may be the hardware processing capability of the data collection device based on the three-dimensional data point set at the encoding end when working, and the maximum attribute to be encoded
  • the distribution interval of values and/or attribute values may be determined based on other parameters.
  • all 3D data point set packages may have the same value of K, or different 3D data points Packages can have different values of K.
  • the position coordinate coding in the embodiment of the present application may adopt an octree coding method.
  • the largest cube of the octree can be initialized; based on the largest cube, octree tree division is performed recursively, where the octree tree division includes: using the center point of the current block of the current layer
  • the position coordinates are divided into eight sub-blocks to determine whether there are three-dimensional data points in each sub-block, and the sub-blocks with three-dimensional data points are further divided into sub-blocks until the side length of the sub-block is less than or equal to the preset value; according to each When three-dimensional data points are included in each block of a layer, the first binary code stream is generated.
  • the side length of the largest cube is an integer power of 2, and is the closest value among the integer power of 2 and is a value greater than or equal to a first value, where the first value is the three largest
  • the maximum value among the values, and the three maximum values are the maximum values on the three axes of the position coordinates of all three-dimensional data points in the three-dimensional data point set, respectively.
  • the position coordinates are first quantified, that is, the position coordinates are converted into integer coordinates greater than or equal to zero, and then the operation of removing duplicate coordinates can be selected whether or not to remove the duplicate coordinates .
  • the octree coding may specifically be a method of compressing coordinate positions using octree division.
  • Each layer of the octree can be divided into sub-blocks using the coordinates of the center point of the current block, and the current block can be divided into eight small sub-blocks through the center point, as shown in FIG. 14. After obtaining the sub-block division, it will determine whether there are 3D data points in each sub-block, and the sub-blocks with 3D data points will be further divided until the sub-block is divided to the minimum, that is, when the sub-block side length is 1, the division is stopped
  • the schematic diagram of recursive division of octree can be shown in Figure 15.
  • the largest cube of the octree can be initialized; according to the size of the largest cube, the first binary code stream is decoded byte by byte, the decoding includes: according to the current byte The value of each bit in the and the size of the current block determine whether to further divide the current block. If the value of the bit is 1, the current block is further divided into sub-blocks until the side length of the sub-block is less than or equal to The preset value; determine the position coordinates of the three-dimensional data point according to the sub-block whose side length is less than or equal to the preset value and the corresponding bit value is 1.
  • one byte includes 8 bits, and the value of the eight bits can be used to know whether the corresponding sub-block is further divided. If the value of the bit is 1, the corresponding sub-block needs to be further divided until The side length of a sub-block is 1, so that the position coordinates of the three-dimensional data point are determined according to the side length equal to 1 and the corresponding bit value being 1.
  • the number of three-dimensional data points corresponding to each block with a side length of 1 can also be stored in the code stream, and decoding these numbers knows that there are several three-dimensional data points corresponding to a quantized position coordinate.
  • the attribute code stream is continuous, and each attribute is decoded in turn, corresponding to the order of the previous three-dimensional data points in order to realize the correspondence between the position coordinates and the attributes.
  • 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 may 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. 16.
  • 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. 16 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.
  • FIG. 17 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 reflector 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, it is possible to reduce the blocking of the return light by the support of the small mirror in the case of using 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 light 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. 18 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. 19 is a schematic block diagram of an apparatus 700 for encoding a three-dimensional data point set according to an embodiment of the present application.
  • the device 700 includes:
  • the position coordinate encoding unit 710 is configured to encode position coordinates of at least one three-dimensional data point in the three-dimensional data point set to obtain a first binary code stream;
  • the binary encoding unit 720 is configured to perform binary encoding on the attributes of the at least one three-dimensional data point according to the position coordinate sequence after encoding the position coordinates of the at least one three-dimensional data point to obtain the second binary Code stream
  • the entropy encoding unit 730 is configured to entropy encode the first binary code stream and the second binary code stream, respectively.
  • the device 700 further includes an acquiring unit 740, configured to acquire a target three-dimensional data point set package before the position coordinate encoding unit performs the position coordinate encoding ,
  • the three-dimensional data point set is included in the target three-dimensional data point set package.
  • the obtaining unit 740 is further used to:
  • the package composed of the acquired 3D data points is determined as the target 3D data point set package.
  • the attribute has one component.
  • the attribute is used to characterize the reflectance at the corresponding position coordinate in the three-dimensional data point set.
  • the binary encoding unit 720 is further used to:
  • the attribute of the at least one three-dimensional data point is binary-coded using a fixed-length code encoding method, a truncated Rice encoding method, or a K-order exponential Golomb encoding method.
  • the binary encoding unit 720 is further used to:
  • the attribute of the at least one three-dimensional data point is binary-coded.
  • the binary encoding unit 720 is further used to:
  • the attribute of the at least one three-dimensional data point is binary-coded.
  • the binary encoding unit 720 is further used to:
  • the threshold value of the truncated Rice and/or the Rice parameter for shifting are written into the code stream ;or,
  • the value of K is written into the code stream.
  • the position coordinate encoding unit 710 is further used to:
  • the position coordinate encoding unit 710 is further used to:
  • the octree Based on the largest cube, recursively divide the octree, which includes dividing the eight sub-blocks using the position coordinates of the center point of the current block of the current layer to determine whether there is a three-dimensional in each sub-block For data points, the sub-blocks with three-dimensional data points are further divided into sub-blocks until the side length of the sub-block is less than or equal to a preset value;
  • the first binary code stream is generated according to the fact that each block of each layer includes three-dimensional data points.
  • the side length of the largest cube is an integer power of 2, and is the closest value to and greater than or equal to the first value of the integer power of 2, wherein the One value is the maximum value among the three maximum values, and the three maximum values are the maximum values on the three axes of the position coordinates of all three-dimensional data points in the three-dimensional data point set, respectively.
  • the device 700 further includes a quantization unit 750, which is used to:
  • the device 700 further includes a removal unit 760, which is used to:
  • the repeated position coordinates are removed from the quantized position coordinates.
  • the removing unit 760 is further used to:
  • the duplicate position coordinates are removed from the quantized position coordinates.
  • the device 700 further includes a merging unit 770, which is used to:
  • the first position coordinates therein correspond to at least two attributes, the at least two attributes are merged.
  • the position coordinate encoding unit further 710 is used to:
  • the number of attributes corresponding to the position coordinates is written in the code stream.
  • the device 700 may be used to implement the corresponding operations implemented by the encoding end in the above method, and for the sake of brevity, details are not described here.
  • FIG. 20 is a device 800 for decoding a three-dimensional data point set according to an embodiment of the present application.
  • the device 800 includes:
  • the entropy decoding unit 810 is used for entropy decoding the code stream to be decoded of the three-dimensional data point set to obtain the first binary code stream and the second binary code stream;
  • a position coordinate decoding unit 820 configured to perform position coordinate decoding on the first binary code stream to obtain position coordinates of at least one three-dimensional data point in the three-dimensional data point set;
  • the binary decoding unit 830 is configured to perform binary decoding on the second binary code stream according to the decoded position coordinate order of the at least one three-dimensional data point to obtain the at least one three-dimensional data point Property.
  • the device 800 further includes an obtaining unit 840, which is used to:
  • a target three-dimensional data point set package is obtained, and the three-dimensional data point set is included in the target three-dimensional data point set package.
  • the device 800 further includes a merging unit 850, which is used to:
  • a plurality of acquired target 3D data point set packages are merged to obtain reconstructed 3D data point set data.
  • the attribute has one component.
  • the attribute is used to characterize the reflectance at the corresponding position coordinate in the three-dimensional data point set.
  • the binary decoding unit 830 is further used to:
  • the second binary code stream is binarizedly decoded.
  • the binary decoding unit 830 is further used to:
  • the binary decoding unit 830 is further used to:
  • the threshold value of truncated Rice and/or the value for shifting is obtained from the code stream to be decoded Rice parameter;
  • the value of K is obtained from the code stream to be decoded.
  • the position coordinate decoding unit 820 is further used to:
  • the position coordinate decoding unit 820 is further used to:
  • the decoding includes: according to the value of each bit in the current byte, and the size of the current block, determine whether to correct The current block is further divided, where if the bit value is 1, the current block is further divided into sub-blocks until the side length of the sub-block is less than or equal to the preset value; according to the side length less than or equal to the preset value and the corresponding A sub-block with a bit value of 1 determines the position coordinates of the three-dimensional data point.
  • the binary decoding unit 830 is further used to:
  • the attribute corresponding to the single position coordinate is binarized and decoded.
  • the device 800 further includes an inverse quantization unit 860, which is used to:
  • 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 900 according to an embodiment of the present application.
  • the computer system 900 may include a processor 910, and further may include a memory 920.
  • the computer system 900 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 920 is used to store computer executable instructions.
  • the memory 920 may be various types of memory, for example, may include high-speed random access memory (Random Access Memory, RAM), and may also include 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 910 is used to access the memory 920 and execute the computer-executable instructions to perform the operations in the method for encoding or decoding a three-dimensional data point set in the embodiment of the present application.
  • the processor 910 may include a microprocessor, a field-programmable gate array (Field-Programmable Array, FPGA), a central processing unit (CPU), a graphics processor (Graphics Processing Unit, GPU), etc., which is implemented in this application Examples are not limited to this.
  • a microprocessor a field-programmable gate array (Field-Programmable Array, FPGA), a central processing unit (CPU), a graphics processor (Graphics Processing Unit, GPU), etc., which is implemented in this application Examples are not limited to this.
  • the device and computer system for encoding or decoding a three-dimensional data point set according to an embodiment of the present application may correspond to the execution body of the method for encoding or decoding a three-dimensional data point set according to an embodiment of the present application, and are used to encode the three-dimensional data point set.
  • the above and other operations and/or functions of each module in the device for encoding or decoding and the computer system are 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 further provides an electronic device.
  • the electronic device may include the above-mentioned various embodiments of the present application to encode or decode a three-dimensional data point set or a computer system.
  • An embodiment of the present application further provides a computer storage medium, and the computer storage medium stores a program code, and the program code may be used to instruct to execute the method for encoding or decoding the three-dimensional data point set according to 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)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请实施例提供一种对三维数据点集进行编码或解码的方法和设备,可以简化编码方法并降低编解码的时间开销,并且可以提高压缩率。该方法包括:对三维数据点集中的至少一个三维数据点的位置坐标进行位置坐标编码,以得到第一二进制码流;按照所述至少一个三维数据点的位置坐标编码后的位置坐标顺序,对所述至少一个三维数据点的属性进行二值化编码,以得到第二二进制码流;分别对所述第一二进制码流和所述第二二进制码流进行熵编码。

Description

对三维数据点集进行编码或解码的方法和设备
版权申明
本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。
技术领域
本申请涉及信息处理领域,并且更具体地,涉及一种对三维数据点集进行编码或解码的方法和设备。
背景技术
三维数据点集是三维物体或场景的一种表现形式,是由空间中一组无规则分布、表达三维物体或场景的空间结构和表面属性的离散点所构成,一个三维数据集点的数据可以包括描述坐标信息的三维坐标,以及进一步包括该位置坐标的属性。为了准确反映空间中的信息,所需离散点的数目是巨大的。为了减少三维数据点集的数据存储和传输时所占用的带宽,需要对三维数据点集的数据进行编码压缩处理。在三维数据点集编码压缩过程中对位置坐标的编码通常与对属性的编码分开进行。在对属性进行编码时,可以采用分层编码的方法。
然而,这种编码方法需要构建分层结构,为每个三维数据点集的位置选择临近参考点时需要多次遍历全部三维数据点,这种方法在编码和解码的时候都会存在较大的时间开销,尤其是当三维数据点集的数据量较大时,这种时间复杂度所带来的代价尤为明显。并且在编码后的码流中关于属性的头信息需要描述关于分层编码属性的相关信息,这些信息在当三维数据点的数目不是很大的时候,在压缩后的码流的占比就会比较大,从而成为制约压缩率的瓶颈。
发明内容
本申请实施例提供一种对三维数据点集进行编码或解码的方法和设备,可以简化编解码方法并降低编解码的时间开销,并且可以提高压缩率。
第一方面,提供了一种对三维数据点集进行编码的方法,包括:对三维 数据点集中的至少一个三维数据点的位置坐标进行位置坐标编码,以得到第一二进制码流;按照所述至少一个三维数据点的位置坐标编码后的位置坐标顺序,对所述至少一个三维数据点的属性进行二值化编码,以得到第二二进制码流;分别对所述第一二进制码流和所述第二二进制码流进行熵编码。
第二方面,提供了一种对三维数据点集进行解码的方法,包括:对三维数据点集的待解码码流进行熵解码,以得到第一二进制码流和第二二进制码流;对所述第一二进制码流,进行位置坐标解码,以得到对三维数据点集中的至少一个三维数据点的位置坐标;按照所述至少一个三维数据点的解码后的位置坐标顺序,对所述第二二进制码流进行二值化解码,以得到所述至少一个三维数据点的属性。
第三方面,提供了一种对三维数据点集进行编码的设备,包括:位置坐标编码单元,用于对三维数据点集中的至少一个三维数据点的位置坐标进行位置坐标编码,以得到第一二进制码流;二值化编码单元,用于按照所述至少一个三维数据点的位置坐标编码后的位置坐标顺序,对所述至少一个三维数据点的属性进行二值化编码,以得到第二二进制码流;熵编码单元,用于分别对所述第一二进制码流和所述第二二进制码流进行熵编码。
第四方面,提供了一种对三维数据点集进行解码的设备,包括:熵解码单元,用于对三维数据点集的待解码码流进行熵解码,以得到第一二进制码流和第二二进制码流;位置坐标解码单元,用于对所述第一二进制码流,进行位置坐标解码,以得到对三维数据点集中的至少一个三维数据点的位置坐标;二值化解码单元,用于按照所述至少一个三维数据点的解码后的位置坐标顺序,对所述第二二进制码流进行二值化解码,以得到所述至少一个三维数据点的属性。
第五方面,提供了一种计算机系统,包括:存储器,用于存储计算机可执行指令;处理器,用于访问该存储器,并执行该计算机可执行指令,以进行上述第一或第二方面的方法中的操作。
第六方面,提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码可以用于指示执行上述第一或第二方面的方法。
第七方面,提供了一种计算机程序产品,该程序产品包括程序代码,该程序代码可以用于指示执行上述第一或第二方面的方法。
在本申请实施例中,对三维数据点集中的至少一个三维数据点的属性进 行二值化编码,可以避免分层编码方式所带来的编码复杂度较高的问题,从而可以简化编码方法并降低编解码的时间开销,并且二值化编码的方法无需在码流中加入较多的编码信息,从而可以提高压缩率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一种对三维数据点集进行编码的方法的示意性框图。
图2是另一种对三维数据点集进行编码的方法的示意性框图。
图3是一种对三维数据点集进行解码的方法的示意性框图。
图4是另一种对三维数据点集进行解码的方法的示意性框图。
图5是层次编码方案(level of detail,LOD)分层结构示意性图。
图6是根据本申请实施例的一种对三维数据点集进行编码的方法的示意性框图。
图7是根据本申请实施例的一种对三维数据点集进行解码的方法的示意性框图。
图8是根据本申请实施例的另一种对三维数据点集进行编码的方法的示意性框图。
图9是根据本申请实施例的另一种对三维数据点集进行编码的方法的示意性框图。
图10是根据本申请实施例的一种对三维数据点集进行编码的方法的示意性框图。
图11是根据本申请实施例的另一种对三维数据点集进行解码的方法的示意性框图。
图12是根据本申请实施例的另一种对三维数据点集进行编码的方法的示意性框图。
图13是根据本申请实施例的另一种对三维数据点集进行解码的方法的示意性框图。
图14是根据本申请实施例的立方体八叉树划分的示意性图。
图15是根据本申请实施例的一种八叉树编码方案的示意性图。
图16是根据本申请实施例的一种测距装置的示意性图。
图17是根据本申请实施例的一种测距装置的示意性图。
图18是根据本申请实施例的一种扫描图案的示意性图。
图19是根据本申请实施例的一种对三维数据点集进行编码的设备的示意性框图。
图20是根据本申请实施例的一种对三维数据点集进行解码的设备的示意性框图。
图21是根据本申请实施例的一种计算机系统的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
除非另有说明,本申请实施例所使用的所有技术和科学术语与本申请的技术领域的技术人员通常理解的含义相同。本申请中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本申请的范围。
三维数据点集可以由离散的三维数据点构成,每个三维数据点的数据可以包括描述该三维数据点的位置坐标的信息,以及进一步可以包括属性的信息。其中,三维数据点的位置坐标可以为三维位置坐标(x,y,z)。三维数据点的属性可以包括三维数据点的反射率和/或颜色等。
本申请实施例提到的三维数据点集可以为点云,相应地,三维数据点可以为点云点。本申请实施例提到的三维数据点集可以用于高精3D地图。
为了准确反映空间的信息,三维数据点集包括的三维数据点的数量通常是较大的。为了减少三维数据点集数据存储和传输时所占用的带宽,需要对三维数据点集的数据进行编码压缩处理。以下将结合图1至图2描述如何对三维数据点集进行编码和解码处理。
如图1和2所示的编码方法,在110中,向编码器中输入三维数据点集数据;在120中,对三维数据点集数据中的位置坐标进行量化;在130中, 对量化后的位置坐标进行位置坐标编码;在140中,按照位置坐标编码后的位置坐标的顺序,对三维数据点集数据中的属性进行属性编码;在150中,对位置坐标编码后得到的码流以及属性编码后得到的码流进行熵编码;在160中,输出编码后的三维数据点集数据,例如,可以输出到存储器中进行存储,或者,可以传送到解码端。
如图3和4所示的解码方法,在210中,获取三维数据点集数据的待解码码流,例如,可以从存储器中获取该码流,或者获取编码端传送的该码流;在220中,对该码流进行熵解码,可以得到位置坐标对应的码流和属性对应的码流;在230中,对位置坐标对应的码流进行位置坐标解码;在240中,对解码后的位置坐标进行逆量化;在250中,可以按照解码后的位置坐标的顺序,对属性进行解码;260,根据解码后的属性以及位置坐标,得到解码后的三维数据点集的数据。
其中,如图2所示,在140中,对属性的编码操作可以包括142、144和146;在142中,基于位置坐标编码后的位置坐标,生成层次编码方案(level of detail,LOD);在144中,基于层次编码方案,进行预测编码;在146中,对预测编码的结果进行量化。
如图4所示,在250中,对属性的解码操作可以包括252、254和256;在252中,对解码得到的属性码流进行逆量化;在254中,基于位置坐标解码后的位置坐标,生成层次解码方案;在256中,基于层次编码方案,进行预测解码。
在实际编码过程中,可以根据LOD配置的参数来进行LOD分层,其中,后面的层会包含有前面层的点。例如,如图5所示,在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每层都需要设定,每层的属性都需要写入码流头信息中。这些固定开销在当三维数据点数目不是很大的时候,在压缩后的码流的占比就会比较大,从而成为制约压缩率的瓶颈。
为此,本申请实施例提供了以下的方案,可以简化编解码方法以降低编解码的时间开销,并且可以提高压缩率。
图6是根据本申请实施例的一种对三维数据点集进行编码的方法300。该方法300可以由编码器实现。该方法300包括以下内容中的至少部分内容。
在310中,编码器对三维数据点集中的至少一个三维数据点的位置坐标进行位置坐标编码,以得到第一二进制码流。
在320中,编码器按照所述至少一个三维数据点的位置坐标编码后的位置坐标顺序,对所述至少一个三维数据点的属性进行二值化编码,以得到第二二进制码流。
在330中,编码器分别对所述第一二进制码流和所述第二二进制码流进行熵编码,具体可以为算术编码。进而,编码器可以将熵编码后的码流进行存储或者传送到解码端。
相应地,以下提出了一种对三维数据点集进行解码的方法400。该方法400可以由解码器实现。如图7所示,该方法400包括以下内容中的至少部分内容。
在410中,解码器对三维数据点集的待解码码流进行熵解码,以得到第一二进制码流和第二二进制码流。其中,该待解码码流可以由编码端传送到解码器的,或者由解码器从存储器中读取的。
在420中,解码器对所述第一二进制码流,进行位置坐标解码,以得到对三维数据点集中的至少一个三维数据点的位置坐标。
在430中,按照解码后的位置坐标,解码器对所述第二二进制码流进行二值化解码,以得到所述至少一个三维数据点的属性。
在本申请实施例中,对三维数据点集中的至少一个三维数据点的属性进行二值化编码,可以避免分层编码方式所带来的编码复杂度较高的问题,从而可以简化编码方法并降低编解码的时间开销,并且二值化编码的方法无需在码流中加入较多的编码信息,从而可以提高压缩率。
本申请实施例中的三维数据点集可以是光探测装置对待探测物体进行 光探测(例如激光探测)所得到。该光探测装置诸如可以为光电雷达、或激光雷达等。本申请实施例中的编码器可以集成于光探测装置中。
应理解,图6和图7所示的编码方法可以是编码和解码过程的部分步骤,本申请实施例中的编码和解码过程还可以包括其他的步骤。
具体地,如图8至10所示,对位置坐标进行位置坐标编码之前,还可以对位置坐标进行量化。具体地,在510中,向编码器中输入三维数据点集的数据;在520中,对三维数据点集的数据中的位置坐标进行量化;在530中,对量化后的位置坐标进行位置坐标编码;在540中,按照位置坐标编码后的位置坐标的顺序,对三维数据点集的数据中的属性进行二值化编码;在550中,对位置坐标编码后得到的码流以及属性编码后得到的码流进行熵编码;在560中,输出编码后的三维数据点集的数据,例如,可以输出到存储器中进行存储,或者,可以传送到解码端。
以及,如图11所示,对位置坐标进行位置坐标解码之后,还可以对解码后的位置坐标进行逆量化。在610中,获取三维数据点集的数据的待解码码流,例如,可以从存储器中获取该码流,或者获取编码端传送的该码流;在620中,对该码流进行熵解码,可以得到位置坐标对应的码流和属性对应的码流;在630中,对位置坐标对应的码流进行位置坐标解码;在640中,对解码后的位置坐标进行逆量化;在650中,可以按照解码后的位置坐标的顺序,对属性进行二值化解码;660,根据解码后的属性以及位置坐标,得到解码后的三维数据点集的数据。
可选地,在本申请实施例中,编码器在对位置坐标进行量化之后,至少两个位置坐标量化后的位置坐标可能是相同的,而这至少两个位置坐标则对应至少两个属性值,此时,在对量化后的位置坐标进行位置坐标编码之前,可以去除重复坐标(例如,如图9所示的步骤525),也即将该至少两个位置坐标量化后的位置坐标为一个(例如,称为第一位置坐标),相应地,可以对属性的至少两个值进行合并(例如,如图9所示的步骤535)以得到一个取值,例如,可以进行加权合并。解码端在解码时针对该至少两个位置坐标,将会解码出一个位置坐标以及一个属性值。
当然,在本申请实施例中,即使至少两个位置坐标量化后的位置坐标是相同的,也可以不去除重复坐标以及不对至少两个属性值进行合并,则此时一个量化后的位置坐标对应至少两个属性值,解码端进行解码时,可以针对 该量化后的位置坐标解码出至少两个属性值,从而可以得到至少两个三维数据点。
其中,由于量化后的不同位置坐标可能会对应不同数量的属性值,则可以在码流中针对各个量化后的位置坐标写入其对应的属性值的数量,则解码端可以根据码流中携带的信息,确定各个位置坐标对应的属性的数量。并且属性的码流是连续的,依次解码每个属性,按照顺序与三维数据点顺序对应上即可实现位置坐标与属性的对应。
当然,也可以只针对特殊的量化后的位置坐标(例如,对应的属性值的数量不是一个而是多个)进行标注。
可选地,在本申请实施例中,编码器是否去除重复坐标和进行属性合并可以是预设在编码器上的,例如,有些编码器预设为去除重复坐标和进行属性合并,有些编码器预设为不去除重复坐标和不进行属性合并。
或者,编码器是否去除重复坐标和进行属性合并也可以是由编码器进行选择的,其中,编码器可以根据当前的编码条件确定是否去除重复坐标和属性合并。例如,如图10所示,在520量化后,可以选择直接进行530中的位置坐标编码,以及不进行535中的属性合并,而直接进行540中的二值化编码。或者,编码器可以选择在520量化后,先进行525中的重复坐标的去除,再进行530中的位置坐标编码,以及先进行535中的属性合并,再进行540中的二值化编码。
具体地,如果当前对编码的损失希望尽量低或者对压缩率要求不高,则不进行重复坐标的去除和属性合并,否则,则进行重复坐标的去除和属性合并。
可选地,在本申请实施例中,可以按包对三维数据点进行编码,相应地,在解码端,可以按包对三维数据点进行解码。
例如,如图12所示,在获取三维数据点集的数据之后,可以在515中对三维数据点进行分包。相应地,如图13所示,在解码端,在对各个三维数据点集包中的三维数据点进行解码之后,可以对各个包进行合并,以得到重建的三维数据点集的数据。
其中,编码端在对三维数据点进行分包时,如果传送的三维数据点的数量达到预设值时,则认为得到一个三维数据点集包,并对该三维数据点集包中的三维数据点集进行编码。三维数据点集包包括的三维数据点的数量可以 是基于编码端的处理能力和压缩率要求等确定的,也可以是基于其他因素确定的,本申请实施例对此不做具体限定。
因此,在本申请实施例中,按照三维数据点集包对三维数据点进行处理,可以使得每次处理的三维数据点的数量不超过一定数量,在该种情况下如果使用分层编码方案,关于分层编码属性即LOD的相关信息将会占据较大的比例,则会使得压缩率较低,而如果对属性进行二值化编码,则可以避免该种情况,从而可以提高压缩率。
本申请实施例中的属性可以为具有一个分量的属性,例如,该属性可以为反射率。
由于具有一个分量的属性占用较少的信息比特,所以对该类属性采用二值化编码的方法进行编码可以在避免压缩损失的情况下,避免压缩后的码流占用太多的传送带宽或存储空间。当然,本申请实施例中的属性也可以具有多于一个的分量,本申请实施例对此不做具体限定。
在本申请实施例中,二值化编码之后得到的是二进制化码流。其中,二值化编码之前的字符串可以是二进制的,也可以是非二进制的,例如,可以是十进制或八进制的字符串。
相应地,二值化解码的对象可以是二值化码流,二值化解码得到的字符串可以是二进制字符串,也可以是非二进制字符串,例如,可以是十进制或八进制的字符串。
本申请实施例中的二值化编码的编码方式可以为定长码编码方式、截断莱斯编码方式或K阶指数哥伦布编码方式。相应地,二值化解码的解码方式可以为定长码解码方式、截断莱斯解码方式或K阶指数哥伦布解码方式。
为了更加清楚地理解本申请,以下将对上述各个二值化编码的编码方式和对应的解码方式进行描述。
定长码编码方式可以是指将三维数据点集中每个三维数据点的位置坐标对应的属性转换为二进制的数值,该数值占用的比特数量是固定的,也即转换后的数值可以称为定长码,其中,定长码的深度是固定的。在进行定长码编码时,定长码的深度可以写入到码流中,具体,可以写入到码流的头信息中。则解码端可以从该码流的头信息中获取该定长码的深度,并基于该定长码的深度,获取各个位置坐标对应的属性。
或者,定长码的深度对于编码端和解码端而言可以是已知的,例如,定 长码的深度分别预设在编码端和解码端,此时,可以无需在码流中写入定长码的深度。
定长码的深度在一定程度上可以是变化的,例如,每个三维数据点集包可以对应一个定长码深度,不同的三维数据点集包对应的定长码的深度可以是不同的。在对某个三维数据点集包中的三维数据点进行的定长码编码的过程中,可以采用该三维数据点集包对应的深度的定长码进行二值化编码,并将该深度可以写入该三维数据点集包对应的码流的头信息中。则相应地,解码端对各个三维数据点集包进行解码时,可以从该三维数据点集包的头信息中获取该三维数据点集包对应的定长码的深度,并基于该定长码的深度,对该三维数据点集包的各个位置坐标对应的属性进行解码。
可选地,在本申请实施例中,定长码的深度可以是基于待编码的三维数据点集来确定的。
具体地,可以根据待编码的三维数据点集中的三维数据点的属性的最大取值和/或所述至少一个三维数据点的属性的取值分布,确定定长码的比特深度。
在一种实现方式中,编码端可以将待编码的三维数据点的属性的最大取值所占用的比特数量,确定为定长码的深度。
例如,三维数据点的属性的最大取值为20(十进制),则在将该取值生成为二进制字符串时需要占用5个比特,则定长码的深度可以为5,如果有些属性的取值小于20,则其对应的二进制字符串实际占用的比特小于5个比特,则可以在高位补0,使得占用的比特的数量达到5。
在另一种实现方式中,编码端可以根据三维数据点的属性的取值分布来确定定长码的深度。具体地,如果属性的取值大部分小于或等于某一数值,则可以将该数值对应的二进制字符串所占用的比特数量,确定为定长码的深度,对于取值大于该数值的属性可以按照该数值进行编码。
例如,存在80%的属性的取值均小于20(十进制),则在将该取值生成为二进制字符串时需要占用5个比特,则定长码的深度可以为5,如果有些属性的取值小于20,则其对应的二进制字符串实际占用的比特小于5个比特,则可以在高位补0,使得占用的比特的数量达到5,如果有些属性的取值大于20,则其对应的二进制字符串实际占用的比特数量大于5比特,则将该属性的取值修正为20,也即占用的比特数统一为5个比特。
在另一种实现方式中,编码端可以根据待编码的三维数据点的属性的最大取值以及三维数据点的属性的取值分布来确定定长码的深度。具体地,如果属性的取值大部分小于或等于某一数值,且该数值与最大值之差小于或等于一定值,则可以将该数值对应的二进制字符串所占用的比特数量,确定为定长码的深度,对于大于该数值的属性可以按照该数值进行编码。
例如,存在80%的属性的取值均小于20十进制,且20与最大值25之差小于等于10,则定长码的深度可以为5,如果有些属性的取值小于20,则其对应的二进制字符串实际占用的比特小于5个比特,则可以在高位补0,使得占用的比特的数量达到5,如果有些属性的取值大于20,则其对应的二进制字符串实际占用的比特数量大于5比特,则将该属性的取值修正为20,也即占用的比特数统一为5个比特。
可选地,在本申请实施例中,编码端也可以基于三维数据点集的数据采集设备工作时的硬件处理能力来,确定定长码的比特深度。
具体地,在三维数据点集的数据采集设备工作时,硬件处理能力可以决定定长码的深度,则编码端可以基于此来确定定长码的深度。例如,硬件处理能力决定了属性的最大取值,则硬件处理能力可以指示该最大取值对应的深度。
可选地,在本申请实施例中,定长码的深度也可以是预设在编码端的,此时,编码端可以利用预设的定长码的深度对属性进行编码,无需考虑编码的码流的特性。此时,定长码的深度也可以预设在解码端,则编码端无需在码流中写入该定长码的深度。
以上介绍了如何利用定长码编码方式进行编码,以下将介绍如何利用截断莱斯编码方式进行编码。
在截断莱斯编码方式中,存在以下参数:门限值cMax、莱斯参数R和属性值Ref。截断莱斯码由前缀码P和后缀码S串联而成,前缀码P的计算方法如式1所示:
p=Ref>>R     式1
若P小于值(cMax>>R),则前缀码由P个1和一个0组成,长度为P+1;若P大于等于值(cMax>>R),则前缀码由(cMax>>R)个1组成,长度为(cMax>>R)。
当属性值Ref小于cMax时,其后缀值S如式2所示:
S=Ref-(p<<R)      式2
其中,后缀码S为二元化串,长度为R。当数值Ref大于等于cMax时,无后缀码。
在编码端获取截断莱斯码之后,可以将该截断莱斯码按照位置坐标编码后的顺序依次送入算术编码引擎中进行算术编码,最终得到压缩编码后的码流。解码端在获取到待解码的码流之后,可以依据门限值cMax和莱斯参数R对待解码码流进行解码。
可选地,在本申请实施例中,进行截断莱斯编码所采用的参数门限值cMax和莱斯参数R可以由编码端基于三维数据点集的数据采集设备工作时的硬件处理能力、待编码的属性的最大取值和/或属性的取值的分布区间来确定的,也可以是基于其他参数确定的。
可选地,在本申请实施例中,在对三维数据点集按照三维数据点集包的方式进行编码时,所有的三维数据点集包可以具有相同的参数门限值cMax和/或莱斯参数R,或不同的三维数据点集包可以具有不同的参数门限值cMax和/或莱斯参数R。
可选地,在本申请实施例中,可以将上述门限值cMax和莱斯参数R写入到码流中,具体可以写入到码流的头信息中,由此解码端可以基于该cMax和莱斯参数R进行解码。当然,也可以在码流中写入这两个参数中的其中一个,另一个参数可以是预设在解码端的;或者该两个参数均预设在解码端。
以上介绍了定长码编码方式和截断莱斯编码方式,以下将介绍K阶指数哥伦布编码方式。
其中,K阶指数哥伦布编码方式可以包括以下步骤。
步骤1、将数字N以二进制形式写出,去掉最低的k个比特位,之后加1。
步骤2、计算留下的比特位数,将此数减一,即是需要增加的前缀零的个数。
步骤3、将步骤一中去掉的最低k个比特位补回比特串尾部,也即得到K阶指数哥伦布码。
以下以属性为反射率,且属性值为4,K的取值为1为例说明。
步骤1、4的二进制表示为100,去掉最低1个比特位0变为10,加1后变为11。
步骤2、11的比特数为2,因此前缀中0的个数为1。
步骤3、在比特串最低比特位补上步骤一中去掉的0,最终码字为0110,也即得到1阶指数哥伦布码。
对于k阶指数哥伦布码,前缀由m个连续的0和一个1构成,后缀由m+k构成,是N-2 k(2 m-1)的二进制表示。由此,即可实现对属性的取值的二值化,以得到二进制码流。然后,编码端可以将该二进制码流按照位置坐标编码后的顺序依次送入熵编码引擎中进行算术编码,最终得到压缩编码后的码流。
对于解码端而言,解码端可以按照位置坐标解码后的位置顺序,解码出存储属性信息的k阶哥伦布码。解析k阶指数哥伦布码时,首先从比特流的当前位置开始寻找第一个非零比特,并将找到的零比特个数记为m,第一个非零比特之后m+k位二进制比特串的十进制值为value,计算出的解码值codeNum如式3所示。
codeNum=2 m+k-2 k+value    式3
解码k阶指数哥伦布码,即可得到重建位置坐标对应的属性信息。按照这个流程即可解码出三维数据点集的数据。
可选地,在本申请实施例中,可以将K的取值写入码流,例如,可以写入码流的头信息中,则解码端可以根据码流中的该K的取值,进行解码。当然,该K的取值也可以是预设在解码端的,此时,则编码端无需在码流中写入该K。
可选地,在本申请实施例中,进行K阶指数哥伦布编码所采用的K的取值可以是编码端基于三维数据点集的数据采集设备工作时的硬件处理能力、待编码的属性的最大值和/或属性的值的分布区间来确定的,也可以是基于其他参数确定的。
可选地,在本申请实施例中,在对三维数据点集按照三维数据点集包的方式进行编码时,所有的三维数据点集包可以具有相同取值的K,或不同的三维数据点集包可以具有不同取值的K。
以上分别介绍了定长码编码方式、截断莱斯编码方式和K阶指数哥伦布编码方式,但应理解,本申请实施例中的二值化编码还可以采用其他的编码方式,本申请实施例对此不做具体限定。
以上对属性编码进行了描述,以下将对位置坐标编码进行描述。
本申请实施例中的位置坐标编码可以采用八叉树编码的方式。在八叉树编码过程中,可以初始化八叉树的最大立方块;基于所述最大立方块,递归进行八叉树划分,其中所述八叉树划分包括:利用当前层的当前块的中心点的位置坐标进行八个子块的划分,判断每个子块内是否存在三维数据点,对存在三维数据点的子块进一步进行子块的划分,直至子块的边长小于等于预设值;根据每一层的各个块中包括三维数据点的情况,生成所述第一二进制码流。可选地,所述最大立方块的边长为2的整数次幂,且是2的整数次幂中最接近并且是大于等于第一值的值,其中,所述第一值为三个最大值中的最大值,所述三个最大值分别为所述三维数据点集中所有三维数据点的位置坐标分别在三个轴上的最大值。
具体地,针对三维数据点集的位置坐标的压缩,首先对位置坐标进行量化,也即将位置坐标转换为大于等于零的整数坐标,接着可以选择是否进行去除重复坐标的操作,如果不需要去除重复坐标,则可以直接进行八叉树编码,如果需要去除重复坐标,则可以先去除重复坐标,然后八叉树编码。八叉树编码具体可以是利用八叉树划分来压缩坐标位置的方法。每层八叉树的划分可以利用当前块的中心点的坐标进行子块划分,通过中心点将当前块划分为八个小的子块,具体如图14所示。得到子块划分后,会判断每个子块内是否存在三维数据点,对存在三维数据点的子块会再进一步进行划分,直至子块划分至最小时,即子块边长为1时停止划分,八叉树递归划分的示意图可以如图15所示。
对于解码端而言,可以初始化八叉树的最大立方块;根据所述最大立方块的大小,逐字节对所述第一二进制码流进行解码,所述解码包括:根据当前字节中各个比特的取值,以及当前块的大小,确定是否对当前块进行进一步的划分,其中如果比特的取值为1,则对当前块进一步划分为子块,直到子块的边长小于等于预设值;根据边长小于或等于预设值且对应的比特取值为1的子块,确定所述三维数据点的位置坐标。
具体地,一个字节包括8个比特,该八个比特中的取值可以获知对应的子块是否被继续划分,如果比特的取值为1,则需要对对应的子块继续进行划分,直到一个子块边长为1,从而根据边长等于1且对应的比特的取值为1,确定三维数据点的位置坐标。
其中,在码流中还可以存储每个边长为1的块对应的三维数据点的数目,解码这些数目就知道一个量化后的位置坐标对应有有几个三维数据点。并且属性的码流是连续的,依次解码每个属性,按照顺序与前面的三维数据点顺序对应上即可实现位置坐标与属性的对应。
一些示例中,上文中的三维数据点可以是测距装置所获取到的点云数据中的任意一个点云点。其中,该测距装置可以是激光雷达、激光测距设备等电子设备。在一种实施方式中,测距装置用于感测外部环境信息,例如,环境目标的距离信息、方位信息、反射强度信息、速度信息等。一个点云点可以包括测距装置所测到的外部环境信息中的至少一种。一些示例中,测距装置每获取到一定数量的三维数据点时,根据该一定数量的三维数据点生成数据包。本发明中提供的三维数据点集的编/解码方法可以应用于对一个数据包内的三维数据点进行编/解码。
一种实现方式中,测距装置可以通过测量测距装置和探测物之间光传播的时间,即光飞行时间(Time-of-Flight,TOF),来探测探测物到测距装置的距离。或者,测距装置也可以通过其他技术来探测探测物到测距装置的距离,例如基于相位移动(phase shift)测量的测距方法,或者基于频率移动(frequency shift)测量的测距方法,在此不做限制。
一些示例中,测距装置的扫描轨迹随着时间改变,这样,随着扫描时间的积累,测距装置在视场内扫描得到的三维数据点在视场内的分布越来越密。
为了便于理解,以下将结合图16所示的测距装置1100对产生本文中提到的三维数据点的测距装置举例描述。
如图16所示,测距装置1100可以包括发射电路1110、接收电路1120、采样电路1130和运算电路1140。
发射电路1110可以发射光脉冲序列(例如激光脉冲序列)。接收电路1120可以接收经过被探测物反射的光脉冲序列,并对该光脉冲序列进行光电转换,以得到电信号,再对电信号进行处理之后可以输出给采样电路1130。采样电路1130可以对电信号进行采样,以获取采样结果。运算电路1140可以基于采样电路1130的采样结果,以确定测距装置1100与被探测物之间的距离。
可选地,该测距装置1100还可以包括控制电路1150,该控制电路150可以实现对其他电路的控制,例如,可以控制各个电路的工作时间和/或对各个电路进行参数设置等。
应理解,虽然图16示出的测距装置中包括一个发射电路、一个接收电路、一个采样电路和一个运算电路,用于出射一路光束进行探测,但是本申请实施例并不限于此,发射电路、接收电路、采样电路、运算电路中的任一种电路的数量也可以是至少两个,用于沿相同方向或分别沿不同方向出射至少两路光束;其中,该至少两束光路可以是同时出射,也可以是分别在不同时刻出射。一个示例中,该至少两个发射电路中的发光芯片封装在同一个模块中。例如,每个发射电路包括一个激光发射芯片,该至少两个发射电路中的激光发射芯片中的die封装到一起,容置在同一个封装空间中。
一些实现方式中,除了图16所示的电路,测距装置1100还可以包括扫描模块1160,用于将发射电路出射的至少一路激光脉冲序列改变传播方向出射。
其中,可以将包括发射电路1110、接收电路1120、采样电路1130和运算电路1140的模块,或者,包括发射电路1110、接收电路1120、采样电路1130、运算电路1140和控制电路1150的模块称为测距模块,该测距模块1150可以独立于其他模块,例如,扫描模块1160。
测距装置中可以采用同轴光路,也即测距装置出射的光束和经反射回来的光束在测距装置内共用至少部分光路。例如,发射电路出射的至少一路激光脉冲序列经扫描模块改变传播方向出射后,经探测物反射回来的激光脉冲序列经过扫描模块后入射至接收电路。或者,测距装置也可以采用异轴光路,也即测距装置出射的光束和经反射回来的光束在测距装置内分别沿不同的光路传输。图17示出了本发明的测距装置采用同轴光路的一种实施例的示意图。
测距装置1200包括测距模块1201,测距模块1210包括发射器1203(可以包括上述的发射电路)、准直元件1204、探测器1205(可以包括上述的接收电路、采样电路和运算电路)和光路改变元件1206。测距模块1210用于发射光束,且接收回光,将回光转换为电信号。其中,发射器1203可以用于发射光脉冲序列。在一个实施例中,发射器1203可以发射激光脉冲序 列。可选的,发射器1203发射出的激光束为波长在可见光范围之外的窄带宽光束。准直元件1204设置于发射器的出射光路上,用于准直从发射器1203发出的光束,将发射器1203发出的光束准直为平行光出射至扫描模块。准直元件还用于会聚经探测物反射的回光的至少一部分。该准直元件204可以是准直透镜或者是其他能够准直光束的元件。
在图17所示实施例中,通过光路改变元件1206来将测距装置内的发射光路和接收光路在准直元件1204之前合并,使得发射光路和接收光路可以共用同一个准直元件,使得光路更加紧凑。在其他的一些实现方式中,也可以是发射器1203和探测器1205分别使用各自的准直元件,将光路改变元件1206设置在准直元件之后的光路上。
在图17所示实施例中,由于发射器1203出射的光束的光束孔径较小,测距装置所接收到的回光的光束孔径较大,所以光路改变元件可以采用小面积的反射镜来将发射光路和接收光路合并。在其他的一些实现方式中,光路改变元件也可以采用带通孔的反射镜,其中该通孔用于透射发射器1203的出射光,反射镜用于将回光反射至探测器1205。这样可以减小采用小反射镜的情况中小反射镜的支架会对回光的遮挡。
在图17所示实施例中,光路改变元件偏离了准直元件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周围的空间进行扫描。如图18所示,图18为测距装置1200的一种扫描图案的示意图。可以理解的是,扫描模块内的光学元件的速度变化时,扫描图案也会随之变化。
当扫描模块1202投射出的光1211打到探测物1201时,一部分光被探测物1201沿与投射的光1211相反的方向反射至测距装置1200。探测物1201反射的回光1212经过扫描模块1202后入射至准直元件1204。
探测器1205与发射器1203放置于准直元件1204的同一侧,探测器1205用于将穿过准直元件1204的至少部分回光转换为电信号。
一个实施例中,各光学元件上镀有增透膜。可选的,增透膜的厚度与发射器1203发射出的光束的波长相等或接近,能够增加透射光束的强度。
一个实施例中,测距装置中位于光束传播路径上的一个元件表面上镀有滤光层,或者在光束传播路径上设置有滤光器,用于至少透射发射器所出射的光束所在波段,反射其他波段,以减少环境光给接收器带来的噪音。
在一些实施例中,发射器1203可以包括激光二极管,通过激光二极管发射纳秒级别的激光脉冲。进一步地,可以确定激光脉冲接收时间,例如,通过探测电信号脉冲的上升沿时间和/或下降沿时间确定激光脉冲接收时间。如此,测距装置1200可以利用脉冲接收时间信息和脉冲发出时间信息计算TOF,从而确定探测物1201到测距装置1200的距离。
测距装置1200探测到的距离和方位可以用于遥感、避障、测绘、建模、导航等。在一种实施方式中,本发明实施方式的测距装置可应用于移动平台,测距装置可安装在移动平台的平台本体。具有测距装置的移动平台可对外部环境进行测量,例如,测量移动平台与障碍物的距离用于避障等用途,和对外部环境进行二维或三维的测绘。在某些实施方式中,移动平台包括无人飞 行器、汽车、遥控车、机器人、相机中的至少一种。当测距装置应用于无人飞行器时,平台本体为无人飞行器的机身。当测距装置应用于汽车时,平台本体为汽车的车身。该汽车可以是自动驾驶汽车或者半自动驾驶汽车,在此不做限制。当测距装置应用于遥控车时,平台本体为遥控车的车身。当测距装置应用于机器人时,平台本体为机器人。当测距装置应用于相机时,平台本体为相机本身。
以上介绍了本申请实施例中的对三维数据点集进行编码和解码的方法,以下将介绍对三维数据点集进行编码和解码的设备。
图19是根据本申请实施例的对三维数据点集进行编码的设备700的示意性框图。该设备700包括:
位置坐标编码单元710,用于对三维数据点集中的至少一个三维数据点的位置坐标进行位置坐标编码,以得到第一二进制码流;
二值化编码单元720,用于按照所述至少一个三维数据点的位置坐标编码后的位置坐标顺序,对所述至少一个三维数据点的属性进行二值化编码,以得到第二二进制码流;
熵编码单元730,用于分别对所述第一二进制码流和所述第二二进制码流进行熵编码。
可选地,在本申请实施例中,如图19所示,该设备700还包括获取单元740,用于在所述位置坐标编码单元进行所述位置坐标编码之前,获取目标三维数据点集包,所述三维数据点集包含在所述目标三维数据点集包中。
可选地,在本申请实施例中,所述获取单元740进一步用于:
在从传送入的原始三维数据点集数据流获取到的三维数据点的数量达到预设值时,将获取到的三维数据点组成的包确定为所述目标三维数据点集包。
可选地,在本申请实施例中,所述属性具有一个分量。
可选地,在本申请实施例中,所述属性用于表征所述三维数据点集中对应的位置坐标处的反射率。
可选地,在本申请实施例中,所述二值化编码单元720进一步用于:
利用定长码编码方式、截断莱斯编码方式、或K阶指数哥伦布编码方式,对所述至少一个三维数据点的属性进行二值化编码。
可选地,在本申请实施例中,所述二值化编码单元720进一步用于:
根据所述至少一个三维数据点的属性的最大取值和/或所述至少一个三维数据点的属性的取值分布,确定定长码的比特深度;
按照所述定长码的比特深度,将所述至少一个三维数据点的属性进行二值化编码。
可选地,在本申请实施例中,所述二值化编码单元720进一步用于:
确定三维数据点集数据采集设备工作时的硬件处理能力指示的定长码的比特深度;
按照所述定长码的比特深度,将所述至少一个三维数据点的属性进行二值化编码。
可选地,在本申请实施例中,所述二值化编码单元720进一步用于:
在利用定长码编码方式对所述至少一个三维数据点的属性进行二值化编码的情况下,将所述定长码的比特深度写入码流中;或者,
在利用截断莱斯编码方式对所述至少一个三维数据点的属性进行二值化编码的情况下,将截断莱斯的门限值和/或用于移位的莱斯参数写入码流中;或者,
在利用K阶指数哥伦布编码方式对所述至少一个三维数据点的属性进行二值化编码的情况下,将K的取值写入码流中。
可选地,在本申请实施例中,所述位置坐标编码单元710进一步用于:
对所述至少一个三维数据点的位置坐标进行八叉树编码。
可选地,在本申请实施例中,所述位置坐标编码单元710进一步用于:
初始化八叉树的最大立方块;
基于所述最大立方块,递归进行八叉树划分,其中所述八叉树划分包括:利用当前层的当前块的中心点的位置坐标进行八个子块的划分,判断每个子块内是否存在三维数据点,对存在三维数据点的子块进一步进行子块的划分,直至子块的边长小于等于预设值;
根据每一层的各个块中包括三维数据点的情况,生成所述第一二进制码流。
可选地,在本申请实施例中,所述最大立方块的边长为2的整数次幂,且是2的整数次幂中最接近且大于等于第一值的值,其中,所述第一值为三个最大值中的最大值,所述三个最大值分别为所述三维数据点集中所有三维数据点的位置坐标分别在三个轴上的最大值。
可选地,在本申请实施例中,如图19所示,该设备700还包括量化单元750,用于:
对所述至少一个三维数据点的位置坐标进行量化。
可选地,在本申请实施例中,如图19所示,该设备700还包括去除单元760,用于:
对量化后的位置坐标去除重复位置坐标。
可选地,在本申请实施例中,所述去除单元760进一步用于:
在根据编码条件确定需要去除重复位置坐标时,对量化后的位置坐标去除重复位置坐标。
可选地,在本申请实施例中,如图19所示,该设备700还包括合并单元770,用于:
如果在对所述至少一个三维数据点的位置坐标进行量化和去除重复位置坐标之后,其中的第一位置坐标对应至少两个属性,则将所述至少两个属性进行合并。
可选地,在本申请实施例中,所述位置坐标编码单元进一步710用于:
如果在对所述至少一个三维数据点的位置坐标进行量化后未去除重复坐标的情况下,在码流中写入各个位置坐标对应的属性的数量。
应理解,该设备700可以用于实现上述方法中由编码端实现的相应操作,为了简洁,在此不再赘述。
图20是根据本申请实施例的对三维数据点集进行解码的设备800。该设备800包括:
熵解码单元810,用于对三维数据点集的待解码码流进行熵解码,以得到第一二进制码流和第二二进制码流;
位置坐标解码单元820,用于对所述第一二进制码流,进行位置坐标解码,以得到对三维数据点集中的至少一个三维数据点的位置坐标;
二值化解码单元830,用于按照所述至少一个三维数据点的解码后的位置坐标顺序,对所述第二二进制码流进行二值化解码,以得到所述至少一个三维数据点的属性。
可选地,在本申请实施例中,如图20所示,该设备800还包括获取单元840,用于:
基于所述至少一个三维数据点的位置坐标和所述至少一个三维数据点 的属性,获取目标三维数据点集包,所述三维数据点集包含在所述目标三维数据点集包中。
可选地,在本申请实施例中,如图20所示,该设备800还包括合并单元850,用于:
对获取的多个所述目标三维数据点集包进行合并,以得到重建的三维数据点集数据。
可选地,在本申请实施例中,所述属性具有一个分量。
可选地,在本申请实施例中,所述属性用于表征所述三维数据点集中对应的位置坐标处的反射率。
可选地,在本申请实施例中,所述二值化解码单元830进一步用于:
利用定长码解码方式、截断莱斯解码方式、或K阶指数哥伦布解码方式,对所述第二二进制码流进行二值化解码。
可选地,在本申请实施例中,所述二值化解码单元830进一步用于:
确定三维数据点集数据采集设备工作时的硬件处理能力指示的定长码的比特深度;
按照所述定长码的比特深度,对所述第二二进制码流进行二值化解码。
可选地,在本申请实施例中,所述二值化解码单元830进一步用于:
在利用定长码解码方式对所述第二二进制码流进行二值化解码的情况下,从所述待解码码流中获取所述定长码的比特深度;或者,
在利用截断莱斯解码方式对所述第二二进制码流进行二值化解码的情况下,从所述待解码码流中获取截断莱斯的门限值和/或用于移位的莱斯参数;或者,
在利用K阶指数哥伦布解码方式对对所述第二二进制码流进行二值化解码的情况下,从所述待解码码流中获取K的取值。
可选地,在本申请实施例中,所述位置坐标解码单元820进一步用于:
对所述第一二进制码流,进行八叉树解码。
可选地,在本申请实施例中,所述位置坐标解码单元820进一步用于:
初始化八叉树的最大立方块;
根据所述最大立方块的大小,逐字节对所述第一二进制码流进行解码,所述解码包括:根据当前字节中各个比特的取值,以及当前块的大小,确定是否对当前块进行进一步的划分,其中如果比特的取值为1,则对当前块进 一步划分为子块,直到子块的边长小于等于预设值;根据边长小于或等于预设值且对应的比特取值为1的子块,确定所述三维数据点的位置坐标。
可选地,在本申请实施例中,所述二值化解码单元830进一步用于:
从码流中获取单个位置坐标对应的所述属性的数量;
按照所述数量,对所述单个位置坐标对应的属性进行二值化解码。
可选地,在本申请实施例中,如图20所示,该设备800还包括逆量化单元860,用于:
对解码后的位置坐标进行逆量化。
应理解,该设备800可以用于实现上述方法中由解码端实现的相应操作,为了简洁,在此不再赘述。
图21示出了本申请实施例的计算机系统900的示意性框图。
如图21所示,该计算机系统900可以包括处理器910,进一步地可以包括存储器920。
应理解,该计算机系统900还可以包括其他计算机系统中通常所包括的部件,例如,输入输出设备、通信接口等,本申请实施例对此并不限定。
存储器920用于存储计算机可执行指令。
存储器920可以是各种种类的存储器,例如可以包括高速随机存取存储器(Random Access Memory,RAM),还可以包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器,本申请实施例对此并不限定。
处理器910用于访问该存储器920,并执行该计算机可执行指令,以进行上述本申请实施例的对三维数据点集进行编码或解码的方法中的操作。
处理器910可以包括微处理器,现场可编程门阵列(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 (61)

  1. 一种对三维数据点集进行编码的方法,其特征在于,包括:
    对三维数据点集中的至少一个三维数据点的位置坐标进行位置坐标编码,以得到第一二进制码流;
    按照所述至少一个三维数据点的位置坐标编码后的位置坐标顺序,对所述至少一个三维数据点的属性进行二值化编码,以得到第二二进制码流;
    分别对所述第一二进制码流和所述第二二进制码流进行熵编码。
  2. 根据权利要求1所述的方法,其特征在于,在所述对三维数据点集中的至少一个三维数据点的位置坐标进行位置坐标编码之前,所述方法还包括:
    获取目标三维数据点集包,所述三维数据点集包含在所述目标三维数据点集包中。
  3. 根据权利要求2所述的方法,其特征在于,所述获取目标三维数据点集包,包括:
    在从传送入的原始三维数据点集数据流获取到的三维数据点的数量达到预设值时,将获取到的三维数据点组成的包确定为所述目标三维数据点集包。
  4. 根据权利要求1至3中任一项所述的方法,其特征在于,所述属性具有一个分量。
  5. 根据权利要求1至4中任一项所述的方法,其特征在于,所述属性用于表征所述三维数据点集中对应的位置坐标处的反射率。
  6. 根据权利要求1至5中任一项所述的方法,其特征在于,所述对所述至少一个三维数据点的属性进行二值化编码,包括:
    利用定长码编码方式、截断莱斯编码方式、或K阶指数哥伦布编码方式,对所述至少一个三维数据点的属性进行二值化编码。
  7. 根据权利要求6所述的方法,其特征在于,利用定长码编码方式,对所述至少一个三维数据点的属性进行二值化编码,包括:
    根据所述至少一个三维数据点的属性的最大取值和/或所述至少一个三维数据点的属性的取值分布,确定定长码的比特深度;
    按照所述定长码的比特深度,将所述至少一个三维数据点的属性进行二值化编码。
  8. 根据权利要求6所述的方法,其特征在于,利用定长码编码方式,对所述至少一个三维数据点的属性进行二值化编码,包括:
    确定三维数据点集数据采集设备工作时的硬件处理能力指示的定长码的比特深度;
    按照所述定长码的比特深度,将所述至少一个三维数据点的属性进行二值化编码。
  9. 根据权利要求6所述的方法,其特征在于,所述方法还包括:
    在利用定长码编码方式对所述至少一个三维数据点的属性进行二值化编码的情况下,将所述定长码的比特深度写入码流中;或者,
    在利用截断莱斯编码方式对所述至少一个三维数据点的属性进行二值化编码的情况下,将截断莱斯的门限值和/或用于移位的莱斯参数写入码流中;或者,
    在利用K阶指数哥伦布编码方式对所述至少一个三维数据点的属性进行二值化编码的情况下,将K的取值写入码流中。
  10. 根据权利要求1至9中任一项所述的方法,其特征在于,所述对三维数据点集中的至少一个三维数据点的位置坐标进行位置坐标编码,包括:
    对所述至少一个三维数据点的位置坐标进行八叉树编码。
  11. 根据权利要求10所述的方法,其特征在于,所述对所述至少一个三维数据点的位置坐标进行八叉树编码,包括:
    初始化八叉树的最大立方块;
    基于所述最大立方块,递归进行八叉树划分,其中所述八叉树划分包括:利用当前层的当前块的中心点的位置坐标进行八个子块的划分,判断每个子块内是否存在三维数据点,对存在三维数据点的子块进一步进行子块的划分,直至子块的边长小于等于预设值;
    根据每一层的各个块中包括三维数据点的情况,生成所述第一二进制码流。
  12. 根据权利要求11所述的方法,其特征在于,所述最大立方块的边长为2的整数次幂,且是2的整数次幂中最接近且大于等于第一值的值,其中,所述第一值为三个最大值中的最大值,所述三个最大值分别为所述三维数据点集中所有三维数据点的位置坐标分别在三个轴上的最大值。
  13. 根据权利要求1至12中任一项所述的方法,其特征在于,在所述 对三维数据点集中的至少一个三维数据点的位置坐标进行位置坐标编码之前,所述方法还包括:
    对所述至少一个三维数据点的位置坐标进行量化。
  14. 根据权利要求13所述的方法,其特征在于,所述方法还包括:
    对量化后的位置坐标去除重复位置坐标。
  15. 根据权利要求14所述的方法,其特征在于,所述对量化后的位置坐标去除重复位置坐标,包括:
    在根据编码条件确定需要去除重复位置坐标时,对量化后的位置坐标去除重复位置坐标。
  16. 根据权利要求1至15中任一项所述的方法,其特征在于,在所述对所述至少一个三维数据点的属性进行二值化编码之前,所述方法还包括:
    如果在对所述至少一个三维数据点的位置坐标进行量化和去除重复位置坐标之后,其中的第一位置坐标对应至少两个属性,则将所述至少两个属性进行合并。
  17. 根据权利要求1至15中任一项所述的方法,其特征在于,所述方法还包括:
    如果在对所述至少一个三维数据点的位置坐标进行量化后未去除重复坐标的情况下,在码流中写入各个位置坐标对应的属性的数量。
  18. 一种对三维数据点集进行解码的方法,其特征在于,包括:
    对三维数据点集的待解码码流进行熵解码,以得到第一二进制码流和第二二进制码流;
    对所述第一二进制码流,进行位置坐标解码,以得到对三维数据点集中的至少一个三维数据点的位置坐标;
    按照所述至少一个三维数据点的解码后的位置坐标顺序,对所述第二二进制码流进行二值化解码,以得到所述至少一个三维数据点的属性。
  19. 根据权利要求18所述的方法,其特征在于,所述方法还包括:
    基于所述至少一个三维数据点的位置坐标和所述至少一个三维数据点的属性,获取目标三维数据点集包,所述三维数据点集包含在所述目标三维数据点集包中。
  20. 根据权利要求19所述的方法,其特征在于,所述方法包括:
    对获取的多个所述目标三维数据点集包进行合并,以得到重建的三维数 据点集数据。
  21. 根据权利要求18至20中任一项所述的方法,其特征在于,所述属性具有一个分量。
  22. 根据权利要求18至21中任一项所述的方法,其特征在于,所述属性用于表征所述三维数据点集中对应的位置坐标处的反射率。
  23. 根据权利要求18至22中任一项所述的方法,其特征在于,所述对所述第二二进制码流进行二值化解码,包括:
    利用定长码解码方式、截断莱斯解码方式、或K阶指数哥伦布解码方式,对所述第二二进制码流进行二值化解码。
  24. 根据权利要求23所述的方法,其特征在于,利用定长码解码方式,对所述第二二进制码流进行二值化解码,包括:
    确定三维数据点集数据采集设备工作时的硬件处理能力指示的定长码的比特深度;
    按照所述定长码的比特深度,对所述第二二进制码流进行二值化解码。
  25. 根据权利要求23所述的方法,其特征在于,所述方法还包括:
    在利用定长码解码方式对所述第二二进制码流进行二值化解码的情况下,从所述待解码码流中获取所述定长码的比特深度;或者,
    在利用截断莱斯解码方式对所述第二二进制码流进行二值化解码的情况下,从所述待解码码流中获取截断莱斯的门限值和/或用于移位的莱斯参数;或者,
    在利用K阶指数哥伦布解码方式对对所述第二二进制码流进行二值化解码的情况下,从所述待解码码流中获取K的取值。
  26. 根据权利要求18至25中任一项所述的方法,其特征在于,所述对所述第一二进制码流,进行位置坐标解码,包括:
    对所述第一二进制码流,进行八叉树解码。
  27. 根据权利要求26所述的方法,其特征在于,所述进行八叉树解码,包括:
    初始化八叉树的最大立方块;
    根据所述最大立方块的大小,逐字节对所述第一二进制码流进行解码,所述解码包括:根据当前字节中各个比特的取值,以及当前块的大小,确定是否对当前块进行进一步的划分,其中如果比特的取值为1,则对当前块进 一步划分为子块,直到子块的边长小于等于预设值;根据边长小于或等于预设值且对应的比特取值为1的子块,确定所述三维数据点的位置坐标。
  28. 根据权利要求18至27中任一项所述的方法,其特征在于,所述对所述第二二进制码流进行二值化解码,包括:
    从码流中获取单个位置坐标对应的所述属性的数量;
    按照所述数量,对所述单个位置坐标对应的属性进行二值化解码。
  29. 根据权利要求18至28中任一项所述的方法,其特征在于,在所述对所述第一二进制码流,进行位置坐标解码之后,所述方法还包括:
    对解码后的位置坐标进行逆量化。
  30. 一种对三维数据点集进行编码的设备,其特征在于,包括:
    位置坐标编码单元,用于对三维数据点集中的至少一个三维数据点的位置坐标进行位置坐标编码,以得到第一二进制码流;
    二值化编码单元,用于按照所述至少一个三维数据点的位置坐标编码后的位置坐标顺序,对所述至少一个三维数据点的属性进行二值化编码,以得到第二二进制码流;
    熵编码单元,用于分别对所述第一二进制码流和所述第二二进制码流进行熵编码。
  31. 根据权利要求30所述的设备,其特征在于,还包括:
    获取单元,用于在所述位置坐标编码单元进行所述位置坐标编码之前,获取目标三维数据点集包,所述三维数据点集包含在所述目标三维数据点集包中。
  32. 根据权利要求31所述的设备,其特征在于,所述获取单元进一步用于:
    在从传送入的原始三维数据点集数据流获取到的三维数据点的数量达到预设值时,将获取到的三维数据点组成的包确定为所述目标三维数据点集包。
  33. 根据权利要求30至32中任一项所述的设备,其特征在于,所述属性具有一个分量。
  34. 根据权利要求30至33中任一项所述的设备,其特征在于,所述属性用于表征所述三维数据点集中对应的位置坐标处的反射率。
  35. 根据权利要求30至34中任一项所述的设备,其特征在于,所述二 值化编码单元进一步用于:
    利用定长码编码方式、截断莱斯编码方式、或K阶指数哥伦布编码方式,对所述至少一个三维数据点的属性进行二值化编码。
  36. 根据权利要求35所述的设备,其特征在于,所述二值化编码单元进一步用于:
    根据所述至少一个三维数据点的属性的最大取值和/或所述至少一个三维数据点的属性的取值分布,确定定长码的比特深度;
    按照所述定长码的比特深度,将所述至少一个三维数据点的属性进行二值化编码。
  37. 根据权利要求35所述的设备,其特征在于,所述二值化编码单元进一步用于:
    确定三维数据点集数据采集设备工作时的硬件处理能力指示的定长码的比特深度;
    按照所述定长码的比特深度,将所述至少一个三维数据点集的属性进行二值化编码。
  38. 根据权利要求35所述的设备,其特征在于,所述二值化编码单元进一步用于:
    在利用定长码编码方式对所述至少一个三维数据点的属性进行二值化编码的情况下,将所述定长码的比特深度写入码流中;或者,
    在利用截断莱斯编码方式对所述至少一个三维数据点的属性进行二值化编码的情况下,将截断莱斯的门限值和/或用于移位的莱斯参数写入码流中;或者,
    在利用K阶指数哥伦布编码方式对所述至少一个三维数据点的属性进行二值化编码的情况下,将K的取值写入码流中。
  39. 根据权利要求30至38中任一项所述的设备,其特征在于,所述位置坐标编码单元进一步用于:
    对所述至少一个三维数据点的位置坐标进行八叉树编码。
  40. 根据权利要求39所述的设备,其特征在于,所述位置坐标编码单元进一步用于:
    初始化八叉树的最大立方块;
    基于所述最大立方块,递归进行八叉树划分,其中所述八叉树划分包括: 利用当前层的当前块的中心点的位置坐标进行八个子块的划分,判断每个子块内是否存在三维数据点,对存在三维数据点的子块进一步进行子块的划分,直至子块的边长小于等于预设值;
    根据每一层的各个块中包括三维数据点的情况,生成所述第一二进制码流。
  41. 根据权利要求40所述的设备,其特征在于,所述最大立方块的边长为2的整数次幂,且是2的整数次幂中最接近且大于等于第一值的值,其中,所述第一值为三个最大值中的最大值,所述三个最大值分别为所述三维数据点集中所有三维数据点的位置坐标分别在三个轴上的最大值。
  42. 根据权利要求30至41中任一项所述的设备,其特征在于,还包括量化单元,用于:
    对所述至少一个三维数据点的位置坐标进行量化。
  43. 根据权利要求42所述的设备,其特征在于,还包括去除单元,用于:
    对量化后的位置坐标去除重复位置坐标。
  44. 根据权利要求43所述的设备,其特征在于,所述去除单元进一步用于:
    在根据编码条件确定需要去除重复位置坐标时,对量化后的位置坐标去除重复位置坐标。
  45. 根据权利要求30至44中任一项所述的设备,其特征在于,还包括合并单元,用于:
    如果在对所述至少一个三维数据点的位置坐标进行量化和去除重复位置坐标之后,其中的第一位置坐标对应至少两个属性,则将所述至少两个属性进行合并。
  46. 根据权利要求30至44中任一项所述的设备,其特征在于,所述位置坐标编码单元进一步用于:
    如果在对所述至少一个三维数据点的位置坐标进行量化后未去除重复坐标的情况下,在码流中写入各个位置坐标对应的属性的数量。
  47. 一种对三维数据点集进行解码的设备,其特征在于,包括:
    熵解码单元,用于对三维数据点集的待解码码流进行熵解码,以得到第一二进制码流和第二二进制码流;
    位置坐标解码单元,用于对所述第一二进制码流,进行位置坐标解码,以得到对三维数据点集中的至少一个三维数据点的位置坐标;
    二值化解码单元,用于按照所述至少一个三维数据点的解码后的位置坐标顺序,对所述第二二进制码流进行二值化解码,以得到所述至少一个三维数据点的属性。
  48. 根据权利要求47所述的设备,其特征在于,还包括获取单元,用于:
    基于所述至少一个三维数据点的位置坐标和所述至少一个三维数据点的属性,获取目标三维数据点集包,所述三维数据点集包含在所述目标三维数据点集包中。
  49. 根据权利要求48所述的设备,其特征在于,还包括合并单元,用于:
    对获取的多个所述目标三维数据点集包进行合并,以得到重建的三维数据点集数据。
  50. 根据权利要求47至49中任一项所述的设备,其特征在于,所述属性具有一个分量。
  51. 根据权利要求47至50中任一项所述的设备,其特征在于,所述属性用于表征所述三维数据点集中对应的位置坐标处的反射率。
  52. 根据权利要求47至51中任一项所述的设备,其特征在于,所述二值化解码单元进一步用于:
    利用定长码解码方式、截断莱斯解码方式、或K阶指数哥伦布解码方式,对所述第二二进制码流进行二值化解码。
  53. 根据权利要求52所述的设备,其特征在于,所述二值化解码单元进一步用于:
    确定三维数据点集数据采集设备工作时的硬件处理能力指示的定长码的比特深度;
    按照所述定长码的比特深度,对所述第二二进制码流进行二值化解码。
  54. 根据权利要求52所述的设备,其特征在于,所述二值化解码单元进一步用于:
    在利用定长码解码方式对所述第二二进制码流进行二值化解码的情况下,从所述待解码码流中获取所述定长码的比特深度;或者,
    在利用截断莱斯解码方式对所述第二二进制码流进行二值化解码的情况下,从所述待解码码流中获取截断莱斯的门限值和/或用于移位的莱斯参数;或者,
    在利用K阶指数哥伦布解码方式对对所述第二二进制码流进行二值化解码的情况下,从所述待解码码流中获取K的取值。
  55. 根据权利要求47至54中任一项所述的设备,其特征在于,所述位置坐标解码单元进一步用于:
    对所述第一二进制码流,进行八叉树解码。
  56. 根据权利要求55所述的设备,其特征在于,所述位置坐标解码单元进一步用于:
    初始化八叉树的最大立方块;
    根据所述最大立方块的大小,逐字节对所述第一二进制码流进行解码,所述解码包括:根据当前字节中各个比特的取值,以及当前块的大小,确定是否对当前块进行进一步的划分,其中如果比特的取值为1,则对当前块进一步划分为子块,直到子块的边长小于等于预设值;根据边长小于或等于预设值且对应的比特取值为1的子块,确定所述三维数据点的位置坐标。
  57. 根据权利要求47至56中任一项所述的设备,其特征在于,所述二值化解码单元进一步用于:
    从码流中获取单个位置坐标对应的所述属性的数量;
    按照所述数量,对所述单个位置坐标对应的属性进行二值化解码。
  58. 根据权利要求47至57中任一项所述的设备,其特征在于,还包括逆量化单元,用于:
    对解码后的位置坐标进行逆量化。
  59. 一种对三维数据点集进行编码的设备,其特征在于,包括处理器,所述处理器用于处理根据权利要求1至17中任一项所述的方法。
  60. 一种对三维数据点集进行解码的设备,其特征在于,包括处理器,所述处理器用于处理根据权利要求18至29中任一项所述的方法。
  61. 一种计算机可读存储介质,其特征在于,用于存储代码,所述代码用于使得处理器执行根据权利要求1至29中任一项所述的方法。
PCT/CN2019/071238 2019-01-10 2019-01-10 对三维数据点集进行编码或解码的方法和设备 Ceased WO2020143005A1 (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201980005064.1A CN111247798B (zh) 2019-01-10 2019-01-10 对三维数据点集进行编码或解码的方法和设备
PCT/CN2019/071238 WO2020143005A1 (zh) 2019-01-10 2019-01-10 对三维数据点集进行编码或解码的方法和设备
US17/372,042 US20210335016A1 (en) 2019-01-10 2021-07-09 Method and device for encoding or decoding three-dimensional data point set

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/071238 WO2020143005A1 (zh) 2019-01-10 2019-01-10 对三维数据点集进行编码或解码的方法和设备

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/372,042 Continuation US20210335016A1 (en) 2019-01-10 2021-07-09 Method and device for encoding or decoding three-dimensional data point set

Publications (1)

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

Family

ID=70879111

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/071238 Ceased WO2020143005A1 (zh) 2019-01-10 2019-01-10 对三维数据点集进行编码或解码的方法和设备

Country Status (3)

Country Link
US (1) US20210335016A1 (zh)
CN (1) CN111247798B (zh)
WO (1) WO2020143005A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220343556A1 (en) * 2020-01-10 2022-10-27 Panasonic Intellectual Property Corporation Of America Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021261514A1 (ja) * 2020-06-23 2021-12-30 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置
WO2022021360A1 (zh) * 2020-07-31 2022-02-03 深圳市大疆创新科技有限公司 测距装置与移动平台
WO2022067776A1 (zh) * 2020-09-30 2022-04-07 Oppo广东移动通信有限公司 点云的解码、编码方法、解码器、编码器和编解码系统
WO2022252337A1 (zh) * 2021-06-04 2022-12-08 华为技术有限公司 3d地图的编解码方法及装置
JP7830801B2 (ja) * 2021-06-04 2026-03-17 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 3dマップを符号化するための装置及び方法
CN116233389B (zh) * 2021-12-03 2025-01-28 维沃移动通信有限公司 点云编码处理方法、点云解码处理方法及相关设备
CN121037545A (zh) 2021-12-03 2025-11-28 维沃移动通信有限公司 点云编码、解码方法、装置及通信设备
CN116996674A (zh) * 2022-04-26 2023-11-03 中兴通讯股份有限公司 一种编码方法、解码方法、通信节点及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106846425A (zh) * 2017-01-11 2017-06-13 东南大学 一种基于八叉树的散乱点云压缩方法
WO2017126314A1 (en) * 2016-01-22 2017-07-27 Mitsubishi Electric Corporation Method for compressing point cloud
CN107403456A (zh) * 2017-07-28 2017-11-28 北京大学深圳研究生院 一种基于kd树和优化图变换的点云属性压缩方法
CN108322742A (zh) * 2018-02-11 2018-07-24 北京大学深圳研究生院 一种基于帧内预测的点云属性压缩方法
CN108335335A (zh) * 2018-02-11 2018-07-27 北京大学深圳研究生院 一种基于增强图变换的点云属性压缩方法
CN108632607A (zh) * 2018-05-09 2018-10-09 北京大学深圳研究生院 一种基于多角度自适应帧内预测的点云属性压缩方法
CN108632621A (zh) * 2018-05-09 2018-10-09 北京大学深圳研究生院 一种基于层次划分的点云属性压缩方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100519780B1 (ko) * 2004-02-17 2005-10-07 삼성전자주식회사 3차원 체적 데이터 부호화/복호화 방법 및 장치
CN109155863B (zh) * 2016-05-20 2022-09-20 松下电器(美国)知识产权公司 编码装置、解码装置、编码方法及解码方法
EP3407607A1 (en) * 2017-05-24 2018-11-28 Thomson Licensing Method and device for encoding and reconstructing a point cloud

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017126314A1 (en) * 2016-01-22 2017-07-27 Mitsubishi Electric Corporation Method for compressing point cloud
CN106846425A (zh) * 2017-01-11 2017-06-13 东南大学 一种基于八叉树的散乱点云压缩方法
CN107403456A (zh) * 2017-07-28 2017-11-28 北京大学深圳研究生院 一种基于kd树和优化图变换的点云属性压缩方法
CN108322742A (zh) * 2018-02-11 2018-07-24 北京大学深圳研究生院 一种基于帧内预测的点云属性压缩方法
CN108335335A (zh) * 2018-02-11 2018-07-27 北京大学深圳研究生院 一种基于增强图变换的点云属性压缩方法
CN108632607A (zh) * 2018-05-09 2018-10-09 北京大学深圳研究生院 一种基于多角度自适应帧内预测的点云属性压缩方法
CN108632621A (zh) * 2018-05-09 2018-10-09 北京大学深圳研究生院 一种基于层次划分的点云属性压缩方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220343556A1 (en) * 2020-01-10 2022-10-27 Panasonic Intellectual Property Corporation Of America Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device

Also Published As

Publication number Publication date
CN111247798B (zh) 2022-03-15
CN111247798A (zh) 2020-06-05
US20210335016A1 (en) 2021-10-28

Similar Documents

Publication Publication Date Title
CN111247802B (zh) 用于三维数据点集处理的方法和设备
CN111247798B (zh) 对三维数据点集进行编码或解码的方法和设备
US20220108494A1 (en) Method, device, and storage medium for point cloud processing and decoding
US11875541B2 (en) Predictive geometry coding in G-PCC
CN112740702B (zh) 点云的编解码方法和装置
US20250086845A1 (en) Angular priors for improved prediction in point-predictive trees
CN111699683B (zh) 一种点云编码方法、点云解码方法及相关设备
WO2020243874A1 (zh) 点云数据的位置坐标的编解码方法、系统和存储介质
KR20220166793A (ko) 지오메트리 기반 포인트 클라우드 압축을 위한 각도 모드 단순화
KR20230127218A (ko) 지오메트리 포인트 클라우드 압축을 위한 인터 예측 코딩
US20210319593A1 (en) Significant coefficient flag encoding for point cloud attribute compression
KR20220166792A (ko) 지오메트리 기반 포인트 클라우드 압축을 위한 각도 모드 단순화
CN113632492B (zh) 一种用于点云处理、解码的方法、设备及存储介质
KR20220164702A (ko) 지오메트리 기반 포인트 클라우드 압축에서의 각도 및 방위각 모드들에 대한 레이저 각도들의 코딩
US12198390B2 (en) Three-dimensional data point encoding and decoding method and device
KR20230084147A (ko) 포인트 클라우드 압축을 위한 예측 기하학 코딩에서의 레이저 인덱스 클리핑
US20220108493A1 (en) Encoding/decoding method and device for three-dimensional data points
CN111373758B (zh) 三维数据点的编解码方法和装置
CN112689997B (zh) 点云的排序方法和装置
US20230342984A1 (en) Inter prediction in point cloud compression
KR20250084021A (ko) 라이다 데이터 프레임의 인코딩 및 디코딩
JP2026514749A (ja) 点群圧縮におけるエントロピー継続及び従属フレームエントロピーコーディング

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: 19909302

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: 19909302

Country of ref document: EP

Kind code of ref document: A1