WO2020119487A1 - 点云的编解码方法及装置 - Google Patents

点云的编解码方法及装置 Download PDF

Info

Publication number
WO2020119487A1
WO2020119487A1 PCT/CN2019/122216 CN2019122216W WO2020119487A1 WO 2020119487 A1 WO2020119487 A1 WO 2020119487A1 CN 2019122216 W CN2019122216 W CN 2019122216W WO 2020119487 A1 WO2020119487 A1 WO 2020119487A1
Authority
WO
WIPO (PCT)
Prior art keywords
point cloud
subgroup
sub
subgroups
frame
Prior art date
Application number
PCT/CN2019/122216
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 BR112021011380-0A priority Critical patent/BR112021011380A2/pt
Priority to EP19895185.7A priority patent/EP3890324A4/en
Priority to CA3123110A priority patent/CA3123110A1/en
Publication of WO2020119487A1 publication Critical patent/WO2020119487A1/zh
Priority to US17/345,514 priority patent/US11961265B2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/88Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows

Definitions

  • This application relates to the field of point clouds, and in particular to a method and device for encoding and decoding point clouds.
  • Embodiments of the present application provide a method and device for encoding and decoding a point cloud, which is beneficial to improve the encoding efficiency of point cloud data.
  • an embodiment of the present application provides a point cloud encoding method, including:
  • the sub-group information includes the number M of the N-frame point cloud is divided into sub-groups and/or one or more of the M sub-groups.
  • Each sub-group includes frames of the point cloud Encode the sub-group information of the N-frame point cloud into the code stream; encode the N-frame point cloud according to the sub-group information of the N-frame point cloud.
  • the M subgroups are obtained by grouping N frame point clouds in an adaptive grouping manner.
  • the multi-frame point cloud in the N-frame point cloud is pre-divided to obtain a pre-divided subgroup; according to the feature information of the pre-divided subgroup, the pre-divided subgroup is determined to be one of the M subgroups ;
  • the feature information is used to characterize the occupancy map size of the point cloud in the pre-divided subgroup.
  • encoding the N-frame point cloud according to the N-frame point cloud subgroup information specifically includes: the N-frame point cloud sub-group information is used to decode the N-frame point cloud patch auxiliary information, and then The N frame point cloud is encoded according to the auxiliary information of the N frame point cloud patch.
  • the coding of N 0 , N 1 , ..., N M-1 and/or M into the code stream includes:
  • the coding of the sub-group information of the N-frame point cloud into the code stream further includes:
  • T and/or T of N 0 , N 1 , ..., N M-1 are encoded into the code stream, where T is greater than 0 and less than M-1.
  • the T pieces of the N 0 , N 1 ,..., N M-1 may refer to the number of frames of each of the M sub-groups in which T sub-groups consecutively include a point cloud.
  • N 0 , N 1 ,..., N M-1 may be encoded into the code stream by using a fixed-length encoding method or a variable-length encoding method.
  • the fixed-length encoding method specifically uses a fixed number of bits for encoding
  • the variable-length encoding method includes but is not limited to the arithmetic encoding method and the exponential Golomb encoding method.
  • the coding of the sub-group information of the N-frame point cloud into the code stream includes: generating one or more bit strings according to the number of frames of the point cloud in one or more of the M sub-groups, where , The length of the s-th bit string in one or more bit strings is the number of frames including the point cloud in the s-th sub group in one or more sub-groups; one or more bit strings are encoded into the code stream.
  • a bit string composed of N bits ie, M bit strings
  • N bits can be used for encoding, or arithmetic coding can be used for encoding.
  • one or more subgroups include the s-1th subgroup and the sth subgroup, where the value of the bit in the bit string corresponding to the s-1th subgroup is the same as the sth subgroup
  • the values of the bits in the corresponding bit string are different.
  • the value of the bit in the bit string corresponding to the s-1th subgroup is the first identifier
  • the value of the bit in the bit string corresponding to the sth subgroup is the second identifier.
  • the value of the bit in the bit string corresponding to the s+1th subgroup may be the first identification or the third identification, and the third identification is different from the first identification and the second identification.
  • the values of the bits in the bit string corresponding to each subgroup in one or more subgroups are the same. It should be noted that the values of the bits of the bit string corresponding to each subgroup are the same, which means that the values of all the bits in the bit string corresponding to each subgroup are the same.
  • a subgroup corresponds to a bit string
  • a bit of the bit string represents a point cloud frame in a subgroup, according to the number of bits in the bit string (that is, the length of the bit string)
  • the number of bits in the bit string that is, the length of the bit string
  • the values of all bits in the bit string are the same, and the bit values in the two bit strings corresponding to two adjacent subgroups in the division order are different Therefore, it can be distinguished that the two adjacent subgroups in the division order include the number of frames of the point cloud.
  • the encoding method further includes: encoding rotation angle information of one or more matching patches in the patch set of the first frame point cloud of the current subgroup into the code stream.
  • the rotation angle information includes specific rotation angle values or rotation angle indexes. For example, if the rotation angle of the patch is 0, it means that the patch does not rotate; if the rotation angle of the patch is 20, it means that the patch rotates by 20°. As another example, if the rotation angle index of the patch is 0, it means that the patch does not rotate; if the rotation angle index of the patch is 1, it means that the patch rotates by 15°; if the rotation angle index of the patch is 2, it means that the patch rotates by 30°.
  • fixed-length coding or variable-length coding can be used to write the rotation angle information into the code stream.
  • one or more matching patches in the patch set of the first frame point cloud of the current subgroup refers to a patch that finds a matching patch in the patch set of the reference frame of the first frame point cloud of the current subgroup .
  • the reference frame of the first frame point cloud in the current subgroup may be the point cloud in the previous subgroup of the current subgroup.
  • One or more matching patches in the patch set of the first frame point cloud of the current subgroup refers to a patch that finds a matching patch in the patch set of the reference frame of the first frame point cloud of the current subgroup.
  • an embodiment of the present application provides a point cloud decoding method, including:
  • the sub-group information includes the number of sub-groups of the N frame point cloud divided into M and/or one or more of the M sub-groups. Including the frame number of the point cloud; decoding the N frame point cloud according to the subgroup information.
  • decoding the N-frame point cloud according to the subgroup information includes: obtaining auxiliary information of the N-frame point cloud patch according to the subgroup information, and reconstructing the N-frame point cloud according to the auxiliary information of the N-frame point cloud patch.
  • parsing the subgroup information from the code stream includes: parsing the frame number and/or M of the point cloud in each of the M subgroups from the code stream, M is greater than or equal to 1 , Or; parse out the number of frames of the point cloud in each subgroup of M and M-1 subgroups from the code stream, M is greater than or equal to 1.
  • the frame number and/or M of the point cloud in each of the M subgroups are parsed from the code stream, including:
  • decoding the N-frame point cloud according to the subgroup information includes:
  • the target subgroup is the subgroups of the M subgroups other than the M-1 subgroup, M Greater than or equal to 1; decode the N-frame point cloud according to the number of frames in each of the M sub-groups including the point cloud.
  • part of the frames in the N-frame point cloud are adaptively grouped, and another part of the frames are grouped with a fixed frame length, so N 0 , N 1 ,..., N M can be parsed from the code stream T and/or T in -1 .
  • T of N 0 , N 1 ,..., N M-1 refers to the number of frames of each of the M sub-groups in which T sub-groups consecutively include a point cloud.
  • T and/or T of N 0 ,N 1 ,...,N M-1 are parsed from the code stream, M is obtained from N and N 0 ,N 1 ,...,N M-1
  • parsing the subgroup information from the code stream includes: parsing one or more bit strings from the code stream, where the length of the s-th bit string in the one or more bit strings It is the number of frames including the point cloud in the s-th subgroup in one or more subgroups; one or more subgroups correspond to one or more bit strings.
  • decoding the N-frame point cloud according to the sub-group information includes: acquiring one or more sub-groups in each sub-group including the point cloud according to the length of each bit string in the one or more bit strings Number of frames; determine the number of frames in each sub-group of M sub-groups including point clouds, where M sub-groups include one or more sub-groups; according to the number of frames in each sub-group of M sub-groups including point clouds decoding.
  • the length of each bit string in the multiple bit strings (ie, M bit strings) can be determined to include the point cloud in each of the M subgroups Number of frames.
  • the number of frames including a point cloud in each sub-group of M-1 sub-groups can be determined according to the length of each bit string in the M-1 bit strings. And the number of frames including the point cloud in each of the M-1 subgroups determines the number of frames including the point cloud in the target subgroup, where the M-1 subgroup corresponds to the M-1 bit string and the target subgroup is M Subgroups other than M-1 subgroups.
  • T bit strings When one or more bit strings are T bit strings, where T is greater than 0 and less than M-1, the frame including the point cloud in each of the T subgroups can be determined according to the length of each bit string in the T bit strings Number, T bit strings correspond to T subgroups.
  • one or more subgroups include the s-1th subgroup and the sth subgroup, where the value of the bit in the bit string corresponding to the s-1th subgroup is the same as the sth subgroup The values of the bits in the corresponding bit string are different.
  • the values of the bits in the bit string corresponding to each subgroup in one or more subgroups are the same.
  • the values of the bits in the bit string corresponding to each subgroup are the same means that the values of all the bits in the bit string corresponding to each subgroup are the same.
  • bit value of the bit string corresponding to the mth subgroup is the first identifier, when the 0th bit in the mth subgroup is the first identifier, and the nth bit is the value In the first identification, when the value of the n+1th bit is not the first identification, it is determined that the number of frames in the mth subgroup is n+1.
  • the first identifier is 0 or 1, for example.
  • the rotation angle information of one or more matching patches in the patch set of the first frame point cloud in the current subgroup is parsed from the code stream; according to one or The rotation angle information of multiple matching patches determines the rotation angle information of the matching patches in the patch set of the non-first frame point cloud in the current subgroup.
  • one or more matching patches in the patch set of the first frame point cloud of the current subgroup refers to a patch that finds a matching patch in the patch set of the reference frame of the first frame point cloud of the current subgroup.
  • the reference frame of the first frame point cloud in the current subgroup may be the point cloud in the previous subgroup of the current subgroup.
  • the non-first frame point cloud in the current subgroup refers to the point cloud in the current subgroup except the first frame.
  • the matching patch in the patch set of the non-first frame point cloud in the current subgroup means that there is a matching relationship with one or more matching patches in the patch set of the first frame point cloud in the current subgroup. Patch.
  • the rotation angle information includes specific rotation angle values or rotation angle indexes. For example, if the rotation angle of the patch is 0, it means that the patch does not rotate; if the rotation angle of the patch is 20, it means that the patch rotates by 20°. As another example, if the rotation angle index of the patch is 0, it means that the patch does not rotate; if the rotation angle index of the patch is 1, it means that the patch rotates by 15°; if the rotation angle index of the patch is 2, it means that the patch rotates by 30°.
  • the sub-group information of the N-frame point cloud to obtain the N-frame point cloud is grouped into the code stream by adaptive grouping, and decoded at the decoding end to obtain the sub-group information.
  • the adaptive grouping method fully considers the correlation of patches between consecutive multi-frame point clouds, so that the spatial consistency of the patches with matching relationships is fully guaranteed, and the coding efficiency of point clouds is improved.
  • the subgroup information obtained by adaptive grouping is used to guide the decoding end to correctly decode the point cloud data.
  • an embodiment of the present application provides another point cloud encoding method, including:
  • the current subgroup is obtained by grouping N frame point clouds in an adaptive grouping manner.
  • the non-first frame point cloud in the current subgroup refers to a point cloud in the current subgroup except for the first frame.
  • One or more matching patches in the patch set of the first frame point cloud of the current subgroup refers to a patch that finds a matching patch in the patch set of the reference frame of the first frame point cloud of the current subgroup.
  • the reference frame of the first frame point cloud in the current subgroup may be the point cloud in the previous subgroup of the current subgroup.
  • one or more matching patch rotation angle information in the patch set of the first frame point cloud of the current subgroup can be encoded into the code stream by using fixed-length or variable-length encoding.
  • the fixed-length coding method includes but is not limited to the fixed-bit coding method
  • the variable-length coding method includes but is not limited to the arithmetic coding method and the exponential Golomb coding method.
  • the rotation angle information includes specific rotation angle values or rotation angle indexes. For example, if the rotation angle of the patch is 0, it means that the patch does not rotate; if the rotation angle of the patch is 20, it means that the patch rotates by 20°. As another example, if the rotation angle index of the patch is 0, it means that the patch does not rotate; if the rotation angle index of the patch is 1, it means that the patch rotates by 15°; if the rotation angle index of the patch is 2, it means that the patch rotates by 30°.
  • an embodiment of the present application provides another point cloud decoding method, including:
  • Receive the code stream parse out the rotation angle information of one or more matching patches in the patch set of the first frame point cloud in the current subgroup from this code stream; according to one or more matches in the patch set of the first frame point cloud
  • the rotation angle information of the patch determines the rotation angle information of the matching patch in the patch set of the point cloud in the current subgroup; the rotation angle information of the matching patch of the point cloud in the current subgroup is used for the point cloud in the current subgroup To decode.
  • one or more matching patches in the patch set of the first frame point cloud of the current subgroup refers to a patch that finds a matching patch in the patch set of the reference frame of the first frame point cloud of the current subgroup.
  • the reference frame of the first frame point cloud in the current subgroup may be the point cloud in the previous subgroup of the current subgroup.
  • the non-first frame point cloud in the current subgroup refers to the point cloud except the first frame in the current subgroup.
  • the matching patch in the patch set of the non-first frame point cloud in the current subgroup means that there is a matching relationship with one or more matching patches in the patch set of the first frame point cloud in the current subgroup. Patch.
  • decoding the current subgroup includes, but is not limited to, rotation angle information of matching patches of the point cloud in the current subgroup, and may also include rotation angle information of non-matching patches of the point cloud in the current subgroup.
  • the rotation angle information includes specific rotation angle values or rotation angle indexes. For example, if the rotation angle of the patch is 0, it means that the patch does not rotate; if the rotation angle of the patch is 20, it means that the patch rotates by 20°. As another example, if the rotation angle index of the patch is 0, it means that the patch does not rotate; if the rotation angle index of the patch is 1, it means that the patch rotates by 15°; if the rotation angle index of the patch is 2, it means that the patch rotates by 30°.
  • the fixed-angle or variable-length decoding method can be used to decode the rotation angle information of one or more matching patches from the code stream.
  • the fixed-length decoding method includes but is not limited to the fixed-bit decoding method
  • the variable-length decoding method includes but is not limited to the arithmetic decoding method and the exponential Golomb decoding method.
  • embodiments of the present application provide another point cloud encoding method, including:
  • the target encoding method includes part or all of the point cloud encoding method described in the first aspect or the point cloud encoding described in the third aspect Method; encode the instruction information into the code stream.
  • an embodiment of the present application provides another point cloud decoding method, including:
  • Parse the code stream to obtain indication information used to indicate whether to decode the point cloud according to the target decoding method;
  • the target decoding method includes part or all of the point cloud encoding method described in the second aspect or the fourth aspect Point cloud coding method; when the instruction information is used to instruct to decode the point cloud according to the target decoding method, decode the point cloud according to the target decoding method.
  • an embodiment of the present application provides a point cloud encoding device, including:
  • An obtaining unit configured to obtain sub-group information of the N-frame point cloud, the sub-group information including the number M of the N-frame point cloud divided into sub-groups and/or each sub-group of one or more sub-groups of the M sub-groups Including the number of frames of the point cloud; the coding unit is used to encode the sub-group information of the N frame point cloud into the code stream; the coding unit is also used to encode the N frame point cloud according to the sub group information.
  • the encoding device further includes:
  • the grouping unit is used to divide the N-frame point cloud into M subgroups, wherein dividing the N-frame point cloud into M subgroups includes: pre-dividing the multi-frame point cloud in the N-frame point cloud to obtain the pre-divided sub-group Group; according to the feature information of the pre-divided sub-group, determine the pre-divided sub-group as one of the M sub-groups; the feature information is used to characterize the size of the point cloud occupancy map in the pre-divided sub-group.
  • the encoding unit in terms of encoding the sub-group information of the N-frame point cloud into the code stream, is specifically used to generate one according to the number of frames of the point cloud in one or more of the M sub-groups Or multiple bit strings, where the length of the s bit string in one or more bit strings is the number of frames including the point cloud in the s sub group in one or more sub groups; edit one or more bit strings Into the stream.
  • one or more subgroups include the s-1th subgroup and the sth subgroup, where the value of the bit in the bit string corresponding to the s-1th subgroup is the same as the sth subgroup The values of the bits in the corresponding bit string are different.
  • the values of the bits in the bit string corresponding to each subgroup in one or more subgroups are the same.
  • the encoding unit is further configured to: encode the rotation angle information of one or more matching patches in the patch set of the first frame point cloud of the current subgroup into the code stream.
  • an embodiment of the present application provides a point cloud decoding device, including:
  • the receiving unit is used to receive the code stream; the parsing unit is used to parse out the sub-group information from the code stream, and the sub-group information includes the number of N frame point clouds divided into sub-groups M and/or M sub-groups Each subgroup of one or more subgroups includes the number of frames of the point cloud; a decoding unit is used to decode the N frame point cloud according to the subgroup information.
  • the parsing unit is specifically configured to: parse out the number of frames and/or M of the point cloud in each of the M subgroups from the code stream, M is greater than or equal to 1, or; from the code stream The number of frames of the point cloud in each subgroup of M and M-1 subgroups is parsed out, M is greater than or equal to 1.
  • the decoding unit is specifically used to determine the number of frames of the point cloud in the target subgroup according to the number of frames of the point cloud in each of the N and M-1 subgroups, the target subgroup being M subgroups In the subgroups other than the M-1 subgroups, M is greater than or equal to 1; the N frame point cloud is decoded according to the number of frames in which each subgroup of the M subgroups includes the point cloud.
  • the parsing unit is specifically used to: parse one or more bit strings from the code stream, wherein the length of the s bit string in the one or more bit strings is one or more subgroups The number of frames of the point cloud is included in the s-th subgroup in the middle; one or more subgroups correspond to one or more bit strings.
  • the decoding unit is specifically configured to: obtain the number of frames of each subgroup including the point cloud in one or more subgroups according to the length of each bitstring in the one or more bitstrings; determine the M subgroups Each subgroup includes the number of frames of the point cloud, where the M subgroups include one or more subgroups; the N frame point cloud is decoded according to the number of frames in which each subgroup of the M subgroups includes the point cloud.
  • one or more subgroups include the s-1th subgroup and the sth subgroup, where the value of the bit in the bit string corresponding to the s-1th subgroup is the same as the sth subgroup The values of the bits in the corresponding bit string are different.
  • the values of the bits in the bit string corresponding to each subgroup in one or more subgroups are the same.
  • the parsing unit is further used to: parse out the rotation angle information of one or more matching patches in the patch set of the first frame point cloud in the current subgroup from the code stream;
  • the rotation angle information of one or more matching patches in the patch set determines the rotation angle information of matching patches in the patch set of the non-first frame point cloud in the current subgroup.
  • an embodiment of the present application provides another point cloud encoding device, including:
  • the obtaining unit is used to obtain rotation angle information of one or more matching patches in the patch set of the first frame point cloud of the current subgroup;
  • the encoding unit is used to encode the rotation angle information of one or more matching patches in the patch set of the first frame point cloud of the current subgroup into the code stream.
  • an embodiment of the present application provides another point cloud decoding device, including:
  • the receiving unit is used to receive the code stream
  • the decoding unit is used to parse out the rotation angle information of one or more matching patches in the patch set of the first frame point cloud in the current subgroup from the code stream;
  • a determining unit configured to determine the rotation angle information of the matching patch in the patch set of the non-first frame point cloud in the current subgroup according to the rotation angle information of one or more matching patches in the patch set of the first frame point cloud;
  • the rotation angle information of the matching patch of the point cloud in the current subgroup is used to decode the point cloud in the current subgroup.
  • an embodiment of the present application provides another point cloud encoding apparatus, including: a determining unit for determining indication information used to indicate whether to encode a point cloud according to a target encoding method; a target encoding method Including part or all of the point cloud coding method according to the first aspect or the point cloud coding method according to the third aspect;
  • the coding unit is used for coding the instruction information into the code stream.
  • an embodiment of the present application provides another point cloud decoding device, including:
  • the parsing unit is used to parse the code stream to obtain indication information used to indicate whether to decode the point cloud according to the target decoding method;
  • the target decoding method includes part or all of the point cloud coding method as described in the second aspect Or the point cloud coding method described in the fourth aspect;
  • the decoding unit is configured to decode the point cloud according to the target decoding method when the indication information is used to instruct to decode the point cloud according to the target decoding method.
  • a decoding device including: a memory and a processor; wherein the memory is used to store program code; the processor is used to call the program code to perform the first aspect and its possible design, Or any point cloud decoding method provided by the second aspect and its possible design.
  • an encoding device including: a memory and a processor; wherein the memory is used to store program code; the processor is used to call the program code to perform the point cloud encoding method provided in the third aspect.
  • a decoding device including: a memory and a processor; wherein the memory is used to store program code; the processor is used to call the program code to perform the point cloud encoding method provided in the fourth aspect.
  • the present application also provides a computer-readable storage medium, including program code, which when run on a computer, causes the computer to perform the first aspect and its possible design as described above, or the second aspect and its possible design provision Any kind of point cloud decoding method.
  • the present application also provides a computer-readable storage medium, including program code, which when run on a computer, causes the computer to execute the point cloud coding method provided in the third aspect.
  • the present application also provides a computer-readable storage medium, including program code, which, when run on a computer, causes the computer to execute the point cloud coding method provided in the fourth aspect.
  • FIG. 1 is a schematic block diagram of a point cloud decoding system that can be used in an example of an embodiment of the present application
  • FIG. 2 is a schematic block diagram of an example encoder that can be used in an embodiment of the present application
  • FIG. 3 is a schematic diagram of a point cloud, a patch of a point cloud, and an occupancy diagram of a point cloud that can be used in embodiments of the present application;
  • FIG. 4 is a schematic block diagram of a decoder that can be used in an example of an embodiment of the present application
  • FIG. 5 is a schematic flowchart of a method for encoding a point cloud provided by this application.
  • FIG. 6 is a schematic diagram of a correspondence between sliding windows, step sizes, and pre-divided subgroups provided by an embodiment of the present application;
  • FIG. 7 is a schematic flowchart of a method for determining a subgroup provided by an embodiment of the present application.
  • FIG. 8A is a schematic diagram of a process of determining a subgroup provided by an embodiment of the present application.
  • 8B is a schematic diagram of another process for determining a subgroup provided by an embodiment of the present application.
  • FIG. 9 is a schematic flowchart of another method for determining a subgroup provided by an embodiment of the present application.
  • FIG. 10 is a schematic diagram of a process of a method for determining a subgroup provided by an embodiment of the present application.
  • FIG. 11A is a schematic process diagram of a method for determining a subgroup based on FIG. 10 according to an embodiment of the present application;
  • FIG. 11B is a schematic process diagram of another method for determining a subgroup based on FIG. 10 according to an embodiment of the present application;
  • FIG. 12 is a schematic diagram of a relationship between a dichotomy method and a pre-divided subgroup provided by an embodiment of the present application;
  • FIG. 13 is a schematic flowchart of another method for determining a subgroup provided by an embodiment of the present application.
  • FIG. 14 is a schematic flowchart of another method for determining a subgroup provided by an embodiment of the present application.
  • 15 is a schematic flowchart of a method for decoding a point cloud provided by this application.
  • FIG. 16 is a schematic structural diagram of a point cloud encoding device provided by this application.
  • FIG. 17 is a schematic structural diagram of a point cloud decoding device provided by this application.
  • FIG. 18 is a schematic structural diagram of a point cloud encoding device provided by this application.
  • FIG. 19 is a schematic structural diagram of a device for decoding a point cloud provided by this application.
  • FIG. 20 is a schematic structural diagram of a point cloud encoding device provided by this application.
  • FIG. 21 is a schematic structural diagram of a point cloud decoding device provided in this application.
  • 22 is a schematic block diagram of an implementation manner of a decoding device according to an embodiment of the present application.
  • At least one (species) in the embodiments of the present application includes one (species) or a plurality (species).
  • Multiple (species) means two (species) or more than two (species).
  • at least one of A, B, and C includes the presence of A alone, B alone, A and B, A and C, B and C, and A, B, and C.
  • the term "and/or" in the embodiments of the present application is merely an association relationship describing an association object, and indicates that there may be three relationships, for example, A and/or B, which may indicate: A exists alone, and A and B, there are three cases of B alone.
  • character “/” in the embodiments of the present application generally indicates that the related objects before and after are in a “or” relationship.
  • the character "/” indicates division, such as A/B indicates A divided by B.
  • the terms “first” and “second” in the embodiments of the present application are used to distinguish different objects, and do not limit the order of the different objects.
  • FIG. 1 is a schematic block diagram of a point cloud decoding system 1 that can be used in an example of an embodiment of the present application.
  • the term "point cloud coding" or “coding” may generally refer to point cloud coding or point cloud decoding.
  • the encoder 100 of the point cloud decoding system 1 may encode the point cloud to be encoded according to any point cloud encoding method proposed in this application.
  • the decoder 200 of the point cloud decoding system 1 may decode the point cloud to be decoded according to the point cloud decoding method corresponding to the point cloud encoding method used by the encoder proposed in this application.
  • the point cloud decoding system 1 includes a source device 10 and a destination device 20.
  • the source device 10 generates encoded point cloud data. Therefore, the source device 10 may be referred to as a point cloud encoding device.
  • the destination device 20 may decode the encoded point cloud data generated by the source device 10. Therefore, the destination device 20 may be referred to as a point cloud decoding device.
  • Various implementations of source device 10, destination device 20, or both may include one or more processors and memory coupled to the one or more processors.
  • the memory may include, but is not limited to, random access memory (random access memory, RAM), read-only memory (read-only memory, ROM), electrically erasable programmable read-only memory (electrically erasable, programmable-read-only memory, EEPROM) ), flash memory, or any other medium that can be used to store the desired program code in the form of instructions or data structures accessible by the computer, as described herein.
  • random access memory random access memory
  • RAM read-only memory
  • read-only memory read-only memory
  • ROM read-only memory
  • electrically erasable programmable read-only memory electrically erasable, programmable-read-only memory, EEPROM
  • flash memory or any other medium that can be used to store the desired program code in the form of instructions or data structures accessible by the computer, as described herein.
  • Source device 10 and destination device 20 may include various devices, including desktop computers, mobile computing devices, notebook (eg, laptop) computers, tablet computers, set-top boxes, telephone handsets such as so-called “smart” phones, etc. Devices, televisions, cameras, display devices, digital media players, video game consoles, in-vehicle computers, or the like.
  • Link 30 may include one or more media or devices capable of moving the encoded point cloud data from source device 10 to destination device 20.
  • link 30 may include one or more communication media that enable source device 10 to send encoded point cloud data directly to destination device 20 in real time.
  • the source device 10 may modulate the encoded point cloud data according to a communication standard (eg, a wireless communication protocol), and may send the modulated point cloud data to the destination device 20.
  • the one or more communication media may include wireless and/or wired communication media, such as radio frequency (RF) spectrum or one or more physical transmission lines.
  • RF radio frequency
  • the one or more communication media may form part of a packet-based network, such as a local area network, a wide area network, or a global network (eg, the Internet).
  • the one or more communication media may include routers, switches, base stations, or other devices that facilitate communication from the source device 10 to the destination device 20.
  • the encoded data may be output from the output interface 140 to the storage device 40.
  • the encoded point cloud data can be accessed from the storage device 40 through the input interface 240.
  • the storage device 40 may include any of a variety of distributed or locally accessed data storage media, such as a hard disk drive, a Blu-ray disc, a digital versatile disc (DVD), a compact disc (read-only disc-read) only memory (CD-ROM), flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded point cloud data.
  • the storage device 40 may correspond to a file server or another intermediate storage device that may hold the encoded point cloud data generated by the source device 10.
  • the destination device 20 may access the stored point cloud data from the storage device 40 via streaming or download.
  • the file server may be any type of server capable of storing encoded point cloud data and transmitting the encoded point cloud data to the destination device 20.
  • Example file servers include network servers (for example, for websites), file transfer protocol (FTP) servers, network attached storage (NAS) devices, or local disk drives.
  • the destination device 20 can access the encoded point cloud data through any standard data connection, including an Internet connection.
  • This may include a wireless channel (eg, Wi-Fi connection), a wired connection (eg, digital subscriber line (DSL), cable modem, etc.), or a coded point cloud suitable for accessing storage on a file server A combination of both of the data.
  • the transmission of the encoded point cloud data from the storage device 40 may be streaming transmission, download transmission, or a combination of both.
  • the point cloud decoding system 1 illustrated in FIG. 1 is only an example, and the technology of the present application can be applied to point cloud decoding (eg, point cloud decoding) that does not necessarily include any data communication between the point cloud encoding device and the point cloud decoding device Cloud coding or point cloud decoding) device.
  • data is retrieved from local storage, streamed on the network, and so on.
  • the point cloud encoding device may encode the data and store the data to the memory, and/or the point cloud decoding device may retrieve the data from the memory and decode the data.
  • encoding and decoding are performed by devices that do not communicate with each other but only encode data to and/or retrieve data from memory and decode the data.
  • the source device 10 includes a data source 120, an encoder 100 and an output interface 140.
  • the output interface 140 may include a regulator/demodulator (modem) and/or a transmitter (or referred to as a transmitter).
  • the data source 120 may include a point cloud capture device (eg, a camera), a point cloud archive containing previously captured point cloud data, a point cloud feed interface to receive point cloud data from a point cloud content provider, and/or For computer graphics systems that generate point cloud data, or a combination of these sources of point cloud data.
  • the encoder 100 may encode point cloud data from the data source 120.
  • the source device 10 sends the encoded point cloud data directly to the destination device 20 via the output interface 140.
  • the encoded point cloud data may also be stored on storage device 40 for later access by destination device 20 for decoding and/or playback.
  • the destination device 20 includes an input interface 240, a decoder 200 and a display device 220.
  • input interface 240 includes a receiver and/or a modem.
  • the input interface 240 may receive the encoded point cloud data via the link 30 and/or from the storage device 40.
  • the display device 220 may be integrated with the destination device 20 or may be external to the destination device 20. In general, the display device 220 displays decoded point cloud data.
  • the display device 220 may include various display devices, for example, a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or other types of display devices.
  • LCD liquid crystal display
  • OLED organic light-emitting diode
  • the encoder 100 and the decoder 200 may each be integrated with an audio encoder and decoder, and may include an appropriate multiplexer-multiplexer- demultiplexer (MUX-DEMUX) unit or other hardware and software to handle the encoding of both audio and video in a common data stream or separate data streams.
  • MUX-DEMUX multiplexer-multiplexer- demultiplexer
  • the MUX-DEMUX unit may conform to the ITU H.223 multiplexer protocol, or other protocols such as user datagram protocol (UDP).
  • the encoder 100 and the decoder 200 may each be implemented as any one of various circuits such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (applications) specific integrated circuit (ASIC), field-programmable gate array (FPGA), discrete logic, hardware, or any combination thereof.
  • DSPs digital signal processors
  • ASIC application specific integrated circuits
  • FPGA field-programmable gate array
  • the device may store the instructions for the software in a suitable non-volatile computer-readable storage medium, and may use one or more processors to execute the instructions in hardware
  • Any of the foregoing including hardware, software, a combination of hardware and software, etc.
  • Each of the encoder 100 and the decoder 200 may be included in one or more encoders or decoders, any of which may be integrated as a combined encoder/decoder in the corresponding device Part of the decoder (codec).
  • This application may generally refer to the encoder 100 as another device that “signals” or “sends” certain information to, for example, the decoder 200.
  • the terms “signaling” or “sending” may generally refer to the transmission of syntax elements and/or other data used to decode compressed point cloud data. This transfer can occur in real time or almost real time. Alternatively, this communication may occur after a period of time, for example, may occur when the syntax element is stored in the encoded bitstream to a computer-readable storage medium at the time of encoding, and the decoding device may then store the syntax element to this medium At any time.
  • FIG. 2 it is a schematic block diagram of an encoder 100 that can be used in an example of an embodiment of the present application.
  • Fig. 2 takes the MPEG (moving picture, expert, group) point cloud compression (PCC) coding framework as an example for illustration.
  • the encoder 100 may include a patch information generation module 101, a packaging module 102, a depth map generation module 103, a texture map generation module 104, a first filling module 105, an image or video-based encoding module 106, an occupation The graph encoding module 107, the auxiliary information encoding module 108, the multiplexing module 109, and the like.
  • the encoder 100 may further include a point cloud filtering module 110, a second filling module 111, a point cloud reconstruction module 112, and the like. among them:
  • the patch information generation module 101 is used to divide a frame of point cloud into a plurality of patches by a certain method, and obtain relevant information of the generated patch.
  • patch refers to a set of points in a frame of point cloud, usually a connected area corresponds to a patch.
  • the relevant information of the patch may include but not limited to at least one of the following information: the number of patches divided by the point cloud, the position information of each patch in three-dimensional space, the index of the normal coordinate axis of each patch, each The depth map generated by projecting a patch from three-dimensional space to two-dimensional space, the size of the depth map of each patch (such as the width and height of the depth map), and the occupancy map generated by projecting each patch from three-dimensional space to two-dimensional space.
  • the part of the relevant information such as the number of patches divided by the point cloud, the index of the normal coordinate axis of each patch, the size of the depth map of each patch, the location information of each patch in the point cloud, each The size information of the patch's occupancy map, etc., may be sent as auxiliary information to the auxiliary information encoding module 108 for encoding (ie, compression encoding).
  • the occupancy map of each patch can be sent to the packaging module 102 for packaging. Specifically, first obtain the global matching patch of the point cloud based on the method of obtaining the global matching patch described in this application, and prioritize the global packaging of the point cloud for each frame when packaging patch, and then package the non-global matching patch to get the occupancy map of the point cloud.
  • the specific location information of each patch in the point cloud occupancy map and the depth map of each patch, etc. can be sent to the depth map generation module 103.
  • the occupancy map of the point cloud can be filled in by the second filling module 111 and sent to the occupancy map encoding module 107 for encoding.
  • the occupancy map of the point cloud can be used to guide the depth map generation module 103 to generate the depth map of the point cloud and the guidance texture map generation module 104 to generate the texture map of the point cloud.
  • FIG. 3 it is a schematic diagram of a point cloud, a patch of a point cloud, and an occupancy map of a point cloud applicable to the embodiments of the present application.
  • (a) in FIG. 3 is a schematic diagram of a frame of point cloud
  • (b) in FIG. 3 is a schematic diagram of a patch of the point cloud obtained based on (a) in FIG. 3
  • (c) in FIG. 3 is A schematic diagram of the occupancy map of the point cloud obtained by packaging the occupancy map of each patch obtained by mapping each patch shown on (b) in FIG. 3 onto a two-dimensional plane.
  • the depth map generation module 103 is used to generate a depth map of the point cloud based on the occupancy map of the point cloud, the occupancy map of each patch of the point cloud and depth information, and send the generated depth map to the first filling module 105 To fill blank pixels in the depth map to obtain a filled depth map.
  • the texture map generation module 104 is used to generate a texture map of the point cloud according to the occupancy map of the point cloud, the occupancy map of each patch of the point cloud and texture information, and send the generated texture map to the first filling module 105 To fill the blank pixels in the texture map to obtain a filled texture map.
  • the filled depth map and the filled texture map are sent by the first filling module 105 to the image or video-based encoding module 106 to perform image or video-based encoding.
  • the image or video-based encoding module 106, occupancy map encoding module 107, and auxiliary information encoding module 108 send the resulting encoding result (ie, code stream) to the multiplexing module 109 to merge into one code stream.
  • the code stream may be sent to the output interface 140.
  • the encoding result (ie, code stream) obtained by the image or video-based encoding module 106 is sent to the point cloud reconstruction module 112 for point cloud reconstruction to obtain a reconstructed point cloud (ie, the reconstructed point cloud) Point cloud geometry information).
  • a reconstructed point cloud ie, the reconstructed point cloud
  • Point cloud geometry information Specifically, perform video decoding on the encoded depth map obtained by the image or video encoding module 106 to obtain a decoded depth map of the point cloud, and use the decoded depth map, the occupancy map of the point cloud, and auxiliary information of each patch, Obtain the reconstructed point cloud geometry information.
  • the geometric information of the point cloud refers to the coordinate values of the points in the point cloud (for example, each point in the point cloud) in three-dimensional space.
  • the point cloud reconstruction module 112 may also send the texture information of the point cloud and the reconstructed point cloud geometry information to the coloring module, the coloring module is used to color the reconstructed point cloud to obtain the reconstructed point cloud Texture information.
  • the texture map generation module 104 may also generate a texture map of the point cloud based on information obtained by filtering the reconstructed point cloud geometric information via the point cloud filter module 110.
  • FIG. 4 it is a schematic block diagram of a decoder 200 that can be used in an example of an embodiment of the present application.
  • the decoder 200 may include a demultiplexing module 201, an image or video-based decoding module 202, an occupancy graph decoding module 203, an auxiliary information decoding module 204, a point cloud geometric information reconstruction module 205, a point Cloud filtering module 206 and point cloud texture information reconstruction module 207. among them:
  • the demultiplexing module 201 is used to send the input code stream (ie, the combined code stream) to the corresponding decoding module. Specifically, the code stream containing the encoded texture map and the coded depth map are sent to the image or video-based decoding module 202; the code stream containing the encoded occupancy map is sent to the occupancy map decoding module 203 , The code stream containing the encoded auxiliary information is sent to the auxiliary information decoding module 204.
  • the occupancy graph decoding module 203 is used to decode the received code stream containing the encoded occupancy graph, and send the decoded occupancy graph information to the geometric information reconstruction module 205 of the point cloud.
  • the auxiliary information decoding module 204 is configured to decode the received encoded auxiliary information, and send the decoded information indicating the auxiliary information to the geometric information reconstruction module 205 of the point cloud.
  • the geometric information reconstruction module 205 of the point cloud is configured to reconstruct the geometric information of the point cloud according to the received occupancy map information and auxiliary information. After the geometric information of the reconstructed point cloud is filtered by the point cloud filtering module 206, it is sent to the texture information reconstruction module 207 of the point cloud.
  • the point cloud texture information reconstruction module 207 is configured to reconstruct the point cloud texture information to obtain a reconstructed point cloud.
  • the decoder 200 shown in FIG. 4 is only an example, and in specific implementation, the decoder 200 may include more or fewer modules than those shown in FIG. 4. This embodiment of the present application does not limit this.
  • the encoder first divides the point cloud to be coded (that is, the current frame or the current frame point cloud) into several patches according to certain criteria, and these patches do not overlap each other. Then, each patch is projected from the three-dimensional space to the two-dimensional plane to obtain a two-dimensional image (that is, the patch occupancy map). Next, arrange all patch occupancy maps (or patch occupancy maps after reduced resolution) closely on a two-dimensional image according to a certain rule to obtain the current frame occupancy map. This method of arranging patch occupancy graphs is called packing. Subsequently, the current frame depth map and the current frame texture map are generated according to the packing order.
  • the current frame depth map is a two-dimensional image generated by projecting the depth of each patch in the order of packing.
  • the current frame texture map is a two-dimensional image generated by projecting the texture map of each patch in the order of packing.
  • the current frame occupancy map is a binary two-dimensional image used to indicate whether each pixel position of the two-dimensional image is occupied by a point in the point cloud.
  • the resolution of the current frame occupancy map is lower than the resolution of the current frame depth map and the current frame texture map.
  • FIG. 5 is a schematic flowchart of a method for encoding a point cloud according to an embodiment of the present application. As shown in Figure 5, the method includes:
  • the sub-group information includes the number M of the N-frame point cloud divided into sub-groups and/or one or more of the M sub-groups.
  • Each sub-group includes a point cloud Number of frames.
  • the M subgroups are obtained by grouping N frame point clouds, and the grouping method may be an adaptive grouping method.
  • the multi-frame point cloud in the N-frame point cloud is pre-divided to obtain a pre-divided subgroup; according to the feature information of the pre-divided subgroup, the pre-divided subgroup is determined to be one of the M subgroups ; The feature information is used to characterize the occupancy map size of the point cloud in the pre-divided subgroup.
  • the size information of the point cloud occupancy map may be the area, height or width of the point cloud occupancy map.
  • the following uses the point cloud occupancy map size information as the area of the occupancy map as an example for explanation. I will not repeat them below.
  • Any subgroup into which the N-frame point cloud is divided may contain one or more frame point clouds.
  • the number of frames of the point cloud included in different subgroups may be equal or different.
  • the embodiment of the present application does not limit the method used for pre-division.
  • the sliding window method or the dichotomy method may be used to pre-divide the N-frame point cloud.
  • the occupancy graph size of the point cloud in the pre-divided sub-groups may be determined based on the global matching packaging algorithm or based on other packaging algorithms such as anchor packaging algorithm.
  • the characteristic information of the pre-divided subgroup may be information directly or indirectly used to characterize the size of the occupancy map of the point cloud in the pre-divided subgroup.
  • the characteristic information may include at least one of the following information 1 to information 3:
  • the size of the global occupancy graph of the pre-divided subgroups can be characterized by the product (ie, the area) of the height and weight of the global occupancy map of the pre-divided subgroup.
  • the size of the global occupancy map of the pre-divided sub-groups can be determined by the global Characterized by the height of the occupancy map.
  • the size of the pre-divided subgroup global occupancy map can be determined by the global preoccupation of the pre-divided subgroups Characterize the width of the graph. Since the size of the pre-divided subgroup's global occupancy map defines the minimum size of the occupancy map of each frame point cloud in the pre-divided subgroup, the pre-divided subgroup can be indirectly characterized by the size of the pre-divided subgroup's global occupancy map The size of the occupancy map of the point clouds in the group.
  • the occupancy map size of the point cloud in the pre-divided subgroup such as the occupancy map size of the point cloud in one or more frames (such as all frames) in the pre-divided subgroup.
  • the size of the occupancy map of the point cloud in the pre-divided subgroup can be characterized by the product (ie, the area) of the height and width of the occupancy map of the point cloud in the pre-divided subgroup.
  • the width of the obtained occupancy maps of different point clouds is equal during the process of determining a subgroup
  • the size of the occupancy map of the point cloud in the pre-divided subgroup can be determined by the points in the pre-divided subgroup Characterized by the height of the cloud occupancy map.
  • the occupancy map size of the point cloud in the pre-divided subgroup can be determined by the point cloud in the pre-divided subgroup Characterize the width of the occupancy graph.
  • Information 2 is information directly used to characterize the size of the occupancy map of the point cloud in the pre-divided subgroup.
  • the union patch of the pre-divided subgroup occupies the area of the graph. It can be known from the above description that there can be multiple union patch occupancy graphs of pre-divided subgroups.
  • the area occupied by the pre-divided subgroup merge patch may be the area of one or more (eg, all) merged patches of the predivided subgroup. Since the area (such as the total area) of the pre-divided subgroup merge patch map can reflect the area of the point cloud occupancy map in the predivided subgroup to a certain extent, the pre-divided subgroup union can be used The area (such as the total area) of the patch occupied map indirectly characterizes the size of the occupied map of the point cloud in the pre-divided subgroup.
  • pre-divide the multi-frame point cloud in the N-frame point cloud to obtain a pre-divided subgroup; according to the feature information of the pre-divided subgroup, determine that the pre-divided subgroup is one of the M subgroups
  • the group may include the following steps S101-1 to S101-2:
  • the point cloud in the jth frame is the first point cloud in the point cloud that has not been grouped; i ⁇ 1, i is an integer; j ⁇ 1, j is an integer; the i-th pre-divided subgroup includes the points from the jth frame One or more frame point clouds where the cloud starts.
  • S101-2 According to the characteristic information of the i-th pre-divided subgroup, determine the i-th pre-divided subgroup as a subgroup.
  • the embodiment of the present application supports the technology of determining the next subgroup based on the order of the point clouds in the point cloud group to be encoded, in the case of determining a subgroup included in the point cloud group to be encoded Program.
  • one or more pre-divisions are usually required (such as one or more sliding windows, or one or more dichotomy), and each pre-division can determine a pre-division sub group.
  • the above S101-1 is a specific implementation of "pre-dividing the multi-frame point clouds in the point cloud group to be coded to obtain pre-divided sub-groups" in S101.
  • the above S101-2 is a specific implementation manner of “determining the pre-divided subgroup as one of a plurality of subgroups according to the feature information of the pre-divided subgroup” in S101.
  • One sliding window can circle one or more frames of point clouds.
  • the embodiments of the present application do not exclude the case that "when i ⁇ 1, the frame number of the point cloud circled by the i-th sliding window is equal to the step size adopted by the i-th sliding window.” In this case, a person of ordinary skill in the art Based on the terminology introduction below, it can reasonably be inferred to get the corresponding term applicable to this situation without creative efforts.
  • the steps used in different sliding windows can be equal or unequal.
  • the i-th sliding window is a process of sliding i steps from the first frame point cloud in the point cloud of the point cloud group to be coded.
  • the t-th step in the i steps The length refers to the step size used for the t-th sliding window, 1 ⁇ t ⁇ i, and t is an integer. It can be understood that, generally, when i ⁇ 2, the i-th sliding window can be regarded as: starting from the last frame point cloud of the point cloud group to be encoded, sliding a step size, the step size is Refers to the step size of the i-th sliding window.
  • the i-th pre-divided subgroup is a set of point clouds delineated by the first to i-th sliding windows.
  • the number of frames of the point cloud included in the i-th pre-divided sub-group is equal to the sum of the steps used in the first to i-th sliding windows plus one.
  • the point cloud group to be encoded includes point clouds 1 to 32.
  • a rectangular box in FIG. 6 represents a frame of point cloud, and the number in the rectangular box represents the number of the point cloud.
  • the step size used for each sliding window is 3, that is, sliding a window can delimit 3 frames of point clouds; and the divided subgroups are subgroup 1 and subgroup 2, and subgroup 1 is a set of point clouds 1 to 4
  • the subgroup 2 is a set of point clouds 5.
  • the point cloud delineated after the first sliding window is executed starting from the point cloud 6 is the point cloud 6-9.
  • the obtained first pre-divided subgroup It is a collection of point clouds 6-9.
  • Performing the second sliding window with the point cloud 6 as the starting point means that the last frame of the point cloud (ie, point cloud 9) circled by the first sliding window starts to slide by one step. Therefore, after the second sliding window
  • the delineated point clouds are point clouds 10-12.
  • the obtained second pre-divided subgroup is a set of point clouds 6-12.
  • the initial value of i is all 1.
  • the i-th sliding window described in the embodiments of the present application refers to the i-th sliding window in the process of determining a subgroup.
  • the i-th pre-divided subgroup refers to The ith pre-divided subgroup in the process of determining a subgroup.
  • the description is unified, and will not be described in detail below.
  • Embodiment 1 uses a specific example to describe a method for determining a subgroup of a point cloud group to be coded when implementing a pre-divided method using a sliding window method provided by an embodiment of the present application. For details, refer to the following Embodiment 1 or Embodiment 2.
  • FIG. 7 it is a schematic flowchart of a method for determining a subgroup provided by an embodiment of the present application.
  • the method shown in Figure 7 includes the following steps:
  • S201 Starting from the point cloud of the jth frame, slide the window for the first time to obtain the first pre-divided subgroup. Specifically, the set of point clouds enclosed by the first sliding window is regarded as the first pre-divided group.
  • the point cloud of the jth frame is the first point cloud in the point cloud that has not been grouped in the point cloud group to be encoded.
  • J is the number of frames of the point cloud included in the point cloud group to be encoded.
  • j is equal to 1.
  • j is equal to the frame of the point cloud included in the first to i-1 subgroups Add 1 to the sum of the numbers.
  • S202 Determine whether the feature information of the first pre-divided subgroup meets a preset condition.
  • S203 Use the first frame point cloud in the first pre-divided subgroup as the first subgroup.
  • the subgroup 2 is a set consisting of 1 frame of point clouds, it can be known that: in the process of determining subgroup 2, the first pre-divided subgroup obtained (that is, composed of point clouds 5-8 Set) does not meet the preset conditions.
  • S204 Sliding the window at the i+1th time to obtain the i+1th pre-divided subgroup. Specifically, the set of point clouds enclosed by the first to i+1th sliding windows is regarded as the i+1th pre-divided group.
  • i ⁇ 1, i is an integer.
  • the initial value of i is 1.
  • S205 Determine whether the feature information of the i+1th pre-divided subgroup meets the preset condition.
  • S207 Determine the i-th pre-divided subgroup as a subgroup.
  • S204 may be replaced with: the i-th sliding window to obtain the i-th pre-divided subgroup. i ⁇ 2, i is an integer. The initial value of i is 2.
  • S205 can be replaced by: judging whether the characteristic information of the i-th pre-divided subgroup meets the preset condition;
  • S206 can be replaced by: assigning i+1 to i;
  • S207 can be replaced by: determining the i-1 Pre-divided into subgroups.
  • the point cloud of the jth frame is specifically the point cloud 6. If the feature information of the second pre-divided subgroup meets the preset condition, execute the third sliding window to obtain the third pre-divided subgroup; if the feature information of the third pre-divided subgroup does not meet the preset condition, then Let the second pre-divided subgroup (ie, the set of point clouds 6-12) be subgroup 3.
  • the subgroup 1 is a set of 4 frame point clouds, it can be known that: in the process of determining subgroup 1, the obtained The first pre-divided subgroup (that is, the set composed of point clouds 1 to 4) satisfies the preset condition, and the obtained second pre-divided subgroup (that is, the set composed of point clouds 1 to 7) does not satisfy the pre- Set conditions.
  • the steps used in different sliding windows may be equal or not.
  • step i 1 times a sliding window used length greater than or equal to the time step i 2 sliding window used 1 ⁇ i 1 ⁇ i 2 ⁇ i, i 1 and i 2 are integers. That is to say, the embodiment of the present application supports the technical solution that the step size used to execute the sliding window later is greater than or equal to the step size used to execute the sliding window in the process of determining a subgroup. specific:
  • the step size used for each sliding window is equal, that is, the window is slid with a fixed step size.
  • the fixed step size may be 1, so that the point cloud groups to be coded are grouped based on the point cloud granularity, which helps to make the grouping result more accurate.
  • the fixed step size may also be a value greater than 1. Since the feature similarity of continuous multi-frame point clouds in a point cloud group to be encoded, such as GOF, is high, when the step size is large, the computational complexity in the grouping process can be reduced.
  • the steps taken by the sliding window at least twice are not equal, and the steps taken by the sliding window executed later are greater than or equal to the steps taken by the sliding window executed before.
  • the window is slid with an unfixed step. In this way, by choosing an appropriate step size, it helps to balance the computational complexity in the grouping process and the accuracy of the grouping result, thereby helping to improve the overall performance of the grouping, which in turn helps to improve the coding performance.
  • the step size N[i+1] used in the sliding window of the i+1th time is obtained; where N[i] is the ith time
  • the embodiments of the present application are not limited to this.
  • step size used in the sliding windows of different times is a fixed step size, and if it is not a fixed step size, the method for determining the step size can be predefined.
  • S201 to S207 can be considered as a general method for determining a subgroup in the point cloud to be encoded. In actual implementation, the following special situations may exist:
  • Case 1 According to the description in S201 to S207, when the characteristic information of the i-th pre-divided sub-group satisfies the condition, the i+1th sliding window needs to be executed. However, at this time, there may be no remaining unenclosed point clouds in the point cloud group to be encoded, that is, the last frame point cloud included in the i-th pre-divided subgroup is the last frame in the point cloud group to be encoded Point cloud. In this case, it can be determined that the i-th pre-divided subgroup is the last subgroup of the point cloud to be encoded.
  • the point cloud group to be encoded includes point clouds 1 to 32, and the divided subgroups are subgroups 1 to 6, then, in the process of determining subgroup 7, if the third pre-divided subgroup If the feature information of the group satisfies the preset condition, then according to the description in S201-207 above, the fourth pre-divided sub-group needs to be obtained.
  • the third pre-divided sub-group ie, the set of point clouds 23-32) can be used as the sub-group 7.
  • Case 2 In the process of executing the i+1th sliding window, there may be a step size of the i+1th sliding window that is greater than the number of frames of the point cloud that have not been delineated for the point cloud group to be encoded, in this case
  • the number of frames of the point cloud included in the i-th pre-divided subgroup and the point cloud of the point cloud group to be coded that has not been circled can be used as the i+1th pre-divided sub-group.
  • the point cloud group to be encoded includes point clouds 1 to 32, and the divided subgroups are subgroups 1 to 6, then, in the process of determining subgroup 7, if the third pre-divided subgroup If the feature information of the group satisfies the preset condition, then according to the description in S201-207 above, the fourth pre-divided sub-group needs to be obtained.
  • the step size (ie 3) used in the fourth sliding window is greater than the number of frames (ie 2) of the point cloud group to be coded without remaining unbounded point clouds (ie point clouds 31-32), so , Point clouds 21-33 can be used as the fourth pre-divided subgroup.
  • Embodiment 2 differs from Embodiment 1 in that when i ⁇ 2, if the feature information of the i-th pre-divided subgroup meets the preset condition, and the feature information of the i+1-th pre-divided sub-group does not meet the preset Condition, then, with a smaller step size, regain the i+1th pre-divided group.
  • This embodiment is applied to a scenario where the step size used when obtaining the i+1th pre-divided subgroup is greater than 1.
  • the flowchart of the method provided in this embodiment may be as shown in FIG. 9. Specifically, S207 in Embodiment 1 may be replaced with the following steps S207A to S207C.
  • the second step is used to obtain the i+1th pre-divided subgroup.
  • the second step is smaller than the first step.
  • the first step is the step used when obtaining the i+1th pre-divided subgroup .
  • the process of reacquiring the i+1th pre-divided subgroup can be understood as: returning (or rewinding) to the last frame point cloud of the i-th predivided subgroup, and starting from the last frame, The process of sliding the second step.
  • the preset step size (such as 1 Etc.)
  • the feature information of the i+1th pre-divided subgroup newly retrieved once does not satisfy the preset condition, it is determined that the i-th pre-divided subgroup is a subgroup.
  • the feature information of the first pre-divided subgroup that is, the set consisting of point clouds 9-15
  • the second pre-divided subgroup The feature information of the group (ie, the set consisting of point clouds 9-21) does not satisfy the preset condition.
  • the first step length is 6, then there may be the feature information of the pre-divided sub-group consisting of point cloud 9-p. , 15 ⁇ p ⁇ 21, p is an integer. Therefore, the second pre-divided subgroup (ie, the set of point clouds 9-18) is retrieved using the second step size (such as 3).
  • the third pre-divided subgroup ie, the set consisting of point clouds 9-16
  • a third step size such as 1).
  • the characteristic information of the second pre-divided subgroup obtained again does not satisfy the preset condition, and the number of times the second pre-divided subgroup is retrieved reaches the preset number of times or the latest re-acquired second pre-divided subgroup If the step size is less than or equal to the preset step size, the first pre-divided subgroup (ie, the set consisting of point clouds 9-15) is taken as subgroup 3.
  • step S207C may be performed.
  • the re-acquired i+1 pre-divided subgroups are determined as a subgroup.
  • the second pre-divided subgroup (ie, the set consisting of point clouds 9-18) meets the preset condition, there may be The feature information of the subgroup formed by the point clouds 9 to d satisfies the preset condition, where 18 ⁇ d ⁇ 21, and d is an integer.
  • the second preset number is 3
  • the second pre-divided subgroup is taken as a subgroup.
  • the fourth step is used to obtain the first i+2 pre-divided subgroups, the sum of the second step and the fourth step is smaller than the first step; if the feature information of the i+2 pre-divided subgroup meets the preset conditions, the fifth step is used The i+3th pre-divided subgroup is obtained, and the sum of the second step, the fourth step, and the fifth step is less than the first step.
  • the step size used to obtain the i+k pre-divided subgroup, the step size used to obtain the i+k-1 pre-divided subgroup, and the i+k-2 pre-divided subgroup are less than the first time to obtain the i+ The step size used for 1 pre-divided subgroup.
  • the second preset number 1
  • the third pre-divided subgroup ie, the set of point clouds 9-21
  • the i+kth pre-divided subgroup is retrieved, and the subsequent steps may refer to the above S207B and/or S207C .
  • the method for determining a subgroup helps to make as many point clouds as possible in the point cloud group to be coded to form a sub group that satisfies a preset condition when the step size of the sliding window is greater than 1. Since when a subgroup contains at least two frames of point clouds, the occupancy map of the patch with matching relationship in each point cloud obtained by using the global matching packaging algorithm corresponds to the position of its point cloud occupancy map, which can improve coding performance. Therefore, the solution provided by this embodiment is used to make as many point clouds as possible to form a subgroup that meets the preset conditions. When the global matching packaging algorithm is used to pack the point clouds in the subgroup, it helps to improve the encoding. effectiveness.
  • Subgroup split point refers to the split point of two adjacent subgroups. It can be understood that the essence of grouping the point cloud groups to be encoded is to find the sub-group division points in the point cloud group to be encoded.
  • the intermediate point of the dichotomy is the intermediate object among multiple objects in a sequence targeted by the dichotomy. For example, if the numbers of objects included in a sequence are x to y, 1 ⁇ x ⁇ y, x and y are integers, then the middle point of the dichotomy is the number Object, or numbered Object. among them, Means round down Means round up.
  • the object before the midpoint is called the first half object obtained by this dichotomy
  • the object after the midpoint is called the second half object obtained by this dichotomy.
  • the i-th pre-divided subgroup starting from the point cloud in the j-th frame, perform the dichotomy for the point cloud that has not been grouped in the coded point cloud group for the i-th time to obtain the i-th pre-divided subgroup.
  • the first half of the point cloud obtained by the dichotomy method can be used as the i-th pre-divided subgroup, which are used as examples in the embodiments of the present application.
  • the embodiments of the present application are not limited to this.
  • the point cloud of the jth frame is the first point cloud in the point cloud that has not been grouped in the point cloud group to be encoded.
  • the i+1-th pre-divided sub-group is the first half of the point cloud obtained from the i-th pre-divided sub-group and the i+1th dichotomy Make up collection.
  • the i+1-th pre-divided sub-group is a set composed of the first half of the point cloud in the i-th pre-divided sub-group.
  • the point cloud group to be encoded includes point clouds 1 to 32 as an example for description. Specifically: performing a dichotomy on point clouds 1 to 32 to obtain the first pre-divided subgroup (that is, a set of point clouds 1 to 16). If the feature information of the first pre-divided subgroup satisfies the preset condition, then perform a dichotomy on point clouds 16 to 32 to obtain the second pre-divided subgroup (ie, a set of point clouds 1 to 24), as shown in Figure 12 As shown in (a).
  • the feature information of the first pre-divided subgroup does not meet the preset conditions, then perform a dichotomy on the point cloud 1 to 16 to obtain the second pre-divided subgroup (that is, the set of point clouds 1 to 7), as shown in the figure (B) in 12.
  • Embodiment 3 a method for determining a subgroup of a point cloud group to be coded by using a dichotomy method provided by an embodiment of the present application will be described through specific examples. For details, refer to the following Embodiment 3 or Embodiment 4.
  • FIG. 13 it is a schematic flowchart of a method for determining a subgroup provided by an embodiment of the present application.
  • the method shown in Figure 13 includes the following steps:
  • S302 Determine whether the feature information of the first pre-divided subgroup meets the preset condition.
  • S303 Perform the dichotomy for the second time to obtain the second pre-divided subgroup. If the second pre-divided subgroup meets the preset condition, the dichotomy is performed for the third time. That is to say, when the pre-divided subgroup obtained by the current dichotomy meets the preset condition, the next dichotomy is performed.
  • the implementation of the dichotomy can be implemented in the following ways:
  • Implementation method 1 If the dichotomy cannot be continued until the pre-divided subgroup obtained by performing the dichotomy last time still meets the preset condition, all point clouds in the point cloud to be encoded that have not been grouped are regarded as a subgroup.
  • Implementation method 2 If the feature information of the i+1th pre-divided subgroup obtained by performing the i+1 dichotomy does not satisfy the preset condition, the i-th predivision subgroup obtained by performing the i dichotomy is used As a subgroup. i ⁇ 1, i is an integer.
  • S304 Perform the dichotomy for the second time to obtain the second pre-divided subgroup. If the second pre-divided subgroup does not satisfy the preset condition, the dichotomy is performed for the third time. That is to say, when the pre-divided subgroup obtained by this dichotomy does not satisfy the preset condition, the next dichotomy is performed. By analogy, perform the dichotomy. In the future, there may be the following implementation methods:
  • Implementation method 1 If the dichotomy cannot be continued until the pre-divided subgroup obtained by performing the dichotomy last time still does not meet the preset conditions, the first frame point cloud in the point cloud to be encoded that has not been grouped is used as a Subgroup.
  • Implementation method 2 If the dichotomy cannot be continued until the pre-division subgroup obtained by performing the dichotomy last time meets the preset condition, the pre-division subgroup obtained most recently is regarded as a subgroup.
  • Implementation method 3 If the feature information of the i+1th pre-divided subgroup obtained by performing the dichotomy at the i+1th time meets the preset condition, the dichotomy is performed at the i+2th time, and if the i+2 times are performed the dichotomy The feature information of the i+1th pre-divided subgroup obtained by the method meets the preset condition, and the i+3th dichotomy is performed. That is to say, when the preset conditions are met this time, the next dichotomy is performed, and so on, the dichotomy is performed.
  • the predivision subgroup obtained by performing the dichotomy last time still satisfies the preset condition until the dichotomy cannot be continued, the predivision subgroup obtained last time is regarded as a subgroup. If the pre-divided subgroup obtained by performing the dichotomy in a certain time does not satisfy the preset condition, the pre-divided subgroup obtained by performing the dichotomy last time this time is regarded as a subgroup.
  • the method for determining a sub-group helps to make as many point clouds as possible in the point cloud group to be encoded to form a sub-group satisfying preset conditions. In this way, when a global matching packing algorithm is adopted for the sub-group When the point cloud is packaged, it helps to improve coding efficiency.
  • FIG. 14 it is a schematic flowchart of a method for determining a subgroup provided by an embodiment of the present application.
  • the method shown in Figure 14 includes the following steps:
  • S402 Determine whether the feature information of the first pre-divided subgroup meets a preset condition.
  • S404 Perform the dichotomy for the second time to obtain the second pre-divided subgroup. If the feature information of the second pre-divided subgroup does not satisfy the preset condition, the dichotomy is performed for the third time to obtain the third pre-divided subgroup. That is to say, when the pre-divided subgroup obtained by this dichotomy does not satisfy the preset condition, the next dichotomy is performed. By analogy, perform the dichotomy. In the future, there may be the following implementation methods:
  • Implementation method 1 If the dichotomy cannot be continued until the pre-divided subgroup obtained by performing the dichotomy last time still does not meet the preset conditions, the first frame point cloud in the point cloud to be encoded that has not been grouped is used as a Subgroup.
  • Implementation manner 2 If the i+1th pre-divided subgroup obtained by performing the dichotomy for the i+1th time meets the preset condition, the i+1th pre-divided subgroup is regarded as a subgroup. i ⁇ 1, i is an integer.
  • the first pre-divided subgroup that satisfies a preset condition among the multiple pre-divided subgroups obtained by performing the dichotomy multiple times is used as a subgroup.
  • the pre-dividing subgroup obtained by predivision using the dichotomy method meets the preset conditions, it can be considered that this pre-dividing subgroup already includes more point clouds, so When the global matching packaging algorithm is used to package the point cloud in this subgroup, it helps to improve the coding efficiency.
  • any of the “cannot continue to perform the dichotomy” described in the third and fourth embodiments may include: when the number of objects (specifically point clouds) targeted by the dichotomy is 1, the dichotomy cannot be performed Method; or when the number of times the dichotomy is performed reaches a preset threshold, the dichotomy cannot be continued. Where the number of objects targeted by the dichotomy is 1, the dichotomy cannot be performed, which can be extended to: when the number of objects (specifically point clouds) targeted by the dichotomy is less than or equal to the preset threshold, the dichotomy cannot be continued .
  • any of the pre-divided subgroups described in the first to fourth embodiments above meets the preset condition refer to the description below. Among them, the following is to determine the i-th pre-divided sub-group when the feature information of the i-th pre-divided subgroup meets the preset condition, and the feature information of the i+1-th pre-divided sub-group does not satisfy the preset condition.
  • An example will be described for one subgroup among multiple subgroups.
  • the "pre-divided sub-group" involved in the following description of whether a pre-divided sub-group satisfies the preset condition may be obtained by, for example, but not limited to, a sliding window method or a dichotomy.
  • the i-th pre-divided subgroup meets the preset condition, and the feature information of the i+1-th pre-divided subgroup does not satisfy the preset condition, it is determined that the i-th pre-divided subgroup is more
  • One of the subgroups can be implemented in at least one of the following ways:
  • Method 1 If the characteristic information of the i-th pre-divided subgroup includes the size of the global occupancy map of the i-th pre-divided subgroup, then, when the size of the global occupancy map of the i-th pre-divided subgroup is less than or equal to the first Threshold, and the size of the global occupancy map of the i+1th pre-divided subgroup is greater than the first threshold, it is determined that the i-th pre-divided subgroup is a subgroup.
  • the global occupancy graph is packaged by one or more union patch occupancy graphs
  • the union patch occupancy graph is a union of a group of globally matched patches in a pre-divided subgroup, so, as the pre-divided sub
  • the increase in the number of point cloud frames in a group will cause the number of patches in a group of globally matched patches to increase, resulting in an increase in the area of the union patch occupancy map corresponding to the group of globally matched patches, which in turn will increase the size of the global occupancy map Large; therefore, this approach is proposed.
  • limiting the global occupancy map of a subgroup within the first threshold can indirectly reflect the size of the occupancy map of the point cloud in the subgroup, thereby helping to improve coding efficiency.
  • the meaning of the first threshold is different.
  • the first threshold represents the maximum value of the area that allows a subgroup of the global occupancy map.
  • the first threshold represents the maximum value of the height of the global occupancy map that allows a subgroup.
  • the first threshold is a predefined value, such as a predefined experience value.
  • the first threshold may be 1280 pixels.
  • the first threshold is determined based on the maximum size of the occupancy map of the point clouds (such as point clouds) in the point cloud group to be encoded obtained by the candidate packaging algorithm.
  • the candidate packaging algorithm may be other packaging algorithms besides the global matching packaging algorithm, such as the anchor packaging algorithm.
  • the first threshold is H*w1.
  • H is the maximum value of the height of the occupancy map of the point cloud in the point cloud group to be coded based on a candidate algorithm such as the anchor packing algorithm
  • w1 is a constant.
  • w1 may be determined based on the effect of the global matching packing algorithm and the candidate packing algorithm on the efficiency of video encoding and decoding.
  • w1 ⁇ (0.5, 1.5), of course, it is not limited to this.
  • Method 2 If the characteristic information of the i-th pre-divided subgroup includes the occupancy graph size of the point cloud in the i-th pre-divided sub-group, then perform the following method 2-1 and/or method 2-2:
  • Method 2-1 When the frame number of the large-sized point cloud in the i-th pre-divided subgroup is less than or equal to the first preset number, and the frame number of the large-sized point cloud in the i+1 pre-divided sub-group When it is greater than the first preset number, it is determined that the i-th pre-divided subgroup is a subgroup.
  • the large-size point cloud is a point cloud whose occupancy map size is greater than or equal to the second threshold.
  • the occupancy map here may be an occupancy map of a point cloud that is packaged or obtained based on any kind of packaging algorithm.
  • the first preset number may be a predefined value, such as a predefined experience value, such as 4. Understandably, if the first preset number is 1, the method 2-1 may be replaced by: when the i-th pre-divided subgroup does not contain a large-size point cloud, and the i+1-th pre-divided subgroup contains a large-size In the case of a point cloud, determine the i-th pre-divided subgroup as a subgroup.
  • the meaning of the second threshold is different.
  • the second threshold represents the maximum value of the area allowed for the point cloud occupancy map in a subgroup.
  • the second threshold represents the maximum value of the height of the point cloud occupancy map allowed in a subgroup.
  • the second threshold is a predefined value, such as a predefined experience value.
  • the second threshold may be 1280 pixels.
  • the large-size point cloud specifically refers to a point cloud obtained based on the global matching packaging algorithm and having an occupancy map size greater than or equal to the second threshold, then:
  • the second threshold may be determined based on the maximum size of the point cloud occupancy map in the point cloud group to be encoded obtained by the candidate packaging algorithm.
  • Candidate packing algorithms are other packing algorithms besides the global matching packing algorithm such as the anchor packing algorithm.
  • NH i,u ⁇ H max *w2 it is considered that the point cloud of the u-th frame in the i-th pre-divided subgroup is a large-scale point cloud, u ⁇ 1, and u is an integer.
  • NH i,u is the height of the occupancy map of the uth frame point cloud in the i-th pre-divided subgroup obtained based on the global matching packing algorithm
  • H max is the point to be coded based on a candidate packing algorithm such as the anchor packing algorithm
  • the maximum value of the height of the point cloud occupancy map in the cloud group, w2 is a constant.
  • w2 ⁇ (0.5, 1.5) is not limited to this. Since the size of the occupancy map of a frame of point cloud is greater than or equal to the global occupancy map of the subgroup where the point cloud of the frame is located, further optional, w1 ⁇ w2, for example, w1 is slightly smaller than w2.
  • the second threshold may be determined based on the size of the local point cloud occupancy map obtained by the candidate packaging algorithm.
  • Candidate packing algorithms are other packing algorithms besides the global matching packing algorithm such as anchor algorithm.
  • NH i,u is the height of the occupancy map of the u-th frame point cloud in the i-th pre-divided subgroup obtained based on the global matching packing algorithm
  • H i,u is the first based on the candidate packing algorithm such as the anchor packing algorithm.
  • the height of the occupancy map of the u-th point cloud in the i pre-divided subgroups, w3 is a constant.
  • w3 ⁇ (0.5, 3.0).
  • w3 is greater than w2.
  • Method 2-2 When the average value of the ratio of the occupancy map size obtained based on the global matching packaging algorithm and the occupancy map size obtained based on the candidate packaging algorithm in each frame point cloud of the i-th pre-divided subgroup is less than or equal to the third threshold, When the average value of the ratio of the occupancy map size obtained based on the global matching packing algorithm to the occupancy map size obtained based on the candidate packing algorithm in each frame point cloud of the i+1th pre-divided subgroup is greater than the third threshold, the i Pre-divided into subgroups.
  • the candidate packaging algorithm may be other packaging algorithms besides the global matching packaging algorithm such as the anchor packaging algorithm. For example, when sum(NH i,u /H i,u )/frameCnt i ⁇ third threshold, and sum(NH i+1,v /H i+1,v )/frameCnt i+1 >third threshold . Among them, sun () represents the sum operation.
  • NH i,u is the height of the point cloud occupancy map of the uth frame in the i-th pre-divided subgroup obtained based on the global matching packing algorithm
  • H i,u is the i-th pre-divided subgroup obtained based on the global matching packing algorithm
  • the height of the point cloud occupancy map in the u frame in frame, frameCnt i is the number of frames of the point cloud included in the i-th pre-divided subgroup.
  • u ⁇ 1, u is an integer.
  • NH i+1,v is the height of the point cloud occupancy map of the vth frame in the i+1th pre-divided subgroup obtained based on the global matching packing algorithm
  • H i+1,v is the first obtained based on the global matching packing algorithm
  • the height of the point cloud occupancy map of the vth frame in the i+1 pre-divided subgroups, frameCnt i+1 is the number of frames of the point cloud included in the i+1th pre-divided subgroup.
  • v ⁇ 1, v is an integer.
  • the third threshold is a predefined value.
  • the third threshold is a value greater than 1, such as 1.2.
  • the i-th pre-divided sub-group is determined to be a sub-group, which may include the following manner A or manner B:
  • Method A When the size of the global occupancy map of the i+1th pre-divided subgroup is greater than or equal to the fifth threshold when compared with the size of the global occupancy map of the i-th pre-divided subgroup, it means that For the i-th pre-divided subgroup as a sub-group, when the i+1th pre-divided sub-group is used as a sub-group, the efficiency of point cloud coding decreases and the magnitude of the drop is larger when the global matching packaging algorithm is used for packaging. Therefore, it is determined that the i-th pre-divided subgroup is a subgroup among a plurality of subgroups.
  • the size of the global occupancy map of the i+1 pre-divided sub-group is greater than or It is equal to the size of the global occupancy map of the ith pre-divided subgroup.
  • the size of the global occupancy graph of is smaller than the size of the global occupancy graph of the ith pre-divided subgroup. Considering this reason, this approach is proposed.
  • the characteristic information of the i-th pre-divided subgroup includes the area of the occupancy graph of the union patch of the i-th pre-divided subgroup; correspondingly, when the union patch occupancy graph of the i+1 pre-divided subgroup The total area is lower than or equal to the fourth threshold compared to the total area occupied by the union patch occupancy map of the i-th pre-divided subgroup, indicating that compared to the i-th pre-divided sub-group as a sub-group,
  • the i+1th pre-divided subgroup is used as a subgroup, the efficiency of point cloud coding is reduced and the decrease is large when the global matching packaging algorithm is used for packaging. Therefore, the i-th pre-divided subgroup is determined as a subgroup .
  • this mode reference may be made to the above-mentioned relevant description of mode A, which will not be repeated here.
  • the sub-group information of the N-frame point cloud is encoded into the code stream, including:
  • N 0 , N 1 , ..., N M-1 and/or M are encoded into the code stream, including:
  • N 0, N 1, ..., N M-1 of the M-1 refers to N 0, N 1, ..., N M-1 in any of the M-1.
  • part of the frames in the N-frame point cloud are adaptively grouped, and another part of the frames are grouped with a fixed frame length. Therefore, the sub-group information of the N-frame point cloud can be encoded into the code stream, including: T and/or T of N 0 , N 1 , ..., N M-1 are encoded into the code stream.
  • the T pieces of the N 0 , N 1 ,..., N M-1 may refer to the number of frames of each of the M sub-groups in which T sub-groups consecutively include a point cloud.
  • N 0 , N 1 ,..., N M-1 may be encoded into the code stream by using a fixed-length encoding method or a variable-length encoding method.
  • the fixed-length encoding method specifically uses a fixed number of bits for encoding
  • the variable-length encoding method includes but is not limited to the arithmetic encoding method and the exponential Golomb encoding method.
  • N 32
  • the number of frames of the point cloud in the fourth subgroup is 8.
  • the number of frames of the point cloud in the 0th subgroup can be encoded as 00101
  • the number of frames of the point cloud in the first subgroup 7 can be encoded as 00111
  • the number of frames of the point cloud in the second subgroup 6 can be encoded as 00110
  • the number of frames of the point cloud in the third subgroup 6 can be encoded as 00110
  • the number of frames of the point cloud in the fourth subgroup 8 can be encoded as 01000
  • the number of frames of the point cloud in the 5 subgroups can be
  • the code is 0010100111001100011001000, a total of 25 bits. It can also perform arithmetic coding on 25 bits, which can further improve the compression efficiency of the code stream. Of course, other bits can also be used for encoding, which is not limited in this application.
  • the number of frames of the point cloud in the 0th subgroup can represent 101, and the number of frames of the point cloud in the first subgroup 7 can be represented as 111, in the second subgroup
  • the frame number 6 of the point cloud can be expressed as 110
  • the frame number 6 of the point cloud in the third subgroup can be expressed as 110
  • the frame number 8 of the point cloud in the fourth subgroup can be expressed as 1000.
  • the frame number of the point cloud in the 5 subgroups can be encoded as 1011111101101000, a total of 16 bits.
  • the coding of the sub-group information of the N-frame point cloud into the code stream includes: generating one or more bit strings according to the number of frames of the point cloud in one or more of the M sub-groups, where , The length of the s-th bit string in one or more bit strings is the number of frames including the point cloud in the s-th sub group in one or more sub-groups; one or more bit strings are encoded into the code stream.
  • a bit string composed of N bits ie, M bit strings
  • N bits can be used for encoding, or arithmetic coding can be used for encoding.
  • one or more subgroups include the s-1th subgroup and the sth subgroup, where the value of the bit in the bit string corresponding to the s-1th subgroup is the same as the sth subgroup
  • the values of the bits in the corresponding bit string are different.
  • the value of the bit in the bit string corresponding to the s-1th subgroup is the first identifier
  • the value of the bit in the bit string corresponding to the sth subgroup is the second identifier.
  • the value of the bit in the bit string corresponding to the s+1th subgroup may be the first identification or the third identification, and the third identification is different from the first identification and the second identification.
  • the values of the bits in the bit string corresponding to each subgroup in one or more subgroups are the same. It should be noted that the values of the bits of the bit string corresponding to each subgroup are the same, which means that the values of all the bits in the bit string corresponding to each subgroup are the same.
  • a subgroup corresponds to a bit string
  • a bit of the bit string represents a point cloud frame in a subgroup, according to the number of bits in the bit string (that is, the length of the bit string)
  • the number of bits in the bit string that is, the length of the bit string
  • the values of all bits in the bit string are the same, and the bit values in the two bit strings corresponding to two adjacent subgroups in the division order are different Therefore, it can be distinguished that the two adjacent subgroups in the division order include the number of frames of the point cloud.
  • the first identification is 0, the second identification is 1, That is, the 32-frame point cloud is divided into 5 subgroups; of which, the number of frames of the point cloud in the 0th subgroup is 5, the number of frames of the point cloud in the first subgroup is 7, and the number of frames of the point cloud in the second subgroup is 6.
  • the number of frames of the point cloud in the third subgroup is 6, and the number of frames of the point cloud in the fourth subgroup is 8.
  • the bit string corresponding to the 0th subgroup is 00000
  • the bit string corresponding to the first subgroup is 1111111
  • the bit string corresponding to the second subgroup is 000000
  • the bit string corresponding to the third subgroup is 111111
  • the bit string corresponding to the fourth subgroup is The bit string is 00000000.
  • the 5 bit strings have a total of 32 bits, which can be encoded with 32 bits or arithmetically coded with 5 bit strings.
  • the encoding method further includes: encoding rotation angle information of one or more matching patches in the patch set of the first frame point cloud of the current subgroup into the code stream.
  • the rotation angle information includes specific rotation angle values or rotation angle indexes. For example, if the rotation angle of the patch is 0, it means that the patch does not rotate; if the rotation angle of the patch is 20, it means that the patch rotates by 20°. As another example, if the rotation angle index of the patch is 0, it means that the patch does not rotate; if the rotation angle index of the patch is 1, it means that the patch rotates by 15°; if the rotation angle index of the patch is 2, it means that the patch rotates by 30°.
  • fixed-length coding or variable-length coding can be used to write the rotation angle information into the code stream.
  • the fixed-length coding method refers to coding with a fixed number of bits. For example, a 5-bit encoding is used for the angle value of the patch.
  • the rotation angle value 0 of the patch can be encoded as 00000, and the rotation angle value of the patch can be encoded as 20 to 10100.
  • the rotation angle index 0 of the patch can also be encoded as 00000, the rotation angle index 1 of the patch can be encoded as 00001, and the rotation angle index 2 of the patch can be encoded as 00010.
  • Variable-length coding methods include but are not limited to arithmetic coding methods and exponential Golomb coding methods.
  • the rotation angle value of patch 0 can be coded as 0, and the rotation angle value of patch can be coded as 10 to 1010.
  • the rotation angle index 0 of the patch can also be encoded as 0, the rotation angle index 1 of the patch can also be encoded as 1, and the rotation angle index 2 of the patch can also be encoded as 10.
  • one or more matching patches in the patch set of the first frame point cloud of the current subgroup refers to a patch that finds a matching patch in the patch set of the reference frame of the first frame point cloud of the current subgroup .
  • the reference frame of the first frame point cloud in the current subgroup may be the point cloud in the previous subgroup of the current subgroup.
  • patch A in the patch set of the first frame point cloud of the current subgroup If the patch set of the reference frame of the first frame point cloud can have a patch that matches patch A, then patch A can be called a matching patch.
  • encoding the N-frame point cloud according to the sub-frame information of the N-frame point cloud specifically includes: decoding the auxiliary information of the N-frame point cloud patch according to the sub-frame information of the N-frame point cloud, and then according to the N-frame point
  • the auxiliary information of the patch of the cloud encodes the N-frame point cloud.
  • the sub-group information of the N-frame point cloud to obtain the N-frame point cloud is grouped into the code stream in an adaptive grouping manner.
  • the adaptive grouping method fully considers the correlation of patches between consecutive multi-frame point clouds, so that the spatial consistency of patches with matching relationships is fully guaranteed, and the coding efficiency of point clouds is improved.
  • the subgroup information obtained by adaptive grouping is used to guide the decoding end to correctly decode the point cloud data.
  • FIG. 15 is a schematic flowchart of a method for encoding a point cloud according to an embodiment of the present application. As shown in Figure 15, the method includes:
  • S1501 Receive a code stream, and parse out the sub-group information from the code stream.
  • the sub-group information includes the number M of the N-frame point cloud divided into sub-groups and/or one or more of the M sub-groups. The number of frames in the point cloud is included in each subgroup.
  • the M subgroups are obtained by grouping N frame point clouds in an adaptive grouping manner.
  • parsing the subgroup information from the code stream includes: parsing the frame number and/or M of the point cloud in each of the M subgroups from the code stream, M is greater than or equal to 1 , Or; parse out the number of frames of the point cloud in each subgroup of M and M-1 subgroups from the code stream, M is greater than or equal to 1.
  • the frame number and/or M of the point cloud in each of the M subgroups are parsed from the code stream, including:
  • N 0 , N 1 ,..., N M-1 can be decoded from the code stream by using fixed-length or variable-length decoding.
  • the fixed-length decoding method includes but is not limited to the fixed-bit decoding method
  • the variable-length decoding method includes but is not limited to the arithmetic decoding method and the exponential Golomb decoding method.
  • decoding the N-frame point cloud according to the subgroup information includes:
  • the target subgroup is the subgroups of the M subgroups other than the M-1 subgroup, M Greater than or equal to 1; decode the N-frame point cloud according to the number of frames in each of the M sub-groups including the point cloud.
  • part of the frames in the N-frame point cloud are adaptively grouped, and another part of the frames are grouped with a fixed frame length, so N 0 , N 1 ,..., N M can be parsed from the code stream T and/or T in -1 .
  • T of N 0 , N 1 ,..., N M-1 refers to the number of frames of each of the M sub-groups in which T sub-groups consecutively include a point cloud.
  • T and/or T of N 0 ,N 1 ,...,N M-1 are parsed from the code stream, M is obtained from N and N 0 ,N 1 ,...,N M-1
  • parsing the subgroup information from the code stream includes: parsing one or more bit strings from the code stream, where the length of the s-th bit string in the one or more bit strings It is the number of frames including the point cloud in the s-th subgroup in one or more subgroups; one or more subgroups correspond to one or more bit strings.
  • decoding the N-frame point cloud according to the sub-group information includes: acquiring one or more sub-groups in each sub-group including the point cloud according to the length of each bit string in the one or more bit strings Number of frames; determine the number of frames in each sub-group of M sub-groups including point clouds, where M sub-groups include one or more sub-groups; according to the number of frames in each sub-group of M sub-groups including point clouds decoding.
  • the length of each bit string in the multiple bit strings (ie, M bit strings) can be determined to include the point cloud in each of the M subgroups Number of frames.
  • the number of frames including a point cloud in each sub-group of M-1 sub-groups can be determined according to the length of each bit string in the M-1 bit strings. And the number of frames including the point cloud in each of the M-1 subgroups determines the number of frames including the point cloud in the target subgroup, where the M-1 subgroup corresponds to the M-1 bit string and the target subgroup is M Subgroups other than M-1 subgroups.
  • one or more subgroups include the s-1th subgroup and the sth subgroup, where the value of the bit in the bit string corresponding to the s-1th subgroup is the same as the sth subgroup The values of the bits in the corresponding bit string are different.
  • the values of the bits in the bit string corresponding to each subgroup in one or more subgroups are the same.
  • the values of the bits in the bit string corresponding to each subgroup are the same means that the values of all the bits in the bit string corresponding to each subgroup are the same.
  • bit value of the bit string corresponding to the mth subgroup is the first identifier, when the 0th bit in the mth subgroup is the first identifier, and the nth bit is the value In the first identification, when the value of the n+1th bit is not the first identification, it is determined that the number of frames in the mth subgroup is n+1.
  • the first identifier is 0 or 1, for example.
  • the first mark is 0 or 1
  • the second mark is 1 or 0, and the first mark and the second mark are different.
  • the bit string parsed from the code stream is 00000111111000000011111110000000
  • the two adjacent subgroups in the order of division correspond to
  • the bit string is 111111
  • the second bit string is 0000000
  • the third bit string is 1111111
  • the fourth bit string is 000000000.
  • the length of the bit string is the number of frames of the point cloud in the subgroup corresponding to the bit string
  • the number of frames of the point cloud in the 0th subgroup is 5
  • the number of frames of the point cloud in the first subgroup is 6, and the second subgroup
  • the number of frames of the point cloud in the group is 7,
  • the number of frames of the point cloud in the third subgroup is 7
  • the number of frames of the point cloud in the fourth subgroup is 7, and then according to the midpoint of each subgroup in the 5 and 5 subgroups
  • the frame number of the cloud decodes the 32-frame point cloud.
  • the first mark is 0 or 1
  • the second mark is 1 or 0, and the first mark and the second mark are different.
  • N 32
  • the bit string parsed from the code stream is 0000011111100000001111111, a total of 25 bits, corresponding to 25 frames of point clouds. Since all bits in a bit string have the same value, the two adjacent sub-sequences are divided in order.
  • the bit values of the two bit strings corresponding to the groups are different, so you can determine 4 bit strings, of which the 0th bit string is 00000, the first bit string is 111111, and the second bit string is 0000000 ,
  • the third bit string is 1111111.
  • the length of the bit string is the number of frames of the point cloud in the subgroup corresponding to the bit string
  • the number of frames of the point cloud in the 0th subgroup is 5
  • the number of frames of the point cloud in the first subgroup is 6, and the second subgroup
  • the number of frames of the point cloud in the group is 7, and the number of frames of the point cloud in the third subgroup is 7.
  • the 32-frame point cloud is decoded according to 5 (that is, the number of sub-groups) and the number of frames of the point cloud in each of the 5 sub-groups.
  • the first mark is 0 or 1
  • the second mark is 1 or 0, and the first mark and the second mark are different.
  • the length of the bit string is the number of frames of the point cloud in the subgroup corresponding to the bit string
  • the number of frames of the point cloud in the 0th subgroup is 5, and the number of frames of the point cloud in the first subgroup is 6.
  • the number of subgroups obtained by grouping using the fixed frame length is 3 (ie 21 /7)
  • the number of frames of the point cloud in each of the 3 sub-groups is 7, and then 32 frames are paired according to 5 (that is, the number of sub-groups) and the number of frames of the point cloud in each of the 5 sub-groups Point cloud to decode.
  • the rotation angle information of one or more matching patches in the patch set of the first frame point cloud in the current subgroup is parsed from the code stream; according to one or The rotation angle information of multiple matching patches determines the rotation angle information of the matching patches in the patch set of the non-first frame point cloud in the current subgroup.
  • one or more matching patches in the patch set of the first frame point cloud of the current subgroup refers to a patch that finds a matching patch in the patch set of the reference frame of the first frame point cloud of the current subgroup.
  • the reference frame of the first frame point cloud in the current subgroup may be the point cloud in the previous subgroup of the current subgroup.
  • the non-first frame point cloud in the current subgroup refers to the point cloud in the current subgroup except the first frame.
  • the matching patch in the patch set of the non-first frame point cloud in the current subgroup means that there is a matching relationship with one or more matching patches in the patch set of the first frame point cloud in the current subgroup. Patch.
  • the fixed-angle or variable-length decoding method can be used to decode the rotation angle information of one or more matching patches from the code stream.
  • the fixed-length decoding method includes but is not limited to the fixed-bit decoding method
  • the variable-length decoding method includes but is not limited to the arithmetic decoding method and the exponential Golomb decoding method.
  • the current subgroup includes 4 frames of point clouds, namely point cloud 0, point cloud 1, point cloud 2, and point cloud 3.
  • point cloud 0 is the first frame point cloud of the current subgroup
  • patch A is the matching patch in point cloud 0
  • the patch A and patch B in point cloud 1 patch C in point cloud 2 and point cloud 3
  • the patches of D have a matching relationship
  • the rotation angle information of patch B in point cloud 1 patch C in point cloud 2 and patch D in point cloud 3 can be determined according to the rotation angle information of patch A.
  • the rotation angle information includes specific rotation angle values or rotation angle indexes. For example, if the rotation angle of the patch is 0, it means that the patch does not rotate; if the rotation angle of the patch is 20, it means that the patch rotates by 20°. As another example, if the rotation angle index of the patch is 0, it means that the patch does not rotate; if the rotation angle index of the patch is 1, it means that the patch rotates by 15°; if the rotation angle index of the patch is 2, it means that the patch rotates by 30°.
  • S1502 Decode the N-frame point cloud according to the subgroup information.
  • decoding the N-frame point cloud according to the subgroup information includes: obtaining auxiliary information of the N-frame point cloud patch according to the subgroup information, and reconstructing the N-frame point cloud according to the auxiliary information of the N-frame point cloud patch.
  • the N-frame point cloud is grouped in an adaptive grouping manner to obtain the sub-group information of the N-frame point cloud into the code stream, so that the decoding end can be based on the N-frame point cloud
  • the sub-group information correctly decodes the N-frame point cloud data, and at the same time improves the coding and decoding efficiency.
  • an embodiment of the present application further provides a point cloud encoding method, including: obtaining rotation angle information of one or more matching patches in the patch set of the first frame point cloud of the current subgroup; The rotation angle information of one or more matching patches in the patch set of the first frame point cloud of the current subgroup is encoded into the code stream.
  • the current subgroup is obtained by grouping N frame point clouds in an adaptive grouping manner.
  • one or more matching patches in the patch set of the first frame point cloud of the current subgroup refers to a patch that finds a matching patch in the patch set of the reference frame of the first frame point cloud of the current subgroup.
  • the reference frame of the first frame point cloud in the current subgroup may be the point cloud in the previous subgroup of the current subgroup.
  • the rotation angle information includes specific rotation angle values or rotation angle indexes. For example, if the rotation angle of the patch is 0, it means that the patch does not rotate; if the rotation angle of the patch is 20, it means that the patch rotates by 20°. As another example, if the rotation angle index of the patch is 0, it means that the patch does not rotate; if the rotation angle index of the patch is 1, it means that the patch rotates by 15°; if the rotation angle index of the patch is 2, it means that the patch rotates by 30°.
  • fixed-length coding or variable-length coding can be used to write the rotation angle information into the code stream.
  • the fixed-length coding method refers to coding with a fixed number of bits. For example, a 5-bit encoding is used for the angle value of the patch.
  • the rotation angle value 0 of the patch can be encoded as 00000, and the rotation angle value of the patch can be encoded as 20 to 10100.
  • the rotation angle index 0 of the patch can also be encoded as 00000, the rotation angle index 1 of the patch can be encoded as 00001, and the rotation angle index 2 of the patch can be encoded as 00010.
  • Variable-length coding methods include but are not limited to arithmetic coding methods and exponential Golomb coding methods.
  • the rotation angle value of patch 0 can be coded as 0, and the rotation angle value of patch can be coded as 10 to 1010.
  • the rotation angle index 0 of the patch can also be encoded as 0, the rotation angle index 1 of the patch can also be encoded as 1, and the rotation angle index 2 of the patch can also be encoded as 10.
  • an embodiment of the present application further provides a point cloud decoding method, including: receiving a code stream; parsing from the code stream one of the patch sets of the first frame point cloud in the current subgroup or Rotation angle information of multiple matching patches; according to the rotation angle information of one or more matching patches in the patch collection of the first frame point cloud, determine the rotation angle information of matching patches in the patch collection of the non-first frame point cloud in the current subgroup ; The rotation angle information of the matching patch of the point cloud in the current subgroup is used to decode the point cloud in the current subgroup.
  • one or more matching patches in the patch set of the first frame point cloud of the current subgroup refers to a patch that finds a matching patch in the patch set of the reference frame of the first frame point cloud of the current subgroup.
  • the reference frame of the first frame point cloud in the current subgroup may be the point cloud in the previous subgroup of the current subgroup.
  • the non-first frame point cloud in the current subgroup refers to the point cloud except the first frame in the current subgroup.
  • the matching patch in the patch set of the non-first frame point cloud in the current subgroup means that there is a matching relationship with one or more matching patches in the patch set of the first frame point cloud in the current subgroup. Patch.
  • the current subgroup includes 4 frames of point clouds, namely point cloud 0, point cloud 1, point cloud 2, and point cloud 3.
  • point cloud 0 is the first frame point cloud of the current subgroup
  • patch A is the matching patch in point cloud 0
  • the patch A and patch B in point cloud 1 patch C in point cloud 2 and point cloud 3
  • the patches of D have a matching relationship
  • the rotation angle information of patch B in point cloud 1 patch C in point cloud 2 and patch D in point cloud 3 can be determined according to the rotation angle information of patch A.
  • decoding the current subgroup includes, but is not limited to, rotation angle information of matching patches of the point cloud in the current subgroup, and may also include rotation angle information of non-matching patches of the point cloud in the current subgroup.
  • the rotation angle information includes specific rotation angle values or rotation angle indexes. For example, if the rotation angle of the patch is 0, it means that the patch does not rotate; if the rotation angle of the patch is 20, it means that the patch rotates by 20°. As another example, if the rotation angle index of the patch is 0, it means that the patch does not rotate; if the rotation angle index of the patch is 1, it means that the patch rotates by 15°; if the rotation angle index of the patch is 2, it means that the patch rotates by 30°.
  • the fixed-angle or variable-length decoding method can be used to decode the rotation angle information of one or more matching patches from the code stream.
  • the fixed-length decoding method includes but is not limited to the fixed-bit decoding method
  • the variable-length decoding method includes but is not limited to the arithmetic decoding method and the exponential Golomb decoding method.
  • an embodiment of the present application provides another method for encoding a point cloud, including:
  • the target encoding method includes all or part of the point cloud encoding methods as included in this application; and encode the indication information into the code stream.
  • an embodiment of the present application provides another point cloud decoding method, including:
  • Parse the code stream to obtain instruction information used to indicate whether to decode the point cloud according to the target decoding method; the target decoding method includes all or part of the point cloud decoding methods included in this application; when the indication information is used to indicate When the point cloud is decoded according to the target decoding method, the point cloud is decoded according to the target decoding method.
  • the sub-group information of the N-frame point cloud is parsed from the code stream, and the sub-group information is obtained by grouping the N-frame point cloud in an adaptive grouping method, and
  • the adaptive grouping method fully considers the correlation of patches between consecutive multi-frame point clouds, so that the spatial consistency of patches with matching relationships is fully guaranteed, and the coding efficiency of point clouds is improved.
  • Adaptive grouping to obtain subgroup information is used to guide the decoding end to decode point cloud data
  • FIG. 16 is a schematic structural diagram of a point cloud encoding device according to an embodiment of the present application. As shown in FIG. 7, the encoding device 1600 includes:
  • the obtaining unit 1601 is configured to obtain sub-group information of the N-frame point cloud, and the sub-group information includes the number M of the N-frame point cloud divided into sub-groups and/or each sub-group in one or more sub-groups of the M sub-groups The number of frames in the group including the point cloud;
  • the encoding unit 1602 is used to encode the sub-group information of the N-frame point cloud into the code stream;
  • the encoding unit 1602 is also used to encode the N-frame point cloud according to the subgroup information.
  • the encoding device 1600 further includes:
  • the grouping unit 1603 is used to divide the N-frame point cloud into M subgroups, where dividing the N-frame point cloud into M subgroups includes: pre-dividing the multi-frame point cloud in the N-frame point cloud to obtain the pre-divided Subgroups; according to the feature information of the pre-divided subgroups, determine that the pre-divided subgroups are one of the M subgroups; the feature information is used to characterize the occupancy map size of the point cloud in the pre-divided subgroups.
  • the encoding unit 702 is specifically configured to generate according to the number of frames of the point cloud in one or more of the M sub-groups One or more bit strings, wherein the length of the s bit string in the one or more bit strings is the number of frames including the point cloud in the s sub group in one or more sub groups; one or more bit strings Into the code stream.
  • one or more subgroups include the s-1th subgroup and the sth subgroup, where the value of the bit in the bit string corresponding to the s-1th subgroup is the same as the sth subgroup The values of the bits in the corresponding bit string are different.
  • the values of the bits in the bit string corresponding to each subgroup in one or more subgroups are the same.
  • the encoding unit 1602 is further configured to: encode the rotation angle information of one or more matching patches in the patch set of the first frame point cloud of the current subgroup into the code stream.
  • the obtaining unit 1601 and the grouping unit 1603 are used to perform the relevant content of step S501 in the embodiment shown in FIG. 5, and the encoding unit 1602 is used to perform the relevant content of steps S502 and S503 in the embodiment shown in FIG. 5.
  • the position of the encoding device 1600 corresponds to the auxiliary information encoding module 108 in FIG. 2, in other words, the functions of the obtaining unit 1601, the encoding unit 1602, and the grouping unit 1603 can be implemented by the auxiliary information encoding module 108 in FIG. .
  • this application is not limited to this.
  • FIG. 7 is a schematic structural diagram of a point cloud decoding device according to an embodiment of the present application.
  • the decoding device 1700 includes:
  • the receiving unit 1701 is used to receive the code stream; the parsing unit 1702 is used to parse out the subgroup information from the codestream, and the subgroup information includes the number M and/or M subgroups of the N frame point cloud divided into subgroups Each subgroup in one or more subgroups includes the number of frames of the point cloud; the decoding unit 1703 is configured to decode the N frame point cloud according to the subgroup information.
  • the parsing unit 1702 is specifically configured to: parse out the number of frames and/or M of the point cloud in each of the M subgroups from the code stream, M is greater than or equal to 1, or; from the code The number of frames of the point cloud in each subgroup of M and M-1 subgroups is parsed from the stream, and M is greater than or equal to 1.
  • the decoding unit 1703 is specifically configured to determine the number of frames of the point cloud in the target subgroup according to the number of frames of the point cloud in each of the N and M-1 subgroups, the target subgroup is M subgroups Subgroups other than M-1 subgroups in the group, M is greater than or equal to 1; N frames of point clouds are decoded according to the number of frames in which each subgroup of the M subgroups includes point clouds.
  • the parsing unit 1702 is specifically configured to: parse one or more bit strings from the code stream, where the length of the s-th bit string in the one or more bit strings is one or more sub-strings
  • the s-th subgroup in the group includes the number of frames of the point cloud; one or more subgroups correspond to one or more bit strings.
  • the decoding unit 1703 is specifically configured to: obtain the number of frames of each subgroup including a point cloud in one or more subgroups according to the length of each bitstring in one or more bitstrings; determine M subgroups Each subgroup in includes the number of frames of the point cloud, where the M subgroups include one or more subgroups; the N frame point cloud is decoded according to the number of frames in which each subgroup of the M subgroups includes the point cloud.
  • one or more subgroups include the s-1th subgroup and the sth subgroup, where the value of the bit in the bit string corresponding to the s-1th subgroup is the same as the sth subgroup The values of the bits in the corresponding bit string are different.
  • the values of the bits in the bit string corresponding to each subgroup in one or more subgroups are the same.
  • the parsing unit 1702 is further configured to: parse out from the code stream the rotation angle information of one or more matching patches in the patch set of the first frame point cloud in the current subgroup; according to the first frame point cloud The rotation angle information of one or more matching patches in the patch set determines the rotation angle information of the matching patch in the patch set of the non-first frame point cloud in the current subgroup.
  • the receiving unit 1701 and the parsing unit 1702 are used to perform the relevant content of step S1501 in the embodiment shown in FIG. 15, and the decoding unit 1703 is used to perform the relevant content of step S1502 in the embodiment shown in FIG. 15.
  • the position of the decoding device 1700 corresponds to the auxiliary information decoding module 204 in FIG. 4, in other words, the functions of the receiving unit 1701, the parsing unit 1702, and the decoding unit 1703 can be implemented by the auxiliary information decoding module 204 in FIG. .
  • this application is not limited to this.
  • FIG. 18 is a schematic structural diagram of a point cloud encoding device according to an embodiment of the present application. As shown in FIG. 18, the encoding device 1800 includes:
  • the obtaining unit 1801 is configured to obtain rotation angle information of one or more matching patches in the patch set of the first frame point cloud of the current subgroup;
  • the encoding unit 1802 is configured to encode the rotation angle information of one or more matching patches in the patch set of the first frame point cloud of the current subgroup into the code stream.
  • the position of the encoding device 1800 corresponds to the auxiliary information encoding module 108 in FIG. 2.
  • the functions of the obtaining unit 1801 and the encoding unit 1802 can be provided by the auxiliary information encoding module 108 in FIG. 2 achieve.
  • this application is not limited to this.
  • FIG. 19 is a schematic structural diagram of another point cloud decoding device according to an embodiment of the present application.
  • the decoding device 1900 includes:
  • the receiving unit 1901 is used to receive the code stream
  • the decoding unit 1902 is configured to parse out the rotation angle information of one or more matching patches in the patch set of the first frame point cloud in the current subgroup from the code stream;
  • the determining unit 1903 is configured to determine the rotation angle information of the matching patch in the patch set of the non-first frame point cloud in the current subgroup according to the rotation angle information of one or more matching patches in the patch set of the first frame point cloud; the current sub The rotation angle information of the matching patch of the point cloud in the group is used to decode the point cloud in the current subgroup.
  • the position of the decoding device 1900 corresponds to the auxiliary information decoding module 204 in FIG. 4, in other words, the functions of the receiving unit 1901, the decoding unit 1902, and the determining unit 1903 can be determined by the auxiliary information in FIG. Decoding module 204 to achieve.
  • this application is not limited to this.
  • FIG. 20 is a schematic structural diagram of a point cloud encoding device according to an embodiment of the present application. As shown in FIG. 20, the encoding device 2000 includes:
  • the determining unit 2001 is used to determine instruction information for indicating whether to encode the point cloud according to the target encoding method; the target encoding method includes part or all or the third aspect of the point cloud encoding method as described in the first aspect The mentioned point cloud coding method;
  • the encoding unit 2002 is used to encode the instruction information into the code stream.
  • the position of the encoding device 2000 corresponds to the auxiliary information encoding module 108 in FIG. 2.
  • the functions of the determining unit 2001 and the encoding unit 2002 may be derived from the auxiliary information encoding module 108 in FIG. 2 achieve.
  • this application is not limited to this.
  • FIG. 21 is a schematic structural diagram of another point cloud decoding device according to an embodiment of the present application.
  • the decoding device 2100 includes:
  • the parsing unit 2101 is used to parse the code stream to obtain instruction information used to indicate whether to decode the point cloud according to the target decoding method;
  • the target decoding method includes the part of the point cloud coding method as shown in FIG. 5 Or the point cloud coding method described in all or the fourth aspect;
  • the decoding unit 2102 is configured to decode the point cloud according to the target decoding method when the instruction information is used to instruct to decode the point cloud according to the target decoding method.
  • the position of the decoding device 2100 corresponds to the auxiliary information decoding module 204 in FIG. 4, in other words, the functions of the parsing unit 2101 and the decoding unit 2102 can be derived from the auxiliary information decoding module 204 in FIG. achieve.
  • this application is not limited to this.
  • the obtaining device 2200 may include a processor 2201, a memory 2202, and a bus system 2203.
  • the processor 2201 and the memory 2202 are connected through a bus system 2203.
  • the memory 2202 is used to store instructions.
  • the processor 2201 is used to execute the instructions stored in the memory 2202 to perform various point cloud encoding or decoding methods described in this application. , Especially the method of filtering the current image block based on the block size of the current image block. In order to avoid repetition, they are not described in detail here.
  • the processor 2201 may be a central processing unit (CPU), and the processor 2201 may also be other general-purpose processors, DSP, ASIC, FPGA or other programmable logic devices, discrete gates Or transistor logic devices, discrete hardware components, etc.
  • the general-purpose processor may be a microprocessor or the processor may be any conventional processor or the like.
  • the memory 2202 may include a ROM device or a RAM device. Any other suitable type of storage device may also be used as the memory 2202.
  • the memory 2202 may include code and data 22021 accessed by the processor 2201 using the bus 2203.
  • the memory 2202 may further include an operating system 22023 and an application program 22022, and the application program 22022 includes a point cloud encoding or decoding method (in particular, a point cloud sub-group letter encoding/decoding method described in this application) that allows the processor 2201 to perform this application.
  • the application program 22022 may include applications 1 to N, which further include a point cloud encoding or decoding application (referred to as a point cloud decoding application) that performs the point cloud encoding or decoding method described in this application.
  • the bus system 2203 may also include a power bus, a control bus, and a status signal bus. However, for clarity, various buses are marked as the bus system 2203 in the figure.
  • the encoding device 2200 may further include one or more output devices, such as a display 2204.
  • the display 2204 may be a tactile display that combines the display with a tactile unit that operably senses touch input.
  • the display 2204 may be connected to the processor 2201 via the bus 2203.
  • the decoding device 2200 can execute the point cloud encoding method in this application, and can also perform the point cloud decoding method in this application.
  • Computer readable media may include computer readable storage media, which corresponds to tangible media, such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another (eg, according to a communication protocol).
  • computer-readable media may generally correspond to (1) non-transitory tangible computer-readable storage media, or (2) communication media, such as signals or carrier waves.
  • Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementation of the techniques described in this application.
  • the computer program product may include a computer-readable medium.
  • Such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM, or other optical disk storage devices, magnetic disk storage devices, or other magnetic storage devices, flash memory, or may be used to store instructions or data structures
  • coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technology such as infrared, radio, and microwave are used to transmit instructions from a website, server, or other remote source
  • coaxial cable Wire, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of media.
  • the computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other temporary media, but are actually directed to non-transitory tangible storage media.
  • magnetic disks and optical disks include compact disks (CDs), laser optical disks, optical optical disks, DVDs, and Blu-ray disks, where magnetic disks typically reproduce data magnetically, while optical disks use lasers to reproduce data optically. Combinations of the above should also be included in the scope of computer-readable media.
  • DSPs digital signal processors
  • ASICs application specific integrated circuits
  • FPGAs field programmable logic arrays
  • the term "processor” as used herein may refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein.
  • the functions described in the various illustrative logical blocks, modules, and steps described herein may be provided within dedicated hardware and/or software modules configured for encoding and decoding, or in combination Into the combined codec.
  • the techniques can be fully implemented in one or more circuits or logic elements.
  • various illustrative logical blocks, units, and modules in the encoder 100 and the decoder 200 may be understood as corresponding circuit devices or logic elements.
  • the technology of the present application can be implemented in a variety of devices or equipment, including wireless handsets, integrated circuits (ICs), or a set of ICs (eg, chipsets).
  • ICs integrated circuits
  • a set of ICs eg, chipsets
  • Various components, modules or units are described in this application to emphasize the functional aspects of the device for performing the disclosed technology, but do not necessarily need to be implemented by different hardware units.
  • various units may be combined in a codec hardware unit in combination with suitable software and/or firmware, or by interoperating hardware units (including one or more processors as described above) provide.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种点云的编解码方法,包括获取N帧点云的子组信息,该子组信息包括N帧点云被划分成子组的个数M和/或M个子组中一个或多个子组中的每个子组中包括点云的帧数;将N帧点云的子组信息编入码流。接收码流;从码流中解析出子组信息,该子组信息包括N帧点云被划分为子组的个数M和/或M个子组中的一个或多个子组中的每个子组中包括点云的帧数;根据子组信息对N帧点云进行解码。采用本申请实施例有利于提高点云数据的编解码效率。

