WO2021108970A1 - 点云处理方法、编码器、解码器及存储介质 - Google Patents

点云处理方法、编码器、解码器及存储介质 Download PDF

Info

Publication number
WO2021108970A1
WO2021108970A1 PCT/CN2019/122502 CN2019122502W WO2021108970A1 WO 2021108970 A1 WO2021108970 A1 WO 2021108970A1 CN 2019122502 W CN2019122502 W CN 2019122502W WO 2021108970 A1 WO2021108970 A1 WO 2021108970A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
points
coded
point
morton
Prior art date
Application number
PCT/CN2019/122502
Other languages
English (en)
French (fr)
Inventor
杨付正
万帅
霍俊彦
马彦卓
杨丽慧
孙泽星
Original Assignee
Oppo广东移动通信有限公司
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 Oppo广东移动通信有限公司 filed Critical Oppo广东移动通信有限公司
Priority to CN201980102302.0A priority Critical patent/CN114730474A/zh
Priority to PCT/CN2019/122502 priority patent/WO2021108970A1/zh
Priority to EP19955220.9A priority patent/EP4071714A4/en
Publication of WO2021108970A1 publication Critical patent/WO2021108970A1/zh
Priority to US17/825,953 priority patent/US20220286677A1/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/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
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Definitions

  • the embodiments of the present application relate to the technical field of video coding and decoding, and in particular, to a point cloud processing method, an encoder, a decoder, and a storage medium.
  • the geometric information of the point cloud and the attribute information corresponding to each point are separately encoded. After the geometric coding is completed, the geometric information is reconstructed, and the coding of the attribute information will depend on the reconstructed geometric information.
  • the bounding box is divided into 8 sub-cubes, and the non-empty (containing points in the point cloud) sub-cubes are continued to be divided into eight equal parts until the leaf knots are obtained.
  • the point is a 1x1x1 unit cube
  • the division is stopped, and the points in the leaf nodes are coded to generate a binary code stream, that is, a geometric bit stream.
  • the geometric information is reconstructed.
  • attribute coding is mainly carried out for color information.
  • the color information is converted from the RGB color space to the YUV color space.
  • use the reconstructed geometric information to recolor the point cloud, so that the uncoded attribute information corresponds to the reconstructed geometric information.
  • color information coding after sorting the point cloud with Morton code, the subsequent differential prediction is directly performed, and finally the prediction residual is quantized and coded to generate a binary code stream.
  • the point cloud directly enters the coding part after preprocessing such as conversion and quantization.
  • preprocessing such as conversion and quantization.
  • the embodiments of the application provide a point cloud processing method, an encoder, a decoder, and a storage medium, which can divide the pre-processed point cloud into strips first, and perform parallel encoding processing based on each stripe to improve the coding and decoding performance. Efficiency, saving coding time.
  • an embodiment of the present application provides a point cloud processing method applied to an encoder, including:
  • the first code point index range and the first three-dimensional translation coordinate corresponding to each of the M strips are written into a code stream.
  • an embodiment of the present application also provides a point cloud processing method applied to a decoder, including:
  • a three-dimensional image model of the point cloud to be encoded is restored based on the geometric information of the point cloud to be decoded for each stripe and the attribute information of the point cloud to be encoded for each stripe.
  • an encoder including:
  • the conversion and quantization part is configured to perform geometric coordinate conversion and quantization of the original points to be coded in the point cloud to be coded to obtain the points to be coded;
  • An obtaining part configured to obtain the three-dimensional Morton code of the point to be coded and the preset stripe division number
  • the displacement part is configured to shift the three-dimensional Morton code to the right by N bits to obtain the M types of Morton codes of the parent blocks respectively corresponding to the points to be coded, wherein the M types of Morton codes correspond to the M types of Morton codes.
  • a parent block, and M is less than or equal to the preset number of stripe divisions, and N is a positive integer greater than or equal to 1;
  • the determining part is configured to determine M first code point index ranges respectively corresponding to the M types of Morton codes
  • the dividing part is configured to divide the space where the point to be coded within the index range of each of the first code points is located into an initial strip;
  • the displacement part is further configured to move each initial strip to the left according to the corresponding first three-dimensional translation coordinate to obtain M strips;
  • the writing part is configured to write the first code point index range and the first three-dimensional translation coordinate corresponding to each of the M strips into a code stream.
  • an embodiment of the present application provides a decoder, including:
  • the parsing part is configured to parse the first code point index range, the first three-dimensional translation coordinate, the geometric bit stream, and the attribute bit stream corresponding to each of the M stripes from the code stream;
  • the decoding part is configured to determine the geometry of the point cloud to be decoded for each slice based on the first code point index range corresponding to each slice, the first three-dimensional translation coordinate, and the geometric bit stream Information; based on the attribute bitstream, determine the attribute information of the point cloud to be decoded for each stripe; and based on the geometric information of the point cloud to be decoded for each slice and the to-be-decoded point cloud for each slice
  • the attribute information of the point cloud obtains the recovery value of the point cloud to be decoded.
  • an encoder including:
  • the first memory is used to store executable instructions
  • the first processor is configured to implement the point cloud processing method described in the first aspect when executing the executable instructions stored in the first memory.
  • an embodiment of the present application also provides a decoder, including:
  • the second memory is used to store executable instructions
  • the second processor is configured to implement the point cloud processing method described in the second aspect when executing the executable instructions stored in the second memory.
  • an embodiment of the present application provides a computer-readable storage medium applied to encoding, including: storing executable instructions for causing the first processor to execute, to implement the point cloud processing described in the first aspect method.
  • an embodiment of the present application provides a computer-readable storage medium applied to a decoder, including: storing executable instructions for causing a second processor to execute, to implement the point cloud described in the second aspect Approach.
  • the point cloud processing method, encoder, decoder, and storage medium provided by the embodiments of the present application include: the original points to be coded in the point cloud to be coded are converted and quantized to obtain the points to be coded; obtaining the points to be coded The three-dimensional Morton code of the point and the preset number of strip divisions; the three-dimensional Morton code is shifted by N bits to the right to obtain the M Morton codes of the parent block corresponding to the points to be coded.
  • the M Morton codes correspond to M The first parent block, and M is less than or equal to the preset number of strip divisions, and N is a positive integer greater than or equal to 1; determine the M first code point index ranges corresponding to M types of Morton codes; The space where the point to be coded is located within the range of the code point index is divided into an initial strip, and after each initial strip is shifted to the left according to its corresponding first three-dimensional translation coordinate, M strips are obtained; the M strips The first code point index range and the first three-dimensional translation coordinate corresponding to each strip in are written into the code stream.
  • the encoder since the encoder is performing geometric encoding, after preprocessing of conversion and quantization, the point to be encoded will be based on the three-dimensional Morton code of the point to be encoded to find its parent block, and The stripe division is realized based on finding the parent block of the point to be coded.
  • the division of multiple strips is realized, and the coding is performed based on each stripe to achieve the effect of parallel coding and improve the coding and decoding performance. Efficiency, saving coding time.
  • FIG. 1 is a block diagram of an exemplary encoding process provided by an embodiment of the application
  • FIG. 2 is a schematic diagram 1 of an exemplary two-dimensional Morton code provided by an embodiment of the application;
  • FIG. 3 is a second schematic diagram of an exemplary two-dimensional Morton code provided by an embodiment of this application.
  • FIG. 4 is a schematic diagram 1 of an exemplary three-dimensional Morton encoding provided by an embodiment of the application;
  • Fig. 5 is a second schematic diagram of an exemplary three-dimensional Morton coding provided by an embodiment of the application.
  • Fig. 6 is a first flowchart of a point cloud processing method provided by an embodiment of the application.
  • FIG. 7 is a second flowchart of a point cloud processing method provided by an embodiment of the application.
  • FIG. 8 is a flowchart of a point cloud processing method provided by an embodiment of the application.
  • FIG. 9 is a first structural diagram of an encoder provided by an embodiment of the application.
  • FIG. 10 is a second structural diagram of an encoder provided by an embodiment of the application.
  • FIG. 11 is a first structural diagram of a decoder provided by an embodiment of this application.
  • FIG. 12 is a second structural diagram of a decoder provided by an embodiment of this application.
  • the point cloud (continuous multi-frame sequence) of the input three-dimensional image model is converted and quantized before preprocessing, and the preprocessed point cloud data to be encoded
  • the points to be coded in are divided into slices (slices), and each slice is independently coded.
  • the geometric information that is, the geometric coordinates
  • the point cloud data is divided into multiple slices through slice division of the point to be coded.
  • the geometric information of the point cloud and the attribute information corresponding to each point cloud are separately coded.
  • the bounding box is divided into 8 sub-cubes, and the non-empty (including points in the point cloud) sub-cubes are continued to be divided into eight equals.
  • the geometric coding is completed, and after the geometric information is reconstructed, color conversion is performed, and the color information (that is, the attribute information) is converted from the RGB color space to the YUV color space. Then, use the reconstructed geometric information to recolor the point cloud, so that the uncoded attribute information corresponds to the reconstructed geometric information.
  • the high-frequency coefficients and low-frequency coefficients are obtained by transformation, and finally the coefficients are quantized by residuals (ie, quantized coefficients).
  • the geometrically coded data after octree division and surface fitting and the quantized coefficient processing attribute coded data are sliced and synthesized , Sequentially encode the vertex coordinates of each block (that is, arithmetic coding) to generate a binary attribute bit stream, that is, an attribute code stream.
  • the encoder obtains the geometric coordinate information of the point cloud, and the Morton code corresponding to each point in the point cloud can be obtained by using the coordinate information of the point.
  • Morton coding is also called z-order code, because its coding order is based on spatial z order.
  • the specific method of calculating the Morton code is described as follows. For each component of the three-dimensional coordinate represented by a d-bit binary number, the representation of the three components is realized as follows:
  • Morton code M is to start from the highest position of x, y, z, and alternately arrange x l , y l , z l to the lowest position in turn.
  • the calculation formula of M is as follows:
  • Figure 2 shows the spatial encoding of each pixel of an 8*8 image, from 000000 to 111111, using one-dimensional binary numbers to encode the position coordinates of x and y values between 0-7. Interleave binary coordinate values to obtain a binary z-value map. Connect the z-shape along the numerical direction to produce a recursive z-shaped curve. In each position in the figure, the z value is placed in the order of connection.
  • the above figure is iteratively generated in the z direction, from 00-11 (one z in the entire figure), then from 0000-1111 (one z for each point of the previous z), and then from 000000-111111 (the previous Put one z) for each point of z, increase by two bits each time, and increase recursively.
  • FIG. 3 shows the 2x2, 4x4, 8x8 and 16x16 spatial coding sequence, from which it can be seen that the coding sequence of the Morton code is implemented according to the spatial z sequence.
  • the coordinates x and y are binarized first, and then starting from the highest digit of x and y, the values of each digit from high to low are arranged alternately.
  • connect the Morton code values from small to large you can see the zigzag connection sequence, and every four points can be regarded as a small block, and except for the last two digits, the first four digits are the same.
  • the same Morton code of the first four bits can determine a parent block.
  • the Morton code of the parent block can be obtained by shifting the Morton code of these four points to the right by 2 digits.
  • every four blocks of the same level are continuously combined, that is, the Morton code value is shifted by two bits to the right, and their parent block can be obtained.
  • every eight small blocks are combined, that is, the Morton code value is shifted three places to the right, and their parent blocks can be obtained.
  • an embodiment of the present application provides a point cloud processing method, and the method may include:
  • S106 Write the first code point index range and the first three-dimensional translation coordinate corresponding to each of the M strips into the code stream.
  • the preprocessed points to be coded are divided into different slices according to the point cloud Morton code, thereby realizing parallel coding based on slices.
  • the point cloud to be coded is the point cloud data of the object to be coded in the point cloud to be coded in this application.
  • the point to be coded may contain N points, that is, N Points to be coded. Among them, N is greater than or equal to 1.
  • the points to be coded are obtained; the three-dimensional Morton code of the point to be coded and the preset number of band divisions are obtained; the three-dimensional Morton code is shifted to the right by N
  • the M Morton codes of the parent blocks corresponding to the points to be coded are obtained, where the M Morton codes correspond to the first parent blocks containing M, and M is less than or equal to the preset number of stripe divisions, and N is greater than or equal to 1.
  • the encoder when determining the index range of the first code point, the encoder needs to The first code point index range and the first three-dimensional translation coordinate corresponding to the strip are written into the geometric code stream, that is, the geometric bit stream, as the header information of the geometric information, to be transmitted to the decoder, so that the decoder can directly analyze and decode during decoding. .
  • the calculation of the three-dimensional Morton code of the point to be coded is calculated by formula (1).
  • the preset number of strip divisions is preset or input by the user, and a default value can also be set, which is not limited in the embodiment of the present application.
  • the preset number of strip divisions may be 10.
  • the encoder can right-shift the preprocessed three-dimensional Morton code corresponding to the point to be coded to determine the parent block corresponding to each point to be coded, and the M types of Morton codes corresponding to all parent blocks.
  • Frame code, and shifted to the right by N is to make the number of parent blocks less than or equal to the preset number of stripe divisions.
  • the encoder after the encoder obtains the three-dimensional Morton code of the point to be coded and the preset number of strip divisions, it shifts the three-dimensional Morton code to the right by N bits to obtain the parent block corresponding to the point to be coded. Before M Morton codes, the encoder can determine the right shift number N through the maximum and minimum values of the three-dimensional Morton codes in the points to be coded, as follows:
  • the encoder determines the difference between the maximum value and the minimum value in the three-dimensional Morton code; the difference is shifted to the right by 3 bits in turn, until the difference after the right shift by 3K bits is less than or equal to the preset number of strip divisions So far, where K is an integer greater than or equal to 0; the value of N is determined to be 3K.
  • the encoder determines the difference between the maximum value and the minimum value in the three-dimensional Morton code; shifts the difference to the right sequentially until the difference obtained after the right shift is L bits less than or equal to the preset number of strip divisions, Among them, L is an integer greater than or equal to 0; the value of N is determined to be L.
  • the encoder finds the difference between the maximum value and the minimum value in the three-dimensional Morton code, and uses the method of shifting the difference to the right to determine the number of digits in which the number of parent blocks is less than or equal to the preset number of strip divisions .
  • the three-dimensional Morton codes of the points to be coded are arranged in ascending order, and each point to be coded corresponds to a Morton code.
  • the difference can represent the number of points between the maximum Morton code and the minimum Morton code. Since the Morton code can be shifted right to get the Morton code of its corresponding parent block, the encoder can also shift the delta to the right to get the number of parent blocks between the maximum and minimum Morton codes. As long as the number of parent blocks finally obtained is less than or equal to the preset number of strip divisions, the number of bits by which the difference is shifted to the right is N.
  • the number of bits by which the encoder sequentially shifts the difference to the right may be a multiple of 3 or a multiple of non-three, which is not limited in the embodiment of the present application. Among them, after shifting to the right by a multiple of 3, the cube slice is obtained, and when it is not a multiple of 3, it is a cuboid slice.
  • the encoder determines which Morton codes of the M types of Morton codes the points to be encoded belong to, because the Morton codes of the points to be encoded are all determined by the Morton codes of the M types of Morton codes. They are arranged in order from small to large. Therefore, the Morton code value of the parent block corresponding to each point to be coded can be put into a set M, so that the order of the Morton code in set M is also from small to large , And the points to be coded corresponding to the Morton code of the same parent block are continuous together. Therefore, the encoder can also obtain the Morton code of the parent block of the first point to be coded, and by adding 1, the values of the M Morton codes of the subsequent parent block.
  • N points to be coded correspond to M kinds of Morton codes, and M is smaller than N.
  • the encoder can determine the index range of the points to be coded corresponding to each Morton code from the set M, that is, obtain M first code point index ranges. Among them, the first code point index range represents the number of points belonging to a parent block.
  • the encoder may traverse the code points to be coded within a preset range based on M Morton codes to determine the M first code point index range; or, the encoder may use a template library algorithm (Standard Template Library, STL) to determine the index ranges of the M first code points corresponding to the M types of Morton codes respectively.
  • STL Standard Template Library
  • the preset range can be a quantitative value, and the embodiment of this application is not limited.
  • the encoder can use a fast search algorithm (STL algorithm), and the index range corresponding to each parent block can be found in M. It is also possible to search for Morton codes within a certain range through a traversal method, and other algorithms that can quickly find the corresponding Morton codes can also be used, which is not limited in the embodiment of the present application.
  • the encoder after the encoder obtains the three-dimensional Morton code of the point to be coded and the preset number of strip divisions, it shifts the three-dimensional Morton code to the right by N bits to obtain the parent block corresponding to the point to be coded.
  • N Before M Morton codes, N must be obtained first, and the specific implementation is: based on the preset number of stripe divisions, determine the number of parent blocks; where the number of parent blocks is less than or equal to the preset number of stripe divisions, and is F times 8; Write the number of parent blocks into the code stream; determine the maximum value of the three-dimensional Morton code; shift the maximum value by H bits to the right, until the maximum value is 3F bits left, H is a positive integer greater than or equal to 1; determine the value of N as H .
  • H can also be 0.
  • the encoder method for obtaining the number of parent blocks can be calculated by shifting the maximum and minimum values of the Morton code to the right. It can also specify the number or size of parent blocks, and set the number of parent blocks. For a fixed value, then the right shift number N of Morton code can also be obtained.
  • the number of parent blocks may be preset by the user or determined based on the preset number of stripe divisions, where the number of parent blocks is the maximum power of 8 contained in the preset number of stripe divisions. For example, when the preset number of stripe divisions is 10, the number of parent blocks is 8; when the preset number of stripe divisions is 65, the number of parent blocks is 64.
  • the encoder can determine the number of parent blocks based on the preset number of stripe divisions; where the number of parent blocks is less than or equal to the preset number of stripe divisions and is F times 8; the number of parent blocks is written Enter the code stream; determine the maximum value in the three-dimensional Morton code; shift the maximum value by H bits to the right until the maximum value is 3F bits left, H is a positive integer greater than or equal to 1; determine the value of N as H.
  • each initial strip is translated according to its corresponding first three-dimensional After the coordinates are shifted to the left, before M stripes are obtained, the first three-dimensional translational coordinates corresponding to each initial stripe are determined based on the N and M first Morton codes. Among them, M Morton codes and M initial stripes One-to-one correspondence.
  • the encoder when the encoder performs geometric encoding on each strip, it is necessary to first perform coordinate translation (the first three-dimensional translation coordinate) of the point to be coded in the slice, so that the point to be coded is coded from the smallest.
  • the first three-dimensional translation coordinate corresponding to each strip is different.
  • the final strip is obtained by shifting N bits to the left.
  • the first three-dimensional translation coordinate is (0, 0, 2 N ).
  • Morton code corresponding to one band as the parent block 011 the left end of the strip to give N bits, then the first three-dimensional translational coordinates (0,2 N, 2 N).
  • an identifier can be set for each strip, and the encoder can index the identification of each strip and the index of the first code point corresponding to each strip.
  • the range and the first three-dimensional translation coordinate corresponding to each stripe are written into the code stream.
  • the id corresponding to each slice (that is, the identification of each strip) and origin (the first three-dimensional translation coordinate) and the number of points in the slice (that is, the index range of the first code point) are used as the geometric header information gps Passed to the decoding end, where the id of the slice is also passed to the decoding end as the attribute header information aps.
  • the encoder performs slice division for the points to be coded after preprocessing, first obtains the three-dimensional Morton codes of the points to be coded, and sorts these three-dimensional Morton codes from small to large. In this way, the point cloud Each point to be coded corresponds to a Morton code, and then the maximum and minimum values of the Morton code are subtracted, so that the difference delta between the two Morton codes is obtained.
  • delta represents the number of points between the maximum and minimum Morton codes.
  • the delta is also shifted to the right to get the number of parent blocks between the maximum and minimum Morton codes. Assuming that the number of slices is A, the number of parent blocks is limited to the range of 0-A. Then, by continuously shifting the delta to the right, shifting to the right by three bits each time, when the delta is shifted to the right by N bits, the value is less than or equal to A, at this time delta indicates that the number of parent blocks between the maximum and minimum Morton codes is less than or equal to A.
  • the encoder After determining the right shift number N, the encoder shifts all Morton code values to the right by N bits to obtain the Morton code value of the parent block corresponding to each point, and put them into the set M . Or, as long as the Morton code of the parent block of the first point is obtained, by adding 1, the values of the Morton code of the subsequent parent blocks can also be obtained one by one. In this way, the encoder can find the index range corresponding to each parent block in the geometry M through a fast search algorithm (STL algorithm). According to the obtained index range, the points corresponding to the indexes in each range can be divided into different slices. In the coordinate translation of the points in the slice, the division of the slice is completed.
  • STL algorithm fast search algorithm
  • the encoder since the encoder is performing geometric encoding, after preprocessing of conversion and quantization, the point to be encoded will be based on the three-dimensional Morton code of the point to be encoded to find its parent block, and based on The parent block of the point to be coded is found to realize the division of strips. In this way, taking into account the division of the to-be-coded points of the same parent block into one stripe, the division of multiple strips is realized, and the coding is performed based on each stripe to achieve the effect of parallel coding and improve the coding and decoding performance. Efficiency, saving coding time.
  • an embodiment of the present application provides a point cloud processing method, and the method may include:
  • S205 Determine the number of points to be coded corresponding to each first parent block in the M first parent blocks based on the M first code point index ranges.
  • the number of points in the parent block when the parent block is divided in the point cloud, the number of points in the parent block can be obtained. If the number of points in the parent block is small, it can be merged with the latter block into one block. For the last parent block, you can judge how many points it has by the number of remaining points. If the number of points is less, it will be merged into the previous parent block.
  • the encoder obtains M first code point index ranges, that is, knows the number of points of the first parent block corresponding to each strip, and the length of the first code point index range is the length of the first parent block Points.
  • the M first parent blocks can be subdivided to obtain J second code point index ranges corresponding to the J second parent blocks.
  • the preset number of points threshold includes a preset upper limit of the number of points and a preset lower limit of the number of points.
  • the specific implementation is: when the number of points is greater than the upper limit of the preset number of points, the current first parent block corresponding to the number of points is divided twice to obtain at least two second parent blocks; when the number of points is less than the lower limit of the preset number of points, The current first parent block corresponding to the points is merged with the previous parent block to obtain a second parent block; until the points are between the preset lower limit and the preset upper limit, J corresponding to the points to be coded are obtained The second parent block; the J second code point index ranges corresponding to the J second parent blocks are determined.
  • a threshold of max and min may be used for judgments with a large number of points. If the number of points is less than min, it is determined that the number of points is small; if the number of points is greater than max, it is determined that the number of points is large, and the parent block is divided again.
  • the upper limit of the preset number of points and the lower limit of the preset number of points may be determined by actual conditions, and the embodiment of the present application does not limit it.
  • the encoder After the encoder knows the J second code point index range, it can re-divide the space of the to-be-coded point within each second code point index range into an initial stripe, and then divide each initial stripe according to After the respective corresponding second three-dimensional translation coordinates are shifted to the left, J strips are obtained, and the second code point index range and the second three-dimensional translation coordinates corresponding to each of the J strips are written into the code stream.
  • the point to be encoded will be based on the three-dimensional Morton code of the point to be encoded to find its parent block, and based on The parent block of the point to be coded is found to realize the division of strips. In this way, taking into account the division of the to-be-coded points of the same parent block into one strip, the secondary division of multiple strips is realized, so that the division of slices is more accurate.
  • an embodiment of the present application provides a point cloud processing method, which is applied to a decoder, and includes:
  • S302 Determine the geometric information of the point cloud to be decoded for each strip based on the first code point index range, the first three-dimensional translation coordinate and the geometric bit stream corresponding to each strip.
  • S304 Obtain a recovery value of the point cloud to be decoded based on the geometric information of the point cloud to be decoded for each slice and the attribute information of the point cloud to be decoded for each slice.
  • the coded bit stream that is, the coded bit stream is transmitted to the decoder, and the coded bit stream is parsed to obtain the first code point index range and the first three-dimensional translation coordinate geometry bit corresponding to each of the M slices.
  • the decoder can determine the geometric information based on each stripe identifier, the corresponding first code point index range, the first three-dimensional translation coordinate, and the geometric bit stream, and determine each slice based on the attribute bit stream.
  • the attribute information of the point cloud to be decoded for each stripe identification of each stripe.
  • the decoder obtains the restored value of the point cloud to be decoded based on the geometric information of the point cloud to be decoded for each slice and the attribute information of the point cloud to be decoded for each slice, and completes the decoding.
  • the encoder will search for its parent block based on the 3D Morton code of the point to be encoded after preprocessing of conversion and quantization.
  • the stripe division is realized.
  • the division of multiple strips is realized, and the coding is performed based on each stripe to achieve the effect of parallel coding and improve the coding and decoding performance. Efficiency, saving coding time.
  • the embodiment of the present application provides an encoder 1 according to the embodiment of the present application, including:
  • the conversion and quantization part 10 is configured to perform geometric coordinate conversion and quantization of the original points to be coded in the point cloud to be coded to obtain the points to be coded;
  • the obtaining part 11 is configured to obtain the three-dimensional Morton code of the point to be coded and the preset number of band divisions;
  • the displacement part 12 is configured to shift the three-dimensional Morton code to the right by N bits to obtain the M types of Morton codes of the parent blocks respectively corresponding to the points to be coded, wherein the M types of Morton codes correspondingly contain M types
  • the first parent block, and M is less than or equal to the preset number of strip divisions, and N is a positive integer greater than or equal to 1;
  • the determining part 13 is configured to determine M first code point index ranges respectively corresponding to the M types of Morton codes
  • the dividing part 14 is configured to divide the space where the point to be coded within the index range of each of the first code points is located into an initial strip;
  • the displacement part 12 is also configured to move each initial strip to the left according to the corresponding first three-dimensional translation coordinate to obtain M strips;
  • the writing part 15 is configured to write the first code point index range and the first three-dimensional translation coordinate corresponding to each of the M stripes into a code stream.
  • the determining part 13 is further configured to obtain the three-dimensional Morton code of the to-be-encoded point and the preset number of strip divisions, and the pair of the three-dimensional Morton code The code is shifted to the right by N bits, and the difference between the maximum value and the minimum value in the three-dimensional Morton code is determined before the M Morton codes of the parent blocks corresponding to the points to be coded are obtained; Shift by 3 bits until it is obtained that the difference after shifting by 3K bits to the right is less than or equal to the preset stripe division number, where K is an integer greater than or equal to 0; it is determined that the value of N is 3K.
  • the determining part 13 is further configured to obtain the three-dimensional Morton code of the to-be-encoded point and the preset number of strip divisions, and the pair of the three-dimensional Morton code The code is shifted to the right by N bits, and the difference between the maximum value and the minimum value in the three-dimensional Morton code is determined before the M Morton codes of the parent blocks corresponding to the points to be coded are obtained; Shift until it is obtained that the difference after the right shift by L bits is less than or equal to the preset number of stripe divisions, where L is an integer greater than or equal to 0; it is determined that the value of N is L.
  • the determining part 13 is further configured to obtain the three-dimensional Morton code of the to-be-encoded point and the preset number of strip divisions, and the pair of the three-dimensional Morton code The code is shifted by N bits to the right, and before the M Morton codes of the parent blocks corresponding to the points to be coded are obtained, the number of parent blocks is determined based on the preset number of stripes; wherein, the number of parent blocks is less than or equal to the preset number of stripes.
  • the number of band divisions is F times 8; the number of parent blocks is written into the code stream; the maximum value in the three-dimensional Morton code is determined; the maximum value is shifted by H bits to the right until the maximum value When there are 3F bits left, the H is a positive integer greater than or equal to 1; the value of N is determined to be H.
  • the determining part 13 is further configured to determine the M first code point index ranges corresponding to the M types of Morton codes, based on the M first code point index ranges. Code point index range, determine the number of points to be coded corresponding to each of the M first parent blocks
  • the dividing part 14 is further configured to continue dividing the M first parent blocks based on the number of points and a preset threshold of the number of points to obtain J second code point index ranges corresponding to the J second parent blocks
  • J is a positive integer greater than or equal to 1; said dividing the space where the point to be coded within the index range of each second code point is located into an initial strip;
  • the displacement part 12 is also configured to move each initial strip to the left according to the corresponding second three-dimensional translation coordinate to obtain J strips;
  • the writing part 15 is further configured to write the second code point index range and the second three-dimensional translation coordinate corresponding to each of the J stripes into a code stream.
  • the preset number of points threshold includes a preset upper limit of the number of points and a preset lower limit of the number of points; the dividing part 14 is further configured to when the number of points is greater than the upper limit of the preset number of points , The current first parent block corresponding to the number of points is divided twice to obtain at least two second parent blocks; when the number of points is less than the preset lower limit of the number of points, the current first parent block corresponding to the number of points is divided Merge with the previous parent block to obtain a second parent block; until the number of points is between the preset lower limit and the preset upper limit, the corresponding to the point to be coded is obtained J second parent blocks; the J second code point index ranges corresponding to the J second parent blocks are determined.
  • the determining part 13 is further configured to traverse to-be-coded points within a preset range based on the M types of Morton codes to determine the M first code point index ranges;
  • the STL algorithm is used to determine the M first code point index ranges respectively corresponding to the M types of Morton codes.
  • the determining part 13 is further configured to divide the space where the point to be coded within the index range of each first code point is located into an initial stripe, and then the After each initial stripe is shifted to the left according to the corresponding first three-dimensional translation coordinate, before M strips are obtained, based on N and the M first Morton codes, determine the all corresponding to each initial stripe.
  • the first three-dimensional translational coordinates are described, in which M types of Morton codes correspond to M initial strips one-to-one.
  • the encoder since the encoder is performing geometric encoding, after preprocessing of conversion and quantization, the point to be encoded will be based on the three-dimensional Morton code of the point to be encoded to find its parent block, and based on The parent block of the point to be coded is found to realize the division of strips. In this way, taking into account the division of the to-be-coded points of the same parent block into one stripe, the division of multiple strips is realized, and the coding is performed based on each stripe to achieve the effect of parallel coding and improve the coding and decoding performance. Efficiency, saving coding time.
  • an encoder including:
  • the first memory 16 is used to store executable instructions
  • the first processor 17 is configured to implement the point cloud processing method on the encoder side when executing the executable instructions stored in the first memory 16.
  • the processor can be implemented by software, hardware, firmware, or a combination thereof, and can use circuits, single or multiple application specific integrated circuits (ASIC), single or multiple general integrated circuits, single or multiple microprocessors A processor, a single or multiple programmable logic devices, or a combination of the foregoing circuits or devices, or other suitable circuits or devices, so that the processor can execute the corresponding steps of the transformation method in the foregoing embodiments.
  • ASIC application specific integrated circuits
  • a processor a single or multiple programmable logic devices, or a combination of the foregoing circuits or devices, or other suitable circuits or devices, so that the processor can execute the corresponding steps of the transformation method in the foregoing embodiments.
  • the embodiment of the present application provides a computer-readable storage medium, including: executable instructions stored therein are used to cause a first processor to be executed to implement a point cloud processing method on the encoder side.
  • each unit may exist alone physically, or two or more units may be integrated into one unit.
  • the above-mentioned integrated unit can be realized in the form of hardware or software function module.
  • the integrated unit is implemented in the form of a software function module and is not sold or used as an independent product, it can be stored in a computer readable storage medium.
  • the technical solution of this embodiment is essentially or It is said that the part that contributes to the existing technology or all or part of the technical solution can be embodied in the form of a software product.
  • the computer software product is stored in a storage medium and includes several instructions to enable a computer device (which can A personal computer, a server, or a network device, etc.) or a processor (processor) executes all or part of the steps of the method described in this embodiment.
  • the aforementioned storage media include: magnetic random access memory (FRAM, ferromagnetic random access memory), read-only memory (ROM, Read Only Memory), programmable read-only memory (PROM, Programmable Read-Only Memory), and erasable Programmable Read-Only Memory (EPROM, Erasable Programmable Read-Only Memory), Electrically Erasable Programmable Read-Only Memory (EEPROM, Electrically Erasable Programmable Read-Only Memory), Flash Memory, Magnetic Surface Memory, Optical Disk
  • FRAM magnetic random access memory
  • ROM read-only memory
  • PROM programmable read-only memory
  • EPROM Erasable Programmable Read-Only Memory
  • EPROM Erasable Programmable Read-Only Memory
  • EEPROM Electrically Erasable Programmable Read-Only Memory
  • Flash Memory Magnetic Surface Memory
  • Optical Disk Various media that can store program codes, such as CD-ROM (Compact Disc Read-Only Memory), etc., are not limited in the embodiments of the present
  • an embodiment of the present application provides a decoder 2, including:
  • the parsing part 20 is configured to parse the first code point index range, the first three-dimensional translation coordinate, the geometric bit stream, and the attribute bit stream corresponding to each of the M strips from the code stream;
  • the decoding part 21 is configured to determine the value of the point cloud to be decoded for each stripe based on the first code point index range corresponding to each stripe, the first three-dimensional translation coordinates, and the geometric bit stream. Geometric information; based on the attribute bit stream, determine the attribute information of the point cloud to be decoded for each stripe; based on the geometric information of the point cloud to be decoded for each slice and the to-be-decoded point cloud for each slice The attribute information of the point cloud obtains the recovery value of the point cloud to be decoded.
  • an embodiment of the present application also provides a decoder, including:
  • the second memory 22 is used to store executable instructions
  • the second processor 23 is configured to implement the point cloud processing method on the decoder side when executing the executable instructions stored in the second memory 22.
  • the embodiment of the present application provides a computer-readable storage medium, including: executable instructions stored therein are used to cause a second processor to execute, to implement a point cloud processing method on the decoder side.
  • the point to be encoded will be based on the three-dimensional Morton code of the point to be encoded to find its parent block, and based on the search
  • the stripe division is realized.
  • the division of multiple strips is realized, and the coding is performed based on each stripe to achieve the effect of parallel coding and improve the coding and decoding performance. Efficiency, saving coding time.
  • the embodiments of the present application provide a point cloud processing method, an encoder, a decoder, and a computer-readable storage medium. Since the encoder performs geometric encoding, after preprocessing of conversion and quantization, it is The point will find its parent block based on the three-dimensional Morton code of the point to be coded, and divide the strips based on finding the parent block of the point to be coded. In this way, taking into account the division of the to-be-coded points of the same parent block into one stripe, the division of multiple strips is realized, and the coding is performed based on each stripe to achieve the effect of parallel coding and improve the coding and decoding performance. Efficiency, saving coding time.

