WO2021103013A1 - 一种数据编码、数据解码方法、设备及存储介质 - Google Patents

一种数据编码、数据解码方法、设备及存储介质 Download PDF

Info

Publication number
WO2021103013A1
WO2021103013A1 PCT/CN2019/122209 CN2019122209W WO2021103013A1 WO 2021103013 A1 WO2021103013 A1 WO 2021103013A1 CN 2019122209 W CN2019122209 W CN 2019122209W WO 2021103013 A1 WO2021103013 A1 WO 2021103013A1
Authority
WO
WIPO (PCT)
Prior art keywords
point cloud
indicate
header information
designated
cube
Prior art date
Application number
PCT/CN2019/122209
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 PCT/CN2019/122209 priority Critical patent/WO2021103013A1/zh
Priority to CN201980094966.7A priority patent/CN113678460B/zh
Publication of WO2021103013A1 publication Critical patent/WO2021103013A1/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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Definitions

  • the present invention relates to the field of data encoding and decoding, in particular to a data encoding and data decoding method, device and storage medium.
  • the embodiments of the present invention provide a data encoding and data decoding method, device, and storage medium, which can avoid pseudo start codes during encoding, help eliminate the need for pseudo start code operations during decoding, and improve decoding efficiency.
  • an embodiment of the present invention provides a data encoding method, including:
  • an embodiment of the present invention provides a data decoding method, including:
  • Acquiring code stream data where the code stream data includes point cloud header information, the point cloud header information includes a designated flag bit, and the designated flag bit is used to prevent a false start code;
  • the code stream data is decoded according to the binary encoding method of the syntax element in the point cloud header information in the code stream data to obtain the point cloud data corresponding to the code stream data.
  • an embodiment of the present invention provides a data encoding device, which is characterized by including: 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:
  • an embodiment of the present invention provides a data decoding device, which is characterized by comprising: 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:
  • Acquiring code stream data where the code stream data includes point cloud header information, the point cloud header information includes a designated flag bit, and the designated flag bit is used to prevent a false start code;
  • the code stream data is decoded according to the binary encoding method of the syntax element in the point cloud header information in the code stream data to obtain the point cloud data corresponding to the code stream data.
  • an embodiment of the present invention provides a computer-readable storage medium that stores a computer program that, when executed by a processor, implements the data encoding method or method described in the first aspect above.
  • the code stream data is obtained by encoding the point cloud data to be coded.
  • the code stream data includes point cloud header information, and according to the syntax elements in the point cloud header information, the designation in the point cloud header information is determined Position, and inserting a designated flag in the designated position of the point cloud header information to obtain the pseudo-code stream data, which can avoid pseudo-start codes during encoding, which helps to eliminate the need to perform pseudo-start code operations during decoding and improve decoding effectiveness.
  • FIG. 1 is a schematic diagram of an encoding process of existing point cloud data provided by an embodiment of the present invention
  • FIG. 2 is a schematic diagram of a decoding process of existing point cloud data provided by an embodiment of the present invention
  • FIG. 3 is a schematic diagram of an octree partition provided by an embodiment of the present invention.
  • FIG. 4 is a schematic diagram of recursive partitioning of an octree according to an embodiment of the present invention.
  • FIG. 5 is a schematic flowchart of a data encoding method provided by an embodiment of the present invention.
  • FIG. 6 is a schematic flowchart of a data decoding method provided by an embodiment of the present invention.
  • Figure 7 is a schematic structural diagram of a data encoding device provided by an embodiment of the present invention.
  • Fig. 8 is a schematic structural diagram of a data decoding device provided by an embodiment of the present invention.
  • the present invention aims at the current AVS-PCC related point cloud header information bit stream structure, in order to quickly decode the content contained in the point cloud header information without affecting the correctness of the decoding result, the present invention proposes a point cloud header Avoid the code stream structure of the pseudo start code in the message.
  • the following related introductions are made to the point cloud data.
  • the point cloud data is an expression form of a three-dimensional object or scene, and 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 data storage and transmission, the point cloud data can be encoded and compressed.
  • a point cloud data is usually composed of three-dimensional coordinates (x, y, z) describing coordinate information and attributes of the location, such as color (R, G, B) or reflectivity.
  • the coding of the position coordinates is usually carried out separately from the coding of the attributes.
  • the specific process of compression includes coordinate translation and coordinate quantization of the position coordinates, octree coding of the processed position coordinates, and entropy coding of the octree division to obtain a geometric code stream.
  • attribute information if the attribute value is a color, you can first choose whether to perform color space transformation, and then choose whether to perform attribute interpolation based on the reconstructed octree according to whether the position coordinates are deduplicated, and then perform attribute prediction, according to The original value and the predicted value calculate the residual, quantize the residual, and perform entropy coding on the quantized coefficient value to obtain the attribute code stream.
  • FIG. 1 is a schematic diagram of an existing point cloud data encoding process provided by an embodiment of the present invention.
  • the coding of point cloud data includes coding the position coordinates of the point cloud data and coding attribute information.
  • the position coordinates of the point cloud data 111 can be input, and the position coordinates of the input point cloud data can be translated and quantized 112, and then the coordinates can be translated and quantized.
  • the attribute information 121 of the input point cloud data can be used to perform the spatial transformation 122 on the attribute information 121, according to whether the position coordinates are deduplicated point selection octree Rebuild 123. If yes, perform attribute interpolation 124 based on the reconstructed octree, then perform attribute prediction 125, calculate residuals based on the original attribute values and predicted attribute values obtained from attribute prediction 125, and perform residual quantization on the residuals 126 , Thereby performing entropy coding 127 on the quantized coefficient value to obtain the attribute code stream 128.
  • the point clouds are first reordered based on the Morton code to generate a point cloud sequence that can be used for point cloud attribute prediction.
  • Morton code is mainly calculated based on Morton lookup table, the process is as follows:
  • the point cloud is reordered based on Morton code.
  • the attribute code stream can be obtained by performing coefficient coding on the quantized coefficient value.
  • the decoding process of the point cloud data compression is the inverse process of the encoding shown in FIG. 1, specifically as shown in FIG. 2.
  • FIG. 2 is a decoding of existing point cloud data provided by an embodiment of the present invention. Schematic flow diagram. As shown in FIG. 2, the code stream data to be decoded includes a geometric code stream 211 and an attribute code stream 221.
  • the geometric code stream 211 when the geometric code stream 211 is decoded, the geometric code stream 211 may be entropy decoded 212, and then octree reconstruction 213, inverse coordinate quantization 214, and inverse coordinate translation 215 may be performed to obtain the position coordinates 216.
  • the coefficient value when the attribute code stream 221 is decoded, can be obtained by entropy decoding 222 on the attribute code stream 221, and the coefficient value can be inversely quantized 223 to obtain the residual, and the attribute reconstruction can be performed according to the residual 224 , And then perform spatial transformation 225 to obtain attribute information 226.
  • the position coordinates are first translated, the coordinates are quantized, and the position coordinates are converted to integer coordinates greater than or equal to zero. Then, you can choose whether to perform the operation of removing duplicate coordinates, and then Let's do octree coding.
  • the octree coding is a method of compressing coordinate positions by using octree division, wherein the division of each layer of octree uses the coordinates of the center point of the current block to perform sub-block division. Click to divide the current block into eight small sub-blocks.
  • FIG. 3 is a schematic diagram of an octree division according to an embodiment of the present invention, in which the current block 31 is divided into 8 small sub-blocks.
  • FIG. 4 is a schematic diagram of an octree recursive division provided by an embodiment of the present invention, in which point cloud data exists in the sub-block 41, so the sub-block 41 is divided to obtain 8 sub-blocks.
  • point cloud data exists in the sub-block 41, so the sub-block 41 is divided to obtain 8 sub-blocks.
  • the sub-block 411 and the sub-block 412 can be divided again, and the division will stop when the sub-block is divided to the minimum.
  • the attribute difference value is required, that is, the color is re-painted.
  • the geometric information is the number of points in the point cloud data or the relative position between the points in the point cloud data; in some embodiments, the recoloring is to reconstruct the point cloud data. Calculate a new attribute value for each point of, so that the attribute error between the reconstructed point cloud and the original point cloud is minimized.
  • the implementation process of the recoloring is as follows:
  • sequence_header() Descriptor level_idc u(8) bounding_box_offset_x se(v) bounding_box_offset_y se(v) bounding_box_offset_z se(v) bounding_box_size_width ue(v) bounding_box_size_height ue(v) bounding_box_size_depth ue(v) num_points ue(v) quant_step_upper u(16) quant_step_lower u(16) geomRemoveDuplicateFlag u(1) attribute_quantstep ue(v) byte_alignment() To ⁇ To
  • sequence_header() is used to indicate the sequence header
  • level_idc is used to indicate reserved words
  • bounding_box_offset_x is used to indicate the offset coordinates in the x-axis direction of the cube surrounding the point cloud
  • quant_step_upper is used to indicate the high bits of the geometric quantization parameters
  • quant_step_lower is used to indicate the low bit of the geometric quantization parameter
  • geomRemoveDuplicateFlag is used to indicate whether to remove the flag bit of the repeated point cloud
  • attribute_quantstep is used to indicate the attribute quantization parameter
  • byte_alignment() is used to indicate the byte alignment operation.
  • the existing code stream structure follows the start code scheme, for example, the start code is 0x00 00 01 (0x indicates that the following numbers are expressed in hexadecimal notation).
  • the sequence header information, attribute header information, geometric data, and attribute data will be marked with a start code before these four sets of data.
  • the code streams other than the start code have the same code stream as the start code.
  • the sequence header information is shown in Table 1.
  • the attribute header information is shown in Table 2.
  • withColor is used to indicate whether the attribute information of the point cloud includes color
  • withRef is used to indicate whether the attribute information of the point cloud includes reflectance
  • byte_alignment() is used to indicate byte alignment operations.
  • the geometric data is shown in Table 3.
  • geometry_data() is used to indicate the geometric data of the point cloud
  • Geometry_data_alignment() is used to indicate the byte alignment operation of the geometric data.
  • the attribute data is shown in Table 4.
  • attribute_data () is used to indicate the attribute data of the point cloud
  • Attribute_byte_alignment() is used to indicate the byte alignment operation of the attribute data.
  • Table 5 the definitions of the descriptors in Table 1, Table 2, Table 3, and Table 4 are shown in Table 5:
  • the k-order exponential Golomb code can be generated by the following steps:
  • step 3 The lowest k bits removed in step 1 are added to the end of the bit string.
  • the first-order exponential Golomb coding is taken as an example:
  • the prefix is composed of m consecutive 0s and one 1
  • the suffix is composed of m+k, which is the binary representation of N-2 k (2 m -1).
  • the encoding is mainly handled in the following way: when writing a bit, if the bit is the second least significant bit of a byte, check the 22 bits written before the bit, if this The 22 bits are all '0'. Insert a '10' before this bit. This bit becomes the most significant bit of the next byte. This process is the process of removing the false start code.
  • the decoding process is mainly as follows: every time a byte is read, check the two bytes read before and the current byte, if these three bytes form the bit string '0000 0000 0000 0000 0010', discard the current The least significant two bits of a byte.
  • the embodiment of the present invention proposes a data encoding method and a corresponding data decoding method.
  • the point cloud header information is inserted into the designated flag at a specific position. , So as to avoid the appearance of pseudo start codes in the point cloud header information, and there is no need to perform related operations to remove the pseudo start codes during the encoding and decoding of the point cloud header information.
  • the point cloud header information includes sequence header information and/or attribute header information.
  • the data encoding method proposed in the embodiment of the present invention can be applied to a data encoding device, and the data encoding device can be set on a smart terminal (such as a mobile phone, a tablet computer, etc.).
  • the data decoding method can be applied to a data decoding device, and the data decoding device can also be set on a smart terminal (such as a mobile phone, a tablet computer, etc.).
  • the embodiments of the present invention can also be applied to aircraft (such as unmanned aerial vehicles).
  • the embodiments of the present invention can also be applied to other movable platforms (such as unmanned ships, unmanned aerial vehicles, etc.). For automobiles, robots, etc., the embodiment of the present invention does not make specific limitations.
  • FIG. 5 is a schematic flowchart of a data encoding method according to an embodiment of the present invention. The method can be applied to a data encoding device, where the explanation of the data encoding device is as described above, and will not be repeated here. Specifically, the method of the embodiment of the present invention includes the following steps.
  • the data encoding device can obtain the point cloud data to be encoded.
  • the point cloud data may be obtained through one or more collection devices; in some embodiments, the collection devices may include, but are not limited to, laser radars, laser scanners and other devices.
  • 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 cloud data).
  • S502 Encode the point cloud data to obtain code stream data, where the code stream data includes point cloud header information.
  • the data encoding device may encode the point cloud data to obtain code stream data, and the code stream data includes point cloud header information.
  • the point cloud header information includes any one or more of sequence header information, attribute header information, geometric data, and attribute data.
  • sequence header information, attribute header information, geometric data, and attribute data Please refer to the aforementioned Table 1 to Table 5 for the detailed description of the data, which will not be repeated here.
  • S503 Determine a designated position in the point cloud header information according to the syntax elements in the point cloud header information.
  • the data encoding device may determine the designated position in the point cloud header information according to the syntax elements in the point cloud header information.
  • the data encoding device when the data encoding device determines the designated position in the point cloud header information according to the syntax elements in the point cloud header information, it may determine two adjacent points according to the syntax elements in the point cloud header information. The positions between the syntax elements are the specified positions.
  • the syntax elements include sequence header information and/or syntax elements in attribute header information.
  • the syntax element includes at least one of the following: reserved words, used to indicate the position of the three-dimensional volume surrounding the point cloud, used to indicate the size of the three-dimensional volume surrounding the point cloud, geometric quantization parameters , Attribute quantification parameters, flags used to indicate whether to remove duplicate point clouds, and the number of point clouds.
  • the syntax element for indicating the position of the three-dimensional volume surrounding the point cloud includes at least one of the following syntax elements: indicating the offset coordinates in the x-axis direction of the cube surrounding the point cloud, Used to indicate the offset coordinates in the y-axis direction of the cube surrounding the point cloud, and used to indicate the offset coordinates in the z-axis direction of the cube surrounding the point cloud; and/or, said used to indicate the offset coordinates in the surrounding point
  • the grammatical element of the size of the three-dimensional volume of the cloud includes at least one of the following grammatical elements: used to indicate the width of the cube surrounding the point cloud, used to indicate the depth of the cube surrounding the point cloud, and used to indicate the cube surrounding the point cloud the height of.
  • the at least one syntax element is split into 2 sub-syntax elements.
  • the reserved word may be level_idc
  • the offset coordinate used to indicate the x-axis direction of the cube surrounding the point cloud may be bounding_box_offset_x
  • the reserved word used to indicate the position of the cube surrounding the point cloud The offset coordinate in the y-axis direction may be bounding_box_offset_y
  • the offset coordinate in the z-axis direction used to indicate the cube surrounding the point cloud may be bounding_box_offset_z
  • the width of the cube used to indicate the surrounding point cloud may be bounding_box_size_width
  • the depth used to indicate the cube surrounding the point cloud may be bounding_box_size_depth
  • the height used to indicate the cube surrounding the point cloud may be bounding_box_size_height
  • the geometric quantization parameter may include the high bit and geometry of the geometric quantization parameter
  • the status of the quantization parameter, the high bit of the geometric quantization parameter may be quant_step_upper, the low bit of the geometric quantization parameter may be quant_step
  • the data encoding device can determine the position between two adjacent syntax elements of level_idc and bounding_box_offset_x as the designated position according to the syntax elements in the sequence header information described in Table 1, and The positions between the adjacent syntax elements of quant_step_upper, quant_step_lower, geomRemoveDuplicateFlag, and attribute_quantstep are designated positions.
  • the pseudo start code can be avoided in the sequence header information.
  • the data encoding device when the data encoding device determines the designated position in the point cloud header information according to the syntax elements in the point cloud header information, it can compare the point cloud header information with the syntax elements in the point cloud header information.
  • the syntax element in is split to obtain at least two sub-syntax elements, and the position between each adjacent sub-syntax element after splitting is determined to be the designated position.
  • the data encoding device can compare bounding_box_offset_x, bounding_box_offset_y, bounding_box_offset_z, bounding_box_size_width, bounding_box_size_height in the sequence header information in Table 1 according to the syntax elements in the sequence header information described in Table 1.
  • Bounding_box_size_depth, num_points these syntax elements are split, and the corresponding bounding_box_offset_x-upper, bounding_box_offset_x-lower, bounding_box_offset_y-upper, bounding_box_offset_y-lower, bounding_box_offset_z-upper, bounding_box_offset_z-upper, bounding_box_offset_z-upper, bounding_box_offset_z-upper, bounding_box_offset_z-upper, bounding_box_offset_z-upper, bounding_box_offset_z-upper, bounding_box_offset_z-upper, bounding_box_offset_z-upper, bounding_box_offset_z-upper, bounding_box_offset_z-upper, bounding_box_offset_z-upper, bounding_box_offset_z-upper, bounding_box_offset_z-upper, bounding_box_offset_z-upper
  • bounding_box_offset_x-upper is used to indicate the high position of the offset coordinate of the cube surrounding the point cloud in the x-axis direction
  • bounding_box_offset_x-lower is used to indicate the low position of the offset coordinate of the cube surrounding the point cloud in the x-axis direction
  • bounding_box_offset_y -upper is used to indicate the high position of the offset coordinate of the cube surrounding the point cloud in the y-axis direction
  • bounding_box_offset_y-lower is used to indicate the low position of the offset coordinate of the cube surrounding the point cloud in the y-axis direction
  • bounding_box_offset_z-upper is used to indicate the bounding
  • bounding_box_offset_z-upper is used to indicate the bounding
  • bounding_box_offset_z-upper is used to indicate the bounding
  • bounding_box_size_width-upper is used to indicate the bounding
  • the data encoding device when the data encoding device splits the syntax elements in the point cloud header information according to the syntax elements in the point cloud header information to obtain at least two sub-syntax elements, it can be based on the syntax elements in the point cloud header information.
  • the method for binary encoding of syntax elements splits the syntax elements in the point cloud header information to obtain at least two sub-syntax elements.
  • the data encoding device splits the syntax elements in the point cloud header information according to the binary encoding method of the syntax elements in the point cloud header information to obtain at least two sub-syntax elements, when determining all the syntax elements
  • the binary encoding method of the syntax elements in the point cloud header information is variable-length encoding
  • the syntax elements in the point cloud header information are split according to the first split length to obtain at least one sub-grammar of the first split length element.
  • the first split length is 16 bits.
  • the length of the sub-syntax element obtained after the syntax element is split is less than or equal to the first split length.
  • the variable length coding may include, but is not limited to, exponential Golomb coding, truncated Rice coding, and the like.
  • bounding_box_offset_x syntax element is split into two sub-syntax elements, bounding_box_offset_x_upper with a high 16bit and bounding_box_offset_x_lower with a low 16bit.
  • the data encoding device splits the syntax elements in the point cloud header information according to the binary encoding method of the syntax elements in the point cloud header information to obtain at least two sub-syntax elements, when determining all the syntax elements
  • the syntax elements in the point cloud header information can be split according to the second split length to obtain at least one sub-file of the second split length.
  • syntax elements In some embodiments, the second split length is 16 bits. The specific embodiment is the same as the way of splitting the syntax element corresponding to the aforementioned encoding method, and will not be repeated here.
  • the data encoding device may insert a designated flag bit at a designated position of the point cloud header information to obtain de-pseudo-code stream data.
  • the designated flag bit is 1.
  • the data encoding device when the data encoding device inserts a designated flag bit at a designated position of the point cloud header information to obtain de-pseudo-code stream data, if it is determined that the position between two adjacent syntax elements is the designated position, Then, a designated flag bit can be inserted between the two adjacent syntax elements to obtain pseudo-code stream data.
  • the data encoding device inserts a designated flag bit at a designated position of the point cloud header information to obtain the pseudo-code stream data, if it is determined that the position between each adjacent sub-syntax element after splitting is all If the specified position is described, a specified flag bit can be inserted between each adjacent sub-syntax element after splitting to obtain the pseudo-code stream data.
  • the de-pseudo-code stream data includes: reserved words, designated flag bits, high bits used to indicate the offset coordinates of the cube surrounding the point cloud in the x-axis direction, designated flag bits, used to indicate the surrounding
  • the data encoding device inserts a designated flag bit between each adjacent sub-syntax element after splitting, and when obtaining the pseudo-code stream data, it can insert a designated flag bit between each adjacent sub-syntax element , Get the pseudo-code stream data.
  • bounding_box_offset_x-upper is used to indicate the high position of the offset coordinate of the cube surrounding the point cloud in the x-axis direction
  • marker_bit is used to indicate the designated flag bit
  • bounding_box_offset_x-lower is used to indicate the offset of the cube surrounding the point cloud in the x-axis direction
  • bounding_box_offset_y-upper is used to indicate the high position of the offset coordinate of the cube surrounding the point cloud in the y-axis direction
  • bounding_box_offset_y-lower is used to indicate the low position of the offset coordinate of the cube surrounding the point cloud in the y-axis direction
  • bounding_box_offset_z- upper is used to indicate the high position of the offset coordinate of the cube surrounding the point cloud in the z-axis direction
  • bounding_box_offset_z-lower is used to indicate the low position of the offset coordinate of the cube surrounding the point cloud in the z-axis direction
  • the data encoding device may encode the point cloud data to be encoded to obtain bitstream data, where the bitstream data includes point cloud header information, and determine the point cloud header according to the syntax elements in the point cloud header information The designated position in the information, thereby inserting a designated flag bit in the designated position of the point cloud header information, to obtain the pseudo-code stream data.
  • FIG. 6 is a schematic flowchart of a data decoding method according to an embodiment of the present invention.
  • the method can be applied to a data decoding device, and the specific explanation of the data decoding device is as described above.
  • the method of the embodiment of the present invention includes the following steps.
  • S601 Obtain code stream data, where the code stream data includes point cloud header information, and the point cloud header information includes a designated flag bit, and the designated flag bit is used to prevent a false start code.
  • the data decoding device can obtain code stream data, the code stream data includes point cloud header information, and the point cloud header information includes a designated flag bit, and the designated flag bit is used to prevent false start codes.
  • the designated flag bit is 1.
  • the point cloud header information includes any one or more of sequence header information, attribute header information, geometric data, and attribute data.
  • sequence header information, attribute header information, geometric data, and attribute data Please refer to the aforementioned Table 1 to Table 5 for the detailed description of the data, which will not be repeated here.
  • the code stream data includes: reserved words, designated flag bits, high bits used to indicate the offset coordinates of the cube enclosing the point cloud in the x-axis direction, designated flag bits, used to indicate the enclosing point cloud
  • Designated flag used to indicate the high position of the width of the cube surrounding the point cloud, designated flag, used to indicate the low position of the width of the cube surrounding the point cloud
  • S602 Decode the code stream data according to the binary encoding method of the syntax elements in the point cloud header information in the code stream data to obtain point cloud data corresponding to the code stream data.
  • the data decoding device may decode the code stream data according to the binary encoding method of the syntax elements in the point cloud header information in the code stream data to obtain the point cloud data corresponding to the code stream data .
  • the syntax element includes at least one of the following: reserved words, used to indicate the position of the three-dimensional volume surrounding the point cloud, used to indicate the size of the three-dimensional volume surrounding the point cloud, geometric quantization parameters , Attribute quantification parameters, flags used to indicate whether to remove duplicate point clouds, and the number of point clouds.
  • the syntax element for indicating the position of the three-dimensional volume surrounding the point cloud includes at least one of the following syntax elements: indicating the offset coordinates in the x-axis direction of the cube surrounding the point cloud, Used to indicate the offset coordinates in the y-axis direction of the cube surrounding the point cloud, and used to indicate the offset coordinates in the z-axis direction of the cube surrounding the point cloud; and/or, said used to indicate the offset coordinates in the surrounding point
  • the grammatical element of the size of the three-dimensional volume of the cloud includes at least one of the following grammatical elements: used to indicate the width of the cube surrounding the point cloud, used to indicate the depth of the cube surrounding the point cloud, and used to indicate the cube surrounding the point cloud the height of.
  • the at least one syntax element is split into 2 sub-syntax elements.
  • the syntax elements include sequence header information and/or syntax elements in attribute header information.
  • the reserved word may be level_idc
  • the offset coordinate used to indicate the x-axis direction of the cube surrounding the point cloud may be bounding_box_offset_x
  • the reserved word used to indicate the position of the cube surrounding the point cloud The offset coordinate in the y-axis direction may be bounding_box_offset_y
  • the offset coordinate in the z-axis direction used to indicate the cube surrounding the point cloud may be bounding_box_offset_z
  • the width of the cube used to indicate the surrounding point cloud may be bounding_box_size_width
  • the depth used to indicate the cube surrounding the point cloud may be bounding_box_size_depth
  • the height used to indicate the cube surrounding the point cloud may be bounding_box_size_height
  • the geometric quantization parameter may include the high bit and geometry of the geometric quantization parameter
  • the status of the quantization parameter, the high bit of the geometric quantization parameter may be quant_step_upper, the low bit of the geometric quantization parameter may be quant_step
  • the data decoding device when the data decoding device decodes the code stream data according to the binary encoding method of the syntax elements in the point cloud header information in the code stream data, it may decode the code stream data according to the point cloud header information in the code stream data.
  • the designated position in the point cloud header information is determined, the designated flag bit is located at the designated position, and the designated flag bit in the designated position of the point cloud header information is removed according to The code stream data is decoded.
  • the designated flag bit is located between two adjacent syntax elements in the header information; and/or, the designated flag bit is located between one syntax element in the header information, and The designated flag bit splits the one syntax element into at least two sub-syntax elements.
  • the designated flag bit splits the one syntax element into at least two sub-syntax elements, and the length of each sub-syntax element is less than or equal to the first split length, and the first split length is based on The binarization coding method of the syntax element is determined.
  • the sequence header information of the point cloud header information in the bitstream data includes level_idc, marker_bit , Bounding_box_offset_x, it can be determined that the position of the marker_bit between two adjacent syntax elements of level_idc and bounding_box_offset_x is the designated position, and decoding is performed according to the code stream data after the designated marker_bit at the designated position is removed.
  • the sequence header information of the point cloud header information in the bitstream data includes quant_step_upper, marker_bit, quant_step_lower, marker_bit, geomRemoveDuplicateFlag, marker_bit, attribute_quantstep, it can be determined that the position of the marker_bit between two adjacent syntax elements is the specified position , And decode according to the code stream data after removing the designated marker_bit at the designated position.
  • each syntax element in the point cloud header information in the bitstream data is split according to the first split length. At least two sub-syntax elements are obtained; the designated position is a position between each adjacent sub-syntax element.
  • the data decoding device may split each syntax element in the point cloud header information in the bitstream data according to the first split length to obtain at least two sub-syntax elements, and determine each adjacent sub-syntax element The positions between the syntax elements are the designated positions, so that the designated flag bits between the adjacent sub-syntax elements are removed to decode the code stream data.
  • the first split length is 16 bits.
  • each syntax element in the point cloud header information in the code stream data is processed according to the second split length.
  • Split to obtain at least two sub-syntax elements; the specified position is the position between each adjacent sub-syntax element.
  • the second split length is 16 bits.
  • the data decoding device can obtain code stream data, the code stream data includes point cloud header information, the point cloud header information includes a designated flag bit, and according to the syntax element in the point cloud header information in the code stream data
  • the binarization encoding method decodes the code stream data to obtain point cloud data corresponding to the code stream data.
  • FIG. 7 is a schematic structural diagram of a data encoding device according to an embodiment of the present invention.
  • the data encoding device includes a memory 701, a processor 702, and a data interface 703.
  • the memory 701 may include a volatile memory (volatile memory); the memory 701 may also include a non-volatile memory (non-volatile memory); the memory 701 may also include a combination of the foregoing types of memories.
  • the processor 702 may be a central processing unit (CPU).
  • the processor 702 may further include a hardware data encoding device.
  • the aforementioned hardware data encoding device may be an application-specific integrated circuit (ASIC), a programmable logic device (PLD), or a combination thereof. Specifically, for example, it may be a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), or any combination thereof.
  • ASIC application-specific integrated circuit
  • PLD programmable logic device
  • FPGA field-programmable gate array
  • the memory 701 is used to store program instructions.
  • the processor 702 can call the program instructions stored in the memory 701 to perform the following steps:
  • processor 702 determines the designated position in the point cloud header information according to the syntax elements in the point cloud header information, it is specifically configured to:
  • the processor 702 inserts a designated flag bit at a designated position of the point cloud header information to obtain de-pseudo-code stream data, it is specifically used to:
  • a designated flag bit is inserted between the two adjacent syntax elements to obtain de-pseudo-code stream data.
  • processor 702 determines the designated position in the point cloud header information according to the syntax elements in the point cloud header information, it is specifically configured to:
  • the processor 702 inserts a designated flag bit at a designated position of the point cloud header information to obtain de-pseudo-code stream data, it is specifically used to:
  • processor 702 splits the syntax elements in the point cloud header information according to the syntax elements in the point cloud header information to obtain at least two sub-syntax elements, it is specifically used to:
  • the syntax element in the point cloud header information is split according to the binary encoding method of the syntax element in the point cloud header information to obtain at least two sub-syntax elements.
  • the processor 702 splits the syntax elements in the point cloud header information according to the binarization encoding method of the syntax elements in the point cloud header information to obtain at least two sub-syntax elements, it is specifically used to:
  • the binary encoding method of the syntax element in the point cloud header information is variable-length coding
  • the lengths of the sub-syntax elements obtained after the syntax element is split are all less than or equal to the first split length.
  • the first split length is 16 bits.
  • the processor 702 splits the syntax elements in the point cloud header information according to the binarization encoding method of each syntax element in the point cloud header information to obtain at least two sub-syntax elements, it is specifically used to:
  • the syntax element in the point cloud header information is split according to the specified split length by the second split length to obtain at least one The sub-syntax element of the second split length.
  • processor 702 inserts a designated flag bit between each adjacent sub-syntax element after splitting to obtain de-pseudo-code stream data, it is specifically used for:
  • the second split length is 16 bits.
  • syntax element includes syntax elements in sequence header information and/or attribute header information.
  • syntax element includes at least one of the following:
  • Reserved words used to indicate the position of the three-dimensional volume surrounding the point cloud, used to indicate the size of the three-dimensional volume surrounding the point cloud, geometric quantization parameters, attribute quantization parameters, and flags used to indicate whether to remove duplicate point clouds , The number of point clouds.
  • syntax element used to indicate the position of the three-dimensional volume surrounding the point cloud includes at least one of the following syntax elements: used to indicate offset coordinates in the x-axis direction of the cube surrounding the point cloud, and used to indicate The offset coordinate in the y-axis direction of the cube surrounding the point cloud is used to indicate the offset coordinate in the z-axis direction of the cube surrounding the point cloud;
  • the syntax element used to indicate the size of the three-dimensional volume surrounding the point cloud includes at least one of the following syntax elements: used to indicate the width of the cube surrounding the point cloud, used to indicate the depth of the cube surrounding the point cloud, and To indicate the height of the cube surrounding the point cloud.
  • the at least one syntax element is split into two sub-syntax elements.
  • de-pseudo-code stream data includes:
  • Reserved word designated flag bit, used to indicate the high position of the offset coordinate of the cube surrounding the point cloud in the x-axis direction, designated flag bit, used to indicate the low position of the offset coordinate of the cube surrounding the point cloud in the x-axis direction, specified Flag bit, used to indicate the high position of the offset coordinate of the cube surrounding the point cloud in the y-axis direction, designated flag bit, used to indicate the low position of the offset coordinate of the cube surrounding the point cloud in the y-axis direction, used to indicate the bounding point
  • the high position of the offset coordinate of the cloud cube in the z-axis direction, the designated flag bit, the low position of the offset coordinate used to indicate the cube surrounding the point cloud in the z-axis direction, the designated flag bit, the specified flag bit, the indication of the cube surrounding the point cloud The high position of the width, the designated flag, the low position for indicating the width of the cube surrounding the point cloud, the designated flag, the high position for indicating the height of the cube surrounding the
  • the data encoding device may encode the point cloud data to be encoded to obtain bitstream data, where the bitstream data includes point cloud header information, and determine the point cloud header according to the syntax elements in the point cloud header information The designated position in the information, thereby inserting a designated flag bit in the designated position of the point cloud header information, to obtain the pseudo-code stream data.
  • FIG. 8 is a schematic structural diagram of a data decoding device according to an embodiment of the present invention.
  • the data decoding device includes a memory 801, a processor 802, and a data interface 803.
  • the memory 801 may include a volatile memory (volatile memory); the memory 801 may also include a non-volatile memory (non-volatile memory); the memory 801 may also include a combination of the foregoing types of memories.
  • the processor 802 may be a central processing unit (CPU).
  • the processor 802 may further include a hardware data encoding device.
  • the aforementioned hardware data encoding device may be an application-specific integrated circuit (ASIC), a programmable logic device (PLD), or a combination thereof. Specifically, for example, it may be a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), or any combination thereof.
  • ASIC application-specific integrated circuit
  • PLD programmable logic device
  • FPGA field-programmable gate array
  • the memory 801 is used to store program instructions.
  • the processor 802 can call the program instructions stored in the memory 801 to perform the following steps:
  • Acquiring code stream data where the code stream data includes point cloud header information, the point cloud header information includes a designated flag bit, and the designated flag bit is used to prevent a false start code;
  • the code stream data is decoded according to the binary encoding method of the syntax element in the point cloud header information in the code stream data to obtain the point cloud data corresponding to the code stream data.
  • the processor 802 decodes the code stream data according to the binary encoding method of the syntax elements in the point cloud header information in the code stream data, it is specifically configured to:
  • Decoding is performed according to the code stream data after removing the designated flag at the designated position of the point cloud header information.
  • the designated flag bit is located between two adjacent syntax elements in the header information
  • the designated flag bit is located between a syntax element in the header information, and the designated flag bit splits the one syntax element into at least two sub-syntax elements.
  • the designated flag bit splits the one syntax element into at least two sub-syntax elements, and the length of each sub-syntax element is less than or equal to a first split length, and the first split length is based on the syntax
  • the binary encoding method of the element is determined.
  • each syntax element in the point cloud header information in the code stream data is split according to the first split length to obtain At least two sub-syntax elements;
  • the specified position is the position between each adjacent sub-syntax element.
  • the first split length is 16 bits.
  • each syntax element in the point cloud header information in the code stream data is split according to the second split length, Get at least two sub-syntax elements;
  • the specified position is the position between each adjacent sub-syntax element.
  • the second split length is 16 bits.
  • syntax element includes at least one of the following:
  • Reserved words used to indicate the position of the three-dimensional volume surrounding the point cloud, used to indicate the size of the three-dimensional volume surrounding the point cloud, geometric quantization parameters, attribute quantization parameters, and flags used to indicate whether to remove duplicate point clouds , The number of point clouds.
  • syntax element used to indicate the position of the three-dimensional volume surrounding the point cloud includes at least one of the following syntax elements: used to indicate offset coordinates in the x-axis direction of the cube surrounding the point cloud, and used to indicate The offset coordinate in the y-axis direction of the cube surrounding the point cloud is used to indicate the offset coordinate in the z-axis direction of the cube surrounding the point cloud;
  • the syntax element used to indicate the size of the three-dimensional volume surrounding the point cloud includes at least one of the following syntax elements: used to indicate the width of the cube surrounding the point cloud, used to indicate the depth of the cube surrounding the point cloud, and To indicate the height of the cube surrounding the point cloud.
  • the at least one syntax element is split into two sub-syntax elements.
  • syntax element includes syntax elements in sequence header information and/or attribute header information.
  • code stream data includes:
  • Reserved word designated flag bit, used to indicate the high position of the offset coordinate of the cube surrounding the point cloud in the x-axis direction, designated flag bit, used to indicate the low position of the offset coordinate of the cube surrounding the point cloud in the x-axis direction, specified Flag bit, used to indicate the high position of the offset coordinate of the cube surrounding the point cloud in the y-axis direction, designated flag bit, used to indicate the low position of the offset coordinate of the cube surrounding the point cloud in the y-axis direction, used to indicate the bounding point
  • the high position of the offset coordinate of the cloud cube in the z-axis direction, the designated flag bit, the low position of the offset coordinate used to indicate the cube surrounding the point cloud in the z-axis direction, the designated flag bit, the specified flag bit, the indication of the cube surrounding the point cloud The high position of the width, the designated flag, the low position for indicating the width of the cube surrounding the point cloud, the designated flag, the high position for indicating the height of the cube surrounding the
  • the data decoding device can obtain code stream data, the code stream data includes point cloud header information, the point cloud header information includes a designated flag bit, and according to the syntax element in the point cloud header information in the code stream data
  • the binarization encoding method decodes the code stream data to obtain point cloud data corresponding to the code stream data.
  • a computer-readable storage medium stores a computer program, and the computer program is executed by a processor to realize the data described in the embodiment of the present invention in FIG. 5
  • the encoding method, or the data decoding method described in FIG. 6, can also implement the data encoding device of the corresponding embodiment of the present invention described in FIG. 7, or the data decoding device of the corresponding embodiment of the present invention described in FIG. 8, in This will not be repeated here.
  • the computer-readable storage medium may be the internal storage unit of the device described in any of the foregoing embodiments, such as the 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 equipped on the device, a Smart Media Card (SMC), or a Secure Digital (SD) card. , 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, and the program can be stored in a computer readable storage medium. During execution, it may include the procedures of the above-mentioned method embodiments.
  • 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 Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明实施例提供了一种数据编码、数据解码方法、设备及存储介质,其中,该方法包括:获取待编码的点云数据;对所述点云数据进行编码得到码流数据,所述码流数据包括点云头信息;根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置;在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据。通过这种方式可以避免编码时出现伪起始码,避免解码时进行去伪起始码的操作,提高了编码/解码的效率。

