WO2021196029A1 - 一种用于点云编码、解码的方法和设备 - Google Patents

一种用于点云编码、解码的方法和设备 Download PDF

Info

Publication number
WO2021196029A1
WO2021196029A1 PCT/CN2020/082593 CN2020082593W WO2021196029A1 WO 2021196029 A1 WO2021196029 A1 WO 2021196029A1 CN 2020082593 W CN2020082593 W CN 2020082593W WO 2021196029 A1 WO2021196029 A1 WO 2021196029A1
Authority
WO
WIPO (PCT)
Prior art keywords
identifier
point cloud
encoding
position information
coding
Prior art date
Application number
PCT/CN2020/082593
Other languages
English (en)
French (fr)
Inventor
李璞
郑萧桢
Original Assignee
深圳市大疆创新科技有限公司
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 深圳市大疆创新科技有限公司 filed Critical 深圳市大疆创新科技有限公司
Priority to CN202080004086.9A priority Critical patent/CN112470469B/zh
Priority to PCT/CN2020/082593 priority patent/WO2021196029A1/zh
Publication of WO2021196029A1 publication Critical patent/WO2021196029A1/zh

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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • 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

  • This application relates to the field of coding and decoding, and more specifically, to a method and device for point cloud coding and decoding.
  • a point cloud is a form of expression of a space object or scene. It is composed of a group of discrete points that are randomly distributed in space and express the spatial structure and surface properties of the space object or scene.
  • the data of a point cloud can include description coordinate information The space coordinates of and the attributes that further include the position coordinates. In order to accurately reflect the information in the space, the number of discrete points required is huge. In order to reduce the bandwidth occupied by point cloud storage and transmission, the point cloud needs to be encoded and compressed, and how to improve the encoding and decoding performance of the point cloud has become an urgent problem to be solved.
  • the present application provides a method and device for point cloud encoding and decoding, which can increase the flexibility of point cloud encoding and decoding, and improve the efficiency and performance of point cloud encoding and decoding.
  • a method for point cloud coding including:
  • the code stream includes a first identifier, a second identifier, and coded bits of the position information of the point cloud, and the first identifier is used to indicate to switch the code of the position information of the point cloud Mode, the second identifier is used to indicate the position information encoding mode of the point cloud after the handover;
  • the encoded bits of the position information are decoded.
  • a method for point cloud decoding including:
  • the code stream includes a first identifier, a second identifier, and coded bits of the position information of the point cloud
  • the first identifier is used to indicate to switch the code of the position information of the point cloud Mode
  • the second identifier is used to indicate the position information encoding mode of the point cloud after the handover
  • a device for point cloud decoding includes: a memory and a processor,
  • the memory is used to store programs
  • the processor is used to call the program, and when the program is executed, it is used to perform the following operations:
  • the code stream includes a first identifier, a second identifier, and coded bits of the position information of the point cloud, and the first identifier is used to indicate to switch the code of the position information of the point cloud Mode, the second identifier is used to indicate the position information encoding mode of the point cloud after the handover;
  • the encoded bits of the position information are decoded.
  • a device for point cloud coding includes: a memory and a processor,
  • the memory is used to store programs
  • the processor is used to call the program, and when the program is executed, it is used to perform the following operations:
  • the code stream includes a first identifier, a second identifier, and coded bits of the position information of the point cloud
  • the first identifier is used to indicate to switch the code of the position information of the point cloud
  • the second identifier is used to indicate a position information encoding method of the point cloud after the switch, and the encoding bits of the position information of the point cloud are obtained by encoding using the encoding method after the switch;
  • embodiments of the present application provide a computer-readable storage medium that stores a computer program that, when executed by a processor, implements the method described in the first aspect above or the above-mentioned first aspect. The method described in the two aspects.
  • a first identifier and a second identifier are added in the point cloud encoding or decoding process, where the first identifier is used to indicate the encoding method of switching the position information of the point cloud, and the second identifier is used for Indicates the encoding method after switching.
  • the most suitable encoding method can be used to encode or decode the point cloud flexibly according to the change in the number and distribution of point cloud points, which increases the flexibility of point cloud encoding and decoding. Improve the efficiency and performance of point cloud encoding and decoding.
  • FIG. 1 is a schematic diagram of an existing point cloud encoding process provided by an embodiment of the present application
  • FIG. 2 is a schematic diagram of an existing point cloud decoding process provided by an embodiment of the present application.
  • FIG. 3 is a schematic diagram of a cubic octree partition provided by an embodiment of the present application.
  • FIG. 4 is a schematic diagram of layer-by-layer division of octree nodes according to an embodiment of the present application
  • FIG. 5 is a schematic flowchart of a method for point cloud coding provided by an embodiment of the present application.
  • FIG. 6 is a schematic flowchart of a method for point cloud decoding provided by an embodiment of the present application.
  • FIG. 7 is a schematic diagram of a possible breadth-first decoding manner provided by an embodiment of the present application.
  • FIG. 8 is a schematic diagram of another possible breadth-first decoding manner provided by an embodiment of the present application.
  • FIG. 9 is a schematic structural diagram of a point cloud decoding device provided by an embodiment of the present application.
  • Fig. 10 is a schematic structural diagram of a point cloud coding device provided by an embodiment of the present application.
  • the size of the sequence number of each process does not mean the order of execution.
  • the execution order of each process should be determined by its function and internal logic, and should not correspond to the embodiments of the present application.
  • the implementation process constitutes any limitation.
  • a point cloud is a form of expression of a three-dimensional object or scene. It is composed of a set of discrete points that are randomly distributed in space and express the spatial structure and surface properties of the three-dimensional object or scene. In order to accurately reflect the information in the space, the number of discrete points required is huge. In order to reduce the bandwidth occupied by point cloud storage and transmission, the point cloud can be encoded and compressed.
  • the point cloud can be composed of discrete points, and the discrete points in the point cloud are referred to as point cloud points below.
  • the data of the point cloud may include information describing the position coordinates of the point cloud points in the point cloud, and may further include information about the attributes of the point cloud points. Wherein, the position coordinates of the point cloud point may be three-dimensional position coordinates (x, y, z).
  • the attribute information of the point cloud point may include the reflectance and/or color of the point cloud point.
  • the number of point cloud points included in the point cloud is usually relatively large.
  • the point cloud needs to be encoded and compressed. The following describes how to encode and decode the point cloud with reference to FIGS. 1 to 2.
  • FIG. 1 is a schematic diagram of an existing point cloud encoding process provided by an embodiment of the present application.
  • the encoding process shown in FIG. 1 includes some or all of the following steps.
  • the point cloud data may include geometric position and attribute information.
  • the position coordinates of the data points of the point cloud are translated and quantified.
  • the position coordinates of each point cloud point can be quantified according to the difference between the maximum and minimum values of the position coordinates on the three axes, and the quantization accuracy determined according to the input parameters, and the input point cloud point
  • the position coordinates are converted to integer coordinates greater than or equal to zero.
  • the processed position coordinates are encoded.
  • the position coordinates may be encoded in a multi-tree encoding manner.
  • the polytree can be an octree, a quadtree, a binary tree, etc.; it can also be a mixture of two types of fork trees, or a mixture of three types of fork trees.
  • the corresponding node when multi-tree encoding is performed, the corresponding node can be divided into the multi-tree at each level, and bits are used to reflect the division of the multi-tree of the node. Specifically, the node can be divided to obtain the sub-nodes. The existence of the data.
  • corresponding bits can be obtained at each layer, and the corresponding nodes can be divided into the multi-tree according to the obtained bits.
  • the division of each level of the multi-tree can use the coordinates of the center point of the current node to divide the sub-nodes.
  • the current node is divided into multiple sub-nodes through the center point, and then it can be judged whether each sub-node is There are point cloud points, and the child nodes with point cloud points will be further divided until the child nodes are divided to a preset size, for example, the division will stop when it can be divided to child nodes with a side length of 1.
  • the position coordinates in the three direction dimensions can be selected
  • the initialization space may be, for example, a cube box as shown in FIG. 3.
  • the value of the side length of the cube box usually needs to meet the following conditions: the value of the side length is an integer power of 2, the value of the side length is greater than or equal to, and the closest multiple point cloud points are in three directions The maximum value among the maximum values of the position coordinates in the dimension.
  • the initialization space is divided into multiple levels of multi-tree.
  • an octree Take an octree as an example.
  • the black squares in Figure 4 indicate that the current sub-node contains point cloud points
  • the white squares indicate that the current sub-block does not contain point cloud points.
  • the node 301 is divided into an octree, it is determined in turn whether each child node contains a point cloud point.
  • the third node 302 point in the octree divided for the first time contains For point cloud points, the remaining seven nodes do not contain point cloud points, so this division can be represented by 8 bits, specifically 0010 0000.
  • the sub-node 302 containing point cloud points can be divided, that is, the second level of division in Figure 4.
  • the third node 303 and the eighth node 304 contain point cloud points, then this The second octree division can be represented by 0010 0001.
  • the two sub-nodes with a little cloud point can be divided in sequence.
  • the left child node 303 is first divided.
  • the result of the division is shown in the left half of the third layer in Figure 4.
  • the first child node 305 and the fourth child node 306 contain point cloud points.
  • the fork tree division can be represented by 1001 0000.
  • the second sub-node 304 of the second layer with cloud points is divided.
  • the result of the division is shown in the right half of the third layer in FIG. 4.
  • the second sub-node 307 and the eighth sub-node 308 contain point cloud points.
  • this octree division can be represented by 0100 0001.
  • the division of the latter layer is similar to the previous description, and is divided layer by layer in the same way.
  • the binary code stream corresponding to the division result in Figure 4 is 0010 0000 0010 0001 1001 0000 0100 0001....
  • the last layer that is, when the side length of the sub-block is 1, the deepest position of the octree division has been reached at this time, that is, the leaf node of the current octree has been reached, and no further division is required.
  • the current leaf node contains a point cloud point, it is directly coded as a 0 to indicate it.
  • entropy coding is performed on the code stream obtained after the multi-tree encoding to obtain a geometric code stream.
  • the binary bit stream that was previously coded to represent the division of the multi-branch tree is sent bit by bit to the coding engine for entropy coding, and then the binary bit stream representing the number of point cloud points in the leaf node is sent to the arithmetic coding engine for entropy coding. According to the above process, the position coordinates of the point cloud can be encoded.
  • step 101 to step 104 the encoding of the position coordinates of the point cloud is completed.
  • the position coordinate coding of the point cloud and the attribute information coding are usually carried out separately.
  • step 105 to step 110 the encoding of the attribute information of the point cloud can be completed.
  • a polytree reconstruction is performed.
  • This step is used to obtain the order of the position coordinates after the multi-tree encoding, and compress and encode the attribute information corresponding to the order of the position coordinates.
  • the attribute information is spatially converted.
  • attribute interpolation is performed.
  • This step is optional, and only needs to be done when the position coordinates are changed (for example, the number of point cloud points is changed or the distance between point cloud points and point cloud points is changed), such as when duplicate points are removed.
  • Attribute interpolation for example, when the attribute value is a color, it needs to be recolored.
  • De-duplication points are a cause of changes in geometric information. According to the geometric position and attribute information of the original point cloud point, and the geometric position of the reconstructed point cloud point, new attribute values can be calculated for the reconstructed point cloud point, so that the reconstructed point cloud point and the original point The attribute error between cloud points is the smallest.
  • Step 2 For each data point in the reconstructed point cloud Find the closest point P i * among the original point cloud points, assuming that the attribute value of P i * is A i * ;
  • Step 4 For each reconstructed point cloud point Calculate the reconstructed attribute information, where, if U(i) is empty, then directly assign the attribute value A i * obtained in step 2 as the reconstructed attribute value If U(i) is not empty, it is a data point
  • the reconstructed attribute value is the attribute mean value of all data points in U(i), and the calculation formula is as follows:
  • attribute prediction is performed.
  • the point cloud needs to be reordered based on the Morton code first to generate a point cloud point sequence that can be used for attribute prediction.
  • Morton codes are mainly calculated based on Morton lookup tables. For example, the following process can be used:
  • Step 1 Traverse the reconstructed point cloud to obtain the geometric coordinates x, y, z corresponding to the current data point;
  • Step 2 Query the Morton table according to the geometric coordinates and calculate the Morton code corresponding to the current data point;
  • Step 3 Reorder the point cloud based on Morton code.
  • the attribute prediction is performed on the sorted point cloud, and the attribute residual is obtained according to the predicted value and the original value.
  • entropy coding is performed on the quantized coefficient value to obtain the attribute code stream.
  • the attribute value obtained by attribute coding is sent to an arithmetic coding engine for entropy coding, and finally a compressed coded code stream is obtained. According to the above process, the coding of the attribute information of the point cloud can be realized.
  • the geometric code stream and the attribute code stream obtained after encoding can be output to the memory for storage, or can be transmitted to the decoding end.
  • the point cloud point data mentioned above may include attribute information. However, it should be understood that, in the embodiment of the present application, the point cloud point data may not include attribute information, and only include position coordinate information.
  • the point cloud decoding process is the inverse process of the point cloud encoding process.
  • Fig. 4 is a schematic diagram of an existing point cloud decoding process provided in an embodiment of the present application.
  • the decoding process shown in Fig. 4 includes some or all of the following steps.
  • the code stream to be decoded is obtained.
  • the code stream can be obtained from the memory, or the code stream transmitted by the encoding end can be obtained.
  • entropy decoding is performed on the code stream.
  • the code stream corresponding to the position coordinates and the code stream corresponding to the attribute information can be obtained respectively.
  • the initialization space of the point cloud can be determined first, where the size of the initialization space can be written into the code stream by the encoding end, and the decoding end can obtain it from the code stream. Then the initialization space is divided into multi-tree.
  • the decoding end uses the same space division method as the encoding end to divide the initialization space.
  • the position coordinates of the point cloud point are obtained through multiple sub-nodes in the divided multi-tree and their corresponding binary bit streams.
  • the position coordinates of the point cloud points are inversely quantized.
  • the position coordinates of the point cloud can be obtained.
  • the attribute information of the point cloud point is decoded.
  • the code stream corresponding to the attribute information is inversely quantized.
  • the attribute reconstruction is performed.
  • a point cloud After combining the position information obtained by the above decoding and the attribute information, a point cloud can be obtained.
  • the process of multi-tree partition coding for position coordinates adopts the breadth-first order to traverse the multi-tree, and further iterates the multi-tree sub-blocks with point cloud points.
  • the scheme of division This scheme has high complexity, and there is a waste of coded bits in the partition representation of some sub-blocks that only contain one leaf node. This affects to a certain extent the performance of multi-tree coding on the performance index of compression rate.
  • the multi-tree division process of the position coordinates is based on the breadth-first order to traverse the multi-tree. This division process is carried out layer by layer. Only after one layer is divided can the next layer be divided. This This scheme brings great difficulties to the parallelization of point cloud compression.
  • the embodiment of the application proposes to address the above-mentioned problems.
  • different encoding methods can be switched in real time according to the number and/or distribution of point cloud points, and the switching between encoding methods can be achieved through the first An identifier and a second identifier.
  • This method can increase the flexibility of point cloud encoding and decoding, reduce the overhead in the point cloud encoding and decoding process, reduce the complexity of point cloud encoding and decoding, and improve the performance of point cloud encoding and decoding.
  • the method for point cloud encoding and decoding proposed in the embodiments of this application can be applied to point cloud encoding equipment and point cloud decoding equipment, such as photoelectric radar, lidar, etc.
  • the point cloud encoding equipment and point cloud decoding equipment can be set On smart terminals (such as mobile phones, tablet computers, etc.).
  • the embodiments of this application can also be applied to aircraft (such as drones).
  • the embodiments of this application can also be applied to other movable platforms (such as unmanned ships, unmanned vehicles). , Robots, etc.), the embodiments of this application do not make specific limitations.
  • nodes in the polytree of the point cloud in the embodiment of the present application may also be referred to as blocks, and correspondingly, the sub-nodes may be referred to as sub-blocks.
  • node (or block) and sub-node (or sub-block) are relative concepts. For example, for a certain layer divided by a multi-branch tree, a node of the layer can be a child node of one or more layers above it.
  • the method for point cloud encoding and decoding provided in the embodiments of the present application will be schematically described below in conjunction with the accompanying drawings.
  • the point cloud encoding and decoding method provided in the embodiments of the present application can be applied to various technical fields, including but not limited to the technical field of Digital Audio Video Standard (AVS).
  • AVS Digital Audio Video Standard
  • FIG. 5 is a schematic flowchart of a method for point cloud coding according to an embodiment of the present application.
  • the method 500 shown in FIG. 5 can be applied to the aforementioned point cloud encoding device.
  • the method 500 described in the embodiment of the present application includes the following steps.
  • a code stream is generated.
  • the code stream includes the first identifier, the second identifier, and coded bits of the position information of the point cloud.
  • the first identifier is used to indicate the coding mode of the position information of the point cloud to be switched
  • the second identifier is used to indicate the coding mode of the position information of the point cloud after the switching.
  • the code stream is sent.
  • the coded bits of the position information of the point cloud in the code stream may be obtained by coding using a switched coding method.
  • Fig. 6 is a schematic flowchart of a method for point cloud decoding provided by an embodiment of the present application.
  • the process of point cloud decoding corresponds to the way of point cloud encoding.
  • the method 600 shown in FIG. 6 can be applied to the aforementioned point cloud decoding device. Specifically, the method 600 described in the embodiment of the present application includes the following steps.
  • the code stream is obtained.
  • the code stream includes the first identifier, the second identifier, and coded bits of the position information of the point cloud.
  • the first identifier is used to indicate the coding mode of the position information of the point cloud to be switched
  • the second identifier is used to indicate the coding mode of the position information of the point cloud after the switching.
  • the coded bits of the position information are decoded according to the switched coding mode.
  • a first identifier and a second identifier are added to the code stream, where the first identifier is used to indicate the switching of the coding mode of the point cloud position information, and the second identifier is used To indicate the encoding method after switching. Therefore, in the point cloud encoding or decoding process, the most suitable encoding method can be used to encode or decode the point cloud according to the number and distribution of the point cloud points flexibly, which increases the flexibility of point cloud encoding and decoding. Improve the efficiency and performance of point cloud encoding and decoding.
  • the real-time point cloud may be obtained by optical detection of the object to be detected by the optical detection device, such as laser detection.
  • the light detection device can be, for example, a photoelectric radar, or a laser radar, a laser scanner and other equipment.
  • the encoding device in the embodiment of the present application may be integrated into the optical detection device.
  • the lidar is a perceptual sensor that can obtain three-dimensional information of the scene.
  • the basic principle is to actively emit laser pulse signals to the detected object and obtain the reflected pulse signals.
  • the depth information of the distance detector of the detected object is calculated; Know the launch direction, obtain the angle information of the measured object relative to the lidar; combine the aforementioned depth information and angle information to obtain a large number of detection points, called point clouds.
  • a variety of different coding methods can be used for coding the point cloud.
  • different encoding methods may be numbered separately, and different encoding methods correspond to different numbers.
  • the first identifier indicates that the encoding method is switched, and the second identifier specifically indicates the encoding method after the switching, for example, the number corresponding to the encoding method.
  • the number 0 represents the first encoding method
  • the number 1 represents the second encoding method
  • the number 2 represents the third encoding method
  • the number 4 represents the fourth encoding method, etc.
  • the encoding end adds a first identifier to the code stream to indicate the encoding mode switching.
  • the decoder can know that the encoding mode needs to be switched, and then obtain the switched encoding mode from the second identifier, so as to continue decoding using the switched encoding mode.
  • the second identifier is 2bit
  • the first encoding method corresponding to the number 0 can be represented by 00
  • the second identifier is 00
  • the second encoding method corresponding to the number 1 can be represented by 01
  • the second encoding method corresponding to the number 1 can be represented by 01.
  • the identifier is 01.
  • the length of the second identifier can be determined by the number of encoding methods that need to be represented and the encoding method for encoding the second identifier.
  • the second identifier may be encoded in a fixed-length code encoding or a variable-length code encoding. Encoding using fixed-length code encoding or variable-length code encoding can simplify the encoding process and reduce the time overhead of encoding and decoding, and there is no need to add more encoding information to the code stream, thereby increasing the compression rate.
  • the bit width of the fixed-length code can be agreed in advance by the encoding end and the decoding end, for example, the bit width specification is written into the standard; or the bit width of the fixed-length code can be written into the code stream, for example, into the code stream
  • the geometric header information can be interpreted as the header information encoded with geometric position coordinates. For example, assuming that the bit width of the long code is 3, up to 8 encoding methods can be expressed through 000-111; if the bit width of the long code is set to 4, then up to 16 encoding methods can be expressed through 0000-1111 Way.
  • the second identifier may only be used to indicate specific coding techniques among multiple coding techniques. For example, suppose there are multiple coding technologies, but for some reasons, such as frequency of use or implementation cost, the second identifier can only be used to indicate several specific coding technologies. Take specific two coding technologies as an example. They are the first coding technique and the second coding technique. These two encoding technologies may be the two encoding methods agreed by the encoding end and the decoding end, such as the most frequently used or the easiest to implement. At this time, using 1 bit can indicate the two encoding methods.
  • the decoding end can determine whether to switch to the first encoding technique or the second encoding technique according to the second identifier.
  • the specific coding technologies can be indicated to the coding end through the code stream, for example, the specific coding technology is indicated in the header information.
  • the numbers are 0, 1, 2, 3, 4, 5, 6, 7, among which the second identifier is used to indicate specific coding technologies among the eight coding technologies, with specific Take two coding techniques as examples, namely the sixth coding technique and the seventh coding technique.
  • index 0 corresponds to the sixth coding technology numbered 5.
  • Index 1 corresponds to the seventh coding technique numbered 6.
  • the encoding end When the encoding end is encoding the code stream, if it is necessary to switch the encoding method of the position information of the point cloud, when the encoding second identifier is 0, it means switching to the sixth encoding technology, and when the encoding second identifier is 1, it means Switch to the seventh encoding technique.
  • the decoder After the decoder obtains the bit width of the second identifier from the header information, and the corresponding index of the sixth coding technology and the seventh coding technology, it can switch to the sixth according to the second identifier in the code stream.
  • the coding technique is also the seventh coding technique.
  • variable length code encoding can be, for example, truncated Rice encoding, K-order exponential Golomb encoding, or unary code encoding, where K is 0 or a positive integer.
  • the threshold is cMax
  • the Rice parameter is R
  • the number corresponding to the switched coding mode is Idx.
  • the suffix value S Idx-(P ⁇ R).
  • the suffix code is a binary string of S, and the length is R.
  • R and cMax of the Rice code can be agreed in advance by the encoding and decoding end and the decoding end, for example, specified in the standard.
  • the exponential Golomb code is composed of a prefix and a suffix. Both the prefix and the suffix depend on the order k of the exponential Golomb code.
  • the k-order exponential Golomb code of the number value I corresponding to the switched encoding method can be generated, for example, using the following steps:
  • Step 1 Express the non-negative integer I in binary form, and add 1 after removing the lowest k bits;
  • Step 2 Calculate the number of bits left, and subtract one from this number, that is, the number of prefix zeros that need to be added;
  • Step 3 Add the lowest k bits removed in step 1 to the end of the bit string.
  • the first-order exponential Golomb encoding can be calculated according to the following steps:
  • steps 1 and 4 The binary representation of steps 1 and 4 is 100, after removing the lowest 1 bit 0, it 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 code word formed is 0110.
  • the encoded second identifier is 0110.
  • the prefix is composed of m consecutive 0s and one 1
  • the suffix is composed of m+k, which is the binary representation of I-2 k (2 m -1). Based on this, the encoding can be binarized.
  • the coding order k of the k-order Columbus code may be agreed upon in advance by the coding end and the decoding end, for example, stipulated in the standard.
  • the number value I corresponding to the switched encoding mode can be defined as: I-1 followed by a 0, or I-1 followed by a 1 immediately.
  • binarization schemes can also be used to encode the numbers corresponding to the switched encoding methods. After encoding the second identifier, you can switch to the encoding method corresponding to the number indicated by the second identifier when you need to switch the encoding method, so as to use the switched encoding method to encode the position information of the point cloud Or decode.
  • the point cloud in the embodiment of the present application adopts a multi-tree division method for position division, and the position information of the point cloud in the code stream includes the first node in the Nth layer of the multi-tree
  • the position information of the point cloud point, N is an integer greater than or equal to 1.
  • the first identifier may be composed of multiple zeros, for example, where the number of zeros is related to the multi-tree used for position division of the point cloud. For example, when the polytree is an M-ary tree, the number of 0s in the first identifier is equal to M, and M is a positive integer.
  • the encoding mode is switched when it is decoded to eight bit 0; if it is a quadtree division mode, when the decoding is performed Switch the encoding mode when it reaches four bits of 0; if it is a binary tree division method, switch the encoding mode when it is decoded to two bits of 0;
  • the first identifier indicates the switching of the coding mode
  • the specific coding mode to be switched is indicated by the second identifier.
  • the position information of the point cloud point in the first node of the Nth level of the multi-branch tree of the point cloud is coded using the coding mode indicated by the second identifier, that is, the switched coding mode.
  • the embodiment of the present application does not limit the position of the second identifier.
  • the second identifier may be located in the geometric header information of the code stream.
  • the coded bit of the position information of the point cloud in the code stream may be located after the first identifier.
  • the decoding end can obtain the switched encoding mode from the header information of the code stream, and after obtaining the first identifier, use the switched encoding mode to decode the coded bits of the position information in the code stream.
  • the second identifier may be located after the first identifier, for example, after the above-mentioned eight-bit 0 that is 0000 0000, four-bit 0 that is after 0000, or two-bit 0 that is 00.
  • the second identifier may be adjacent to the first identifier.
  • the coded bit of the position information of the point cloud in the code stream may be located after the second identifier. After determining the encoding mode switching according to the first identifier, the decoding end may then obtain the switched encoding mode from the second identifier, and use the switched encoding mode to decode the encoded bits of the position information in the code stream. In an implementation manner, the coded bit of the position information of the point cloud is adjacent to the second identifier.
  • the encoding end can first encode the first identifier, which is eight bits of 0, and then use fixed-length code encoding or variable-length code to encode the second identifier.
  • the encoding end can first Encode the first identifier, which is a four-bit 0, and then use fixed-length code or variable-length code to encode the second identifier, that is, the number corresponding to the switched encoding method, then switch the encoding method, and use the switched encoding method to pair
  • the position information of the point cloud is encoded; if the Nth layer is obtained by a binary tree division method, the encoding end can first encode the first identifier, that is, two bits of 0, and then use fixed-length code encoding or variable-length code to encode the second identifier Symbol, that is, the number corresponding to the switched coding mode, then switch the coding mode, and use the switched coding mode to encode the position information of the point cloud.
  • decode the second identifier for example, perform fixed-length code decoding according to the bit width agreed with the encoding end , Or perform variable-length code decoding according to the inverse binarization process of the binarization scheme agreed with the encoding end, and obtain the number corresponding to the switched encoding method, so as to switch to the encoding method corresponding to the number, and use the switched encoding
  • the method decodes the position information of the point cloud; if it is a quad tree, when it is decoded to four bits 0, then decode the second identifier to obtain the number corresponding to the switched encoding method, so as to switch to the encoding method corresponding to the number , And use the switched encoding method to decode the position information of the point cloud; if it is a binary tree, when it is decoded to two bits 0, decode the second
  • the method in the embodiment of the present application can be applied to the situation where there are multiple encoding methods.
  • the multiple encoding methods may be a breadth-first encoding method or a depth-first encoding method, and may also be other types of encoding methods such as isolated point encoding.
  • the second identifier may indicate a breadth-first encoding method, may also indicate a depth-first encoding method, or may indicate other types of encoding methods. For example, suppose the number corresponding to the breadth-first encoding method is 0, the number corresponding to the depth-first encoding method is 1, and the number corresponding to the outlier encoding method is 2, and the second identifier is located after the first identifier.
  • the encoding number if the encoding number is 0, it means switching to the breadth-first encoding method to encode the position coordinates of the point cloud; if the encoding number 1, it means switching to the depth-first encoding method for the point cloud The position coordinates are coded; if the code number is 2, it means switching to the isolated point coding mode to code the position coordinates of the point cloud.
  • the breadth-first encoding method may be, for example, the encoding method described above with respect to FIG. 4.
  • the first node When coding the first node of the Nth level of the multi-branch tree using the isolated point coding method, the first node only contains one point cloud point, and the number of Morton code bits to be coded for the point cloud point in the first node
  • the sum is greater than twice the number in the direction of the minimum side length, for example, you can first encode eight bits 0 as the first identifier, and then encode the number corresponding to the isolated point encoding method as the second identifier.
  • Contains a point cloud point then directly encode the geometric coordinates of the point cloud point corresponding to the last encoded bit of the Morton code. Specifically, it can be coded sequentially in the order of x, y, and z, where the direction that has reached the minimum side length does not need to be coded.
  • the point cloud points in the first node can be The index of each layer node in the polytree is coded. That is to say, when the first node is coded, the code stream of the first node contains the index of the point cloud point in the first node at each level of the polytree.
  • the index when the Nth layer is obtained by using an octree division, the index can be 0 to 7, for the application of 3 bits, that is, 000-111 represents; when the Nth layer is obtained by using a quadtree division, the index can be 0 to 3, for the application of 2 bits, that is, 00-11; when the Nth layer is obtained by binary tree division, the index can be 0 to 1, and for the application of 1 bit, that is, 0 to 1.
  • one of the depth-first encoding methods is used when the following conditions are met: the number of leaf nodes at the bottom of the first node below the Nth layer is less than or equal to 2; or, all the point cloud points of the first node The number of is less than or equal to 2, and the number of levels obtained by dividing the first node polytree is greater than or equal to 2.
  • an indicator bit can be set to indicate that the number of nodes containing point cloud points in a certain layer of the first node is 1 or 2. For example, when the indicator bit is 0, it is used to indicate that the layer contains The number of point cloud point nodes is 1; when the indicator bit is 1, it is used to indicate that the number of point cloud points in the layer is 2.
  • the corresponding numbers for the breadth-first, depth-first, and isolated point encoding methods are number 0, number 1, and number 2, using a fixed-length code with a width of 2 to encode number 0, number 1, and number 2, and get the second identification
  • the symbols are 00, 01, and 10 respectively.
  • the 8-bit 0 of the first identifier can be encoded, that is, 0000 0000, which is used to indicate the encoding mode switch, and then the encoding mode after the encoding switch corresponds to The serial number is used to indicate the encoding method after switching.
  • the encoding method is width-first, that is, 01.
  • the position information of the node 701 is encoded using the switched encoding method.
  • the width-first encoding method after switching can be: adding the indicator bit 0 to indicate that there is a bit cloud point in the first layer, and then dividing the node 701 octree to obtain the first layer of the first layer.
  • the index 2 corresponding to the 3 child nodes 702 is coded to get 010, and then the second indicator bit 0 is added to indicate that there is a bit cloud point in the second layer, and then the third child node 702 of the first layer is occluded
  • the index 0 corresponding to the first child node 703 of the second layer obtained by the tree division is encoded to obtain 000. Therefore, the code stream obtained after the node 701 is divided and coded by the octree partitioning and coding method indicated by the second identifier is 0000 0000 0100 1000 00.
  • the first identifier used to indicate the encoding mode switch is decoded, for example, it is decoded to 8
  • the bit of 0 is 0000 0000
  • decode the second identifier which is 01
  • the switched encoding method uses the switched encoding method to decode the number of nodes that indicate that the first node contains point cloud points in the current layer, then decode the index of the child nodes of the current layer containing point cloud points, and then decode the one below the current layer.
  • the layer contains the index of the child node of the point cloud point, until the index of the child node of the point cloud point in each layer below the Nth layer of the first node is decoded.
  • the first node of the Nth layer of the multi-branch tree has the same distribution of specific nodes in at least consecutive Q layers under the Nth layer.
  • the node is a node containing point cloud points, and Q is a preset positive integer.
  • the first node below the Nth layer has at least the same distribution of specific nodes in the continuous Q layer means that the first node is below the Nth layer at least in the continuous Q layer, and each layer includes the child nodes of the point cloud point.
  • the index is the same.
  • the corresponding numbers for the breadth-first, depth-first, and isolated point encoding methods are number 0, number 1, and number 2, using a fixed-length code with a width of 2 to encode number 0, number 1, and number 2, and get the second identification
  • the symbols are 00, 01, and 10 respectively.
  • the node 801 at the 0th level obtained by octree division includes point cloud points, and the octree division on node 801 obtains that the third child node 802 at the first level includes point cloud points and the 8th child node.
  • the eighth child node 803 includes point cloud points, and then divide the third child node 802 of the first layer into an octree to obtain the third child node 804 of the second layer includes point cloud points, and the eighth child node 805 includes point cloud points, and then The eighth child node 803 of the first layer is divided into an octree to obtain that the third child node 806 of the second layer includes a point cloud point, and the eighth child node 807 includes a point cloud point.
  • the 3 child nodes and the 8th child node include point cloud points
  • the 3rd child node of the first layer includes point cloud points in the 3rd child node and the 8th child node of the 2nd layer
  • the 8th child node of the first layer Each child node includes point cloud points in the third child node and the eighth child node of the second layer.
  • the encoding is stopped, and if the leaf node has not been reached, the octree division is continued.
  • the index 2 corresponding to the third child node 802 of the first layer obtained by the node 801 octree division is encoded to obtain 010, and then all The index 7 corresponding to the eighth child node 803 of the first layer is coded to obtain 111; then the third child node 802 of the first layer is divided into the third child node 804 of the second layer corresponding to the octree division
  • the index 2 is encoded to obtain 010, and the index 7 corresponding to the eighth child node 805 of the second layer obtained by the octree division of the third child node 802 of the first layer is coded to obtain 111;
  • the first identifier used to indicate the encoding mode switch is decoded, for example, it is decoded to 8
  • the bit of 0 is 0000 0000
  • decode the second identifier to obtain the switched encoding method, such as the width-first encoding method, which is 01, and then use the switched encoding method to decode the first node's specific node below the Nth layer.
  • the switched encoding method such as the width-first encoding method, which is 01
  • the second identifier in the embodiment of the present application may also indicate a specific encoding method among the breadth-first and depth-first encoding methods.
  • the depth-first encoding method may include the two encoding methods described above with respect to FIG. 7 and FIG. 8 respectively, and the two encoding methods may correspond to different numbers.
  • the currently used encoding method is a breadth-first encoding method
  • when encoding to the first node of the Nth layer of the multi-tree if it is determined to adopt the first encoding method in depth-first, then after encoding the first identifier, Encode the number corresponding to the first encoding method as the second identifier, and use the first encoding method to encode the position information of the first node, for example, as shown in Figure 7; if it is determined to use the second encoding method in depth first , After encoding the first identifier, then encode the number corresponding to the second encoding method as the second identifier, and use the second encoding method to encode the position information of the first node, for example, as shown in FIG. 8.
  • the point cloud decoding device includes: a memory 901, a processor 902, and a communication interface 903.
  • the communication interface 903 may be a wired interface (including but not limited to a WAN port) or a wireless interface (for example, wifi, 4G, 5G, or other communication interfaces evolved in the future).
  • the memory 901 may include a volatile memory (Volatile Memory); the memory 901 may also include a non-volatile memory (Non-Volatile Memory); the memory 901 may also include a combination of the foregoing types of memories.
  • the processor 902 may be a central processing unit (Central Processing Unit, CPU).
  • the processor 902 may further include a hardware point cloud decoding device.
  • the foregoing hardware point cloud decoding device may be an application-specific integrated circuit (ASIC), a programmable logic device (Programmable Logic Device, PLD), or a combination of the two. For example, it may be a complex programmable logic device (Complex Programmable Logic Device, CPLD), a Field-Programmable Gate Array (Field-Programmable Gate Array, FPGA), or any combination thereof.
  • the memory 901 is used to store a program, and when the program is executed, the processor 902 can call the program stored in the memory 901 to perform the following steps:
  • the code stream includes a first identifier, a second identifier, and coded bits of the position information of the point cloud, and the first identifier is used to indicate the switch of the point cloud.
  • the encoded bits of the position information are decoded.
  • the second identifier is located after the first identifier.
  • the second identifier is adjacent to the first identifier.
  • the coded bit of the position information of the point cloud is located after the second identifier.
  • the coded bit of the position information of the point cloud is adjacent to the second identifier.
  • the second identifier is located in the geometric header information of the code stream.
  • the second identifier is encoded by a fixed-length code.
  • the length of the fixed-length code is a preset value.
  • the second identifier is encoded by a variable length code.
  • variable-length code encoding includes any one of truncated Rice encoding, K-order exponential Golomb encoding, and unary code encoding, and K is 0 or a positive integer.
  • the point cloud is divided into positions using a multi-tree division method, and the position information of the point cloud includes the position of the point cloud point in the first node of the Nth layer of the multi-tree Information, N is an integer greater than or equal to 1.
  • the first identifier is a plurality of 0s, where the number of 0s is related to a multi-tree used for position division of the point cloud.
  • the polytree is an M-ary tree, the number of 0s in the first identifier is equal to the M, and M is a positive integer.
  • the Nth layer is obtained by using an octree division method, and the first identifier is an eight-bit 0; or, the Nth layer is obtained by using a quadtree division method. Yes, the first identifier is a four-bit 0; or, the Nth layer is obtained by using a binary tree division method, and the first identifier is a two-bit 0.
  • the switched encoding manner includes a breadth-first encoding manner, a depth-first encoding manner, or an isolated point encoding manner.
  • the point cloud decoding device when it obtains the first identifier in the bitstream, it can determine the encoding mode switching according to the first identifier, and when it decodes the second identifier, it can determine the switching of the encoding method according to the second identifier.
  • the symbol determines the encoding method after switching, and uses the encoding method after switching to decode the code stream.
  • the most suitable encoding method can be used to encode or decode the point cloud flexibly according to the change in the number and distribution of point cloud points, which increases the flexibility of point cloud encoding and decoding. Improve the efficiency and performance of point cloud encoding and decoding.
  • FIG. 10 is a schematic structural diagram of a point cloud encoding device provided by an embodiment of the present application.
  • the point cloud encoding device includes a memory 1001, a processor 1002, and a communication interface 1003.
  • the communication interface 1003 may be a wired interface (including but not limited to a WAN port) or a wireless interface (for example, wifi, 4G, 5G, or other communication interfaces evolved in the future).
  • the memory 1001 may include a volatile memory (Volatile Memory); the memory 1001 may also include a non-volatile memory (Non-Volatile Memory); the memory 1001 may also include a combination of the foregoing types of memories.
  • the processor 1002 may be a central processing unit (CPU).
  • the processor 1002 may further include a hardware point cloud encoding device.
  • the foregoing hardware point cloud encoding device may be an application-specific integrated circuit (ASIC), a programmable logic device (Programmable Logic Device, PLD), or a combination of the two.
  • ASIC application-specific integrated circuit
  • PLD programmable logic device
  • PLD programmable Logic Device
  • FPGA Field-Programmable Gate Array
  • the memory 1001 is used to store a program, and when the program is executed, the processor 1002 can call the program stored in the memory 1001 to perform the following steps:
  • the code stream includes a first identifier, a second identifier, and coded bits of the position information of the point cloud
  • the first identifier is used to indicate to switch the code of the position information of the point cloud Mode
  • the second identifier is used to indicate a coding mode of the position information of the point cloud after the switch
  • the coding bits of the position information of the point cloud are obtained by coding using the coding mode after the switch
  • the code stream is sent through the communication interface 1003.
  • the second identifier is located after the first identifier.
  • the second identifier is adjacent to the first identifier.
  • the coded bit of the position information of the point cloud is located after the second identifier.
  • the coded bit of the position information of the point cloud is adjacent to the second identifier.
  • the second identifier is located in the geometric header information of the code stream.
  • the second identifier is encoded by a fixed-length code.
  • the length of the fixed-length code is a preset value.
  • the second identifier is encoded by a variable length code.
  • variable-length code encoding includes any one of truncated Rice encoding, K-order exponential Golomb encoding, and unary code encoding, and K is 0 or a positive integer.
  • the point cloud is divided into positions by using a multi-tree division method, and the position information of the point cloud includes the information of the point cloud points in the first sub-block of the Nth layer of the multi-tree.
  • Location information, N is an integer greater than or equal to 1.
  • the first identifier is a plurality of 0s, where the number of 0s is related to a multi-tree used for position division of the point cloud.
  • the polytree is an M-ary tree, the number of 0s in the first identifier is equal to the M, and M is a positive integer.
  • the Nth layer is obtained by using an octree division method, and the first identifier is an eight-bit 0; or, the Nth layer is obtained by using a quadtree division method. Yes, the first identifier is a four-bit 0; or, the Nth layer is obtained by using a binary tree division method, and the first identifier is a two-bit 0.
  • the switched encoding manner includes a breadth-first encoding manner, a depth-first encoding manner, or an isolated point encoding manner.
  • the point cloud coding device when the point cloud coding device switches the coding mode for coding, it adds a first identifier and a second identifier to the code stream, where the first identifier is used to indicate the switching of the coding mode, and the second The identifier is used to indicate the encoding method after switching.
  • the most suitable encoding method can be used to encode or decode the point cloud flexibly according to the change in the number and distribution of point cloud points, which increases the flexibility of point cloud encoding and decoding. Improve the efficiency and performance of point cloud encoding and decoding.
  • the embodiment of the present application also provides a computer-readable storage medium, the computer-readable storage medium stores a computer program, and when the computer program is executed by a processor, it implements the point described in FIG. 5 of the embodiment of the present application.
  • the cloud encoding method or the method for point cloud decoding described in FIG. 6; the point cloud decoding device described in FIG. 9 or the point cloud encoding device described in FIG. 10 can also be implemented, which will not be repeated here.
  • the computer-readable storage medium may be an internal storage unit of the device described in any of the foregoing embodiments, such as a hard disk or memory of the device.
  • the computer-readable storage medium may also be an external storage device of the device, such as a plug-in hard disk, a Smart Media Card (SMC), or a Secure Digital (SD) card equipped on the device. , Flash Card, etc.
  • the computer-readable storage medium may also include both an internal storage unit of the device and an external storage device.
  • the computer-readable storage medium is used to store the computer program and other programs and data required by the device.
  • the computer-readable storage medium can also be used to temporarily store data that has been output or will be output.
  • the program can be stored in a computer readable storage medium.
  • the storage medium may be a magnetic disk, an optical disc, a read-only memory (Read-Only Memory, ROM), or a random access memory (Random Access Memory, RAM), etc.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