Landscapes

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

Abstract

本申请实施例提供的一种点云处理方法、编码器、解码器及存储介质,包括:对待编码点云中的原始待编码点进行几何坐标转换和量化后,得到待编码点;获取待编码点的三维莫顿码和预设条带划分数量;对三维莫顿码右移N位,得到待编码点分别对应的父块的M种莫顿码,其中,M种莫顿码对应含M种第一父块,且M小于等于预设条带划分数量,N为大于等于1的正整数;确定与M种莫顿码分别对应的M个第一编码点索引范围;将每个第一编码点索引范围内的待编码点所在的空间划分为一个初始条带,并对每个初始条带按照各自对应的第一三维平移坐标左移后,得到M个条带;将M个条带中的每个条带对应的第一编码点索引范围和第一三维平移坐标写入码流。

Description

点云处理方法、编码器、解码器及存储介质 技术领域
本申请实施例涉及视频编解码的技术领域,尤其涉及一种点云处理方法、编码器、解码器及存储介质。
背景技术
在点云探索模型(Point cloud exploration modfl,PCEM)编码器框架中,点云的几何信息和每个点所对应的属性信息是分开编码的。几何编码完成后,对几何信息进行重建,而属性信息的编码将依赖于重建的几何信息。
首先,对几何信息进行坐标转换,使点云全都包含在一个bounding box(包围盒)中,然后再进行量化,接下来,对bounding box进行八叉树划分。在基于八叉树的几何信息编码框架中,将包围盒八等分为8个子立方体,对非空的(包含点云中的点)的子立方体继续进行八等分,直到划分得到的叶子结点为1x1x1的单位立方体时停止划分,对叶子结点中的点进行编码,生成二进制码流,即几何比特流。几何编码完成后,对几何信息进行重建。目前,属性编码主要针对颜色信息进行。首先,将颜色信息从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色,使得未编码的属性信息与重建的几何信息对应起来。在颜色信息编码中,用莫顿码对点云进行一个排序后,直接进行后项差分预测,最后对预测残差进行量化并编码,生成二进制码流。
然而,点云经过转换和量化等预处理后,直接进入到编码部分。这样,对整个点云中的待编码点进行编码时,由于点云的属性编码是基于几何编码的,这样只能用一个编码器对此进行操作,会影响编码的时间效率。
发明内容
本申请实施例提供了一种点云处理方法、编码器、解码器及存储介质,能够对预处理后的点云先进行条带划分,基于每个条带并行进行编码处理,提高编解码的效率,节省了编码时间。
本申请实施例的技术方案可以如下实现:
第一方面,本申请实施例提供了一种点云处理方法,应用于编码器,包括:
对待编码点云中的原始待编码点进行几何坐标转换和量化后,得到待编码点;
获取所述待编码点的三维莫顿码和预设条带划分数量;
对所述三维莫顿码右移N位,得到所述待编码点分别对应的父块的M种莫顿码,其中,所述M种莫顿码对应含M种第一父块,且M小于等于预设条带划分数量,N为大于等于1的正整数;
确定与所述M种莫顿码分别对应的M个第一编码点索引范围;
将每个所述第一编码点索引范围内的待编码点所在的空间划分为一个初始条带,并对每个初始条带按照各自对应的第一三维平移坐标左移后,得到M个条带;
将所述M个条带中的每个条带对应的所述第一编码点索引范围和所述第一三维平 移坐标写入码流。
第二方面,本申请实施例还提供了一种点云处理方法,应用于解码器,包括:
从码流中,解析出M个条带中的每个条带对应的第一编码点索引范围、第一三维平移坐标、几何比特流和属性比特流;
基于所述每个条带对应的所述第一编码点索引范围、所述第一三维平移坐标和所述几何比特流,确定每个条带的待编码点云的几何信息;
基于所述属性比特流,确定出每个条带的待编码点云的属性信息;
基于所述每个条带的待解码点云的几何信息和所述每个条带的待编码点云的属性信息还原出待编码点云的三维图像模型。
第三方面,本申请实施例提供了一种编码器,包括:
转换和量化部分,被配置为对待编码点云中的原始待编码点进行几何坐标转换和量化后,得到待编码点;
获取部分,被配置为获取所述待编码点的三维莫顿码和预设条带划分数量;
位移部分,被配置为对所述三维莫顿码右移N位,得到所述待编码点分别对应的父块的M种莫顿码,其中,所述M种莫顿码对应含M种第一父块,且M小于等于预设条带划分数量,N为大于等于1的正整数;
确定部分,被配置为确定与所述M种莫顿码分别对应的M个第一编码点索引范围;
划分部分,被配置为将每个所述第一编码点索引范围内的待编码点所在的空间划分为一个初始条带;
所述位移部分,还被配置为对每个初始条带按照各自对应的第一三维平移坐标左移后,得到M个条带;
写入部分,被配置为将所述M个条带中的每个条带对应的所述第一编码点索引范围和所述第一三维平移坐标写入码流。
第四方面,本申请实施例提供了一种解码器,包括:
解析部分,被配置为从码流中,解析出M个条带中的每个条带对应的第一编码点索引范围、第一三维平移坐标、几何比特流和属性比特流;
解码部分,被配置为基于所述每个条带对应的所述第一编码点索引范围、所述第一三维平移坐标和所述几何比特流,确定每个条带的待解码点云的几何信息;基于所述属性比特流,确定出每个条带的待解码点云的属性信息;以及基于所述每个条带的待解码点云的几何信息和所述每个条带的待解码点云的属性信息得到待解码点云的恢复值。
第五方面,本申请实施例还提供了一种编码器,包括:
第一存储器,用于存储可执行指令;
第一处理器,用于执行所述第一存储器中存储的可执行指令时,实现第一方面所述的点云处理方法。
第六方面,本申请实施例还提供了一种解码器,包括:
第二存储器,用于存储可执行指令;
第二处理器,用于执行所述第二存储器中存储的可执行指令时,实现第二方面所述的点云处理方法。
第七方面,本申请实施例提供了一种计算机可读存储介质,应用于编码,包括:存储有可执行指令,用于引起第一处理器执行时,实现第一方面所述的点云处理方法。
第八方面,本申请实施例提供了一种计算机可读存储介质,应用于解码器,包括:存储有可执行指令,用于引起第二处理器执行时,实现第二方面所述的点云处理方法。
本申请实施例提供的一种点云处理方法、编码器、解码器及存储介质,包括:对待编码点云中的原始待编码点进行几何坐标转换和量化后,得到待编码点;获取待编码点 的三维莫顿码和预设条带划分数量;对三维莫顿码右移N位,得到待编码点分别对应的父块的M种莫顿码,其中,M种莫顿码对应含M种第一父块,且M小于等于预设条带划分数量,N为大于等于1的正整数;确定与M种莫顿码分别对应的M个第一编码点索引范围;将每个第一编码点索引范围内的待编码点所在的空间划分为一个初始条带,并对每个初始条带按照各自对应的第一三维平移坐标左移后,得到M个条带;将M个条带中的每个条带对应的第一编码点索引范围和第一三维平移坐标写入码流。采用上述技术实现方案,由于编码器在进行几何编码的过程中,在进行了转换和量化的预处理后,针对待编码点会基于待编码点的三维莫顿码,来寻找其父块,并基于寻找到了待编码点的父块来实现条带的划分。这样,在考虑到将同种父块的待编码点划分为一个条带的情况下实现了多个条带的划分,基于每个条带进行编码,达到了并行编码的效果,提高编解码的效率,节省了编码时间。
附图说明
图1为本申请实施例提供的示例性的编码流程框图;
图2为本申请实施例提供的示例性的二维莫顿编码示意图一;
图3为本申请实施例提供的示例性的二维莫顿编码示意图二;
图4为本申请实施例提供的示例性的三维莫顿编码示意图一;
图5为本申请实施例提供的示例性的三维莫顿编码示意图二;
图6为本申请实施例提供的点云处理方法的流程图一;
图7为本申请实施例提供的点云处理方法的流程图二;
图8为本申请实施例又提供的点云处理方法的流程图;
图9为本申请实施例提供的编码器的结构示意图一;
图10为本申请实施例提供的编码器的结构示意图二;
图11为本申请实施例提供的解码器的结构示意图一;
图12为本申请实施例提供的解码器的结构示意图二。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
在本申请实施例中,在点云PCEM编码器框架中,将输入三维图像模型的点云(连续多帧序列)进行转换和量化的预处理后,与预处理后的待编码的点云数据中的待编码点进行slice(条带)划分,对每一个slice进行独立编码。
如图1所示的PCEM编码的流程框图中,应用于点云的编码器中,针对待编码的点云数据,先对几何信息即几何坐标先进行坐标转换,再进行量化,进行上述预处理后,通过对待编码点的slice划分,将点云数据划分为多个slice。在每一个slice中,点云的几何信息和每个点云所对应的属性信息是分开进行编码的。在几何编码过程中,在基于八叉树的几何信息编码流程中,将包围盒八等分为8个子立方体,对非空的(包含点云中的点)的子立方体继续进行八等分,直到划分得到的叶子结点为1x1x1的单位立方体时停止划分,对叶子结点中的点进行几何编码。在几何编码后,由于量化取整,使得一部分点云的几何信息相同,于是在基于参数来决定是否去除重复点,去除的话,则进行属性预测;若不去除的话,则将重复点属性保留,最后进行算术编码,生成二进制的几何比特流,即几何码流。
在属性编码过程中,几何编码完成,对几何信息进行重建后,进行颜色转换,将颜色信息(即属性信息)从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色,使得未编码的属性信息与重建的几何信息对应起来。通过变换得到高频系数和低频系数,最后对系数进行残差量化(即量化系数),最后,将经过八叉树划分及表面拟合的几何编码数据与量化系数处理属性编码数据进行slice合成后,依次编码每个block的vertex坐标(即算术编码),生成二进制的属性比特流,即属性码流。
编码器得到点云的几何坐标信息,利用点的坐标信息可以得到对应于点云中每一点的莫顿码。莫顿编码也叫z-order code,因为其编码顺序按照空间z序。具体的计算莫顿码的具体方法描述如下所示,对于每一个分量用d比特二进制数表示的三维坐标,其三个分量的表示通过以下实现:
Figure PCTCN2019122502-appb-000001
其中,x l,y l,z l∈{0,1}分别是x,y,z的最高位(l=1)到最低位(l=d)对应的二进制数值。莫顿码M是对x,y,z从最高位开始,依次交叉排列x l,y l,z l到最低位,M的计算公式如下所示:
Figure PCTCN2019122502-appb-000002
其中,m l′∈{0,1}分别是M的最高位(l′=1)到最低位(l′=3d)的值。在得到点云中每个点的莫顿码M后,将点云中的点按莫顿码由小到大的顺序进行排列,并将每个点的权值w设为1。表示为计算机语言,类似于z|(y<<1)|(x<<2)的组合。
结合图2和图3进行说明,以高低位排列顺序这里是z、y、x(x|(y<<1)|(z<<2))为例进行说明。
图2展示了8*8的图像每个像素的空间编码,从000000到111111,用一维二进制数,编码了x,y值在0-7的位置坐标。交错二进制坐标值,获得二进制z值图。沿着数值方向连接z型,产生递归的z形曲线。图中每个位置上就按连接顺序放上了z值。实际上,上图就是按z方向迭代产生的,从00-11(整个图一个z),再从0000-1111(之前的z的每个点放一个z),再从000000-111111(之前的z的每个点放一个z),每次增加两位,递归升高。
示例性的,如图3示出了2x2,4x4,8x8和16x16空间编码顺序,从中可以看出,莫顿码的编码顺序按照空间z序实现的。
需要说明的是,对于二维坐标的莫顿码,将坐标x、y先进行二值化,再从x、y的最高位开始,令他们由高到低每一位上的值交叉排列。最后,将莫顿码的值由小到大连接,可以看到Z字形的连接顺序,且每四个点可看做一个小的块,且除了最后两位不同,前四位都相同。这样,前四位相同的莫顿码,可以确定一个父块,此时将这四个点莫顿码右移2位可以得到它们父块的莫顿码。这样每四个相同层级的块不断结合,即莫顿码值右移两位,可以得到它们的父块。同理,在三维坐标下,每八个小块结合,即莫顿码值右移三位,可以得到它们的父块。
上升到3维情况,其递归过程如图4和图5所示,其实现了坐标交错,整体在做的就是不断地将坐标值分散开。x|(y<<1)|(z<<2);即每个坐标值分散开,各位依次交错,先z后y最后x。解码过程就就是聚合过程。)
基于上述介绍的背景下,下面介绍本申请实施例提供的点云处理方法,主要针对在编码器框架中,应用于编码器(点云编码器)中,所处位置如图1中的虚线框所示。
如图6所示,本申请实施例提供了一种点云处理方法,该方法可以包括:
S101、对待编码点云中的原始待编码点进行几何坐标转换和量化后,得到待编码点。
S102、获取待编码点的三维莫顿码和预设条带划分数量。
S103、对三维莫顿码右移N位,得到待编码点分别对应的父块的M种莫顿码,其 中,M种莫顿码对应含M种第一父块,且M小于等于预设条带划分数量,N为大于等于1的正整数。
S104、确定与M种莫顿码分别对应的M个第一编码点索引范围。
S105、将每个第一编码点索引范围内的待编码点所在的空间划分为一个初始条带,并对每个初始条带按照各自对应的第一三维平移坐标左移后,得到M个条带。
S106、将M个条带中的每个条带对应的第一编码点索引范围和第一三维平移坐标写入码流。
本申请实施例提供的点云处理方法在几何编码中的转换和量化之后,依据点云莫顿码将预处理后的待编码点划分为不同的slice,从而基于slice实现并行编码。
在本申请实施例中,待编码点云为本申请中的待编码点云对待编码对象的点云数据,针对一个待编码点云经过预处理后的待编码点可以包含N个点,即N个待编码点。其中,N大于等于1。编码器对待编码点云中的原始待编码点进行几何坐标转换和量化后,得到待编码点;获取待编码点的三维莫顿码和预设条带划分数量;对三维莫顿码右移N位,得到待编码点分别对应的父块的M种莫顿码,其中,M种莫顿码对应含M种第一父块,且M小于等于预设条带划分数量,N为大于等于1的正整数;确定与M种莫顿码分别对应的M个第一编码点索引范围;将每个第一编码点索引范围内的待编码点所在的空间划分为一个初始条带,并对每个初始条带按照各自对应的第一三维平移坐标左移后,得到M个条带;这样,编码器就可以基于M个条带分别并行进行编码,且将M个条带中的每个条带对应的第一编码点索引范围和第一三维平移坐标写入码流。
需要说明的是,在本申请实施例中,由于每个条带中包含的待编码点可能不一样,那么在确定出第一编码点索引范围时,就需要编码器在编码过程中将每个条带对应的第一编码点索引范围和第一三维平移坐标作为几何信息的头信息写进几何码流,即几何比特流,以传输到解码器,便于解码器在解码时可以直接解析和解码。
在本申请的一些实施例中,待编码点的三维莫顿码的计算是通过公式(1)计算得到的。预设条带划分数量是预设的,或者是用户输入的,也可以实现设置一个默认值,本申请实施例不作限制。
示例性的,预设条带划分数量可以为10。
在本申请的一些实施例中,编码器可以对预处理后的待编码点对应的三维莫顿码进行右移,来确定各个待编码点对应的父块,以及所有父块对应的M种莫顿码,且右移N是以使得父块的数量小于等于预设条带划分数量的。
在本申请的一些实施例中,编码器获取待编码点的三维莫顿码和预设条带划分数量之后,且对三维莫顿码右移N位,得到待编码点分别对应的父块的M种莫顿码之前,编码器可以通过待编码点中的三维莫顿码中的最大值和最小值来确定右移位数N,如下:
(1)、编码器确定三维莫顿码中的最大值与最小值的差值;对差值依次右移3位,直至得到右移3K位后的差值小于等于预设条带划分数量时为止,其中,K为大于等于0的整数;确定N的值为3K。
(2)、编码器确定三维莫顿码中的最大值与最小值的差值;对差值依次右移,直至得到右移L位后的差值小于等于预设条带划分数量时为止,其中,L为大于等于0的整数;确定N的值为L。
在本申请实施例中,编码器找到三维莫顿码中的最大值与最小值的差值,采用将差值右移的方式,确定出父块数量小于等于预设条带划分数量的位数。
需要说明的是,在本申请实施例中,待编码点的三维莫顿码是基于由小到大的顺序排列的,每个待编码点对应的一个莫顿码。当待编码点所在的空间的点云时连续分布时,即点云中的所有的点都被填满时,差值可以表征最大莫顿码和最小莫顿码之间的点的数 量。由于莫顿码可以通过右移来得到其所对应的父块的莫顿码,因此,编码器可以将差值(delta)同样右移,可以得到最大最小莫顿码间的父块的数量,只要使得最终得到的父块的数量小于等于预设条带划分数量即可,这时将差值进行右移的位数就是N。
在本申请实施例中,编码器对差值依次进行右移的位数,可以是3的倍数,也可以是非三的倍数,本申请实施例不作限制。其中,右移3的倍数后,得到的是立方体的slice,非3的倍数时,则是长方体的Slice。
在本申请实施例中,编码器在确定了M种莫顿码后,确定出待编码点属于M种莫顿码的的哪一种莫顿码,由于待编码点的莫顿码都是由小到大顺序排列的,因此,可以针对每个待编码点所对应的父块的莫顿码值放入一个集合M中,这样集合M中的莫顿码的顺序也是由小到大的顺序,且同一种父块的莫顿码对应的待编码点是连续在一起的。因此,编码器还可以得到第一个待编码点的父块的莫顿码后,通过加1,之后的父块的M种莫顿码的值。
需要说明的是,N个待编码点对应M种莫顿码,M是小于N的。编码器从集合M中可以确定出每种莫顿码对应的待编码点的索引范围,即得到M个第一编码点索引范围。其中,第一编码点索引范围表征了属于一个父块的点数。
在本申请的一些实施例中,编码器可以基于M种莫顿码在预设范围内对待编码点进行遍历,确定M个第一编码点索引范围;或者,编码器可以采用模板库算法(Standard Template Library,STL),确定与M种莫顿码分别对应的M个第一编码点索引范围。
其中,预设范围可以为数量值,本申请实施例不作限制,在本申请实施例中,编码器可以一个快速查找算法(STL算法),在M中可以找到每个父块对应的索引范围,也可以在一定范围内,通过遍历的方法进行莫顿码的搜索,还可以采用其他能快速找到相应莫顿码的算法,本申请实施例不作限制。
在本申请的一些实施例中,编码器获取待编码点的三维莫顿码和预设条带划分数量之后,且对三维莫顿码右移N位,得到待编码点分别对应的父块的M种莫顿码之前,先要获取N,具体实现为:基于预设条带划分数量,确定父块数量;其中,父块数量小于等于预设条带划分数量,且为8的F倍;父块数量写入码流;确定三维莫顿码中的最大值;对最大值右移H位,直至最大值剩3F位时为止,H为大于等于1的正整数;确定N的值为H。
需要说明的是,H也可以为0。
在本申请的一些实施例中,编码器获得父块数量的方法,除了通过莫顿码的最大最小值右移来计算,还可以指定划分父块的数量或大小等,将父块的数量设为定值,继而也可得到莫顿码的右移位数N。
其中,父块的数量可以是用户预设的,也可以是基于预设条带划分数量,确定出来的,父块数量为预设条带划分数量包含的8的最大次幂数。例如,预设条带划分数量为10时,父块数量为8;预设条带划分数量为65时,父块数量为64。
在本申请的一些实施例中,编码器可以基于预设条带划分数量,确定父块数量;其中,父块数量小于等于预设条带划分数量,且为8的F倍;父块数量写入码流;确定三维莫顿码中的最大值;对最大值右移H位,直至最大值剩3F位时为止,H为大于等于1的正整数;确定N的值为H。
需要说明的是,父块数量是需要写入码流,供解码端解码使用的。
在本申请实施例中,进行父块数量设置时,考虑到莫顿码会将一个立方体划分为8个小立方体,必须设为8的倍数。当父块数量为8时,将最大莫顿码右移,直到莫顿码只有三位为止。当父块数量为64时,将最大莫顿码右移,直到莫顿码只有六位为止。
在本申请的一些实施例中,编码器将每个第一编码点索引范围内的待编码点所在的 空间划分为一个初始条带之后,对每个初始条带按照各自对应的第一三维平移坐标左移后,得到M个条带之前,基于N和M种第一莫顿码,确定每个初始条带对应的第一三维平移坐标,其中,M种莫顿码与M个初始条带一一对应。
在本申请实施例中,编码器对每个条带进行几何编码时,需要先将slice中的待编码点进行坐标平移(第一三维平移坐标),使得待编码点从最小的开始编码。其中,每个条带对应的第一三维平移坐标均不相同。
示例性的,假设一个条带对应的父块的莫顿码为001,则左移N位得到的最终的条带,这时第一三维平移坐标为(0,0,2 N)。一个条带对应的父块的莫顿码为011,则左移N位得到的最终的条带,这时第一三维平移坐标为(0,2 N,2 N)。
在本申请的一些实施例中,编码器划分条带时,对每个条带都可以设置有标识,编码器可以将每个条带的标识,以及每个条带对应的第一编码点索引范围和每个条带对应的第一三维平移坐标写入码流。其中,在编码端,将每个slice对应的id(即每个条带的标识)和origin(第一三维平移坐标)以及slice中的点数(即第一编码点索引范围)作为几何头信息gps传到解码端,其中slice的id也要作为属性头信息aps传到解码端。
示例性的,编码器针对在预处理后的待编码点进行slice划分,先获取待编码点的三维莫顿码,并将这些三维莫顿码进行由小到大的排序,这样,点云中每个待编码点对应一个莫顿码,再将莫顿码的最大最小值进行相减,这样得到的是两个莫顿码之间的差值delta。当空间中点云是连续分布时,即点云中所有的点都被填满时,delta表示的是最大最小莫顿码间的点的数量。
由于莫顿码可以通过右移来得到其所对应的父块的莫顿码,则将delta同样右移,可以得到最大最小莫顿码间的父块的数量。假设slice数量为A时,父块的数量限制在0-A的范围内。那么,通过对delta不断右移,每次右移三位,当delta右移N位后,数值小于等于A时,此时delta表示的是最大最小莫顿码间父块的数量小于等于A。
编码器在确定了右移位数N后,将所有的莫顿码的值全部右移N位,得到每个点所对应的父块的莫顿码的值,将它们放入到集合M中。或者,只要得到第一个点的父块的莫顿码,通过加1,之后的父块的莫顿码的值,也都可以一一得到。这样,编码器通过一个快速查找算法(STL算法),在几何M中可以找到每个父块对应的索引范围。根据得到的索引范围,可以将每个范围内的索引对应的点划入到不同的slice中。在对slice中的点进行坐标平移,完成slice的划分。
可以理解的是,由于编码器在进行几何编码的过程中,在进行了转换和量化的预处理后,针对待编码点会基于待编码点的三维莫顿码,来寻找其父块,并基于寻找到了待编码点的父块来实现条带的划分。这样,在考虑到将同种父块的待编码点划分为一个条带的情况下实现了多个条带的划分,基于每个条带进行编码,达到了并行编码的效果,提高编解码的效率,节省了编码时间。
如图7所示,本申请实施例提供了一种点云处理方法,该方法可以包括:
S201、对待编码点云中的原始待编码点进行几何坐标转换和量化后,得到待编码点。
在本申请实施例中的S201的实现描述与S101的实现描述一致,此处不再赘述。
S202、获取待编码点的三维莫顿码和预设条带划分数量。
在本申请实施例中的S202的实现描述与S103的实现描述一致,此处不再赘述。
S203、对三维莫顿码右移N位,得到待编码点分别对应的父块的M种莫顿码,其中,M种莫顿码对应含M种第一父块,且M小于等于预设条带划分数量,N为大于等于1的正整数。
在本申请实施例中的S203的实现描述与S103的实现描述一致,此处不再赘述。
S204、确定与M种莫顿码分别对应的M个第一编码点索引范围。
在本申请实施例中的S204的实现描述与S104的实现描述一致,此处不再赘述。
S205、基于M个第一编码点索引范围,确定M个第一父块中的每个第一父块对应的待编码点的点数。
S206、基于点数和预设点数阈值,对M个第一父块进行继续划分,得到J个第二父块对应的J个第二编码点索引范围;其中,J为大于等于1的正整数。
S207、将每个第二编码点索引范围内的待编码点所在的空间划分为一个初始条带,并对每个初始条带按照各自对应的第二三维平移坐标左移后,得到J个条带。
S208、将J个条带中的每个条带对应的第二编码点索引范围和第二三维平移坐标写入码流。
在本申请实施例中,在点云中划分父块的时候,可以得到父块中的点数,若父块中点数较少时,可以将它与后一个块合并为一个块。对于最后一个父块,可以通过剩余点数判断它有多少个点,若点数较少,则合并到前一个父块。
在本申请实施例中,编码器得到M个第一编码点索引范围,即获知了每个条带对应的第一父块的点数,其第一编码点索引范围的长度就是第一父块的点数。这样基于知道了每个第一父块中的点数和预设点数阈值就可以对M个第一父块进行二次划分,得到J个第二父块对应的J个第二编码点索引范围。预设点数阈值包括预设点数上限值和预设点数下限值。具体实现为:当点数大于预设点数上限值时,将点数对应的当前第一父块进行二次划分,得到至少两个第二父块;当点数小于预设点数下限值时,将点数对应的当前第一父块与前一块父块进行合并,得到一个第二父块;直至点数均在预设下限值和预设上限值之间时,得到待编码点对应的J个第二父块;确定出J个第二父块对应的J个第二编码点索引范围。
在本申请实施例中,对于点数较多较少的判断,可以使用一个max和min的阈值。若点数小于min,则判断为点数少;若点数大于max,则判断为点数多,对于这个父块再次进行划分。
其中,预设点数上限值和预设点数下限值可由实际情况决定,本申请实施例不作限制。
编码器在获知了J个第二编码点索引范围,就可以基于将每个第二编码点索引范围内的待编码点所在的空间重新划分为一个初始条带,并对每个初始条带按照各自对应的第二三维平移坐标左移后,得到J个条带,将J个条带中的每个条带对应的第二编码点索引范围和第二三维平移坐标写入码流。
可以理解的是,由于编码器在进行几何编码的过程中,在进行了转换和量化的预处理后,针对待编码点会基于待编码点的三维莫顿码,来寻找其父块,并基于寻找到了待编码点的父块来实现条带的划分。这样,在考虑到将同种父块的待编码点划分为一个条带的情况下实现了多个条带的二次划分,使得slice的划分更加精准。
基于前述介绍的背景下,下面介绍本申请实施例提供的点云处理方法,主要针对在解码器框架中。
如图8所示,本申请实施例提供了一种点云处理方法,应用于解码器中,包括:
S301、从码流中,解析出M个条带中的每个条带对应的第一编码点索引范围、第一三维平移坐标、几何比特流和属性比特流。
S302、基于每个条带对应的第一编码点索引范围、第一三维平移坐标和几何比特流,确定每个条带的待解码点云的几何信息。
S303、基于属性比特流,确定出每个条带的待解码点云的属性信息。
S304、基于每个条带的待解码点云的几何信息和每个条带的待解码点云的属性信息得到待解码点云的恢复值。
在本申请实施例中,编码码流即编码比特流传输到解码器,编码比特流解析出M个条带中的每个条带对应的第一编码点索引范围、第一三维平移坐标几何比特流,该解码器就可以从根据每个条带标识,以及对应的第一编码点索引范围、第一三维平移坐标,结合几何比特流,确定出几何信息,以及基于属性比特流,确定出每个条带(每个条带的标识)的待解码点云的属性信息。最后,解码器基于每个条带的待解码点云的几何信息和每个条带的待解码点云的属性信息得到待解码点云的恢复值,完成解码。
可以理解的是,编码器在进行几何编码的过程中,在进行了转换和量化的预处理后,针对待编码点会基于待编码点的三维莫顿码,来寻找其父块,并基于寻找到了待编码点的父块来实现条带的划分。这样,在考虑到将同种父块的待编码点划分为一个条带的情况下实现了多个条带的划分,基于每个条带进行编码,达到了并行编码的效果,提高编解码的效率,节省了编码时间。由于,每个条带的对应的编码点索引范围和第一三维平移坐标不同,因此,需要在编码的时候,将每个条带对应的编码点索引范围和第一三维平移坐标也编码写入比特流中,便于解码器解码解析出来后进行三维图像模型的还原,提高了解码效率。
基于前述实施例的实现基础,如图9所示,本申请实施例提供了本申请实施例提供了一种编码器1,包括:
转换和量化部分10,被配置为对待编码点云中的原始待编码点进行几何坐标转换和量化后,得到待编码点;
获取部分11,被配置为获取所述待编码点的三维莫顿码和预设条带划分数量;
位移部分12,被配置为对所述三维莫顿码右移N位,得到所述待编码点分别对应的父块的M种莫顿码,其中,所述M种莫顿码对应含M种第一父块,且M小于等于预设条带划分数量,N为大于等于1的正整数;
确定部分13,被配置为确定与所述M种莫顿码分别对应的M个第一编码点索引范围;
划分部分14,被配置为将每个所述第一编码点索引范围内的待编码点所在的空间划分为一个初始条带;
所述位移部分12,还被配置为对每个初始条带按照各自对应的第一三维平移坐标左移后,得到M个条带;
写入部分15,被配置为将所述M个条带中的每个条带对应的所述第一编码点索引范围和所述第一三维平移坐标写入码流。
在本申请的一些实施例中,所述确定部分13,还被配置为所述获取所述待编码点的三维莫顿码和预设条带划分数量之后,且所述对所述三维莫顿码右移N位,得到所述待编码点分别对应的父块的M种莫顿码之前,确定所述三维莫顿码中的最大值与最小值的差值;对所述差值依次右移3位,直至得到右移3K位后的差值小于等于所述预设条带划分数量时为止,其中,K为大于等于0的整数;确定所述N的值为3K。
在本申请的一些实施例中,所述确定部分13,还被配置为所述获取所述待编码点的三维莫顿码和预设条带划分数量之后,且所述对所述三维莫顿码右移N位,得到所述待编码点分别对应的父块的M种莫顿码之前,确定所述三维莫顿码中的最大值与最小值的差值;对所述差值依次右移,直至得到右移L位后的差值小于等于所述预设条带划分数量时为止,其中,L为大于等于0的整数;确定所述N的值为L。
在本申请的一些实施例中,所述确定部分13,还被配置为所述获取所述待编码点的三维莫顿码和预设条带划分数量之后,且所述对所述三维莫顿码右移N位,得到所述待编码点分别对应的父块的M种莫顿码之前,基于预设条带划分数量,确定父块数量;其中,所述父块数量小于等于预设条带划分数量,且为8的F倍;所述父块数量写入所 述码流;确定所述三维莫顿码中的最大值;对所述最大值右移H位,直至所述最大值剩3F位时为止,所述H为大于等于1的正整数;确定所述N的值为H。
在本申请的一些实施例中,所述确定部分13,还被配置为所述确定与所述M种莫顿码分别对应的M个第一编码点索引范围之后,基于所述M个第一编码点索引范围,确定M个第一父块中的每个第一父块对应的待编码点的点数
所述划分部分14,还被配置为基于所述点数和预设点数阈值,对所述M个第一父块进行继续划分,得到J个第二父块对应的J个第二编码点索引范围;其中,J为大于等于1的正整数;所述将每个所述第二编码点索引范围内的待编码点所在的空间划分为一个初始条带;
所述位移部分12,还被配置为对每个初始条带按照各自对应的第二三维平移坐标左移后,得到J个条带;
所述写入部分15,还被配置为所述将所述J个条带中的每个条带对应的所述第二编码点索引范围和所述第二三维平移坐标写入码流。
在本申请的一些实施例中,预设点数阈值包括预设点数上限值和预设点数下限值;所述划分部分14,还被配置为当所述点数大于预设点数上限值时,将所述点数对应的当前第一父块进行二次划分,得到至少两个第二父块;当所述点数小于预设点数下限值时,将所述点数对应的当前第一父块与前一块父块进行合并,得到一个第二父块;直至所述点数均在所述预设下限值和所述预设上限值之间时,得到所述待编码点对应的所述J个第二父块;确定出所述J个第二父块对应的所述J个第二编码点索引范围。
在本申请的一些实施例中,所述确定部分13,还被配置为基于所述M种莫顿码在预设范围内对待编码点进行遍历,确定所述M个第一编码点索引范围;或者,采用STL算法,确定与所述M种莫顿码分别对应的所述M个第一编码点索引范围。
在本申请的一些实施例中,所述确定部分13,还被配置为所述将每个所述第一编码点索引范围内的待编码点所在的空间划分为一个初始条带之后,所述对每个初始条带按照各自对应的第一三维平移坐标左移后,得到M个条带之前,基于N和所述M种第一莫顿码,确定所述每个初始条带对应的所述第一三维平移坐标,其中,M种莫顿码与M个初始条带一一对应。
可以理解的是,由于编码器在进行几何编码的过程中,在进行了转换和量化的预处理后,针对待编码点会基于待编码点的三维莫顿码,来寻找其父块,并基于寻找到了待编码点的父块来实现条带的划分。这样,在考虑到将同种父块的待编码点划分为一个条带的情况下实现了多个条带的划分,基于每个条带进行编码,达到了并行编码的效果,提高编解码的效率,节省了编码时间。
在实际应用中,如图10所示,本申请实施例还提供了一种编码器,包括:
第一存储器16,用于存储可执行指令;
第一处理器17,用于执行所述第一存储器16中存储的可执行指令时,实现编码器侧的点云处理方法。
其中,处理器可以通过软件、硬件、固件或者其组合实现,可以使用电路、单个或多个专用集成电路(application specific integrated circuits,ASIC)、单个或多个通用集成电路、单个或多个微处理器、单个或多个可编程逻辑器件、或者前述电路或器件的组合、或者其他适合的电路或器件,从而使得该处理器可以执行前述实施例中的变换方法的相应步骤。
本申请实施例提供了一种计算机可读存储介质,包括:存储有可执行指令,用于引起第一处理器执行时,实现编码器侧的点云处理方法。
在本申请实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单 独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:磁性随机存取存储器(FRAM,ferromagnetic random access memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory)等各种可以存储程序代码的介质,本申请实施例不作限制。
如图11所示,本申请实施例提供了一种解码器2,包括:
解析部分20,被配置为从码流中,解析出M个条带中的每个条带对应的第一编码点索引范围、第一三维平移坐标、几何比特流和属性比特流;
解码部分21,被配置为基于所述每个条带对应的所述第一编码点索引范围、所述第一三维平移坐标和所述几何比特流,确定每个条带的待解码点云的几何信息;基于所述属性比特流,确定出每个条带的待解码点云的属性信息;基于所述每个条带的待解码点云的几何信息和所述每个条带的待解码点云的属性信息得到待解码点云的恢复值。
在实际应用中,如图12所示,本申请实施例还提供了一种解码器,包括:
第二存储器22,用于存储可执行指令;
第二处理器23,用于执行所述第二存储器22中存储的可执行指令时,实现解码器侧的点云处理方法。
本申请实施例提供了一种计算机可读存储介质,包括:存储有可执行指令,用于引起第二处理器执行时,实现解码器侧的点云处理方法。
可以理解的是,编码器在进行几何编码的过程中,在进行了转换和量化的预处理后,针对待编码点会基于待编码点的三维莫顿码,来寻找其父块,并基于寻找到了待编码点的父块来实现条带的划分。这样,在考虑到将同种父块的待编码点划分为一个条带的情况下实现了多个条带的划分,基于每个条带进行编码,达到了并行编码的效果,提高编解码的效率,节省了编码时间。由于,每个条带的对应的编码点索引范围和第一三维平移坐标不同,因此,需要在编码的时候,将每个条带对应的编码点索引范围和第一三维平移坐标也编码写入比特流中,便于解码器解码解析出来后进行三维图像模型的还原,提高了解码效率。
工业实用性
本申请实施例提供了一种点云处理方法、编码器、解码器及计算机可读存储介质,由于编码器在进行几何编码的过程中,在进行了转换和量化的预处理后,针对待编码点会基于待编码点的三维莫顿码,来寻找其父块,并基于寻找到了待编码点的父块来实现条带的划分。这样,在考虑到将同种父块的待编码点划分为一个条带的情况下实现了多个条带的划分,基于每个条带进行编码,达到了并行编码的效果,提高编解码的效率,节省了编码时间。