Description

点云的编解码方法及装置
本申请要求于2018年12月13日递交中国知识产权局、申请号为201811538662.9,发明名称为“点云的编解码方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及点云领域,特别涉及一种点云的编解码方法及装置。
背景技术
随着3d传感器(例如3d扫描仪)技术的不断发展,采集点云数据越来越便捷,所采集的点云数据的规模也越来越大,因此,如何有效地对点云数据进行编码,成为迫切需要解决的问题。
在现有的点云编解码过程中,采用固定帧长对信号进行处理和编码时,由于没有考虑连续多帧点云间patch的相关性,使得具有匹配关系的patch的空间一致性无法得到有效保证,从而使得视频编码和patch的辅助信息编码的性能会降低。
发明内容
本申请实施例提供一种点云的编解码方法及装置,有利于提高点云数据的编码效率。
第一方面,本申请实施例提供一种点云的编码方法,包括:
获取N帧点云的子组信息,该子组信息包括N帧点云被划分成子组的个数M和/或M个子组中的一个或多个子组中的每个子组包括点云的帧数;将N帧点云的子组信息编入码流;根据N帧点云的子组信息对N帧点云进行编码。
其中,M个子组是对N帧点云采用自适应分组的方式进行分组得到的。具体地,对N帧点云中的多帧点云进行预划分,以得到预划分子组;根据预划分子组的特征信息,确定预划分子组为所述M个子组中的一个子组;特征信息用于表征所述预划分子组中的点云的占用图尺寸。
在一个实施例中,根据N帧点云的子组信息对N帧点云进行编码具体包括:该N帧点云的子组信息用于对N帧点云的patch的辅助信息进行解码,再根据N帧点云的patch的辅助信息对N帧点云进行编码。
在一个可能的实施例中,将N帧点云的子组信息编入码流,包括:将N 0,N 1,…,N M-1和/或M编入码流,M大于或等于1,或者;将N 0,N 1,…,N M-1中的M-1个和M编入码流,M大于或等于1,或者;其中,N m为M个子组中的第i个子组中点云的帧数,m=0,1,…,M-1。
其中,将N 0,N 1,…,N M-1和/或M编入码流包括:
只将M编入码流,此时M=1,即将N帧点云分成一组;或者,将N 0,N 1,…,N M-1编入码流,M为大于或等于1;或者,将N 0,N 1,…,N M-1与M编入码流,M为大于或等于1。
在一个可能的实施例中,将N帧点云的子组信息编入码流,还包括:
将N 0,N 1,…,N M-1中的T个和/或T编入码流,其中,T大于0且小于M-1。
其中,该N 0,N 1,…,N M-1中的T个可以分别是指M个子组中在划分顺序上连续T个子组的每个子组包括点云的帧数。
在此需要说明的是,将N 0,N 1,…,N M-1中的一个或多个编入码流可采用定长编码方式或变长编码方式。其中,定长编码方式具体是采用固定比特数进行编码;变长编码方式包括但不限定于算术编码方式和指数哥伦布编码方式。
在一个可能的实施例中,将N帧点云的子组信息编入码流,包括:根据M个子组中的一个或多个子组中点云的帧数生成一个或多个比特串,其中,一个或多个比特串中的第s个比特串的长度为一个或多个子组中第s个子组中包括点云的帧数;将一个或多个比特串编入码流。采用此方式,对于N帧点云,最终可以得到由N比特位组成的比特串(即M个比特串),对于N比特位可以采用N比特进行编码,或者采用算术编码方式进行编码。
在一个可能的实施例中,一个或多个子组包括第s-1个子组和第s个子组,其中,第s-1个子组对应的比特串中的比特位的取值与第s个子组对应的比特串中的比特位的取值是不同的。比如第s-1个子组对应的比特串中比特位的取值为第一标识,第s个子组对应的比特串中比特位的取值为第二标识。对于第s+1个子组对应的比特串中比特位的取值可为第一标识或者第三标识,第三标识与第一标识和第二标识均不相同。
可选地,第一标识可为0或1;第二标识可为0或1,其中第一标识与第二标识不相同。
在一个可能的实施例中,一个或多个子组中每个子组对应的比特串中的比特位的取值是相同的。需要指出的是,每个子组对应的比特串的比特位的取值是相同的是指每个子组对应的比特串中所有比特位的取值都是相同的。
在此需要说明的是,一个子组对应一个比特串,通过比特串的一个比特位代表一个子组中的点云帧,就可以根据比特串中比特位的个数(即比特串的长度)来确定该比特串对应的子组包括点云的帧数。对于一个子组对应的比特串,该比特串中所有比特位的取值是相同的,且对于在划分顺序上相邻的两个子组分别对应的两个比特串中的比特位取值是不同的,因此可以区分出在划分顺序上相邻的两个子组分别包括点云的帧数。
在一个可能的实施例中,编码方法还包括:将当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息编入码流。
其中,旋转角度信息包括具体的旋转角度值或旋转角度索引。比如若patch的旋转角度值为0时,则表示该patch不旋转;若patch的旋转角度值为20,则表示该patch旋转20°。再比如若patch的旋转角度索引为0,表示该patch不旋转;若patch的旋转角度索引为1,表示该patch旋转15°;若patch的旋转角度索引为2,表示该patch旋转30°。
其中,可采用定长编码方式或变长编码方式将旋转角度信息写入码流。
需要说明的是,当前子组的首帧点云的patch集合中的一个或多个匹配patch是指在当前子组中首帧点云的参考帧的patch集合中找到与之匹配的patch的patch。当前子组中首帧点云的参考帧可以为当前子组的前一个子组中的点云。
当前子组的首帧点云的patch集合中的一个或多个匹配patch是指在当前子组中首帧点云的参考帧的patch集合中找到与之匹配的patch的patch。
第二方面,本申请实施例提供一种点云的解码方法,包括:
接收码流;从该码流中解析出子组信息,子组信息包括N帧点云被划分为子组的个数M和/或M个子组中的一个或多个子组中的每个子组中包括点云的帧数;根据子组信息对N帧点云进行解码。
其中,根据子组信息对N帧点云进行解码包括:根据子组信息获取N帧点云的patch的辅助信息,根据该N帧点云的patch的辅助信息重建N帧点云。
在一个可能的实施例中,从码流中解析出子组信息,包括:从码流中解析出M个子组中的每个子组中点云的帧数和/或M,M大于或等于1,或者;从码流中解析出M和M-1个子组的每个子组中点云的帧数,M大于或等于1。
其中,从码流中解析出M个子组中的每个子组中点云的帧数和/或M,包括:
从码流中只解析出M,此时M=1,或者;从码流中只解析出N 0,N 1,…,N M-1,M大于或等于1,或者;首先从码流中解析出M,再根据M解析出N 0,N 1,…,N M-1,此时M大于或等于1;其中,N m为M个子组中的第m个子组中点云的帧数,m=0,1,…,M-1。
需要说明的是,M=1即是将N帧点云分成一个子组,该子组包括N帧点云,因此解码端可根据M=1推导得到编码端是将N帧点云分成一个子组,该子组包括N帧点云,进而解码端可根据M和N对N帧点云进行解码。
在一个可能的实施例中,根据子组信息对N帧点云进行解码,包括:
根据N和M-1个子组的每个子组中点云的帧数确定目标子组中点云的帧数,目标子组为M个子组中除了M-1个子组之外的子组,M大于或等于1;根据M个子组中每个子组包括点云的帧数对N帧点云进行解码。
在一个可能的实施例中,对于N帧点云中的一部分帧采用自适应分组,另一部分帧采用固定帧长进行分组,因此可从码流中解析出N 0,N 1,…,N M-1中的T个和/或T。其中,N 0,N 1,…,N M-1中的T个分别是指M个子组中在划分顺序上连续T个子组的每个子组包括点云的帧数。当从码流中解析出N 0,N 1,…,N M-1中的T个和/或T后,根据N和N 0,N 1,…,N M-1中的T个得到M个子组中除了该T个子组包括点云之外的点云的帧数P,由于对P帧点云采用固定帧长进行分组,因此根据P和固定帧长确定P帧点云被划分为子组的个数,即P/固定帧长;进而确定M及M个子组中每个子组包括点云的帧数,M=T+P/固定帧长。
在一个可能的实施例中,从码流中解析出子组信息,包括:从码流中解析出一个或多个比特串,其中,一个或多个比特串中的第s个比特串的长度为一个或多个子组中第s个子组中包括点云的帧数;一个或多个子组对应于一个或多个比特串。
在一个可能的实施例中,根据子组信息对N帧点云进行解码,包括:根据一个或多个比特串中每个比特串的长度获取一个或多个子组中每个子组包括点云的帧数;确定M个子组中每个子组包括点云的帧数,其中,M个子组包括一个或多个子组;根据M个子组中每个子组包括点云的帧数对N帧点云进行解码。
其中,当多个比特串即为M个比特串时,根据该多个比特串(即M个比特串)中每个比特串的长度即可确定M个子组中每个子组中包括点云的帧数。
当多个比特串为M-1个比特串时,可根据M-1个比特串中每个比特串的长度确定M-1个子组中每个子组中包括点云的帧数,在根据N和M-1个子组中每个子组中包括点云的帧数确定目标子组中包括点云的帧数,其中,M-1个子组对应于M-1个比特串,目标子组为 M个子组中除了M-1个子组之外的子组。
当一个多个比特串为T个比特串时,其中T大于0且小于M-1,可根据T个比特串中每个比特串的长度确定T个子组中每个子组中包括点云的帧数,T个比特串对应于T个子组。然后可根据N和T个子组中每个子组中包括点云的帧数确定除了该T个子组包括点云之外的点云的帧数P,由于对P帧点云采用固定帧长进行分组,因此根据P和固定帧长确定P帧点云被划分为子组的个数,即P/固定帧长;进而确定M及M个子组中每个子组包括点云的帧数,M=T+P/固定帧长。
在一个可能的实施例中,一个或多个子组包括第s-1个子组和第s个子组,其中,第s-1个子组对应的比特串中的比特位的取值与第s个子组对应的比特串中的比特位的取值是不同的。
在一个可能的实施例中,一个或多个子组中每个子组对应的比特串中的比特位的取值是相同的。其中,每个子组对应的比特串中的比特位的取值是相同的是指每个子组对应的比特串中所有比特位的取值都相同。
需要说明的是,对于第m个子组对应的比特串的比特位取值为第一标识,当第m个子组中的第0个比特位为第一标识,且第n个比特位取值为第一标识,第n+1个比特位的取值不为第一标识时,确定第m个子组中的帧数为n+1。第一标识例如为0或1。
在一个可能的实施例中,从码流中解析出当前子组中首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;根据首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息确定当前子组中非首帧点云的patch集合中的匹配patch的旋转角度信息。
其中,当前子组的首帧点云的patch集合中的一个或多个匹配patch是指在当前子组中首帧点云的参考帧的patch集合中找到与之匹配的patch的patch。当前子组中首帧点云的参考帧可以为当前子组的前一个子组中的点云。
当前子组中非首帧点云是指在当前子组中除了首帧之外的点云。当前子组中非首帧点云的patch集合中的匹配patch是指在当前子组中非首帧点的patch集合中与首帧点云的patch集合中的一个或多个匹配patch具有匹配关系的patch。
其中,旋转角度信息包括具体的旋转角度值或旋转角度索引。比如若patch的旋转角度值为0时,则表示该patch不旋转;若patch的旋转角度值为20,则表示该patch旋转20°。再比如若patch的旋转角度索引为0,表示该patch不旋转;若patch的旋转角度索引为1,表示该patch旋转15°;若patch的旋转角度索引为2,表示该patch旋转30°。
可以看出,在本申请实施例的方案中,将对N帧点云采用自适应分组的方式进行分组得到N帧点云的子组信息编入码流,在解码端解码得到子组信息。自适应分组的方式充分考虑了连续多帧点云间patch的相关性,使得具有匹配关系的patch的空间一致性得到充分保证,提高了点云的编码效率。自适应分组得到子组信息用于指导解码端对点云数据进行正确解码。
第三方面,本申请实施例提供另一种点云的编码方法,包括:
获取当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;将当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息编入码流。
其中,当前子组是对N帧点云采用自适应分组的方式进行分组得到的。
其中,其中,当前子组中非首帧点云是指在当前子组中除了首帧之外的点云。当前子组的首帧点云的patch集合中的一个或多个匹配patch是指在当前子组中首帧点云的参考帧的patch集合中找到与之匹配的patch的patch。当前子组中首帧点云的参考帧可以为当前子组的前一个子组中的点云。
需要说明的是,可采用定长或变长编码方式将当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息编入码流。其中,定长编码方式包括但不限定于固定比特位编码方式,变长编码方式包括但不限定于算术编码方式和指数哥伦布编码方式。
其中,旋转角度信息包括具体的旋转角度值或旋转角度索引。比如若patch的旋转角度值为0时,则表示该patch不旋转;若patch的旋转角度值为20,则表示该patch旋转20°。再比如若patch的旋转角度索引为0,表示该patch不旋转;若patch的旋转角度索引为1,表示该patch旋转15°;若patch的旋转角度索引为2,表示该patch旋转30°。
第四方面,本申请实施例提供另一种点云的解码方法,包括:
接收码流;从该码流中解析出当前子组中首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;根据首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息确定当前子组中非首帧点云的patch集合中的匹配patch的旋转角度信息;当前子组中点云的匹配patch的旋转角度信息用于对当前子组中的点云进行解码。
其中,当前子组的首帧点云的patch集合中的一个或多个匹配patch是指在当前子组中首帧点云的参考帧的patch集合中找到与之匹配的patch的patch。当前子组中首帧点云的参考帧可以为当前子组的前一个子组中的点云。
其中,当前子组中非首帧点云是指在当前子组中除了首帧之外的点云。当前子组中非首帧点云的patch集合中的匹配patch是指在当前子组中非首帧点的patch集合中与首帧点云的patch集合中的一个或多个匹配patch具有匹配关系的patch。
需要说明的而是,对当前子组进行解码包括但不限定于当前子组中点云的匹配patch的旋转角度信息,还可包括当前子组中点云的非匹配patch的旋转角度信息。
其中,旋转角度信息包括具体的旋转角度值或旋转角度索引。比如若patch的旋转角度值为0时,则表示该patch不旋转;若patch的旋转角度值为20,则表示该patch旋转20°。再比如若patch的旋转角度索引为0,表示该patch不旋转;若patch的旋转角度索引为1,表示该patch旋转15°;若patch的旋转角度索引为2,表示该patch旋转30°。
需要说明的是,可采用定长或变长解码方式从码流中解码出一个或多个匹配patch的旋转角度信息。其中,定长解码方式包括但不限定于固定比特位解码方式,变长解码方式包括但不限定于算术解码方式和指数哥伦布解码方式。
第五方面,本申请实施例提供另一种点云的编码方法,包括:
确定指示信息,该指示信息用于指示是否按照目标编码方法对点云进行编码;目标编码方法包括如第一方面所述的点云编码方法的部分或全部或第三方面所述的点云编码方法;将指示信息编入码流。
第六方面,本申请实施例提供另一种点云的解码方法,包括:
解析码流,以得到指示信息,该指示信息用于指示是否按照目标解码方法对点云进行解码;目标解码方法包括如第二方面所述的点云编码方法的部分或全部或第四方面的点云编码方法;当指示信息用于指示按照目标解码方法对点云进行解码时,按照目标解码方法对点云进行解码。
第七方面,本申请实施例提供一种点云的编码装置,包括:
获取单元,用于获取N帧点云的子组信息,该子组信息包括N帧点云被划分成子组的个数M和/或M个子组中的一个或多个子组中的每个子组中包括点云的帧数;编码单元,用于将N帧点云的子组信息编入码流;编码单元,还用于根据子组信息对N帧点云进行编码。
在一个可能的实施例中,该编码装置还包括:
分组单元,用于将N帧点云划分成M个子组,其中,将N帧点云划分成M个子组包括:对N帧点云中的多帧点云进行预划分,以得到预划分子组;根据预划分子组的特征信息,确定预划分子组为M个子组中的一个子组;特征信息用于表征预划分子组中的点云的占用图尺寸。
在一个可能的实施例中,在将N帧点云的子组信息编入码流的方面,编码单元具体用于:将N 0,N 1,…,N M-1和/或M编入码流,M大于或等于1,或者;将N 0,N 1,…,N M-1中的M-1个和M编入码流,M大于或等于1,或者;其中,N m为M个子组中的第m个子组中点云的帧数,m=0,1,…,M-1。
在一个可能的实施例中,在将N帧点云的子组信息编入码流的方面,编码单元具体用于:根据M个子组中的一个或多个子组中点云的帧数生成一个或多个比特串,其中,一个或多个比特串中的第s个比特串的长度为一个或多个子组中第s个子组中包括点云的帧数;将一个或多个比特串编入码流。
在一个可能的实施例中,一个或多个子组包括第s-1个子组和第s个子组,其中,第s-1个子组对应的比特串中的比特位的取值与第s个子组对应的比特串中的比特位的取值是不同的。
在一个可能的实施例中,一个或多个子组中每个子组对应的比特串中的比特位的取值是相同的。
在一个可能的实施例中,编码单元还用于:将当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息编入码流。
第八方面,本申请实施例提供一种点云的解码装置,包括:
接收单元,用于接收码流;解析单元,用于从码流中解析出子组信息,该子组信息包括N帧点云被划分为子组的个数M和/或M个子组中的一个或多个子组中的每个子组中包括点云的帧数;解码单元,用于根据子组信息对N帧点云进行解码。
在一个可能的实施例中,解析单元具体用于:从码流中解析出M个子组中的每个子组中点云的帧数和/或M,M大于或等于1,或者;从码流中解析出M和M-1个子组的每个子组中点云的帧数,M大于或等于1。
在一个可能的实施例中,解码单元具体用于:根据N和M-1个子组的每个子组中点云的帧数确定目标子组中点云的帧数,目标子组为M个子组中除了M-1个子组之外的子组, M大于或等于1;根据M个子组中每个子组包括点云的帧数对N帧点云进行解码。
在一个可能的实施例中,解析单元具体用于:从码流中解析出一个或多个比特串,其中,一个或多个比特串中的第s个比特串的长度为一个或多个子组中第s个子组中包括点云的帧数;一个或多个子组对应于一个或多个比特串。
在一个可能的实施例中,解码单元具体用于:根据一个或多个比特串中每个比特串的长度获取一个或多个子组中每个子组包括点云的帧数;确定M个子组中每个子组包括点云的帧数,其中,M个子组包括一个或多个子组;根据M个子组中每个子组包括点云的帧数对N帧点云进行解码。
在一个可能的实施例中,一个或多个子组包括第s-1个子组和第s个子组,其中,第s-1个子组对应的比特串中的比特位的取值与第s个子组对应的比特串中的比特位的取值是不同的。
在一个可能的实施例中,一个或多个子组中每个子组对应的比特串中的比特位的取值是相同的。
在一个可能的实施例中,解析单元还用于:从码流中解析出当前子组中首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;根据首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息确定当前子组中非首帧点云的patch集合中的匹配patch的旋转角度信息。
第九方面,本申请实施例提供另一种点云的编码装置,包括:
获取单元,用于获取当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;
编码单元,用于将当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息编入码流。
第十方面,本申请实施例提供另一种点云的解码装置,包括:
接收单元,用于接收码流;
解码单元,用于从码流中解析出当前子组中首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;
确定单元,用于根据首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息确定当前子组中非首帧点云的patch集合中的匹配patch的旋转角度信息;
当前子组中点云的匹配patch的旋转角度信息用于对当前子组中的点云进行解码。
第十一方面,本申请实施例提供另一种点云的编码装置,包括:确定单元,用于确定指示信息,该指示信息用于指示是否按照目标编码方法对点云进行编码;目标编码方法包括如第一方面所述的点云编码方法的部分或全部或第三方面所述的点云编码方法;
编码单元,用于将指示信息编入码流。
第十二方面,本申请实施例提供另一种点云的解码装置,包括:
解析单元,用于解析码流,以得到指示信息,该指示信息用于指示是否按照目标解码方法对点云进行解码;目标解码方法包括如第二方面所述的点云编码方法的部分或全部或第四方面所述的点云编码方法;解码单元,用于当指示信息用于指示按照目标解码方法对点云进行解码时,按照目标解码方法对点云进行解码。
第十三方面,提供一种译码装置,包括:存储器和处理器;其中,该存储器用于存储程序代码;该处理器用于调用该程序代码,以执行上述第一方面及其可能的设计,或第二方面及其可能的设计提供的任一种点云译码方法。
第十四方面,提供一种编码装置,包括:存储器和处理器;其中,该存储器用于存储程序代码;该处理器用于调用该程序代码,以执行上述第三方面提供的点云编码方法。
第十五方面,提供一种解码装置,包括:存储器和处理器;其中,该存储器用于存储程序代码;该处理器用于调用该程序代码,以执行上述第四方面提供的点云编码方法。
本申请还提供一种计算机可读存储介质,包括程序代码,该程序代码在计算机上运行时,使得该计算机执行如上述第一方面及其可能的设计,或第二方面及其可能的设计提供的任一种点云译码方法。
本申请还提供一种计算机可读存储介质,包括程序代码,该程序代码在计算机上运行时,使得该计算机执行上述第三方面提供的点云编码方法。
本申请还提供一种计算机可读存储介质,包括程序代码,该程序代码在计算机上运行时,使得该计算机执行上述第四方面提供的点云编码方法。
应当理解的是,上述提供的任一种编解码器、处理装置、编解码装置和计算机可读存储介质的有益效果均可以对应参考上文对应方面提供的方法实施例的有益效果,不再赘述。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为可用于本申请实施例的一种实例的点云译码系统的示意性框图;
图2为可用于本申请实施例的一种实例的编码器的示意性框图;
图3为可用于本申请实施例的一种点云、点云的patch以及点云的占用图的示意图;
图4为可用于本申请实施例的一种实例的解码器的示意性框图;
图5为本申请提供的一种点云的编码方法的流程示意图;
图6为本申请实施例提供的一种滑动窗口、步长、预划分子组之间的对应关系的示意图;
图7为本申请实施例提供的一种确定一个子组的方法的流程示意图;
图8A为本申请实施例提供的一种确定子组的过程示意图;
图8B为本申请实施例提供的另一种确定子组的过程示意图;
图9为本申请实施例提供的另一种确定一个子组的方法的流程示意图;
图10为本申请实施例提供的一种确定一个子组的方法的过程示意图;
图11A为本申请实施例基于图10提供的一种确定一个子组的方法的过程示意图;
图11B为本申请实施例基于图10提供的另一种确定一个子组的方法的过程示意图;
图12为本申请实施例提供的一种二分法和预划分子组之间的关系的示意图;
图13为本申请实施例提供的另一种确定一个子组的方法的流程示意图;
图14为本申请实施例提供的另一种确定一个子组的方法的流程示意图;
图15为本申请提供的一种点云的解码方法的流程示意图;
图16为本申请提供的一种点云的编码装置的结构示意图;
图17为本申请提供的一种点云的解码装置的结构示意图;
图18为本申请提供的一种点云的编码装置的结构示意图;
图19为本申请提供的一种点云的解码装置的结构示意图;
图20为本申请提供的一种点云的编码装置的结构示意图;
图21为本申请提供的一种点云的解码装置的结构示意图;
图22为本申请实施例的译码装置的一种实现方式的示意性框图。
具体实施方式
本申请实施例中的术语“至少一个(种)”包括一个(种)或多个(种)。“多个(种)”是指两个(种)或两个(种)以上。例如,A、B和C中的至少一种,包括:单独存在A、单独存在B、同时存在A和B、同时存在A和C、同时存在B和C,以及同时存在A、B和C。本申请实施例中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请实施例中的术语字符“/”,一般表示前后关联对象是一种“或”的关系。在公式中,字符“/”表示除法运算,如A/B表示A除以B。本申请实施例中的术语“第一”、“第二”等是为了区分不同的对象,并不限定该不同对象的顺序。
图1为可用于本申请实施例的一种实例的点云译码系统1的示意性框图。术语“点云译码”或“译码”可一般地指代点云编码或点云解码。点云译码系统1的编码器100可以根据本申请提出的任一种点云编码方法对待编码点云进行编码。点云译码系统1的解码器200可以根据本申请提出的与编码器使用的点云编码方法相对应的点云解码方法对待解码点云进行解码。
如图1所示,点云译码系统1包含源装置10和目的地装置20。源装置10产生经编码点云数据。因此,源装置10可被称为点云编码装置。目的地装置20可对由源装置10所产生的经编码的点云数据进行解码。因此,目的地装置20可被称为点云解码装置。源装置10、目的地装置20或两个的各种实施方案可包含一或多个处理器以及耦合到所述一或多个处理器的存储器。所述存储器可包含但不限于随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)、带电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、快闪存储器或可用于以可由计算机存取的指令或数据结构的形式存储所要的程序代码的任何其它媒体,如本文所描述。
源装置10和目的地装置20可以包括各种装置,包含桌上型计算机、移动计算装置、笔记型(例如,膝上型)计算机、平板计算机、机顶盒、例如所谓的“智能”电话等电话手持机、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机或其类似者。
目的地装置20可经由链路30从源装置10接收经编码点云数据。链路30可包括能够 将经编码点云数据从源装置10移动到目的地装置20的一或多个媒体或装置。在一个实例中,链路30可包括使得源装置10能够实时将经编码点云数据直接发送到目的地装置20的一或多个通信媒体。在此实例中,源装置10可根据通信标准(例如无线通信协议)来调制经编码点云数据,且可将经调制的点云数据发送到目的地装置20。所述一或多个通信媒体可包含无线和/或有线通信媒体,例如射频(radio frequency,RF)频谱或一或多个物理传输线。所述一或多个通信媒体可形成基于分组的网络的一部分,基于分组的网络例如为局域网、广域网或全球网络(例如,因特网)。所述一或多个通信媒体可包含路由器、交换器、基站或促进从源装置10到目的地装置20的通信的其它设备。
在另一实例中,可将经编码数据从输出接口140输出到存储装置40。类似地,可通过输入接口240从存储装置40存取经编码点云数据。存储装置40可包含多种分布式或本地存取的数据存储媒体中的任一者,例如硬盘驱动器、蓝光光盘、数字多功能光盘(digital versatile disc,DVD)、只读光盘(compact disc read-only memory,CD-ROM)、快闪存储器、易失性或非易失性存储器,或用于存储经编码点云数据的任何其它合适的数字存储媒体。
在另一实例中,存储装置40可对应于文件服务器或可保持由源装置10产生的经编码点云数据的另一中间存储装置。目的地装置20可经由流式传输或下载从存储装置40存取所存储的点云数据。文件服务器可为任何类型的能够存储经编码的点云数据并且将经编码的点云数据发送到目的地装置20的服务器。实例文件服务器包含网络服务器(例如,用于网站)、文件传输协议(file transfer protocol,FTP)服务器、网络附属存储(network attached storage,NAS)装置或本地磁盘驱动器。目的地装置20可通过任何标准数据连接(包含因特网连接)来存取经编码点云数据。这可包含无线信道(例如,Wi-Fi连接)、有线连接(例如,数字用户线路(digital subscriber line,DSL)、电缆调制解调器等),或适合于存取存储在文件服务器上的经编码点云数据的两者的组合。经编码点云数据从存储装置40的传输可为流式传输、下载传输或两者的组合。
图1中所说明的点云译码系统1仅为实例,并且本申请的技术可适用于未必包含点云编码装置与点云解码装置之间的任何数据通信的点云译码(例如,点云编码或点云解码)装置。在其它实例中,数据从本地存储器检索、在网络上流式传输等等。点云编码装置可对数据进行编码并且将数据存储到存储器,和/或点云解码装置可从存储器检索数据并且对数据进行解码。在许多实例中,由并不彼此通信而是仅编码数据到存储器和/或从存储器检索数据且解码数据的装置执行编码和解码。
在图1的实例中,源装置10包含数据源120、编码器100和输出接口140。在一些实例中,输出接口140可包含调节器/解调器(调制解调器)和/或发送器(或称为发射器)。数据源120可包括点云捕获装置(例如,摄像机)、含有先前捕获的点云数据的点云存档、用以从点云内容提供者接收点云数据的点云馈入接口,和/或用于产生点云数据的计算机图形系统,或点云数据的这些来源的组合。
编码器100可对来自数据源120的点云数据进行编码。在一些实例中,源装置10经由输出接口140将经编码点云数据直接发送到目的地装置20。在其它实例中,经编码点云数据还可存储到存储装置40上,供目的地装置20以后存取来用于解码和/或播放。
在图1的实例中,目的地装置20包含输入接口240、解码器200和显示装置220。在 一些实例中,输入接口240包含接收器和/或调制解调器。输入接口240可经由链路30和/或从存储装置40接收经编码点云数据。显示装置220可与目的地装置20集成或可在目的地装置20外部。一般来说,显示装置220显示经解码点云数据。显示装置220可包括多种显示装置,例如,液晶显示器(liquid crystal display,LCD)、等离子显示器、有机发光二极管(organic light-emitting diode,OLED)显示器或其它类型的显示装置。
尽管图1中未图示,但在一些方面,编码器100和解码器200可各自与音频编码器和解码器集成,且可包含适当的多路复用器-多路分用器(multiplexer-demultiplexer,MUX-DEMUX)单元或其它硬件和软件,以处置共同数据流或单独数据流中的音频和视频两者的编码。在一些实例中,如果适用的话,那么MUX-DEMUX单元可符合ITU H.223多路复用器协议,或例如用户数据报协议(user datagram protocol,UDP)等其它协议。
编码器100和解码器200各自可实施为例如以下各项的多种电路中的任一者:一个或多个微处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)、离散逻辑、硬件或其任何组合。如果部分地以软件来实施本申请,那么装置可将用于软件的指令存储在合适的非易失性计算机可读存储媒体中,且可使用一或多个处理器在硬件中执行所述指令从而实施本申请技术。前述内容(包含硬件、软件、硬件与软件的组合等)中的任一者可被视为一或多个处理器。编码器100和解码器200中的每一者可包含在一或多个编码器或解码器中,所述编码器或解码器中的任一者可集成为相应装置中的组合编码器/解码器(编码解码器)的一部分。
本申请可大体上将编码器100称为将某些信息“发信号通知”或“发送”到例如解码器200的另一装置。术语“发信号通知”或“发送”可大体上指代用以对经压缩点云数据进行解码的语法元素和/或其它数据的传送。此传送可实时或几乎实时地发生。替代地,此通信可经过一段时间后发生,例如可在编码时在经编码位流中将语法元素存储到计算机可读存储媒体时发生,解码装置接着可在所述语法元素存储到此媒体之后的任何时间检索所述语法元素。
如图2所示,为可用于本申请实施例的一种实例的编码器100的示意性框图。图2是以MPEG(moving picture expert group)点云压缩(point cloud compression,PCC)编码框架为例进行说明的。在图2的实例中,编码器100可以包括patch信息生成模块101、打包模块102、深度图生成模块103、纹理图生成模块104、第一填充模块105、基于图像或视频的编码模块106、占用图编码模块107、辅助信息编码模块108和复用模块109等。另外,编码器100还可以包括点云滤波模块110、第二填充模块111和点云重构模块112等。其中:
patch信息生成模块101,用于采用某种方法将一帧点云分割产生多个patch,以及获得所生成的patch的相关信息等。其中,patch是指一帧点云中部分点构成的集合,通常一个连通区域对应一个patch。patch的相关信息可以包括但不限于以下信息中的至少一项:点云所分成的patch的个数、每个patch在三维空间中的位置信息、每个patch的法线坐标轴的索引、每个patch从三维空间投影到二维空间产生的深度图、每个patch的深度图大小(例如深度图的宽和高)、每个patch从三维空间投影到二维空间产生的占用图等。该相关信息中的部分,如点云所分成的patch的个数,每个patch的法线坐标轴的索引,每个patch的深度图大小、每个patch在点云中的位置信息、每个patch的占用图的尺寸信息等,可以作 为辅助信息被发送到辅助信息编码模块108,以进行编码(即压缩编码)。每个patch的占用图可以被发送到打包模块102进行打包,具体的,首先基于本申请所述全局匹配patch的获取方法获取点云的全局匹配patch,在打包时优先打包每帧点云的全局patch,然后再打包非全局匹配patch,以得到该点云的占用图。再一方面,各patch在该点云占用图中的具体位置信息和各patch的深度图等可以被发送到深度图生成模块103。
打包模块102获得该点云的占用图后,一方面可以将该点云的占用图经第二填充模块111进行填充后发送到占用图编码模块107以进行编码。另一方面可以利用该点云的占用图指导深度图生成模块103生成该点云的深度图和指导纹理图生成模块104生成该点云的纹理图。
如图3所示,为可适用于本申请实施例的一种点云、点云的patch以及点云的占用图的示意图。其中,图3中的(a)为一帧点云的示意图,图3中的(b)为基于图3中的(a)获得的点云的patch的示意图,图3中的(c)为图3中的(b)所示的各patch映射到二维平面上所得到的各patch的占用图经打包得到的该点云的占用图的示意图。
深度图生成模块103,用于根据点云的占用图、该点云的各patch的占用图和深度信息,生成该点云的深度图,并将所生成的深度图发送到第一填充模块105,以对深度图中的空白像素进行填充,得到经填充的深度图。
纹理图生成模块104,用于根据点云的占用图、该点云的各patch的占用图和纹理信息,生成该点云的纹理图,并将所生成的纹理图发送到第一填充模块105,以对纹理图中的空白像素进行填充,得到经填充的纹理图。
经填充的深度图和经填充的纹理图被第一填充模块105发送到基于图像或视频的编码模块106,以进行基于图像或视频的编码。后续:
一方面,基于图像或视频的编码模块106、占用图编码模块107、辅助信息编码模块108,将所得到的编码结果(即码流)发送到复用模块109,以合并成一个码流,该码流可以被发送到输出接口140。
另一方面,基于图像或视频的编码模块106所得到的编码结果(即码流)发送到点云重构模块112进行点云重构,以得到经重构的点云(即得到重构的点云几何信息)。具体的,对基于图像或视频的编码模块106所得到的经编码的深度图进行视频解码,获得点云的解码深度图,利用解码深度图、该点云的占用图和各patch的辅助信息,获得重构的点云几何信息。其中,点云的几何信息是指点云中的点(例如点云中的每个点)在三维空间中的坐标值。
可选的,点云重构模块112还可以将点云的纹理信息和重构的点云几何信息发送到着色模块,着色模块用于对重构点云进行着色,以获得重构点云的纹理信息。
可选的,纹理图生成模块104还可以基于经点云滤波模块110对重构的点云几何信息进行滤波得到的信息,生成该点云的纹理图。
如图4所示,为可用于本申请实施例的一种实例的解码器200的示意性框图。其中,图4中是以MPEG PCC解码框架为例进行说明的。在图4的实例中,解码器200可以包括解复用模块201、基于图像或视频的解码模块202、占用图解码模块203、辅助信息解码模块204、点云的几何信息重构模块205、点云滤波模块206和点云的纹理信息重构模块207。 其中:
解复用模块201用于将输入的码流(即合并的码流)发送到相应解码模块。具体的,将包含经编码的纹理图的码流和经编码的深度图的码流发送给基于图像或视频的解码模块202;将包含经编码的占用图的码流发送给占用图解码模块203,将包含经编码的辅助信息的码流发送给辅助信息解码模块204。
基于图像或视频的解码模块202,用于对接收到的经编码的纹理图和经编码的深度图进行解码;然后,将解码得到的纹理图信息发送给点云的纹理信息重构模块207,将解码得到的深度图信息发送给点云的几何信息重构模块205。占用图解码模块203,用于对接收到的包含经编码的占用图的码流进行解码,并将解码得到的占用图信息发送给点云的几何信息重构模块205。辅助信息解码模块204,用于对接收到的经编码的辅助信息进行解码,并将解码得到的指示辅助信息的信息发送给点云的几何信息重构模块205。
点云的几何信息重构模块205,用于根据接收到的占用图信息和辅助信息对点云的几何信息进行重构。经重构的点云的几何信息经点云滤波模块206滤波之后,被发送到点云的纹理信息重构模块207。
点云的纹理信息重构模块207,用于对点云的纹理信息进行重构,得到经重构的点云。
可以理解的,图4所示的解码器200仅为示例,具体实现时,解码器200可以包括比图4中所示的更多或更少的模块。本申请实施例对此不进行限定。
为了便于理解本申请实施例提供的技术方案,以下对本申请实施例涉及的技术及术语进行说明。
在MPEG点云编码方法中,编码器首先将待编码点云(即当前帧或者当前帧点云)按照一定准则分割成若干个patch,这些patch相互之间没有交叠区域。然后,将每个patch从三维空间投影到二维平面,得到一个二维图像(即patch的占用图)。接着,将所有patch的占用图(或者降低分辨率后的patch的占用图)按照某种规则紧密的排列在一张二维图像上,得到当前帧占用图。这种排列patch的占用图的方法称为打包(packing)。后续,按照打包顺序生成当前帧深度图和当前帧纹理图。其中,当前帧深度图是各patch经过投影得到的深度按照打包顺序产生的一张二维图像。当前帧纹理图是各patch经过投影得到的纹理图按照打包顺序产生的一张二维图像。当前帧占用图是一张2值二维图像,用于表示该二维图像的各像素位置是否被点云中某点占据。通常,为了节约编码比特,当前帧占用图的分辨率低于当前帧深度图和当前帧纹理图的分辨率。
为了便于理解本申请实施例提供的技术方案,以下对本申请实施例涉及的技术及术语进行说明。
参见图5,图5为本申请实施例提供的一种点云的编码方法的流程示意图。如图5所示,该方法包括:
S501、获取N帧点云的子组信息,该子组信息包括N帧点云被划分成子组的个数M和/或M个子组中的一个或多个子组中的每个子组包括点云的帧数。
其中,M个子组是对N帧点云进行分组得到的,分组的方式可以为自适应分组的方式。
具体地,对N帧点云中的多帧点云进行预划分,以得到预划分子组;根据预划分子组的特征信息,确定预划分子组为所述M个子组中的一个子组;特征信息用于表征所述预划 分子组中的点云的占用图尺寸。
其中,点云的占用图尺寸信息可以是点云的占用图的面积、高度或宽度等,下文中均以点云的占用图尺寸信息是占用图的面积为例进行说明,在此统一说明,下文不再赘述。
N帧点云所划分成的任意一个子组可以包含一帧或多帧点云。不同子组包含的点云的帧数可以相等,也可以不相等。
本申请实施例对预划分所采用的方法不进行限定,例如,可以采用滑动窗口的方法或者二分法对N帧点云进行预划分。
预划分子组中的点云的占用图尺寸可以是基于全局匹配打包算法或基于其他打包算法例如anchor打包算法等所确定的。
预划分子组的特征信息,可以是直接或间接用于表征该预划分子组中的点云的占用图尺寸的信息。例如,该特征信息可以包括以下信息1至信息3中的至少一种:
信息1:预划分子组的全局占用图尺寸。可选的,预划分子组的全局占用图尺寸可以通过该预划分子组的全局占用图的高度(height)和宽度(weight)的乘积(即面积)来表征。可选的,如果在确定一个子组的过程中,所获得的不同的预划分子组的全局占用图的宽度相等,则预划分子组的全局占用图尺寸可以通过该预划分子组的全局占用图的高度来表征。同理,如果在确定一个子组的过程中,所获得的不同的预划分子组的全局占用图的高度相等,则预划分子组的全局占用图尺寸可以通过该预划分子组的全局占用图的宽度来表征。由于预划分子组的全局占用图尺寸限定了该预划分子组中的每一帧点云的占用图的最小尺寸,因此,可以通过预划分子组的全局占用图尺寸来间接表征预划分子组中的点云的占用图尺寸。
信息2:预划分子组中的点云的占用图尺寸,如预划分子组中的一帧或多帧(如所有帧)点云的占用图尺寸。可选的,预划分子组中的点云的占用图尺寸可以通过该预划分子组中的点云的占用图的高度和宽度的乘积(即面积)来表征。可选的,如果在确定一个子组的过程中,所获得的不同点云的占用图的宽度相等,则预划分子组中的点云的占用图尺寸可以通过该预划分子组中的点云的占用图的高度来表征。同理,如果在确定一个子组的过程中,所获得的不同点云的占用图的高度相等,则预划分子组中的点云的占用图尺寸可以通过该预划分子组中的点云的占用图的宽度来表征。信息2是直接用于表征预划分子组中的点云的占用图尺寸的信息。
信息3:预划分子组的并集patch占用图的面积。根据上文中的描述可知,预划分子组的并集patch占用图可以有多个。预划分子组的并集patch占用图的面积,可以是该预划分子组的一个或多个(如所有)并集patch占用图的面积。由于预划分子组的并集patch占用图的面积(如总面积)可以在一定程度上反映该预划分子组中的点云的占用图的面积,因此,可以通过预划分子组的并集patch占用图的面积(如总面积)来间接表征该预划分子组中的点云的占用图尺寸。
可选的,对N帧点云中的多帧点云进行预划分,以得到预划分子组;根据预划分子组的特征信息,确定预划分子组为所述M个子组中的一个子组可以包括如下步骤S101-1~S101-2:
S101-1:以第j帧点云为起点,第i次对待编码点云组中还未分组的点云执行预划分, 以得到第i个预划分子组。第j帧点云是该还未分组的点云中的第一帧点云;i≥1,i是整数;j≥1,j是整数;第i个预划分子组包括从第j帧点云开始的一帧或多帧点云。
S101-2:根据第i个预划分子组的特征信息,确定第i个预划分子组为一个子组。
由该可选的方式可知,本申请实施例支持基于待编码点云组中的点云的顺序,在确定待编码点云组包括的一个子组的情况下,再确定下一个子组的技术方案。其中,在确定一个子组的过程中,通常需要执行一次或多次预划分(如一次或多次滑动窗口,或者一次或多次执行二分法),每一次执行预划分可以确定一个预划分子组。
上述S101-1是S101中的“对待编码点云组中的多帧点云进行预划分,以得到预划分子组”的一种具体实现。上述S101-2是S101中的“根据该预划分子组的特征信息,确定该预划分子组为多个子组中的一个子组”的一种具体实现方式。
以下,对采用滑动窗口实现预划分的过程中的一些术语进行简单介绍,以方便读者理解:
一次滑动窗口可以圈定一帧或多帧点云。在本申请实施例中,均是以“在确定一个子组的过程中,当i=1时,第i次滑动窗口所圈定的点云的帧数等于第i次滑动窗口所采用的步长加1;当i≥2时,第i次滑动窗口所圈定的点云的帧数等于第i次滑动窗口所采用的步长”为例进行说明的。本申请实施例不排除“当i≥1时,第i次滑动窗口所圈定的点云的帧数等于第i次滑动窗口所采用的步长”的情况,该情况下,本领域普通技术人员可以基于下文中的术语介绍,在不付出创造性劳动的情况下,合理推断得到可适用于本情况的相应术语。
不同次滑动窗口所采用的步长可以相等,也可以不相等。
第i次滑动窗口,是从待编码点云组的还未分组的点云中的第一帧点云为起点,滑动i个步长的过程,其中,i个步长中的第t个步长是指第t次滑动窗口所采用的步长,1≤t≤i,t是整数。可以理解的是,通常,当i≥2时,第i次滑动窗口,可以认为是:从待编码点云组的已被圈定的最后一帧点云开始,滑动一个步长,该步长是指第i次滑动窗口所采用的步长。
第i个预划分子组,是第1次至第i次滑动窗口所圈定的点云构成的集合。通常,第i个预划分子组中包含的点云的帧数等于第1次至第i次滑动窗口所采用的步长之和加1。
如图6所示,为本申请实施例提供的一种滑动窗口、步长、预划分子组之间的对应关系的示意图。在图6中,待编码点云组包括点云1~32,图6中的一个矩形框表示一帧点云,矩形框中的数字表示点云的编号。每次滑动窗口所采用的步长是3,即滑动一次窗口可以圈定3帧点云;并且,已划分的子组为子组1和子组2,子组1是点云1~4构成的集合,子组2是点云5构成的集合。基于此,在确定子组3的过程中,以点云6为起点执行第1次滑动窗口后所圈定的点云是点云6~9,此时,所获得的第1个预划分子组是点云6~9构成的集合。以点云6为起点执行第2次滑动窗口,是指从第1次滑动窗口所圈定的最后一帧点云(即点云9)开始滑动一个步长,因此,第2次滑动窗口后所圈定的点云是点云10~12,此时,所获得的第2个预划分子组是点云6~12构成的集合。
在确定不同子组的过程中,i的初始值均为1。如果不加说明,本申请实施例中所描述的第i次滑动窗口均是指在确定一个子组的过程中的第i次滑动窗口,同理,第i个预划分 子组均是指在确定一个子组的过程中的第i个预划分子组。在此统一说明,下文不再赘述。
以下,通过具体示例说明本申请实施例提供的采用滑动窗口的方法实现预划分时,确定待编码点云组中的一个子组的方法。具体可以参考下述实施例一或实施例二。
实施例一
如图7所示,为本申请实施例提供的一种确定一个子组的方法的流程示意图。图7所示的方法包括如下步骤:
S201:以第j帧点云为起点,第1次滑动窗口,以得到第1个预划分子组。具体的,将第1次滑动窗口所圈定的点云构成的集合作为第1个预划分组。其中,第j帧点云是待编码点云组中还未分组的点云中的第一帧点云。
其中,1≤j≤J,J是待编码点云组中包含的点云的帧数。当图7所示的方法用于确定待编码点云的第1个子组时,j等于1。当图7所示的方法用于确定待编码点云的第2个子组或第2个子组之后的任意一个子组时,j等于第1至第i-1子组所包含的点云的帧数之和加1。
S202:判断第1个预划分子组的特征信息是否满足预设条件。
若否,则执行S203。若是,则执行S204。
S203:将第1个预划分子组中的第一帧点云作为第1子组。
执行S203之后,则结束。
例如,参见图6,根据子组2是由1帧点云构成的集合可知:在确定子组2的过程中,所获得的第1个预划分子组(即由点云5~8构成的集合)不满足预设条件。
S204:第i+1次滑动窗口,以得到第i+1个预划分子组。具体的,将第1至第i+1次滑动窗口所圈定的点云构成的集合作为第i+1个预划分组。
其中,i≥1,i是整数。i的初始值是1。
S205:判断第i+1个预划分子组的特征信息是否满足预设条件。
若是,则执行S206。若否,则执行S207。
S206:将i+2赋值给i+1。执行S206之后,返回执行S204。
S207:确定第i个预划分子组为一个子组。
需要说明的是,本实施例中的S204可以替换为:第i次滑动窗口,以得到第i个预划分子组。i≥2,i是整数。i的初始值是2。该情况下,S205可以替换为:判断第i个预划分子组的特征信息是否满足预设条件;S206可以替换为:将i+1赋值给i;S207可以替换为:确定第i-1个预划分子组为一个子组。
例如,参见图6,在确定子组3的过程中,第j帧点云具体是点云6。如果第2个预划分子组的特征信息满足预设条件,则执行第3次滑动窗口获得第3个预划分子组;如果第3个预划分子组的特征信息不满足预设条件,则将第2个预划分子组(即点云6~12构成的集合)作为子组3。
又如,参见图6,假设每次滑动窗口所采用的步长均是3,那么:根据子组1是由4帧点云构成的集合可知:在确定子组1的过程中,所获得的第1个预划分子组(即由点云1~4构成的集合)满足预设条件,且所获得的第2个预划分子组(即由点云1~7构成的集合)不满足预设条件。
在实施例一中,不同次滑动窗口所采用的步长可以相等,也可以不相等。
可选的,第i 1次滑动窗口所采用的步长大于或等于第i 2次滑动窗口所采用的步长,1≤i 1<i 2≤i,i 1和i 2均是整数。也就是说,本申请实施例支持在确定一个子组的过程中,在后执行滑动窗口所采用的步长大于或等于在前执行滑动窗口所采用的步长的技术方案。具体的:
在一些实现方式中,每次滑动窗口所采用的步长相等,也就是说,以固定步长滑动窗口。可选的,固定步长可以是1,这样基于点云为粒度对待编码点云组进行分组,有助于使分组结果更精准。可选的,该固定步长也可以是大于1的值。由于一个待编码点云组如GOF中连续的多帧点云的特征相似度较高,因此,步长较大时,可以减少分组过程中的计算复杂度。
在另一些实现方式中,至少两次滑动窗口所采用的步长不相等,且在后执行滑动窗口所采用的步长大于或等于在前执行滑动窗口所采用的步长。也就是说,以不固定步长滑动窗口。这样,通过选择合适的步长,有助于平衡分组过程中的计算复杂度和分组结果的精准度,从而有助于提高分组的整体性能,进而有助于提高编码性能。可选的,根据公式N[i+1]=N[i]*c,获得第i+1次滑动窗口所采用的步长N[i+1];其中,N[i]是第i次滑动窗口所采用的步长,c是基于第i个预划分子组中大尺寸点云的帧数所确定的。也就是说,相邻两次滑动窗口的过程中,采用在前执行滑动窗口所采用的步长确定在后执行滑动窗口所采用的步长。进一步可选的,c=(a-b)/a;a是第一预设数量,b是第i个预划分子组中大尺寸点云的帧数。当然本申请实施例不限于此。
可以理解的是,具体实现时,不同次滑动窗口所采用的步长是否是固定步长,以及如果不是固定步长时确定步长的方法等均可以是预定义的。
多次执行上述S201~S207,可以得到待编码点云组所分成的多个子组。S201~S207可以认为是通用的确定待编码点云中的一个子组的方法。实际实现时可能存在如下特殊情况:
情况一:根据S201~S207中的描述可知,当第i个预划分子组的特征信息满足条件时,需要执行第i+1次滑动窗口。然而,此时可能存在待编码点云组中没有剩余的未被圈定的点云的情况,即第i个预划分子组包含的最后一帧点云是待编码点云组中的最后一帧点云。该情况下,可以确定第i个预划分子组为待编码点云的最后一个子组。
例如,参见图8A,假设待编码点云组包括点云1~32,且已划分的子组是子组1~6,那么,在确定子组7的过程中,如果第3个预划分子组的特征信息满足预设条件,则按照上述S201~207中的描述,需要获得第4个预划分子组。此时,由于待编码点云组没有剩余的未被圈定的点云,因此,可以将第3个预划分子组(即点云23~32构成的集合)作为子组7。
情况二:在执行第i+1次滑动窗口的过程中,可能存在第i+1次滑动窗口所采用的步长大于待编码点云组的还未被圈定的点云的帧数,该情况下,可以将第i个预划分子组中包含的点云的帧数与待编码点云组的还未被圈定的点云作为第i+1个预划分子组。
例如,参见图8B,假设待编码点云组包括点云1~32,且已划分的子组是子组1~6,那么,在确定子组7的过程中,如果第3个预划分子组的特征信息满足预设条件,则按照上述S201~207中的描述,需要获得第4个预划分子组。此时,由于第4次滑动窗口所采用的 步长(即3)大于待编码点云组没有剩余的未被圈定的点云(即点云31~32)的帧数(即2),因此,可以将点云21~33作为第4个预划分子组。
实施例二
实施例二与实施例一的区别在于,当i≥2时,如果第i个预划分子组的特征信息满足预设条件,且第i+1个预划分子组的特征信息不满足预设条件,那么,以更小的步长,重新获得第i+1个预划分组。本实施例应用于获得第i+1个预划分子组时所采用的步长大于1的场景中。本实施例提供的方法的流程图可以如图9所示。具体的,可以将实施例一中的S207替换为如下步骤S207A~S207C。
S207A:采用第二步长重新获得第i+1个预划分子组,第二步长小于第一步长,第一步长是获得第i+1个预划分子组时所采用的步长。
其中,重新获得第i+1个预划分子组的过程,可以理解为:返回(或回退)到第i个预划分子组的最后一帧点云,并以该最后一帧为起点,滑动第二步长的过程。
S207B:如果采用第二步长重新获得的第i+1个预划分子组的特征信息不满足预设条件,则采用第三步长重新获得第i+1个预划分子组,第三步长小于第二步长。也就是说,每次重新获得的第i个预划分子组的步长均小于上一次重新获得的第i个预划分子组的步长。以此类推,当重新获得第i+1个预划分子组的次数达到预设次数或者最新一次重新获得的第i+1个预划分子组的步长小于或等于预设步长(如1等)时,如果最新一次重新获得的第i+1个预划分子组的特征信息不满足预设条件,则确定第i个预划分子组为一个子组。
例如,参见图10,假设在确定子组3的过程中,第1个预划分子组(即由点云9~15构成的集合)的特征信息满足预设条件,且第2个预划分子组(即由点云9~21构成的集合)的特征信息不满足预设条件,第一步长是6,则可能存在点云9~p构成的预划分子组的特征信息满足条件,其中,15<p<21,p是整数,因此,采用第二步长(如3)重新获得第2个预划分子组(即由点云9~18构成的集合)。如果重新获得的第2个预划分子组的特征信息不满足预设条件,则可能存在点云9~q构成的子组的特征信息满足预设条件,其中,15<q<18,q是整数,因此,采用第三步长(如1)再次重新获得第2个预划分子组(即由点云9~16构成的集合)。假设该再次获得第2个预划分子组的特征信息不满足预设条件,且重新获得第2个预划分子组的次数达到预设次数或者最新一次重新获得的第2个预划分子组的步长小于或等于预设步长,则将第1个预划分子组(即由点云9~15构成的集合)作为子组3。
可以理解的是,如果在某一次重新获得的第i+1个预划分子组的特征信息满足预设条件,则可以执行以下步骤S207C。
S207C:如果重新获得的第i+1个预划分子组的特征信息满足预设条件,则:
当重新获得的第i+1个预划分子组与首次获得的第i+1个预划分子组包含的点云的帧数之差小于或等于第二预设数量时,将重新获得的第i+1个预划分子组确定为一个子组。
例如,参见图11A,假设在确定子组3的过程中,如果重新获得的第2个预划分子组(即由点云9~18构成的集合)的特征信息满足预设条件,则可能存在点云9~d构成的子组的特征信息满足预设条件,其中,18<d<21,d是整数。该情况下,假设第二预设数量是3,那么,由于重新获得的第2个预划分子组与首次获得的第2个预划分子组包含的点云的 帧数之差(即3)等于第二预设数量,因此,将重新获得的第2个预划分子组(即由点云9~18构成的集合)作为一个子组。
当重新获得的第i+1个预划分子组与首次获得的第i+1个预划分子组包含的点云的帧数之差大于第二预设数量时,采用第四步长获得第i+2个预划分子组,第二步长与第四步长之和小于第一步长;如果第i+2个预划分子组的特征信息满足预设条件,则采用第五步长获得第i+3个预划分子组,第二步长、第四步长与第五步长之和小于第一步长。也就是说,获得第i+k个预划分子组所采用的步长、获得第i+k-1个预划分子组所采用的步长、获得第i+k-2个预划分子组所采用的步长、……、获得第i+2个预划分子组所采用的步长、重新获得第i+1个预划分子组所采用的步长之和,小于首次获得第i+1个预划分子组所采用的步长。以此类推,当所获得的第i+k个预划分子组与首次获得的第i+1个预划分子组包含的点云的帧数之差小于或等于第二预设数量时,如果i+k个预划分子组的特征信息满足预设条件,则确定第i+k个预划分子组为一个子组,k≥2,k是整数。
例如,参见图11B,假设在确定子组3的过程中,如果重新获得的第2个预划分子组(即由点云9~18构成的集合)的特征信息满足预设条件,则可能存在点云9~d构成的子组的特征信息满足预设条件,其中,18<d<21的一个整数。该情况下,假设第二预设数量=1,那么,由于第3个预划分子组与首次获得的第2个预划分子组包含的点云的帧数之差(即1)等于第二预设数量,因此,将第3个预划分子组(即点云9~21构成的集合)作为一个子组。
可以理解的是,如果第i+k个预划分子组的特征信息不满足预设条件,则重新获得第i+k个预划分子组,后续所执行的步骤可以参考上述S207B和/或S207C。
可以理解的是,在不冲突的情况下,上述实施例一中相关内容的解释也可以应用于实施例二。例如,实施例一中的情况一和情况二的处理方式可以应用于实施例二。又如,实施例一中的确定步长的方法可以应用于实施例二。
本实施例提供的确定子组的方法,有助于在滑动窗口的步长大于1的情况下,使得待编码点云组中尽可能多的点云构成一个满足预设条件的子组。由于当一个子组中包含至少两帧点云时,使用全局匹配打包算法得到的各点云中具有匹配关系的patch的占用图在其所在点云占用图中的位置相对应,这可以提高编码性能。因此,采用本实施例提供的方案,使尽可能多的点云构成一个满足预设条件的子组,当采用全局匹配打包算法对该子组中的点云进行打包时,有助于提高编码效率。
以下,对采用二分法实现预划分的过程中的一些术语进行简单介绍,以方便读者理解:
子组分割点,是指相邻两个子组的分割点。可以理解的是,对待编码点云组进行分组的本质为寻找待编码点云组中的子组分割点。
二分法的中间点,是二分法所针对的一个序列中的多个对象中的中间对象。例如,假设一个序列包括的对象的编号分别是x~y,1≤x<y,x和y均是整数,则二分法的中间点是编号为
Figure PCTCN2019122216-appb-000001
的对象,或者是是编号为
Figure PCTCN2019122216-appb-000002
的对象。其中,
Figure PCTCN2019122216-appb-000003
表示向下取整,
Figure PCTCN2019122216-appb-000004
表示向上取整。本次二分法所针对的对象中在中间点之前的对象称为本次二分法得到的前半部分对象,在中间点之后的对象称为本次二分法得到的后半部分对象。
第i个预划分子组,以第j帧点云为起点,第i次对待编码点云组中还未分组的点云执 行二分法,以得到第i个预划分子组。例如,可以将二分法得到的前半部分点云作为第i预划分子组,本申请实施例中均以此为例进行说明。当然本申请实施例不限于此。其中,第j帧点云是待编码点云组中还未分组的点云中的第一帧点云。
如果第i个预划分子组的特征信息满足预设条件,则第i+1个预划分子组是从第i个预划分子组与第i+1次执行二分法得到的前半部分点云构成的集合。
如果第i个预划分子组的特征信息不满足预设条件,则第i+1个预划分子组是从第i个预划分子组中的前半部分点云构成的集合。
如图12所示,为本申请实施例提供的一种二分法和预划分子组之间的关系的示意图。图12中是以待编码点云组包括点云1~32为例进行说明的。具体的:对点云1~32执行二分法,得到第1个预划分子组(即点云1~16构成的集合)。如果第1个预划分子组的特征信息满足预设条件,则对点云16~32执行二分法,得到第2个预划分子组(即点云1~24构成的集合),如图12中的(a)所示。如果第1个预划分子组的特征信息不满足预设条件,则对点云1~16执行二分法,得到第2个预划分子组(即点云1~7构成的集合),如图12中的(b)。
以下,通过具体示例说明本申请实施例提供的采用二分法实现预划分时,确定待编码点云组中的一个子组的方法。具体可以参考下述实施例三或实施例四。
实施例三
如图13所示,为本申请实施例提供的一种确定一个子组的方法的流程示意图。图13所示的方法包括如下步骤:
S301:以第j帧为起点,第1次执行二分法,以得到第1个预划分子组。其中,1≤j≤J,J是待编码点云组中包含的点云的帧数。
S302:判断第1个预划分子组的特征信息是否满足预设条件。
若是,说明待确定分割点在本次二分法得到的后半部分点云中,则执行S303。
若否,说明待确定分割点在本次二分法得到的前半部分点云中,则执行S304。
S303:第2次执行二分法,以得到第2个预划分子组。如果第2个预划分子组满足预设条件,则第3次执行二分法。也就是说,在本次二分法获得的预划分子组满足预设条件时,执行下一次二分法。以此类推,执行二分法,后续可以有如下实现方式:
实现方式一,如果一直到不能继续执行二分法时,最近一次执行二分法获得的预划分子组仍然满足预设条件,则将待编码点云中还未分组的所有点云作为一个子组。
实现方式二,如果第i+1次执行二分法获得的第i+1个预划分子组的特征信息不满足预设条件,则将第i次执行二分法获得的第i个预划分子组作为一个子组。i≥1,i是整数。
S304:第2次执行二分法,以得到第2个预划分子组。如果第2个预划分子组不满足预设条件,则第3次执行二分法。也就是说,在本次二分法获得的预划分子组不满足预设条件时,执行下一次二分法。以此类推,执行二分法。后续,可能有如下实现方式:
实现方式一:如果一直到不能继续执行二分法时,最近一次执行二分法获得的预划分子组仍然不满足预设条件,则将待编码点云中还未分组的第一帧点云作为一个子组。
实现方式二:如果一直到不能继续执行二分法时,最近一次执行二分法获得的预划分子组满足预设条件,则将最近一次获得的预划分子组作为一个子组。
实现方式三:如果第i+1次执行二分法获得的第i+1个预划分子组的特征信息满足预设条件,则第i+2次执行二分法,如果第i+2次执行二分法获得的第i+1个预划分子组的特征信息满足预设条件,则执行第i+3次二分法。也就是说,在本次满足预设条件时,执行下一次二分法,以此类推,执行二分法。如果一直到不能继续执行二分法时,最近一次执行二分法获得的预划分子组仍然满足预设条件,则将最近一次获得的预划分子组作为一个子组。如果某一次执行二分法获得的预划分子组不满足预设条件,则将本次的上一次执行二分法获得的预划分子组作为一个子组。
本实施例提供的确定子组的方法,有助于使得待编码点云组中尽可能多的点云构成一个满足预设条件的子组,这样,当采用全局匹配打包算法对该子组中的点云进行打包时,有助于提高编码效率。
实施例四
如图14所示,为本申请实施例提供的一种确定一个子组的方法的流程示意图。图14所示的方法包括如下步骤:
S401:以第j帧为起点,第1次执行二分法,以得到第1个预划分子组。其中,1≤j≤J,J是待编码点云组中包含的点云的帧数。
S402:判断第1个预划分子组的特征信息是否满足预设条件。
若是,则执行S403。若否,则执行S404。
S403:将第1个预划分子组作为一个子组。
S404:第2次执行二分法,以得到第2个预划分子组。如果第2个预划分子组的特征信息不满足预设条件,则第3次执行二分法,以得到第3个预划分子组。也就是说,在本次二分法获得的预划分子组不满足预设条件时,执行下一次二分法。以此类推,执行二分法。后续,可能有如下实现方式:
实现方式一:如果一直到不能继续执行二分法时,最近一次执行二分法获得的预划分子组仍然不满足预设条件,则将待编码点云中还未分组的第一帧点云作为一个子组。
实现方式二:如果第i+1次执行二分法获得的第i+1个预划分子组满足预设条件,则将第i+1个预划分子组作为一个子组。i≥1,i是整数。
本实施例提供的确定子组的方法,多次执行二分法得到的多个预划分子组中第一个满足预设条件的预划分子组作为一个子组。与采用滑动窗口的方法进行预划分的方法不同,采用二分法进行预划分得到的预划分子组如果满足预设条件,则可以认为本次预划分子组已经包括了较多的点云,因此,当采用全局匹配打包算法对该子组中的点云进行打包时,有助于提高编码效率。
需要说明的是,上述实施例三和实施例四中描述的任一种“不能继续执行二分法”可以包括:二分法所针对的对象(具体是点云)的个数1时,不能执行二分法;或者是执行二分法的次数达到预设阈值时,不能继续执行二分法。其中,二分法所针对的对象的个数1时,不能执行二分法,可以扩展为:二分法所针对的对象(具体是点云)的数量小于或等于预设阈值时,不能继续执行二分法。
上述实施例一至实施例四中描述的任一个预划分子组是否满足预设条件,均可以参考下文中的描述。其中,下文中是以当第i个预划分子组的特征信息满足预设条件,且第i+1 个预划分子组的特征信息不满足预设条件时,确定第i个预划分子组为多个子组中的一个子组为例进行说明的。另外,可以理解的是,以下对一个预划分子组是否满足预设条件的描述中所涉及到的“预划分子组”可以例如但不限于是通过滑动窗口的方法或二分法得到的。
可选的,当第i个预划分子组的特征信息满足预设条件,且第i+1个预划分子组的特征信息不满足预设条件时,确定第i个预划分子组为多个子组中的一个子组,可以通过以下至少一种方式实现:
方式1、如果第i个预划分子组的特征信息包括第i个预划分子组的全局占用图的尺寸,那么,当第i个预划分子组的全局占用图的尺寸小于或等于第一阈值,且第i+1个预划分子组的全局占用图的尺寸大于第一阈值时,确定第i个预划分子组为一个子组。
考虑到:全局占用图是一个或多个并集patch占用图打包得到的,而并集patch占用图是一个预划分子组中的一组全局匹配patch的并集,因此,随着预划分子组中的点云帧数的增加,会导致一组全局匹配patch中patch的数目增加,从而导致该组全局匹配patch对应的并集patch占用图的面积增大,进而导致全局占用图的尺寸增大;因此提出了该方式。基于该方式,将一个子组的全局占用图限定在第一阈值之内,可以间接反映该子组中点云的占用图的尺寸,从而有助于提高编码效率。
可以理解的是,当使用不同参数表征全局占用图的尺寸时,第一阈值的含义不同。例如,当使用全局占用图的高度和宽度的乘积来表征全局占用图的尺寸时,第一阈值表示允许一个子组的全局占用图的面积的最大值。又如,当使用全局占用图的高度来表征全局占用图的尺寸时,第一阈值表示允许一个子组的全局占用图的高度的最大值。
在一种实现方式中,第一阈值是预定义的值,如预定义的经验值。示例的,当第一阈值表示允许一个子组的全局占用图的高度的最大值时,第一阈值可以是1280个像素。
在另一种实现方式中,第一阈值是基于候选打包算法获得的待编码点云组中的点云(如各点云)的占用图的最大尺寸所确定的。其中,候选打包算法可以是除全局匹配打包算法之外的其他打包算法如anchor打包算法等。示例的,第一阈值为H*w1。H是基于候选算法如anchor打包算法获得的待编码点云组中的点云的占用图的高度的最大值,w1是常数。w1可以是基于全局匹配打包算法和候选打包算法对视频编解码的效率的影响所确定的。可选的,w1∈(0.5,1.5),当然不限于此。
方式2:如果第i个预划分子组的特征信息包括第i个预划分子组中的点云的占用图尺寸,那么,执行以下方式2-1和/或方式2-2:
方式2-1:当第i个预划分子组中的大尺寸点云的帧数小于或等于第一预设数量,且第i+1个预划分子组中的大尺寸点云的帧数大于第一预设数量时,确定第i个预划分子组为一个子组。大尺寸点云是占用图尺寸大于或等于第二阈值的点云。这里的占用图可以是基于任一种打包算法对一帧点云进行打包或获得的该点云的占用图。
第一预设数量可以是预定义的值,如预定义的经验值,如4等。可以理解的,如果第一预设数量是1,则方式2-1可以替换为:当第i个预划分子组不包含大尺寸点云,且第i+1个预划分子组包含大尺寸点云时,确定第i个预划分子组为一个子组。
可以理解的,当使用不同参数表征点云的占用图尺寸时,第二阈值的含义不同。例如, 当使用点云占用图的高度和宽度的乘积来表征点云占用图尺寸时,第二阈值表示允许一个子组中的点云的占用图的面积的最大值。又如,当使用点云的占用图的高度表征点云的占用图尺寸时,第二阈值表示允许一个子组中的点云的占用图高度的最大值。
在一种实现方式中,第二阈值是预定义的值,如预定义的经验值。示例的,当使用点云占用图的高度和宽度的乘积来表征点云占用图尺寸时,第二阈值可以是1280个像素。
在另一种实现方式中,大尺寸点云具体是指基于全局匹配打包算法获得的占用图尺寸大于或等于第二阈值的点云,那么:
可选的,第二阈值可以是基于候选打包算法获得的待编码点云组中的点云占用图的最大尺寸所确定的。候选打包算法是除全局匹配打包算法之外的其他打包算法如anchor打包算法等。示例的,当NH i,u≥H max*w2时,认为第i个预划分子组中的第u帧点云是大尺寸点云,u≥1,u是整数。其中,NH i,u是基于全局匹配打包算法获得的第i个预划分子组中的第u帧点云的占用图的高度,H max是基于候选打包算法如anchor打包算法获得的待编码点云组中的点云的占用图的高度的最大值,w2是常数。可选的,w2∈(0.5,1.5),当然不限于此。由于一帧点云的占用图尺寸大于或等于该帧点云所在的子组的全局占用图,因此,进一步可选的,w1<w2,如w1略小于w2。
可选的,第二阈值可以是基于候选打包算法获得的本点云占用图尺寸所确定的。候选打包算法是除全局匹配打包算法之外的其他打包算法如anchor算法等。示例的,当NH i,u≥H i,u*w3。其中,NH i,u是基于全局匹配打包算法获得的第i个预划分子组中的第u帧点云的占用图的高度,H i,u是基于候选打包算法如anchor打包算法获得的第i个预划分子组中的第u帧点云的占用图的高度,w3是常数。可选的,w3∈(0.5,3.0)。进一步可选的,w3大于w2。
方式2-2:当第i个预划分子组中各帧点云基于全局匹配打包算法获得的占用图尺寸与基于候选打包算法获得的占用图尺寸之比的平均值小于或等于第三阈值,且第i+1个预划分子组中各帧点云基于全局匹配打包算法获得的占用图尺寸与基于候选打包算法获得的占用图尺寸之比的平均值大于第三阈值时,确定第i个预划分子组为一个子组。
候选打包算法可以是除全局匹配打包算法之外的其他打包算法如anchor打包算法等。示例的,当sum(NH i,u/H i,u)/frameCnt i≤第三阈值,且sum(NH i+1,v/H i+1,v)/frameCnt i+1>第三阈值。其中,sun()表示求和运算。NH i,u是基于全局匹配打包算法获得的第i个预划分子组中的第u帧点云占用图的高度,H i,u是基于全局匹配打包算法获得的第i个预划分子组中的第u帧点云占用图的高度,frameCnt i是第i个预划分子组包含的点云的帧数。u≥1,u是整数。NH i+1,v是基于全局匹配打包算法获得的第i+1个预划分子组中的第v帧点云占用图的高度,H i+1,v是基于全局匹配打包算法获得的第i+1个预划分子组中的第v帧点云占用图的高度,frameCnt i+1是第i+1个预划分子组包含的点云的帧数。v≥1,v是整数。
可选的,第三阈值是预定义的值。可选的,第三阈值是大于1的值,如1.2等。
另外可选的,根据第i个预划分子组的特征信息,确定第i个预划分子组为一个子组,可以包括如下方式A或方式B:
方式A:当第i+1个预划分子组的全局占用图的尺寸,相比第i个预划分子组的全局占用图的尺寸的下降幅度大于或等于第五阈值时,说明相比将第i个预划分子组作为一个子 组来说,将第i+1个预划分子组作为一个子组时,采用全局匹配打包算法进行打包时点云编码效率在下降且下降幅度较大,因此,确定第i个预划分子组为多个子组中的一个子组。
可以理解的是,假设第i个预划分子组中的全局匹配patch在第i+1个子组中依然是全局匹配patch,则第i+1个预划分子组的全局占用图的尺寸大于或等于第i个预划分子组的全局占用图的尺寸。但是,可能存在第i个预划分子组的一组全局匹配patch,在第i+1个预划分子组中不是全局匹配patch的情况,此时,可能导致第i+1个预划分子组的全局占用图的尺寸小于第i个预划分子组的全局占用图的尺寸,考虑到该原因,提出了该方式。
方式B:第i个预划分子组的特征信息包括第i个预划分子组的并集patch占用图的面积;相应的,当第i+1个预划分子组的并集patch占用图的总面积,相比第i个预划分子组的并集patch占用图的总面积的下降幅度大于或等于第四阈值时,说明相比将第i个预划分子组作为一个子组来说,将第i+1个预划分子组作为一个子组时,采用全局匹配打包算法进行打包时点云编码效率在下降且下降幅度较大,因此,确定第i个预划分子组为一个子组。该方式的相关说明可以参考上述对方式A的相关说明,此处不再赘述。
S502、将N帧点云的子组信息编入码流。
在一个可能的实施例中,将N帧点云的子组信息编入码流,包括:
将N 0,N 1,…,N M-1和/或M编入码流,M大于或等于1,或者;将N 0,N 1,…,N M-1中的M-1个和M编入码流,M大于或等于1,或者;其中,N m为M个子组中的第i个子组中点云的帧数,m=0,1,…,M-1。
其中,将N 0,N 1,…,N M-1和/或M编入码流,包括:
只将M编入码流,此时M=1,即将N帧点云分成一组;或者,
将N 0,N 1,…,N M-1编入码流,M为大于或等于1;或者,
将N 0,N 1,…,N M-1与M编入码流,M为大于或等于1。
需要说明的是,只将M编入码流是在M=1的情况下,M=1是指将N帧点云分成一组。N 0,N 1,…,N M-1中的M-1个是指N 0,N 1,…,N M-1中的任意M-1个。
在一个可能的实施例中,对于N帧点云中的一部分帧采用自适应分组,另一部分帧采用固定帧长进行分组,因此可以将N帧点云的子组信息编入码流,包括:将N 0,N 1,…,N M-1中的T个和/或T编入码流。
其中,该N 0,N 1,…,N M-1中的T个可以分别是指M个子组中在划分顺序上连续T个子组的每个子组包括点云的帧数。
在此需要说明的是,将N 0,N 1,…,N M-1中的一个或多个编入码流可采用定长编码方式或变长编码方式。其中,定长编码方式具体是采用固定比特数进行编码;变长编码方式包括但不限定于算术编码方式和指数哥伦布编码方式。
举例说明,假设N=32,M=5,N 0=5,N 1=7,N 2=6,N 3=6,N 4=8,即将32帧点云分为5个子组;其中,第0个子组中点云的帧数为5,第1个子组中点云的帧数为7,第2个子组中点云的帧数为6,第3个子组中点云的帧数为6,第4个子组中点云的帧数为8。若采用5比特进行编码,则第0个子组中点云的帧数5可编码为00101,第1个子组中点云的帧数7可编码为00111,第2个子组中点云的帧数6可编码为00110,第3个子组中点云的帧数6可编码为00110,第4个子组中点云的帧数8可编码为01000;此时5个子组中点云 的帧数可编码为0010100111001100011001000,共25比特位。还可以对25比特位进行算术编码,可以进一步提高码流的压缩效率。当然还可以采用其他比特数进行编码,在本申请中不做限定。
为了节省码流,若采用可变长编码方式,则第0个子组中点云的帧数5可表示101,第1个子组中点云的帧数7可表示为111,第2个子组中点云的帧数6可表示为110,第3个子组中点云的帧数6可表示为110,第4个子组中点云的帧数8可表示为1000。此时5个子组中点云的帧数可编码为1011111101101000,共16比特位。
在一个可能的实施例中,将N帧点云的子组信息编入码流,包括:根据M个子组中的一个或多个子组中点云的帧数生成一个或多个比特串,其中,一个或多个比特串中的第s个比特串的长度为一个或多个子组中第s个子组中包括点云的帧数;将一个或多个比特串编入码流。采用此方式,对于N帧点云,最终可以得到由N比特位组成的比特串(即M个比特串),对于N比特位可以采用N比特进行编码,或者采用算术编码方式进行编码。
在一个可能的实施例中,一个或多个子组包括第s-1个子组和第s个子组,其中,第s-1个子组对应的比特串中的比特位的取值与第s个子组对应的比特串中的比特位的取值是不同的。比如第s-1个子组对应的比特串中比特位的取值为第一标识,第s个子组对应的比特串中比特位的取值为第二标识。对于第s+1个子组对应的比特串中比特位的取值可为第一标识或者第三标识,第三标识与第一标识和第二标识均不相同。
可选地,第一标识可为0或1;第二标识可为0或1,其中第一标识与第二标识不相同。
在一个可能的实施例中,一个或多个子组中每个子组对应的比特串中的比特位的取值是相同的。需要指出的是,每个子组对应的比特串的比特位的取值是相同的是指每个子组对应的比特串中所有比特位的取值都是相同的。
在此需要说明的是,一个子组对应一个比特串,通过比特串的一个比特位代表一个子组中的点云帧,就可以根据比特串中比特位的个数(即比特串的长度)来确定该比特串对应的子组包括点云的帧数。对于一个子组对应的比特串,该比特串中所有比特位的取值是相同的,且对于在划分顺序上相邻的两个子组分别对应的两个比特串中的比特位取值是不同的,因此可以区分出在划分顺序上相邻的两个子组分别包括点云的帧数。
举例说明,假设N=32,M=5,N 0=5,N 1=7,N 2=6,N 3=6,N 4=8,第一标识为,0,第二标识为1,即将32帧点云分为5个子组;其中,第0个子组中点云的帧数为5,第1个子组中点云的帧数为7,第2个子组中点云的帧数为6,第3个子组中点云的帧数为6,第4个子组中点云的帧数为8。第0个子组对应的比特串为00000,第1个子组对应的比特串为1111111,第2个子组对应的比特串为000000,第3个子组对应的比特串为111111,第4个子组对应的比特串为00000000。5个比特串共32位比特位,可采用32比特位进行编码或者对5个比特串采用算术编码方式进行编码。
在一个可能的实施例中,编码方法还包括:将当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息编入码流。
其中,旋转角度信息包括具体的旋转角度值或旋转角度索引。比如若patch的旋转角度值为0时,则表示该patch不旋转;若patch的旋转角度值为20,则表示该patch旋转20°。再比如若patch的旋转角度索引为0,表示该patch不旋转;若patch的旋转角度索引为1, 表示该patch旋转15°;若patch的旋转角度索引为2,表示该patch旋转30°。
其中,可采用定长编码方式或变长编码方式将旋转角度信息写入码流。定长编码方式是指固定比特位数编码。比如对于patch的角度值采用5比特编码,可将patch的旋转角度值0编码为00000,可将patch的旋转角度值为20编码为10100。还可将patch的旋转角度索引0编码为00000,可将patch的旋转角度索引1编码为00001,可将patch的旋转角度索引2编码为00010。
变长编码方式包括但不限定于算术编码方式和指数哥伦布编码方式。采用变长编码方式,比如可将patch的旋转角度值0编码为0,可将patch的旋转角度值为10编码为1010。还可将patch的旋转角度索引0编码为0,还可将patch的旋转角度索引1编码为1,还可将patch的旋转角度索引2编码为10。
需要说明的是,当前子组的首帧点云的patch集合中的一个或多个匹配patch是指在当前子组中首帧点云的参考帧的patch集合中找到与之匹配的patch的patch。当前子组中首帧点云的参考帧可以为当前子组的前一个子组中的点云。
比如当前子组的首帧点云的patch集合中的patch A,若该首帧点云的参考帧的patch集合中可有与patch A匹配的patch,则patch A可称为匹配patch。
S503、根据N帧点云的子组信息对N帧点云进行编码。
具体地,根据N帧点云的子组信息对N帧点云进行编码,具体包括:根据该N帧点云的子组信息解码得到N帧点云的patch的辅助信息,再根据N帧点云的patch的辅助信息对N帧点云进行编码。
可以看出,在本申请实施例的方案中,将对N帧点云采用自适应分组的方式进行分组得到N帧点云的子组信息编入码流。并且自适应分组的方式充分考虑了连续多帧点云间patch的相关性,使得具有匹配关系的patch的空间一致性得到充分保证,提高了点云的编码效率。自适应分组得到子组信息用于指导解码端对点云数据进行正确解码。
参见图15,图15为本申请实施例提供的一种点云的编码方法的流程示意图。如图15所示,该方法包括:
S1501、接收码流,从该码流中解析出子组信息,该子组信息包括N帧点云被划分为子组的个数M和/或M个子组中的一个或多个子组中的每个子组中包括点云的帧数。
需要说明的而是,M个子组是对N帧点云采用自适应分组的方式进行分组得到的。
在一个可能的实施例中,从码流中解析出子组信息,包括:从码流中解析出M个子组中的每个子组中点云的帧数和/或M,M大于或等于1,或者;从码流中解析出M和M-1个子组的每个子组中点云的帧数,M大于或等于1。
其中,从码流中解析出M个子组中的每个子组中点云的帧数和/或M,包括:
从码流中只解析出M,此时M=1,或者;从码流中只解析出N 0,N 1,…,N M-1,M大于或等于1,或者;首先从码流中解析出M,再根据M从码流中解析出N 0,N 1,…,N M-1,此时M大于或等于1;其中,N m为M个子组中的第m个子组中点云的帧数,m=0,1,…,M-1。
需要说明的是,解码端可根据M=1推导得到编码端是将N帧点云分成一个子组,该子组包括N帧点云,进而解码端可根据M和N对N帧点云进行解码。
需要说明的是,可采用定长或变长解码方式从码流中解码出N 0,N 1,…,N M-1中的全部或部分。其中,定长解码方式包括但不限定于固定比特位解码方式,变长解码方式包括但不限定于算术解码方式和指数哥伦布解码方式。
在一个可能的实施例中,根据子组信息对N帧点云进行解码,包括:
根据N和M-1个子组的每个子组中点云的帧数确定目标子组中点云的帧数,目标子组为M个子组中除了M-1个子组之外的子组,M大于或等于1;根据M个子组中每个子组包括点云的帧数对N帧点云进行解码。
比如说,N=32,M=5,N 0=5,N 1=7,N 3=6,N 4=8,则N 2=32-5-7-6-8=6,即可确定5个子组中的第2个子组中点云的帧数为6。
在一个可能的实施例中,对于N帧点云中的一部分帧采用自适应分组,另一部分帧采用固定帧长进行分组,因此可从码流中解析出N 0,N 1,…,N M-1中的T个和/或T。其中,N 0,N 1,…,N M-1中的T个分别是指M个子组中在划分顺序上连续T个子组的每个子组包括点云的帧数。当从码流中解析出N 0,N 1,…,N M-1中的T个和/或T后,根据N和N 0,N 1,…,N M-1中的T个得到M个子组中除了该T个子组包括点云之外的点云的帧数P,由于对P帧点云采用固定帧长进行分组,因此根据P和固定帧长确定P帧点云被划分为子组的个数,即P/固定帧长;进而确定M及M个子组中每个子组包括点云的帧数,M=T+P/固定帧长。
举例说明,假设N=32,N 0=5,N 1=9,固定帧长为6,当从码流中解析出N 0和N 1后,可确定采用自适应分组得到的子组的个数为2,再根据(32-5-9)/6=3可得到采用固定帧长分组得到的子组的个数,进而确定32帧点云共分成5个子组,其中,第0个子组中点云的帧数为5(即N 0=5),第2个子组中点云的帧数为9(即N 1=9),第3个子组中点云的帧数为6(即N 2=6),第4个子组中点云的帧数为5(即N 3=6),第5个子组中点云的帧数为6(即N 4=6)。
在一个可能的实施例中,从码流中解析出子组信息,包括:从码流中解析出一个或多个比特串,其中,一个或多个比特串中的第s个比特串的长度为一个或多个子组中第s个子组中包括点云的帧数;一个或多个子组对应于一个或多个比特串。
在一个可能的实施例中,根据子组信息对N帧点云进行解码,包括:根据一个或多个比特串中每个比特串的长度获取一个或多个子组中每个子组包括点云的帧数;确定M个子组中每个子组包括点云的帧数,其中,M个子组包括一个或多个子组;根据M个子组中每个子组包括点云的帧数对N帧点云进行解码。
其中,当多个比特串即为M个比特串时,根据该多个比特串(即M个比特串)中每个比特串的长度即可确定M个子组中每个子组中包括点云的帧数。
当多个比特串为M-1个比特串时,可根据M-1个比特串中每个比特串的长度确定M-1个子组中每个子组中包括点云的帧数,在根据N和M-1个子组中每个子组中包括点云的帧数确定目标子组中包括点云的帧数,其中,M-1个子组对应于M-1个比特串,目标子组为M个子组中除了M-1个子组之外的子组。
当一个或多个比特串为T个比特串时,其中T大于0且小于M-1,可根据T个比特串中每个比特串的长度确定T个子组中每个子组中包括点云的帧数,T个比特串对应于T个子组。然后可根据N和T个子组中每个子组中包括点云的帧数确定采用固定帧长进行分组 的点云的帧数P,再根据帧数P确定采用固定帧长分组方式进行分组得到的子组个数P/固定帧长,进而确定M及M个子组中每个子组包括点云的帧数,M=T+P/固定帧长。
在一个可能的实施例中,一个或多个子组包括第s-1个子组和第s个子组,其中,第s-1个子组对应的比特串中的比特位的取值与第s个子组对应的比特串中的比特位的取值是不同的。
在一个可能的实施例中,一个或多个子组中每个子组对应的比特串中的比特位的取值是相同的。其中,每个子组对应的比特串中的比特位的取值是相同的是指每个子组对应的比特串中所有比特位的取值都相同。
需要说明的是,对于第m个子组对应的比特串的比特位取值为第一标识,当第m个子组中的第0个比特位为第一标识,且第n个比特位取值为第一标识,第n+1个比特位的取值不为第一标识时,确定第m个子组中的帧数为n+1。第一标识例如为0或1。
举例说明,第一标识为0或1,第二标识为1或0,且第一标识和第二标识不相同。假设从码流解析出的比特串为00000111111000000011111110000000,共32个比特位,分别对应32帧点云,由于一个比特串中所有比特位的取值都相同,划分顺序相邻的两个子组分别对应的两个比特串的比特位的取值不相同,因此可以确定5个比特串和将32帧点云被划分为5个子组,即M=5,其中,第0个比特串为00000,第1个比特串为111111,第2个比特串为0000000,第3个比特串为1111111,第4个比特串为0000000。由于比特串的长度为该比特串对应的子组中点云的帧数,因此第0子组中点云的帧数为5,第1子组中点云的帧数为6,第2子组中点云的帧数为7,第3子组中点云的帧数为7,第4子组中点云的帧数为7,进而根据5及5个子组中的每个子组中点云的帧数对32帧点云进行解码。
再举例说明,第一标识为0或1,第二标识为1或0,且第一标识和第二标识不相同。假设N=32,从码流解析出的比特串为0000011111100000001111111,共25个比特位,分别对应25帧点云,由于一个比特串中所有比特位的取值都相同,划分顺序相邻的两个子组分别对应的两个比特串的比特位的取值不相同,因此可以确定4个比特串,其中,第0个比特串为00000,第1个比特串为111111,第2个比特串为0000000,第3个比特串为1111111。由于比特串的长度为该比特串对应的子组中点云的帧数,因此第0子组中点云的帧数为5,第1子组中点云的帧数为6,第2子组中点云的帧数为7,第3子组中点云的帧数为7。再根据32和上述4个子组中每个子组中点云的确定第4子组中点云的帧数为:32-5-6-7-7=7。进而根据5(即子组的个数)及5个子组中的每个子组中点云的帧数对32帧点云进行解码。
再举例说明,第一标识为0或1,第二标识为1或0,且第一标识和第二标识不相同。假设N=32,固定帧长为7,从码流解析出的比特串为00000111111,共11个比特位,由于一个比特串中所有比特位的取值都相同,划分顺序相邻的两个子组分别对应的两个比特串的比特位的取值不相同,因此可以确定2个比特串,即T=2。其中,第0个比特串为00000,第1个比特串为111111。由于比特串的长度为该比特串对应的子组中点云的帧数,因此第0子组中点云的帧数为5,第1子组中点云的帧数为6。再根据固定帧长7和采用固定帧长进行分组的点云帧数P=21(即P=32-5-6)确定采用固定帧长进行分组得到的子组的个数为3(即21/7),该3个子组中每个子组中点云的帧数为7,进而根据5(即子组的个数)及5个子组中的每个子组中点云的帧数对32帧点云进行解码。
在一个可能的实施例中,从码流中解析出当前子组中首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;根据首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息确定当前子组中非首帧点云的patch集合中的匹配patch的旋转角度信息。
其中,当前子组的首帧点云的patch集合中的一个或多个匹配patch是指在当前子组中首帧点云的参考帧的patch集合中找到与之匹配的patch的patch。当前子组中首帧点云的参考帧可以为当前子组的前一个子组中的点云。
当前子组中非首帧点云是指在当前子组中除了首帧之外的点云。当前子组中非首帧点云的patch集合中的匹配patch是指在当前子组中非首帧点的patch集合中与首帧点云的patch集合中的一个或多个匹配patch具有匹配关系的patch。
需要说明的是,可采用定长或变长解码方式从码流中解码出一个或多个匹配patch的旋转角度信息。其中,定长解码方式包括但不限定于固定比特位解码方式,变长解码方式包括但不限定于算术解码方式和指数哥伦布解码方式。
举例说明,假设当前子组中包括4帧点云,分别为点云0,点云1、点云2和点云3。其中点云0为当前子组的首帧点云,patch A为点云0中的匹配patch,且该patch A与点云1中的patch B,点云2中的patch C和点云3中的patch D均具有匹配关系,可根据patch A的旋转角度信息来确定点云1中的patch B,点云2中的patch C和点云3中的patch D三者的旋转角度信息。
其中,旋转角度信息包括具体的旋转角度值或旋转角度索引。比如若patch的旋转角度值为0时,则表示该patch不旋转;若patch的旋转角度值为20,则表示该patch旋转20°。再比如若patch的旋转角度索引为0,表示该patch不旋转;若patch的旋转角度索引为1,表示该patch旋转15°;若patch的旋转角度索引为2,表示该patch旋转30°。
S1502、根据子组信息对N帧点云进行解码。
其中,根据子组信息对N帧点云进行解码包括:根据子组信息获取N帧点云的patch的辅助信息,根据该N帧点云的patch的辅助信息重建N帧点云。
可以看出,在本申请实施例的方案中,将对N帧点云采用自适应分组的方式进行分组得到N帧点云的子组信息编入码流,使得解码端能够基于N帧点云的子组信息对N帧点云数据进行正确解码,同时提高编解码效率。
在一个可能的实施例中,本申请实施例还提供一种点云的编码方法,包括:获取当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;将当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息编入码流。
其中,当前子组是对N帧点云采用自适应分组的方式进行分组得到的。
其中,当前子组的首帧点云的patch集合中的一个或多个匹配patch是指在当前子组中首帧点云的参考帧的patch集合中找到与之匹配的patch的patch。当前子组中首帧点云的参考帧可以为当前子组的前一个子组中的点云。
其中,旋转角度信息包括具体的旋转角度值或旋转角度索引。比如若patch的旋转角度值为0时,则表示该patch不旋转;若patch的旋转角度值为20,则表示该patch旋转20°。再比如若patch的旋转角度索引为0,表示该patch不旋转;若patch的旋转角度索引为1,表示该patch旋转15°;若patch的旋转角度索引为2,表示该patch旋转30°。
其中,可采用定长编码方式或变长编码方式将旋转角度信息写入码流。定长编码方式是指固定比特位数编码。比如对于patch的角度值采用5比特编码,可将patch的旋转角度值0编码为00000,可将patch的旋转角度值为20编码为10100。还可将patch的旋转角度索引0编码为00000,可将patch的旋转角度索引1编码为00001,可将patch的旋转角度索引2编码为00010。
变长编码方式包括但不限定于算术编码方式和指数哥伦布编码方式。采用变长编码方式,比如可将patch的旋转角度值0编码为0,可将patch的旋转角度值为10编码为1010。还可将patch的旋转角度索引0编码为0,还可将patch的旋转角度索引1编码为1,还可将patch的旋转角度索引2编码为10。
在一个可能的实施例中,本申请实施例还提供一种点云的解码方法,包括:接收码流;从该码流中解析出当前子组中首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;根据首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息确定当前子组中非首帧点云的patch集合中的匹配patch的旋转角度信息;当前子组中点云的匹配patch的旋转角度信息用于对当前子组中的点云进行解码。
其中,当前子组的首帧点云的patch集合中的一个或多个匹配patch是指在当前子组中首帧点云的参考帧的patch集合中找到与之匹配的patch的patch。当前子组中首帧点云的参考帧可以为当前子组的前一个子组中的点云。
其中,当前子组中非首帧点云是指在当前子组中除了首帧之外的点云。当前子组中非首帧点云的patch集合中的匹配patch是指在当前子组中非首帧点的patch集合中与首帧点云的patch集合中的一个或多个匹配patch具有匹配关系的patch。
举例说明,假设当前子组中包括4帧点云,分别为点云0,点云1、点云2和点云3。其中点云0为当前子组的首帧点云,patch A为点云0中的匹配patch,且该patch A与点云1中的patch B,点云2中的patch C和点云3中的patch D均具有匹配关系,可根据patch A的旋转角度信息来确定点云1中的patch B,点云2中的patch C和点云3中的patch D三者的旋转角度信息。
需要说明的是,对当前子组进行解码包括但不限定于当前子组中点云的匹配patch的旋转角度信息,还可包括当前子组中点云的非匹配patch的旋转角度信息。
其中,旋转角度信息包括具体的旋转角度值或旋转角度索引。比如若patch的旋转角度值为0时,则表示该patch不旋转;若patch的旋转角度值为20,则表示该patch旋转20°。再比如若patch的旋转角度索引为0,表示该patch不旋转;若patch的旋转角度索引为1,表示该patch旋转15°;若patch的旋转角度索引为2,表示该patch旋转30°。
需要说明的是,可采用定长或变长解码方式从码流中解码出一个或多个匹配patch的旋转角度信息。其中,定长解码方式包括但不限定于固定比特位解码方式,变长解码方式包括但不限定于算术解码方式和指数哥伦布解码方式。
在一个可能的实施例中,本申请实施例提供另一种点云的编码方法,包括:
确定指示信息,该指示信息用于指示是否按照目标编码方法对点云进行编码;目标编码方法包括如本申请包括的全部或部分点云编码方法;将指示信息编入码流。
在一个可能的实施例中,本申请实施例提供另一种点云的解码方法,包括:
解析码流,以得到指示信息,该指示信息用于指示是否按照目标解码方法对点云进行解码;目标解码方法包括如本申请包括的全部或部分点云的解码方法;当指示信息用于指示按照目标解码方法对点云进行解码时,按照目标解码方法对点云进行解码。
可以看出,在本申请实施例的方案中,从码流中解析出N帧点云的子组信息,该子组信息是对N帧点云采用自适应分组方式进行分组得到的,而自适应分组的方式充分考虑了连续多帧点云间patch的相关性,使得具有匹配关系的patch的空间一致性得到充分保证,提高了点云的编码效率。自适应分组得到子组信息用于指导解码端对点云数据进行解码
参见图16,图16为本申请实施例提供的一种点云的编码装置的结构示意图。如图7所示,该编码装置1600包括:
获取单元1601,用于获取N帧点云的子组信息,该子组信息包括N帧点云被划分成子组的个数M和/或M个子组中的一个或多个子组中的每个子组中包括点云的帧数;
编码单元1602,用于将N帧点云的子组信息编入码流;
编码单元1602,还用于根据子组信息对N帧点云进行编码。
在一个可能的实施例中,该编码装置1600还包括:
分组单元1603,用于将N帧点云划分成M个子组,其中,将N帧点云划分成M个子组包括:对N帧点云中的多帧点云进行预划分,以得到预划分子组;根据预划分子组的特征信息,确定预划分子组为M个子组中的一个子组;特征信息用于表征预划分子组中的点云的占用图尺寸。
在一个可能的实施例中,在将N帧点云的子组信息编入码流的方面,编码单元具体用于:将N 0,N 1,…,N M-1和/或M编入码流,M大于或等于1,或者;将N 0,N 1,…,N M-1中的M-1个和M编入码流,M大于或等于1,或者;其中,N m为M个子组中的第m个子组中点云的帧数,m=0,1,…,M-1。
在一个可能的实施例中,在将N帧点云的子组信息编入码流的方面,编码单元702具体用于:根据M个子组中的一个或多个子组中点云的帧数生成一个或多个比特串,其中,一个或多个比特串中的第s个比特串的长度为一个或多个子组中第s个子组中包括点云的帧数;将一个或多个比特串编入码流。
在一个可能的实施例中,一个或多个子组包括第s-1个子组和第s个子组,其中,第s-1个子组对应的比特串中的比特位的取值与第s个子组对应的比特串中的比特位的取值是不同的。
在一个可能的实施例中,一个或多个子组中每个子组对应的比特串中的比特位的取值是相同的。
在一个可能的实施例中,编码单元1602还用于:将当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息编入码流。
需要说明的是,获取单元1601和分组单元1603用于执行图5所示实施例的步骤S501的相关内容,编码单元1602用于执行图5所示实施例的步骤S502和S503的相关内容。作为一个示例,该编码装置1600的位置对应于图2中的辅助信息编码模块108,换言之,获取单元1601、编码单元1602和分组单元1603的功能可以由图2中的辅助信息编码模块108 来实现。当然本申请不限于此。
参见图17,图7为本申请实施例提供的一种点云的解码装置的结构示意图。如图17所示,该解码装置1700包括:
接收单元1701,用于接收码流;解析单元1702,用于从码流中解析出子组信息,该子组信息包括N帧点云被划分为子组的个数M和/或M个子组中的一个或多个子组中的每个子组中包括点云的帧数;解码单元1703,用于根据子组信息对N帧点云进行解码。
在一个可能的实施例中,解析单元1702具体用于:从码流中解析出M个子组中的每个子组中点云的帧数和/或M,M大于或等于1,或者;从码流中解析出M和M-1个子组的每个子组中点云的帧数,M大于或等于1。
在一个可能的实施例中,解码单元1703具体用于:根据N和M-1个子组的每个子组中点云的帧数确定目标子组中点云的帧数,目标子组为M个子组中除了M-1个子组之外的子组,M大于或等于1;根据M个子组中每个子组包括点云的帧数对N帧点云进行解码。
在一个可能的实施例中,解析单元1702具体用于:从码流中解析出一个或多个比特串,其中,一个或多个比特串中的第s个比特串的长度为一个或多个子组中第s个子组中包括点云的帧数;一个或多个子组对应于一个或多个比特串。
在一个可能的实施例中,解码单元1703具体用于:根据一个或多个比特串中每个比特串的长度获取一个或多个子组中每个子组包括点云的帧数;确定M个子组中每个子组包括点云的帧数,其中,M个子组包括一个或多个子组;根据M个子组中每个子组包括点云的帧数对N帧点云进行解码。
在一个可能的实施例中,一个或多个子组包括第s-1个子组和第s个子组,其中,第s-1个子组对应的比特串中的比特位的取值与第s个子组对应的比特串中的比特位的取值是不同的。
在一个可能的实施例中,一个或多个子组中每个子组对应的比特串中的比特位的取值是相同的。
在一个可能的实施例中,解析单元1702还用于:从码流中解析出当前子组中首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;根据首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息确定当前子组中非首帧点云的patch集合中的匹配patch的旋转角度信息。
需要说明的是,接收单元1701和解析单元1702用于执行图15所示实施例的步骤S1501的相关内容,解码单元1703用于执行图15所示实施例的步骤S1502的相关内容。作为一个示例,该解码装置1700的位置对应于图4中的辅助信息解码模块204,换言之,接收单元1701、解析单元1702和解码单元1703的功能可以由图4中的辅助信息解码模块204来实现。当然本申请不限于此。
参见图18,图18为本申请实施例提供的一种点云的编码装置的结构示意图。如图18所示,该编码装置1800包括:
获取单元1801,用于获取当前子组的首帧点云的patch集合中的一个或多个匹配patch 的旋转角度信息;
编码单元1802,用于将当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息编入码流。
需要说明的是,作为一个示例,该编码装置1800的位置对应于图2中的辅助信息编码模块108,换言之,获取单元1801和编码单元1802的功能可以由图2中的辅助信息编码模块108来实现。当然本申请不限于此。
参见图19,图19为本申请实施例提供的另一种点云的解码装置的结构示意图。如图19所示,该解码装置1900包括:
接收单元1901,用于接收码流;
解码单元1902,用于从码流中解析出当前子组中首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;
确定单元1903,用于根据首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息确定当前子组中非首帧点云的patch集合中的匹配patch的旋转角度信息;当前子组中点云的匹配patch的旋转角度信息用于对当前子组中的点云进行解码。
需要说明的是,作为一个示例,该解码装置1900的位置对应于图4中的辅助信息解码模块204,换言之,接收单元1901、解码单元1902和确定单元1903的功能可以由图4中的辅助信息解码模块204来实现。当然本申请不限于此。
参见图20,图20为本申请实施例提供的一种点云的编码装置的结构示意图。如图20所示,该编码装置2000包括:
确定单元2001,用于确定指示信息,该指示信息用于指示是否按照目标编码方法对点云进行编码;目标编码方法包括如第一方面所述的点云编码方法的部分或全部或第三方面所述的点云编码方法;
编码单元2002,用于将指示信息编入码流。
需要说明的是,作为一个示例,该编码装置2000的位置对应于图2中的辅助信息编码模块108,换言之,确定单元2001和编码单元2002的功能可以由图2中的辅助信息编码模块108来实现。当然本申请不限于此。
参见图21,图21为本申请实施例提供的另一种点云的解码装置的结构示意图。如图21所示,该解码装置2100包括:
解析单元2101,用于解析码流,以得到指示信息,该指示信息用于指示是否按照目标解码方法对点云进行解码;目标解码方法包括如图5所示实施例的点云编码方法的部分或全部或第四方面所述的点云编码方法;
解码单元2102,用于当指示信息用于指示按照目标解码方法对点云进行解码时,按照目标解码方法对点云进行解码。
需要说明的是,作为一个示例,该解码装置2100的位置对应于图4中的辅助信息解码模块204,换言之,解析单元2101和解码单元2102的功能可以由图4中的辅助信息解码模块204来实现。当然本申请不限于此。
图22为用于本申请实施例的译码装置2200的一种实现方式的示意性框图。其中,获取装置2200可以包括处理器2201、存储器2202和总线系统2203。其中,处理器2201和存储器2202通过总线系统2203相连,该存储器2202用于存储指令,该处理器2201用于执行该存储器2202存储的指令,以执行本申请描述的各种点云编码或解码方法,尤其是基于当前图像块的块尺寸对当前图像块进行滤波的方法。为避免重复,这里不再详细描述。
在本申请实施例中,该处理器2201可以是中央处理单元(central processing unit,CPU),该处理器2201还可以是其他通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器2202可以包括ROM设备或者RAM设备。任何其他适宜类型的存储设备也可以用作存储器2202。存储器2202可以包括由处理器2201使用总线2203访问的代码和数据22021。存储器2202可以进一步包括操作系统22023和应用程序22022,该应用程序22022包括允许处理器2201执行本申请描述的点云编码或解码方法(尤其是本申请描述的点云的子组信编解码方法)的至少一个程序。例如,应用程序22022可以包括应用1至N,其进一步包括执行在本申请描述的点云编码或解码方法的点云编码或解码应用(简称点云译码应用)。
该总线系统2203除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统2203。
可选的,编码装置2200还可以包括一个或多个输出设备,诸如显示器2204。在一个示例中,显示器2204可以是触感显示器,其将显示器与可操作地感测触摸输入的触感单元合并。显示器2204可以经由总线2203连接到处理器2201。
需要指出的是,译码装置2200可以执行本申请中的点云的编码方法,也可执行本申请中的点云的解码方法。
本领域技术人员能够领会,结合本文公开描述的各种说明性逻辑框、模块和算法步骤所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么各种说明性逻辑框、模块、和步骤描述的功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包括任何促进将计算机程序从一处传送到另一处的媒体(例如,根据通信协议)的通信媒体。以此方式,计算机可读媒体大体上可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本申请中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
作为实例而非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储指令或数据结构的形式的所要程序代码并且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴缆线、光纤缆线、双绞线、DSL或例如红外线、无线电和微波等无线技术包 含在媒体的定义中。但是,应理解,所述计算机可读存储媒体和数据存储媒体并不包括连接、载波、信号或其它暂时媒体,而是实际上针对于非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、DVD和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
可通过例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文中所描述的各种说明性逻辑框、模块、和步骤所描述的功能可以提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或者并入在组合编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。在一种示例下,编码器100及解码器200中的各种说明性逻辑框、单元、模块可以理解为对应的电路器件或逻辑元件。
本申请的技术可在各种各样的装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本申请中描述各种组件、模块或单元是为了强调用于执行所揭示的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元(包含如上文所描述的一或多个处理器)来提供。
以上所述,仅为本申请示例性的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