提供一种用于点云编解码的方法,该方法包括:获取码流,其中,所述码流包括第一标识符、第二标识符、以及点云的位置信息的编码比特,所述第一标识符用于指示切换所述点云的位置信息的编码方式,所述第二标识符用于指示切换后的所述点云的位置信息的编码方式;根据所述切换后的编码方式,对所述位置信息的编码比特进行解码。该方法可以增加对点云编码和解码的灵活性,提高对点云编码和解码的效率以及性能。

Description

一种用于点云编码、解码的方法和设备
版权申明
本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。
技术领域
本申请涉及编解码领域,并且更为具体地,涉及一种用于点云编码、解码的方法和设备。
背景技术
点云是空间物体或场景的一种表现形式,是由空间中一组无规则分布、表达空间物体或场景的空间结构和表面属性的离散点所构成,一个点云的数据可以包括描述坐标信息的空间坐标,以及进一步包括该位置坐标的属性。为了准确反映空间中的信息,所需离散点的数目是巨大的。为了减少点云存储和传输时所占用的带宽,需要对点云进行编码压缩处理,而如何提高对点云的编解码性能成为一项亟待解决的问题。
发明内容
本申请提供一种用于点云编码、解码的方法和设备,可以增加对点云编码和解码的灵活性,提高对点云编码和解码的效率以及性能。
第一方面,提供一种用于点云编码的方法,包括:
获取码流,其中,所述码流包括第一标识符、第二标识符、以及点云的位置信息的编码比特,所述第一标识符用于指示切换所述点云的位置信息的编码方式,所述第二标识符用于指示切换后的所述点云的位置信息编码方式;
根据所述切换后的编码方式,对所述位置信息的编码比特进行解码。
第二方面,提供一种用于点云解码的方法,包括:
生成码流,其中,所述码流包括第一标识符、第二标识符、以及点云的位置信息的编码比特,所述第一标识符用于指示切换所述点云的位置信息的 编码方式,所述第二标识符用于指示切换后的所述点云的位置信息编码方式;
发送所述码流。
第三方面,提供一种用于点云解码的设备,所述设备包括:存储器和处理器,
所述存储器,用于存储程序;
所述处理器,用于调用所述程序,当所述程序被执行时,用于执行以下操作:
获取码流,其中,所述码流包括第一标识符、第二标识符、以及点云的位置信息的编码比特,所述第一标识符用于指示切换所述点云的位置信息的编码方式,所述第二标识符用于指示切换后的所述点云的位置信息编码方式;
根据所述切换后的编码方式,对所述位置信息的编码比特进行解码。
第四方面,提供一种用于点云编码的设备,所述设备包括:存储器和处理器,
所述存储器,用于存储程序;
所述处理器,用于调用所述程序,当所述程序被执行时,用于执行以下操作:
生成码流,其中,所述码流包括第一标识符、第二标识符、以及点云的位置信息的编码比特,所述第一标识符用于指示切换所述点云的位置信息的编码方式,所述第二标识符用于指示切换后的所述点云的位置信息编码方式,所述点云的位置信息的编码比特是采用所述切换后的编码方式进行编码得到的;
发送所述码流。
第五方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面所述的方法或上述第二方面所述的方法。
基于上述技术方案,在点云编码或解码过程中增加第一标识符和第二标识符,其中该第一标识符用于指示切换点云的位置信息的编码方式,该第二标识符用于指示切换后的编码方式。这样,在点云编码或解码过程中,可以灵活地根据点云点的数量和分布的变化采用最合适的编码方式对点云进行 编码或解码,增加了对点云编码和解码的灵活性,提高对点云编码和解码的效率以及性能。
附图说明
图1是本申请实施例提供的一种现有点云编码流程的示意图;
图2是本申请实施例提供的一种现有点云解码流程的示意图;
图3是本申请实施例提供的一种立方体八叉树划分的示意图;
图4是本申请实施例提供的一种八叉树节点逐层划分的示意图;
图5是本申请实施例提供的一种用于点云编码的方法的流程示意图;
图6是本申请实施例提供的一种用于点云解码的方法的流程示意图;
图7是本申请实施例提供的一种可能的宽度优先的解码方式的示意图;
图8是本申请实施例提供的另一种可能的宽度优先的解码方式的示意图;
图9是本申请实施例提供的点云解码设备的结构示意图;
图10是本申请实施例提供的点云编码设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
应理解,本文中的具体的例子只是为了帮助本领域技术人员更好地理解本申请实施例,而非限制本申请实施例的范围。
还应理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
还应理解,本说明书中描述的各种实施方式,既可以单独实施,也可以组合实施,本申请实施例对此并不限定。
除非另有说明,本申请实施例所使用的所有技术和科学术语与本申请的技术领域的技术人员通常理解的含义相同。本申请中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本申请的范围。
为了便于理解本申请实施例提供的技术方案,首先描述本申请实施例涉及的一些概念。
点云是三维物体或场景的一种表现形式,是由空间中一组无规则分布、表达三维物体或场景空间结构和表面属性的离散点集所构成。为了准确反映空间中的信息,所需离散点的数目是巨大的。为了减少点云存储和传输时所占用的带宽,可以对点云进行编码压缩处理。点云可以由离散点构成,下文将点云中的离散点称为点云点。点云的数据可以包括描述该点云中的点云点的位置坐标的信息,以及进一步可以包括点云点的属性的信息。其中,点云点的位置坐标可以为三维位置坐标(x,y,z)。点云点的属性信息可以包括点云点的反射率和/或颜色等。
为了准确反映空间的信息,点云中包括的点云点的数量通常是较大的。为了减少点云的数据存储和传输时所占用的带宽,需要对点云进行编码压缩处理。以下将结合图1至图2描述如何对点云进行编码和解码处理。
如图1所示,图1是本申请实施例提供的一种现有点云编码流程的示意图,图1所示的编码过程包括以下步骤中的部分或全部。
在101中,向编码器中输入点云的数据。
其中,点云的数据可以包括几何位置以及属性信息。
在102中,对点云的数据点的位置坐标进行平移和量化。
例如,可以根据位置坐标在三个轴的最大值、最小值之间的差值,以及根据输入参数确定的量化精度,对每个点云点的位置坐标进行量化,将输入的点云点的位置坐标转换为大于等于零的整数坐标。
在103中,对处理后的位置坐标进行编码。
本申请实施例中,可以使用多叉树编码的方式对位置坐标进行编码。其中,所述的多叉树可以是八叉树、四叉树、二叉树等;也可以是其中两种叉树的混合,或是三种叉树的混合。
其中,在进行多叉树编码时,可以在各层,对相应的节点进行多叉树的划分,并利用比特体现该节点的多叉树的划分情况,具体可以是节点划分得到各个子节点中的数据存在情况。
相应地,在进行多叉树解码时,在各层,可以获取对应的比特,根据获取的比特对相应的节点进行多叉树的划分。
在进行多叉树划分时,每层多叉树的划分可以利用当前节点的中心点的坐标进行子节点的划分,通过中心点将当前节点划分为多个子节点,然后可以判断每个子节点内是否存在点云点,对存在点云点的子节点会再进一步进行划分,直至子节点划分至预设大小,例如,可以划分到边长为1的子节点时停止划分。
首先,可以根据多个点云点的位置坐标,比如该点云点的经过几何量化和/或去除重复坐标之后的位置坐标,选择三个方向维度(x,y,z)方向上的位置坐标的最大值和最小值,并根据选定值确定待划分的初始化空间。该初始化空间例如可以是图3所示的立方体盒子。该立方体盒子的边长的取值通常需要满足如下条件:该边长的取值为2的整数次幂,该边长的取值大于或等于,并且最接近多个点云点在三个方向维度上的位置坐标的最大值中的最大值。
在确定初始化空间之后,对该初始化空间进行多层的多叉树划分。以八叉树为例,例如图4所示,图4中黑色方块表示当前子节点内含有点云点,白色方块表示当前子块内不含有点云点。在对节点301进行八叉树划分时,依次判断每个子节点内是否含有点云点,以图4中的第一层为例,第一次划分的八叉树中第三个节302点含有点云点,剩余七个节点不含有点云点,则这样的划分可以用8比特来表示,具体为0010 0000。接着可以对含有点云点的子节点302接着进行划分,即图4中的第二层划分,在第二层中,第三个节点303与第八个节点304内含有点云点,则这次的八叉树划分可以用0010 0001来表示。接着,可以依次对这两个有点云点的子节点进行划分。
在第三层首先划分左边的子节点303,划分结果如图4中第三层左半部分所示,第一个子节点305和第四个子节点306内含有点云点,则这次的八叉树划分可以用1001 0000进行表示。其次对第二层的第二个有点云点的子节点304进行划分,划分结果如图4中第三层右半部分所示,第二个子节点307和第八个子节点308内含有点云点,则这次八叉树划分可以用0100 0001所表示。后面层的划分与前面描述相似,按照相同方式逐层进行划分。
这样,图4中的划分结果对应的二进制码流即为0010 0000 0010 0001 1001 0000 0100 0001……。当划分到最后一层,即子块的边长为1的时候,此时已经到达八叉树划分的最深位置,即到达了当前八叉树的叶子节点,不需要再进一步划分,这时需要编码当前叶子节点内含有的点云点的数目。当 前叶子节点内含有一个点云点时,直接编码一个0进行表示。当前叶子节点内含有不止一个点云点时,可以设当前叶子节点内含有n个点云点,此时会先编码一个1,接着编码数值(n-1)。
在104中,对多叉树编码后得到的码流进行熵编码,得到几何码流。
依次将前面编码表示多叉树划分的二进制比特流逐比特送入编码引擎中进行熵编码,接着将表示叶子节点内含有点云点数目的二进制比特流送入算术编码引擎中进行熵编码。根据上述流程即可以实现对点云的位置坐标的编码。
通过步骤101至步骤104,完成对点云的位置坐标的编码。点云的位置坐标编码与属性信息编码通常是分开进行的。下面,通过步骤105至步骤110,可以完成对点云的属性信息的编码。
在105中,进行多叉树重建。
该步骤用于获取多叉树编码后的位置坐标的顺序,按照位置坐标的顺序所对应的属性信息进行压缩编码。
在106中,对属性信息进行空间转换。
例如,当属性值为颜色时,可以选择进行颜色空间转化。
在107中,进行属性插值。
该步骤为可选的,在位置坐标改变(比如点云点的点数改变或者点云点与点云点之间的距离改变)的情况下,例如进行了去重复点的情况下,才需要进行属性插值,例如当属性值为颜色时,需要进行重上色。
去重复点是导致几何信息改变的一种原因。根据原始的点云点的几何位置和属性信息,以及重构的点云点的几何位置,可以为重构点云点云点计算新的属性值,使得重构的点云点和原始的点云点之间的属性误差最小。
例如,可以采用如下过程:
步骤1、设原始的点云点和重构的点云点的集合信息分别为(P i) i=0...N-1
Figure PCTCN2020082593-appb-000001
其中,N和N rec分别为原始的点云和重构的点云中的数据点的个数。如果去除了重复点,则N rec<N,否则N rec=N;
步骤2、对于重构的点云中的每个数据点
Figure PCTCN2020082593-appb-000002
在原始的点云点中寻找与之距离最近的点P i *,假设P i *的属性值为A i *
步骤3、对于原始的点云点中的每个数据点,在重构的点云点中寻找与 之距离最近的点云点,对于重构的点云点
Figure PCTCN2020082593-appb-000003
令U(i)=(X k(i)) k∈{1,...,D(i)}为原始的点云中均以点云点
Figure PCTCN2020082593-appb-000004
为最近点的点集,其中,D(i)为U(i)中包括的点云点的个数。U(i)可以为空,也可以包括一个或者多个点云点;
步骤4、为每个重构的点云点
Figure PCTCN2020082593-appb-000005
计算重构的属性信息,其中,若U(i)为空,那么直接将步骤2中得到的属性值A i *作为重构的属性值赋给
Figure PCTCN2020082593-appb-000006
若U(i)不为空,则为数据点
Figure PCTCN2020082593-appb-000007
重构的属性值为U(i)中的所有数据点的属性均值,计算公式如下:
Figure PCTCN2020082593-appb-000008
在108中,进行属性预测。
在进行属性预测时,在一种实现方式中,首先需要基于莫顿码对点云进行重排序,生成可用于属性预测的点云点顺序。根据AVS,在对属性值进行编码时,莫顿码主要基于莫顿查询表进行计算得到,例如,可以采用如下过程:
步骤1、遍历重构的点云,得到当前数据点对应的几何坐标x、y、z;
步骤2、根据几何坐标查询莫顿表,计算当前数据点对应的莫顿码;
步骤3、基于莫顿码对点云进行重排序。
接着,采用例如前项差分预测等方式,对排序后的点云进行属性预测,并根据预测值和原始值得到属性残差。
在109中,对该属性残差进行残差量化。
在110中,对量化后的系数值进行熵编码,得到属性码流。
将属性编码得到的属性值送入算术编码引擎中进行熵编码,最终得到压缩编码后的码流。根据上述流程即可以实现对点云的属性信息的编码。
之后可以将上述编码后的得到的几何码流和属性码流输出到存储器中进行存储,或者可以传送到解码端。
应理解,以上提到的点云点的数据可以包括属性的信息,但应理解,本申请实施例中,点云点的数据也可以不包括属性的信息,仅包括位置坐标的信息。
点云的解码过程为点云的编码过程的逆过程,图4是本申请实施例提供的一种现有点云解码流程的示意图,图4所示的解码过程包括以下步骤中的 部分或全部。
在401中,获取待解码的码流。
例如,可以从存储器中获取该码流,或者获取编码端传送的该码流。
在402中,对该码流进行熵解码。
从该步骤中可以分别获得位置坐标对应的码流和属性信息对应的码流。
在403中,进行多叉树重建。
例如,可以先确定点云的初始化空间,其中初始化空间的尺寸可以由编码端写入码流,解码端从码流中获取。然后对初始化空间进行多叉树划分。解码端采用与编码端一致的空间划分方式对初始化空间进行划分。通过划分的多叉树中的多个子节点及其对应的二进制比特流得到点云点的位置坐标。
在404中,对点云点的位置坐标进行逆量化。
在405中,对点云点的位置坐标进行逆坐标平移。
至此可以获得点云点的位置坐标。接着,对点云点的属性信息进行解码。
在406中,对属性信息对应的码流进行逆量化。
在407中,基于位置坐标解码后的位置坐标,进行属性重建。
在408中,进行逆空间变换。
至此,可以获得点云点的属性信息。
将上述解码得到的位置信息和该属性信息合并后,即可得到点云。
应理解,解码过程中的各个步骤的细节,具体可以参考前文针对编码过程的对应部分的描述,此处不再赘述。
随着编码技术的发展,对点云的编码性能的要求越来越高。现有的点云编码方案中对于位置坐标进行多叉树划分编码的过程采用了基于广度优先的顺序进行多叉树的遍历,对存在点云点的多叉树子块再进一步迭代多叉树划分的方案。这种方案,存在较高复杂度,并且在一些只含一个叶子节点的子块的划分表示上存在编码比特的浪费。这样在一定程度上影响了多叉树编码在压缩率这项性能指标上的表现。另外,对位置坐标的多叉树划分过程是基于广度优先的顺序进行多叉树的遍历,这种划分过程是逐层进行,只有当一层划分结束后才可以进行下面一层的划分,这种方案对点云压缩的并行化带来了较大的困难。
本申请实施例针对上述问题提出,在对点云进行压缩编码或解码时,可以实时根据点云点的数量和/或分布的情况切换不同的编码方式,而编码方式 之间的切换可以通过第一标识符和第二标识符来指示。通过该方法可以增加点云编码和解码的灵活性,降低点云编码和解码过程中的开销,降低点云编码和解码的复杂度,提高点云编码和解码的性能。
本申请实施例提出的用于点云编码和解码的方法可以分别应用于点云编码设备和点云解码设备,例如光电雷达、激光雷达等设备,该点云编码设备和点云解码设备可以设置在智能终端(如手机、平板电脑等)上。在一些实现方式中,本申请实施例还可应用于飞行器(如无人机)上,在其他实现方式中,本申请实施例还可以应用于其他可移动平台(如无人船、无人汽车、机器人等)上,本申请实施例不做具体限定。
另外,本申请实施例中的点云的多叉树中的节点也可以称为块,相应地,子节点可以称为子块。这里的节点(或块)和子节点(或子块)是相对的概念。例如,对于多叉树划分的某一层而言,该层的一个节点可以是其上面一层或多层的子节点。
下面结合附图对本申请实施例提供的用于点云编码、解码的方法进行示意性说明。本申请实施例提供的点云编码和解码的方法可以应用于各种技术领域,包括但不限于数字音视频编解码技术标准(Audio Video Standard,AVS)技术领域。
具体请参见图5和图6,图5是本申请实施例提供的一种用于点云编码的方法的流程示意图。图5所示的方法500可以应用于前述的点云编码设备。具体地,本申请实施例所述的方法500包括如下步骤。
在510中,生成码流。
其中,该码流包括第一标识符、第二标识符、以及点云的位置信息的编码比特。该第一标识符用于指示切换该点云的位置信息的编码方式,该第二标识符用于指示切换后的该点云的位置信息的编码方式。
在520中,发送该码流。
其中,该码流中的该点云的位置信息的编码比特可以是采用切换后的编码方式进行编码得到的。
图6是本申请实施例提供的一种用于点云解码的方法的流程示意图。点云解码的过程与点云编码的方式相对应。图6所示的方法600可以应用于前述的点云解码设备。具体地,本申请实施例所述的方法600包括如下步骤。
在610中,获取码流。
其中,该码流包括第一标识符、第二标识符、以及点云的位置信息的编码比特。该第一标识符用于指示切换该点云的位置信息的编码方式,该第二标识符用于指示切换后的该点云的位置信息编码方式。
在620中,根据切换后的编码方式,对该位置信息的编码比特进行解码。
可见,本申请实施例中,在码流中增加第一标识符和第二标识符,其中该第一标识符用于指示对点云的位置信息的编码方式的切换,该第二标识符用于指示切换后的编码方式。从而在点云编码或解码过程中,可以灵活地根据点云点的数量和分布的情况,采用最合适的编码方式对点云进行编码或解码,增加了对点云编码和解码的灵活性,提高对点云编码和解码的效率以及性能。
在一种实现方式中,实时点云可以是光探测装置对待探测物体进行光探测例如激光探测所得到。该光探测装置诸如可以为光电雷达、或激光雷达、激光扫描仪等设备。本申请实施例中的编码设备可以集成于光探测装置中。
需要说明的是,该激光雷达是一种感知传感器,可以获得场景的三维信息。其基本原理为主动对被探测对象发射激光脉冲信号,并获得其反射回来的脉冲信号,根据发射信号和接收信号之间的时间差计算被测对象的距离探测器的深度信息;基于激光雷达的已知发射方向,获得被测对象相对激光雷达的角度信息;结合前述深度信息和角度信息得到海量的探测点,称为点云。
本申请实施例中,对点云的编码可以采用多种不同的编码方式。在一种实现方式中,可以为不同编码方式分别编号,不同编码方式对应不同编号。第一标识符指示的是编码方式之间进行了切换,而第二标识符具体指示切换后的编码方式,例如该编码方式对应的编号。举例来说,编号0代表第一种编码方式,编号1代表第二种编码方式,编号2代表第三种编码方式,编号4代表第四种编码方式,……,等等。当需要进行编码方式的切换时,编码端在码流中添加第一标识符以指示编码方式的切换。相应地,解码端获得第一标识符后就可以知道需要切换编码方式,接着就会从第二标识符中获取切换后的编码方式,从而使用切换后的编码方式继续解码。例如,第二标识符为2bit,则上述编号0对应的第一种编码方式可以使用00表示,第二标识符为00;上述编号1对应的第二种编码方式则可以使用01表示,第二标识符为01。
第二标识符的长度可以由需要表示的编码方式的数量,以及对第二标识 符进行编码的编码方式决定。本申请实施例中,第二标识符可以采用定长码编码或者变长码编码的方式进行编码。采用定长码编码或者变长码编码的方式进行编码可以简化编码过程并降低编解码的时间开销,以及无需在码流中加入较多的编码信息,从而可以提高压缩率。
其中,定长码的位宽可以由编码端和解码端事先约定,例如将对位宽的规定写入标准中;或者,定长码的位宽可以写入码流中,例如写入码流的几何头信息中,其中几何头信息可以解释为几何位置坐标编码的头信息。举例来说,假设定长码的位宽为3,则通过000-111最多可以表示8种编码方式;假设定长码的位宽为4,则通过0000-1111最多可以表示16种编码方式。
在一种实现方式中,当在码流的头信息中指示定长码的位宽时,第二标识符可以仅用于指示多种编码技术中的特定几种编码技术。例如,假设存在多种编码技术,但是基于某些原因,例如使用频率或者实现代价等,第二标识符可以仅用于指示其中特定的几种编码技术,以特定的两种编码技术为例,分别为第一种编码技术和第二种编码技术。这两种编码技术可以是编码端和解码端约定的例如使用频率最高或者最易实现的两种编码方式。这时,使用1比特就可以指示这两种编码方式,比如第二标识符为0时表示切换至第一种编码技术,第二标识符为1时表示切换至第二种编码技术。解码端根据第二标识符可以确定切换至第一种编码技术还是第二种编码技术。
进一步地,特定几种编码技术可以通过码流指示给编码端,例如在头信息中指示特定编码技术。假设存在八种编码技术,编号依次为0、1、2、3、4、5、6、7,其中,第二标识符用于指示八种编码技术中特定的几种编码技术,以特定的两种编码技术为例,分别为第六种编码技术和第七种编码技术。这时,可以在头信息中指示第二标识符的位宽为1bit,并指示第六种编码技术和第七种编码技术分别对应的编号,假设索引0对应编号为5的第六种编码技术,索引1对应编号为6的第七种编码技术。当编码端在编码该码流时,如果需要切换对点云的位置信息的编码方式,则编码第二标识符为0时表示切换至第六种编码技术,编码第二标识符为1时表示切换至第七种编码技术。解码端从头信息中获取第二标识符的位宽,以及第六种编码技术和第七种编码技术各自对应的索引后,就可以根据该码流中的第二标识符确定切换至第六种编码技术还是第七种编码技术。
变长码编码例如可以是截断莱斯编码、K阶指数哥伦布编码、或者一元 码编码等,其中K为0或正整数。
对于截断莱斯编码,假设门限值为cMax,莱斯参数为R,切换后的编码方式对应的编号为Idx。截断莱斯码由前缀码和后缀码串联而成,前缀值P=Idx>>R。若P小于值(cMax>>R),则前缀码由P个1和一个0组成,长度为P+1;若P大于或等于值(cMax>>R),则前缀码由(cMax>>R)个1组成,长度为(cMax>>R)。当切换后的编码方式对应的编号Idx小于cMax时,其后缀值S=Idx-(P<<R)。后缀码为S的二元化串,长度为R。当编号Idx大于或等于cMax时,无后缀码。其中,莱斯码的参数R和cMax等可以由编解码端和解码端事先约定,例如在标准中规定。
对于K阶指数哥伦布编码,指数哥伦布码由前缀和后缀两部分组成,前缀和后缀都依赖于指数哥伦布码的阶数k。切换后的编码方式对应的编号值I的k阶指数哥伦布码,例如可以采用如下步骤生成:
步骤1、将非负整数I以二进制形式表示出来,并去掉最低的k个比特位之后加1;
步骤2、计算留下的比特位数,将此数减一,即是需要增加的前缀零的个数;
步骤3、将步骤1中去掉的最低k个比特位补回比特串尾部。
假设切换后的编码方式对应的编号为4,那么其一阶指数哥伦布编码可以按照如下步骤计算:
步骤1、4的二进制表示为100,去掉最低1个比特位0后变为10,再加1后变为11;
步骤2、11的比特数为2,因此前缀中0的个数为1;
步骤3、在比特串最低比特位补上步骤1中去掉的0,形成的最终码字即为0110。
因此,当对第二标识符采用一阶指数哥伦布编码时,如果切换后的编码方式对应的编号为4,则编码后的第二标识符即为0110。
对于k阶哥伦布码编码,前缀由m个连续的0和一个1构成,后缀由m+k构成,是I-2 k(2 m-1)的二进制表示。据此即可实现对编码的二值化。
其中,k阶哥伦布码编码的阶数k可以是编码端和解码端事先约定好的,例如在标准中规定。
对于一元码编码,切换后的编码方式对应的编号值I可以被定义为:I-1 后面紧跟着1个0,或者I-1后面紧跟着1个1。例如:
编码I-->code;
编码1-->0;
编码2-->10;
编码3-->110;
编码4-->1110。
除了上面介绍的几种方式,还可以采用其他二值化方案对切换后的编码方式对应的编号进行编码。编码了第二标识符后,就可以在需要进行编码方式切换时,切换到第二标识符所指示的编号对应的编码方式上,从而使用切换后的编码方式对点云的位置信息进行编解或解码。
在一种实现方式中,本申请实施例中的点云采用多叉树划分的方式进行位置划分,码流中的该点云的位置信息包括该多叉树的第N层的第一节点中的点云点的位置信息,N为大于或等于1的整数。
当该点云采用多叉树划分的方式进行位置划分时,第一标识符例如可以由多个0组成,其中,0的数量与对该点云进行位置划分所采用的多叉树相关。例如,多叉树为M叉树时,第一标识符中的0的数量等于M,M为正整数。
假设M=8,即第N层是采用八叉树划分的方式得到的,则第一标识符为八比特0,即0000 0000;假设M=4,即第N层是采用四叉树划分的方式得到的,则第一标识符为四比特0,即0000;假设M=2,即第N层是采用二叉树划分的方式得到的,则第一标识符为二比特0,即00。
相应地,在解码端,当进行多叉树解码时,如果是八叉树划分的方式,则当解码到八比特0时进行编码方式的切换;如果是四叉树划分的方式,则当解码到四比特0时进行编码方式的切换;如果是二叉树划分的方式,则当解码到二比特0时进行编码方式的切换;
第一标识符指示编码方式的切换,具体切换到哪种编码方式由第二标识符指示。该点云的多叉树的第N层的第一节点中的点云点的位置信息采用第二标识符指示的编码方式,即切换后的编码方式进行编码。
本申请实施例对第二标识符的位置不做限定。
例如,第二标识符可以位于码流的几何头信息中。该码流中点云的位置信息的编码比特可以位于第一标识符之后。这时,解码端可以从该码流的头 信息中获取切换后的编码方式,并在获取第一标识符之后采用切换后的编码方式对该码流中位置信息的编码比特进行解码。
或者,第二标识符可以位于该第一标识符之后,例如位于上述八比特0即0000 0000之后、四比特0即0000之后、或者2比特0即00之后。在一种实现方式中,该第二标识符可以与该第一标识符相邻。
码流中点云的位置信息的编码比特可以位于第二标识符之后。解码端在根据第一标识符确定编码方式的切换后,可以接着从第二标识符中获取切换后的编码方式,并使用切换后的编码方式对该码流中位置信息的编码比特进行解码。在一种实现方式中,该点云的位置信息的编码比特与该第二标识符相邻。
举例来说,如果第N层是采用八叉树划分的方式得到的,编码端可以先编码第一标识符,即八比特0,接着使用定长码编码或变长码编码第二标识符,即切换后的编码方式对应的编号,然后切换编码方式,并使用切换后的编码方式对点云的位置信息进行编码;如果第N层是采用四叉树划分的方式得到的,编码端可以先编码第一标识符,即四比特0,接着使用定长码编码或变长码编码第二标识符,即切换后的编码方式对应的编号,然后切换编码方式,并使用切换后的编码方式对点云的位置信息进行编码;如果第N层是采用二叉树划分的方式得到的,编码端可以先编码第一标识符,即二比特0,接着使用定长码编码或变长码编码第二标识符,即切换后的编码方式对应的编号,然后切换编码方式,并使用切换后的编码方式对点云的位置信息进行编码。
相应地,在解码端,在进行多叉树解码时,如果是八叉树,当解码到八比特0时,再解码第二标识符,例如根据与编码端约定的位宽进行定长码解码,或者根据与编码端约定的二值化方案的逆二值化过程进行变长码解码,得到切换后的编码方式对应的编号,从而切换到该编号对应的编码方式,并使用切换后的编码方式对点云的位置信息进行解码;如果是四叉树,当解码到四比特0时,再解码第二标识符,得到切换后的编码方式对应的编号,从而切换到该编号对应的编码方式,并使用切换后的编码方式对点云的位置信息进行解码;如果是二叉树,当解码到二比特0时,再解码第二标识符,得到切换后的编码方式对应的编号,从而切换到该编号对应的编码方式,并使用切换后的编码方式对点云的位置信息进行解码。
本申请实施例中的方法可以应于存在多种编码方式的情况下。所述多种编码方式可以是广度优先的编码方式或者深度优先的编码方式,也可以是其他类型的编码方式比如孤立点编码的方式。第二标识符可以指示广度优先的编码方式,也可以指示深度优先的编码方式,也可以指示其他类型的编码方式。例如,假设广度优先的编码方式对应的编号为0,深度优先的编码方式对应的编号为1,孤立点编码的方式对应的编号为2,第二标识符位于第一标识符之后。那么,在第一标识符之后,如果编码编号0,则表示切换至广度优先的编码方式对点云的位置坐标进行编码;如果编码编号1,则表示切换至深度优先的编码方式对点云的位置坐标进行编码;如果编码编号2,则表示切换至孤立点编码方式对点云的位置坐标进行编码。
其中,广度优先的编码方式例如可以是前述针对图4所描述的编码方式。
采用孤立点编码方式对多叉树第N层的第一节点进行编码时,在满足第一节点仅含有一个点云点,且第一节点内的该点云点的待编码莫顿码位数之和大于未到达最小边长方向的数目的二倍时,例如可以首先编码八比特0作为第一标识符,接着编码孤立点编码方式对应的编号作为第二标识符,由于第一节点内仅含有一个点云点,则接着直接编码该点云点的几何坐标对应莫顿码的末编码的比特。具体可以按照x,y,z的顺序依次编码,其中已经达到最小边长的方向不需要编码。
采用深度优先的编码方式对多叉树第N层的第一节点进行编码时,在第一节点中的点云点的数量或者分布满足预设条件时,可以对第一节点中的点云点在该多叉树中各层的节点的索引进行编码。也就是说,在对第一节点进行编码时,第一节点的码流中包含第一节点中的点云点在多叉树中各层的节点的索引。
其中,当第N层是采用八叉树划分得到时,该索引可以为0至7,对应用3比特即000~111表示;当第N层是采用四叉树划分得到时,该索引可以为0至3,对应用2比特即00~11表示;当第N层是采用二叉树划分得到时,该索引可以为0至1,对应用1比特即0~1表示。
例如,其中的一种深度优先的编码方式在满足以下条件时采用:第一节点在第N层之下的最底层的叶子节点的数量小于或等于2;或者,第一节点的全部点云点的数量小于或等于2,且第一节点多叉树划分得到的层数大于或等于2。在一种实现方式中,可以设置指示位用于指示第一节点在某一层 中含有点云点的节点的数量为1或2,比如,指示位为0时,用于指示该层中含有点云点的节点的数量为1;指示位为1时,用于指示该层中含有点云点的节点的数量为2。
假设广度优先、深度优先和孤立点编码方式对应的编号分别为编号0、编号1和编号2,采用宽度为2的定长码对编号0、编号1和编号2进行编码,得到的第二标识符分别为00、01、10。以图7为例,在对节点701进行八叉树划分编码时,可以编码第一标识符8比特的0,即0000 0000,用于表示编码方式的切换,然后编码切换后的编码方式对应的编号,用于表示切换后的编码方式,这里假设为宽度优先的编码方式,即01。接着使用切换后的编码方式对节点701的位置信息进行编码。具体地,切换后的宽度优先的编码方式可以为:添加该指示位0,用于指示第一层有1个节点有点云点,然后再对节点701八叉树划分得到的第一层的第3个子节点702对应的索引2进行编码得到010,然后再添加第二指示位0,用于指示第二层有1个节点有点云点,接着再对第一层的第3个子节点702八叉树划分得到的第二层的第1个子节点703对应的索引0进行编码得到000。因此,采用第二标识符指示的编码方式对节点701进行八叉树划分编码后得到的码流为0000 0000 0100 1000 00。
相应地,对于解码端而言,在对第一节点在第N层之下的每一层的码流进行解码时,当解码到用于指示编码方式切换的第一标识符,例如解码到8比特的0即0000 0000时,接着解码第二标识符即01,获取切换后的宽度优先的编码方式。接着使用切换后的编码方式解码用于指示第一节点在当前层中含有点云点的节点的数量,接着解码当前层含有点云点的子节点的索引,然后解码在当前层之下的一层含有点云点的子节点的索引,直至对第一节点在第N层之下的每一层含有点云点的子节点的索引解码完成为止。
又例如,其中的另一种深度优先的编码方式在满足以下条件时采用:多叉树第N层的第一节点在第N层之下中至少连续Q层中特定节点的分布相同,该特定节点为包含点云点的节点,Q为预设的正整数。其中,第一节点在第N层之下中至少连续Q层中特定节点的分布相同是指,第一节点在第N层之下中至少连续Q层中每层包括点云点的子节点的索引相同。
假设广度优先、深度优先和孤立点编码方式对应的编号分别为编号0、编号1和编号2,采用宽度为2的定长码对编号0、编号1和编号2进行编 码,得到的第二标识符分别为00、01、10。以图8为例,八叉树划分得到第0层的节点801包括点云点,对节点801进行八叉树划分得到第1层的第3个子节点802包括点云点、以及第8个子节点803包括点云点,再对第1层的第3个子节点802进行八叉树划分得到第2层的第3个子节点804包括点云点、以及第8个子节点805包括点云点,接着对第1层的第8个子节点803进行八叉树划分得到第2层的第3个子节点806包括点云点、以及第8个子节点807包括点云点。
假设每一层的节点的索引从左到右依次为0至7,由于节点801在第1层和第2层中连续2层的点云点分布相同,即,节点801在第1层的第3个子节点和第8个子节点中包括点云点,以及第1层的第3个子节点在第2层的第3个子节点和第8个子节点中包括点云点,以及第1层的第8个子节点在第2层的第3个子节点和第8个子节点中包括点云点。因此,在对节点801进行八叉树划分编码时,可以首先编码第一标识符8比特的0,即0000 0000,用于表示编码方式的切换,然后编码切换后的编码方式对应的编号,用于表示切换后的编码方式,这里假设切换至宽度优先的编码方式,即01。然后对具有相同点云分布的层数的3比特索引即000-111进行编码,此处对具有相同点云分布的层数的3比特索进行编码即为对索引2-1=1进行编码得到001。在编码了相同点云分布的层数的索引后,如果到达了叶子节点,则停止编码,如果还没有到达叶子节点,则继续进行八叉树划分。此处在编码了层数索引001之后还没有到达叶子节点,则接着再对节点801八叉树划分得到的第1层的第3个子节点802对应的索引2进行编码得到010,接着再对所述第1层的第8个子节点803对应的索引7进行编码得到111;接着再对所述第1层的第3个子节点802八叉树划分得到的第2层的第3个子节点804对应的索引2进行编码得到010,以及对第1层的第3个子节点802八叉树划分得到的第2层的第8个子节点805对应的索引7进行编码得到111;再对所述第1层的第8个子节点803八叉树划分得到的第2层的第3个子节点806对应的索引2进行编码得到010,以及对所述第1层的第8个子节点803八叉树划分得到的第2层的第8个子节点807对应的索引7进行编码得到111。因此,采用第二标识符指示的编码方式对节点1101进行编码后得到的码流为0000 0000 0100 1010 1110 1011 1010 111。
相应地,对于解码端而言,在对第一节点在第N层之下的每一层的码流 进行解码时,当解码到用于指示编码方式切换的第一标识符,例如解码到8比特的0即0000 0000时,接着解码第二标识符,获取切换后的编码方式例如宽度优先的编码方式即01,接着使用切换后的编码方式解码第一节点在第N层之下特定节点的分布相同的层数,然后对第一节点在第N层之下每一层的特定节点的索引进行解码。
应理解,广度优先的编码方式中可以存在多种具体的编码方式,深度优先的编码方式中也可以存在多种具体的编码方式。本申请实施例中的第二标识符也可以指示广度优先和深度优先的编码方式中的某种具体的编码方式。
例如,深度优先的编码方式可以包括上述分别针对图7和图8所描述的两种编码方式,这两种编码方式可以对应不同的编号。假设当前使用的编码方式为广度优先的编码方式,当编码至多叉树第N层的第一节点时,如果确定采用深度优先中的第一种编码方式,则在编码第一标识符后,接着编码第一种编码方式对应的编号作为第二标识符,并使用第一种编码方式对第一节点的位置信息进行编码,例如图7所示;如果确定采用深度优先中的第二种编码方式,则在编码第一标识符后,接着编码第二种编码方式对应的编号作为第二标识符,并使用第二种编码方式对第一节点的位置信息进行编码,例如图8所示。
图9是本申请实施例提供的一种点云解码设备的结构示意图,具体的,所述点云解码设备包括:存储器901、处理器902、以及通信接口903。通信接口903可以为有线接口(包括但不限于WAN口)或者无线接口(例如wifi、4G、5G或未来演进的其他通信接口)。
存储器901可以包括易失性存储器(Volatile Memory);存储器901也可以包括非易失性存储器(Non-Volatile Memory);存储器901还可以包括上述种类的存储器的组合。处理器902可以是中央处理器(Central Processing Unit,CPU)。处理器902还可以进一步包括硬件点云解码设备。上述硬件点云解码设备可以是专用集成电路(Application-Specific Integrated Circuit,ASIC),可编程逻辑器件(Programmable Logic Device,PLD)、或者二者的组合。具体例如可以是复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)、现场可编程逻辑门阵列(Field-Programmable Gate Array,FPGA)、或者其中的任意组合。
在一种实现方式中,存储器901用于存储程序,当程序被执行时所述处 理器902可以调用存储器901中存储的程序,用于执行如下步骤:
通过通信接口903获取码流,其中,所述码流包括第一标识符、第二标识符、以及点云的位置信息的编码比特,所述第一标识符用于指示切换所述点云的位置信息的编码方式,所述第二标识符用于指示切换后的所述点云的位置信息的编码方式;
根据所述切换后的编码方式,对所述位置信息的编码比特进行解码。
在一种实现方式中,所述第二标识符位于所述第一标识符之后。
在一种实现方式中,所述第二标识符与所述第一标识符相邻。
在一种实现方式中,所述点云的位置信息的编码比特位于所述第二标识符之后。
在一种实现方式中,所述点云的位置信息的编码比特与所述第二标识符相邻。
在一种实现方式中,所述第二标识符位于所述码流的几何头信息中。
在一种实现方式中,所述第二标识符采用定长码编码。
在一种实现方式中,所述定长码的长度为预设值。
在一种实现方式中,所述第二标识符采用变长码编码。
在一种实现方式中,所述变长码编码包括截断莱斯编码、K阶指数哥伦布编码和一元码编码中的任意一种,K为0或者正整数。
在一种实现方式中,所述点云采用多叉树划分的方式进行位置划分,所述点云的位置信息包括所述多叉树的第N层的第一节点中的点云点的位置信息,N为大于或等于1的整数。
在一种实现方式中,所述第一标识符为多个0,其中,0的数量与对所述点云进行位置划分所采用的多叉树相关。
在一种实现方式中,所述多叉树为M叉树,所述第一标识符中0的数量等于所述M,M为正整数。
在一种实现方式中,所述第N层是采用八叉树划分的方式得到的,所述第一标识符为八比特0;或者,所述第N层是采用四叉树划分的方式得到的,所述第一标识符为四比特0;或者,所述第N层是采用二叉树划分的方式得到的,所述第一标识符为二比特0。
在一种实现方式中,所述切换后的编码方式包括广度优先的编码方式、深度优先的编码方式、或者孤立点编码方式。
本申请实施例中,点云解码设备在获取码流中的第一标识符时,可以根据该第一标识符确定编码方式的切换,在解码到第二标识符时,可以根据该第二标识符确定切换后的编码方式,并使用切换后的编码方式对该码流进行解码。这样,在点云编码或解码过程中,可以灵活地根据点云点的数量和分布的变化采用最合适的编码方式对点云进行编码或解码,增加了对点云编码和解码的灵活性,提高对点云编码和解码的效率以及性能。
请参见图10,图10是本申请实施例提供的一种点云编码设备的结构示意图,具体的,所述点云编码设备包括:存储器1001、处理器1002以及通信接口1003。通信接口1003可以为有线接口(包括但不限于WAN口)或者无线接口(例如wifi、4G、5G或未来演进的其他通信接口)。
存储器1001可以包括易失性存储器(Volatile Memory);存储器1001也可以包括非易失性存储器(Non-Volatile Memory);存储器1001还可以包括上述种类的存储器的组合。处理器1002可以是中央处理器(Central Processing Unit,CPU)。处理器1002还可以进一步包括硬件点云编码设备。上述硬件点云编码设备可以是专用集成电路(Application-Specific Integrated Circuit,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)、或者二者的组合。具体例如可以是复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)、现场可编程逻辑门阵列(Field-Programmable Gate Array,FPGA)、或者其中的任意组合。
在一种实现方式中,存储器1001用于存储程序,当程序被执行时所述处理器1002可以调用存储器1001中存储的程序,用于执行如下步骤:
生成码流,其中,所述码流包括第一标识符、第二标识符、以及点云的位置信息的编码比特,所述第一标识符用于指示切换所述点云的位置信息的编码方式,所述第二标识符用于指示切换后的所述点云的位置信息的编码方式,所述点云的位置信息的编码比特是采用所述切换后的编码方式进行编码得到的;
通过通信接口1003发送所述码流。
在一种实现方式中,所述第二标识符位于所述第一标识符之后。
在一种实现方式中,所述第二标识符与所述第一标识符相邻。
在一种实现方式中,所述点云的位置信息的编码比特位于所述第二标识符之后。
在一种实现方式中,所述点云的位置信息的编码比特与所述第二标识符相邻。
在一种实现方式中,所述第二标识符位于所述码流的几何头信息中。
在一种实现方式中,所述第二标识符采用定长码编码。
在一种实现方式中,所述定长码的长度为预设值。
在一种实现方式中,所述第二标识符采用变长码编码。
在一种实现方式中,所述变长码编码包括截断莱斯编码、K阶指数哥伦布编码和一元码编码中的任意一种,K为0或者正整数。
在一种实现方式中,所述点云采用多叉树划分的方式进行位置划分,所述点云的位置信息包括所述多叉树的第N层的第一子块中的点云点的位置信息,N为大于或等于1的整数。
在一种实现方式中,所述第一标识符为多个0,其中,0的数量与对所述点云进行位置划分所采用的多叉树相关。
在一种实现方式中,所述多叉树为M叉树,所述第一标识符中0的数量等于所述M,M为正整数。
在一种实现方式中,所述第N层是采用八叉树划分的方式得到的,所述第一标识符为八比特0;或者,所述第N层是采用四叉树划分的方式得到的,所述第一标识符为四比特0;或者,所述第N层是采用二叉树划分的方式得到的,所述第一标识符为二比特0。
在一种实现方式中,所述切换后的编码方式包括广度优先的编码方式、深度优先的编码方式、或者孤立点编码方式。
本申请实施例中,点云编码设备在切换编码方式进行编码时,在码流中增加第一标识符和第二标识符,其中该第一标识符用于指示编码方式的切换,该第二标识符用于指示切换后的编码方式。这样,在点云编码或解码过程中,可以灵活地根据点云点的数量和分布的变化采用最合适的编码方式对点云进行编码或解码,增加了对点云编码和解码的灵活性,提高对点云编码和解码的效率以及性能。
本申请实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例图5中描述的用于点云编码的方法或者图6中描述的用于点云解码的方法;也可实现图9中所述的点云解码设备,或图10中所述的点云编码设备, 在此不再赘述。
所述计算机可读存储介质可以是前述任一项实施例所述的设备的内部存储单元,例如设备的硬盘或内存。所述计算机可读存储介质也可以是所述设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述设备所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、或者随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本申请部分实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (61)

  1. 一种用于点云解码的方法,其特征在于,包括:
    获取码流,其中,所述码流包括第一标识符、第二标识符、以及点云的位置信息的编码比特,所述第一标识符用于指示切换所述点云的位置信息的编码方式,所述第二标识符用于指示切换后的所述点云的位置信息的编码方式;
    根据所述切换后的编码方式,对所述位置信息的编码比特进行解码。
  2. 根据权利要求1所述的方法,其特征在于,所述第二标识符位于所述第一标识符之后。
  3. 根据权利要求2所述的方法,其特征在于,所述第二标识符与所述第一标识符相邻。
  4. 根据权利要求2或3所述的方法,其特征在于,所述点云的位置信息的编码比特位于所述第二标识符之后。
  5. 根据权利要求4所述的方法,其特征在于,所述点云的位置信息的编码比特与所述第二标识符相邻。
  6. 根据权利要求1所述的方法,其特征在于,所述第二标识符位于所述码流的几何头信息中。
  7. 根据权利要求1至6中任一项所述的方法,其特征在于,所述第二标识符采用定长码编码。
  8. 根据权利要求7所述的方法,其特征在于,所述定长码的长度为预设值。
  9. 根据权利要求1至6中任一项所述的方法,其特征在于,所述第二标识符采用变长码编码。
  10. 根据权利要求9所述的方法,其特征在于,所述变长码编码包括截断莱斯编码、K阶指数哥伦布编码和一元码编码中的任意一种,K为0或者正整数。
  11. 根据权利要求1至10任一项所述的方法,其特征在于,所述点云采用多叉树划分的方式进行位置划分,所述点云的位置信息包括所述多叉树的第N层的第一节点中的点云点的位置信息,N为大于或等于1的整数。
  12. 根据权利要求11所述的方法,其特征在于,所述第一标识符为多个0,其中,0的数量与对所述点云进行位置划分所采用的多叉树相关。
  13. 根据权利要求12所述的方法,其特征在于,所述多叉树为M叉树,所述第一标识符中0的数量等于所述M,M为正整数。
  14. 根据权利要求13所述的方法,其特征在于,
    所述第N层是采用八叉树划分的方式得到的,所述第一标识符为八比特0;或者,
    所述第N层是采用四叉树划分的方式得到的,所述第一标识符为四比特0;或者,
    所述第N层是采用二叉树划分的方式得到的,所述第一标识符为二比特0。
  15. 根据权利要求1至14中任一项所述的方法,其特征在于,所述切换后的编码方式包括广度优先的编码方式、深度优先的编码方式、或者孤立点编码方式。
  16. 一种用于点云编码的方法,其特征在于,包括:
    生成码流,其中,所述码流包括第一标识符、第二标识符、以及点云的位置信息的编码比特,所述第一标识符用于指示切换所述点云的位置信息的编码方式,所述第二标识符用于指示切换后的所述点云的位置信息的编码方式,所述点云的位置信息的编码比特是采用所述切换后的编码方式进行编码得到的;
    发送所述码流。
  17. 根据权利要求16所述的方法,其特征在于,所述第二标识符位于所述第一标识符之后。
  18. 根据权利要求17所述的方法,其特征在于,所述第二标识符与所述第一标识符相邻。
  19. 根据权利要求17或18所述的方法,其特征在于,所述点云的位置信息的编码比特位于所述第二标识符之后。
  20. 根据权利要求19所述的方法,其特征在于,所述点云的位置信息的编码比特与所述第二标识符相邻。
  21. 根据权利要求16所述的方法,其特征在于,所述第二标识符位于所述码流的几何头信息中。
  22. 根据权利要求16至21中任一项所述的方法,其特征在于,所述第二标识符采用定长码编码。
  23. 根据权利要求22所述的方法,其特征在于,所述定长码的长度为预设值。
  24. 根据权利要求16至21中任一项所述的方法,其特征在于,所述第二标识符采用变长码编码。
  25. 根据权利要求24所述的方法,其特征在于,所述变长码编码包括截断莱斯编码、K阶指数哥伦布编码和一元码编码中的任意一种,K为0或者正整数。
  26. 根据权利要求16至25任一项所述的方法,其特征在于,所述点云采用多叉树划分的方式进行位置划分,所述点云的位置信息包括所述多叉树的第N层的第一子块中的点云点的位置信息,N为大于或等于1的整数。
  27. 根据权利要求26所述的方法,其特征在于,所述第一标识符为多个0,其中,0的数量与对所述点云进行位置划分所采用的多叉树相关。
  28. 根据权利要求27所述的方法,其特征在于,所述多叉树为M叉树,所述第一标识符中0的数量等于所述M,M为正整数。
  29. 根据权利要求28所述的方法,其特征在于,
    所述第N层是采用八叉树划分的方式得到的,所述第一标识符为八比特0;或者,
    所述第N层是采用四叉树划分的方式得到的,所述第一标识符为四比特0;或者,
    所述第N层是采用二叉树划分的方式得到的,所述第一标识符为二比特0。
  30. 根据权利要求16至29中任一项所述的方法,其特征在于,所述切换后的编码方式包括广度优先的编码方式、深度优先的编码方式、或者孤立点编码方式。
  31. 一种点云解码设备,其特征在于,包括:
    存储器,用于存储程序;
    处理器,用于调用所述程序,其中,当所述程序被执行时,用于执行以下操作:
    获取码流,其中,所述码流包括第一标识符、第二标识符、以及点云的位置信息的编码比特,所述第一标识符用于指示切换所述点云的位置信息的编码方式,所述第二标识符用于指示切换后的所述点云的位置信息的编码方 式;
    根据所述切换后的编码方式,对所述位置信息的编码比特进行解码。
  32. 根据权利要求31所述的设备,其特征在于,所述第二标识符位于所述第一标识符之后。
  33. 根据权利要求32所述的设备,其特征在于,所述第二标识符与所述第一标识符相邻。
  34. 根据权利要求31或32所述的设备,其特征在于,所述点云的位置信息的编码比特位于所述第二标识符之后。
  35. 根据权利要求34所述的设备,其特征在于,所述点云的位置信息的编码比特与所述第二标识符相邻。
  36. 根据权利要求31所述的设备,其特征在于,所述第二标识符位于所述码流的几何头信息中。
  37. 根据权利要求31至36中任一项所述的设备,其特征在于,所述第二标识符采用定长码编码。
  38. 根据权利要求37所述的设备,其特征在于,所述定长码的长度为预设值。
  39. 根据权利要求31至36中任一项所述的设备,其特征在于,所述第二标识符采用变长码编码。
  40. 根据权利要求39所述的设备,其特征在于,所述变长码编码包括截断莱斯编码、K阶指数哥伦布编码和一元码编码中的任意一种,K为0或者正整数。
  41. 根据权利要求31至40任一项所述的设备,其特征在于,所述点云采用多叉树划分的方式进行位置划分,所述点云的位置信息包括所述多叉树的第N层的第一节点中的点云点的位置信息,N为大于或等于1的整数。
  42. 根据权利要求41所述的设备,其特征在于,所述第一标识符为多个0,其中,0的数量与对所述点云进行位置划分所采用的多叉树相关。
  43. 根据权利要求42所述的设备,其特征在于,所述多叉树为M叉树,所述第一标识符中0的数量等于所述M,M为正整数。
  44. 根据权利要求43所述的设备,其特征在于,
    所述第N层是采用八叉树划分的方式得到的,所述第一标识符为八比特0;或者,
    所述第N层是采用四叉树划分的方式得到的,所述第一标识符为四比特0;或者,
    所述第N层是采用二叉树划分的方式得到的,所述第一标识符为二比特0。
  45. 根据权利要求31至44中任一项所述的设备,其特征在于,所述切换后的编码方式包括广度优先的编码方式、深度优先的编码方式、或者孤立点编码方式。
  46. 一种点云编码设备,其特征在于,包括:
    存储器,用于存储程序;
    处理器,用于调用所述程序,其中,当所述程序被执行时,用于执行以下操作:
    生成码流,其中,所述码流包括第一标识符、第二标识符、以及点云的位置信息的编码比特,所述第一标识符用于指示切换所述点云的位置信息的编码方式,所述第二标识符用于指示切换后的所述点云的位置信息的编码方式,所述点云的位置信息的编码比特是采用所述切换后的编码方式进行编码得到的;
    发送所述码流。
  47. 根据权利要求46所述的设备,其特征在于,所述第二标识符位于所述第一标识符之后。
  48. 根据权利要求47所述的设备,其特征在于,所述第二标识符与所述第一标识符相邻。
  49. 根据权利要求47或48所述的设备,其特征在于,所述点云的位置信息的编码比特位于所述第二标识符之后。
  50. 根据权利要求49所述的设备,其特征在于,所述点云的位置信息的编码比特与所述第二标识符相邻。
  51. 根据权利要求46所述的设备,其特征在于,所述第二标识符位于所述码流的几何头信息中。
  52. 根据权利要求46至51中任一项所述的设备,其特征在于,所述第二标识符采用定长码编码。
  53. 根据权利要求52所述的设备,其特征在于,所述定长码的长度为预设值。
  54. 根据权利要求46至51中任一项所述的设备,其特征在于,所述第二标识符采用变长码编码。
  55. 根据权利要求54所述的设备,其特征在于,所述变长码编码包括截断莱斯编码、K阶指数哥伦布编码和一元码编码中的任意一种,K为0或者正整数。
  56. 根据权利要求46至55任一项所述的设备,其特征在于,所述点云采用多叉树划分的方式进行位置划分,所述点云的位置信息包括所述多叉树的第N层的第一子块中的点云点的位置信息,N为大于或等于1的整数。
  57. 根据权利要求56所述的设备,其特征在于,所述第一标识符为多个0,其中,0的数量与对所述点云进行位置划分所采用的多叉树相关。
  58. 根据权利要求57所述的设备,其特征在于,所述多叉树为M叉树,所述第一标识符中0的数量等于所述M,M为正整数。
  59. 根据权利要求58所述的设备,其特征在于,
    所述第N层是采用八叉树划分的方式得到的,所述第一标识符为八比特0;或者,
    所述第N层是采用四叉树划分的方式得到的,所述第一标识符为四比特0;或者,
    所述第N层是采用二叉树划分的方式得到的,所述第一标识符为二比特0。
  60. 根据权利要求46至59中任一项所述的设备,其特征在于,所述切换后的编码方式包括广度优先的编码方式、深度优先的编码方式、或者孤立点编码方式。
  61. 一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至30任一项所述方法。