Description

一种数据编码、数据解码方法、设备及存储介质 技术领域
本发明涉及数据编解码领域,尤其涉及一种数据编码、数据解码方法、设备及存储介质。
背景技术
在现有的技术方案中,在编码点云头信息的时候需要按照与几何信息所采用的去伪起始码方案一样的方案,进行去伪起始码操作。在解码点云头信息的时候需要先剔除码流中的去伪起始码后再进行解码操作。这样在编码点云头信息这种码流时需要额外增加不少处理逻辑,并且在解码点云头信息时,也需要额外的处理逻辑以及时间开销。因此,如何提高对点云数据的编码/解码效率成为重要的研究问题。
发明内容
本发明实施例提供了一种数据编码、数据解码方法、设备及存储介质,可以避免编码时出现伪起始码,有助于解码时无需进行去伪起始码操作,提高解码效率。
第一方面,本发明实施例提供了一种数据编码方法,包括:
获取待编码的点云数据;
对所述点云数据进行编码得到码流数据,所述码流数据包括点云头信息;
根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置;
在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据。
第二方面,本发明实施例提供了一种数据解码方法,包括:
获取码流数据,所述码流数据包括点云头信息,所述点云头信息中包括指定标志位,所述指定标志位用于防止伪起始码;
根据所述码流数据中点云头信息中语法元素的二值化编码方法对所述码流数据进行解码,得到与所述码流数据对应的点云数据。
第三方面,本发明实施例提供了一种数据编码设备,其特征在于,包括:存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于调用所述程序,当所述程序被执行时,用于执行以下操作:
获取待编码的点云数据;
对所述点云数据进行编码得到码流数据,所述码流数据包括点云头信息;
根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置;
在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据。
第四方面,本发明实施例提供了一种数据解码设备,其特征在于,包括:存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于调用所述程序,当所述程序被执行时,用于执行以下操作:
获取码流数据,所述码流数据包括点云头信息,所述点云头信息中包括指定标志位,所述指定标志位用于防止伪起始码;
根据所述码流数据中点云头信息中语法元素的二值化编码方法对所述码流数据进行解码,得到与所述码流数据对应的点云数据。
第五方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面所述的数据编码方法或上述第二方面所述的数据解码方法。
本发明实施例,通过对待编码的点云数据进行编码得到码流数据,所述码流数据包括点云头信息,并根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置,以及在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据,可以避免编码时出现伪起始码,有助于解码时无需进行去伪起始码操作,提高解码效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种现有点云数据的编码流程示意图;
图2是本发明实施例提供的一种现有点云数据的解码流程示意图;
图3是本发明实施例提供的一种八叉树划分的示意图;
图4是本发明实施例提供的一种八叉树递归划分的示意图;
图5是本发明实施例提供的一种数据编码方法的流程示意图;
图6是本发明实施例提供的一种数据解码方法的流程示意图;
图7是本发明实施例提供的一种数据编码设备的结构示意图;
图8是本发明实施例提供的一种数据解码设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合,本发明实施例中的“多个”为“至少两个”。
本发明针对在目前AVS-PCC相关点云头信息的码流结构,为了能快速解码出点云头信息中所包含的内容,并且不会影响解码结果的正确性,本发明提出了一种对点云头信息中避免伪起始码的码流结构。在介绍本发明之前,首先对点云数据进行如下相关介绍。
在一个实施例中,所述点云数据是三维物体或场景的一种表现形式,是由空间中一组无规则分布、表达三维物体或场景空间结构和表面属性的离散点集所构成。为了准确反映空间中的信息,所需离散点的数目是巨大的。为了减少点云数据存储和传输时所占用的带宽,可以对点云数据进行编码压缩处理。
在一个实施例中,一个点云数据通常由描述坐标信息的三维坐标(x,y,z)以及该位置的属性信息如颜色(R,G,B)或者反射率等属性构成。在点云编码压缩过程中对位置坐标的编码通常与对属性的编码分开进行。压缩具体的过程包括,对位置坐标进行坐标平移以及坐标量化,对处理后的位置坐标进行 八叉树编码,对八叉树划分情况进行熵编码得到几何码流。关于属性信息,如果属性值为颜色,首先可以选择是否进行颜色空间变换,接着,根据对位置坐标是否进行了去重复点选择是否根据重建出来的八叉树进行属性插值,接着进行属性预测,根据原始值和预测值计算残差,对残差进行量化,对量化后的系数值进行熵编码得到属性码流。
在一个实施例中,常见的点云数据压缩的编码流程如图1所示,图1是本发明实施例提供的一种现有点云数据的编码流程示意图。如图1所示,点云数据的编码包括对点云数据的位置坐标进行编码以及对属性信息进行编码。
在一个实施例中,在对位置坐标进行编码时,可以通过输入点云数据的位置坐标111,对输入的点云数据的位置坐标进行坐标平移和坐标量化112,接着对坐标平移和坐标量化后的位置坐标进行八叉树构建113,然后对八叉树划分情况进行熵编码114,得到几何码流115。
在一个实施例中,在对属性信息进行编码时,可以通过输入的点云数据的属性信息121,对属性信息121进行空间变换122,根据对位置坐标是否进行了去重复点选择的八叉树重建123,若是,则根据重建出来的八叉树进行属性插值124,接着进行属性预测125,根据原始属性值和属性预测125得到的预测属性值计算残差,并对残差进行残差量化126,从而对量化后的系数值进行熵编码127得到属性码流128。
在一个实施例中,在进行属性预测时,首先基于莫顿码对点云进行重排序,生成可用于点云属性预测的点云顺序。在属性编码中,莫顿码主要基于莫顿查询表进行计算得到,过程如下:
第一,遍历几何重建点云,得到当前点对应的几何坐标x、y和z;
第二,根据几何坐标查找莫顿表计算当前点所对应的莫顿码;
第三,基于莫顿码对点云进行重排序。
接着对排序后的属性值利用前项差分预测,根据预测值与原始值,得到属性残差。接着对属性残差进行量化。对量化之后的系数值进行系数编码即可得到属性码流。
在一个实施例中,所述点云数据压缩的解码流程是图1所示的编码的逆过程,具体如图2所示,图2是本发明实施例提供的一种现有点云数据的解码流程示意图。如图2所示,待解码的码流数据包括几何码流211和属性码流 221。
在一个实施例中,在对几何码流211进行解码时,可以通过对几何码流211进行熵解码212,然后进行八叉树重建213、逆坐标量化214和逆坐标平移215得到位置坐标216。
在一个实施例中,在对属性码流221进行解码时,可以通过对属性码流221进行熵解码222得到系数值,并对系数值进行逆量化223得到残差,根据残差进行属性重建224,然后进行空间变换225得到属性信息226。
在一个实施例中,针对点云数据的位置坐标的压缩,首先对位置坐标进行坐标平移,坐标量化,将位置坐标转换为大于等于零的整数坐标,接着可以选择是否进行去除重复坐标的操作,接下来进行八叉树编码。在一些实施例中,所述八叉树编码是利用八叉树划分来压缩坐标位置的方法,其中,每层八叉树的划分均利用当前块的中心点的坐标进行子块划分,通过中心点将当前块划分为八个小的子块。具体如图3所示,图3是本发明实施例提供的一种八叉树划分的示意图,其中,将当前块31划分为8个小的子块。
在一个实施例中,在得到子块划分后,会判断每个子块内是否存在点云数据,对存在点云数据的子块会再进一步进行划分,直至子块划分至最小时,即子块边长为1时停止划分。如图4所示,图4是本发明实施例提供的一种八叉树递归划分的示意图,其中,子块41内存在点云数据,因此对子块41在进行划分得到8个子块,其中,子块411和子块412内存在点云数据,因此可以再分别对子块411和子块412进行划分,直至子块划分至最小时停止划分。
在一个实施例中,在几何信息(点数或者点与点的相对位置)改变了的情况下,如在位置坐标编码中进行了去除重复点的操作,则需进行属性差值,即重上色。在某些实施例中,所述几何信息为点云数据的点数或者点云数据中点与点之间的相对位置;在某些实施例中,所述重上色就是为重构点云中的每个点计算新的属性值,使得重构点云和原始点云的属性误差最小。
在一个实施例中,给定原始点云数据的位置坐标信息和属性信息,以及重构点云的几何信息,所述重上色的实现过程如下:
第一,设原始点云和重构点云的几何信息分别为(P i) i=0...N-1
Figure PCTCN2019122209-appb-000001
其中N和N rec分别为原始点云和重构点云中的点数,易知如果去除了重复点, 则N rec<N,否则N rec=N。
第二,对于重构点云中的每个点
Figure PCTCN2019122209-appb-000002
在原始点云中找到与之距离最近的点
Figure PCTCN2019122209-appb-000003
Figure PCTCN2019122209-appb-000004
的属性值为
Figure PCTCN2019122209-appb-000005
第三,对原始点云中的每个点,在重构点云中找与之距离最近的点。对于重构点云中的点
Figure PCTCN2019122209-appb-000006
令U(i)=(X k(i)) k∈{1,...,D(i)}为原始点云中,均以
Figure PCTCN2019122209-appb-000007
为最近点的点集,其中D(i)为U(i)中包含点的个数,注意U(i)可以为空,也可以包含一个或多个点。
第四:为重构点云中的每个点
Figure PCTCN2019122209-appb-000008
计算重构属性值,若U(i)为空,那么直接将
Figure PCTCN2019122209-appb-000009
作为重构属性值赋给
Figure PCTCN2019122209-appb-000010
若U(i)不为空,则重构点的属性值U(i)中所有点的属性均值,计算公式如下公式(1)所示:
Figure PCTCN2019122209-appb-000011
表1
sequence_header(){ Descriptor
level_idc u(8)
bounding_box_offset_x se(v)
bounding_box_offset_y se(v)
bounding_box_offset_z se(v)
bounding_box_size_width ue(v)
bounding_box_size_height ue(v)
bounding_box_size_depth ue(v)
num_points ue(v)
quant_step_upper u(16)
quant_step_lower u(16)
geomRemoveDuplicateFlag u(1)
attribute_quantstep ue(v)
byte_alignment()  
}  
其中,sequence_header()用于指示序列头、level_idc用于指示保留字、bounding_box_offset_x用于指示在包围点云的立方体的在x轴方向的偏移坐标、quant_step_upper用于指示几何量化参数的高位、quant_step_lower用于指示几何量化参数的低位、geomRemoveDuplicateFlag用于指示是否去除重复点云的标志位、attribute_quantstep用于指示属性量化参数、byte_alignment()用于指示字节对齐操作。
现有的码流结构按照起始码方案,例如起始码为0x00 00 01(0x表明后面的数是按照十六进制表示)。在序列头信息、属性头信息、几何数据、属性数据,这四组数据前都会加上起始码进行标识。在码流当中,除了起始码之外的码流存在与起始码相同的码流。在一个示例中,所述序列头信息如表1所示。
在一个示例中,所述属性头信息如表2所示。
表2
Figure PCTCN2019122209-appb-000012
其中,withColor用于指示点云的属性信息中是否包含颜色、withRef用于指示点云的属性信息中是否包含反射率、byte_alignment()用于指示字节对齐操作。
在一个示例中,所述几何数据如表3所示。
表3
Figure PCTCN2019122209-appb-000013
其中,geometry_data()用于指示点云的几何数据、Geometry_data_alignment()用于指示几何数据的字节对齐操作。
在一个示例中,所述属性数据如表4所示。
表4
Figure PCTCN2019122209-appb-000014
其中,attribute_data用()用于指示点云的属性数据、Attribute_byte_alignment()用于指示属性数据的字节对齐操作。
其中,上述表1、表2、表3、表4中描述符的定义如表5所示:
表5
描述符 说明
ae(v) 高级熵编码的语法元素。
f(n) 取特定值的连续n个二进制位。
se(v) 有符号整数语法元素,用指数哥伦布编码。
u(n) n位无符号整数。
ue(v) 无符号整数语法元素,用指数哥伦布编码。
其中,k阶指数哥伦布码可用如下步骤生成:
①将数字N以二进制形式写出,去掉最低的k个比特位,之后加1;
②计算留下的比特位数,将此数减一,即是需要增加的前缀零的个数;
③将步骤①中去掉的最低k个比特位补回比特串尾部。
在一个示例中,以属性反射率的数值为4时,一阶指数哥伦布编码为例:
①4的二进制表示为100,去掉最低1个比特位0变为10,加1后变为11;
②11的比特数为2,因此前缀中0的个数为1;
③在比特串最低比特位补上步骤①中去掉的0,最终码字为0110。
对于k阶哥伦布码,前缀由m个连续的0和一个1构成,后缀由m+k构成,是N-2 k(2 m-1)的二进制表示。
解析k阶指数哥伦布码时,首先从比特流的当前位置开始寻找第一个非零比特,并将找到的零比特个数记为m,第一个非零比特之后m+k位二进制比特串的十进制值为value,计算出的解码值codeNum如式2所示。
codeNum=2 m+k-2 k+Value   (2)
目前,为了防止出现伪起始码,编码时主要按照以下方法处理:写入一位时,如果该位是一个字节的第二最低有效位,检查该位之前写入的22位,如果这22位都是‘0’,在该位之前插入‘10’,该位成为下一个字节的最高有效位,该处理过程即为去伪起始码过程。解码时主要按以下方法处理:每读入一个字节时,检查前面读入的两个字节和当前字节,如果这三个字节构成位串‘0000 0000 0000 0000 0000 0010’,丢弃当前字节的最低两个有效位。然而,这种方式在解码点云头信息中的序列头信息、属性头信息时,需要先剔除码流中的去伪起始码后再进行解码操作。这种编码方式在编码点云头信息时得到的码流需要额外增加不少处理逻辑。并且在解码点云头信息时,也需要额外的处理逻辑以及时间开销。
因此,本发明实施例提出了一种数据编码方法以及对应的数据解码方法,通过获取待编码的点云数据,在对点云数据进行压缩编码时,对点云头信息在特定位置插入指定标志位,从而避免在点云头信息中出现伪起始码,在对点云头信息的编码和解码过程中,不需要进行去伪起始码的相关操作。在某些实施例中,所述点云头信息包括序列头信息和/或属性头信息。
本发明实施例提出的所述数据编码方法可以应用于数据编码设备,所述数据编码设备可以设置在智能终端(如手机、平板电脑等)上。所述数据解码方法可以应用于数据解码设备,所述数据解码设备也可以设置在智能终端(如手机、平板电脑等)上。在某些实施例中,本发明实施例还可应用于飞行器(如无人机)上,在其他实施例中,本发明实施例还可以应用于其他可移动平台(如无人船、无人汽车、机器人等)上,本发明实施例不做具体限定。
下面结合附图对本发明实施例提供的数据编码、数据解码方法进行示意 性说明。
具体请参见图5,图5是本发明实施例提供的一种数据编码方法的流程示意图。所述方法可以应用于数据编码设备,其中,所述数据编码设备的解释如前所述,此处不再赘述。具体地,本发明实施例的所述方法包括如下步骤。
S501:获取待编码的点云数据。
本发明实施例中,数据编码设备可以获取待编码的点云数据。
在一些实施例中,所述点云数据可以通过一个或多个采集设备获取得到;在某些实施例中,所述采集设备可以包括但不限于激光雷达、激光扫描仪等设备。
需要说明的是,所述激光雷达是一种感知传感器,可以获得场景的三维信息。其基本原理为主动对被探测对象发射激光脉冲信号,并获得其反射回来的脉冲信号,根据发射信号和接收信号之间的时间差计算被测对象的距离探测器的深度信息;基于激光雷达的已知发射方向,获得被测对象相对激光雷达的角度信息;结合前述深度信息和角度信息得到海量的探测点(称为点云数据)。
S502:对所述点云数据进行编码得到码流数据,所述码流数据包括点云头信息。
本发明实施例中,数据编码设备可以对所述点云数据进行编码得到码流数据,所述码流数据包括点云头信息。在某些实施例中,所述点云头信息中包括序列头信息、属性头信息、几何数据、属性数据中的任意一种或多种,所述序列头信息、属性头信息、几何数据、属性数据的详细说明请见前述表1-表5,此处不再赘述。
S503:根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置。
本发明实施例中,数据编码设备可以根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置。
在一个实施例中,数据编码设备在根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置时,可以根据所述点云头信息中的语法元素,确定两个相邻语法元素之间的位置为所述指定位置。
在一个实施例中,所述语法元素包括序列头信息和/或属性头信息中的语法元素。在一个实施例中,所述语法元素包括以下至少一项:保留字、用于指 示在包围点云的三维空间体的位置、用于指示在包围点云的三维空间体的尺寸、几何量化参数、属性量化参数、用于指示是否去除重复点云的标志位、点云数量。
在一个实施例中,所述用于指示在包围点云的三维空间体的位置的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的在x轴方向的偏移坐标、用于指示在包围点云的立方体的在y轴方向的偏移坐标、用于指示在包围点云的立方体的在z轴方向的偏移坐标;和/或,所述用于指示在包围点云的三维空间体的尺寸的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的宽度、用于指示在包围点云的立方体的深度、用于指示在包围点云的立方体的高度。在某些实施例中,所述至少一个语法元素被拆分成2个子语法元素。
在一个示例中,所述保留字可以为level_idc、所述用于指示在包围点云的立方体的在x轴方向的偏移坐标可以是bounding_box_offset_x、所述用于指示在包围点云的立方体的在y轴方向的偏移坐标可以是bounding_box_offset_y、所述用于指示在包围点云的立方体的在z轴方向的偏移坐标可以是bounding_box_offset_z、所述用于指示在包围点云的立方体的宽度可以是bounding_box_size_width、所述用于指示在包围点云的立方体的深度可以是bounding_box_size_depth、所述用于指示在包围点云的立方体的高度可以是bounding_box_size_height、所述几何量化参数可以包括几何量化参数的高位和几何量化参数的地位,所述几何量化参数的高位可以是quant_step_upper、所述几何量化参数的低位可以是quant_step_lower、所述用于指示是否去除重复点云的标志位可以是geomRemoveDuplicateFlag、所述属性量化参数可以是attribute_quantstep、所述点云数量可以是num_points。
以表1所述的序列头信息为例,数据编码设备可以根据如表1所述的序列头信息中的语法元素,确定level_idc和bounding_box_offset_x两个相邻语法元素之间的位置为指定位置,以及quant_step_upper、quant_step_lower、geomRemoveDuplicateFlag、attribute_quantstep各个两两相邻语法元素之间的位置为指定位置。
可见,通过在两两相邻的语法元素之间插入指定标志位,可以避免序列头信息中出现伪起始码。
在一个实施例中,数据编码设备在根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置时,可以根据所述点云头信息中的语法元素对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素,并确定拆分后的各个相邻子语法元素之间的位置为所述指定位置。
以表1所述的序列头信息为例,数据编码设备可以根据如表1所述的序列头信息中的语法元素,对表1中的序列头信息中的bounding_box_offset_x、bounding_box_offset_y、bounding_box_offset_z、bounding_box_size_width、bounding_box_size_height、bounding_box_size_depth、num_points这些语法元素进行拆分,得到对应的bounding_box_offset_x-upper、bounding_box_offset_x-lower、bounding_box_offset_y-upper、bounding_box_offset_y-lower、bounding_box_offset_z-upper、bounding_box_offset_z-lower、bounding_box_size_width-upper、bounding_box_size_width-lower、bounding_box_size_height-upper、bounding_box_size_height-lower、bounding_box_size_depth-upper、bounding_box_size_depth-lower、num_points-upper、num_points-lower中的至少两个子语法元素,并确定拆分后的各个相邻子语法元素之间的位置为所述指定位置。
在一个示例中,bounding_box_offset_x-upper用于指示包围点云的立方体在x轴方向的偏移坐标的高位、bounding_box_offset_x-lower用于指示包围点云的立方体在x轴方向的偏移坐标的低位、bounding_box_offset_y-upper用于指示包围点云的立方体在y轴方向的偏移坐标的高位、bounding_box_offset_y-lower用于指示包围点云的立方体在y轴方向的偏移坐标的低位、bounding_box_offset_z-upper用于指示包围点云的立方体在z轴方向的偏移坐标的高位、bounding_box_offset_z-lower用于指示包围点云的立方体在z轴方向的偏移坐标的低位、bounding_box_size_width-upper用于指示包围点云的立方体的宽度的高位、bounding_box_size_width-lower用于指示包围点云的立方体的宽度的低位、bounding_box_size_height-upper用于指示指示包围点云的立方体的高度的高位、bounding_box_size_height-lower用于指示包围点云的立方体的宽度的低位、bounding_box_size_depth-upper用于指示包围点云的立方体的深度的高位、bounding_box_size_depth-lower用于指示包围点云的立方体的 深度的低位、num_points-upper用于指示三维空间的立方体中点云的数量的高位、num_points-lower用于指示三维空间的立方体中点云的数量的低位。
在一个实施例中,数据编码设备在根据所述点云头信息中的语法元素对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素时,可以根据所述点云头信息中语法元素的二值化编码方法对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素。
在一个实施例中,数据编码设备在根据所述点云头信息中语法元素的二值化编码方法对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素时,当确定所述点云头信息中语法元素的二值化编码方法为变长编码时,根据第一拆分长度对所述点云头信息中的语法元素进行拆分,得到至少一个第一拆分长度的子语法元素。在某些实施例中,所述第一拆分长度为16比特bit。在某些实施例中,所述语法元素拆分后得到的子语法元素的长度均小于等于所述第一拆分长度。在某些实施例中,所述变长编码可以包括但不限于指数哥伦布编码、截断莱斯编码等。
以表1中序列头信息描述立方体块坐标的起始位置x方向坐标即bounding_box_offset_x语法元素为例,当确定该语法元素采用有符号0阶指数哥伦布编码进行二值化编码时,本发明实施例将bounding_box_offset_x语法元素拆分为高16bit的bounding_box_offset_x_upper和低16bit的bounding_box_offset_x_lower两个子语法元素。
可见,通过这种实施方式,可以避免在前缀码中出现超过连续22bit的0的情况,以进一步避免序列头信息中出现伪起始码。
在一个实施例中,数据编码设备在根据所述点云头信息中语法元素的二值化编码方法对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素时,当确定所述点云头信息中语法元素的二值化编码方法为定长编码时,可以根据第二拆分长度对所述点云头信息中的语法元素进行拆分,得到至少一个第二拆分长度的子语法元素。在某些实施例中,所述第二拆分长度为16比特bit。具体实施例例与前述变成编码方法对应的对语法元素的拆分方式相同,此处不再赘述。
可见,通过在两两相邻的语法元素之间插入指定标志位,以及在拆分得到的各个相邻子语法元素之间插入指定标志位,可以有效避免点云头信息的序列 头信息中出现伪起始码。
S504:在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据。
本发明实施例中,数据编码设备可以在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据。在某些实施例中,所述指定标志位为1。
在一个实施例中,数据编码设备在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据时,如果确定出两个相邻语法元素之间的位置为所述指定位置,则可以在所述两个相邻语法元素之间插入指定标志位,得到去伪码流数据。
以表1和表6所述的序列头信息为例,对表1中的序列头信息中的level_idc和bounding_box_offset_x两个相邻语法元素之间插入指定标志位marker_bit如1bit,得到level_idc、marker_bit、bounding_box_offset_x,以及在quant_step_upper、quant_step_lower、geomRemoveDuplicateFlag、attribute_quantstep两两相邻的语法元素之间插入指定标志位得到:quant_step_upper、marker_bit、quant_step_lower、marker_bit、geomRemoveDuplicateFlag、marker_bit、attribute_quantstep。
在一个实施例中,数据编码设备在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据时,如果确定出拆分后的各个相邻子语法元素之间的位置为所述指定位置,则可以在拆分后的各个相邻子语法元素之间插入指定标志位,得到去伪码流数据。
在一个实施例中,所述去伪码流数据中包括:保留字、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的低位、用于指示包围点云的立方体在z轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在z轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体的宽度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的高度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的深度的高位、指定标志位、用于指示包围点云的立方体的深度的低位、指定标志位、用于指示三维 空间的立方体中点云的数量的高位、指定标志位、用于指示三维空间的立方体中点云的数量的低位。
以表1和表6所述的序列头信息为例,对表1中的序列头信息中的bounding_box_offset_x、bounding_box_offset_y、bounding_box_offset_z、bounding_box_size_width、bounding_box_size_height、bounding_box_size_depth、num_points这些语法元素进行拆分,得到对应的bounding_box_offset_x-upper、bounding_box_offset_x-lower、bounding_box_offset_y-upper、bounding_box_offset_y-lower、bounding_box_offset_z-upper、bounding_box_offset_z-lower、bounding_box_size_width-upper、bounding_box_size_width-lower、bounding_box_size_height-upper、bounding_box_size_height-lower、bounding_box_size_depth-upper、bounding_box_size_depth-lower、num_points-upper、num_points-lower多个相邻的16bit的子语法元素,通过在各个相邻的16bit的子语法元素之间插入指定标志位,得到如表6所示的插入标志位后的序列头信息。
在一个实施例中,数据编码设备在拆分后的各个相邻子语法元素之间插入指定标志位,得到去伪码流数据时,可以在各个相邻的子语法元素之间插入指定标志位,得到去伪码流数据。
表6
Figure PCTCN2019122209-appb-000015
Figure PCTCN2019122209-appb-000016
其中,bounding_box_offset_x-upper用于指示包围点云的立方体在x轴方向的偏移坐标的高位、marker_bit用于指示指定标志位、bounding_box_offset_x-lower用于指示包围点云的立方体在x轴方向的偏移坐标的低位、bounding_box_offset_y-upper用于指示包围点云的立方体在y轴方向的偏移坐标的高位、bounding_box_offset_y-lower用于指示包围点云的立方体在y轴方向的偏移坐标的低位、bounding_box_offset_z-upper用于指示包围点云的立方体在z轴方向的偏移坐标的高位、bounding_box_offset_z-lower用于指示包围点云的立方体在z轴方向的偏移坐标的低位、bounding_box_size_width-upper用于指示包围点云的立方体的宽度的高位、bounding_box_size_width-lower用于指示包围点云的立方体的宽度的低位、bounding_box_size_height-upper用于指示指示包围点云的立方体的高度的高位、bounding_box_size_height-lower用于指示包围点云的立方体的宽度的低位、bounding_box_size_depth-upper用于指示包围点云的立方体的深度的高位、bounding_box_size_depth-lower用于指示包围点云的立方体的深度的低位、num_points-upper用于指示三维空间的立方体中点云的数量的高位、num_points-lower用于指示三维空间的立方体中点云的数量的低位。
本发明实施例中,数据编码设备可以对待编码的点云数据进行编码得到码流数据,所述码流数据包括点云头信息,并根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置,从而在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据。通过这种实施方式,可以有效避免伪起始码的出现,提高了编码效率。
请参见图6,图6是本发明实施例提供的一种数据解码方法的流程示意图,所述方法可以应用于数据解码设备,其中,所述数据解码设备的具体解释如前所述。具体地,本发明实施例的所述方法包括如下步骤。
S601:获取码流数据,所述码流数据包括点云头信息,所述点云头信息中包括指定标志位,所述指定标志位用于防止伪起始码。
本发明实施例中,数据解码设备可以获取码流数据,所述码流数据包括点云头信息,所述点云头信息中包括指定标志位,所述指定标志位用于防止伪起 始码。在一个示例中,所述指定标志位为1。
在某些实施例中,所述点云头信息中包括序列头信息、属性头信息、几何数据、属性数据中的任意一种或多种,所述序列头信息、属性头信息、几何数据、属性数据的详细说明请见前述表1-表5,此处不再赘述。
在一个实施例中,所述码流数据中包括:保留字、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的低位、用于指示包围点云的立方体在z轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在z轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体的宽度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的高度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的深度的高位、指定标志位、用于指示包围点云的立方体的深度的低位、指定标志位、用于指示三维空间的立方体中点云的数量的高位、指定标志位、用于指示三维空间的立方体中点云的数量的低位。
S602:根据所述码流数据中点云头信息中语法元素的二值化编码方法对所述码流数据进行解码,得到与所述码流数据对应的点云数据。
本发明实施例中,数据解码设备可以根据所述码流数据中点云头信息中语法元素的二值化编码方法对所述码流数据进行解码,得到与所述码流数据对应的点云数据。
在一个实施例中,所述语法元素包括以下至少一项:保留字、用于指示在包围点云的三维空间体的位置、用于指示在包围点云的三维空间体的尺寸、几何量化参数、属性量化参数、用于指示是否去除重复点云的标志位、点云数量。
在一个实施例中,所述用于指示在包围点云的三维空间体的位置的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的在x轴方向的偏移坐标、用于指示在包围点云的立方体的在y轴方向的偏移坐标、用于指示在包围点云的立方体的在z轴方向的偏移坐标;和/或,所述用于指示 在包围点云的三维空间体的尺寸的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的宽度、用于指示在包围点云的立方体的深度、用于指示在包围点云的立方体的高度。在某些实施例中,所述至少一个语法元素被拆分成2个子语法元素。在某些实施例中,所述语法元素包括序列头信息和/或属性头信息中的语法元素。
在一个示例中,所述保留字可以为level_idc、所述用于指示在包围点云的立方体的在x轴方向的偏移坐标可以是bounding_box_offset_x、所述用于指示在包围点云的立方体的在y轴方向的偏移坐标可以是bounding_box_offset_y、所述用于指示在包围点云的立方体的在z轴方向的偏移坐标可以是bounding_box_offset_z、所述用于指示在包围点云的立方体的宽度可以是bounding_box_size_width、所述用于指示在包围点云的立方体的深度可以是bounding_box_size_depth、所述用于指示在包围点云的立方体的高度可以是bounding_box_size_height、所述几何量化参数可以包括几何量化参数的高位和几何量化参数的地位,所述几何量化参数的高位可以是quant_step_upper、所述几何量化参数的低位可以是quant_step_lower、所述用于指示是否去除重复点云的标志位可以是geomRemoveDuplicateFlag、所述属性量化参数可以是attribute_quantstep、所述点云数量可以是num_points。
在一个实施例中,数据解码设备在根据所述码流数据中点云头信息中语法元素的二值化编码方法对所述码流数据进行解码时,可以根据所述码流数据中点云头信息中语法元素的二值化编码方法,确定所述点云头信息中的指定位置,所述指定标志位位于所述指定位置处,并根据去除所述点云头信息的指定位置处的指定标志位后的码流数据进行解码。
在一个实施例中,所述指定标志位位于所述头信息中相邻的两个语法元素之间;和/或,所述指定标志位位于所述头信息中一个语法元素之间,所述指定标志位将所述一个语法元素拆分成至少两个子语法元素。
在一个实施例中,所述指定标志位将所述一个语法元素拆分成至少两个子语法元素,每个子语法元素的长度均小于等于第一拆分长度,所述第一拆分长度是根据所述语法元素的二值化编码方法确定的。
在一个示例中,当所述指定标志位位于所述头信息中相邻的两个语法元素之间时,以表6为例,假设码流数据中点云头信息的序列头信息包括level_idc、 marker_bit、bounding_box_offset_x,则可以确定level_idc和bounding_box_offset_x两个相邻语法元素之间marker_bit所处的位置为指定位置,并根据去除所述指定位置处的指定标志位marker_bit后的码流数据进行解码。
又例如,假设码流数据中点云头信息的序列头信息包括quant_step_upper、marker_bit、quant_step_lower、marker_bit、geomRemoveDuplicateFlag、marker_bit、attribute_quantstep,则可以确定两两相邻的语法元素之间marker_bit所处的位置为指定位置,并根据去除所述指定位置处的指定标志位marker_bit后的码流数据进行解码。
可见,通过这种实施方式进行解码,无需进行去伪起始码的相关操作,提高了解码效率。
在一个实施例中,当所述点云头信息中语法元素的二值化编码方法为变长编码时,所述码流数据中的点云头信息中的各个语法元素根据第一拆分长度进行拆分,得到至少两个子语法元素;所述指定位置为各个相邻的子语法元素之间的位置。
在一种实施方式,数据解码设备可以根据第一拆分长度对所述码流数据中的点云头信息中的各个语法元素进行拆分,得到至少两个子语法元素,并确定各个相邻的子语法元素之间的位置为所述指定位置,从而去除所述各个相邻的子语法元素之间的指定标志位对所述码流数据进行解码。在某些实施例中,所述第一拆分长度为16比特。
以表6为例,假设码流数据中点云头信息的序列头信息包括bounding_box_offset_x-upper、指定标志位、bounding_box_offset_x-lower、指定标志位、bounding_box_offset_y-upper、指定标志位、bounding_box_offset_y-lower、bounding_box_offset_z-upper、指定标志位、bounding_box_offset_z-lower、指定标志位、bounding_box_size_width-upper、指定标志位、bounding_box_size_width-lower、指定标志位、bounding_box_size_height-upper、指定标志位、bounding_box_size_height-lower、指定标志位、bounding_box_size_depth-upper、指定标志位、bounding_box_size_depth-lower、指定标志位、num_points-upper、指定标志位、num_points-lower,则可以确定两两相邻的子语法元素之间marker_bit所处的位置为指定位置,并忽略 marker_bit指定标志位对所述码流数据进行解码。
在一个实施例中,当所述点云头信息中语法元素的二值化编码方法为定长编码时,对所述码流数据中的点云头信息中的各个语法元素根据第二拆分长度进行拆分,得到至少两个子语法元素;所述指定位置为各个相邻的子语法元素之间的位置。在某些实施例中,所述第二拆分长度为16比特。
可见,通过这种实施方式进行解码,无需进行去伪起始码的相关操作,可以进一步提高了解码效率。
本发明实施例中,数据解码设备可以获取码流数据,所述码流数据包括点云头信息,所述点云头信息中包括指定标志位,并根据所述码流数据中点云头信息中语法元素的二值化编码方法对所述码流数据进行解码,得到与所述码流数据对应的点云数据。通过这种实施方式,可以避免解码时进行去伪起始码的相关操作,提高了解码效率。
请参见图7,图7是本发明实施例提供的一种数据编码设备的结构示意图,具体的,所述数据编码设备包括:存储器701、处理器702以及数据接口703。
所述存储器701可以包括易失性存储器(volatile memory);存储器701也可以包括非易失性存储器(non-volatile memory);存储器701还可以包括上述种类的存储器的组合。所述处理器702可以是中央处理器(central processing unit,CPU)。所述处理器702还可以进一步包括硬件数据编码设备。上述硬件数据编码设备可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。具体例如可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA)或其任意组合。
进一步地,所述存储器701用于存储程序指令,当程序指令被执行时所述处理器702可以调用存储器701中存储的程序指令,用于执行如下步骤:
获取待编码的点云数据;
对所述点云数据进行编码得到码流数据,所述码流数据包括点云头信息;
根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置;
在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据。
进一步地,所述处理器702根据所述点云头信息中的语法元素,确定所述 点云头信息中的指定位置时,具体用于:
根据所述点云头信息中的语法元素,确定两个相邻语法元素之间的位置为所述指定位置;
所述处理器702在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据时,具体用于:
在所述两个相邻语法元素之间插入指定标志位,得到去伪码流数据。
进一步地,所述处理器702根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置时,具体用于:
根据所述点云头信息中的语法元素对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素;
确定拆分后的各个相邻子语法元素之间的位置为所述指定位置;
所述处理器702在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据时,具体用于:
在拆分后的各个相邻子语法元素之间插入指定标志位,得到去伪码流数据。
进一步地,所述处理器702根据所述点云头信息中的语法元素对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素时,具体用于:
根据所述点云头信息中语法元素的二值化编码方法对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素。
进一步地,所述处理器702根据所述点云头信息中语法元素的二值化编码方法对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素时,具体用于:
当确定所述点云头信息中语法元素的二值化编码方法为变长编码时,根据第一拆分长度对所述点云头信息中的语法元素进行拆分,得到至少一个第一拆分长度的子语法元素。
进一步地,所述语法元素拆分后得到的子语法元素的长度均小于等于所述第一拆分长度。
进一步地,所述第一拆分长度为16比特。
进一步地,所述处理器702根据所述点云头信息中各个语法元素的二值化编码方法对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素 时,具体用于:
当确定所述点云头信息中语法元素的二值化编码方法为定长编码时,根据指定拆分长度对第二拆分长度对所述点云头信息中的语法元素进行拆分,得到至少一个第二拆分长度的子语法元素。
进一步地,所述处理器702在拆分后的各个相邻子语法元素之间插入指定标志位,得到去伪码流数据时,具体用于:
在各个相邻的子语法元素之间插入指定标志位,得到去伪码流数据。
进一步地,所述第二拆分长度为16比特。
进一步地,所述指定标志位为1。
进一步地,所述语法元素包括序列头信息和/或属性头信息中的语法元素。
进一步地,所述语法元素包括以下至少一项:
保留字、用于指示在包围点云的三维空间体的位置、用于指示在包围点云的三维空间体的尺寸、几何量化参数、属性量化参数、用于指示是否去除重复点云的标志位、点云数量。
进一步地,所述用于指示在包围点云的三维空间体的位置的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的在x轴方向的偏移坐标、用于指示在包围点云的立方体的在y轴方向的偏移坐标、用于指示在包围点云的立方体的在z轴方向的偏移坐标;
和/或,
所述用于指示在包围点云的三维空间体的尺寸的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的宽度、用于指示在包围点云的立方体的深度、用于指示在包围点云的立方体的高度。
进一步地,所述至少一个语法元素被拆分成2个子语法元素。
进一步地,所述去伪码流数据中包括:
保留字、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的低位、用于指示包围点云的立方体在z轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在z轴方向的偏移坐标的低位、指定标志位、用于指示包围 点云的立方体的宽度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的高度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的深度的高位、指定标志位、用于指示包围点云的立方体的深度的低位、指定标志位、用于指示三维空间的立方体中点云的数量的高位、指定标志位、用于指示三维空间的立方体中点云的数量的低位。
本发明实施例中,数据编码设备可以对待编码的点云数据进行编码得到码流数据,所述码流数据包括点云头信息,并根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置,从而在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据。通过这种实施方式,可以有效避免伪起始码的出现,提高了编码效率。
请参见图8,图8是本发明实施例提供的一种数据解码设备的结构示意图,具体的,所述数据解码设备包括:存储器801、处理器802以及数据接口803。
所述存储器801可以包括易失性存储器(volatile memory);存储器801也可以包括非易失性存储器(non-volatile memory);存储器801还可以包括上述种类的存储器的组合。所述处理器802可以是中央处理器(central processing unit,CPU)。所述处理器802还可以进一步包括硬件数据编码设备。上述硬件数据编码设备可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。具体例如可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA)或其任意组合。
进一步地,所述存储器801用于存储程序指令,当程序指令被执行时所述处理器802可以调用存储器801中存储的程序指令,用于执行如下步骤:
获取码流数据,所述码流数据包括点云头信息,所述点云头信息中包括指定标志位,所述指定标志位用于防止伪起始码;
根据所述码流数据中点云头信息中语法元素的二值化编码方法对所述码流数据进行解码,得到与所述码流数据对应的点云数据。
进一步地,所述处理器802根据所述码流数据中点云头信息中语法元素的二值化编码方法对所述码流数据进行解码时,具体用于:
根据所述码流数据中点云头信息中语法元素的二值化编码方法,确定所述点云头信息中的指定位置,所述指定标志位位于所述指定位置处;
根据去除所述点云头信息的指定位置处的指定标志位后的码流数据进行解码。
进一步地,所述指定标志位位于所述头信息中相邻的两个语法元素之间;
和/或,
所述指定标志位位于所述头信息中一个语法元素之间,所述指定标志位将所述一个语法元素拆分成至少两个子语法元素。
进一步地,所述指定标志位将所述一个语法元素拆分成至少两个子语法元素,每个子语法元素的长度均小于等于第一拆分长度,所述第一拆分长度是根据所述语法元素的二值化编码方法确定的。
进一步地,当所述点云头信息中语法元素的二值化编码方法为变长编码时,所述码流数据中的点云头信息中的各个语法元素根据第一拆分长度进行拆分,得到至少两个子语法元素;
所述指定位置为各个相邻的子语法元素之间的位置。
进一步地,所述第一拆分长度为16比特。
进一步地,当所述点云头信息中语法元素的二值化编码方法为定长编码时,对所述码流数据中的点云头信息中的各个语法元素根据第二拆分长度进行拆分,得到至少两个子语法元素;
所述指定位置为各个相邻的子语法元素之间的位置。
进一步地,所述第二拆分长度为16比特。
进一步地,所述指定标志位为1。
进一步地,所述语法元素包括以下至少一项:
保留字、用于指示在包围点云的三维空间体的位置、用于指示在包围点云的三维空间体的尺寸、几何量化参数、属性量化参数、用于指示是否去除重复点云的标志位、点云数量。
进一步地,所述用于指示在包围点云的三维空间体的位置的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的在x轴方向的偏移坐标、用于指示在包围点云的立方体的在y轴方向的偏移坐标、用于指示在包围点云的立方体的在z轴方向的偏移坐标;
和/或,
所述用于指示在包围点云的三维空间体的尺寸的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的宽度、用于指示在包围点云的立方体的深度、用于指示在包围点云的立方体的高度。
进一步地,所述至少一个语法元素被拆分成2个子语法元素。
进一步地,所述语法元素包括序列头信息和/或属性头信息中的语法元素。
进一步地,所述码流数据中包括:
保留字、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的低位、用于指示包围点云的立方体在z轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在z轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体的宽度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的高度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的深度的高位、指定标志位、用于指示包围点云的立方体的深度的低位、指定标志位、用于指示三维空间的立方体中点云的数量的高位、指定标志位、用于指示三维空间的立方体中点云的数量的低位。
本发明实施例中,数据解码设备可以获取码流数据,所述码流数据包括点云头信息,所述点云头信息中包括指定标志位,并根据所述码流数据中点云头信息中语法元素的二值化编码方法对所述码流数据进行解码,得到与所述码流数据对应的点云数据。通过这种实施方式,可以避免解码时进行去伪起始码的相关操作,提高了解码效率。
在本发明的实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例图5中描述的数据编码方法方式,或图6中描述的数据解码方法方式,也可实现图7所述本发明所对应实施例的数据编码设备,或图8所述本发明所对应实施例的数据解码设备,在此不再赘述。
所述计算机可读存储介质可以是前述任一项实施例所述的设备的内部存 储单元,例如设备的硬盘或内存。所述计算机可读存储介质也可以是所述设备的外部存储设备,例如所述设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述设备所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明部分实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (61)

  1. 一种数据编码方法,其特征在于,包括:
    获取待编码的点云数据;
    对所述点云数据进行编码得到码流数据,所述码流数据包括点云头信息;
    根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置;
    在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据。
  2. 根据权利要求1所述的方法,其特征在于,所述根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置,包括:
    根据所述点云头信息中的语法元素,确定两个相邻语法元素之间的位置为所述指定位置;
    所述在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据,包括:
    在所述两个相邻语法元素之间插入指定标志位,得到去伪码流数据。
  3. 根据权利要求1所述的方法,其特征在于,所述根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置,包括:
    根据所述点云头信息中的语法元素对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素;
    确定拆分后的各个相邻子语法元素之间的位置为所述指定位置;
    所述在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据,包括:
    在拆分后的各个相邻子语法元素之间插入指定标志位,得到去伪码流数据。
  4. 根据权利要求3所述的方法,其特征在于,所述根据所述点云头信息中的语法元素对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素,包括:
    根据所述点云头信息中语法元素的二值化编码方法对所述点云头信息中 的语法元素进行拆分,得到至少两个子语法元素。
  5. 根据权利要求4所述的方法,其特征在于,所述根据所述点云头信息中语法元素的二值化编码方法对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素,包括:
    当确定所述点云头信息中语法元素的二值化编码方法为变长编码时,根据第一拆分长度对所述点云头信息中的语法元素进行拆分,得到至少一个第一拆分长度的子语法元素。
  6. 根据权利要求5所述的方法,其特征在于,所述语法元素拆分后得到的子语法元素的长度均小于等于所述第一拆分长度。
  7. 根据权利要求5所述的方法,其特征在于,所述第一拆分长度为16比特。
  8. 根据权利要求4所述的方法,其特征在于,所述根据所述点云头信息中各个语法元素的二值化编码方法对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素,包括:
    当确定所述点云头信息中语法元素的二值化编码方法为定长编码时,根据指定拆分长度对第二拆分长度对所述点云头信息中的语法元素进行拆分,得到至少一个第二拆分长度的子语法元素。
  9. 根据权利要求5或8所述的方法,其特征在于,所述在拆分后的各个相邻子语法元素之间插入指定标志位,得到去伪码流数据,包括:
    在各个相邻的子语法元素之间插入指定标志位,得到去伪码流数据。
  10. 根据权利要求8所述的方法,其特征在于,所述第二拆分长度为16比特。
  11. 根据权利要求2-10任一项所述的方法,其特征在于,所述指定标志位 为1。
  12. 根据权利要求2-10任一项所述的方法,其特征在于,
    所述语法元素包括序列头信息和/或属性头信息中的语法元素。
  13. 根据权利要求12所述的方法,其特征在于,所述语法元素包括以下至少一项:
    保留字、用于指示在包围点云的三维空间体的位置、用于指示在包围点云的三维空间体的尺寸、几何量化参数、属性量化参数、用于指示是否去除重复点云的标志位、点云数量。
  14. 根据权利要求13所述的方法,其特征在于,所述用于指示在包围点云的三维空间体的位置的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的在x轴方向的偏移坐标、用于指示在包围点云的立方体的在y轴方向的偏移坐标、用于指示在包围点云的立方体的在z轴方向的偏移坐标;
    和/或,
    所述用于指示在包围点云的三维空间体的尺寸的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的宽度、用于指示在包围点云的立方体的深度、用于指示在包围点云的立方体的高度。
  15. 根据权利要求14所述的方法,其特征在于,所述至少一个语法元素被拆分成2个子语法元素。
  16. 根据权利要求14所述的方法,其特征在于,所述去伪码流数据中包括:
    保留字、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的低位、用于指示包围点云的立方体在z轴方向的偏移坐标的高位、指定标志位、用于指示 包围点云的立方体在z轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体的宽度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的高度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的深度的高位、指定标志位、用于指示包围点云的立方体的深度的低位、指定标志位、用于指示三维空间的立方体中点云的数量的高位、指定标志位、用于指示三维空间的立方体中点云的数量的低位。
  17. 一种数据解码方法,其特征在于,包括:
    获取码流数据,所述码流数据包括点云头信息,所述点云头信息中包括指定标志位,所述指定标志位用于防止伪起始码;
    根据所述码流数据中点云头信息中语法元素的二值化编码方法对所述码流数据进行解码,得到与所述码流数据对应的点云数据。
  18. 根据权利要求17所述的方法,其特征在于,所述根据所述码流数据中点云头信息中语法元素的二值化编码方法对所述码流数据进行解码,包括:
    根据所述码流数据中点云头信息中语法元素的二值化编码方法,确定所述点云头信息中的指定位置,所述指定标志位位于所述指定位置处;
    根据去除所述点云头信息的指定位置处的指定标志位后的码流数据进行解码。
  19. 根据权利要求18所述的方法,其特征在于,所述指定标志位位于所述头信息中相邻的两个语法元素之间;
    和/或,
    所述指定标志位位于所述头信息中一个语法元素之间,所述指定标志位将所述一个语法元素拆分成至少两个子语法元素。
  20. 根据权利要求19所述的方法,其特征在于,所述指定标志位将所述一个语法元素拆分成至少两个子语法元素,每个子语法元素的长度均小于等于第一拆分长度,所述第一拆分长度是根据所述语法元素的二值化编码方法确定 的。
  21. 根据权利要求17所述的方法,其特征在于,当所述点云头信息中语法元素的二值化编码方法为变长编码时,所述码流数据中的点云头信息中的各个语法元素根据第一拆分长度进行拆分,得到至少两个子语法元素;
    所述指定位置为各个相邻的子语法元素之间的位置。
  22. 根据权利要求21所述的方法,其特征在于,所述第一拆分长度为16比特。
  23. 根据权利要求17所述的方法,其特征在于,当所述点云头信息中语法元素的二值化编码方法为定长编码时,对所述码流数据中的点云头信息中的各个语法元素根据第二拆分长度进行拆分,得到至少两个子语法元素;
    所述指定位置为各个相邻的子语法元素之间的位置。
  24. 根据权利要求23所述的方法,其特征在于,所述第二拆分长度为16比特。
  25. 根据权利要求17-20任一项所述的方法,其特征在于,所述指定标志位为1。
  26. 根据权利要求17所述的方法,其特征在于,所述语法元素包括以下至少一项:
    保留字、用于指示在包围点云的三维空间体的位置、用于指示在包围点云的三维空间体的尺寸、几何量化参数、属性量化参数、用于指示是否去除重复点云的标志位、点云数量。
  27. 根据权利要求26所述的方法,其特征在于,所述用于指示在包围点云的三维空间体的位置的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的在x轴方向的偏移坐标、用于指示在包围点云的立方体的在 y轴方向的偏移坐标、用于指示在包围点云的立方体的在z轴方向的偏移坐标;
    和/或,
    所述用于指示在包围点云的三维空间体的尺寸的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的宽度、用于指示在包围点云的立方体的深度、用于指示在包围点云的立方体的高度。
  28. 根据权利要求27所述的方法,其特征在于,所述至少一个语法元素被拆分成2个子语法元素。
  29. 根据权利要求17-28任一项所述的方法,其特征在于,
    所述语法元素包括序列头信息和/或属性头信息中的语法元素。
  30. 根据权利要求17所述的方法,其特征在于,所述码流数据中包括:
    保留字、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的低位、用于指示包围点云的立方体在z轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在z轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体的宽度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的高度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的深度的高位、指定标志位、用于指示包围点云的立方体的深度的低位、指定标志位、用于指示三维空间的立方体中点云的数量的高位、指定标志位、用于指示三维空间的立方体中点云的数量的低位。
  31. 一种数据编码设备,其特征在于,包括:存储器和处理器,
    所述存储器,用于存储程序;
    所述处理器,用于调用所述程序,当所述程序被执行时,用于执行以下操 作:
    获取待编码的点云数据;
    对所述点云数据进行编码得到码流数据,所述码流数据包括点云头信息;
    根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置;
    在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据。
  32. 根据权利要求31所述的设备,其特征在于,所述处理器根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置时,具体用于:
    根据所述点云头信息中的语法元素,确定两个相邻语法元素之间的位置为所述指定位置;
    所述处理器在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据时,具体用于:
    在所述两个相邻语法元素之间插入指定标志位,得到去伪码流数据。
  33. 根据权利要求31所述的设备,其特征在于,所述处理器根据所述点云头信息中的语法元素,确定所述点云头信息中的指定位置时,具体用于:
    根据所述点云头信息中的语法元素对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素;
    确定拆分后的各个相邻子语法元素之间的位置为所述指定位置;
    所述处理器在所述点云头信息的指定位置插入指定标志位,得到去伪码流数据时,具体用于:
    在拆分后的各个相邻子语法元素之间插入指定标志位,得到去伪码流数据。
  34. 根据权利要求33所述的设备,其特征在于,所述处理器根据所述点云头信息中的语法元素对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素时,具体用于:
    根据所述点云头信息中语法元素的二值化编码方法对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素。
  35. 根据权利要求34所述的设备,其特征在于,所述处理器根据所述点云头信息中语法元素的二值化编码方法对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素时,具体用于:
    当确定所述点云头信息中语法元素的二值化编码方法为变长编码时,根据第一拆分长度对所述点云头信息中的语法元素进行拆分,得到至少一个第一拆分长度的子语法元素。
  36. 根据权利要求35所述的设备,其特征在于,所述语法元素拆分后得到的子语法元素的长度均小于等于所述第一拆分长度。
  37. 根据权利要求35所述的设备,其特征在于,所述第一拆分长度为16比特。
  38. 根据权利要求34所述的设备,其特征在于,所述处理器根据所述点云头信息中各个语法元素的二值化编码方法对所述点云头信息中的语法元素进行拆分,得到至少两个子语法元素时,具体用于:
    当确定所述点云头信息中语法元素的二值化编码方法为定长编码时,根据指定拆分长度对第二拆分长度对所述点云头信息中的语法元素进行拆分,得到至少一个第二拆分长度的子语法元素。
  39. 根据权利要求35或38所述的设备,其特征在于,所述处理器在拆分后的各个相邻子语法元素之间插入指定标志位,得到去伪码流数据时,具体用于:
    在各个相邻的子语法元素之间插入指定标志位,得到去伪码流数据。
  40. 根据权利要求38所述的设备,其特征在于,所述第二拆分长度为16比特。
  41. 根据权利要求32-40任一项所述的设备,其特征在于,所述指定标志位为1。
  42. 根据权利要求32-40任一项所述的设备,其特征在于,
    所述语法元素包括序列头信息和/或属性头信息中的语法元素。
  43. 根据权利要求42所述的设备,其特征在于,所述语法元素包括以下至少一项:
    保留字、用于指示在包围点云的三维空间体的位置、用于指示在包围点云的三维空间体的尺寸、几何量化参数、属性量化参数、用于指示是否去除重复点云的标志位、点云数量。
  44. 根据权利要求43所述的设备,其特征在于,所述用于指示在包围点云的三维空间体的位置的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的在x轴方向的偏移坐标、用于指示在包围点云的立方体的在y轴方向的偏移坐标、用于指示在包围点云的立方体的在z轴方向的偏移坐标;
    和/或,
    所述用于指示在包围点云的三维空间体的尺寸的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的宽度、用于指示在包围点云的立方体的深度、用于指示在包围点云的立方体的高度。
  45. 根据权利要求44所述的设备,其特征在于,所述至少一个语法元素被拆分成2个子语法元素。
  46. 根据权利要求44所述的设备,其特征在于,所述去伪码流数据中包括:
    保留字、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的低位、用于指示包围点云的立方体在z轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在z轴方向的偏移坐标的低位、指定标志位、用于指示包围 点云的立方体的宽度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的高度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的深度的高位、指定标志位、用于指示包围点云的立方体的深度的低位、指定标志位、用于指示三维空间的立方体中点云的数量的高位、指定标志位、用于指示三维空间的立方体中点云的数量的低位。
  47. 一种数据解码设备,其特征在于,包括:存储器和处理器,
    所述存储器,用于存储程序;
    所述处理器,用于调用所述程序,当所述程序被执行时,用于执行以下操作:
    获取码流数据,所述码流数据包括点云头信息,所述点云头信息中包括指定标志位,所述指定标志位用于防止伪起始码;
    根据所述码流数据中点云头信息中语法元素的二值化编码方法对所述码流数据进行解码,得到与所述码流数据对应的点云数据。
  48. 根据权利要求47所述的设备,其特征在于,所述处理器根据所述码流数据中点云头信息中语法元素的二值化编码方法对所述码流数据进行解码时,具体用于:
    根据所述码流数据中点云头信息中语法元素的二值化编码方法,确定所述点云头信息中的指定位置,所述指定标志位位于所述指定位置处;
    根据去除所述点云头信息的指定位置处的指定标志位后的码流数据进行解码。
  49. 根据权利要求48所述的设备,其特征在于,所述指定标志位位于所述头信息中相邻的两个语法元素之间;
    和/或,
    所述指定标志位位于所述头信息中一个语法元素之间,所述指定标志位将所述一个语法元素拆分成至少两个子语法元素。
  50. 根据权利要求49所述的设备,其特征在于,所述指定标志位将所述一个语法元素拆分成至少两个子语法元素,每个子语法元素的长度均小于等于第一拆分长度,所述第一拆分长度是根据所述语法元素的二值化编码方法确定的。
  51. 根据权利要求47所述的设备,其特征在于,当所述点云头信息中语法元素的二值化编码方法为变长编码时,所述码流数据中的点云头信息中的各个语法元素根据第一拆分长度进行拆分,得到至少两个子语法元素;
    所述指定位置为各个相邻的子语法元素之间的位置。
  52. 根据权利要求51所述的设备,其特征在于,所述第一拆分长度为16比特。
  53. 根据权利要求47所述的设备,其特征在于,当所述点云头信息中语法元素的二值化编码方法为定长编码时,对所述码流数据中的点云头信息中的各个语法元素根据第二拆分长度进行拆分,得到至少两个子语法元素;
    所述指定位置为各个相邻的子语法元素之间的位置。
  54. 根据权利要求53所述的设备,其特征在于,所述第二拆分长度为16比特。
  55. 根据权利要求47-50任一项所述的设备,其特征在于,所述指定标志位为1。
  56. 根据权利要求57所述的设备,其特征在于,所述语法元素包括以下至少一项:
    保留字、用于指示在包围点云的三维空间体的位置、用于指示在包围点云的三维空间体的尺寸、几何量化参数、属性量化参数、用于指示是否去除重复点云的标志位、点云数量。
  57. 根据权利要求56所述的设备,其特征在于,所述用于指示在包围点云的三维空间体的位置的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的在x轴方向的偏移坐标、用于指示在包围点云的立方体的在y轴方向的偏移坐标、用于指示在包围点云的立方体的在z轴方向的偏移坐标;
    和/或,
    所述用于指示在包围点云的三维空间体的尺寸的语法元素包括以下至少一个语法元素:用于指示在包围点云的立方体的宽度、用于指示在包围点云的立方体的深度、用于指示在包围点云的立方体的高度。
  58. 根据权利要求57所述的设备,其特征在于,所述至少一个语法元素被拆分成2个子语法元素。
  59. 根据权利要求47-58任一项所述的设备,其特征在于,
    所述语法元素包括序列头信息和/或属性头信息中的语法元素。
  60. 根据权利要求47所述的设备,其特征在于,所述码流数据中包括:
    保留字、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在x轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在y轴方向的偏移坐标的低位、用于指示包围点云的立方体在z轴方向的偏移坐标的高位、指定标志位、用于指示包围点云的立方体在z轴方向的偏移坐标的低位、指定标志位、用于指示包围点云的立方体的宽度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的高度的高位、指定标志位、用于指示包围点云的立方体的宽度的低位、指定标志位、用于指示包围点云的立方体的深度的高位、指定标志位、用于指示包围点云的立方体的深度的低位、指定标志位、用于指示三维空间的立方体中点云的数量的高位、指定标志位、用于指示三维空间的立方体中点云的数量的低位。
  61. 一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程 序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至30任一项所述方法。