Claims (38)

  1. 一种点云的编码方法,其特征在于,包括:
    获取N帧点云的子组信息,所述子组信息包括所述N帧点云被划分成子组的个数M和/或M个子组中的一个或多个子组中的每个子组中包括点云的帧数;
    将所述N帧点云的子组信息编入码流;
    根据所述子组信息对所述N帧点云进行编码。
  2. 根据权利要求1所述的方法,其特征在于,所述获取N帧点云的子组信息之前,所述方法还包括:
    将所述N帧点云划分成M个子组,其中,所述将所述N帧点云划分成M个子组包括:对所述N帧点云中的多帧点云进行预划分,以得到预划分子组;根据所述预划分子组的特征信息,确定所述预划分子组为所述M个子组中的一个子组;所述特征信息用于表征所述预划分子组中的点云的占用图尺寸。
  3. 根据权利要求1所述的方法,其特征在于,所述将所述N帧点云的子组信息编入码流,包括:
    将N 0,N 1,…,N M-1和/或所述M编入所述码流,所述M大于或等于1,或者;
    将所述N 0,N 1,…,N M-1中的M-1个和所述M编入所述码流,所述M大于或等于1,或者;
    其中,N m为M个子组中的第m个子组中点云的帧数,所述m=0,1,…,M-1。
  4. 根据权利要求1-3任一项所述的方法,其特征在于,所述将所述N帧点云的子组信息编入码流,包括:
    根据所述M个子组中的一个或多个子组中点云的帧数生成一个或多个比特串,其中,所述一个或多个比特串中的第s个比特串的长度为所述一个或多个子组中第s个子组中包括点云的帧数;
    将所述一个或多个比特串编入所述码流。
  5. 根据权利要求4所述的方法,其特征在于,所述一个或多个子组包括第s-1个子组和第s个子组,其中,所述第s-1个子组对应的比特串中的比特位的取值与所述第s个子组对应的比特串中的比特位的取值是不同的。
  6. 根据权利要求4或5所述的方法,其特征在于,所述一个或多个子组中每个子组对应的比特串中的比特位的取值是相同的。
  7. 根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
    将所述子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息编入码 流。
  8. 一种点云的解码方法,其特征在于,包括:
    接收码流;
    从码流中解析出子组信息,所述子组信息包括N帧点云被划分为子组的个数M和/或M个子组中的一个或多个子组中的每个子组中包括点云的帧数;
    根据所述子组信息对所述N帧点云进行解码。
  9. 根据权利要求8所述的方法,其特征在于,所述从码流中解析出子组信息,包括:
    从所述码流中解析出所述M个子组中的每个子组中点云的帧数和/或所述M,所述M大于或等于1,或者;
    从所述码流中解析出所述M和所述M-1个子组的每个子组中点云的帧数,所述M大于或等于1。
  10. 根据权利要求9所述的方法,其特征在于,所述根据所述子组信息对所述N帧点云进行解码,包括:
    根据所述N和所述M-1个子组的每个子组中点云的帧数确定目标子组中点云的帧数,所述目标子组为所述M个子组中除了所述M-1个子组之外的子组,所述M大于或等于1;
    根据所述M个子组中每个子组包括点云的帧数对所述N帧点云进行解码。
  11. 根据权利要求8至10任一项所述的方法,其特征在于,所述从码流中解析出子组信息,包括:
    从所述码流中解析出一个或多个比特串,其中,所述一个或多个比特串中的第s个比特串的长度为一个或多个子组中第s个子组中包括点云的帧数;所述一个或多个子组对应于所述一个或多个比特串。
  12. 根据权利要求11所述的方法,其特征在于,所述根据所述子组信息对所述N帧点云进行解码,包括:
    根据所述一个或多个比特串中每个比特串的长度获取所述一个或多个子组中每个子组包括点云的帧数;
    确定所述M个子组中每个子组包括点云的帧数,其中,所述M个子组包括所述一个或多个子组;
    根据所述M个子组中每个子组包括点云的帧数对所述N帧点云进行解码。
  13. 根据权利要求11或12所述的方法,其特征在于,所述一个或多个子组包括第s-1个子组和第s个子组,其中,第s-1个子组对应的比特串中的比特位的取值与第s个子组对应的比特串中的比特位的取值是不同的。
  14. 根据权利要求11-13任一项所述的方法,其特征在于,所述一个或多个子组中每个子组对应的比特串中的比特位的取值是相同的。
  15. 根据权利要求8-14任一项所述的方法,其特征在于,所述方法还包括:
    从所述码流中解析出所述子组中首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;
    根据所述首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息确定所述子组中非首帧点云的patch集合中的匹配patch的旋转角度信息。
  16. 一种点云的编码方法,其特征在于,包括:
    获取当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;
    将所述当前子组的首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息编入码流。
  17. 一种点云解码方法,其特征在于,包括:
    接收码流;
    从所述码流中解析出当前子组中首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;
    根据所述首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息确定所述当前子组中非首帧点云的patch集合中的匹配patch的旋转角度信息;
    所述当前子组中点云的匹配patch的旋转角度信息用于对所述当前子组中的点云进行解码。
  18. 一种点云编码方法,其特征在于,包括:
    确定指示信息,所述指示信息用于指示是否按照目标编码方法对点云进行编码;所述目标编码方法包括如权利要求1~7任一项或16所述的点云编码方法;
    将所述指示信息编入码流。
  19. 一种点云解码方法,其特征在于,包括:
    解析码流,以得到指示信息,所述指示信息用于指示是否按照目标解码方法对点云进行解码;所述目标解码方法包括如权利要求8~15或17所述的点云解码方法;
    当所述指示信息用于指示按照所述目标解码方法对所述点云进行解码时,按照所述目标解码方法对所述点云进行解码。
  20. 一种点云的编码装置,其特征在于,包括:
    获取单元,用于获取N帧点云的子组信息,所述子组信息包括所述N帧点云被划分成子组的个数M和/或M个子组中的一个或多个子组中的每个子组中包括点云的帧数;
    编码单元,用于将所述N帧点云的子组信息编入码流;
    所述编码单元,还用于根据所述子组信息对所述N帧点云进行编码。
  21. 根据权利要求20所述的方法,其特征在于,所述装置还包括:
    分组单元,用于将所述N帧点云划分成M个子组,其中,所述将所述N帧点云划分成M个子组包括:对所述N帧点云中的多帧点云进行预划分,以得到预划分子组;根据所述预划分子组的特征信息,确定所述预划分子组为所述M个子组中的一个子组;所述特征信息用于表征所述预划分子组中的点云的占用图尺寸。
  22. 根据权利要求20或21所述的装置,其特征在于,在所述将所述N帧点云的子组信息编入码流的方面,所述编码单元具体用于:
    将N 0,N 1,…,N M-1和/或所述M编入所述码流,所述M大于或等于1,或者;
    将所述N 0,N 1,…,N M-1中的M-1个和所述M编入所述码流,所述M大于或等于1,或者;
    其中,N m为M个子组中的第m个子组中点云的帧数,所述m=0,1,…,M-1。
  23. 根据权利要求20所述的装置,其特征在于,在所述将所述N帧点云的子组信息编入码流的方面,所述编码单元具体用于:
    根据所述M个子组中的一个或多个子组中点云的帧数生成一个或多个比特串,其中,所述一个或多个比特串中的第s个比特串的长度为所述一个或多个子组中第s个子组中包括点云的帧数;
    将所述一个或多个比特串编入所述码流。
  24. 根据权利要求23所述的装置,其特征在于,所述一个或多个子组包括第s-1个子组和第s个子组,其中,第s-1个子组对应的比特串中的比特位的取值与第s个子组对应的比特串中的比特位的取值是不同的。
  25. 根据权利要求23或24所述的装置,其特征在于,所述一个或多个子组中每个子组对应的比特串中的比特位的取值是相同的。
  26. 根据权利要求20-24任一项所述的装置,其特征在于,所述编码单元还用于:
    将所述子组的首帧点云的patch集合中的一个或多个patch的旋转角度信息编入码流。
  27. 一种点云的解码装置,其特征在于,包括:
    接收单元,用于接收码流;
    解析单元,用于从所述码流中解析出子组信息,所述子组信息包括N帧点云被划分为子组的个数M和/或M个子组中的一个或多个子组中的每个子组中包括点云的帧数;
    解码单元,用于根据所述子组信息对所述N帧点云进行解码。
  28. 根据权利要求27所述的装置,其特征在于,所述解析单元具体用于:
    从所述码流中解析出所述M个子组中的每个子组中点云的帧数和/或所述M,所述M大于或等于1,或者;
    从所述码流中解析出所述M和所述M-1个子组的每个子组中点云的帧数,所述M大于或等于1。
  29. 根据权利要求28所述的装置,其特征在于,所述解码单元具体用于:
    根据所述N和所述M-1个子组的每个子组中点云的帧数确定目标子组中点云的帧数,所述目标子组为所述M个子组中除了所述M-1个子组之外的子组,所述M大于或等于1;
    根据所述M个子组中每个子组包括点云的帧数对所述N帧点云进行解码。
  30. 根据权利要求27所述的装置,其特征在于,所述解析单元具体用于:
    从所述码流中解析出一个或多个比特串,其中,所述一个或多个比特串中的第s个比特串的长度为一个或多个子组中第s个子组中包括点云的帧数;所述一个或多个子组对应于所述一个或多个比特串。
  31. 根据权利要求30所述的装置,其特征在于,所述解码单元具体用于:
    根据所述一个或多个比特串中每个比特串的长度获取所述一个或多个子组中每个子组包括点云的帧数;
    确定所述M个子组中每个子组包括点云的帧数,其中,所述M个子组包括一个或多个子组;
    根据所述M个子组中每个子组包括点云的帧数对所述N帧点云进行解码。
  32. 根据权利要求30或31所述的装置,其特征在于,所述一个或多个子组包括第s-1个子组和第s个子组,其中,第s-1个子组对应的比特串中的比特位的取值与第s个子组对应的比特串中的比特位的取值是不同的。
  33. 根据权利要求30-32任一项所述的装置,其特征在于,所述一个或多个子组中每个子组对应的比特串中的比特位的取值是相同的。
  34. 根据权利要求27-33任一项所述的装置,其特征在于,所述解析单元还用于:
    从所述码流中解析出当前子组中首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;
    根据所述首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息确定所述当前子组中非首帧点云的patch集合中的匹配patch的旋转角度信息。
  35. 一种点云的编码装置,其特征在于,包括:
    获取单元,用于获取当前子组的首帧点云的patch集合中的一个或多个patch的旋转角度信息;所述一个或多个patch为具有匹配关系的patch;
    编码单元,用于将所述当前子组的首帧点云的patch集合中的一个或多个patch的旋转角度信息编入码流。
  36. 一种点云的解码装置,其特征在于,包括:
    接收单元,用于接收码流;
    解析单元,用于从所述码流中解析出当前子组中首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息;
    确定单元,用于根据所述首帧点云的patch集合中的一个或多个匹配patch的旋转角度信息确定所述当前子组中非首帧点云的patch集合中的匹配patch的旋转角度信息;所述当前子组中点云的匹配patch的旋转角度信息用于对所述当前子组中的点云进行解码。
  37. 一种点云的编码装置,其特征在于,包括:
    确定单元,用于确定指示信息,所述指示信息用于指示是否按照目标编码方法对点云进行编码;所述目标编码方法包括如权利要求1~7任一项或16所述的点云编码方法;
    编码单元,用于将所述指示信息编入码流。
  38. 一种点云的解码装置,其特征在于,包括:
    解析单元,用于解析码流,以得到指示信息,所述指示信息用于指示是否按照目标解码方法对点云进行解码;所述目标解码方法包括如权利要求8~15或17所述的点云解码方法;
    解码单元,用于当所述指示信息用于指示按照所述目标解码方法对所述点云进行解码时,按照所述目标解码方法对所述点云进行解码。