PCT/CN2020/082593 2020-03-31 2020-03-31 一种用于点云编码、解码的方法和设备 WO2021196029A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202080004086.9A CN112470469B (zh) 2020-03-31 2020-03-31 一种用于点云编码、解码的方法和设备
PCT/CN2020/082593 WO2021196029A1 (zh) 2020-03-31 2020-03-31 一种用于点云编码、解码的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/082593 WO2021196029A1 (zh) 2020-03-31 2020-03-31 一种用于点云编码、解码的方法和设备

Publications (1)

Publication Number Publication Date
WO2021196029A1 true WO2021196029A1 (zh) 2021-10-07

Family

ID=74802666

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/082593 WO2021196029A1 (zh) 2020-03-31 2020-03-31 一种用于点云编码、解码的方法和设备

Country Status (2)

Country Link
CN (1) CN112470469B (zh)
WO (1) WO2021196029A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117097898A (zh) * 2021-03-12 2023-11-21 腾讯科技(深圳)有限公司 基于点云属性预测的解码、编码方法、解码器及编码器
CN115474064A (zh) * 2021-06-11 2022-12-13 维沃移动通信有限公司 编码、解码控制方法及装置
WO2022257150A1 (zh) * 2021-06-11 2022-12-15 Oppo广东移动通信有限公司 点云编解码方法、装置、点云编解码器及存储介质
CN113486276A (zh) * 2021-08-02 2021-10-08 北京京东乾石科技有限公司 点云压缩、点云渲染方法,装置,设备以及存储介质
CN115396647B (zh) * 2022-08-22 2024-04-26 腾讯科技(深圳)有限公司 一种沉浸媒体的数据处理方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110662087A (zh) * 2018-06-30 2020-01-07 华为技术有限公司 点云编解码方法和编解码器
US20200021847A1 (en) * 2018-07-12 2020-01-16 Apple Inc. Bit stream structure for compressed point cloud data
CN110719497A (zh) * 2018-07-12 2020-01-21 华为技术有限公司 点云编解码方法和编解码器
CN111699697A (zh) * 2019-06-14 2020-09-22 深圳市大疆创新科技有限公司 一种用于点云处理、解码的方法、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11297346B2 (en) * 2016-05-28 2022-04-05 Microsoft Technology Licensing, Llc Motion-compensated compression of dynamic voxelized point clouds
CN108668136A (zh) * 2017-03-28 2018-10-16 华为技术有限公司 图像编/解码方法、视频编/解码器及视频编解码系统
EP3429207A1 (en) * 2017-07-13 2019-01-16 Thomson Licensing A method and apparatus for encoding/decoding a colored point cloud representing the geometry and colors of a 3d object

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110662087A (zh) * 2018-06-30 2020-01-07 华为技术有限公司 点云编解码方法和编解码器
US20200021847A1 (en) * 2018-07-12 2020-01-16 Apple Inc. Bit stream structure for compressed point cloud data
CN110719497A (zh) * 2018-07-12 2020-01-21 华为技术有限公司 点云编解码方法和编解码器
CN111699697A (zh) * 2019-06-14 2020-09-22 深圳市大疆创新科技有限公司 一种用于点云处理、解码的方法、设备及存储介质