PCT/CN2019/122209 2019-11-29 2019-11-29 一种数据编码、数据解码方法、设备及存储介质 WO2021103013A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2019/122209 WO2021103013A1 (zh) 2019-11-29 2019-11-29 一种数据编码、数据解码方法、设备及存储介质
CN201980094966.7A CN113678460B (zh) 2019-11-29 2019-11-29 一种数据编码、数据解码方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/122209 WO2021103013A1 (zh) 2019-11-29 2019-11-29 一种数据编码、数据解码方法、设备及存储介质

Publications (1)

Publication Number Publication Date
WO2021103013A1 true WO2021103013A1 (zh) 2021-06-03

Family

ID=76129893

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/122209 WO2021103013A1 (zh) 2019-11-29 2019-11-29 一种数据编码、数据解码方法、设备及存储介质

Country Status (2)

Country Link
CN (1) CN113678460B (zh)
WO (1) WO2021103013A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023169004A1 (zh) * 2022-03-11 2023-09-14 腾讯科技(深圳)有限公司 点云媒体的数据处理方法、装置、设备及介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023172703A1 (en) * 2022-03-09 2023-09-14 Innopeak Technology, Inc. Geometry point cloud coding

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130321393A1 (en) * 2012-05-31 2013-12-05 Microsoft Corporation Smoothing and robust normal estimation for 3d point clouds
CN109196559A (zh) * 2016-05-28 2019-01-11 微软技术许可有限责任公司 动态体素化点云的运动补偿压缩
CN109743581A (zh) * 2019-01-24 2019-05-10 上海国茂数字技术有限公司 编码端处理方法、解码端处理方法及防止伪起始码的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017140948A1 (en) * 2016-02-17 2017-08-24 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
CN108322742B (zh) * 2018-02-11 2019-08-16 北京大学深圳研究生院 一种基于帧内预测的点云属性压缩方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130321393A1 (en) * 2012-05-31 2013-12-05 Microsoft Corporation Smoothing and robust normal estimation for 3d point clouds
CN109196559A (zh) * 2016-05-28 2019-01-11 微软技术许可有限责任公司 动态体素化点云的运动补偿压缩
CN109743581A (zh) * 2019-01-24 2019-05-10 上海国茂数字技术有限公司 编码端处理方法、解码端处理方法及防止伪起始码的方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023169004A1 (zh) * 2022-03-11 2023-09-14 腾讯科技(深圳)有限公司 点云媒体的数据处理方法、装置、设备及介质