Claims (15)

  1. 一种点云处理方法,应用于编码器中,包括:
    对待编码点云中的原始待编码点进行几何坐标转换和量化后,得到待编码点;
    获取所述待编码点的三维莫顿码和预设条带划分数量;
    对所述三维莫顿码右移N位,得到所述待编码点分别对应的父块的M种莫顿码,其中,所述M种莫顿码对应含M种第一父块,且M小于等于预设条带划分数量,N为大于等于1的正整数;
    确定与所述M种莫顿码分别对应的M个第一编码点索引范围;
    将每个所述第一编码点索引范围内的待编码点所在的空间划分为一个初始条带,并对每个初始条带按照各自对应的第一三维平移坐标左移后,得到M个条带;
    将所述M个条带中的每个条带对应的所述第一编码点索引范围和所述第一三维平移坐标写入码流。
  2. 根据权利要求1所述的方法,其中,所述获取所述待编码点的三维莫顿码和预设条带划分数量之后,且所述对所述三维莫顿码右移N位,得到所述待编码点分别对应的父块的M种莫顿码之前,所述方法还包括:
    确定所述三维莫顿码中的最大值与最小值的差值;
    对所述差值依次右移3位,直至得到右移3K位后的差值小于等于所述预设条带划分数量时为止,其中,K为大于等于0的整数;
    确定所述N的值为3K。
  3. 根据权利要求1所述的方法,其中,所述获取所述待编码点的三维莫顿码和预设条带划分数量之后,且所述对所述三维莫顿码右移N位,得到所述待编码点分别对应的父块的M种莫顿码之前,所述方法还包括:
    确定所述三维莫顿码中的最大值与最小值的差值;
    对所述差值依次右移,直至得到右移L位后的差值小于等于所述预设条带划分数量时为止,其中,L为大于等于0的整数;
    确定所述N的值为L。
  4. 根据权利要求1所述的方法,其中,所述获取所述待编码点的三维莫顿码和预设条带划分数量之后,且所述对所述三维莫顿码右移N位,得到所述待编码点分别对应的父块的M种莫顿码之前,所述方法还包括:
    基于预设条带划分数量,确定父块数量;其中,所述父块数量小于等于预设条带划分数量,且为8的F倍;所述父块数量写入所述码流;
    确定所述三维莫顿码中的最大值;
    对所述最大值右移H位,直至所述最大值剩3F位时为止,所述H为大于等于1的正整数;
    确定所述N的值为H。
  5. 根据权利要求1至4任一项所述的方法,其中,所述确定与所述M种莫顿码分别对应的M个第一编码点索引范围之后,所述方法还包括:
    基于所述M个第一编码点索引范围,确定M个第一父块中的每个第一父块对应的待编码点的点数;
    基于所述点数和预设点数阈值,对所述M个第一父块进行继续划分,得到J个第二父块对应的J个第二编码点索引范围;其中,J为大于等于1的正整数;
    所述将每个所述第二编码点索引范围内的待编码点所在的空间划分为一个初始条 带,并对每个初始条带按照各自对应的第二三维平移坐标左移后,得到J个条带;
    所述将所述J个条带中的每个条带对应的所述第二编码点索引范围和所述第二三维平移坐标写入码流。
  6. 根据权利要求5所述的方法,其中,预设点数阈值包括预设点数上限值和预设点数下限值;所述基于所述点数和预设点数阈值,对所述M个第一父块进行继续划分,得到J个第二父块对应的J个第二编码点索引范围,包括:
    当所述点数大于预设点数上限值时,将所述点数对应的当前第一父块进行二次划分,得到至少两个第二父块;
    当所述点数小于预设点数下限值时,将所述点数对应的当前第一父块与前一块父块进行合并,得到一个第二父块;
    直至所述点数均在所述预设下限值和所述预设上限值之间时,得到所述待编码点对应的所述J个第二父块;
    确定出所述J个第二父块对应的所述J个第二编码点索引范围。
  7. 根据权利要求1至4任一项所述的方法,其中,所述确定与所述M种莫顿码分别对应的M个第一编码点索引范围,包括:
    基于所述M种莫顿码在预设范围内对待编码点进行遍历,确定所述M个第一编码点索引范围;或者,
    采用STL算法,确定与所述M种莫顿码分别对应的所述M个第一编码点索引范围。
  8. 根据权利要求1至4任一项所述的方法,其中,所述将每个所述第一编码点索引范围内的待编码点所在的空间划分为一个初始条带之后,所述对每个初始条带按照各自对应的第一三维平移坐标左移后,得到M个条带之前,所述方法还包括:
    基于N和所述M种第一莫顿码,确定所述每个初始条带对应的所述第一三维平移坐标,其中,M种莫顿码与M个初始条带一一对应。
  9. 一种点云处理方法,应用于解码器中,包括:
    从码流中,解析出M个条带中的每个条带对应的第一编码点索引范围、第一三维平移坐标、几何比特流和属性比特流;
    基于所述每个条带对应的所述第一编码点索引范围、所述第一三维平移坐标和所述几何比特流,确定每个条带的待解码点云的几何信息;
    基于所述属性比特流,确定出每个条带的待解码点云的属性信息;
    基于所述每个条带的待解码点云的几何信息和所述每个条带的待解码点云的属性信息得到所述待解码点云的恢复值。
  10. 一种编码器,包括:
    转换和量化部分,被配置为对待编码点云中的原始待编码点进行几何坐标转换和量化后,得到待编码点;
    获取部分,被配置为获取所述待编码点的三维莫顿码和预设条带划分数量;
    位移部分,被配置为对所述三维莫顿码右移N位,得到所述待编码点分别对应的父块的M种莫顿码,其中,所述M种莫顿码对应含M种第一父块,且M小于等于预设条带划分数量,N为大于等于1的正整数;
    确定部分,被配置为确定与所述M种莫顿码分别对应的M个第一编码点索引范围;
    划分部分,被配置为将每个所述第一编码点索引范围内的待编码点所在的空间划分为一个初始条带;
    所述位移部分,还被配置为对每个初始条带按照各自对应的第一三维平移坐标左移后,得到M个条带;
    写入部分,被配置为将所述M个条带中的每个条带对应的所述第一编码点索引范围和所述第一三维平移坐标写入码流。
  11. 一种解码器,包括:
    解析部分,被配置为从码流中,解析出M个条带中的每个条带对应的第一编码点索引范围、第一三维平移坐标、几何比特流和属性比特流;
    解码部分,被配置为基于所述每个条带对应的所述第一编码点索引范围、所述第一三维平移坐标和所述几何比特流,确定每个条带的待解码点云的几何信息;基于所述属性比特流,确定出每个条带的待解码点云的属性信息;以及基于所述每个条带的待解码点云的几何信息和所述每个条带的待解码点云的属性信息得到待解码点云的恢复值。
  12. 一种编码器,包括:
    第一存储器,用于存储可执行指令;
    第一处理器,用于执行所述第一存储器中存储的可执行指令时,实现权利要求1至8任一项所述的方法。
  13. 一种解码器,包括:
    第二存储器,用于存储可执行指令;
    第二处理器,用于执行所述第二存储器中存储的可执行指令时,实现权利要求9所述的方法。
  14. 一种存储介质,包括:存储有可执行指令,用于引起第一处理器执行时,实现权利要求1至8任一项所述的方法。
  15. 一种存储介质,包括:存储有可执行指令,用于引起第二处理器执行时,实现权利要求9所述的方法。
