WO2021139796A1 - 莫顿码的构建方法、编码器、解码器、及存储介质 - Google Patents

莫顿码的构建方法、编码器、解码器、及存储介质 Download PDF

Info

Publication number
WO2021139796A1
WO2021139796A1 PCT/CN2021/070964 CN2021070964W WO2021139796A1 WO 2021139796 A1 WO2021139796 A1 WO 2021139796A1 CN 2021070964 W CN2021070964 W CN 2021070964W WO 2021139796 A1 WO2021139796 A1 WO 2021139796A1
Authority
WO
WIPO (PCT)
Prior art keywords
component
morton code
coordinate component
morton
index value
Prior art date
Application number
PCT/CN2021/070964
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 CN202180007640.3A priority Critical patent/CN114868153A/zh
Priority to EP21738556.6A priority patent/EP4083927A4/en
Publication of WO2021139796A1 publication Critical patent/WO2021139796A1/zh
Priority to US17/853,166 priority patent/US20220327746A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame

Definitions

  • the embodiments of the present application relate to coding and decoding technologies in the communication field, and in particular to a method for constructing Morton codes, an encoder, a decoder, and a storage medium.
  • G-PCC Geometry-based Point Cloud Compression
  • the Morton code at any point in the point cloud needs to be used.
  • the process of constructing Morton codes using multiple lookup tables greatly increases the computational complexity and storage space, thereby reducing the coding and decoding efficiency.
  • the embodiments of the present application provide a Morton code construction method, an encoder, a decoder, and a storage medium, which can effectively reduce the computational complexity and storage space, thereby improving the coding and decoding efficiency.
  • an embodiment of the present application provides a method for constructing Morton codes, which is applied to an encoder, and the method includes:
  • the embodiment of the present application also provides a method for constructing Morton code, which is applied to a decoder, and the method includes:
  • an embodiment of the present application also provides an encoder, the encoder includes: a first determining part,
  • the first determining part is configured to determine the geometric information of the current point in the point cloud; determine the index value corresponding to the coordinate component according to the coordinate component in the geometric information; and search according to the index value and Morton code Table, determining the Morton code component corresponding to the coordinate component; determining the Morton code of the current point according to the Morton code component.
  • an embodiment of the present application provides an encoder.
  • the encoder includes a first processor and a first memory storing executable instructions of the first processor. When the instructions are executed, the encoder When the first processor is executed, the Morton code construction method as described above is realized.
  • an embodiment of the present application provides a decoder, the decoder includes: a decoding part, a second determining part,
  • the decoding part is configured to parse a code stream
  • the second determining part is configured to determine the geometric information of the current point in the point cloud; determine the index value corresponding to the coordinate component according to the coordinate component in the geometric information; and search according to the index value and Morton code Table, determining the Morton code component corresponding to the coordinate component; determining the Morton code of the current point according to the Morton code component.
  • an embodiment of the present application provides a decoder.
  • the decoder includes a second processor and a second memory storing executable instructions of the second processor. When the instructions are executed, the decoder When the second processor is executed, the Morton code construction method as described above is realized.
  • an embodiment of the present application provides a computer storage medium with a program stored thereon and applied to an encoder.
  • the program is executed by a first processor, the above-mentioned Morton code construction method is implemented .
  • an embodiment of the present application provides a computer storage medium with a program stored thereon and applied to a decoder.
  • the program is executed by a second processor, the above-mentioned Morton code construction method is implemented .
  • the embodiment of the application discloses a Morton code construction method, an encoder, a decoder, and a computer storage medium.
  • the encoder determines the geometric information of the current point in the point cloud; determines the coordinate component corresponding to the coordinate component in the geometric information According to the index value and Morton code look-up table, determine the Morton code component corresponding to the coordinate component; determine the Morton code of the current point according to the Morton code component.
  • the decoder parses the code stream to determine the geometric information of the current point in the point cloud; determines the index value corresponding to the coordinate component according to the coordinate component in the geometric information; determines the Morton corresponding to the coordinate component according to the index value and Morton code lookup table
  • Code component Determine the Morton code of the current point according to the Morton code component. It can be seen that, in the embodiment of the present application, when constructing the Morton code of the current point, the codec can use the index value corresponding to each coordinate component in the geometric information of the current point to start from the same Morton code. Each Morton code component corresponding to each coordinate component is searched in the frame code look-up table, so that all Morton code components can be used to construct the Morton code of the current point. It can be seen that since the codec can store and use only one Morton code lookup table, it can effectively reduce the computational complexity and storage space, thereby improving the coding and decoding efficiency.
  • FIG. 1 is a structural diagram of the G-PCC encoder system 100
  • FIG. 2 is a structural diagram of the G-PCC decoder system 200
  • Figure 3 is the first schematic diagram of the implementation process of the Morton code construction method
  • Figure 4 is a second schematic diagram of the implementation process of the Morton code construction method
  • Figure 5 is the third schematic diagram of the implementation process of the Morton code construction method
  • Figure 6 is a fourth schematic diagram of the implementation process of the Morton code construction method
  • Figure 7 is a schematic diagram of the composition of the encoder
  • Figure 8 is a second schematic diagram of the composition of the encoder
  • Figure 9 is a schematic diagram of the structure of the decoder.
  • Figure 10 is a second schematic diagram of the structure of the decoder.
  • each slice is encoded independently.
  • the point cloud data is divided into multiple slices through slice division.
  • the geometric information of the point cloud and the attribute information corresponding to each point cloud are separately coded.
  • the geometric information is coordinated to convert the point cloud into a bounding box (bounding box), and then quantized.
  • This step of quantization mainly plays the role of scaling. Due to the quantization rounding, a part of the The geometric information of the point cloud is the same, so it is determined whether to remove the duplicate points based on the parameters.
  • the process of quantifying and removing the duplicate points is also called the voxelization process. Then divide the bounding box into an octree.
  • the bounding box is divided into eight sub-cubes, and the non-empty (including 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 1 ⁇ 1 ⁇ 1 unit cube
  • the division is stopped, and the points in the leaf nodes are arithmetic coded to generate a binary geometric bit stream, that is, a geometric code stream.
  • octree division In the process of encoding geometric information based on triangles (triangle soup, trisoup), octree division must also be performed first, but different from the geometric information encoding based on octrees, the trisoup does not need to step-by-step the point cloud. Divide into a unit cube with a side length of 1x1x1, but divide it into a block (sub-block) and stop the division when the side length is W.
  • the twelve pieces of the surface and the block are obtained At most twelve vertexes (intersection points) generated by the edges, perform arithmetic coding on the vertexes (surface fitting based on the intersection points) to generate a binary geometric bit stream, that is, a geometric code stream. Vertex is also used in the realization of the geometric reconstruction process, and the reconstructed geometric information is used when encoding the attributes of the point cloud.
  • 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.
  • Attribute coding is mainly carried out for color information.
  • the color information coding process there are mainly two transformation methods. One is distance-based lifting transformation that relies on Level of Detail (LOD) division, and the other is direct area adaptation.
  • LOD Level of Detail
  • Hierarchical transform (Regionadaptive Hierarchaltransform, RAHT) transformation
  • these two methods will transform the color information from the spatial domain to the frequency domain, obtain high-frequency coefficients and low-frequency coefficients through the transformation, and finally quantize the coefficients (ie, quantized coefficients), and finally ,
  • the vertex coordinates of each block are coded in turn (that is, arithmetic coding) to generate a binary attribute bit stream, namely the attribute Code stream.
  • the geometric bit stream and the attribute bit stream in the binary code stream are decoded independently.
  • the geometric bitstream through arithmetic decoding-octree synthesis-surface fitting-reconstruction geometry-inverse coordinate transformation, the geometric information of the point cloud is obtained;
  • the attribute bitstream through arithmetic decoding-inverse Quantization-based LOD-based lifting and inverse transformation or RAHT-based inverse transformation-inverse color conversion to obtain the attribute information of the point cloud, and restore the three-dimensional image model of the point cloud data to be encoded based on the geometric information and the attribute information.
  • Morton coding is also called z-order code, because its coding sequence is in spatial z order.
  • the Morton code acquisition is started in the following process:
  • the Morton code of the child nodes in the octree is calculated based on the quantized geometric coordinates of the point cloud.
  • a neighbor search process is performed based on the obtained Morton code.
  • the reconstructed geometric information (ie, the geometric coordinates of the point cloud) has been obtained on the encoder side before the attribute encoding.
  • the Morton code corresponding to the reconstructed point cloud is first calculated. Then, RAHT transformation is performed on the attributes (for example, color) of the pair of adjacent nodes in the space, wherein the relationship of the pair of adjacent nodes is determined based on the Morton code.
  • the geometric coordinate information of the point cloud has been obtained.
  • the Morton code corresponding to each point in the point cloud can be obtained.
  • the lifting transformation When using the lifting transformation to process the attribute information, first calculate the Morton code corresponding to each point in the reconstructed point cloud. Then, in order to structure the point cloud into LOD (Level of Detail), all points in the point cloud are sorted in ascending order according to their Morton code value. An array of point indexes can be obtained according to this order. Iterate through the point indexes stored in the array until all points are visited and assigned to some LODs. Finally, the generated LOD can be used for attribute prediction.
  • LOD Level of Detail
  • the Morton code is obtained by interleaving the binarized values of the components s, t, and u.
  • Table 1 gives an example of this process, where the bit precision of each component is 2.
  • the triple variable (s, t, u) can be the three-dimensional coordinates (x, y, z) of a point in the point cloud.
  • Three lookup Morton code lookup tables Tx, Ty, and Tz are used to construct Morton codes, where each table corresponds to a component (x, y, or z, for example, Tx corresponds to x, Ty corresponds to y, and Tz corresponds to z).
  • the binarized value of x can be used as an index to find the required entry Mx in the Morton code lookup table x.
  • the binary value of y can be used as the index to find the required entry My in the Morton code lookup table y.
  • the binarized value of z can be used as an index to find the required entry Mz in the Morton code lookup table z.
  • the Morton code of this point is obtained by performing bitwise OR (OR) processing on Mx, My and Mz.
  • the maximum geometric accuracy of the point coordinates in the point cloud is 24 bits.
  • G-PCC graphics-based point cloud coding
  • the point cloud coding includes octree geometric coding/decoding and RAHT ( Region adaptive hierarchical transformation) attribute coding and attribute coding using lifting transformation.
  • RAHT Region adaptive hierarchical transformation
  • the Morton code at any point in the point cloud needs to be used.
  • the process of constructing Morton codes using multiple lookup tables greatly increases the computational complexity and storage space, thereby reducing the coding and decoding efficiency.
  • the codec when constructing the Morton code of the current point, can use the index value corresponding to each coordinate component in the geometric information of the current point, from the same one.
  • Each Morton code component corresponding to each coordinate component is searched in the Morton code look-up table, so that all Morton code components can be used to construct the Morton code of the current point. It can be seen that since the codec can store and use only one Morton code lookup table, it can effectively reduce the computational complexity and storage space, thereby improving the coding and decoding efficiency.
  • FIG. 1 is a structural diagram of the G-PCC encoder system 100.
  • the G-PCC encoder system 100 includes a coordinate transformation unit 101, a voxelization unit 102, an octree analysis unit 103, and a surface approximation analysis.
  • the arithmetic coding unit 112 can implement coding of header information and quantization coefficients or residuals as CABAC or bypass coding.
  • the input point cloud is preprocessed by the coordinate transformation unit 101 and the voxelization unit 102.
  • the coordinate transformation unit 101 transforms the input point cloud from the world coordinate system to the internal coordinate system, and the voxelization unit 102 cuts off all entries that enter the bounding box. point.
  • the preprocessed point cloud is divided into blocks or voxels by the octree analysis unit 103, an occupancy code is generated in the process, and the occupancy code is coded by the arithmetic coding unit 112.
  • the surface approximation analysis unit 104 is a step of the TMC1 of the known trisoup, which expresses the geometric information in the block through vertices and segind.
  • the geometric reconstruction unit 105 performs reconstruction of the geometric information of the point cloud to be used in attribute encoding.
  • the color conversion unit 106 is an optional unit that converts colors from the RGB color space to the YUV color space or the YCoCg color space.
  • the reconstructed point cloud is recolored by the attribute transfer unit 107.
  • the RAHT unit 108 and the LoD generation unit 109 are two typical ways of attribute coding.
  • the RAHT unit 108 transforms the attribute value into coefficients through wavelet transform, the coefficients are quantized by the coefficient quantization unit 111, and the quantized coefficients are coded by the arithmetic coding unit 112.
  • the LoD generating unit 109 transforms the points into multiple levels of detail, and predicts the attribute values between or within the LoD to obtain the residuals between the predicted points and the predictive factors.
  • the residuals are quantized by the coefficient quantization unit 111, and the quantized residuals It is encoded by the arithmetic encoding unit 112.
  • Fig. 2 is a structural diagram of the composition of the G-PCC decoder system 200.
  • the G-PCC decoder system 200 includes an arithmetic decoding unit 201, an octree synthesis unit 202, a surface approximation synthesis unit 203, and geometric reconstruction Unit 204, inverse coordinate transformation unit 205, inverse attribute quantization unit 206, RAHT unit 207, LoD generation unit 208, inverse lifting unit 209, and inverse color transformation unit 210.
  • the arithmetic decoding unit 201 can implement decoding of header information and quantization coefficients or residuals as CABAC or bypass coding.
  • the geometric bit stream is decoded by the arithmetic decoding unit 201.
  • the octree synthesis unit 202 generates block or voxel information
  • the surface approximation synthesis unit 203 is a decoding step of TMC1, which uses triangles to reconstruct the surface and resamples the triangles in the block.
  • the geometric reconstruction unit 204 reconstructs the geometric information of the point cloud
  • the inverse coordinate transformation unit 205 transforms the reconstructed point cloud from the internal coordinate system to the world coordinate system.
  • the attribute bit stream is decoded by the arithmetic decoding unit 201.
  • the quantized coefficient or residual generated by the arithmetic decoding unit 201 is inversely quantized by the inverse attribute quantization unit 206. According to the encoder, there are two typical ways to decode coefficients or residuals.
  • the coefficient is converted into an attribute value by the RAHT unit 207.
  • the residual is converted into an attribute value by the LoD generating unit 208 and the inverse lifting unit 209.
  • the inverse color conversion unit 210 is an optional unit, depending on whether the color space is to be converted.
  • the method for constructing Morton codes proposed in this application can act on the G-PCC encoder system 100 and the G-PCC decoder system 200 at the same time.
  • the procedure, framework and algorithm of the Morton code construction method are at the encoding end. It's exactly the same as the decoder.
  • the G-PCC encoder system 100 may be a computing device having a processor and a storage medium, and the storage medium records an encoding program including the above-mentioned functions.
  • the encoder 100 reads the input point cloud and generates a corresponding bit stream.
  • the G-PCC encoder system 100 may be a computing device having one or more chips.
  • a unit that is implemented as an integrated circuit on a chip and has the above-mentioned functions has similar functions, similar connections and data exchanges to the corresponding units in FIG. 1.
  • the G-PCC decoder system 200 may be a computing device having a processor and a storage medium, and the storage medium records a decoding program including the above-mentioned functions.
  • the processor reads and executes the encoding program
  • the decoder 200 reads the input point cloud and generates a corresponding bit stream.
  • the G-PCC decoder system 200 may be a computing device having one or more chips.
  • a unit that is implemented as an integrated circuit on a chip and has the above-mentioned functions has similar functions, similar connections and data exchanges to the corresponding units in FIG. 2.
  • FIG. 3 is a schematic diagram of the realization process of the method for constructing Morton codes. As shown in FIG. The method for constructing the Morton code of the midpoint may include the following steps:
  • Step 101 Determine the geometric information of the current point in the point cloud.
  • the encoder may first determine the geometric information of the current point in the point cloud.
  • the geometric information of the point cloud and the attribute information corresponding to the point cloud are separately encoded. Among them, after the geometric information encoding is completed, the geometric information is reconstructed, and the encoding of the attribute information will depend on the reconstructed geometric information.
  • the coding of attribute information is mainly for the coding of 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.
  • the point cloud is coded.
  • the point cloud is reordered based on the Morton code to generate the point cloud sequence that can be used to predict the attribute information of the point cloud.
  • the encoder can use the geometric information of each point in the point cloud to determine the Morton code of each point. After obtaining the Morton code of each point, the encoder can sort all the points in the point cloud in ascending order to generate the point cloud sequence corresponding to the point cloud. set. Among them, all Morton codes of all points in the point cloud are stored in the point cloud sequence set.
  • the encoder when the encoder encodes the attribute information of the point cloud, it can encode all the points of the point cloud sequentially in the order of Morton code from small to large.
  • the current point can be any point in the point cloud.
  • other Morton codes that are smaller than the Morton code of the current point correspond to
  • the other points in the point cloud have completed the point cloud coding, and the corresponding attribute reconstruction values are generated.
  • the encoder when the encoder encodes the point cloud for the current point, it needs to first determine the Morton code of the current point. Specifically, in this application, the encoder can use the geometric information of the current point to determine the Morton code of the current point. Therefore, the encoder needs to determine the geometric information of the current point in the point cloud first.
  • Step 102 Determine the index value corresponding to the coordinate component according to the coordinate component in the geometric information.
  • the encoder may further determine each index value corresponding to each coordinate component according to the coordinate components in the geometric information. Among them, one coordinate component corresponds to an index value.
  • the index value corresponding to the coordinate component of the current point can be used to query the Morton code component of the coordinate component.
  • the corresponding geometric information may be formed by multiple coordinate components.
  • the coordinate component in the geometric information of the current point may include a first coordinate component, a second coordinate component, and a third coordinate component.
  • the geometric information of the current point may be the three-dimensional spatial coordinates (x, y, z) of the current point, that is, the geometric information of the current point may be expressed as (x, y, z), where x Is the first coordinate component, y is the second coordinate component, and z is the third coordinate component.
  • the encoder when it determines a corresponding index value according to a coordinate component in the geometric information of the current point, it can directly perform a binary calculation on the coordinate component, and calculate the value of the coordinate component.
  • the binary number is used as a corresponding index value.
  • the geometric information of the current point is (2, 3, 4), that is, the first coordinate component of the current point is 2, the second coordinate component is 3, and the third coordinate component is 4. Then, after performing binary calculations on each coordinate component of the current point, it can be determined that the first index value corresponding to the first coordinate component is 10, the second index value corresponding to the second coordinate component is 11, and the third coordinate component corresponds to The third index value of is 100.
  • Step 103 Determine the Morton code component corresponding to the coordinate component according to the index value and the Morton code look-up table.
  • the encoder after the encoder determines the index value corresponding to the coordinate component according to the coordinate component in the geometric information, it can further query the Morton code lookup table according to the index value, and finally determine the coordinate component Corresponding Morton code component.
  • the Morton code look-up table can be used to determine the Morton code component of the current point, that is, the Morton code look-up table can obtain each coordinate component corresponding to the current point. A Morton code component.
  • the encoder when the encoder determines the Morton code component corresponding to the coordinate component according to the index value and the Morton code look-up table, it may first determine the Morton code component corresponding to the index value based on the Morton code look-up table. Frame code; then the Morton code corresponding to the index value can be further shifted, and finally the Morton code component corresponding to the coordinate component can be obtained.
  • the Morton code corresponding to the index value corresponding to the coordinate component obtained by searching the Morton code lookup table based on the index value may be in a binary form.
  • the Morton code corresponding to the index value may be determined after bit-filling processing is performed on at least one bit of the index value.
  • the encoder can query the Morton code lookup table to obtain the coordinate component according to the index value of the coordinate component. Morton code corresponding to the corresponding index value.
  • Table 2 is a Morton code lookup table. As shown in Table 2, for different index values, the Morton code lookup table can be used to determine the Morton code corresponding to the corresponding index value. The Morton code corresponding to the index value may be obtained after bit-filling processing is performed based on at least one bit of the index value.
  • the query processing can be performed according to the first index value, the second index value, and the third index value, and the Morton code corresponding to the index value corresponding to the first coordinate component is 000001000, and the index corresponding to the second coordinate component is 000001000.
  • the Morton code corresponding to the value is 000001001
  • the Morton code corresponding to the index value corresponding to the third coordinate component is 001000000.
  • the encoder may perform shift processing on each Morton code component in turn, Finally, each Morton code component corresponding to each coordinate component is obtained.
  • the encoder when the encoder performs shift processing on the Morton code corresponding to the index value to obtain the Morton code component corresponding to the coordinate component, it can execute the Morton code corresponding to the index value Binary left shift processing by K bits to obtain the shifted Morton code; then directly determine the shifted Morton code as the Morton code component. Immediately after the corresponding Morton code is shifted to the left by K bits, the corresponding Morton code component can be obtained.
  • K is an integer greater than or equal to 0, and if K is equal to 0, no shift processing is performed.
  • the way the encoder performs the shift processing may be different.
  • the encoder can perform a binary left shift of at least one bit of the Morton code corresponding to the corresponding index value by 2 bits.
  • the encoder can perform the processing of the Morton code corresponding to the corresponding index value. At least one bit performs binary shift processing by one bit to the left.
  • the encoder may not perform shift processing on the Morton code corresponding to the corresponding index value.
  • the geometric information of the current point is (2, 3, 4)
  • the index value corresponding to the first coordinate component x can be queried through the above table 2.
  • the Morton code mx is 000001000
  • the Morton code my corresponding to the index value corresponding to the second coordinate component y is 000001001
  • the Morton code mz corresponding to the index value corresponding to the third coordinate component z is 001000000.
  • the encoder can perform a binary left shift of mx by 2 bits, and determine that the Morton code after the shift is 000100000, that is, determine that the corresponding Morton code component Mx is 000100000 (32); the encoder can perform a binary left shift of my by one Bit processing, confirm that the Morton code after shifting is 000010010, that is, determine the corresponding Morton code component My as 000010010(18); mz remains unchanged, that is, do not perform shift processing on mz, but directly determine the corresponding Morton code The component Mz is 001000000 (64).
  • the same Morton code lookup table can be used to obtain the Morton code corresponding to the corresponding index value, and then according to different coordinate components, Morton codes corresponding to different index values perform different shift processing, and finally the Morton code component corresponding to each coordinate component can be determined.
  • the coordinate components in the geometric information (x, y, z) of the current point include the first coordinate component x, the second coordinate component y, and the third coordinate component z. Then, for the first coordinate component x in the geometric information (x, y, z), determine the first index value corresponding to the first coordinate component x; then you can query the Morton code lookup table to obtain the corresponding first index value Morton code mx; then, the Morton code mx corresponding to the first index value can be subjected to binary left shift processing by 2 bits, so as to obtain the first Morton code component Mx corresponding to the first coordinate component x, that is, the shift of mx The latter Morton code is determined as the first Morton code component Mx.
  • the second coordinate component y in the geometric information (x, y, z) determine the second index value corresponding to the second coordinate component y; then you can query the index corresponding to the second coordinate component y in the Morton code lookup table Morton code my corresponding to the value of the second coordinate component y; then, the Morton code my corresponding to the index value corresponding to the second coordinate component y can be subjected to binary left shift processing by one bit, so as to obtain the second Morton code corresponding to the second coordinate component y
  • the component My that is, the Morton code after the shift of my is determined as the second Morton code component My.
  • the third index value corresponding to the third coordinate component z is determined; then the index corresponding to the third index value z can be queried in the Morton code lookup table Value corresponding to the Morton code mz; then the third Morton code component Mz corresponding to the third coordinate component z can be determined directly according to the Morton code mz corresponding to the index value corresponding to the third index value z, that is, mz is directly determined as the first Three Morton code components Mz.
  • the encoder can sequentially determine the Morton components corresponding to different coordinate components of the current point through the same Morton code lookup table. Therefore, in the process of determining the Morton code, the encoder It only needs to store and query a Morton code lookup table, which can greatly reduce storage space and reduce computational complexity.
  • Step 104 Determine the Morton code of the current point according to the Morton code component.
  • the encoder after the encoder further queries the Morton code component corresponding to the coordinate component in the Morton code look-up table according to the index value, it can further determine the Morton code of the current point according to the Morton code component.
  • the encoder since the Morton code component of the current point is in binary form, after the encoder directly determines the Morton code after the shift of each coordinate component as the corresponding Morton code component When the encoder determines the Morton code of the current point according to the Morton code component, it can directly perform bitwise AND or processing on the Morton code component corresponding to the coordinate component in the geometric information, and finally the Morton code of the current point can be obtained .
  • the bitwise AND or processing when the bitwise AND or processing is performed, the bitwise AND or processing can be performed on each bit in the Morton code component corresponding to the coordinate component, or it can be Perform bitwise AND-OR processing on a certain bit or several bits in the Morton code component corresponding to the coordinate component.
  • the encoder can perform exclusive OR operation on these three Morton code components bit by bit.
  • the obtained binary number is 001110010, and the corresponding Morton code of the current point is 114.
  • FIG. 4 is a schematic diagram of the second implementation process of the Morton code construction method. As shown in Figure 4, after the Morton code of the current point is determined according to the Morton code component, that is, after step 104, the encoder performs the processing of the Morton code of the point in the point cloud.
  • the frame code construction method may also include the following steps:
  • Step 105 Determine the reference point of the current point in the point cloud based on the Morton code of the current point and the point cloud sequence set corresponding to the point cloud.
  • the encoder after the encoder determines the Morton code of the current point based on the Morton code component, it can further determine the Morton code of the current point and the point cloud sequence set corresponding to the point cloud. The reference point of the current point.
  • the encoder can obtain all the Morton codes of all points in the point cloud according to the method for determining Morton codes proposed in steps 101 to 104, and then according to the point All Morton codes corresponding to all points in the cloud generate a point cloud sequence set.
  • the encoder can sort all the Morton codes of all points in ascending order to generate the corresponding point cloud.
  • the point cloud sequence set in the point cloud sequence set stores all Morton codes of all points in the point cloud in ascending order. Therefore, after the encoder determines the Morton code of the current point, it can use the Morton code of the current point to perform query processing in the point cloud sequence set, so that the reference point of the current point can be determined in the point cloud.
  • the encoder when the encoder performs query processing in the point cloud sequence set based on the Morton code of the current point, it can directly traverse the query point cloud sequence set according to the Morton code of the current point. To obtain the reference point of the current point for each Morton code in the current point; according to the Morton code of the current point, the query processing of the point cloud sequence set can be performed according to the preset query algorithm, so as to obtain the reference point of the current point.
  • the encoder when it performs query processing in the point cloud sequence collection based on the Morton code of the current point, it can either use the traversal method used for the point cloud sequence collection or other methods.
  • Step 106 Determine the attribute prediction value of the current point according to the attribute reconstruction value of the reference point.
  • the encoder uses the Morton code of the current point and the point cloud sequence set corresponding to the point cloud to determine the reference point of the current point in the point cloud, it can finally determine the reference point according to the attribute reconstruction value of the reference point The predicted value of the attribute at the current point.
  • the encoder after the encoder obtains the reference point of the current point based on the point cloud sequence set, since the current point has a strong correlation with the reference point, it can directly use the reference point of the reference point.
  • the attribute reconstruction value prediction obtains the attribute prediction value of the current point.
  • the prediction residual of the current point can be calculated according to the attribute prediction value, and then the prediction residual can be calculated Encode, generate a code stream, and then transmit the code stream to the decoding end.
  • the encoder only stores and uses a Morton code lookup table, and can complete the comparison of the Morton code in the cloud.
  • the construction of the Morton code at any point not only reduces the storage consumption, but also reduces the computational complexity without affecting the coding efficiency.
  • the coordinate component is the first coordinate component x of the geometric information (x, y, z) of the current point, then The binary value of x is used as the index to find the corresponding Morton code mx in the Morton code lookup table; if the coordinate component is the second coordinate component y of the geometric information (x, y, z) of the current point, Then the binarized value of y is used as an index to find the corresponding Morton code my in the Morton code lookup table.
  • the binarized value of z is used as the index to find the corresponding Morton code mz in the Morton code lookup table .
  • at least one bit of mx can be executed Binary left shift processing by 2 bits, get the first Morton code component Mx corresponding to x, and perform binary left shift processing for my by one bit to obtain the second Morton code component My corresponding to y, mz remains unchanged, directly set mz Is the third Morton code component Mz corresponding to z.
  • the Morton code of the current point is obtained by performing bitwise exclusive OR processing on the first Morton code component Mx, the second Morton code component My, and the third Morton code component Mz, that is, the first Morton code component Mx, the second Morton code component My, and the third Morton code component Mz perform bitwise AND processing.
  • the Morton code construction method proposed in the above steps 101 to 104 can be applied in the octree geometric coding (decoding) process, and can also be applied in the attribute coding (RAHT) process , It can also be applied to the process of attribute coding (lifting transformation), which is not specifically limited in this application.
  • the embodiment of the application discloses a method for constructing a Morton code.
  • the encoder determines the geometric information of the current point in the point cloud; determines the index value corresponding to the coordinate component according to the coordinate component in the geometric information; according to the index value and the Morton code Code lookup table to determine the Morton code component corresponding to the coordinate component; determine the Morton code of the current point according to the Morton code component. It can be seen that, in the embodiment of the present application, when constructing the Morton code of the current point, the codec can use the index value corresponding to each coordinate component in the geometric information of the current point to start from the same Morton code.
  • Each Morton code component corresponding to each coordinate component is searched in the frame code look-up table, so that all Morton code components can be used to construct the Morton code of the current point. It can be seen that since the codec can store and use only one Morton code lookup table, it can effectively reduce the computational complexity and storage space, thereby improving the coding and decoding efficiency.
  • the encoder when the encoder performs the above-mentioned step 102, that is, when the encoder determines the index value corresponding to the coordinate component according to the coordinate component in the geometric information of the current point, it may also first Perform binary right shift processing for each coordinate component of the current point, and then determine the index value based on the right shifted component.
  • the geometric information of the current point is the spatial three-dimensional coordinates (x, y, z) of the current point
  • the first coordinate component in the geometric information of the current point is x
  • the second coordinate component is y
  • the third coordinate component is z.
  • the encoder may first determine each index value corresponding to each coordinate component according to each coordinate component in the geometric information. Perform binary right shift processing on the first coordinate component, the second coordinate component, and the third coordinate component respectively to obtain the first component after right shift corresponding to the first coordinate component, the second component after right shift corresponding to the second coordinate component, and The third coordinate component corresponds to the third component after the right shift.
  • the first coordinate component, the second coordinate component, and the third coordinate component may have the same bit width.
  • the binary bit width of the first coordinate component is 8
  • the binary bit width of the second coordinate component is 8
  • the binary bit width of the third coordinate component is 8.
  • the preset number of bits is used to determine the bit width when performing shift processing.
  • the value of the preset number of bits may be an integer greater than one.
  • the preset number of bits may be equal to the bit width of the coordinate component.
  • the bit width of the first coordinate component, the second coordinate component, and the third coordinate component are equal to 8, and the preset bit The number is equal to 8;
  • the preset number of bits can also be an integer multiple of the bit width of the coordinate component, for example, the bit width of the first coordinate component, the second coordinate component, and the third coordinate component is equal to 8, and the preset number of bits is equal to 16.
  • the present application does not specifically limit the bit width and the preset number of bits of the coordinate component of the current point.
  • the new binary numbers obtained after the binary numbers with the same bit width are shifted by the same number of bits, the new binary numbers obtained also have the same bit width. Therefore, according to the preset bit width After performing binary right shift processing on the first coordinate component, the second coordinate component, and the third coordinate component with the same bit width, the first component after right shift, the second component after right shift, and the third component after right shift are obtained. It also has the same bit width.
  • the bit widths of the first component after right shift, the second component after right shift, and the third component after right shift are all (m ⁇ n); where m and n are greater than 1. Integer. For example, after performing binary right shift processing on the first coordinate component, the second coordinate component, and the third coordinate component with the same bit width according to the preset number of bits, the first component after the right shift and the second component after the right shift are obtained. And after the right shift, the bit width of the third component is 24 (8 ⁇ 3).
  • the encoder can sequentially determine the n bits corresponding to the first coordinate component according to the highest m bits, the middle (n-2) m bits, and the lowest m bits of the first component after right shifting.
  • the first index value at the same time, the encoder can also determine the n second index corresponding to the second coordinate component according to the highest m bits, the middle (n-2) m bits and the lowest m bits of the second component after right shifting
  • the encoder can also determine the n third index values corresponding to the third coordinate component according to the highest m bits, the middle (n-2) m bits, and the lowest m bits of the third component after the right shift.
  • the first index value corresponding to the first coordinate component may include the highest m bits, the middle (n-2) m bits, and the lowest m bits of the first component after the right shift.
  • the second index value corresponding to the second coordinate component may also include the highest m bits, the middle (n-2) m bits, and the lowest m bits of the second component after the right shift N different index values corresponding in sequence;
  • the third index value corresponding to the third coordinate component may also include the highest m bits, the middle (n-2) m bits, and the lowest m of the second component after the right shift. N different index values corresponding to bits in turn.
  • the encoder after the encoder performs shift processing on each coordinate component of the current point, it can determine multiple index values corresponding to each coordinate component according to a fixed number of bits, that is, the code
  • the detector can disassemble the binary digits of the shifted component according to a fixed bit width interval, and finally generate n different index values corresponding to each coordinate component for different n digit intervals.
  • the encoder can determine the Morton code corresponding to the coordinate component according to the index value and the Morton code look-up table Weight. Specifically, in this application, when the encoder performs step 103, it can determine the first coordinate according to n first index values, n second index values, n third index values, and Morton code lookup table. N first Morton code components corresponding to the components, n second Morton code components corresponding to the second coordinate components, and n third Morton code components corresponding to the third coordinate components.
  • the encoder can respectively determine the corresponding n index values, Therefore, when using the index value to query the Morton code lookup table, the encoder can query and obtain a first index value corresponding to the highest m bit of the first component after right shifting.
  • the encoder can query to obtain a second Morton code component corresponding to the highest m bits according to a second index value corresponding to the highest m bits of the second component after right shifting; Specifically, the encoder can query and obtain a third Morton code component corresponding to the highest m bits of the third component after the right shift corresponding to a third index value corresponding to the highest m bits.
  • the encoding The device can obtain the n Morton code components corresponding to the highest m bits, the middle (n-2) m bits, and the lowest m bits of each coordinate component after the component is shifted to the right.
  • the encoder determines the nth first index value according to the n first index values, n second index values, n third index values, and Morton code lookup table. After the frame components, n second Morton code components, and n third Morton code components, the Morton code of the current point can be further determined according to the n Morton code components corresponding to each coordinate component.
  • the encoder when the encoder executes the above step 104, that is, when the encoder determines the Morton code of the current point according to the Morton code component, it may first determine the Morton code at the current point according to the n first Morton code components, The n second Morton code components and n third Morton code components determine the n interval Morton codes of the current point; then the Morton code of the current point can be determined according to the n interval Morton codes.
  • the encoder since the encoder determines the n index values based on the right-shifted components, the Morton code lookup table is queried through n index values to obtain n modifiers. After the frame code components, when using n Morton code components for subsequent processing, the encoder also needs to perform a corresponding left shift processing.
  • the specific number of bits moved by the encoder when performing the left shift processing is related to the number of bits moved during the above right shift processing and the corresponding bit width interval.
  • the binary bit width of the first coordinate component is 8
  • the binary bit width of the second coordinate component is 8
  • the binary bit width of the third coordinate component is 8, the binary right shift is performed.
  • the preset number of bits processed is 16.
  • the encoder determines the geometric information (x, y, z) of the current point, it can perform binary right shift processing on each coordinate component of the geometric information according to the preset number of bits, that is, the first coordinate component x
  • the binary number, the binary number of the second coordinate component y, and the binary number of the third coordinate component z execute 16-bit right shift processing to obtain the first component corresponding to the first coordinate component x and the second coordinate component y corresponding to the right shift
  • the second component after the right shift and the third coordinate component z correspond to the third component after the right shift.
  • bit widths of the first component after right shift corresponding to x, the second component after right shift corresponding to y, and the third component after right shift corresponding to z are all At this time, it can be considered that m is 8 and n is 3.
  • the encoder can determine a first index value corresponding to the first coordinate component x according to the highest 8 bits of the first component after the right shift, and then use the first index value to query the model.
  • the frame code look-up table is used to obtain a first Morton code component corresponding to the highest 8 bits.
  • the encoder may first use the first index value to query the Morton code lookup table to obtain a Morton code mx corresponding to a corresponding index value, and then the Morton code mx corresponding to the index value The binary left shift processing of 2 bits is performed to obtain a first Morton code component Mx of the first coordinate component x corresponding to the first index value.
  • the encoder can also determine a second index value corresponding to the second coordinate component y according to the highest 8 bits of the second component after right shifting, and then use the second index value to query the Morton code Look up the table to obtain a second Morton code component corresponding to the highest 8 bits.
  • the encoder can first use the second index value to query the Morton code lookup table to obtain a Morton code my corresponding to a corresponding index value, and then the Morton code my corresponding to the index value. Execute the binary shift processing by one bit to the left, so as to obtain a second Morton code component My corresponding to the second index value of the second coordinate component y.
  • the encoder can also determine a third index value corresponding to the third coordinate component z according to the highest 8 bits of the third component after right shifting, and then use the third index value to query the Morton code Look up the table to obtain a third Morton code component corresponding to the highest 8 bits.
  • the encoder may first use the third index value to query the Morton code lookup table to obtain a Morton code mz corresponding to a corresponding index value, and then directly according to the Morton code corresponding to the index value.
  • the code mz generates a third Morton code component Mz corresponding to the third index value of the third coordinate component z.
  • the encoder determines a first Morton code component, a second Morton code component, and a third Morton code component corresponding to the highest 8-bit bit width interval. , Based on these three Morton code components, an interval Morton code corresponding to the highest 8-bit bit width interval can be further generated.
  • the encoder may perform bit interleaving processing on the three Morton code components corresponding to the highest 8-bit bit width interval in the order of x, y, and z to obtain the interleaved Binary number, where the bit width of the interleaved binary number is 24, and then the interleaved binary number is shifted to the left by 48 bits (16 ⁇ 3), so as to obtain an interval corresponding to the highest 8-bit bit width interval Pause.
  • the encoder can continue to determine the three index values corresponding to the middle (3-2) 8-bit bit width intervals of the three coordinate components in the above-mentioned manner, and then based on the The frame code look-up table obtains three Morton code components corresponding to the middle 8-bit bit width interval. Finally, these three Morton code components can be used to obtain an interval corresponding to the middle 8-bit bit width interval. Pause.
  • the encoder can perform bit interleaving processing on the three Morton code components corresponding to the middle 8-bit bit width interval in the order of x, y, and z to obtain the interleaved Binary number, where the bit width of the interleaved binary number is 24, and then the interleaved binary number is shifted to the left by 24 bits (8 ⁇ 3) to obtain an interval corresponding to the middle 8-bit bit width interval Pause.
  • the encoder can continue to determine the three index values corresponding to the lowest 8-bit bit width interval of the three coordinate components in the above-mentioned manner, and then obtain the and The three Morton code components corresponding to the lowest 8-bit bit width interval can finally be used to obtain an interval Morton code corresponding to the lowest 8-bit bit width interval using these three Morton code components.
  • the encoder can perform bit interleaving processing on the three Morton code components corresponding to the lowest 8-bit bit width interval in the order of x, y, and z to obtain the interleaved A binary number, where the bit width of the interleaved binary number is 24, and then the interleaved binary number is directly determined as an interval Morton code corresponding to the lowest 8-bit bit width interval.
  • the encoder after the encoder determines the three interval Morton codes corresponding to all the three bit-width intervals constituting 24 bits, it can execute the three interval Morton codes one by one. Bit XOR processing, and determine the value after XOR processing as the Morton code of the current point.
  • int64_t represents the data type of a 64-bit integer
  • int32_t represents the data type of a 32-bit integer
  • (x, y, z) is the input coordinates of a point in the point cloud, that is, geometric information
  • kMortonCode256[] is obtaining Morton code
  • the only lookup table used at the time is the Morton code lookup table.
  • the variable mortonCode is the Morton code of the input coordinates (x, y, z).
  • bit width corresponding to the first coordinate component, the second coordinate component, and the third coordinate component of the current point can be any integer greater than 0, which is not specifically limited in this application.
  • the preset number of bits for the encoder to perform the right shift processing can be any integer greater than 0, which is not specifically limited in the present application.
  • the bit width of the coordinate component after the right shift is (m ⁇ n), and can be disassembled into n m-bit bit width intervals, where m and n may be greater than It is an integer of 1, which is not specifically limited in this application.
  • the embodiment of the application discloses a method for constructing a Morton code.
  • the encoder determines the geometric information of the current point in the point cloud; determines the index value corresponding to the coordinate component according to the coordinate component in the geometric information; according to the index value and the Morton code Code lookup table to determine the Morton code component corresponding to the coordinate component; determine the Morton code of the current point according to the Morton code component. It can be seen that, in the embodiment of the present application, when constructing the Morton code of the current point, the codec can use the index value corresponding to each coordinate component in the geometric information of the current point to start from the same Morton code.
  • Each Morton code component corresponding to each coordinate component is searched in the frame code look-up table, so that all Morton code components can be used to construct the Morton code of the current point. It can be seen that since the codec can store and use only one Morton code lookup table, it can effectively reduce the computational complexity and storage space, thereby improving the coding and decoding efficiency.
  • FIG. 5 is a schematic diagram of the implementation process of the method for constructing Morton codes. As shown in FIG. The method for constructing the Morton code of the midpoint may include the following steps:
  • Step 201 Parse the code stream to determine the geometric information of the current point in the point cloud.
  • the decoder may first parse the code stream to determine the geometric information of the current point in the point cloud.
  • the geometric information of the point cloud and the attribute information corresponding to the point cloud are decoded separately.
  • the geometric information is reconstructed, and the decoding of the attribute information will depend on the reconstructed geometric information.
  • the decoding of the attribute information is mainly for the decoding of the 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 undecoded attribute information corresponds to the reconstructed geometric information.
  • the point cloud is decoded.
  • the point cloud is reordered based on the Morton code to generate the point cloud sequence that can be used to predict the attribute information of the point cloud.
  • the decoder can use the geometric information of each point in the point cloud to determine the Morton code of each point. After obtaining the Morton code of each point, the decoder can sort all the points in the point cloud in ascending order, sort all the Morton codes of all points, and generate the point cloud sequence corresponding to the point cloud. set. Among them, all Morton codes of all points in the point cloud are stored in the point cloud sequence set.
  • the decoder when the decoder decodes the attribute information of the point cloud, it can decode all the points of the point cloud in the order of the Morton code from small to large.
  • the current point can be any point in the point cloud.
  • other Morton codes that are smaller than the Morton code of the current point correspond to
  • the other points in the point cloud have completed the point cloud decoding, and the corresponding attribute reconstruction values are generated.
  • the decoder when the decoder decodes the point cloud of the current point, it needs to determine the Morton code of the current point first. Specifically, in this application, the decoder can use the geometric information of the current point to determine the Morton code of the current point. Therefore, the decoder needs to first determine the geometric information of the current point in the point cloud.
  • Step 202 Determine an index value corresponding to the coordinate component according to the coordinate component in the geometric information.
  • the decoder may further determine each index value corresponding to each coordinate component according to the coordinate components in the geometric information. Among them, one coordinate component corresponds to an index value.
  • the index value corresponding to the coordinate component of the current point can be used to query the Morton code component of the coordinate component.
  • the corresponding geometric information may be formed by multiple coordinate components.
  • the coordinate component in the geometric information of the current point may include a first coordinate component, a second coordinate component, and a third coordinate component.
  • the geometric information of the current point may be the three-dimensional spatial coordinates (x, y, z) of the current point, that is, the geometric information of the current point may be expressed as (x, y, z), where x Is the first coordinate component, y is the second coordinate component, and z is the third coordinate component.
  • the decoder when it determines a corresponding index value according to a coordinate component in the geometric information of the current point, it can directly perform a binary calculation on the coordinate component, and calculate the value of the coordinate component.
  • the binary number is used as a corresponding index value.
  • the geometric information of the current point is (2, 3, 4), that is, the first coordinate component of the current point is 2, the second coordinate component is 3, and the third coordinate component is 4. Then, after performing binary calculations on each coordinate component of the current point, it can be determined that the first index value corresponding to the first coordinate component is 10, the second index value corresponding to the second coordinate component is 11, and the third coordinate component corresponds to The third index value of is 100.
  • Step 203 Determine the Morton code component corresponding to the coordinate component according to the index value and the Morton code look-up table.
  • the decoder after the decoder determines the index value corresponding to the coordinate component according to the coordinate component in the geometric information, it can further query the Morton code lookup table according to the index value, and finally determine the coordinate component Corresponding Morton code component.
  • the Morton code look-up table can be used to determine the Morton code component of the current point, that is, the Morton code look-up table can obtain each coordinate component corresponding to the current point. A Morton code component.
  • the decoder when the decoder determines the Morton code component corresponding to the coordinate component according to the index value and the Morton code look-up table, it may first determine the Morton code component corresponding to the index value based on the Morton code look-up table. Frame code; then the Morton code corresponding to the index value can be further shifted, and finally the Morton code component corresponding to the coordinate component can be obtained.
  • the Morton code corresponding to the index value corresponding to the coordinate component obtained by searching the Morton code lookup table based on the index value may be in a binary form.
  • the Morton code corresponding to the index value may be determined after bit-filling processing is performed on at least one bit of the index value.
  • the decoder can query the Morton code lookup table to obtain the coordinate component according to the index value of the coordinate component. Morton code corresponding to the corresponding index value.
  • Table 2 is a Morton code lookup table. As shown in Table 2, for different index values, the Morton code lookup table can be used to determine the Morton code corresponding to the corresponding index value. The Morton code corresponding to the index value may be obtained after bit-filling processing is performed based on at least one bit of the index value.
  • the query processing can be performed according to the first index value, the second index value, and the third index value, and the Morton code corresponding to the index value corresponding to the first coordinate component is 000001000, and the index corresponding to the second coordinate component is 000001000.
  • the Morton code corresponding to the value is 000001001
  • the Morton code corresponding to the index value corresponding to the third coordinate component is 001000000.
  • the decoder may perform shift processing on each Morton code component in turn, Finally, each Morton code component corresponding to each coordinate component is obtained.
  • the encoder when the encoder performs shift processing on the Morton code corresponding to the index value to obtain the Morton code component corresponding to the coordinate component, it can execute the Morton code corresponding to the index value Binary left shift processing by K bits to obtain the shifted Morton code; then directly determine the shifted Morton code as the Morton code component. Immediately after the corresponding Morton code is shifted to the left by K bits, the corresponding Morton code component can be obtained.
  • K is an integer greater than or equal to 0, and if K is equal to 0, no shift processing is performed.
  • the way the decoder performs the shift processing may be different.
  • the decoder can perform binary left shift processing for at least one bit of the Morton code corresponding to the corresponding index value by 2 bits.
  • the decoder can perform the processing of the Morton code corresponding to the corresponding index value. At least one bit performs binary shift processing by one bit to the left.
  • the decoder may not perform shift processing on the Morton code corresponding to the corresponding index value.
  • the geometric information of the current point is (2, 3, 4)
  • the index value corresponding to the first coordinate component x can be queried through the above table 2.
  • the Morton code mx is 000001000
  • the Morton code my corresponding to the index value corresponding to the second coordinate component y is 000001001
  • the Morton code mz corresponding to the index value corresponding to the third coordinate component z is 001000000.
  • the decoder can perform a binary left shift of mx by 2 bits, and determine that the Morton code after the shift is 000100000, that is, determine that the corresponding Morton code component Mx is 000100000 (32); the encoder can perform a binary left shift of my by one Bit processing, confirm that the Morton code after shifting is 000010010, that is, determine the corresponding Morton code component My as 000010010(18); mz remains unchanged, that is, do not perform shift processing on mz, but directly determine the corresponding Morton code The component Mz is 001000000 (64).
  • the same Morton code lookup table can be used to obtain the Morton code corresponding to the corresponding index value, and then according to different coordinate components, Morton codes corresponding to different index values perform different shift processing, and finally the Morton code component corresponding to each coordinate component can be determined.
  • the coordinate components in the geometric information (x, y, z) of the current point include the first coordinate component x, the second coordinate component y, and the third coordinate component z. Then, for the first coordinate component x in the geometric information (x, y, z), determine the first index value corresponding to the first coordinate component x; then you can query the Morton code lookup table to obtain the corresponding first index value Morton code mx; then, the Morton code mx corresponding to the first index value can be subjected to binary left shift processing by 2 bits, so as to obtain the first Morton code component Mx corresponding to the first coordinate component x, that is, the shift of mx The latter Morton code is determined as the first Morton code component Mx.
  • the second coordinate component y in the geometric information (x, y, z) determine the second index value corresponding to the second coordinate component y; then you can query the index corresponding to the second coordinate component y in the Morton code lookup table Morton code my corresponding to the value of the second coordinate component y; then, the Morton code my corresponding to the index value corresponding to the second coordinate component y can be subjected to binary left shift processing by one bit, so as to obtain the second Morton code corresponding to the second coordinate component y
  • the component My that is, the Morton code after the shift of my is determined as the second Morton code component My.
  • the third coordinate component z in the geometric information (x, y, z) determine the third index value corresponding to the third coordinate component z; then you can query the Morton code lookup table to obtain the index corresponding to the third index value z Value corresponding to the Morton code mz; then the third Morton code component Mz corresponding to the third coordinate component z can be determined directly according to the Morton code mz corresponding to the index value corresponding to the third index value z, that is, mz is directly determined as the first Three Morton code components Mz.
  • the decoder can sequentially determine the Morton components corresponding to different coordinate components of the current point through the same Morton code look-up table. Therefore, in the process of determining the Morton code, the decoder It only needs to store and query a Morton code lookup table, which can greatly reduce storage space and reduce computational complexity.
  • Step 204 Determine the Morton code of the current point according to the Morton code component.
  • the decoder after the decoder further queries the Morton code component corresponding to the coordinate component in the Morton code look-up table according to the index value, it can further determine the Morton code of the current point according to the Morton code component.
  • the decoder since all Morton code components of the current point are in binary form, the decoder directly determines the Morton code after shifting each coordinate component as the corresponding Morton code component After that, when the decoder determines the Morton code of the current point according to the Morton code component, it can directly perform bitwise AND or processing on the Morton code component corresponding to the coordinate component in the geometric information, and finally obtain the Morton code of the current point. code.
  • the bitwise AND or processing when the bitwise AND or processing is performed, the bitwise AND or processing can be performed on each bit in the Morton code component corresponding to the coordinate component, or it can be Perform bitwise AND-OR processing on a certain bit or several bits in the Morton code component corresponding to the coordinate component.
  • the decoder can perform exclusive OR operation on these three Morton code components bit by bit.
  • the obtained binary number is 001110010, and the corresponding Morton code of the current point is 114.
  • Fig. 6 is the fourth schematic diagram of the realization process of the Morton code construction method. As shown in Fig. 6, after the Morton code of the current point is determined according to the Morton code components, that is, after step 204, the decoder measures the Morton code of the point in the point cloud.
  • the frame code construction method may also include the following steps:
  • Step 205 Based on the Morton code of the current point and the point cloud sequence set corresponding to the point cloud, determine the reference point of the current point in the point cloud.
  • the decoder after the decoder determines the Morton code of the current point according to the Morton code components, it can further determine the Morton code of the current point and the point cloud sequence set corresponding to the point cloud. The reference point of the current point.
  • the decoder can obtain all the Morton codes of all points in the point cloud according to the Morton code determination method proposed in the above steps 201 to 204, and then can obtain all Morton codes of all points in the point cloud according to the point cloud. All Morton codes corresponding to all points in the cloud generate a point cloud sequence set.
  • the decoder after obtaining the Morton code of each point, the decoder can sort all Morton codes of all points in ascending order to generate the corresponding point cloud.
  • the point cloud sequence set in the point cloud sequence set stores all Morton codes of all points in the point cloud in ascending order. Therefore, after the decoder determines the Morton code of the current point, it can use the Morton code of the current point to perform query processing in the point cloud sequence set, so that the reference point of the current point can be determined in the point cloud.
  • the decoder when the decoder performs query processing in the point cloud sequence set based on the Morton code of the current point, it can directly traverse the query point cloud sequence set according to the Morton code of the current point. To obtain the reference point of the current point for each Morton code in the current point; according to the Morton code of the current point, the query processing of the point cloud sequence set can be performed according to the preset query algorithm, so as to obtain the reference point of the current point.
  • the decoder when it performs query processing in the point cloud sequence collection based on the Morton code of the current point, it can either use the traversal method used for the point cloud sequence collection or other methods.
  • Step 206 Determine the attribute prediction value of the current point according to the attribute reconstruction value of the reference point.
  • the decoder uses the Morton code of the current point and the point cloud sequence set corresponding to the point cloud to determine the reference point of the current point in the point cloud, it can finally determine the reference point according to the attribute reconstruction value of the reference point The predicted value of the attribute at the current point.
  • the decoder after the decoder obtains the reference point of the current point based on the point cloud sequence set, since the current point has a strong correlation with the reference point, it can directly use the reference point
  • the attribute reconstruction value prediction obtains the attribute prediction value of the current point.
  • the decoder can also determine the prediction residual of the current point by analyzing the code stream; then, the reconstruction value of the current point can be determined according to the attribute prediction value and the prediction residual.
  • the decoder only stores and uses a Morton code look-up table, and can complete the comparison of the Morton code in the cloud.
  • the construction of the Morton code at any point not only reduces the storage consumption, but also reduces the computational complexity, and does not affect the decoding efficiency.
  • the coordinate component is the first coordinate component x of the geometric information (x, y, z) of the current point, then The binary value of x is used as the index to find the corresponding Morton code mx in the Morton code lookup table; if the coordinate component is the second coordinate component y of the geometric information (x, y, z) of the current point, Then the binarized value of y is used as an index to find the corresponding Morton code my in the Morton code lookup table.
  • the binarized value of z is used as the index to find the corresponding Morton code mz in the Morton code lookup table .
  • at least one bit of mx can be executed Binary left shift processing by 2 bits, get the first Morton code component Mx corresponding to x, and perform binary left shift processing for my by one bit to obtain the second Morton code component My corresponding to y, mz remains unchanged, directly set mz Is the third Morton code component Mz corresponding to z.
  • the Morton code of the current point is obtained by performing bitwise exclusive OR processing on the first Morton code component Mx, the second Morton code component My, and the third Morton code component Mz, that is, the first Morton code component Mx, the second Morton code component My, and the third Morton code component Mz perform bitwise AND processing.
  • the Morton code construction method proposed in the above steps 201 to 204 can be applied to the octree geometric coding (decoding) process, and can also be applied to the attribute coding (RAHT) process , It can also be applied to the process of attribute coding (lifting transformation), which is not specifically limited in this application.
  • the embodiment of the application discloses a method for constructing a Morton code.
  • the decoder parses the code stream to determine the geometric information of the current point in the point cloud; determines the index value corresponding to the coordinate component according to the coordinate component in the geometric information; Value and Morton code look-up table to determine the Morton code component corresponding to the coordinate component; determine the Morton code of the current point according to the Morton code component. It can be seen that, in the embodiment of the present application, when constructing the Morton code of the current point, the codec can use the index value corresponding to each coordinate component in the geometric information of the current point to start from the same Morton code.
  • Each Morton code component corresponding to each coordinate component is searched in the frame code look-up table, so that all Morton code components can be used to construct the Morton code of the current point. It can be seen that since the codec can store and use only one Morton code lookup table, it can effectively reduce the computational complexity and storage space, thereby improving the coding and decoding efficiency.
  • the decoder when the decoder performs step 202, that is, when the decoder determines the index value corresponding to the coordinate component based on the coordinate component in the geometric information of the current point, it may also first Perform binary right shift processing for each coordinate component of the current point, and then determine the index value based on the right shifted component.
  • the geometric information of the current point is the spatial three-dimensional coordinates (x, y, z) of the current point
  • the first coordinate component in the geometric information of the current point is x
  • the second coordinate component is y
  • the third coordinate component is z.
  • the decoder determines the geometric information of the current point, when determining each index value corresponding to each coordinate component in sequence according to each coordinate component in the geometric information, it can first follow the preset position Perform binary right shift processing on the first coordinate component, the second coordinate component, and the third coordinate component respectively to obtain the first component after right shift corresponding to the first coordinate component, the second component after right shift corresponding to the second coordinate component, and The third coordinate component corresponds to the third component after the right shift.
  • the first coordinate component, the second coordinate component, and the third coordinate component may have the same bit width.
  • the binary bit width of the first coordinate component is 8
  • the binary bit width of the second coordinate component is 8
  • the binary bit width of the third coordinate component is 8.
  • the preset number of bits is used to determine the bit width when performing shift processing.
  • the value of the preset number of bits may be an integer greater than one.
  • the preset number of bits may be equal to the bit width of the coordinate component.
  • the bit width of the first coordinate component, the second coordinate component, and the third coordinate component are equal to 8, and the preset bit The number is equal to 8;
  • the preset number of bits can also be an integer multiple of the bit width of the coordinate component, for example, the bit width of the first coordinate component, the second coordinate component, and the third coordinate component is equal to 8, and the preset number of bits is equal to 16.
  • the present application does not specifically limit the bit width and the preset number of bits of the coordinate component of the current point.
  • the new binary numbers obtained after the binary numbers with the same bit width are shifted by the same number of bits, the new binary numbers obtained also have the same bit width. Therefore, according to the preset bit width After performing binary right shift processing on the first coordinate component, the second coordinate component, and the third coordinate component with the same bit width, the first component after right shift, the second component after right shift, and the third component after right shift are obtained. It also has the same bit width.
  • the bit widths of the first component after right shift, the second component after right shift, and the third component after right shift are all (m ⁇ n); where m and n are greater than 1. Integer. For example, after performing binary right shift processing on the first coordinate component, the second coordinate component, and the third coordinate component with the same bit width according to the preset number of bits, the first component after the right shift and the second component after the right shift are obtained. And after the right shift, the bit width of the third component is 24 (8 ⁇ 3).
  • the decoder can sequentially determine the n bits corresponding to the first coordinate component according to the highest m bits, the middle (n-2) m bits, and the lowest m bits of the first component after the right shift.
  • the first index value at the same time, the decoder can also determine the n second index corresponding to the second coordinate component according to the highest m bits, the middle (n-2) m bits and the lowest m bits of the second component after right shifting
  • the decoder can also determine the n third index values corresponding to the third coordinate component according to the highest m bits, the middle (n-2) m bits, and the lowest m bits of the third component after the right shift.
  • the first index value corresponding to the first coordinate component may include the highest m bits, the middle (n-2) m bits, and the lowest m bits of the first component after the right shift.
  • the second index value corresponding to the second coordinate component may also include the highest m bits, the middle (n-2) m bits, and the lowest m bits of the second component after the right shift N different index values corresponding in sequence;
  • the third index value corresponding to the third coordinate component may also include the highest m bits, the middle (n-2) m bits, and the lowest m of the second component after the right shift. N different index values corresponding to bits in turn.
  • the decoder after the decoder performs shift processing on each coordinate component of the current point, it can determine multiple index values corresponding to each coordinate component according to a fixed number of bits, that is, decoding
  • the detector can disassemble the binary digits of the shifted component according to a fixed bit width interval, and finally generate n different index values corresponding to each coordinate component for different n digit intervals.
  • the decoder can determine the Morton code corresponding to the coordinate component according to the index value and the Morton code look-up table Weight. Specifically, in this application, when the decoder performs step 203, it can determine the first coordinate according to n first index values, n second index values, n third index values, and Morton code lookup table. N first Morton code components corresponding to the components, n second Morton code components corresponding to the second coordinate components, and n third Morton code components corresponding to the third coordinate components.
  • the decoder can respectively determine the corresponding n index values, Therefore, when using the index value to query the Morton code lookup table, the decoder can query and obtain a first index value corresponding to the highest m bit of the first component after right shifting.
  • the decoder can query to obtain a second Morton code component corresponding to the highest m bits according to a second index value corresponding to the highest m bits of the second component after right shifting; correspondingly; Specifically, the decoder may query and obtain a third Morton code component corresponding to the highest m bits of the third component after the right shift corresponding to a third index value corresponding to the highest m bits.
  • the decoding The device can obtain the n Morton code components corresponding to the highest m bits, the middle (n-2) m bits, and the lowest m bits of each coordinate component after the component is shifted to the right.
  • the decoder determines the nth first index value according to the n first index values, n second index values, n third index values, and Morton code lookup table. After the frame components, n second Morton code components, and n third Morton code components, the Morton code of the current point can be further determined according to the n Morton code components corresponding to each coordinate component.
  • the decoder when the decoder performs the above step 204, that is, when the decoder determines the Morton code of the current point according to the Morton code component, it may firstly determine the Morton code at the current point according to the n first Morton code components, The n second Morton code components and n third Morton code components determine the n interval Morton codes of the current point; then the Morton code of the current point can be determined according to the n interval Morton codes.
  • the decoder since the decoder determines n index values based on the right-shifted components, the Morton code lookup table is queried through n index values to obtain n modifiers. After the frame code components, when using n Morton code components for subsequent processing, the decoder also needs to perform a corresponding left shift processing.
  • the specific number of bits moved by the decoder when performing the left shift processing is related to the number of bits moved during the above right shift processing and the corresponding bit width interval.
  • the binary bit width of the first coordinate component is 8
  • the binary bit width of the second coordinate component is 8
  • the binary bit width of the third coordinate component is 8, the binary right shift is performed.
  • the preset number of bits processed is 16.
  • the decoder determines the geometric information (x, y, z) of the current point, it can perform binary right shift processing on each coordinate component of the geometric information according to the preset number of bits, that is, the first coordinate component x
  • the binary number, the binary number of the second coordinate component y, and the binary number of the third coordinate component z execute 16-bit right shift processing to obtain the first component corresponding to the first coordinate component x and the second coordinate component y corresponding to the right shift
  • the second component after the right shift and the third coordinate component z correspond to the third component after the right shift.
  • bit widths of the first component after right shift corresponding to x, the second component after right shift corresponding to y, and the third component after right shift corresponding to z are all At this time, it can be considered that m is 8 and n is 3.
  • the decoder can determine a first index value corresponding to the first coordinate component x according to the highest 8 bits of the first component after the right shift, and then use the first index value to query the model.
  • the frame code look-up table is used to obtain a first Morton code component corresponding to the highest 8 bits.
  • the decoder may first use the first index value to query the Morton code lookup table to obtain a Morton code mx corresponding to a corresponding index value, and then the Morton code mx corresponding to the index value The binary left shift processing of 2 bits is performed to obtain a first Morton code component Mx of the first coordinate component x corresponding to the first index value.
  • the decoder can also determine a second index value corresponding to the second coordinate component y according to the highest 8 bits of the second component after the right shift, and then use the second index value to query the Morton code Look up the table to obtain a second Morton code component corresponding to the highest 8 bits.
  • the decoder may first use the second index value to query the Morton code lookup table to obtain a Morton code my corresponding to a corresponding index value, and then the Morton code my corresponding to the index value. Execute the binary shift processing by one bit to the left, so as to obtain a second Morton code component My corresponding to the second index value of the second coordinate component y.
  • the decoder can also determine a third index value corresponding to the third coordinate component z according to the highest 8 bits of the third component after the right shift, and then use the third index value to query the Morton code Look up the table to obtain a third Morton code component corresponding to the highest 8 bits.
  • the decoder can first use the third index value to query the Morton code lookup table to obtain the Morton code mz corresponding to a corresponding index value, and then directly according to the Morton code corresponding to the index value.
  • the code mz generates a third Morton code component Mz corresponding to the third index value of the third coordinate component z.
  • the decoder determines a first Morton code component, a second Morton code component, and a third Morton code component corresponding to the highest 8-bit bit width interval. , Based on these three Morton code components, an interval Morton code corresponding to the highest 8-bit bit width interval can be further generated.
  • the decoder may perform bit interleaving processing on the three Morton code components corresponding to the highest 8-bit bit width interval in the order of x, y, and z to obtain the interleaved Binary number, where the bit width of the interleaved binary number is 24, and then the interleaved binary number is shifted to the left by 48 bits (16 ⁇ 3), so as to obtain an interval corresponding to the highest 8-bit bit width interval Pause.
  • the decoder can continue to determine the three index values corresponding to the middle (3-2) 8-bit bit width intervals of the three coordinate components in the above-mentioned manner, and then based on the The frame code look-up table obtains three Morton code components corresponding to the middle 8-bit bit width interval. Finally, these three Morton code components can be used to obtain an interval corresponding to the middle 8-bit bit width interval. Pause.
  • the decoder may perform bit interleaving processing on the three Morton code components corresponding to the middle 8-bit bit width interval in the order of x, y, and z to obtain the interleaved Binary number, where the bit width of the interleaved binary number is 24, and then the interleaved binary number is shifted to the left by 24 bits (8 ⁇ 3) to obtain an interval corresponding to the middle 8-bit bit width interval Pause.
  • the decoder can also continue to determine the three index values corresponding to the lowest 8-bit bit width interval of the three coordinate components in the above-mentioned manner, and then obtain the corresponding index values based on the Morton code lookup table.
  • the three Morton code components corresponding to the lowest 8-bit bit width interval can finally be used to obtain an interval Morton code corresponding to the lowest 8-bit bit width interval using these three Morton code components.
  • the decoder may perform bit interleaving processing on the three Morton code components corresponding to the lowest 8-bit bit width interval in the order of x, y, and z to obtain the interleaved Binary numbers, where the bit width of the interleaved binary number is 24, and then the interleaved binary number is directly determined as an interval Morton code corresponding to the lowest 8-bit bit width interval.
  • the decoder after the decoder determines the three interval Morton codes corresponding to all the three bit-width intervals constituting 24 bits, it can perform one-by-one on these three interval Morton codes. Bit XOR processing, and determine the value after XOR processing as the Morton code of the current point.
  • int64_t represents the data type of a 64-bit integer
  • int32_t represents the data type of a 32-bit integer
  • (x, y, z) is the input coordinates of a point in the point cloud, that is, geometric information
  • kMortonCode256[] is obtaining Morton code
  • the only lookup table used at the time is the Morton code lookup table.
  • the variable mortonCode is the Morton code of the input coordinates (x, y, z).
  • bit width corresponding to the first coordinate component, the second coordinate component, and the third coordinate component of the current point can be any integer greater than 0, which is not specifically limited in this application.
  • the preset number of bits for the decoder to perform the right shift processing may be any integer greater than 0, which is not specifically limited in the present application.
  • the bit width of the coordinate component after the right shift is (m ⁇ n), and can be broken down into n m-bit bit width intervals, where m and n can be greater than It is an integer of 1, which is not specifically limited in this application.
  • the embodiment of the application discloses a method for constructing a Morton code.
  • the decoder parses the code stream to determine the geometric information of the current point in the point cloud; determines the index value corresponding to the coordinate component according to the coordinate component in the geometric information; Value and Morton code look-up table to determine the Morton code component corresponding to the coordinate component; determine the Morton code of the current point according to the Morton code component. It can be seen that, in the embodiment of the present application, when constructing the Morton code of the current point, the codec can use the index value corresponding to each coordinate component in the geometric information of the current point to start from the same Morton code.
  • Each Morton code component corresponding to each coordinate component is searched in the frame code look-up table, so that all Morton code components can be used to construct the Morton code of the current point. It can be seen that since the codec can store and use only one Morton code lookup table, it can effectively reduce the computational complexity and storage space, thereby improving the coding and decoding efficiency.
  • FIG. 7 is a schematic diagram of the composition structure of the encoder.
  • the encoder 300 proposed in the embodiment of the present application may include a first determination. Part 301.
  • the first determining part 301 is configured to determine the geometric information of the current point in the point cloud; determine the index value corresponding to the coordinate component according to the coordinate component in the geometric information; according to the index value and Morton code Look up a table to determine the Morton code component corresponding to the coordinate component; determine the Morton code of the current point according to the Morton code component.
  • FIG. 8 is a second schematic diagram of the structure of the encoder.
  • the encoder 300 proposed in the embodiment of the present application may further include a first processor 302, and a first memory 303 storing executable instructions of the first processor 302. , A first communication interface 304, and a first bus 305 for connecting the first processor 302, the first memory 303, and the first communication interface 304.
  • the above-mentioned first processor 302 is configured to determine the geometric information of the current point in the point cloud; determine the index value corresponding to the coordinate component according to the coordinate component in the geometric information Determine the Morton code component corresponding to the coordinate component according to the index value and the Morton code look-up table; determine the Morton code of the current point according to the Morton code component.
  • FIG. 9 is a schematic diagram of the composition structure of a decoder.
  • the decoder 400 proposed in this embodiment of the present application may include a decoding part 401, a second determining part 402,
  • the decoding part 401 is configured to parse a code stream
  • the second determining part 402 is configured to determine the geometric information of the current point in the point cloud; determine the index value corresponding to the coordinate component according to the coordinate component in the geometric information; according to the index value and Morton code Look up a table to determine the Morton code component corresponding to the coordinate component; determine the Morton code of the current point according to the Morton code component. .
  • FIG. 10 is a second schematic diagram of the structure of the decoder.
  • the decoder 400 proposed in the embodiment of the present application may further include a second processor 403, and a second memory 404 storing executable instructions of the second processor 403. , A second communication interface 405, and a second bus 406 for connecting the second processor 403, the first memory 404, and the second communication interface 405.
  • the above-mentioned second processor 403 is configured to parse the code stream to determine the geometric information of the current point in the point cloud; determine the coordinate component according to the coordinate component in the geometric information Corresponding index value; determine the Morton code component corresponding to the coordinate component according to the index value and Morton code look-up table; determine the Morton code of the current point according to the Morton code component.
  • the encoder 300 may be a computing device having one or more chips.
  • a unit that is implemented as an integrated circuit on a chip and has the above-mentioned functions has similar functions, similar connections and data exchanges to the corresponding units in FIG. 1.
  • the decoder 400 may be a computing device having one or more chips.
  • a unit that is implemented as an integrated circuit on a chip and has the above-mentioned functions has similar functions, similar connections and data exchanges to the corresponding units in FIG. 1.
  • the functional modules in this embodiment may be integrated into one processing unit, or 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 correct
  • the part that the prior art contributes 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 be a personal computer).
  • a computer, a server, or a network device, etc.) or a processor executes all or part of the steps of the method in this embodiment.
  • the aforementioned storage media include: U disk, mobile hard disk, ROM, RAM, magnetic disk or optical disk and other media that can store program codes.
  • the embodiment of the present application provides an encoder and a decoder.
  • the encoder determines the geometric information of the current point in the point cloud; determines the index value corresponding to the coordinate component according to the coordinate component in the geometric information; according to the index value and Morton code Look up the table to determine the Morton code component corresponding to the coordinate component; determine the Morton code of the current point according to the Morton code component.
  • the decoder parses the code stream to determine the geometric information of the current point in the point cloud; determines the index value corresponding to the coordinate component according to the coordinate component in the geometric information; determines the Morton corresponding to the coordinate component according to the index value and Morton code lookup table Code component: Determine the Morton code of the current point according to the Morton code component.
  • the codec when constructing the Morton code of the current point, can use the index value corresponding to each coordinate component in the geometric information of the current point to start from the same Morton code.
  • Each Morton code component corresponding to each coordinate component is searched in the frame code look-up table, so that all Morton code components can be used to construct the Morton code of the current point. It can be seen that since the codec can store and use only one Morton code lookup table, it can effectively reduce the computational complexity and storage space, thereby improving the coding and decoding efficiency.
  • the embodiments of the present application provide a computer-readable storage medium and a computer-readable storage medium, on which a program is stored, and when the program is executed by a processor, the method as described in the foregoing embodiment is implemented.
  • the program instructions corresponding to a Morton code construction method in this embodiment can be stored on storage media such as optical disks, hard disks, USB flash drives, etc.
  • storage media such as optical disks, hard disks, USB flash drives, etc.
  • the method further includes the following steps:
  • this application can be provided as methods, systems, or computer program products. Therefore, this application may adopt the form of hardware embodiments, software embodiments, or embodiments combining software and hardware. Moreover, this application may adopt the form of a computer program product implemented on one or more computer-usable storage media (including but not limited to disk storage, optical storage, etc.) containing computer-usable program codes.
  • These computer program instructions can also be stored in a computer-readable memory that can direct a computer or other programmable data processing equipment to work in a specific manner, so that the instructions stored in the computer-readable memory produce an article of manufacture including the instruction device.
  • the device realizes the functions specified in one or more processes in the schematic diagram and/or one block or more in the block diagram.
  • These computer program instructions can also be loaded on a computer or other programmable data processing equipment, so that a series of operation steps are executed on the computer or other programmable equipment to produce computer-implemented processing, so as to execute on the computer or other programmable equipment.
  • the instructions provide steps for implementing functions specified in one or more processes in the schematic diagram and/or one block or more in the block diagram.
  • the embodiment of the application provides a Morton code construction method, an encoder, a decoder, and a storage medium.
  • the encoder determines the geometric information of the current point in the point cloud; and determines the corresponding coordinate component according to the coordinate component in the geometric information.
  • Index value Determine the Morton code component corresponding to the coordinate component according to the index value and Morton code look-up table; Determine the Morton code of the current point according to the Morton code component.
  • the decoder parses the code stream to determine the geometric information of the current point in the point cloud; determines the index value corresponding to the coordinate component according to the coordinate component in the geometric information; determines the Morton corresponding to the coordinate component according to the index value and Morton code lookup table
  • Code component Determine the Morton code of the current point according to the Morton code component. It can be seen that, in the embodiment of the present application, when constructing the Morton code of the current point, the codec can use the index value corresponding to each coordinate component in the geometric information of the current point to start from the same Morton code. Each Morton code component corresponding to each coordinate component is searched in the frame code look-up table, so that all Morton code components can be used to construct the Morton code of the current point. It can be seen that since the codec can store and use only one Morton code lookup table, it can effectively reduce the computational complexity and storage space, thereby improving the coding and decoding efficiency.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