Also Published As

Publication number Publication date
CN113678460A (zh) 2021-11-19
CN113678460B (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
WO2020248187A1 (zh) 一种点云编码方法、点云解码方法及相关设备
US10187081B1 (en) Dictionary preload for data compression
US9532056B2 (en) Method for adaptive entropy coding of tree structures
US8497788B1 (en) Efficient techniques for aligned fixed-length compression
JP2022031735A (ja) ハイブリッドデータ圧縮および解凍のための方法、デバイス、およびシステム
US20090060047A1 (en) Data compression using an arbitrary-sized dictionary
WO2019153700A1 (zh) 编解码方法、装置及编解码设备
CN106202213B (zh) 一种fpga二进制文件压缩、解压方法及压缩、解压装置
JP5944510B2 (ja) 構文要素のコンテキスト−適応バイナリ算術符号化(Context−AdaptiveBinaryArithmeticCoding)の方法と装置
WO2021196029A1 (zh) 一种用于点云编码、解码的方法和设备
US20120166510A1 (en) Method for encoding floating-point data, method for decoding floating-point data, and corresponding encoder and decoder
JP2014532945A (ja) 予測位置復号
KR20160001652A (ko) 데이터 프로세싱 방법 및 디바이스
WO2022188848A1 (zh) 一种点云的属性熵编码和熵解码的方法及设备
WO2021103013A1 (zh) 一种数据编码、数据解码方法、设备及存储介质
CN112384950A (zh) 点云的编解码方法及装置
US9665590B2 (en) Bitmap compression for fast searches and updates
CN112514397A (zh) 点云的编解码方法和装置
CN112290953B (zh) 多道数据流的阵列编码装置和方法、阵列解码装置和方法
WO2024037091A1 (zh) 一种点云处理方法、装置及计算机设备、存储介质
WO2021046817A1 (zh) 点云数据的编解码方法、系统和存储介质
KR101883532B1 (ko) 반복적인 구조 발견 기반 3d 모델 압축의 비트스트림을 생성하기 위한 방법 및 장치
US20220005229A1 (en) Point cloud attribute encoding method and device, and point cloud attribute decoding method and devcie
WO2022188164A1 (zh) 点云属性解码方法和点云属性编码方法
WO2020220249A1 (zh) 一种数据编码、数据解码方法、设备及存储介质

Legal Events

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

Ref document number: 19954385

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

Country of ref document: EP

Kind code of ref document: A1