PCT/CN2019/122502 2019-12-02 2019-12-02 点云处理方法、编码器、解码器及存储介质 WO2021108970A1 (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201980102302.0A CN114730474A (zh) 2019-12-02 2019-12-02 点云处理方法、编码器、解码器及存储介质
PCT/CN2019/122502 WO2021108970A1 (zh) 2019-12-02 2019-12-02 点云处理方法、编码器、解码器及存储介质
EP19955220.9A EP4071714A4 (en) 2019-12-02 2019-12-02 DOT CLOUD PROCESSING METHOD, ENCODER, DECODER AND STORAGE MEDIUM
US17/825,953 US20220286677A1 (en) 2019-12-02 2022-05-26 Point cloud processing method, encoder, decoder and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/122502 WO2021108970A1 (zh) 2019-12-02 2019-12-02 点云处理方法、编码器、解码器及存储介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/825,953 Continuation US20220286677A1 (en) 2019-12-02 2022-05-26 Point cloud processing method, encoder, decoder and storage medium

Publications (1)

Publication Number Publication Date
WO2021108970A1 true WO2021108970A1 (zh) 2021-06-10

Family

ID=76221284

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/122502 WO2021108970A1 (zh) 2019-12-02 2019-12-02 点云处理方法、编码器、解码器及存储介质

Country Status (4)

Country Link
US (1) US20220286677A1 (zh)
EP (1) EP4071714A4 (zh)
CN (1) CN114730474A (zh)
WO (1) WO2021108970A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115379190A (zh) * 2022-08-19 2022-11-22 腾讯科技(深圳)有限公司 一种点云处理方法、装置及计算机设备、存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160086353A1 (en) * 2014-09-24 2016-03-24 University of Maribor Method and apparatus for near-lossless compression and decompression of 3d meshes and point clouds
CN108632621A (zh) * 2018-05-09 2018-10-09 北京大学深圳研究生院 一种基于层次划分的点云属性压缩方法
CN109979008A (zh) * 2019-04-09 2019-07-05 北京大学深圳研究生院 一种基于属性的点云条带划分方法
CN109993839A (zh) * 2019-04-09 2019-07-09 北京大学深圳研究生院 一种自适应的点云条带划分方法
US20190311502A1 (en) * 2018-04-10 2019-10-10 Apple Inc. Point cloud attribute transfer algorithm

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160086353A1 (en) * 2014-09-24 2016-03-24 University of Maribor Method and apparatus for near-lossless compression and decompression of 3d meshes and point clouds
US20190311502A1 (en) * 2018-04-10 2019-10-10 Apple Inc. Point cloud attribute transfer algorithm
CN108632621A (zh) * 2018-05-09 2018-10-09 北京大学深圳研究生院 一种基于层次划分的点云属性压缩方法
CN109979008A (zh) * 2019-04-09 2019-07-05 北京大学深圳研究生院 一种基于属性的点云条带划分方法
CN109993839A (zh) * 2019-04-09 2019-07-09 北京大学深圳研究生院 一种自适应的点云条带划分方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4071714A4 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115379190A (zh) * 2022-08-19 2022-11-22 腾讯科技(深圳)有限公司 一种点云处理方法、装置及计算机设备、存储介质
WO2024037091A1 (zh) * 2022-08-19 2024-02-22 腾讯科技(深圳)有限公司 一种点云处理方法、装置及计算机设备、存储介质
CN115379190B (zh) * 2022-08-19 2024-04-26 腾讯科技(深圳)有限公司 一种点云处理方法、装置及计算机设备、存储介质

Also Published As

Publication number Publication date
CN114730474A (zh) 2022-07-08
EP4071714A1 (en) 2022-10-12
US20220286677A1 (en) 2022-09-08
EP4071714A4 (en) 2023-02-15

Similar Documents

Publication Publication Date Title
EP3514969B1 (en) Methods and devices using direct coding in point cloud compression
CN113615181B (zh) 用于点云编解码的方法、装置
US10535162B2 (en) Attribute mapping to encode and decode 3D models
WO2021000658A1 (zh) 点云编解码方法、编码器、解码器及计算机存储介质
JP7330306B2 (ja) 変換方法、逆変換方法、エンコーダ、デコーダ及び記憶媒体
CN109257604A (zh) 一种基于tmc3点云编码器的颜色属性编码方法
WO2021062528A1 (en) Angular mode for tree-based point cloud coding
US20230048381A1 (en) Context determination for planar mode in octree-based point cloud coding
WO2021062530A1 (en) Angular mode syntax for tree-based point cloud coding
US20220207781A1 (en) Transform method, inverse transform method, encoder, decoder and storage medium
WO2021069949A1 (en) Methods and devices for tree switching in point cloud compression
JP2024050705A (ja) 属性情報の予測方法、エンコーダ、デコーダ及び記憶媒体
CN112256652B (zh) 一种三维点云属性压缩方法、系统及终端
US20220286677A1 (en) Point cloud processing method, encoder, decoder and storage medium
WO2022131948A1 (en) Devices and methods for sequential coding for point cloud compression
US20230071581A1 (en) Methods and devices for multi-point direct coding in point cloud compression
CN115336264A (zh) 帧内预测方法、装置、编码器、解码器、及存储介质
WO2024094278A1 (en) Encoding and decoding a point cloud with density values
EP4233006A2 (en) Devices and methods for spatial quantization for point cloud compression
CN114868153A (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: 19955220

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2019955220

Country of ref document: EP

Effective date: 20220704