Geometric point cloud coding method, encoder and decoder
Through the encoder and decoder of multi-attribute encoding parameter set and octree structure, the problem of low point cloud data compression efficiency in the prior art is solved, and more efficient point cloud data processing and recovery is achieved.
Patent Information
- Application Number
- CN202380083609.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-12-06
- Filing Date
- 2023-11-29
- Publication Date
- 2025-07-11
AI Technical Summary
Existing geometric point cloud encoding methods are difficult to effectively deal with large-scale multi-attribute point cloud data sets, especially in applications such as virtual reality and augmented reality, where the compression efficiency is not high.
The multi-attribute encoding parameter set method is adopted to restore attributes in the point cloud by decoding and encoding syntax elements, and encode and decode using octree structure and attribute predictor, supporting the encoder and decoder design of the multi-attribute encoding parameter set.
It improves the compression efficiency and quality of point cloud data, can effectively process multi-attribute point cloud data, and is suitable for a variety of application scenarios.
Smart Images

Figure CN120303923A_ABST
Abstract
Description
[0001] Cross - reference to related applications
[0002] This application claims the priority of U.S. Provisional Application No. 63 / 386,301, filed on December 6, 2022. The entire content of the above - mentioned patent application is incorporated herein by reference and becomes a part of this specification.
[0003] Background of the present disclosure Technical field
[0004] The present disclosure generally relates to computer - implemented methods and systems for video processing. Specifically, the present disclosure relates to Geometry Point Cloud Coding (G - PCC). Background art
[0005] G - PCC is widely used in entertainment applications (such as virtual reality (VR) / augmented reality (AR)) and industrial applications (such as LiDAR scan compression for automobiles or robots and high - definition (HD) maps for navigation). The Moving Picture Experts Group (MPEG) has released the first version of the G - PCC standard, and the Audio Video Standard (AVS) is also developing the G - PCC standard. To efficiently compress point cloud data, first, the geometric information of the point cloud is compressed, and then, based on this geometric information, the corresponding attributes, including color or reflectivity, are compressed.
[0006] Existing G - PCC does not work well for a wide range of PCC inputs, especially for a single attribute with multiple data sets. There is a need to design general G - PCC systems and methods that can be used in many applications. Summary of the invention
[0007] Embodiments of the present application provide a geometry point cloud coding method, an encoder, and a decoder, which can support a multi - attribute coding parameter set of G - PCC.
[0008] In a first aspect, an embodiment of the present application provides a geometry point cloud decoding method, which is applied to a decoder. The method includes: decoding a first syntax element from an attribute bitstream of a point cloud, the first syntax element indicating the number of multiple attribute coding parameter sets that are allowed to be used for decoding at least one attribute data set of a specified attribute among multiple attributes of points in the point cloud; decoding the multiple attribute coding parameter sets of the specified attribute according to the decoded first syntax element; and restoring the attributes of points in the point cloud by using the decoded multiple attribute coding parameter sets.
[0009] According to one embodiment, the method further includes: decoding a second syntax element that indicates permission for a multi-attribute coding parameter set for geometric point cloud coding; and if the second syntax element indicates that the permission for the multi-attribute coding parameter set for a specified attribute is true, decoding the first syntax element and the multi-attribute coding parameter set.
[0010] According to one embodiment, the method further includes: decoding a third syntax element that indicates permission for a multi-attribute coding parameter set for a specified attribute; and if the third syntax element indicates that the permission for the multi-attribute coding parameter set for a specified attribute is true, decoding the first syntax element and the multi-attribute coding parameter set.
[0011] According to one embodiment, the method further includes: decoding a fourth syntax element that indicates an identity of a specified attribute coding parameter set from the multi-attribute coding parameter set for decoding at least one attribute data set of the specified attribute in the point cloud.
[0012] According to one embodiment, the method further includes: decoding a fifth syntax element that indicates a number of multi-attribute data sets of a specified attribute; and decoding the multi-attribute data sets of the specified attribute according to the decoded fifth syntax element.
[0013] According to one embodiment, the method further includes: decoding a sixth syntax element that indicates the existence of a specified attribute; and if the sixth syntax element indicates that the existence of the specified attribute is true, decoding the multi-attribute data sets of the specified attribute.
[0014] According to one embodiment, the method further includes: calculating a value of the first syntax element plus one as the number of the multi-attribute coding parameter sets of the specified attribute.
[0015] In a second aspect, an embodiment of the present application provides a decoder. The decoder includes a communication interface, a storage device, and a processor. The communication interface is configured to obtain an attribute bitstream of a point cloud. The storage device is configured to store the attribute bitstream of the point cloud. The processor is coupled to the communication interface and the storage device, and the processor includes a syntax element decoding unit, a parameter set decoding unit, and an attribute recovery unit. The syntax element decoding unit decodes a first syntax element from the attribute bitstream, and the first syntax element indicates a number of multi-attribute coding parameter sets that allow decoding of at least one attribute data set of a specified attribute among multiple attributes of points in the point cloud. The parameter set decoding unit decodes the multi-attribute coding parameter sets of the specified attribute according to the decoded first syntax element. The attribute recovery unit recovers attributes of points in the point cloud by using the decoded multi-attribute coding parameter sets.
[0016] According to one embodiment, the syntax element decoding unit further decodes a second syntax element that indicates permission for a multi-attribute coding parameter set for specifying an attribute, and if the second syntax element indicates that the permission for the multi-attribute coding parameter set for specifying an attribute is true, the parameter set decoding unit decodes the plurality of attribute coding parameter sets.
[0017] According to one embodiment, the syntax element decoding unit further decodes a fifth syntax element that indicates the number of a plurality of attribute data sets for specifying an attribute, and the decoder further includes an attribute data set coding unit that decodes the plurality of attribute data sets for specifying an attribute according to the decoded fifth syntax element.
[0018] In a third aspect, an embodiment of the present application provides a geometric point cloud encoding method, which is applied to an encoder. The method includes: for a specified attribute among a plurality of attributes of a point to be encoded in a point cloud, encoding a first syntax element that indicates the number of a plurality of attribute coding parameter sets that permit encoding of at least one attribute data set for the specified attribute, and sequentially encoding the plurality of attribute coding parameter sets; and repeating the above steps to perform encoding on each of the plurality of attributes of the point to be encoded in the point cloud to generate an attribute bitstream.
[0019] According to one embodiment, before encoding the first syntax element and the plurality of attribute coding parameter sets, the method further includes: encoding a second syntax element that indicates permission for a multi-attribute coding parameter set for geometric point cloud encoding.
[0020] According to one embodiment, before encoding the first syntax element and the plurality of attribute coding parameter sets, the method further includes: encoding a third syntax element that indicates permission for a multi-attribute coding parameter set for specifying an attribute, wherein if the third syntax element indicates that the permission for the multi-attribute coding parameter set for specifying an attribute is true, the plurality of attribute coding parameter sets are encoded.
[0021] According to one embodiment, when encoding the plurality of attribute data sets for a specified attribute, the method further includes: encoding a fourth syntax element that indicates an identifier of a specified attribute coding parameter set among the plurality of attribute coding parameter sets for encoding at least one attribute data set for the specified attribute.
[0022] According to one embodiment, before encoding the first syntax element and the plurality of attribute coding parameter sets, the method further includes: encoding a fifth syntax element that indicates the number of the plurality of attribute data sets of a specified attribute, and sequentially encoding the plurality of attribute data sets of the specified attribute.
[0023] According to one embodiment, before encoding the fifth syntax element and the plurality of attribute data sets, the method further includes: encoding a sixth syntax element that indicates the presence of a specified attribute, wherein if the sixth syntax element indicates that the presence of the specified attribute is true, the plurality of attribute data sets of the specified attribute are encoded.
[0024] According to one embodiment, the value of the first syntax element is equal to the number of the plurality of attribute coding parameter sets minus one, and if the plurality of attribute coding parameter sets of the specified attribute do not exist, the value of the first syntax element is equal to minus one.
[0025] In a fourth aspect, an embodiment of the present application provides an encoder. The encoder includes a communication interface, a storage device, and a processor. The communication interface is configured to obtain data of a point cloud. The storage device is configured to store the data of the point cloud. The processor is coupled to the communication interface and the storage device, and the processor includes a syntax element encoding unit, a parameter set encoding unit, and an attribute bitstream generating unit. For a specified attribute among a plurality of attributes of a point to be encoded in the point cloud, the syntax element encoding unit encodes a first syntax element that indicates the number of the plurality of attribute coding parameter sets allowed for encoding at least one attribute data set of the specified attribute. The parameter set encoding unit sequentially encodes the plurality of attribute coding parameter sets. The attribute bitstream generating unit generates an attribute bitstream by using the encoded first syntax element and the encoded plurality of attribute coding parameter sets.
[0026] According to one embodiment, the syntax element encoding unit further encodes a third syntax element that indicates the allowance of a multi-attribute coding parameter set for a specified attribute; and if the third syntax element indicates that the allowance of the multi-attribute coding parameter set for the specified attribute is true, the parameter set encoding unit encodes the plurality of attribute coding parameter sets.
[0027] According to one embodiment, the syntax element encoding unit further encodes a fifth syntax element that indicates the number of the plurality of attribute data sets of a specified attribute; and the encoder further includes an attribute data set encoding unit that sequentially encodes the plurality of attribute data sets of the specified attribute.
[0028] In a fifth aspect, an embodiment of the present application provides a non-transitory computer-readable recording medium storing a program that causes a computer to perform the following operations: decoding a first syntax element from an attribute bitstream of a point cloud, the first syntax element indicating a number of multiple attribute coding parameter sets that are allowed to be used for decoding at least one attribute data set of specified attributes among multiple attributes of points in the point cloud; decoding the multiple attribute coding parameter sets of the specified attributes according to the decoded first syntax element; and recovering attributes of points in the point cloud by using the decoded multiple attribute coding parameter sets.
[0029] In a sixth aspect, an embodiment of the present application provides a non-transitory computer-readable recording medium storing a program that causes a computer to perform the following operations: encoding a first syntax element for a specified attribute among multiple attributes of a point to be encoded in a point cloud, the first syntax element indicating a number of multiple attribute coding parameter sets that are allowed to be used for encoding at least one attribute data set of the specified attribute, and sequentially encoding the multiple attribute coding parameter sets; and repeating the above steps to perform encoding on each of the multiple attributes of the point to be encoded in the point cloud to generate an attribute bitstream. BRIEF DESCRIPTION OF THE DRAWINGS
[0030] When read in conjunction with the following detailed description, various aspects of the present disclosure can be better understood. It should be noted that, in accordance with standard industry practice, the various features are not drawn to scale. In fact, for clarity of discussion, the dimensions of the various features can be arbitrarily increased or decreased. Figure 1
[0031] Figure 1 is a flowchart of G-PCC encoding according to an embodiment of the present application.
[0032] Figure 2A and Figure 2B illustrates an octree structure of G-PCC according to an embodiment of the present application.
[0033] Figure 2C illustrates a corresponding digital representation of the octree structure according to an embodiment of the present application.
[0034] Figure 3 illustrates a structure of a cube according to an embodiment of the present application.
[0035] Figure 4 is a flowchart of G-PCC decoding according to an embodiment of the present application.
[0036] Figure 5 is a schematic diagram of the hardware structure of an encoder provided by an embodiment of the present application.
[0037] Figure 6 is a flowchart of a geometric point cloud encoding method applied to an encoder according to an embodiment of the present disclosure.
[0038] Figure 7 is a schematic diagram of the hardware structure of a decoder provided by an embodiment of the present application.
[0039] Figure 8 is a flowchart of a geometric point cloud decoding method applied to a decoder according to an embodiment of the present disclosure.
[0040] Figure 9A and Figure 9B is a syntax table of a function for geometric point cloud encoding according to an embodiment of the present disclosure.
[0041] Figures 10A to 10C is a syntax table of a function for geometric point cloud encoding according to an embodiment of the present disclosure. Detailed implementation manners
[0042] For a more detailed understanding of the features and technical content of the embodiments of the present application, the following will describe in detail the implementation manners of the embodiments of the present application with reference to the accompanying drawings. The accompanying drawings are only for reference and explanation purposes, and are not used to limit the embodiments of the present application.
[0043] Figure 1 is a flowchart of G-PCC encoding according to an embodiment of the present application. Figure 1 The shown process is applied to a point cloud encoder. For the point cloud data to be encoded, the point cloud data is divided into multiple slices by slicing. In each slice, the positions of the point cloud (i.e., geometric information) and the attributes corresponding to each point cloud are encoded separately.
[0044] In the geometric encoding process, these positions are coordinate-transformed in step S102 to convert the point cloud into a bounding box, and then quantized in step S104. Quantization mainly serves as a scaling function. Due to quantization rounding, some of the positions in each position of the point cloud are the same. Therefore, in step S104, it is further determined whether to remove duplicate points based on parameters. The processes of quantization and removing duplicate points are also referred to as the voxelization process.
[0045] Then, in step S106, the bounding box is divided into an octree for octree analysis. In the geometric information encoding process based on the octree, the bounding box is divided into eight sub-cubes, and the non-empty (including the points in the point cloud) sub-cubes are continuously divided into eight equal parts until leaf nodes are obtained. When the point is a 1×1×1 unit cube, the division stops, and the points in the leaf nodes are arithmetically encoded in step S108 to generate a binary geometric bitstream, i.e., the geometric bitstream.
[0046] Figure 2A andFigure 2B shows the octree structure of the G-PCC according to an embodiment of the present application, and Figure 2C shows the corresponding digital representation of the octree structure according to an embodiment of the present application. Referring to Figure 2A , the cube axis-aligned bounding box B is defined by two endpoints (0, 0, 0) and (2 d , 2 d , 2 d ), where d is the maximum dimension of the given point cloud along the x, y, or z direction. The points in the point cloud will be referred to as "points" hereinafter. All points are included in the defined cube B.
[0047] Referring to Figure 2B , the cube B is divided into eight sub-cubes B1 to B8, which creates an octree structure that allows a parent cube B to have 8 child cubes B1 to B8. The 7 sibling cubes B2 to B8 of a given cube B1 are cubes of the same size and share at least one same face / edge / point with the given cube. The volume of each cube among B1 to B8 is 1 / 8 of the volume of its parent cube B. Each cube among B1 to B8 can contain more than one point, and the number of points in a cube depends on the size and position of the cube. For a given point cloud, the size of the smallest cube is predefined. For a given point, the parent cube of the given point is defined as the cube of the smallest size that contains the given point. The sibling points of the given point are defined as those points that have the same parent cube as the given point.
[0048] Referring to Figure 2C , an octree is a recursive data structure that is commonly used to describe three-dimensional space, where each internal cube has exactly eight children. The space is recursively subdivided into eight octants until the resolution of the child cubes is equal to the size of the points - the smallest element that cannot be further subdivided. To represent the cubes, 8-bit binary codes following a space-filling curve pattern (Hilbert, Morton) are used, and each child is assigned a "1" value or a "0" value to indicate whether the space in the child cube has any points associated with the child cube or whether the child cube is empty. Only the occupied child cubes are further subdivided. When the size of the child cube becomes equal to the size of the indivisible element (i.e., the spatial resolution of the point cloud, or simply the size of the points), the process of subdividing the parent cube terminates.
[0049] Figure 3 shows the structure of a cube according to an embodiment of the present application. Referring to Figure 3, depending on the position of the current cube, a cube can have at most six cubes of the same size sharing a face. Additionally, the current cube can also have some adjacent cubes that share lines or points with the current cube.
[0050] Similarly, the parent cube of the current cube also has at most six adjacent cubes of the same size as the parent cube and sharing a face with the parent cube. The parent cube of the current cube also has at most twelve adjacent cubes of the same size as the parent cube and sharing an edge. The parent cube of the current cube also has at most eight adjacent cubes of the same size as the parent cube and sharing a point with the parent cube.
[0051] Return reference Figure 1 , in step S110, based on the surface formed by the distribution of the point cloud in each block, the surface and twelve parts of the block are analyzed. Each edge generates at most twelve vertices (intersection points), and in step S108, arithmetic coding is performed on these vertices (surface fitting based on the intersection points) to generate a binary geometric bitstream, that is, a geometric code stream. The vertices are also used to implement the geometric reconstruction process in step S112, and the reconstructed set information is used when encoding the attributes of the point cloud.
[0052] During the attribute encoding process, after completing the geometric encoding and reconstructing the geometric information in step S112, a color transformation is performed in step S114, where the color information (i.e., the attribute information) is transformed from the red-green-blue (RGB) color space to the YUV color space. Then, in step S116, the reconstructed geometric information is used to recolour the point cloud so that the unencoded attribute information corresponds to the reconstructed geometric information. The attribute encoding mainly targets the color information.
[0053] During the color information encoding process, there are mainly two transformation methods. One is the distance-based lifting transform, which depends on the level of detail (LOD) partitioning in step S118 and the lifting in step S120; the other is direct region adaptation, such as the hierarchical transform in step S122 (Region Adaptive Hierarchal Transform, RAHT). These two methods transform the color information from the spatial domain to the frequency domain, thereby obtaining high-frequency coefficients and low-frequency coefficients through the transformation, and finally quantifying these coefficients in step S124 (i.e., the quantized coefficients).
[0054] Finally, after octree partitioning and surface fitting, the geometrically encoded data and the quantized coefficient processed attribute encoded data are sliced and synthesized, and then the vertex coordinates (i.e., arithmetic coding) of each block are encoded in sequence in step S126 to generate a binary attribute bitstream, i.e., an attribute bitstream.
[0055] Figure 4 is a flowchart of G-PCC decoding according to an embodiment of the present application. Figure 4 The process in is applied to a point cloud decoder. For the obtained binary bitstream, first, the geometric bitstream and the attribute bitstream in the binary bitstream are decoded in steps S402 and S404, respectively. When decoding the geometric bitstream, the position of the point cloud (i.e., geometric information) is obtained through arithmetic decoding in step S402, octree synthesis in step S406, surface fitting in step S408, geometric reconstruction in step S410, and inverse coordinate transformation in step S412.
[0056] When decoding the attribute bitstream, the attributes of the point cloud are obtained through arithmetic decoding in step S404, inverse quantization in step S414, inverse transformation based on LOD-based lifting in steps S416 and S418 or inverse transformation based on RAHT in step S420, and inverse color conversion in step S422, and the three-dimensional image model of the point cloud data to be encoded is restored based on these positions and these attributes.
[0057] The octree-based geometric information can be encoded using context-based arithmetic coding. For point clouds, there may also be some corresponding attribute information (including color, reflectivity, etc.) that needs to be compressed. Since adjacent points in a point cloud can have strong correlations, prediction-based coding methods have been developed and used to compose and encode point cloud attributes. More specifically, the prediction is formed by adjacent encoded attributes. Then, the difference between the current attribute and the prediction is encoded.
[0058] In the present disclosure, coding is considered to refer to methods and systems for encoding and decoding.
[0059] [Attribute Coding in AVS G-PCC]
[0060] AVS is developing the G-PCC standard. After the geometric information is encoded, the point cloud cube can be converted into a one-dimensional array using Morton or Hilbert code / order. Each position in the cube will have a corresponding Morton or Hilbert code, but some positions may not have any corresponding point cloud attributes. In other words, some positions may be empty. The attribute encoding will follow the predefined Morton or Hilbert order. The predictor can be generated based on the previously encoded points in the Morton or Hilbert order. The attribute difference between the current point and its predictor is encoded into the bitstream.
[0061] To reduce memory usage, some predefined numbers have been specified to limit the number of neighboring points available for generating predictions. For example, only M data points among the first N consecutive encoded points can be used to encode the current attribute. In the previous AVS G-PCC software, M and N were set to the fixed numbers 3 and 128 respectively.
[0062] If more than 128 points have been encoded before the current point, only 3 points among the 128 previously encoded neighboring points can be used to form the attribute predictor according to the predefined order. If there are less than 128 encoded points before the current point, all these encoded points will be used as candidate points for establishing the attribute predictor. More specifically, according to the predefined Morton or Hilbert order, K previous points before the current point are selected, for example, K = 6. Then, the new Morton or Hilbert codes of these N points will be recalculated by adding a fixed offset (such as 1) to the coordinates (x, y, z) of these N data points. Suppose the new Morton or Hilbert code of the current position is X, then a set of P points before the current position and a set of Q points after the current position will be selected according to the new Morton or Hilbert code order. Among these predefined sets of K points, P points, and Q points, M points with the closest "distance" to the current point among these encoded points are selected. As an example, the distance d1 is defined as follows, and other distance metrics can also be used.
[0063] d1 = |x1 - x2| + |y1 - y2| + |z1 - z2| (1)
[0064] where (x1, y1, z1) and (x2, y2, z2) are the coordinates of the current point and the preselected point respectively.
[0065] Recently, the full search method based on Hilbert code has been applied to AVS G-PCC attribute coding. In the current software, the search range is set to 128, and the number of previous points used to form the predictor is set to M. If more than 128 points have been encoded before the current point, only M points out of the 128 previously encoded neighboring points can be used to form the attribute predictor according to the Hilbert order.
[0066] If there are less than 128 encoded points before the current point, all these encoded points will be used as candidate points for forming the attribute predictor. Among at most 128 previously encoded points, M points with the closest "distance" to the current point among these encoded points are selected. As an example, the distance d2 is defined as follows, and other distance metrics can also be used.
[0067] d2 = |x1 - x3| + |y1 - y3| + |z1 - z3| (2)
[0068] where (x1, y1, z1) and (x3, y3, z3) are the coordinates of the current point and the preselected point along the Hilbert order respectively. Once the M closest points are selected, the weighted average of the attributes from these M points forms the predictor to encode the attribute of the current point.
[0069] It is known that points sharing the same face / line / point with the current point are close to the current point. Another technique is to consider using these points as predictors.
[0070] The residual is defined as the difference in the attribute value between the current point and its predictor. Depending on the application, PCC can be lossless or lossy. Therefore, the residual may or may not be quantized using a predefined quantization process. In the present disclosure, the unquantized residual or the quantized residual is referred to as the level. This level can be a signed integer and will be encoded into the bitstream.
[0071] [Color level coding]
[0072] Each point has three color attributes, which come from three color components. If the levels of all three color components are zero, the point is called a zero-level point. Otherwise, if the point has at least one non-zero level in one of the color components, the point is called a non-zero-level point. In the current AVS-G-PCC, the number of consecutive zero-level points is called the zero run length. The zero run length value and the levels of non-zero-level points are encoded into the bitstream.
[0073] More specifically, on the encoding side, before encoding the first point, the zero run - length value is set to zero. Starting from the first point, along the predetermined encoding order, the residuals between the three color predictors of the current point and their corresponding color attributes can be obtained. Then, the corresponding levels of the three components of the current point can also be obtained. If the current point is a zero - level point, the zero run - length value is incremented by one, and the process continues to the next point. If the current point is a non - zero - level point, first the zero run - length value is encoded, and then immediately the three color levels of this non - zero - level point are encoded. After encoding the levels of the non - zero - level point, the zero run - length value is reset to zero, and the process continues to the next point until all points are completed.
[0074] On the decoding side, first the zero run - length value is decoded, and the three color levels corresponding to the number of zero run - length points are set to zero. Then, the levels of the non - zero - level points are decoded, and then the next zero run - length value is decoded. This process continues until all points are decoded.
[0075] For non - zero - level points, at least one of the three components has a non - zero level. Several one - bit flags plus the remainder of the absolute level can be encoded to represent the residual levels of the color components. In the rest of this disclosure, the absolute level or the absolute level of the color residual minus one can be encoded and named the encoded level.
[0076] [Reflection level encoding]
[0077] In the AVS - G - PCC specification, the zero run - length of the reflection level and the non - zero reflection levels are encoded into the bitstream. More specifically, on the encoding side, before encoding the first point, the zero run - length counter is set to zero. Starting from the first point, along the predetermined encoding order, the residual between the predictor and the corresponding original point is obtained. Then the corresponding level is obtained. If the current level is zero, the zero run - length is incremented by one, and the process continues to the next point. If the level is not zero, first the zero run - length is encoded, and after encoding the zero run - length, the non - zero level is encoded. After encoding the non - zero level, the zero run - length counter is reset to zero, and the process continues to the next point. On the decoding side, first the number of zero run - lengths is decoded, and the levels corresponding to the number of zero run - length points are set to zero. Then the non - zero levels are decoded, and the number of the next zero run - lengths is decoded. The process continues until all points are decoded.
[0078] [Zero run - length encoding]
[0079] In the AVS-G-PCC standard, the value of the zero run length is encoded into the bitstream. More specifically, the first syntax is encoded to indicate whether the zero run length is equal to zero; if not, the second syntax is encoded to indicate whether the zero run length is equal to one; if not, the third syntax is encoded to indicate whether the zero run length is equal to two; if not, the fourth and fifth syntaxes are encoded to indicate the parity of the zero run length minus three and the value of the zero run length minus three divided by two, respectively.
[0080] [Encoder]
[0081] Figure 5 is a schematic diagram of the hardware structure of the encoder provided by an embodiment of the present application. Refer to Figure 5 , the encoder 50 includes a communication interface 52, a storage device 54, and a processor 56.
[0082] The communication interface 52 is, for example, a network card that supports a wired network connection such as Ethernet, a wireless network card that supports wireless communication standards such as Institute of Electrical and Electronics Engineers (IEEE) 802.11n / b / g / ac / ax / be, or any other network connection device, but this embodiment is not limited thereto. The communication interface 52 is configured to obtain point cloud data.
[0083] The storage device 54 can be a volatile memory or a non-volatile memory, or can include both a volatile memory and a non-volatile memory. Among them, the non-volatile memory can be a Read-Only Memory (ROM), a Programmable ROM (PROM), an Erasable Programmable ROM (EPROM), and an Electrically Erasable Programmable ROM (EEPROM) or a flash memory. The volatile memory can be a Random Access Memory (RAM), and this RAM is used as an external cache. The storage device 54 described in the present application is configured to store the point cloud data obtained by the communication interface 52. In some embodiments, the storage device 54 is a non-transitory computer-readable recording medium, and this non-transitory computer-readable recording medium is configured to store the following program: this program causes the processor 56 to execute the geometric point cloud encoding method shown below.
[0084] The processor 56 is coupled to the communication interface 52 and the storage device 54 via a bus system 58. It can be understood that the bus system 58 serves as a data bus for implementing the connection and communication between these components. In addition to the data bus, the bus system 58 can also be a power bus, a control bus, a status signal bus, or a combination thereof, but the present embodiment is not limited thereto.
[0085] The processor 56 includes a syntax element encoding unit 562, an attribute data set encoding unit 564, an attribute bitstream generation unit 566, and a parameter set encoding unit 568.
[0086] The syntax element encoding unit 562 is configured to encode a first syntax element for a specified attribute among a plurality of attributes of the points to be encoded in the point cloud, where the first syntax element indicates the number of a plurality of attribute encoding parameter sets that are allowed to be used for encoding at least one attribute data set of the specified attribute.
[0087] The parameter set encoding unit 568 is configured to encode the plurality of attribute encoding parameter sets in sequence.
[0088] It should be noted that by adding a syntax element indicating the number of attribute encoding parameter sets, it is allowed to use multiple attribute encoding parameter sets for one type of attribute. That is, for the attribute data set of one type of attribute, it is allowed to use multiple attribute encoding parameter sets for encoding the attribute data set. For example, the first attribute encoding parameter set is used to encode the first ten frames of the attribute data set, and the second attribute encoding parameter set is used to encode the next ten frames of the attribute data set. The number of frames encoded by the attribute encoding parameter set is not limited herein.
[0089] The attribute bitstream generation unit 566 is configured to generate an attribute bitstream by using the encoded first syntax element and the encoded plurality of attribute encoding parameter sets.
[0090] The attribute data set encoding unit 564 is configured to encode at least one attribute data set of the specified attribute in sequence.
[0091] It can be understood that in the present embodiment, the "unit" can be a part of a circuit, a part of a processor, a part of a program or software, etc. Of course, it can also be a module, or it can be non-modular. In addition, the various components in the present embodiment can be integrated into a processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The above integrated unit can be implemented in the form of a hardware or software functional module.
[0092] Figure 6 is a flowchart of a geometric point cloud encoding method applied to an encoder according to an embodiment of the present disclosure. Referring together to Figure 5 and Figure 6, the method of this embodiment is applied to Figure 5 the encoder 50 in
[0093] In step S602, the syntax element encoding unit 562 encodes a first syntax element for a specified attribute among multiple attributes of the point to be encoded in the point cloud, where the first syntax element indicates the number of multiple attribute encoding parameter sets that are allowed to be used for encoding at least one attribute data set for the specified attribute. The multiple attributes include, for example, color and reflectivity.
[0094] In step S604, the parameter set encoding unit 568 encodes the multiple attribute encoding parameter sets in sequence. For example, if the number of the multiple attribute encoding parameter sets provided for the specified attribute is equal to three, the three attribute encoding parameter sets are encoded one by one in sequence.
[0095] In step S606, the attribute bitstream generation unit 566 determines whether the encoding of all attributes is completed. If not, the process returns to step S602, and steps S602 and S604 are repeated to perform encoding for each of the multiple attributes.
[0096] On the other hand, if the encoding of all attributes is completed, the attribute bitstream generation unit 566 generates an attribute bitstream by using the encoded first syntax element and the encoded multiple attribute encoding parameter sets.
[0097] In some embodiments, the syntax element encoding unit 562 also encodes a second syntax element in the sequence header, where the second syntax element indicates the allowance of the multiple attribute encoding parameter sets for geometric point cloud encoding.
[0098] In some embodiments, before encoding the first syntax element, the syntax element encoding unit 562 also encodes a third syntax element in the attribute header, where the third syntax element indicates the allowance of the multiple attribute encoding parameter sets for the specified attribute; and if the third syntax element indicates that the allowance of the multiple attribute encoding parameter sets for the specified attribute is true, the attribute data set encoding unit 564 encodes the multiple attribute encoding parameter sets.
[0099] In some embodiments, the syntax element encoding unit 562 also encodes a fourth syntax element, where the fourth syntax element indicates the identifier of the specified attribute encoding parameter set in the multiple attribute encoding parameter sets for encoding the attribute data set.
[0100] In some embodiments, a multi-attribute data set may be provided for an attribute of a type. That is, for a specified attribute, a multi-attribute data set is provided. Accordingly, the syntax element encoding unit 562 also encodes a fifth syntax element that indicates the number of multi-attribute data sets of the specified attribute; and the attribute data set encoding unit 564 sequentially encodes the plurality of attribute data sets of the specified attribute. The value of the fifth syntax element is, for example, equal to the number of multi-attribute data sets minus one, and if the specified attribute does not exist, the value of the fifth syntax element is equal to minus one.
[0101] In some embodiments, before encoding the fifth syntax element, the syntax element encoding unit 562 also encodes a sixth syntax element that indicates the existence of the specified attribute; and if the sixth syntax element indicates that the existence of the specified attribute is true, the attribute data set encoding unit 564 encodes the plurality of attribute data sets of the specified attribute.
[0102] [Decoder]
[0103] Figure 7 is a schematic diagram of the hardware structure of the decoder provided by the embodiments of the present application. Refer to Figure 7 , the decoder 70 includes a communication interface 72, a storage device 74, and a processor 76, and the processor is coupled to the communication interface 72 and the storage device 74 through a bus system 78.
[0104] It can be understood that the hardware structures of the communication interface 72, the storage device 74, the processor 76, and the bus system 78 are similar to those of the communication interface 52, the storage device 54, the processor 56, and the bus system 58, and thus will not be described in detail herein. In some embodiments, the storage device 74 is a non-transitory computer-readable recording medium, and the non-transitory computer-readable recording medium is configured to store the following program: the program causes the processor 76 to execute the geometric point cloud decoding method as shown below.
[0105] In this embodiment, the communication interface 72 is configured to obtain the attribute bitstream of the point cloud, and the storage device 74 is configured to store the attribute bitstream of the point cloud.
[0106] The processor 76 includes a syntax element decoding unit 762, an attribute data set decoding unit 764, an attribute recovery unit 766, and a parameter set decoding unit 768.
[0107] The syntax element decoding unit 762 is configured to decode a first syntax element from the attribute bitstream, and the first syntax element indicates the number of multiple attribute coding parameter sets that allow at least one attribute data set of a specified attribute among multiple attributes of points in the point cloud to be decoded.
[0108] The parameter set decoding unit 768 is configured to decode the plurality of attribute coding parameter sets according to the decoded first syntax element.
[0109] The attribute restoration unit 766 is configured to restore the attributes of the points in the point cloud by using the decoded plurality of attribute coding parameter sets.
[0110] The attribute data set decoding unit 764 is configured to decode at least one attribute data set of a specified attribute.
[0111] It can be understood that, in this embodiment, the "unit" can be a part of a circuit, a part of a processor, a part of a program or software, etc. Of course, it can also be a module, or it can be non-modular. In addition, the various components in this embodiment can be integrated into a processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The above integrated unit can be implemented in the form of a hardware or software functional module.
[0112] Figure 8 is a flowchart of a geometric point cloud decoding method applied to a decoder according to an embodiment of the present disclosure. Referring together to Figure 7 and Figure 8 , the method of this embodiment is applied to Figure 7 the decoder 70 in. Now, the detailed steps of the geometric point cloud decoding method of the exemplary embodiment of the present disclosure will be described below in conjunction with the elements in the decoder 70.
[0113] In step S802, the syntax element decoding unit 762 decodes a first syntax element from the attribute bitstream, where the first syntax element indicates the number of a plurality of attribute coding parameter sets that are allowed to be used to decode at least one attribute data set of a specified attribute among the plurality of attributes of the points in the point cloud. The syntax element decoding unit 762 may calculate the value of the first syntax element plus one as the number of the plurality of attribute coding parameter sets of the specified attribute.
[0114] In step S804, the parameter set decoding unit 768 decodes the plurality of attribute coding parameter sets of the specified attribute according to the decoded first syntax element. For example, if the number of the plurality of attribute coding parameter sets indicated by the decoded first syntax element is equal to three, then three attribute coding parameter sets are decoded in sequence.
[0115] In step S806, the attribute restoration unit 766 restores the attributes of the points in the point cloud by using the decoded plurality of attribute coding parameter sets.
[0116] In some embodiments, the syntax element decoding unit 762 also decodes a second syntax element that indicates the permission for a multi-attribute coding parameter set used for geometric point cloud coding; and if the second syntax element indicates that the permission for the multi-attribute coding parameter set used for a specified attribute is true, the parameter set decoding unit 768 decodes the multi-attribute coding parameter set.
[0117] In some embodiments, the syntax element decoding unit 762 decodes a third syntax element that indicates the permission for a multi-attribute coding parameter set used for a specified attribute; and if the third syntax element indicates that the permission for the multi-attribute coding parameter set used for a specified attribute is true, the parameter set decoding unit 768 decodes the multi-attribute coding parameter set.
[0118] In some embodiments, the syntax element decoding unit 762 decodes a fourth syntax element that indicates the identity of a specified attribute coding parameter set from the multi-attribute coding parameter set for decoding an attribute data set.
[0119] In some embodiments, the syntax element decoding unit 762 decodes a fifth syntax element that indicates the number of multi-attribute data sets of a specified attribute; and the attribute data set coding unit 764 decodes the multi-attribute data sets of the specified attribute according to the decoded fifth syntax element. The syntax element decoding unit 762 may calculate the value of the fifth syntax element plus one as the number of the multi-attribute data sets of the specified attribute.
[0120] In some embodiments, the syntax element decoding unit 762 decodes a sixth syntax element that indicates the existence of a specified attribute; and if the sixth syntax element indicates that the existence of the specified attribute is true, the attribute data set decoding unit 764 decodes the multi-attribute data sets of the specified attribute.
[0121] Figure 9A and Figure 9B is a syntax table of a function for geometric point cloud coding according to an embodiment of the present disclosure.
[0122] Reference Figure 9AIn the syntax table 92, in the attribute header, the attributePresentFlag (the sixth syntax element) of the specified attribute (attrIdx) is encoded to indicate the presence of the specified attribute. If the value of the attributePresentFlag is equal to one, then the attribute_num_data_set_minus1 (the fifth syntax element) is encoded to indicate the number of multiple attribute data sets of the specified attribute, where attribute_num_data_set_minus1[attrIdx] plus one specifies the number of attribute data sets of the attrIdx-th attribute. The value of attribute_num_data_set_minus1[attrIdx] shall be in the range of 0 to N (including the end values), for example, N is 15. When the specified attribute does not exist, the value of attribute_num_data_set_minus1[attrIdx] is inferred to be equal to minus one.
[0123] The number of attribute data sets, the num_attr_data[attrIdx] of the attIdx-th attribute is calculated as follows.
[0124] num_attr_data[attrIdx] = attribute_num_data_set_minus1[attrIdx] + 1
[0125] Accordingly, the attribute slice can be modified to allow multiple attribute data sets to be encoded into the bitstream.
[0126] Reference Figure 9B In the syntax table 94, in the attribute slice, in the loop where attr ranges from 0 to attribute_num_data_set_minus1[attrIdx], the attribute data set attribute_slice_data() of the specified attribute attrIdx is encoded sequentially.
[0127] Such a design allows multiple attribute data sets of one type of attribute to use the same (identical) attribute information specified in the attribute header.
[0128] Figures 10A to 10C Is the syntax table of the function of geometric point cloud encoding according to an embodiment of the present disclosure.
[0129] Reference Figure 10AIn the syntax table 102, in the sequence header, the sps_multi_data_set_flag (the second syntax element) is encoded to indicate the permission for a multi-attribute coding parameter set for the specified attributes used for geometric point cloud coding, where sps_multi_data_set_flag being equal to 1 indicates that the multi-attribute coding parameter set is allowed to be used for the current point cloud coding, and sps_multi_data_set_flag being equal to 0 indicates that the multi-attribute coding parameter set is not allowed to be used for the current point cloud coding. When the attribute coding parameter set does not exist, the value of sps_multi_data_set_flag is inferred to be equal to 0.
[0130] Reference Figure 10B In the syntax table 104, in the attribute header, attribute_num_data_set_minus1[attrIdx] plus one specifies the number of attribute data sets for the attrIdx-th attribute. The value of attribute_num_data_set_minus1[attrIdx] shall be in the range from 0 to N (including the end values), for example, N is 15. When the specified attribute does not exist, the value of attribute_num_data_set_minus1[attrIdx] is inferred to be equal to minus one.
[0131] In addition, multi_set_flag (the third syntax element) being equal to 1 indicates that the multi-attribute coding parameter set for the specified attributes is allowed, and the number of allowed attribute coding parameter sets will be further specified by attribute_num_set_minus1 (the first syntax element); while multi_set_flag being equal to 0 indicates that the multi-attribute coding parameter set for the specified attributes is not allowed, and the number of allowed attribute coding parameter sets is equal to 1. When the attribute coding parameter set does not exist, the value of multi_set_flag is inferred to be equal to 0.
[0132] Furthermore, attribute_num_set_minus1[attrIdx] plus one specifies the number of attribute coding parameter sets allowed for coding the current attrIdx-th type of attribute. The value of attribute_num_set_minus1 shall be in the range from 0 to N (including the end values), for example, N is 15. When the attribute coding parameter set does not exist, the value of attribute_num_set_minus1 is inferred to be equal to 0.
[0133] The number of attribute coding parameter sets allowed for a specific attribute is calculated as follows.
[0134] num_allowed_attribute_coding = attribute_num_set_minus1[attrIdx] + 1
[0135] In loop LP, each attribute coding parameter set in the attribute coding parameter sets is coded. These attribute coding parameter sets include the attribute coding parameter maxNumOfNeighboursLog2Minus7 for the first attribute (attrIdx == 0) and the second attribute (attrIdx == 1), the attribute coding parameter cross_component_Pred and colorQuantParam for the first attribute (attrIdx == 0), and the attribute coding parameter nearestPredParam1 and reflQuantParam for the second attribute (attrIdx == 1).
[0136] Reference Figure 10C Referring to syntax table 106 in, in the attribute slice, attributeID[attrIdx] (the fourth syntax element) specifies the identification of the attribute coding parameter set used to code the attrIdx-th attribute. The value of attributeID[attrIdx] should be in the range of 0 to attribute_num_set_minus1[attrIdx] (including the end values). When the attribute information does not exist, the value of attributeID[attrIdx] is inferred to be equal to 0.
[0137] In summary, in the geometric point cloud coding method, encoder, and decoder of the present disclosure, several syntax elements are used to indicate the number of multiple attribute data sets of a specified attribute, the allowance of the multi-attribute coding parameter set for the specified attribute, and the number of multiple attribute coding parameter sets allowed to code the multiple attribute data sets of the specified attribute. Therefore, multi-attribute data sets and multi-attribute coding parameter sets of G-PCC can be supported.
[0138] It will be obvious to those skilled in the art that various modifications and variations can be made to the disclosed embodiments without departing from the scope or spirit of the present disclosure. In view of the foregoing, the present disclosure is intended to cover modifications and variations as long as they fall within the scope of the claims and their equivalents.
Claims
1. A geometric point cloud decoding method, which is applied to a decoder and includes: Decoding a first syntax element from an attribute bitstream of the point cloud, where the first syntax element indicates the number of multiple attribute coding parameter sets that are allowed to be used to decode at least one attribute data set of a specified attribute among multiple attributes of points in the point cloud; Decoding the multiple attribute coding parameter sets of the specified attribute according to the decoded first syntax element; And Restoring the attributes of points in the point cloud by using the decoded multiple attribute coding parameter sets.
2. The method according to claim 1, further including: Decoding a second syntax element, where the second syntax element indicates the allowance of a multiple-attribute coding parameter set used for the geometric point cloud encoding; And if the second syntax element indicates that the allowance of the multiple-attribute coding parameter set used for the specified attribute is true, decoding the first syntax element and the multiple attribute coding parameter sets.
3. The method according to claim 1, further including: Decoding a third syntax element, where the third syntax element indicates the allowance of a multiple-attribute coding parameter set used for the specified attribute; And if the third syntax element indicates that the allowance of the multiple-attribute coding parameter set used for the specified attribute is true, decoding the first syntax element and the multiple attribute coding parameter sets.
4. The method according to claim 1, further including: Decoding a fourth syntax element, where the fourth syntax element indicates the identifier of a specified attribute coding parameter set from the multiple attribute coding parameter sets that is used to decode the at least one attribute data set of the specified attribute.
5. The method according to claim 1, further including: Decoding a fifth syntax element, where the fifth syntax element indicates the number of multiple attribute data sets of the specified attribute; And Decoding the multiple attribute data sets of the specified attribute according to the decoded fifth syntax element.
6. The method according to claim 5, further including: Decoding a sixth syntax element, where the sixth syntax element indicates the existence of the specified attribute; And if the sixth syntax element indicates that the existence of the specified attribute is true, decoding the multiple attribute data sets of the specified attribute.
7. The method according to claim 1, further including: Calculating the value of the first syntax element plus one as the number of the multiple attribute coding parameter sets of the specified attribute.
8. A decoder, including: A communication interface configured to obtain an attribute bitstream of a point cloud; A storage device configured to store the attribute bitstream of the point cloud; And A processor coupled to the communication interface and the storage device, and the processor includes: A syntax element decoding unit that decodes a first syntax element from the attribute bitstream, where the first syntax element indicates the number of multiple attribute coding parameter sets that are allowed to be used to decode at least one attribute data set of a specified attribute among multiple attributes of points in the point cloud; A parameter set decoding unit, which decodes the multiple attribute encoding parameter sets of the specified attribute according to the decoded first syntax element; and An attribute recovery unit, which recovers the attributes of the points in the point cloud by using the decoded multiple attribute encoding parameter sets.
9. The decoder according to claim 8, wherein The syntax element decoding unit also decodes a second syntax element, which indicates the permission for the multiple-attribute encoding parameter sets for the specified attribute, and If the second syntax element indicates that the permission for the multiple-attribute encoding parameter sets for the specified attribute is true, the parameter set decoding unit decodes the multiple attribute encoding parameter sets.
10. The decoder according to claim 8, wherein The syntax element decoding unit also decodes a fifth syntax element, which indicates the number of multiple attribute data sets of the specified attribute, and The decoder further includes: An attribute data set encoding unit, which decodes the multiple attribute data sets of the specified attribute according to the decoded fifth syntax element.
11. A geometric point cloud encoding method, which is applied to an encoder and includes: For a specified attribute among multiple attributes of the points to be encoded in the point cloud, encode a first syntax element, which indicates the number of multiple attribute encoding parameter sets allowed for encoding at least one attribute data set for the specified attribute, and sequentially encode the multiple attribute encoding parameter sets; And Repeat the above steps to perform encoding on each of the multiple attributes of the points to be encoded in the point cloud to generate an attribute bitstream.
12. The method according to claim 11, wherein, Before encoding the first syntax element and the multiple attribute encoding parameter sets, the method further includes: Encoding a second syntax element, which indicates the permission for the multiple-attribute encoding parameter sets for the geometric point cloud encoding.
13. The method according to claim 11, wherein, Before encoding the first syntax element and the multiple attribute encoding parameter sets, the method further includes: Encoding a third syntax element, which indicates the permission for the multiple-attribute encoding parameter sets for the specified attribute, where If the third syntax element indicates that the permission for the multiple-attribute encoding parameter sets for the specified attribute is true, the multiple attribute encoding parameter sets are encoded.
14. The method according to claim 11, wherein When encoding the multiple attribute data sets of the specified attribute, the method further includes: Encoding a fourth syntax element, which indicates the identifier of the specified attribute encoding parameter set in the multiple attribute encoding parameter sets for encoding at least one attribute data set for the specified attribute.
15. The method according to claim 11, wherein Before encoding the first syntax element and the multiple attribute encoding parameter sets, the method further includes: Encoding a fifth syntax element, which indicates the number of multiple attribute data sets of the specified attribute, and sequentially encoding the multiple attribute data sets of the specified attribute.
16. The method according to claim 15, wherein, Before encoding the fifth syntax element and the multiple attribute data sets, the method further includes: encoding a sixth syntax element that indicates the presence of the specified attribute, where if the sixth syntax element indicates that the presence of the specified attribute is true, the multiple attribute data sets of the specified attribute are encoded.
17. The method according to claim 11, wherein the value of the first syntax element is equal to the number of the multiple attribute coding parameter sets minus one, and if the multiple attribute coding parameter sets of the specified attribute do not exist, the value of the first syntax element is equal to minus one.
18. An encoder, comprising: a communication interface configured to obtain data of a point cloud; a storage device configured to store the data of the point cloud; and a processor coupled to the communication interface and the storage device, and the processor includes: a syntax element encoding unit that encodes a first syntax element for a specified attribute among multiple attributes of a point to be encoded in the point cloud, the first syntax element indicating the number of multiple attribute coding parameter sets that are allowed to be used for encoding at least one attribute data set of the specified attribute; a parameter set encoding unit that sequentially encodes the multiple attribute coding parameter sets; and an attribute bitstream generation unit that generates an attribute bitstream by using the encoded first syntax element and the encoded multiple attribute coding parameter sets.
19. The encoder according to claim 18, wherein the syntax element encoding unit further encodes a third syntax element that indicates the allowance of a multi-attribute coding parameter set for the specified attribute; and if the third syntax element indicates that the allowance of the multi-attribute coding parameter set for the specified attribute is true, the parameter set encoding unit encodes the multiple attribute coding parameter sets.
20. The encoder according to claim 18, wherein the syntax element encoding unit further encodes a fifth syntax element that indicates the number of multiple attribute data sets of the specified attribute, and the encoder further includes: an attribute data set encoding unit that sequentially encodes the multiple attribute data sets of the specified attribute.
21. A non-transitory computer-readable recording medium storing a program that causes a computer to perform the following operations: decoding a first syntax element from an attribute bitstream of a point cloud, the first syntax element indicating the number of multiple attribute coding parameter sets that are allowed to be used for decoding at least one attribute data set of a specified attribute among multiple attributes of a point in the point cloud; decoding the multiple attribute coding parameter sets of the specified attribute according to the decoded first syntax element; and restoring the attributes of the points in the point cloud by using the decoded multiple attribute coding parameter sets.
22. A non-transitory computer-readable recording medium storing a program that causes a computer to perform the following operations: For a specified attribute among multiple attributes of a point to be encoded in a point cloud, encode a first syntax element that indicates the number of multiple attribute coding parameter sets that are allowed to be used for encoding at least one attribute data set for the specified attribute, and sequentially encode the multiple attribute coding parameter sets; and Repeat the above steps to perform encoding for each attribute among the multiple attributes of the point to be encoded in the point cloud to generate an attribute bitstream.