本申请实施例提供了一种莫顿码的构建方法、编码器、解码器及存储介质,编码器确定点云中的当前点的几何信息;根据几何信息中的坐标分量,确定坐标分量对应的索引值;根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量;根据莫顿码分量确定当前点的莫顿码。解码器解析码流,确定点云中的当前点的几何信息;根据几何信息中的坐标分量,确定坐标分量对应的索引值;根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量;根据莫顿码分量确定当前点的莫顿码。

Description

莫顿码的构建方法、编码器、解码器、及存储介质
本申请基于申请号为62/958,589、申请日为2020年1月8日、申请名称为“POINT CLOUD ENCODING AND DECODING METHOD AND APPARATUS”的在先美国临时专利申请提出,并要求该在先美国临时专利申请的优先权,该在先美国临时专利申请的全部内容在此引入本申请作为参考。
技术领域
本申请实施例涉及通信领域中的编解码技术,尤其涉及一种莫顿码的构建方法、编码器、解码器及存储介质。
背景技术
在基于几何的点云压缩(Geometry-based Point Cloud Compression,G-PCC)编码器框架中,点云的几何信息和每个点云所对应的属性信息是分开进行编码的。几何编码完成后,对几何信息进行重建,而属性信息的编码将依赖于重建的几何信息。
目前,在八叉树的几何编解码和属性信息的编解码过程中,均需要使用点云中的任意一点的莫顿码。然而,利用多个查找表构建莫顿码的处理过程,大大增加计算的复杂度和存储空间,进而降低了编解码效率。
发明内容
本申请实施例提供了一种莫顿码的构建方法、编码器、解码器及存储介质,能够有效地减小计算的复杂度和存储空间,从而提高了编解码效率。
本申请实施例的技术方案可以如下实现:
第一方面,本申请实施例提供了一种莫顿码的构建方法,应用于编码器中,所述方法包括:
确定点云中的当前点的几何信息;
根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;
根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;
根据所述莫顿码分量确定所述当前点的莫顿码。
第二方面,本申请实施例还提供了一种莫顿码的构建方法,应用于解码器中,所述方法包括:
解析码流,确定点云中的当前点的几何信息;
根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;
根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;
根据所述莫顿码分量确定所述当前点的莫顿码。
第三方面,本申请实施例还提供了一种编码器,所述编码器包括:第一确定部分,
所述第一确定部分,配置为确定点云中的当前点的几何信息;根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;根据所述莫顿码分量确定所述当前点的莫顿码。
第四方面,本申请实施例提供了一种编码器,所述编码器包括第一处理器、存储有所述第一处理器可执行指令的第一存储器,当所述指令被执行时,所述第一处理器执行时实现如权上所述的莫顿码的构建方法。
第五方面,本申请实施例提供了一种解码器,所述解码器包括:解码部分,第二确定部分,
所述解码部分,配置为解析码流;
所述第二确定部分,配置为确定点云中的当前点的几何信息;根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;根据所述莫顿码分量确定所述当前点的莫顿码。
第六方面,本申请实施例提供了一种解码器,所述解码器包括第二处理器、存储有所述第二处理器 可执行指令的第二存储器,当所述指令被执行时,所述第二处理器执行时实现如权上所述的莫顿码的构建方法。
第七方面,本申请实施例提供了一种计算机存储介质,其上存储有程序,应用于编码器中,所述程序被第一处理器执行时,实现如上所述的莫顿码的构建方法。
第八方面,本申请实施例提供了一种计算机存储介质,其上存储有程序,应用于解码器中,所述程序被第二处理器执行时,实现如上所述的莫顿码的构建方法。
本申请实施例公开了一种莫顿码的构建方法、编码器、解码器及计算机存储介质,编码器确定点云中的当前点的几何信息;根据几何信息中的坐标分量,确定坐标分量对应的索引值;根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量;根据莫顿码分量确定当前点的莫顿码。解码器解析码流,确定点云中的当前点的几何信息;根据几何信息中的坐标分量,确定坐标分量对应的索引值;根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量;根据莫顿码分量确定当前点的莫顿码。由此可见,在本申请的实施例中,在进行当前点的莫顿码的构建时,编解码器可以利用当前点的几何信息中的每一个坐标分量对应的索引值,分别从同一个莫顿码查找表中查找获得每一个坐标分量对应的每一个莫顿码分量,从而可以利用全部莫顿码分量构建当前点的莫顿码。可见,由于编解码器可以只存储和使用一个莫顿码查找表,因此能够有效地减小计算的复杂度和存储空间,从而提高了编解码效率。
附图说明
图1为G-PCC编码器系统100的组成结构图;
图2为G-PCC解码器系统200的组成结构图;
图3为莫顿码的构建方法的实现流程示意图一;
图4为莫顿码的构建方法的实现流程示意图二;
图5为莫顿码的构建方法的实现流程示意图三;
图6为莫顿码的构建方法的实现流程示意图四;
图7为编码器的组成结构示意图一;
图8为编码器的组成结构示意图二;
图9为解码器的组成结构示意图一;
图10为解码器的组成结构示意图二。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
在本申请实施例中,在点云G-PCC编码器框架中,将输入三维图像模型的点云进行条带(slice)划分后,对每一个slice进行独立编码。
在G-PCC编码的流程中,针对待编码的点云数据,首先通过slice划分,将点云数据划分为多个slice。在每一个slice中,点云的几何信息和每个点云所对应的属性信息是分开进行编码的。在几何编码过程中,对几何信息进行坐标转换,使点云全都包含在一个bounding box(包围盒)中,然后再进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点云的几何信息相同,于是在基于参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化过程。接着对bounding box进行八叉树划分。在基于八叉树的几何信息编码流程中,将包围盒八等分为8个子立方体,对非空的(包含点云中的点)的子立方体继续进行八等分,直到划分得到的叶子结点为1×1×1的单位立方体时停止划分,对叶子结点中的点进行算术编码,生成二进制的几何比特流,即几何码流。在基于三角面片集(triangle soup,trisoup)的几何信息编码过程中,同样也要先进行八叉树划分,但区别于基于八叉树的几何信息编码,该trisoup不需要将点云逐级划分到边长为1x1x1的单位立方体,而是划分到block(子块)边长为W时停止划分,基于每个block种点云的分布所形成的表面,得到该表面与block的十二条边所产生的至多十二个vertex(交点),对vertex进行算术编码(基于交点进行表面拟合),生成二进制的几何比特流,即几何码流。Vertex还用于在几何重建的过程的实现,而重建的几何信息在对点云的属性编码时使用。
在属性编码过程中,几何编码完成,对几何信息进行重建后,进行颜色转换,将颜色信息(即属性信息)从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色,使得未 编码的属性信息与重建的几何信息对应起来。属性编码主要针对颜色信息进行,在颜色信息编码过程中,主要有两种变换方法,一是依赖于细节层次(Level of Detail,LOD)划分的基于距离的提升变换,二是直接进行区域自适应分层变换(Regionadaptive Hierarchaltransform,RAHT)的变换,这两种方法都会将颜色信息从空间域转换到频域,通过变换得到高频系数和低频系数,最后对系数进行量化(即量化系数),最后,将经过八叉树划分及表面拟合的几何编码数据与量化系数处理属性编码数据进行slice合成后,依次编码每个block的vertex坐标(即算数编码),生成二进制的属性比特流,即属性码流。
在G-PCC解码的流程中,针对所获取的二进制码流,首先对二进制码流中的几何比特流和属性比特流分别进行独立解码。在对几何比特流的解码时,通过算术解码-八叉树合成-表面拟合-重建几何-逆坐标转换,得到点云的几何信息;在对属性比特流的解码时,通过算术解码-反量化-基于LOD的提升逆变换或者基于RAHT的逆变换-逆颜色转换,得到点云的属性信息,基于几何信息和属性信息还原待编码的点云数据的三维图像模型。
莫顿编码也叫z-order code,这是因为其编码顺序按照空间z序。在G-PCC编码器300和解码器400中,在如下过程中启动对莫顿码的获取:
(1)八叉树几何编码(解码)
在八叉树几何编码(解码)过程中,首先基于点云的量化的几何坐标计算八叉树中子节点的莫顿码。为了预测某一节点的占用信息,基于获得的莫顿码执行邻居搜索处理。
(2)属性编码(RAHT)
在目前的G-PCC框架中,在属性编码之前已在编码器侧获得重构的几何信息(即,点云的几何坐标)。为了执行RAHT,首先计算对应于重构的点云的莫顿码。然后,对空间中成对的相邻节点的属性(例如颜色)执行RAHT变换,其中成对的相邻节点的关系基于莫顿码确定。
具体来说,在RAHT变换之前,已经得到了点云的几何坐标信息。利用点的坐标信息可以得到对应于点云中每一点的莫顿码。
(3)属性编码(提升变换)
当使用提升变换处理属性信息时,首先计算与重构的点云中的每个点对应的莫顿码。然后,为了将点云结构化为LOD(细节层次),点云中的所有点根据其莫顿码的值以升序来排序。可根据该顺序获得点索引的阵列。依次遍历阵列中存储的点索引,直到访问了所有点并将点分配给某些LOD。最后,生成的LOD可用于属性预测。
具体的计算莫顿码的具体方法描述如下所示,对于点云中的一个点,具有三元组变量(s,t,u)和位精度i的莫顿码m如下公式表示:
m=∑ i2 3i+2[s&2 i]+2 3i+1[t&2 i]+2 3i[u&2 i]        (1)
更具体地,通过对分量s、t和u的二值化值进行交错来获得莫顿码。例如,表1给出了该过程的示例,其中每个分量的位精度为2。
表1、基于(s,t,u)构造3D莫顿码m
Figure PCTCN2021070964-appb-000001
对于G-PCC,三元组变量(s,t,u)可以是点云中某一点的三维坐标(x,y,z)。三个查找莫顿码查找表Tx、Ty和Tz用于构造莫顿码,其中每个表对应于一个分量(x、y或z,例如Tx对应x,Ty对应y,Tz对应z)。具体地,x的二值化值可以作为莫顿码查找表x中查找所需条目Mx的索引。y的二值化值可以作为莫顿码查找表y中查找所需条目My的索引。z的二值化值可以作为莫顿码查找表z中查找所需条目Mz的索引。最后,通过对Mx、My和Mz执行逐位或(OR)处理来获得该点的莫顿码。
其中,在G-PCC中,点云中的点坐标的最大几何精度为24位。
目前,G-PCC(基于图形的点云的编码)中有三个模块在点云的编码过程中使用莫顿(Morton)码,其中点云的编码包括八叉树几何编码/解码、使用RAHT(区域自适应层次变换)的属性编码以及使用 提升变换的属性编码。然而,在G-PCC编解码器的实现时,使用3个大的查找表来获取莫顿码,会导致存储消耗大并导致计算复杂度高。
也就是说,在八叉树的几何编解码和属性信息的编解码过程中,均需要使用点云中的任意一点的莫顿码。然而,利用多个查找表构建莫顿码的处理过程,大大增加计算的复杂度和存储空间,进而降低了编解码效率。
为了克服上述缺陷,在本申请的实施例中,在进行当前点的莫顿码的构建时,编解码器可以利用当前点的几何信息中的每一个坐标分量对应的索引值,分别从同一个莫顿码查找表中查找获得每一个坐标分量对应的每一个莫顿码分量,从而可以利用全部莫顿码分量构建当前点的莫顿码。可见,由于编解码器可以只存储和使用一个莫顿码查找表,因此能够有效地减小计算的复杂度和存储空间,从而提高了编解码效率。
图1为G-PCC编码器系统100的组成结构图,如图1所示,G-PCC编码器系统100包括坐标变换单元101、体素化单元102、八叉树分析单元103、表面近似分析单元104、几何重构单元105、颜色变换单元106、属性传递单元107、RAHT单元108、LoD生成单元109、提升单元110、系数量化单元111、算术编码单元112。其中,算术编码单元112可实现对报头信息和量化系数或残差的编码,作为CABAC或旁路编码。首先,输入点云由坐标变换单元101和体素化单元102进行预处理,坐标变换单元101将输入点云从世界坐标系变换为内部坐标系,体素化单元102剪掉所有进入边界框的点。预处理后的点云由八叉树分析单元103划分为块或体素,在该过程中生成占用码,且该占用码通过算术编码单元112来编码。表面近似分析单元104是已知trisoup的TMC1的一个步骤,其通过顶点和segind表示块内的几何信息。几何重构单元105执行将在属性编码时使用的点云的几何信息的重构。颜色变换单元106是将颜色从RGB颜色空间变换为YUV颜色空间或YCoCg颜色空间的可选单元。重构的点云由属性传递单元107进行重新着色。RAHT单元108和LoD生成单元109是属性编码的两种典型方式。RAHT单元108通过小波变换将属性值变换为系数,系数通过系数量化单元111来量化,量化的系数通过算术编码单元112来编码。LoD生成单元109将点变换为多个细节层次,并预测LoD之间或LoD内部的属性值以获得预测点和预测因素之间的残差,残差通过系数量化单元111来量化,量化的残差通过算术编码单元112来编码。
图2为G-PCC解码器系统200的组成结构图,如图2所示,G-PCC解码器系统200包括算术解码单元201、八叉树合成单元202、表面近似合成单元203、几何重构单元204、逆坐标变换单元205,逆属性量化单元206、RAHT单元207、LoD生成单元208、逆提升单元209、逆颜色变换单元210。算术解码单元201可实现对报头信息和量化系数或残差的解码,作为CABAC或旁路编码。几何比特流通过算术解码单元201来解码。八叉树合成单元202产生块或体素的信息,表面近似合成单元203是TMC1的解码步骤,其利用三角形重构表面并在块内的三角形上重新采样。几何重构单元204重构点云的几何信息,逆坐标变换单元205将重构的点云从内部坐标系变换为世界坐标系。属性比特流通过算术解码单元201来解码。然后,由算术解码单元201产生的量化系数或残差由逆属性量化单元206进行逆量化。根据编码器,还存在两种典型的方式来对系数或残差进行解码。系数由RAHT单元207转换为属性值。残差由LoD生成单元208和逆提升单元209转换为属性值。逆颜色转换单元210是可选单元,具体取决于颜色空间是否要进行变换。
本申请所提出的一种莫顿码的构建方法,可以对G-PCC编码器系统100和G-PCC解码器系统200同时作用,该莫顿码的构建方法的流程、框架与算法在编码端与解码端完全一样。
G-PCC编码器系统100可以是具有处理器和存储介质的计算设备,该存储介质记录包括上述功能的编码程序。当处理器读取并执行编码程序时,编码器100读取输入点云并生成对应的比特流。
G-PCC编码器系统100可以是具有一个或多个芯片的计算设备。在芯片上实现为集成电路并具备上述功能的单元,具有与图1中的对应单元相似的功能、相似的连接和数据交换。
G-PCC解码器系统200可以是具有处理器和存储介质的计算设备,该存储介质记录包括上述功能的解码程序。当处理器读取并执行编码程序时,解码器200读取输入点云并生成对应的比特流。
G-PCC解码器系统200可以是具有一个或多个芯片的计算设备。在芯片上实现为集成电路并具备上述功能的单元,具有与图2中的对应单元相似的功能、相似的连接和数据交换。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请一实施例提供了一种莫顿码的构建方法,该方法应用于编码器中,图3为莫顿码的构建方法的实现流程示意图一,如图3所示,编码器对点云中点的莫顿码的构建方法可以包括以下步骤:
步骤101、确定点云中的当前点的几何信息。
在本申请的实施例中,编码器可以先确定点云中的当前点的几何信息。
需要说明的是,在本申请的实施例中,在对点云进行编码处理时,点云的几何信息和点云所对应的 属性信息是分开进行编码的。其中,在几何信息编码完成后,对几何信息进行重建,而属性信息的编码将依赖于重建的几何信息。
具体地,属性信息的编码主要是针对颜色信息的编码。首先,将颜色信息从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色,使得未编码的属性信息与重建的几何信息对应起来。接下来进行点云的编码,首先基于莫顿码对点云进行重排序,生成可以用于预测点云的属性信息的点云顺序。
进一步地,在本申请的实施例中,在对点云的几何信息进行编码之后,编码器可以利用点云中每一个点的几何信息,确定出每一个点的莫顿码。在得到每个点的莫顿码之后,编码器便可以将点云中的所有点,按照由小至大的顺序,对全部点的全部莫顿码进行排序,生成点云对应的点云序列集合。其中,点云序列集合中存储有点云中的全部点的全部莫顿码。
需要说明的是,在本申请的实施例中,编码器对点云的属性信息进行编码时,可以按照莫顿码由小到大的顺序依次对点云的全部点进行点云的编码。
可以理解的是,在本申请的实施例中,当前点可以为点云中的任意一个点,在对当前点进行点云的编码时,小于当前点的莫顿码的其他莫顿码所对应的点云中的其他点已经完成了点云的编码,生成对应的属性重建值。
进一步地,在本申请的实施例中,编码器在对当前点进行点云的编码时,需要先对当前点的莫顿码进行确定。具体地,在本申请中,编码器可以利用当前点的几何信息,对当前点的莫顿码进行确定,因此,编码器需要先确定点云中的当前点的几何信息。
步骤102、根据几何信息中的坐标分量,确定坐标分量对应的索引值。
在本申请的实施例中,编码器在确定点云中的当前点的几何信息之后,便可以进一步根据几何信息中的坐标分量,确定出每一个坐标分量所对应的每一个索引值。其中,一个坐标分量对应有一个索引值。
需要说明的是,在本申请的实施例中,当前点的坐标分量所对应的索引值可以用于对该坐标分量的莫顿码分量进行查询。
可以理解的是,在本申请的实施例中,对应点云中的任意一个点,对应的几何信息均可以通过多个坐标分量构成。具体地,当前点的几何信息中的坐标分量可以包括第一坐标分量、第二坐标分量以及第三坐标分量。
示例性的,在本申请中,当前点的几何信息可以为当前点的空间三维坐标(x,y,z),即当前点的几何信息可以表示为(x,y,z),其中,x为第一坐标分量,y为第二坐标分量,z为第三坐标分量。
进一步地,在本申请中,编码器在根据当前点的几何信息中的一个坐标分量来确定对应的一个索引值时,可以直接对该一个坐标分量进行二进制的计算,并将该一个坐标分量的二进制数作为对应的一个索引值。
例如,当前点的几何信息为(2,3,4),即当前点的第一坐标分量为2,第二坐标分量为3,第三坐标分量为4。那么,在分别对当前点的每一个坐标分量进行二进制计算之后,可以确定第一坐标分量对应的第一索引值为10,第二坐标分量对应的第二索引值为11,第三坐标分量对应的第三索引值为100。
步骤103、根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量。
在本申请的实施例中,编码器在根据几何信息中的坐标分量,确定坐标分量对应的索引值之后,便可以按照索引值,进一步在莫顿码查找表进行查询处理,最终可以确定坐标分量对应的莫顿码分量。
可以理解的是,在本申请的实施例中,莫顿码查找表可以用于确定当前点的莫顿码分量,即通过莫顿码查找表可以获得当前点的每一个坐标分量所对应的每一个莫顿码分量。
进一步地,在本申请的实施例中,编码器在根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量时,可以先基于莫顿码查找表,确定索引值对应的莫顿码;然后可以进一步对索引值对应的莫顿码进行移位处理,最终可以获得坐标分量对应的莫顿码分量。
需要说明的是,在本申请的实施例中,基于索引值查找莫顿码查找表获得的坐标分量对应的索引值对应的莫顿码可以为二进制的形式。具体地,在莫顿码查找表中,索引值对应的莫顿码可以为对索引值的至少一位进行补位处理后确定的。
可以理解的是,在本申请的实施例中,对于当前点的几何信息中的任意一个坐标分量,编码器都可以按照该坐标分量的索引值从莫顿码查找表中查询获得该坐标分量的对应的索引值对应的莫顿码。
示例性的,在本申请中,表2为莫顿码查找表,如表2所示,对于不同的索引值,可以利用莫顿码查找表确定出对应的索引值对应的莫顿码,该索引值对应的莫顿码可以为基于索引值的至少一位进行补位处理后得到的。
表2
索引值 索引值对应的莫顿码
00 000000000
01 000000001
10 000001000
11 000001001
100 001000000
101 001000001
111 001001001
示例性,在本申请中,如果当前点的几何信息为(2,3,4),即当前点的第一坐标分量为2,第二坐标分量为3,第三坐标分量为4。相应地,当前点的第一坐标分量对应的第一索引值为10,第二坐标分量对应的第二索引值为11,第三坐标分量对应的第三索引值为100。通过上述表1,可以按照第一索引值、第二索引值以及第三索引值分别进行查询处理,获得第一坐标分量对应的索引值对应的莫顿码为000001000,第二坐标分量对应的索引值对应的莫顿码为000001001,第三坐标分量对应的索引值对应的莫顿码为001000000。
进一步地,在本申请的实施例中,编码器在基于莫顿码查找表获得每一个坐标分量对应的索引值对应的莫顿码之后,可以依次对每一个莫顿码分量进行移位处理,最终获得每一个坐标分量对应的每一个莫顿码分量。
需要说明的是,在本申请的实施例中,编码器在对索引值对应的莫顿码进行移位处理,获得坐标分量对应的莫顿码分量时,可以对索引值对应的莫顿码执行二进制左移K位处理,获得移位后莫顿码;然后直接将移位后莫顿码确定为莫顿码分量。即将所引致对应的莫顿码左移K位之后,便可以获得对应的莫顿码分量。其中,K为大于或者等于0的整数,如果K等于0,则不进行移位处理。
可以理解的是,在本申请的实施例中,对于不同的坐标分量,编码器执行移位处理的方式可以是不同的,例如,如果按照x、y、z的顺序交叉构建莫顿码,则对于坐标分量x,编码器可以对对应的索引值对应的莫顿码的至少一位执行二进制左移2位的处理,对于坐标分量y,编码器可以对对应的索引值对应的莫顿码的至少一位执行二进制左移一位的处理,对于坐标分量z,编码器可以不对对应的索引值对应的莫顿码执行移位处理。
需要说明的是,在本申请的实施例中,在对索引值对应的莫顿码执行二进制左移K位处理时,可以选择对该莫顿码的至少一位进行左移处理,也可以对该莫顿码的部分位数进行左移处理,对此本申请不进行具体限定。
例如,如果按照x、y、z的顺序交叉构建莫顿码,当前点的几何信息为(2,3,4),通过上述表2,可以查询获得第一坐标分量x对应的索引值对应的莫顿码mx为000001000,第二坐标分量y对应的索引值对应的莫顿码my为000001001,第三坐标分量z对应的索引值对应的莫顿码mz为001000000。那么,编码器可以对mx执行二进制左移2位处理,确定移位后莫顿码为000100000,即确定对应的莫顿码分量Mx为000100000(32);编码器可以对my执行二进制左移一位处理,确定移位后莫顿码为000010010,即确定对应的莫顿码分量My为000010010(18);mz保持不变,即不对mz执行移位处理,而是直接确定对应的莫顿码分量Mz为001000000(64)。
也就是说,在本申请的实施例中,对于当前点的不同的坐标分量,可以使用相同的一个莫顿码查找表获得对应的索引值对应的莫顿码,然后按照不同的坐标分量,对不同的索引值对应的莫顿码执行不同的移位处理,最终便可以确定出每一个坐标分量对应的莫顿码分量。
示例性的,在本申请中,如果当前点的几何信息(x,y,z)中的坐标分量包括第一坐标分量x、第二坐标分量y以及第三坐标分量z。那么,对于几何信息(x,y,z)中的第一坐标分量x,确定第一坐标分量x对应的第一索引值;然后可以在莫顿码查找表中查询获得第一索引值对应的莫顿码mx;接着,可以将第一索引值对应的莫顿码mx执行二进制左移2位处理,从而可以获得第一坐标分量x对应的第一莫顿码分量Mx,即将mx的移位后莫顿码确定为第一莫顿码分量Mx。对于几何信息(x,y,z)中的第二坐标分量y,确定第二坐标分量y对应的第二索引值;然后可以在莫顿码查找表中查询获得第二坐标分量y对应的索引值对应的莫顿码my;接着,可以将第二坐标分量y对应的索引值对应的莫顿码my执行二进制左移一位处理,从而可以获得第二坐标分量y对应的第二莫顿码分量My,即将my的移位后莫顿码确定为第二莫顿码分量My。对于几何信息(x,y,z)中的第三坐标分量z,确定第三坐标分量z对应的第三索引值;然后可以在莫顿码查找表中查询获得第三索引值z对应的索引值对应的莫顿码mz;接着可以直接根据第三索引值z对应的索引值对应的莫顿码mz确定第三坐标分量z对应的第三莫顿码分量Mz,即直接将mz确定为第三莫顿码分量Mz。
由此可见,在本申请中,编码器通过同一个莫顿码查找表,便可以依次确定出当前点的不同坐标分量对应的莫顿妈分量,因此在莫顿码的确定过程中,编码器仅仅需要存储和查询一个莫顿码查找表,可以大大减少存储空间,降低计算的复杂度。
步骤104、根据莫顿码分量确定当前点的莫顿码。
在本申请的实施例中,编码器在按照索引值,进一步在莫顿码查找表中查询坐标分量对应的莫顿码分量之后,可以根据莫顿码分量进一步确定当前点的莫顿码。
进一步地,在本申请的实施例中,由于当前点的莫顿码分量为二进制的形式,因此在编码器直接将每一个坐标分量的移位后莫顿码确定为对应的莫顿码分量之后,编码器在根据莫顿码分量确定当前点的莫顿码时,可以直接对几何信息中的坐标分量对应的莫顿码分量执行按位与或处理,最终便可以获得当前点的莫顿码。
可以理解的是,在本申请的实施例中,在执行按位与或处理时,可以是对坐标分量对应的莫顿码分量中的每一位执行按位与或处理,也可以是可以是对坐标分量对应的莫顿码分量中的某一位或几位执行按位与或处理。
示例性的,在本申请中,如果当前点的第一坐标分量对应的移位后莫顿码,即第一莫顿码分量为000100000,第二坐标分量对应的移位后莫顿码,即第二莫顿码分量为000010010,第三坐标分量(不进行移位处理)对应的第三莫顿码分量为001000000,那么编码器可以对这三个莫顿码分量逐位执行异或运算,获得的二进制数为001110010,对应的当前点的莫顿码为114。
图4为莫顿码的构建方法的实现流程示意图二,如图4所示,在根据莫顿码分量确定当前点的莫顿码之后,即步骤104之后,编码器对点云中点的莫顿码的构建方法还可以包括以下步骤:
步骤105、基于当前点的莫顿码和点云对应的点云序列集合,在点云中确定当前点的参考点。
在本申请的实施例中,编码器在根据莫顿码分量确定当前点的莫顿码之后便可以基于当前点的莫顿码和点云对应的点云序列集合,进一步在点云中确定出当前点的参考点。
需要说明的是,在本申请的实施例中,编码器可以按照上述步骤101至步骤104所提出的莫顿码的确定方法,获得点云中的全部点的全部莫顿码,然后可以根据点云中的全部点对应的全部莫顿码生成点云序列集合。
可以理解的是,在本申请的实施例中,编码器在得到每个点的莫顿码之后,可以按照由小至大的顺序,对全部点的全部莫顿码进行排序,生成点云对应的点云序列集合,即点云序列集合中按照由小至大的顺序存储有点云中的全部点的全部莫顿码。因此,编码器在确定出当前点的莫顿码之后,可以利用当前点的莫顿码在点云序列集合中进行查询处理,从而可以在点云中确定当前点的参考点。
需要说明的是,在本申请的实施例中,编码器在基于当前点的莫顿码在点云序列集合中进行查询处理时,既可以根据当前点的莫顿码直接遍历查询点云序列集合中的每一个莫顿码,以获得当前点的参考点;还可以根据当前点的莫顿码,按照预设查询算法进行点云序列集合的查询处理,从而获得当前点的参考点。
也就是说,在本申请的实施例中,编码器在基于当前点的莫顿码在点云序列集合中进行查询处理时,既可以对点云序列集合使用的遍历的方法,也可以为其他对点云序列集合进行快速查找的算法。
步骤106、根据参考点的属性重建值确定当前点的属性预测值。
在本申请的实施例中,编码器在利用当前点的莫顿码和点云对应的点云序列集合在点云中确定出当前点的参考点之后,可以根据参考点的属性重建值最终确定出当前点的属性预测值。
进一步地,在本申请的实施例中,编码器在基于点云序列集合获得当前点的参考点之后,由于当前点与参考点之间具有较强的相关性,因此可以直接利用该参考点的属性重建值预测获得当前点的属性预测值。
在本申请的实施例中,进一步地,编码器在根据参考点的属性重建值确定当前点的属性预测值之后,可以根据属性预测值计算当前点的预测残差,然后可以对预测残差进行编码,生成码流,再将码流传输至解码端。
需要说明的是,在本申请的实施例中,通过上述步骤101至步骤104提出的莫顿码的构建方法,编码器仅存储和使用一个莫顿码查找表,便可以完成对电云中的任意一点的莫顿码的构建,既减少了存储消耗,也降低了计算复杂度,且不会影响编码效率。
具体地,在本申请中,对于当前点来说,在按照xyz的顺序交叉构建莫顿码时,如果坐标分量是当前点的几何信息(x,y,z)的第一坐标分量x,则x的二值化值用作在莫顿码查找表中查找所需对应的莫顿码mx的索引;如果坐标分量是当前点的几何信息(x,y,z)的第二坐标分量y,则y的二值化值用作在莫顿码查找表中查找所需对应的莫顿码my的索引。如果坐标分量是当前点的几何信息(x,y,z)的第三坐标分量z,则z的二值化值用作在莫顿码查找表中查找所需对应的莫顿码mz的索引。进一 步地,在使用三个坐标分量对应的三个索引值分别查询同一个莫顿码查找表,获得对应的索引值对应的莫顿码mx、my以及mz之后,可以将mx的至少一位执行二进制左移2位处理,获得x对应的第一莫顿码分量Mx,将my执行二进制左移一位处理,获得y对应的第二莫顿码分量My,mz保持不变,直接将mz设置为z对应的第三莫顿码分量Mz。最后,通过对第一莫顿码分量Mx、第二莫顿码分量My以及第三莫顿码分量Mz执行逐位异或处理来获得当前点的莫顿码,即对第一莫顿码分量Mx、第二莫顿码分量My以及第三莫顿码分量Mz执行按位与或处理。
可以理解的是,在本申请中,上述步骤101至步骤104提出的莫顿码的构建方法,可以应用于八叉树几何编码(解码)过程中,也可以应用于属性编码(RAHT)过程中,还可以应用于属性编码(提升变换)过程中,本申请不进行具体限定。
本申请实施例公开了一种莫顿码的构建方法,编码器确定点云中的当前点的几何信息;根据几何信息中的坐标分量,确定坐标分量对应的索引值;根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量;根据莫顿码分量确定当前点的莫顿码。由此可见,在本申请的实施例中,在进行当前点的莫顿码的构建时,编解码器可以利用当前点的几何信息中的每一个坐标分量对应的索引值,分别从同一个莫顿码查找表中查找获得每一个坐标分量对应的每一个莫顿码分量,从而可以利用全部莫顿码分量构建当前点的莫顿码。可见,由于编解码器可以只存储和使用一个莫顿码查找表,因此能够有效地减小计算的复杂度和存储空间,从而提高了编解码效率。
基于上述实施例,本申请的再一实施例中,编码器在执行上述步骤102时,即编码器在根据当前点的几何信息中的坐标分量,确定坐标分量对应的索引值时,还可以先对当前点的每一个坐标分量分别执行二进制右移处理,然后再基于右移后分量进行索引值的确定。
示例性的,在本申请中,假设当前点的几何信息为当前点的空间三维坐标(x,y,z),那么当前点的几何信息中的第一坐标分量为x,第二坐标分量为y,第三坐标分量为z。
进一步地,在本申请中,编码器在确定当前点的几何信息之后,在根据几何信息中的每一个坐标分量,依次确定每一个坐标分量对应的每一个索引值时,可以先按照预设位数分别对第一坐标分量、第二坐标分量、第三坐标分量执行二进制右移处理,获得第一坐标分量对应的右移后第一分量、第二坐标分量对应的右移后第二分量以及第三坐标分量对应的右移后第三分量。
需要说明的是,在本申请的实施例中,第一坐标分量、第二坐标分量、第三坐标分量可以具有相同的位宽。例如,第一坐标分量的二进制位宽为8,第二坐标分量的二进制位宽为8,第三坐标分量的二进制位宽为8。
可以理解的是,在本申请的实施例中,预设位数用于对执行移位处理时的位宽进行确定。具体地,预设位数的取值可以为大于1的整数。
示例性的,在本申请的实施例中,预设位数可以与坐标分量的位宽相等,例如,第一坐标分量、第二坐标分量、第三坐标分量的位宽等于8,预设位数等于8;预设位数也可以为坐标分量的位宽的整数倍,例如,第一坐标分量、第二坐标分量、第三坐标分量的位宽等于8,预设位数等于16。其中,本申请对当前点的坐标分量的位宽和预设位数不进行具体限定。
进一步地,在本申请的实施例中,在对位宽相同的二进制数以相同的位数进行移位处理之后,获得的新的二进制数也具有相同的位宽,因此,在按照预设位数分别对位宽相同的第一坐标分量、第二坐标分量、第三坐标分量执行二进制右移处理之后,获得的右移后第一分量、右移后第二分量以及右移后第三分量也具有相同的位宽。
具体地,在本申请的实施例中,右移后第一分量、右移后第二分量以及右移后第三分量的位宽均为(m×n);其中,m和n为大于1的整数。例如,在按照预设位数分别对位宽相同的第一坐标分量、第二坐标分量、第三坐标分量执行二进制右移处理之后,获得的右移后第一分量、右移后第二分量以及右移后第三分量的位宽均为24(8×3)。
进一步地,在本申请的实施例中,编码器可以根据右移后第一分量的最高m位、中间(n-2)个m位以及最低m位,依次确定第一坐标分量对应的n个第一索引值;同时,编码器还可以根据右移后第二分量的最高m位、中间(n-2)个m位以及最低m位,依次确定第二坐标分量对应的n个第二索引值;同时,编码器还可以根据右移后第三分量的最高m位、中间(n-2)个m位以及最低m位,依次确定第三坐标分量对应的n个第三索引值。
也就是说,在本申请的实施例中,第一坐标分量对应的第一索引值可以包括与右移后第一分量的最高m位、中间(n-2)个m位以及最低m位依次对应的n个不同的索引值;相应地,第二坐标分量对应的第二索引值也可以包括与右移后第二分量的最高m位、中间(n-2)个m位以及最低m位依次对应的n个不同的索引值;相应地,第三坐标分量对应的第三索引值也可以包括与右移后第二分量的最高m位、中间(n-2)个m位以及最低m位依次对应的n个不同的索引值。
由此可见,在本申请的实施例中,编码器在对当前点的每一个坐标分量进行移位处理之后,可以按照固定的位数确定出每一个坐标分量对应的多个索引值,即编码器可以按照固定的位宽间隔拆解移位后分量的二进制位数,最终对于不同n个位数区间,生成每一个坐标分量对应的不同的n个索引值。
进一步地,在本申请的实施例中,编码器在确定出当前点的每一个坐标分量对应的n个索引值之后,可以根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量。具体地,在本申请中,编码器在执行上述步骤103时,可以根据n个第一索引值、n个第二索引值、n个第三索引值以及莫顿码查找表,确定第一坐标分量对应的n个第一莫顿码分量、第二坐标分量对应的n个第二莫顿码分量以及第三坐标分量对应的n个第三莫顿码分量。
可以理解的是,在本申请的实施例中,对于右移后分量的最高m位、中间(n-2)个m位以及最低m位,编码器可以分别确定出对应的n个索引值,因此,在利用索引值查询莫顿码查找表时,编码器可以根据右移后第一分量的最高m位所对应的一个第一索引值,查询获得与该最高m位所对应的一个第一莫顿码分量;相应地,编码器可以根据右移后第二分量的最高m位所对应的一个第二索引值,查询获得与该最高m位所对应的一个第二莫顿码分量;相应地,编码器可以根据右移后第三分量的最高m位所对应的一个第三索引值,查询获得与该最高m位所对应的一个第三莫顿码分量。
需要说明的是,在本申请中,在遍历完每一个坐标分量在右移后分量的最高m位、中间(n-2)个m位以及最低m位所对应的n个索引值之后,编码器便可以获得每一个坐标分量在右移后分量的最高m位、中间(n-2)个m位以及最低m位所对应的n个莫顿码分量。
进一步地,在本申请的实施例中,编码器在根据n个第一索引值、n个第二索引值、n个第三索引值以及莫顿码查找表,确定出第n个第一莫顿码分量、n个第二莫顿码分量以及n个第三莫顿码分量之后,便可以根据每一个坐标分量对应的n个莫顿码分量进一步确定当前点的莫顿码。
具体地,在本申请的实施例中,编码器在执行上述步骤104时,即编码器在根据莫顿码分量确定当前点的莫顿码时,可以先根据n个第一莫顿码分量、n个第二莫顿码分量以及n个第三莫顿码分量,确定当前点的n个区间莫顿码;然后便可以根据n个区间莫顿码确定当前点的莫顿码。
可以理解的是,在本申请的实施例中,由于编码器是基于右移后分量进行n个索引值的确定的,因此,在通过n个索引值查询莫顿码查找表来获取n个莫顿码分量之后,使用n个莫顿码分量进行后续的处理时,编码器还需要进行相应地左移处理。
具体地,在本申请的实施例中,编码器在执行左移处理时移动的具体位数与上述右移处理时移动的位数、对应的位宽区间都相关的。
示例性的,在本申请的实施例中,假设第一坐标分量的二进制位宽为8,第二坐标分量的二进制位宽为8,第三坐标分量的二进制位宽为8,执行二进制右移处理的预设位数为16。那么,编码器在确定当前点的几何信息(x,y,z)之后,可以按照预设位数分别对几何信息的每一个坐标分量执行二进制右移处理,即分别对第一坐标分量x的二进制数、第二坐标分量y的二进制数、第三坐标分量z的二进制数执行16位的右移处理,从而获得第一坐标分量x对应的右移后第一分量、第二坐标分量y对应的右移后第二分量以及第三坐标分量z对应的右移后第三分量。
可以理解的是,在本申请中,在经过右移处理之后,x对应的右移后第一分量、y对应的右移后第二分量以及z对应的右移后第三分量的位宽均为24,此时,可以认为m为8,n为3。
进一步地,在本申请的实施例中,编码器可以根据右移后第一分量的最高8位确定出第一坐标分量x对应的一个第一索引值,然后使用该一个第一索引值查询莫顿码查找表,从而获得与该最高8位对应的一个第一莫顿码分量。
具体地,在本申请中,编码器可以先使用该一个第一索引值查询莫顿码查找表,获得一个对应的索引值对应的莫顿码mx,然后对该索引值对应的莫顿码mx的执行二进制左移2位处理,从而获得第一坐标分量x的、与该一个第一索引值所对应的一个第一莫顿码分量Mx。
相应地,在本申请中,编码器也可以根据右移后第二分量的最高8位确定出第二坐标分量y对应的一个第二索引值,然后使用该一个第二索引值查询莫顿码查找表,从而获得与该最高8位对应的一个第二莫顿码分量。
具体地,在本申请中,编码器可以先使用该一个第二索引值查询莫顿码查找表,获得一个对应的索引值对应的莫顿码my,然后对该索引值对应的莫顿码my的执行二进制左移一位处理,从而获得第二坐标分量y的、与该一个第二索引值所对应的一个第二莫顿码分量My。
相应地,在本申请中,编码器也可以根据右移后第三分量的最高8位确定出第三坐标分量z对应的一个第三索引值,然后使用该一个第三索引值查询莫顿码查找表,从而获得与该最高8位对应的一个第三莫顿码分量。
具体地,在本申请中,编码器可以先使用该一个第三索引值查询莫顿码查找表,获得一个对应的索 引值对应的莫顿码mz,然后可以直接根据该索引值对应的莫顿码mz生成第三坐标分量z的、与该一个第三索引值所对应的一个第三莫顿码分量Mz。
进一步地,在本申请的实施例中,编码器在确定与最高8位的位宽区间相对应的一个第一莫顿码分量、一个第二莫顿码分量以及一个第三莫顿码分量之后,便可以根据这三个莫顿码分量进一步生成与该最高8位的位宽区间所对应的一个区间莫顿码。
需要说明的是,在本申请中,由于在生成该最高8位的位宽区间所对应的三个坐标分量的三个索引值之前,对三个坐标分量分别进行了16位的右移处理,因此在进行区间莫顿码的生成时,还需要对应地执行二进制左移处理。
具体地,在本申请的实施例中,编码器可以按照x、y、z的顺序,将与该最高8位的位宽区间所对应的三个莫顿码分量执行位交错处理,获得交错后二进制数,其中,该交错后二进制数的位宽为24,然后将该交错后二进制数左移48位(16×3),从而获得与该最高8位的位宽区间所对应的一个区间莫顿码。
进一步地,在本申请的实施例中,编码器还可以按照上述方式,继续确定三个坐标分量在中间(3-2)个8位的位宽区间所对应的三个索引值,然后基于莫顿码查找表获得与该中间8位的位宽区间对应的三个莫顿码分量,最终便可以利用这三个莫顿码分量获得与该中间8位的位宽区间所对应的一个区间莫顿码。
具体地,在本申请的实施例中,编码器可以按照x、y、z的顺序,将与该中间8位的位宽区间所对应的三个莫顿码分量执行位交错处理,获得交错后二进制数,其中,该交错后二进制数的位宽为24,然后将该交错后二进制数左移24位(8×3),从而获得与该中间8位的位宽区间所对应的一个区间莫顿码。
进一步地,在本申请的实施例中,编码器还可以按照上述方式,继续确定三个坐标分量在最低8位的位宽区间所对应的三个索引值,然后基于莫顿码查找表获得与该最低8位的位宽区间对应的三个莫顿码分量,最终便可以利用这三个莫顿码分量获得与该最低8位的位宽区间所对应的一个区间莫顿码。
具体地,在本申请的实施例中,编码器可以按照x、y、z的顺序,将与该最低8位的位宽区间所对应的三个莫顿码分量执行位交错处理,获得交错后二进制数,其中,该交错后二进制数的位宽为24,然后直接将该交错后二进制数确定为与该最低8位的位宽区间所对应的一个区间莫顿码。
可以理解的是,在本申请的实施例中,编码器在确定出构成24位的全部3个位宽区间所对应的3个区间莫顿码之后,可以对这三个区间莫顿码执行逐位异或处理,并将异或处理之后的值确定为当前点的莫顿码。
下面以C/C++编程语言说明上述方法的实现示例:
Figure PCTCN2021070964-appb-000002
其中,int64_t表示64位整数的数据类型;int32_t表示32位整数的数据类型;(x,y,z)是点云中某一点的输入坐标,即几何信息,kMortonCode256[]是在获取莫顿码时使用的唯一一个查找表,即莫顿码查找表,变量mortonCode是输入坐标(x,y,z)这一点的莫顿码。
可以理解的是,在本申请的实施例中,当前点的第一坐标分量、第二坐标分量以及第三坐标分量对应的位宽可以为大于0的任意整数,本申请不进行具体限定。
可以理解的是,在本申请的实施例中,编码器执行右移处理的预设位数可以为大于0的任意整数,本申请不进行具体限定。
可以理解的是,在本申请的实施例中,右移后坐标分量的位宽为(m×n),并可以拆解为n个m位 的位宽区间,其中,m和n可以为大于1的整数,本申请不进行具体限定。
本申请实施例公开了一种莫顿码的构建方法,编码器确定点云中的当前点的几何信息;根据几何信息中的坐标分量,确定坐标分量对应的索引值;根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量;根据莫顿码分量确定当前点的莫顿码。由此可见,在本申请的实施例中,在进行当前点的莫顿码的构建时,编解码器可以利用当前点的几何信息中的每一个坐标分量对应的索引值,分别从同一个莫顿码查找表中查找获得每一个坐标分量对应的每一个莫顿码分量,从而可以利用全部莫顿码分量构建当前点的莫顿码。可见,由于编解码器可以只存储和使用一个莫顿码查找表,因此能够有效地减小计算的复杂度和存储空间,从而提高了编解码效率。
本申请一实施例提供了一种莫顿码的构建方法,该方法应用于解码器中,图5为莫顿码的构建方法的实现流程示意图三,如图5所示,解码器对点云中点的莫顿码的构建方法可以包括以下步骤:
步骤201、解析码流,确定点云中的当前点的几何信息。
在本申请的实施例中,解码器可以先解析码流,从而确定点云中的当前点的几何信息。
需要说明的是,在本申请的实施例中,在对点云进行解码处理时,点云的几何信息和点云所对应的属性信息是分开进行解码的。其中,在几何信息解码完成后,对几何信息进行重建,而属性信息的解码将依赖于重建的几何信息。
具体地,属性信息的解码主要是针对颜色信息的解码。首先,将颜色信息从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色,使得未解码的属性信息与重建的几何信息对应起来。接下来进行点云的解码,首先基于莫顿码对点云进行重排序,生成可以用于预测点云的属性信息的点云顺序。
进一步地,在本申请的实施例中,在对点云的几何信息进行解码之后,解码器可以利用点云中每一个点的几何信息,确定出每一个点的莫顿码。在得到每个点的莫顿码之后,解码器便可以将点云中的所有点,按照由小至大的顺序,对全部点的全部莫顿码进行排序,生成点云对应的点云序列集合。其中,点云序列集合中存储有点云中的全部点的全部莫顿码。
需要说明的是,在本申请的实施例中,解码器对点云的属性信息进行解码时,可以按照莫顿码由小到大的顺序依次对点云的全部点进行点云的解码。
可以理解的是,在本申请的实施例中,当前点可以为点云中的任意一个点,在对当前点进行点云的解码时,小于当前点的莫顿码的其他莫顿码所对应的点云中的其他点已经完成了点云的解码,生成对应的属性重建值。
进一步地,在本申请的实施例中,解码器在对当前点进行点云的解码时,需要先对当前点的莫顿码进行确定。具体地,在本申请中,解码器可以利用当前点的几何信息,对当前点的莫顿码进行确定,因此,解码器需要先确定点云中的当前点的几何信息。
步骤202、根据几何信息中的坐标分量,确定坐标分量对应的索引值。
在本申请的实施例中,解码器在确定点云中的当前点的几何信息之后,便可以进一步根据几何信息中的坐标分量,确定出每一个坐标分量所对应的每一个索引值。其中,一个坐标分量对应有一个索引值。
需要说明的是,在本申请的实施例中,当前点的坐标分量所对应的索引值可以用于对该坐标分量的莫顿码分量进行查询。
可以理解的是,在本申请的实施例中,对应点云中的任意一个点,对应的几何信息均可以通过多个坐标分量构成。具体地,当前点的几何信息中的坐标分量可以包括第一坐标分量、第二坐标分量以及第三坐标分量。
示例性的,在本申请中,当前点的几何信息可以为当前点的空间三维坐标(x,y,z),即当前点的几何信息可以表示为(x,y,z),其中,x为第一坐标分量,y为第二坐标分量,z为第三坐标分量。
进一步地,在本申请中,解码器在根据当前点的几何信息中的一个坐标分量来确定对应的一个索引值时,可以直接对该一个坐标分量进行二进制的计算,并将该一个坐标分量的二进制数作为对应的一个索引值。
例如,当前点的几何信息为(2,3,4),即当前点的第一坐标分量为2,第二坐标分量为3,第三坐标分量为4。那么,在分别对当前点的每一个坐标分量进行二进制计算之后,可以确定第一坐标分量对应的第一索引值为10,第二坐标分量对应的第二索引值为11,第三坐标分量对应的第三索引值为100。
步骤203、根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量。
在本申请的实施例中,解码器在根据几何信息中的坐标分量,确定坐标分量对应的索引值之后,便可以按照索引值,进一步在莫顿码查找表进行查询处理,最终可以确定坐标分量对应的莫顿码分量。
可以理解的是,在本申请的实施例中,莫顿码查找表可以用于确定当前点的莫顿码分量,即通过莫 顿码查找表可以获得当前点的每一个坐标分量所对应的每一个莫顿码分量。
进一步地,在本申请的实施例中,解码器在根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量时,可以先基于莫顿码查找表,确定索引值对应的莫顿码;然后可以进一步对索引值对应的莫顿码进行移位处理,最终可以获得坐标分量对应的莫顿码分量。
需要说明的是,在本申请的实施例中,基于索引值查找莫顿码查找表获得的坐标分量对应的索引值对应的莫顿码可以为二进制的形式。具体地,在莫顿码查找表中,索引值对应的莫顿码可以为对索引值的至少一位进行补位处理后确定的。
可以理解的是,在本申请的实施例中,对于当前点的几何信息中的任意一个坐标分量,解码器都可以按照该坐标分量的索引值从莫顿码查找表中查询获得该坐标分量的对应的索引值对应的莫顿码。
示例性的,在本申请中,表2为莫顿码查找表,如表2所示,对于不同的索引值,可以利用莫顿码查找表确定出对应的索引值对应的莫顿码,该索引值对应的莫顿码可以为基于索引值的至少一位进行补位处理后得到的。
示例性,在本申请中,如果当前点的几何信息为(2,3,4),即当前点的第一坐标分量为2,第二坐标分量为3,第三坐标分量为4。相应地,当前点的第一坐标分量对应的第一索引值为10,第二坐标分量对应的第二索引值为11,第三坐标分量对应的第三索引值为100。通过上述表1,可以按照第一索引值、第二索引值以及第三索引值分别进行查询处理,获得第一坐标分量对应的索引值对应的莫顿码为000001000,第二坐标分量对应的索引值对应的莫顿码为000001001,第三坐标分量对应的索引值对应的莫顿码为001000000。
进一步地,在本申请的实施例中,解码器在基于莫顿码查找表获得每一个坐标分量对应的索引值对应的莫顿码之后,可以依次对每一个莫顿码分量进行移位处理,最终获得每一个坐标分量对应的每一个莫顿码分量。
需要说明的是,在本申请的实施例中,编码器在对索引值对应的莫顿码进行移位处理,获得坐标分量对应的莫顿码分量时,可以对索引值对应的莫顿码执行二进制左移K位处理,获得移位后莫顿码;然后直接将移位后莫顿码确定为莫顿码分量。即将所引致对应的莫顿码左移K位之后,便可以获得对应的莫顿码分量。其中,K为大于或者等于0的整数,如果K等于0,则不进行移位处理。
可以理解的是,在本申请的实施例中,对于不同的坐标分量,解码器执行移位处理的方式可以是不同的,例如,如果按照x、y、z的顺序交叉构建莫顿码,则对于坐标分量x,解码器可以对对应的索引值对应的莫顿码的至少一位执行二进制左移2位的处理,对于坐标分量y,解码器可以对对应的索引值对应的莫顿码的至少一位执行二进制左移一位的处理,对于坐标分量z,解码器可以不对对应的索引值对应的莫顿码执行移位处理。
需要说明的是,在本申请的实施例中,在对索引值对应的莫顿码执行二进制左移K位处理时,可以选择对该莫顿码的至少一位进行左移处理,也可以对该莫顿码的部分位数进行左移处理,对此本申请不进行具体限定。
例如,如果按照x、y、z的顺序交叉构建莫顿码,当前点的几何信息为(2,3,4),通过上述表2,可以查询获得第一坐标分量x对应的索引值对应的莫顿码mx为000001000,第二坐标分量y对应的索引值对应的莫顿码my为000001001,第三坐标分量z对应的索引值对应的莫顿码mz为001000000。那么,解码器可以对mx执行二进制左移2位处理,确定移位后莫顿码为000100000,即确定对应的莫顿码分量Mx为000100000(32);编码器可以对my执行二进制左移一位处理,确定移位后莫顿码为000010010,即确定对应的莫顿码分量My为000010010(18);mz保持不变,即不对mz执行移位处理,而是直接确定对应的莫顿码分量Mz为001000000(64)。
也就是说,在本申请的实施例中,对于当前点的不同的坐标分量,可以使用相同的一个莫顿码查找表获得对应的索引值对应的莫顿码,然后按照不同的坐标分量,对不同的索引值对应的莫顿码执行不同的移位处理,最终便可以确定出每一个坐标分量对应的莫顿码分量。
示例性的,在本申请中,如果当前点的几何信息(x,y,z)中的坐标分量包括第一坐标分量x、第二坐标分量y以及第三坐标分量z。那么,对于几何信息(x,y,z)中的第一坐标分量x,确定第一坐标分量x对应的第一索引值;然后可以在莫顿码查找表中查询获得第一索引值对应的莫顿码mx;接着,可以将第一索引值对应的莫顿码mx执行二进制左移2位处理,从而可以获得第一坐标分量x对应的第一莫顿码分量Mx,即将mx的移位后莫顿码确定为第一莫顿码分量Mx。对于几何信息(x,y,z)中的第二坐标分量y,确定第二坐标分量y对应的第二索引值;然后可以在莫顿码查找表中查询获得第二坐标分量y对应的索引值对应的莫顿码my;接着,可以将第二坐标分量y对应的索引值对应的莫顿码my执行二进制左移一位处理,从而可以获得第二坐标分量y对应的第二莫顿码分量My,即将my的移位后莫顿码确定为第二莫顿码分量My。对于几何信息(x,y,z)中的第三坐标分量z,确定第三 坐标分量z对应的第三索引值;然后可以在莫顿码查找表中查询获得第三索引值z对应的索引值对应的莫顿码mz;接着可以直接根据第三索引值z对应的索引值对应的莫顿码mz确定第三坐标分量z对应的第三莫顿码分量Mz,即直接将mz确定为第三莫顿码分量Mz。
由此可见,在本申请中,解码器通过同一个莫顿码查找表,便可以依次确定出当前点的不同坐标分量对应的莫顿妈分量,因此在莫顿码的确定过程中,解码器仅仅需要存储和查询一个莫顿码查找表,可以大大减少存储空间,降低计算的复杂度。
步骤204、根据莫顿码分量确定当前点的莫顿码。
在本申请的实施例中,解码器在按照索引值,进一步在莫顿码查找表中查询坐标分量对应的莫顿码分量之后,可以根据莫顿码分量进一步确定当前点的莫顿码。
进一步地,在本申请的实施例中,由于当前点的全部莫顿码分量为二进制的形式,因此在解码器直接将每一个坐标分量的移位后莫顿码确定为对应的莫顿码分量之后,解码器在根据莫顿码分量确定当前点的莫顿码时,可以直接对几何信息中的坐标分量对应的莫顿码分量执行按位与或处理,最终便可以获得当前点的莫顿码。
可以理解的是,在本申请的实施例中,在执行按位与或处理时,可以是对坐标分量对应的莫顿码分量中的每一位执行按位与或处理,也可以是可以是对坐标分量对应的莫顿码分量中的某一位或几位执行按位与或处理。
示例性的,在本申请中,如果当前点的第一坐标分量对应的移位后莫顿码,即第一莫顿码分量为000100000,第二坐标分量对应的移位后莫顿码,即第二莫顿码分量为000010010,第三坐标分量(不进行移位处理)对应的第三莫顿码分量为001000000,那么解码器可以对这三个莫顿码分量逐位执行异或运算,获得的二进制数为001110010,对应的当前点的莫顿码为114。
图6为莫顿码的构建方法的实现流程示意图四,如图6所示,在根据莫顿码分量确定当前点的莫顿码之后,即步骤204之后,解码器对点云中点的莫顿码的构建方法还可以包括以下步骤:
步骤205、基于当前点的莫顿码和点云对应的点云序列集合,在点云中确定当前点的参考点。
在本申请的实施例中,解码器在根据莫顿码分量确定当前点的莫顿码之后便可以基于当前点的莫顿码和点云对应的点云序列集合,进一步在点云中确定出当前点的参考点。
需要说明的是,在本申请的实施例中,解码器可以按照上述步骤201至步骤204所提出的莫顿码的确定方法,获得点云中的全部点的全部莫顿码,然后可以根据点云中的全部点对应的全部莫顿码生成点云序列集合。
可以理解的是,在本申请的实施例中,解码器在得到每个点的莫顿码之后,可以按照由小至大的顺序,对全部点的全部莫顿码进行排序,生成点云对应的点云序列集合,即点云序列集合中按照由小至大的顺序存储有点云中的全部点的全部莫顿码。因此,解码器在确定出当前点的莫顿码之后,可以利用当前点的莫顿码在点云序列集合中进行查询处理,从而可以在点云中确定当前点的参考点。
需要说明的是,在本申请的实施例中,解码器在基于当前点的莫顿码在点云序列集合中进行查询处理时,既可以根据当前点的莫顿码直接遍历查询点云序列集合中的每一个莫顿码,以获得当前点的参考点;还可以根据当前点的莫顿码,按照预设查询算法进行点云序列集合的查询处理,从而获得当前点的参考点。
也就是说,在本申请的实施例中,解码器在基于当前点的莫顿码在点云序列集合中进行查询处理时,既可以对点云序列集合使用的遍历的方法,也可以为其他对点云序列集合进行快速查找的算法。
步骤206、根据参考点的属性重建值确定当前点的属性预测值。
在本申请的实施例中,解码器在利用当前点的莫顿码和点云对应的点云序列集合在点云中确定出当前点的参考点之后,可以根据参考点的属性重建值最终确定出当前点的属性预测值。
进一步地,在本申请的实施例中,解码器在基于点云序列集合获得当前点的参考点之后,由于当前点与参考点之间具有较强的相关性,因此可以直接利用该参考点的属性重建值预测获得当前点的属性预测值。
在本申请的实施例中,进一步地,解码器还可以通过解析码流,确定当前点的预测残差;然后可以根据属性预测值和预测残差,确定当前点的重建值。
需要说明的是,在本申请的实施例中,通过上述步骤201至步骤204提出的莫顿码的构建方法,解码器仅存储和使用一个莫顿码查找表,便可以完成对电云中的任意一点的莫顿码的构建,既减少了存储消耗,也降低了计算复杂度,且不会影响解码效率。
具体地,在本申请中,对于当前点来说,在按照xyz的顺序交叉构建莫顿码时,如果坐标分量是当前点的几何信息(x,y,z)的第一坐标分量x,则x的二值化值用作在莫顿码查找表中查找所需对应的莫顿码mx的索引;如果坐标分量是当前点的几何信息(x,y,z)的第二坐标分量y,则y的二值化 值用作在莫顿码查找表中查找所需对应的莫顿码my的索引。如果坐标分量是当前点的几何信息(x,y,z)的第三坐标分量z,则z的二值化值用作在莫顿码查找表中查找所需对应的莫顿码mz的索引。进一步地,在使用三个坐标分量对应的三个索引值分别查询同一个莫顿码查找表,获得对应的索引值对应的莫顿码mx、my以及mz之后,可以将mx的至少一位执行二进制左移2位处理,获得x对应的第一莫顿码分量Mx,将my执行二进制左移一位处理,获得y对应的第二莫顿码分量My,mz保持不变,直接将mz设置为z对应的第三莫顿码分量Mz。最后,通过对第一莫顿码分量Mx、第二莫顿码分量My以及第三莫顿码分量Mz执行逐位异或处理来获得当前点的莫顿码,即对第一莫顿码分量Mx、第二莫顿码分量My以及第三莫顿码分量Mz执行按位与或处理。
可以理解的是,在本申请中,上述步骤201至步骤204提出的莫顿码的构建方法,可以应用于八叉树几何编码(解码)过程中,也可以应用于属性编码(RAHT)过程中,还可以应用于属性编码(提升变换)过程中,本申请不进行具体限定。
本申请实施例公开了一种莫顿码的构建方法,解码器解析码流,确定点云中的当前点的几何信息;根据几何信息中的坐标分量,确定坐标分量对应的索引值;根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量;根据莫顿码分量确定当前点的莫顿码。由此可见,在本申请的实施例中,在进行当前点的莫顿码的构建时,编解码器可以利用当前点的几何信息中的每一个坐标分量对应的索引值,分别从同一个莫顿码查找表中查找获得每一个坐标分量对应的每一个莫顿码分量,从而可以利用全部莫顿码分量构建当前点的莫顿码。可见,由于编解码器可以只存储和使用一个莫顿码查找表,因此能够有效地减小计算的复杂度和存储空间,从而提高了编解码效率。
基于上述实施例,本申请的再一实施例中,解码器在执行上述步骤202时,即解码器在根据当前点的几何信息中的坐标分量,确定坐标分量对应的索引值时,还可以先对当前点的每一个坐标分量分别执行二进制右移处理,然后再基于右移后分量进行索引值的确定。
示例性的,在本申请中,假设当前点的几何信息为当前点的空间三维坐标(x,y,z),那么当前点的几何信息中的第一坐标分量为x,第二坐标分量为y,第三坐标分量为z。
进一步地,在本申请中,解码器在确定当前点的几何信息之后,在根据几何信息中的每一个坐标分量,依次确定每一个坐标分量对应的每一个索引值时,可以先按照预设位数分别对第一坐标分量、第二坐标分量、第三坐标分量执行二进制右移处理,获得第一坐标分量对应的右移后第一分量、第二坐标分量对应的右移后第二分量以及第三坐标分量对应的右移后第三分量。
需要说明的是,在本申请的实施例中,第一坐标分量、第二坐标分量、第三坐标分量可以具有相同的位宽。例如,第一坐标分量的二进制位宽为8,第二坐标分量的二进制位宽为8,第三坐标分量的二进制位宽为8。
可以理解的是,在本申请的实施例中,预设位数用于对执行移位处理时的位宽进行确定。具体地,预设位数的取值可以为大于1的整数。
示例性的,在本申请的实施例中,预设位数可以与坐标分量的位宽相等,例如,第一坐标分量、第二坐标分量、第三坐标分量的位宽等于8,预设位数等于8;预设位数也可以为坐标分量的位宽的整数倍,例如,第一坐标分量、第二坐标分量、第三坐标分量的位宽等于8,预设位数等于16。其中,本申请对当前点的坐标分量的位宽和预设位数不进行具体限定。
进一步地,在本申请的实施例中,在对位宽相同的二进制数以相同的位数进行移位处理之后,获得的新的二进制数也具有相同的位宽,因此,在按照预设位数分别对位宽相同的第一坐标分量、第二坐标分量、第三坐标分量执行二进制右移处理之后,获得的右移后第一分量、右移后第二分量以及右移后第三分量也具有相同的位宽。
具体地,在本申请的实施例中,右移后第一分量、右移后第二分量以及右移后第三分量的位宽均为(m×n);其中,m和n为大于1的整数。例如,在按照预设位数分别对位宽相同的第一坐标分量、第二坐标分量、第三坐标分量执行二进制右移处理之后,获得的右移后第一分量、右移后第二分量以及右移后第三分量的位宽均为24(8×3)。
进一步地,在本申请的实施例中,解码器可以根据右移后第一分量的最高m位、中间(n-2)个m位以及最低m位,依次确定第一坐标分量对应的n个第一索引值;同时,解码器还可以根据右移后第二分量的最高m位、中间(n-2)个m位以及最低m位,依次确定第二坐标分量对应的n个第二索引值;同时,解码器还可以根据右移后第三分量的最高m位、中间(n-2)个m位以及最低m位,依次确定第三坐标分量对应的n个第三索引值。
也就是说,在本申请的实施例中,第一坐标分量对应的第一索引值可以包括与右移后第一分量的最高m位、中间(n-2)个m位以及最低m位依次对应的n个不同的索引值;相应地,第二坐标分量对应的第二索引值也可以包括与右移后第二分量的最高m位、中间(n-2)个m位以及最低m位依次对 应的n个不同的索引值;相应地,第三坐标分量对应的第三索引值也可以包括与右移后第二分量的最高m位、中间(n-2)个m位以及最低m位依次对应的n个不同的索引值。
由此可见,在本申请的实施例中,解码器在对当前点的每一个坐标分量进行移位处理之后,可以按照固定的位数确定出每一个坐标分量对应的多个索引值,即解码器可以按照固定的位宽间隔拆解移位后分量的二进制位数,最终对于不同n个位数区间,生成每一个坐标分量对应的不同的n个索引值。
进一步地,在本申请的实施例中,解码器在确定出当前点的每一个坐标分量对应的n个索引值之后,可以根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量。具体地,在本申请中,解码器在执行上述步骤203时,可以根据n个第一索引值、n个第二索引值、n个第三索引值以及莫顿码查找表,确定第一坐标分量对应的n个第一莫顿码分量、第二坐标分量对应的n个第二莫顿码分量以及第三坐标分量对应的n个第三莫顿码分量。
可以理解的是,在本申请的实施例中,对于右移后分量的最高m位、中间(n-2)个m位以及最低m位,解码器可以分别确定出对应的n个索引值,因此,在利用索引值查询莫顿码查找表时,解码器可以根据右移后第一分量的最高m位所对应的一个第一索引值,查询获得与该最高m位所对应的一个第一莫顿码分量;相应地,解码器可以根据右移后第二分量的最高m位所对应的一个第二索引值,查询获得与该最高m位所对应的一个第二莫顿码分量;相应地,解码器可以根据右移后第三分量的最高m位所对应的一个第三索引值,查询获得与该最高m位所对应的一个第三莫顿码分量。
需要说明的是,在本申请中,在遍历完每一个坐标分量在右移后分量的最高m位、中间(n-2)个m位以及最低m位所对应的n个索引值之后,解码器便可以获得每一个坐标分量在右移后分量的最高m位、中间(n-2)个m位以及最低m位所对应的n个莫顿码分量。
进一步地,在本申请的实施例中,解码器在根据n个第一索引值、n个第二索引值、n个第三索引值以及莫顿码查找表,确定出第n个第一莫顿码分量、n个第二莫顿码分量以及n个第三莫顿码分量之后,便可以根据每一个坐标分量对应的n个莫顿码分量进一步确定当前点的莫顿码。
具体地,在本申请的实施例中,解码器在执行上述步骤204时,即解码器在根据莫顿码分量确定当前点的莫顿码时,可以先根据n个第一莫顿码分量、n个第二莫顿码分量以及n个第三莫顿码分量,确定当前点的n个区间莫顿码;然后便可以根据n个区间莫顿码确定当前点的莫顿码。
可以理解的是,在本申请的实施例中,由于解码器是基于右移后分量进行n个索引值的确定的,因此,在通过n个索引值查询莫顿码查找表来获取n个莫顿码分量之后,使用n个莫顿码分量进行后续的处理时,解码器还需要进行相应地左移处理。
具体地,在本申请的实施例中,解码器在执行左移处理时移动的具体位数与上述右移处理时移动的位数、对应的位宽区间都相关的。
示例性的,在本申请的实施例中,假设第一坐标分量的二进制位宽为8,第二坐标分量的二进制位宽为8,第三坐标分量的二进制位宽为8,执行二进制右移处理的预设位数为16。那么,解码器在确定当前点的几何信息(x,y,z)之后,可以按照预设位数分别对几何信息的每一个坐标分量执行二进制右移处理,即分别对第一坐标分量x的二进制数、第二坐标分量y的二进制数、第三坐标分量z的二进制数执行16位的右移处理,从而获得第一坐标分量x对应的右移后第一分量、第二坐标分量y对应的右移后第二分量以及第三坐标分量z对应的右移后第三分量。
可以理解的是,在本申请中,在经过右移处理之后,x对应的右移后第一分量、y对应的右移后第二分量以及z对应的右移后第三分量的位宽均为24,此时,可以认为m为8,n为3。
进一步地,在本申请的实施例中,解码器可以根据右移后第一分量的最高8位确定出第一坐标分量x对应的一个第一索引值,然后使用该一个第一索引值查询莫顿码查找表,从而获得与该最高8位对应的一个第一莫顿码分量。
具体地,在本申请中,解码器可以先使用该一个第一索引值查询莫顿码查找表,获得一个对应的索引值对应的莫顿码mx,然后对该索引值对应的莫顿码mx的执行二进制左移2位处理,从而获得第一坐标分量x的、与该一个第一索引值所对应的一个第一莫顿码分量Mx。
相应地,在本申请中,解码器也可以根据右移后第二分量的最高8位确定出第二坐标分量y对应的一个第二索引值,然后使用该一个第二索引值查询莫顿码查找表,从而获得与该最高8位对应的一个第二莫顿码分量。
具体地,在本申请中,解码器可以先使用该一个第二索引值查询莫顿码查找表,获得一个对应的索引值对应的莫顿码my,然后对该索引值对应的莫顿码my的执行二进制左移一位处理,从而获得第二坐标分量y的、与该一个第二索引值所对应的一个第二莫顿码分量My。
相应地,在本申请中,解码器也可以根据右移后第三分量的最高8位确定出第三坐标分量z对应的一个第三索引值,然后使用该一个第三索引值查询莫顿码查找表,从而获得与该最高8位对应的一个第 三莫顿码分量。
具体地,在本申请中,解码器可以先使用该一个第三索引值查询莫顿码查找表,获得一个对应的索引值对应的莫顿码mz,然后可以直接根据该索引值对应的莫顿码mz生成第三坐标分量z的、与该一个第三索引值所对应的一个第三莫顿码分量Mz。
进一步地,在本申请的实施例中,解码器在确定与最高8位的位宽区间相对应的一个第一莫顿码分量、一个第二莫顿码分量以及一个第三莫顿码分量之后,便可以根据这三个莫顿码分量进一步生成与该最高8位的位宽区间所对应的一个区间莫顿码。
需要说明的是,在本申请中,由于在生成该最高8位的位宽区间所对应的三个坐标分量的三个索引值之前,对三个坐标分量分别进行了16位的右移处理,因此在进行区间莫顿码的生成时,还需要对应地执行二进制左移处理。
具体地,在本申请的实施例中,解码器可以按照x、y、z的顺序,将与该最高8位的位宽区间所对应的三个莫顿码分量执行位交错处理,获得交错后二进制数,其中,该交错后二进制数的位宽为24,然后将该交错后二进制数左移48位(16×3),从而获得与该最高8位的位宽区间所对应的一个区间莫顿码。
进一步地,在本申请的实施例中,解码器还可以按照上述方式,继续确定三个坐标分量在中间(3-2)个8位的位宽区间所对应的三个索引值,然后基于莫顿码查找表获得与该中间8位的位宽区间对应的三个莫顿码分量,最终便可以利用这三个莫顿码分量获得与该中间8位的位宽区间所对应的一个区间莫顿码。
具体地,在本申请的实施例中,解码器可以按照x、y、z的顺序,将与该中间8位的位宽区间所对应的三个莫顿码分量执行位交错处理,获得交错后二进制数,其中,该交错后二进制数的位宽为24,然后将该交错后二进制数左移24位(8×3),从而获得与该中间8位的位宽区间所对应的一个区间莫顿码。
进一步地,在本申请的实施例中,解码器还可以按照上述方式,继续确定三个坐标分量在最低8位的位宽区间所对应的三个索引值,然后基于莫顿码查找表获得与该最低8位的位宽区间对应的三个莫顿码分量,最终便可以利用这三个莫顿码分量获得与该最低8位的位宽区间所对应的一个区间莫顿码。
具体地,在本申请的实施例中,解码器可以按照x、y、z的顺序,将与该最低8位的位宽区间所对应的三个莫顿码分量执行位交错处理,获得交错后二进制数,其中,该交错后二进制数的位宽为24,然后直接将该交错后二进制数确定为与该最低8位的位宽区间所对应的一个区间莫顿码。
可以理解的是,在本申请的实施例中,解码器在确定出构成24位的全部3个位宽区间所对应的3个区间莫顿码之后,可以对这三个区间莫顿码执行逐位异或处理,并将异或处理之后的值确定为当前点的莫顿码。
下面以C/C++编程语言说明上述方法的实现示例:
Figure PCTCN2021070964-appb-000003
其中,int64_t表示64位整数的数据类型;int32_t表示32位整数的数据类型;(x,y,z)是点云中某一点的输入坐标,即几何信息,kMortonCode256[]是在获取莫顿码时使用的唯一一个查找表,即莫顿码查找表,变量mortonCode是输入坐标(x,y,z)这一点的莫顿码。
可以理解的是,在本申请的实施例中,当前点的第一坐标分量、第二坐标分量以及第三坐标分量对应的位宽可以为大于0的任意整数,本申请不进行具体限定。
可以理解的是,在本申请的实施例中,解码器执行右移处理的预设位数可以为大于0的任意整数, 本申请不进行具体限定。
可以理解的是,在本申请的实施例中,右移后坐标分量的位宽为(m×n),并可以拆解为n个m位的位宽区间,其中,m和n可以为大于1的整数,本申请不进行具体限定。
本申请实施例公开了一种莫顿码的构建方法,解码器解析码流,确定点云中的当前点的几何信息;根据几何信息中的坐标分量,确定坐标分量对应的索引值;根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量;根据莫顿码分量确定当前点的莫顿码。由此可见,在本申请的实施例中,在进行当前点的莫顿码的构建时,编解码器可以利用当前点的几何信息中的每一个坐标分量对应的索引值,分别从同一个莫顿码查找表中查找获得每一个坐标分量对应的每一个莫顿码分量,从而可以利用全部莫顿码分量构建当前点的莫顿码。可见,由于编解码器可以只存储和使用一个莫顿码查找表,因此能够有效地减小计算的复杂度和存储空间,从而提高了编解码效率。
基于上述实施例,本申请的再一实施例提出了一种编码器,图7为编码器的组成结构示意图一,如图7所示,本申请实施例提出的编码器300可以包括第一确定部分301。
所述第一确定部分301,配置为确定点云中的当前点的几何信息;根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;根据所述莫顿码分量确定所述当前点的莫顿码。
图8为编码器的组成结构示意图二,如图8所示,本申请实施例提出的编码器300还可以包括第一处理器302、存储有第一处理器302可执行指令的第一存储器303、第一通信接口304,和用于连接第一处理器302、第一存储器303以及第一通信接口304的第一总线305。
进一步地,在本申请的实施例中,上述第一处理器302,用于确定点云中的当前点的几何信息;根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;根据所述莫顿码分量确定所述当前点的莫顿码。
图9为解码器的组成结构示意图一,如图9所示,本申请实施例提出的解码器400可以包括解码部分401,第二确定部分402,
所述解码部分401,配置为解析码流;
所述第二确定部分402,配置为确定点云中的当前点的几何信息;根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;根据所述莫顿码分量确定所述当前点的莫顿码。。
图10为解码器的组成结构示意图二,如图10所示,本申请实施例提出的解码器400还可以包括第二处理器403、存储有第二处理器403可执行指令的第二存储器404、第二通信接口405,和用于连接第二处理器403、第饿存储器404以及第二通信接口405的第二总线406。
进一步地,在本申请的实施例中,上述第二处理器403,用于解析码流,确定点云中的当前点的几何信息;根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;根据所述莫顿码分量确定所述当前点的莫顿码。
编码器300可以是具有一个或多个芯片的计算设备。在芯片上实现为集成电路并具备上述功能的单元,具有与图1中的对应单元相似的功能、相似的连接和数据交换。
解码器400可以是具有一个或多个芯片的计算设备。在芯片上实现为集成电路并具备上述功能的单元,具有与图1中的对应单元相似的功能、相似的连接和数据交换。
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor执行本实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供了一种编码器和解码器,编码器确定点云中的当前点的几何信息;根据几何信息中的坐标分量,确定坐标分量对应的索引值;根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量;根据莫顿码分量确定当前点的莫顿码。解码器解析码流,确定点云中的当前点的几何信息;根据几何信息中的坐标分量,确定坐标分量对应的索引值;根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量;根据莫顿码分量确定当前点的莫顿码。由此可见,在本申请的实施例中,在进行当前点的莫顿码的构建时,编解码器可以利用当前点的几何信息中的每一个坐标分量对应的索引值,分别从同 一个莫顿码查找表中查找获得每一个坐标分量对应的每一个莫顿码分量,从而可以利用全部莫顿码分量构建当前点的莫顿码。可见,由于编解码器可以只存储和使用一个莫顿码查找表,因此能够有效地减小计算的复杂度和存储空间,从而提高了编解码效率。
本申请实施例提供计算机可读存储介质和计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述实施例所述的方法。
具体来讲,本实施例中的一种莫顿码的构建方法对应的程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种莫顿码的构建方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
确定点云中的当前点的几何信息;
根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;
根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;
根据所述莫顿码分量确定所述当前点的莫顿码。
当存储介质中的与一种莫顿码的构建方法对应的程序指令被一电子设备读取或被执行时,还包括如下步骤:
解析码流,确定点云中的当前点的几何信息;
根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;
根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;
根据所述莫顿码分量确定所述当前点的莫顿码。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的实现流程示意图和/或方框图来描述的。应理解可由计算机程序指令实现流程示意图和/或方框图中的每一流程和/或方框、以及实现流程示意图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
工业实用性
本申请实施例提供了一种莫顿码的构建方法、编码器、解码器及存储介质,编码器确定点云中的当前点的几何信息;根据几何信息中的坐标分量,确定坐标分量对应的索引值;根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量;根据莫顿码分量确定当前点的莫顿码。解码器解析码流,确定点云中的当前点的几何信息;根据几何信息中的坐标分量,确定坐标分量对应的索引值;根据索引值和莫顿码查找表,确定坐标分量对应的莫顿码分量;根据莫顿码分量确定当前点的莫顿码。由此可见,在本申请的实施例中,在进行当前点的莫顿码的构建时,编解码器可以利用当前点的几何信息中的每一个坐标分量对应的索引值,分别从同一个莫顿码查找表中查找获得每一个坐标分量对应的每一个莫顿码分量,从而可以利用全部莫顿码分量构建当前点的莫顿码。可见,由于编解码器可以只存储和使用一个莫顿码查找表,因此能够有效地减小计算的复杂度和存储空间,从而提高了编解码效率。