Also Published As

Publication number Publication date
CN112470469B (zh) 2023-07-07
CN112470469A (zh) 2021-03-09

Similar Documents

Publication Publication Date Title
WO2021196029A1 (zh) 一种用于点云编码、解码的方法和设备
EP3514969B1 (en) Methods and devices using direct coding in point cloud compression
CN111699697B (zh) 一种用于点云处理、解码的方法、设备及存储介质
WO2021109153A1 (zh) 一种用于点云处理、解码的方法、设备及存储介质
EP2734980A1 (en) Method for adaptive entropy coding of tree structures
JP6178798B2 (ja) 終了可能な空間ツリー型位置符号化および復号
US20230125529A1 (en) Point cloud decoding device, point cloud decoding method, and program
WO2020248177A1 (zh) 点云的编解码方法及装置
US20220376702A1 (en) Methods and devices for tree switching in point cloud compression
WO2021196038A1 (zh) 点云的编解码方法和装置
TW202141984A (zh) 用於在基於幾何形狀的點雲壓縮中的預測變換的預測器索引訊號傳遞
WO2022070469A1 (ja) 点群復号装置、点群復号方法及びプログラム
TW202143709A (zh) 針對基於幾何的點雲壓縮的三湯語法訊號傳遞
CN112740707A (zh) 点云的编解码方法和装置
WO2024037091A1 (zh) 一种点云处理方法、装置及计算机设备、存储介质
WO2024037244A1 (zh) 点云数据的解码方法、编码方法、装置、存储介质及设备
WO2023241107A1 (zh) 点云处理方法、装置及计算机设备、存储介质
WO2021046817A1 (zh) 点云数据的编解码方法、系统和存储介质
WO2021103013A1 (zh) 一种数据编码、数据解码方法、设备及存储介质
US20220005229A1 (en) Point cloud attribute encoding method and device, and point cloud attribute decoding method and devcie
WO2020248562A1 (zh) 一种用于点云处理、解码的方法、设备及存储介质
WO2022071285A1 (ja) 点群復号装置、点群復号方法及びプログラム
WO2021256486A1 (ja) 点群復号装置、点群復号方法及びプログラム
WO2022071282A1 (ja) 点群復号装置、点群復号方法及びプログラム
KR20220157490A (ko) 인트라 예측 방법, 장치, 인코더, 디코더 및 저장 매체

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

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

Country of ref document: EP

Kind code of ref document: A1