PCT/CN2019/122216 2018-12-13 2019-11-29 点云的编解码方法及装置 WO2020119487A1 (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
BR112021011380-0A BR112021011380A2 (pt) 2018-12-13 2019-11-29 Método e aparelho de codificação e decodificação de nuvem de pontos
EP19895185.7A EP3890324A4 (en) 2018-12-13 2019-11-29 METHOD AND DEVICE FOR ENCODING AND DECODING POINT CLOUDS
CA3123110A CA3123110A1 (en) 2018-12-13 2019-11-29 Point cloud encoding and decoding method and apparatus
US17/345,514 US11961265B2 (en) 2018-12-13 2021-06-11 Point cloud encoding and decoding method and apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201811538662.9 2018-12-13
CN201811538662.9A CN111327902B (zh) 2018-12-13 2018-12-13 点云的编解码方法及装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/345,514 Continuation US11961265B2 (en) 2018-12-13 2021-06-11 Point cloud encoding and decoding method and apparatus

Publications (1)

Publication Number Publication Date
WO2020119487A1 true WO2020119487A1 (zh) 2020-06-18

Family

ID=71077116

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/122216 WO2020119487A1 (zh) 2018-12-13 2019-11-29 点云的编解码方法及装置

Country Status (6)

Country Link
US (1) US11961265B2 (zh)
EP (1) EP3890324A4 (zh)
CN (1) CN111327902B (zh)
BR (1) BR112021011380A2 (zh)
CA (1) CA3123110A1 (zh)
WO (1) WO2020119487A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021062530A1 (en) * 2019-10-01 2021-04-08 Blackberry Limited Angular mode syntax for tree-based point cloud coding
RU2815072C1 (ru) * 2020-12-23 2024-03-11 Бейдзин Сяоми Мобайл Софтвэр Ко., Лтд. Способ и устройство для энтропийного кодирования/декодирования данных геометрии облака точек, захваченных вращающейся головкой датчиков

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110719497B (zh) * 2018-07-12 2021-06-22 华为技术有限公司 点云编解码方法和编解码器
CN114915664A (zh) * 2021-01-29 2022-08-16 华为技术有限公司 一种点云数据传输方法及装置
CN115150384B (zh) * 2021-03-31 2023-08-18 腾讯科技(深圳)有限公司 点云编解码方法、装置、计算机可读介质及电子设备
EP4071717A1 (en) * 2021-04-08 2022-10-12 Beijing Xiaomi Mobile Software Co., Ltd. Method of encoding point cloud geometry data captured by a spinning sensors head
CN116781920A (zh) * 2022-03-11 2023-09-19 腾讯科技(深圳)有限公司 点云编解码方法、装置、计算机、存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170347122A1 (en) * 2016-05-28 2017-11-30 Microsoft Technology Licensing, Llc Scalable point cloud compression with transform, and corresponding decompression
CN108171761A (zh) * 2017-12-13 2018-06-15 北京大学 一种基于傅里叶图变换的点云帧内编码方法及装置
US20180268570A1 (en) * 2017-03-16 2018-09-20 Samsung Electronics Co., Ltd. Point cloud and mesh compression using image/video codecs
CN108765487A (zh) * 2018-06-04 2018-11-06 百度在线网络技术(北京)有限公司 重建三维场景的方法、装置、设备和计算机可读存储介质
CN108810571A (zh) * 2017-05-04 2018-11-13 汤姆逊许可公司 编码和解码二维点云的方法和设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014080330A2 (en) 2012-11-22 2014-05-30 Geosim Systems Ltd. Point-cloud fusion
CN104778688B (zh) * 2015-03-27 2018-03-13 华为技术有限公司 点云数据的配准方法及装置
CN105976353B (zh) * 2016-04-14 2020-01-24 南京理工大学 基于模型和点云全局匹配的空间非合作目标位姿估计方法
WO2019196475A1 (zh) 2018-04-09 2019-10-17 华为技术有限公司 全局匹配patch的获取方法及装置
CN108632607B (zh) * 2018-05-09 2019-06-21 北京大学深圳研究生院 一种基于多角度自适应帧内预测的点云属性压缩方法
CN110971912B (zh) 2018-09-30 2022-04-29 华为技术有限公司 点云编解码方法、编解码器、编解码装置和存储介质
WO2020071703A1 (ko) * 2018-10-01 2020-04-09 엘지전자 주식회사 포인트 클라우드 데이터 전송 장치, 포인트 클라우드 데이터 전송 방법, 포인트 클라우드 데이터 수신 장치 및/또는 포인트 클라우드 데이터 수신 방법
US11581022B2 (en) * 2019-05-29 2023-02-14 Nokia Technologies Oy Method and apparatus for storage and signaling of compressed point clouds

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170347122A1 (en) * 2016-05-28 2017-11-30 Microsoft Technology Licensing, Llc Scalable point cloud compression with transform, and corresponding decompression
US20180268570A1 (en) * 2017-03-16 2018-09-20 Samsung Electronics Co., Ltd. Point cloud and mesh compression using image/video codecs
CN108810571A (zh) * 2017-05-04 2018-11-13 汤姆逊许可公司 编码和解码二维点云的方法和设备
CN108171761A (zh) * 2017-12-13 2018-06-15 北京大学 一种基于傅里叶图变换的点云帧内编码方法及装置
CN108765487A (zh) * 2018-06-04 2018-11-06 百度在线网络技术(北京)有限公司 重建三维场景的方法、装置、设备和计算机可读存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JIANQIANG LIU ET AL: "Data-Adaptive Packing Method for Compression of Dynamic Point Cloud Sequences", 2019 IEEE INTERNATIONAL CONFERENCE ON MULTIMEDIA AND EXPO (ICME), 8 July 2019 (2019-07-08), pages 904 - 909, XP033590306, DOI: 10.1109/ICME.2019.00160 *
LUKASZ LITWIC ET AL: "Random Access Encoding with HM for Video-Based Point Cloud Codec", JOINT COLLABORATIVE TEAM ON VIDEO CODING (JCT-VC) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11, 33RD MEETING: MACAU, no. JCTVC-AG0026, 12 October 2018 (2018-10-12), pages 1 - 4, XP030242469 *
See also references of EP3890324A4

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021062530A1 (en) * 2019-10-01 2021-04-08 Blackberry Limited Angular mode syntax for tree-based point cloud coding
RU2815072C1 (ru) * 2020-12-23 2024-03-11 Бейдзин Сяоми Мобайл Софтвэр Ко., Лтд. Способ и устройство для энтропийного кодирования/декодирования данных геометрии облака точек, захваченных вращающейся головкой датчиков

Also Published As

Publication number Publication date
BR112021011380A2 (pt) 2021-08-31
CN111327902B (zh) 2022-11-22
EP3890324A1 (en) 2021-10-06
CA3123110A1 (en) 2020-06-18
EP3890324A4 (en) 2022-03-23
US11961265B2 (en) 2024-04-16
CN111327902A (zh) 2020-06-23
US20210304443A1 (en) 2021-09-30

Similar Documents

Publication Publication Date Title
WO2020119487A1 (zh) 点云的编解码方法及装置
EP3772853B1 (en) Method and device for point cloud coding
US11895307B2 (en) Block-based predictive coding for point cloud compression
CN110662087B (zh) 点云编解码方法和编解码器
WO2020063246A1 (zh) 点云编解码方法和编解码器
WO2020151496A1 (zh) 点云的编解码方法及装置
CN110719497B (zh) 点云编解码方法和编解码器
WO2020063294A1 (zh) 点云编解码方法及编解码器
EP3849188A1 (en) Point cloud coding method and encoder
WO2019047628A1 (zh) 海量图片处理方法、装置、电子设备及存储介质
US8582876B2 (en) Hybrid codec for compound image compression
WO2022155974A1 (zh) 视频编解码以及模型训练方法与装置
WO2020119725A1 (zh) 点云编码方法和编码器
US20120263224A1 (en) Encoding digital assets as an image
WO2020057338A1 (zh) 点云编码方法和编码器
WO2022253088A1 (zh) 编解码方法、装置、设备、存储介质、计算机程序及产品
WO2022257528A1 (zh) 点云属性的预测方法、装置及相关设备
WO2023082773A1 (zh) 视频编解码方法、装置、设备、存储介质及计算机程序
US20150201190A1 (en) Two pass quantization of video data
CN115334305A (zh) 视频数据传输方法、装置、电子设备和介质
CN116456091A (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: 19895185

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 3123110

Country of ref document: CA

NENP Non-entry into the national phase

Ref country code: DE

REG Reference to national code

Ref country code: BR

Ref legal event code: B01A

Ref document number: 112021011380

Country of ref document: BR

ENP Entry into the national phase

Ref document number: 2019895185

Country of ref document: EP

Effective date: 20210630

ENP Entry into the national phase

Ref document number: 112021011380

Country of ref document: BR

Kind code of ref document: A2

Effective date: 20210611