Claims (36)

  1. 一种莫顿码的构建方法,应用于编码器中,所述方法包括:
    确定点云中的当前点的几何信息;
    根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;
    根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;
    根据所述莫顿码分量确定所述当前点的莫顿码。
  2. 根据权利要求1所述的方法,其中,所述根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量,包括:
    基于所述莫顿码查找表,确定所述索引值对应的莫顿码;
    对所述索引值对应的莫顿码进行移位处理,获得所述坐标分量对应的莫顿码分量。
  3. 根据权利要求2所述的方法,其中,所述几何信息中的坐标分量包括第一坐标分量、第二坐标分量以及第三坐标分量。
  4. 根据权利要求3所述的方法,其中,若所述几何信息表示为(x,y,z),其中,x为第一坐标分量,y为第二坐标分量,z为第三坐标分量。
  5. 根据权利要求3或4所述的方法,其中,
    对于所述几何信息中的所述第一坐标分量,确定所述第一坐标分量对应的第一索引值;
    在所述莫顿码查找表中查询获得所述第一索引值对应的莫顿码;
    对所述第一索引值对应的莫顿码执行二进制左移2位处理,获得所述第一坐标分量对应的第一莫顿码分量。
  6. 根据权利要求3或4所述的方法,其中,
    对于所述几何信息中的所述第二坐标分量,确定所述第二坐标分量对应的第二索引值;
    在所述莫顿码查找表中查询获得所述第二索引值对应的莫顿码;
    对所述第二索引值对应的莫顿码执行二进制左移一位处理,获得所述第二坐标分量对应的第二莫顿码分量。
  7. 根据权利要求3或4所述的方法,其中,
    对于所述几何信息中的所述第三坐标分量,确定所述第三坐标分量对应的第三索引值;
    在所述莫顿码查找表中查询获得所述第三索引值对应的莫顿码;
    根据所述第三索引值对应的莫顿码确定所述第三坐标分量对应的第三莫顿码分量。
  8. 根据权利要求2所述的方法,其中,所述对所述索引值对应的莫顿码进行移位处理,获得所述坐标分量对应的莫顿码分量,包括:
    对所述索引值对应的莫顿码执行二进制左移K位处理,获得所述莫顿码分量;其中,K为大于或者等于0的整数。
  9. 根据权利要求8所述的方法,其中,所述根据所述莫顿码分量确定所述当前点的莫顿码,包括:
    对所述几何信息中的坐标分量对应的莫顿码分量执行按位与或处理,获得所述当前点的莫顿码。
  10. 根据权利要求3或4所述的方法,其中,所述根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值,包括:
    按照预设位数分别对所述第一坐标分量、所述第二坐标分量、所述第三坐标分量执行二进制右移处理,获得右移后第一分量、右移后第二分量以及右移后第三分量;其中,所述右移后第一分量、所述右移后第二分量以及所述右移后第三分量的位宽均为(m×n);m和n为大于1的整数;
    根据所述右移后第一分量的最高m位、中间(n-2)个m位以及最低m位,依次确定所述第一坐标分量对应的n个第一索引值;
    根据所述右移后第二分量的最高m位、中间(n-2)个m位以及最低m位,依次确定所述第二坐标分量对应的n个第二索引值;
    根据所述右移后第三分量的最高m位、中间(n-2)个m位以及最低m位,依次确定所述第三坐标分量对应的n个第三索引值。
  11. 根据权利要求10所述的方法,其中,所述根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量,包括:
    根据所述n个第一索引值、所述n个第二索引值、所述n个第三索引值以及所述莫顿码查找表,确定所述第一坐标分量对应的n个第一莫顿码分量、所述第二坐标分量对应的n个第二莫顿码分量以及所述第三坐标分量对应的n个第三莫顿码分量。
  12. 根据权利要求11所述的方法,其中,所述根据所述莫顿码分量确定所述当前点的莫顿码,包括:
    根据所述n个第一莫顿码分量、所述n个第二莫顿码分量以及所述n个第三莫顿码分量,确定当前点的n个区间莫顿码;
    根据所述n个区间莫顿码确定所述当前点的莫顿码。
  13. 根据权利要求1所述的方法,其中,所述方法还包括:
    基于所述当前点的莫顿码和所述点云对应的点云序列集合,在所述点云中确定所述当前点的参考点;
    根据所述参考点的属性重建值确定所述当前点的属性预测值。
  14. 根据权利要求13所述的方法,其中,所述方法还包括:
    根据所述点云中的全部点对应的全部莫顿码生成所述点云序列集合。
  15. 根据权利要求1所述的方法,其中,所述方法还包括:
    根据所述属性预测值计算所述当前点的预测残差;
    对所述预测残差进行编码,生成码流。
  16. 一种点云的解码方法,应用于解码器中,所述方法包括:
    解析码流,确定点云中的当前点的几何信息;
    根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;
    根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;
    根据所述莫顿码分量确定所述当前点的莫顿码。
  17. 根据权利要求16所述的方法,其中,所述根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量,包括:
    基于所述莫顿码查找表,确定所述索引值对应的莫顿码;
    对所述索引值对应的莫顿码进行移位处理,获得所述坐标分量对应的莫顿码分量。
  18. 根据权利要求17所述的方法,其中,所述几何信息中的坐标分量包括第一坐标分量、第二坐标分量以及第三坐标分量。
  19. 根据权利要求18所述的方法,其中,若所述几何信息表示为(x,y,z),其中,x为第一坐标分量,y为第二坐标分量,z为第三坐标分量。
  20. 根据权利要求18或19所述的方法,其中,
    对于所述几何信息中的所述第一坐标分量,确定所述第一坐标分量对应的第一索引值;
    在所述莫顿码查找表中查询获得所述第一索引值对应的莫顿码;
    对所述第一索引值对应的莫顿码执行二进制左移2位处理,获得所述第一坐标分量对应的第一莫顿码分量。
  21. 根据权利要求18或19所述的方法,其中,
    对于所述几何信息中的所述第二坐标分量,确定所述第二坐标分量对应的第二索引值;
    在所述莫顿码查找表中查询获得所述第二索引值对应的莫顿码;
    对所述第二索引值对应的莫顿码执行二进制左移一位处理,获得所述第二坐标分量对应的第二莫顿码分量。
  22. 根据权利要求18或19所述的方法,其中,
    对于所述几何信息中的所述第三坐标分量,确定所述第三坐标分量对应的第三索引值;
    在所述莫顿码查找表中查询获得所述第三索引值对应的莫顿码;
    根据所述第三索引值对应的莫顿码确定所述第三坐标分量对应的第三莫顿码分量。
  23. 根据权利要求17所述的方法,其中,所述对所述索引值对应的莫顿码进行移位处理,获得所述坐标分量对应的莫顿码分量,包括:
    对所述索引值对应的莫顿码执行二进制左移K位处理,获得所述莫顿码分量;其中,K为大于或者等于0的整数。
  24. 根据权利要求23所述的方法,其中,所述根据所述莫顿码分量确定所述当前点的莫顿码,包括:
    对所述几何信息中的坐标分量对应的莫顿码分量执行按位与或处理,获得所述当前点的莫顿码。
  25. 根据权利要求18或19所述的方法,其中,所述根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值,包括:
    按照预设位数分别对所述第一坐标分量、所述第二坐标分量、所述第三坐标分量执行二进制右移处理,获得右移后第一分量、右移后第二分量以及右移后第三分量;其中,所述右移后第一分量、 所述右移后第二分量以及所述右移后第三分量的位宽均为(m×n);m和n为大于1的整数;
    根据所述右移后第一分量的最高m位、中间(n-2)个m位以及最低m位,依次确定所述第一坐标分量对应的n个第一索引值;
    根据所述右移后第二分量的最高m位、中间(n-2)个m位以及最低m位,依次确定所述第二坐标分量对应的n个第二索引值;
    根据所述右移后第三分量的最高m位、中间(n-2)个m位以及最低m位,依次确定所述第三坐标分量对应的n个第三索引值。
  26. 根据权利要求25所述的方法,其中,所述根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量,包括:
    根据所述n个第一索引值、所述n个第二索引值、所述n个第三索引值以及所述莫顿码查找表,确定所述第一坐标分量对应的n个第一莫顿码分量、所述第二坐标分量对应的n个第二莫顿码分量以及所述第三坐标分量对应的n个第三莫顿码分量。
  27. 根据权利要求26所述的方法,其中,所述根据所述莫顿码分量确定所述当前点的莫顿码,包括:
    根据所述n个第一莫顿码分量、所述n个第二莫顿码分量以及所述n个第三莫顿码分量,确定当前点的n个区间莫顿码;
    根据所述n个区间莫顿码确定所述当前点的莫顿码。
  28. 根据权利要求16所述的方法,其中,所述方法还包括:
    基于所述当前点的莫顿码和所述点云对应的点云序列集合,在所述点云中确定所述当前点的参考点;
    根据所述参考点的属性重建值确定所述当前点的属性预测值。
  29. 根据权利要求28所述的方法,其中,所述方法还包括:
    根据所述点云中的全部点对应的全部莫顿码生成所述点云序列集合。
  30. 根据权利要求16所述的方法,其中,所述方法还包括:
    解析所述码流,确定所述当前点的预测残差;
    根据所述属性预测值和所述预测残差,确定所述当前点的重建值。
  31. 一种编码器,所述编码器包括:第一确定部分,
    所述第一确定部分,配置为确定点云中的当前点的几何信息;根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;根据所述莫顿码分量确定所述当前点的莫顿码。
  32. 一种编码器,所述编码器包括第一处理器、存储有所述第一处理器可执行指令的第一存储器,当所述指令被所述第一处理器执行时,实现如权利要求1-15任一项所述的方法。
  33. 一种解码器,所述解码器包括:解码部分,第二确定部分,
    所述解码部分,配置为解析码流;
    所述第二确定部分,配置为确定点云中的当前点的几何信息;根据所述几何信息中的坐标分量,确定所述坐标分量对应的索引值;根据所述索引值和莫顿码查找表,确定所述坐标分量对应的莫顿码分量;根据所述莫顿码分量确定所述当前点的莫顿码。
  34. 一种解码器,所述解码器包括第二处理器、存储有所述第二处理器可执行指令的第二存储器,当所述指令被所述第二处理器执行时,实现如权利要求16-30任一项所述的方法。
  35. 一种计算机可读存储介质,其上存储有程序,应用于编码器中,所述程序被第一处理器执行时,实现如权利要求1-15任一项所述的方法。
  36. 一种计算机可读存储介质,其上存储有程序,应用于解码器中,所述程序被第二处理器执行时,实现如权利要求16-30任一项所述的方法。
PCT/CN2021/070964 2020-01-08 2021-01-08 莫顿码的构建方法、编码器、解码器、及存储介质 WO2021139796A1 (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202180007640.3A CN114868153A (zh) 2020-01-08 2021-01-08 莫顿码的构建方法、编码器、解码器、及存储介质
EP21738556.6A EP4083927A4 (en) 2020-01-08 2021-01-08 METHOD OF CONSTRUCTING MORTON CODES, ENCODER, DECODER, AND RECORDING MEDIA
US17/853,166 US20220327746A1 (en) 2020-01-08 2022-06-29 Method for constructing morton codes, encoder, decoder, and storage medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202062958589P 2020-01-08 2020-01-08
US62/958,589 2020-01-08

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/853,166 Continuation US20220327746A1 (en) 2020-01-08 2022-06-29 Method for constructing morton codes, encoder, decoder, and storage medium

Publications (1)

Publication Number Publication Date
WO2021139796A1 true WO2021139796A1 (zh) 2021-07-15

Family

ID=76787765

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/070964 WO2021139796A1 (zh) 2020-01-08 2021-01-08 莫顿码的构建方法、编码器、解码器、及存储介质

Country Status (4)

Country Link
US (1) US20220327746A1 (zh)
EP (1) EP4083927A4 (zh)
CN (1) CN114868153A (zh)
WO (1) WO2021139796A1 (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136535A (zh) * 2011-11-29 2013-06-05 南京理工大学常熟研究院有限公司 一种用于点云简化的k近邻搜索方法
CN107111485A (zh) * 2014-11-14 2017-08-29 英特尔公司 三维莫顿坐标转换处理器、方法、系统和指令
US20170347100A1 (en) * 2016-05-28 2017-11-30 Microsoft Technology Licensing, Llc Region-adaptive hierarchical transform and entropy coding for point cloud compression, and corresponding decompression
US20180144545A1 (en) * 2015-05-07 2018-05-24 Institut Mines Telecom Method of simplifying a geometry model
CN109345619A (zh) * 2018-08-10 2019-02-15 华北电力大学(保定) 基于类八叉树编码的海量点云空间管理方法
US20190080483A1 (en) * 2017-09-14 2019-03-14 Apple Inc. Point Cloud Compression

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136535A (zh) * 2011-11-29 2013-06-05 南京理工大学常熟研究院有限公司 一种用于点云简化的k近邻搜索方法
CN107111485A (zh) * 2014-11-14 2017-08-29 英特尔公司 三维莫顿坐标转换处理器、方法、系统和指令
US20180144545A1 (en) * 2015-05-07 2018-05-24 Institut Mines Telecom Method of simplifying a geometry model
US20170347100A1 (en) * 2016-05-28 2017-11-30 Microsoft Technology Licensing, Llc Region-adaptive hierarchical transform and entropy coding for point cloud compression, and corresponding decompression
US20190080483A1 (en) * 2017-09-14 2019-03-14 Apple Inc. Point Cloud Compression
CN109345619A (zh) * 2018-08-10 2019-02-15 华北电力大学(保定) 基于类八叉树编码的海量点云空间管理方法

Non-Patent Citations (1)

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

Also Published As

Publication number Publication date
EP4083927A1 (en) 2022-11-02
US20220327746A1 (en) 2022-10-13
EP4083927A4 (en) 2023-05-17
CN114868153A (zh) 2022-08-05

Similar Documents

Publication Publication Date Title
WO2021000658A1 (zh) 点云编解码方法、编码器、解码器及计算机存储介质
EP2734980B1 (en) Method for adaptive entropy coding of tree structures
JP7330306B2 (ja) 変換方法、逆変換方法、エンコーダ、デコーダ及び記憶媒体
US11936909B2 (en) Prediction method, encoder, decoder, and computer storage medium
WO2012139249A1 (en) Method for encoding a mesh model, encoded mesh model and method for decoding a mesh model
JP7386337B2 (ja) 分割方法、符号器、復号器及びコンピュータ記憶媒体
US20230237705A1 (en) Methods for level partition of point cloud, and decoder
TW201417585A (zh) 編碼器、解碼器及編碼方法、解碼方法
US20230101072A1 (en) Nearest neighbour search method, encoder, decoder and storage medium
US20220329833A1 (en) Nearest neighbor search method, apparatus, device, and storage medium
US20220207781A1 (en) Transform method, inverse transform method, encoder, decoder and storage medium
WO2022042538A1 (zh) 一种基于块的点云几何帧间预测方法和解码方法
Isenburg et al. Streaming compression of tetrahedral volume meshes
WO2021139796A1 (zh) 莫顿码的构建方法、编码器、解码器、及存储介质
WO2021062771A1 (zh) 颜色分量预测方法、编码器、解码器及计算机存储介质
TW202406344A (zh) 一種點雲幾何資料增強、編解碼方法、裝置、碼流、編解碼器、系統和儲存媒介
US20220286677A1 (en) Point cloud processing method, encoder, decoder and storage medium
CN110349228B (zh) 一种数据驱动最小二乘预测的三角网格压缩方法
WO2021138785A1 (zh) 划分方法、编码器、解码器及计算机存储介质
JP7486883B2 (ja) Haarベースの点群符号化のための方法および装置
WO2024082152A1 (zh) 编解码方法及装置、编解码器、码流、设备、存储介质
WO2022067782A1 (zh) 一种点云数据的层次划分方法、编码器及存储介质
EP4233006A2 (en) Devices and methods for spatial quantization for point cloud compression
CN118175319A (zh) 点云编码方法、点云解码方法及相关设备
CN116233387A (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: 21738556

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021738556

Country of ref document: EP

Effective date: 20220727

NENP Non-entry into the national phase

Ref country code: DE