Geometric point cloud coding method, encoder and decoder
Through the improvement of geometric point cloud encoding method and decoder, it supports efficient processing of multi-attribute data sets, and solves the problem of low point cloud data compression efficiency in the existing technology, and is suitable for applications such as virtual reality, augmented reality, automotive lidar and high-definition maps.
Patent Information
- Application Number
- CN202380083607.8
- 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
The existing geometric point cloud encoding method (G-PCC) is not efficient when processing a large range of multi-attribute data sets, especially for application scenarios with multiple data sets, making it difficult to achieve efficient compression.
A geometric point cloud encoding method and decoder are provided. Through the decoding and encoding of syntax elements, it supports the processing of multi-attribute data sets, including decoding and encoding multiple attribute data sets of specified attributes, and using octree structure and attribute encoding technology to generate and parse geometric and attribute bit streams.
It realizes efficient encoding and decoding of multi-attribute data sets, improves the compression efficiency and quality of point cloud data, and is suitable for application scenarios such as virtual reality, augmented reality, automotive lidar and high-definition maps.
Smart Images

Figure CN120303922A_ABST
Abstract
Description
[0001] Cross - reference to related applications
[0002] This application claims priority to 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 automotive or robotics 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, the geometric information of the point cloud is first compressed, and then the corresponding attributes, including color or reflectivity, are compressed based on the geometric information.
[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 desire 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 multiple attribute data sets 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 data sets of a specified attribute among multiple attributes of points in the point cloud; decoding the multiple attribute data sets of the specified attribute according to the decoded first syntax element; and restoring the attributes of points in the point cloud for the specified attribute data set.
[0009] According to one embodiment, the method further includes: decoding a second syntax element that indicates the presence of a specified attribute; and if the second syntax element indicates that the presence of the specified attribute is true, decoding the plurality of attribute data sets of the specified attribute.
[0010] According to one embodiment, the method further includes: calculating the value of a first syntax element plus one as the number of the plurality of attribute data sets of the specified attribute.
[0011] According to one embodiment, the method further includes: decoding a third syntax element that indicates the number of a plurality of attribute coding parameter sets that are allowed to be used for decoding the plurality of attribute data sets of the specified attribute; and decoding the plurality of attribute coding parameter sets.
[0012] According to one embodiment, the method further includes: decoding a fourth syntax element that indicates the allowance of a multi-attribute coding parameter set for the specified attribute used for geometric point cloud coding; and if the fourth syntax element indicates that the allowance of the multi-attribute coding parameter set for the specified attribute is true, decoding the third syntax element and the plurality of attribute coding parameter sets.
[0013] According to one embodiment, when decoding the plurality of attribute data sets of the specified attribute, the method further includes: decoding a fifth syntax element that indicates the allowance of a multi-attribute coding parameter set for the specified attribute; and if the fifth syntax element indicates that the allowance of the multi-attribute coding parameter set is true, decoding the third syntax element and the plurality of attribute coding parameter sets.
[0014] According to one embodiment, when decoding the plurality of attribute data sets of the specified attribute, the method further includes: decoding a sixth syntax element that indicates the identity of a specified attribute coding parameter set from the plurality of attribute coding parameter sets for encoding the attribute data set.
[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, an attribute data 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 the number of a plurality of attribute data sets of a specified attribute among a plurality of attributes of points in the point cloud. The attribute data set decoding unit decodes the plurality of attribute data sets of the specified attribute according to the decoded first syntax element. The attribute recovery unit recovers the attributes of the points in the point cloud for the specified attribute data set.
[0016] According to one embodiment, the syntax element decoding unit also decodes a second syntax element that indicates the presence of a specified attribute, and if the second syntax element indicates that the presence of the specified attribute is true, the attribute data set decoding unit decodes the plurality of attribute data sets of the specified attribute.
[0017] According to one embodiment, the syntax element decoding unit also decodes a third syntax element that indicates the number of multiple attribute coding parameter sets allowed to be used for decoding the plurality of attribute data sets of the specified attribute, and the decoder further includes a parameter set decoding unit that decodes the plurality of attribute coding parameter sets.
[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 multiple attributes of the points to be encoded in the point cloud, encoding a first syntax element that indicates the number of multiple attribute data sets of the specified attribute, and sequentially encoding the plurality of attribute data sets of the specified attribute; and repeating 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.
[0019] According to one embodiment, the method further includes: before encoding the first syntax element, encoding a second syntax element that indicates the presence of the specified attribute, where if the second syntax element indicates that the presence of the specified attribute is true, the plurality of attribute data sets of the specified attribute are encoded.
[0020] According to one embodiment, for the specified attribute, the value of the first syntax element is equal to the number of the plurality of attribute data sets minus one, and if the specified attribute does not exist, the value of the first syntax element is equal to -1.
[0021] According to one embodiment, when encoding the plurality of attribute data sets of the specified attribute, the method further includes: encoding a third syntax element that indicates the number of multiple attribute coding parameter sets allowed to be used for encoding the plurality of attribute data sets of the specified attribute; and sequentially encoding the plurality of attribute coding parameter sets.
[0022] According to one embodiment, before encoding the third syntax element and the plurality of attribute coding parameter sets, the method further includes: encoding a fourth syntax element that indicates the allowance of the multiple attribute coding parameter sets for geometric point cloud encoding.
[0023] According to one embodiment, when encoding the multiple attribute data sets of a specified attribute, the method further includes: before encoding the third syntax element and the multiple attribute encoding parameter sets, encoding a fifth syntax element, where the fifth syntax element indicates the permission for the multiple attribute encoding parameter sets used for the specified attribute, and if the fifth syntax element indicates that the permission for the multiple attribute encoding parameter sets used for the specified attribute is true, then the multiple attribute encoding parameter sets are encoded.
[0024] According to one embodiment, when encoding the multiple attribute data sets of a specified attribute, the method further includes: encoding a sixth syntax element, where the sixth syntax element indicates the identity of the specified attribute encoding parameter set used in the multiple attribute encoding parameter sets to encode the attribute data set.
[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, an attribute data set encoding unit, and an attribute bitstream generating unit. The syntax element encoding unit encodes a first syntax element for a specified attribute among multiple attributes of a point to be encoded in the point cloud, where the first syntax element indicates the number of multiple attribute data sets of the specified attribute. The attribute data set encoding unit sequentially encodes the multiple attribute data sets of the specified attribute. The attribute bitstream generating unit generates an attribute bitstream by using the encoded first syntax element and the encoded multiple attribute data sets.
[0026] According to one embodiment, before encoding the first syntax element, the syntax element encoding unit further encodes a second syntax element, where the second syntax element indicates the existence of the specified attribute, and if the second syntax element indicates that the existence of the specified attribute is true, then the attribute data set encoding unit encodes the multiple attribute data sets of the specified attribute.
[0027] According to one embodiment, the syntax element encoding unit further encodes a third syntax element, where the third syntax element indicates the number of multiple attribute encoding parameter sets allowed to encode the multiple attribute data sets of the specified attribute, and the encoder further includes a parameter set encoding unit, and the parameter set encoding unit sequentially encodes the multiple attribute encoding parameter sets.
[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 the number of multiple attribute data sets of a specified attribute among multiple attributes of points in the point cloud; decoding the multiple attribute data sets of the specified attribute according to the decoded first syntax element; and restoring the attributes of the points in the point cloud for the specified attribute data set.
[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 the number of multiple attribute data sets of the specified attribute, and sequentially encoding the multiple attribute data sets of the specified attribute; 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 may 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 shows an octree structure of G-PCC according to an embodiment of the present application.
[0033] Figure 2C shows a corresponding digital representation of the octree structure according to an embodiment of the present application.
[0034] Figure 3 shows 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 hardware structure diagram 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 It is a schematic diagram of the hardware structure of the decoder provided by an embodiment of the present application.
[0039] Figure 8 It 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 It 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 It 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 purposes and for explanatory purposes, and are not used to limit the embodiments of the present application.
[0043] Figure 1 It 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] During 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 based on parameters whether to remove duplicate points. The process of quantization and removing duplicate points is also called the voxelization process.
[0045] Then, in step S106, the bounding box is divided into an octree for octree analysis. During the octree-based geometric information encoding process, 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 unit cube of 1×1×1, the division stops, and the points in the leaf nodes are arithmetically encoded in step S108 to generate a binary geometric bitstream, i.e., a geometric code stream.
[0046] Figure 2A and Figure 2B shows the octree structure of G-PCC according to an embodiment of the present application, and Figure 2CShows the corresponding digital representation of an octree structure according to an embodiment of the present application. Refer 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] Refer 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] Refer 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. Refer 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 a line or a point with the current cube.
[0050] Similarly, the parent cube of the current cube also has at most six adjacent cubes that are the same size as the parent cube and share a face with the parent cube. The parent cube of the current cube also has at most twelve adjacent cubes that are the same size as the parent cube and share an edge. The parent cube of the current cube also has at most eight adjacent cubes that are the same size as the parent cube and share 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, i.e., 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 geometric encoding is completed and geometric information is reconstructed 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 uncoded attribute information corresponds to the reconstructed geometric information. Attribute encoding mainly targets 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 quantizing these coefficients in step S124 (i.e., the quantized coefficients).
[0054] Finally, after octree partitioning and surface fitting, the geometric encoded data and the quantized coefficients are processed to synthesize the attribute encoded data, and then in step S126, the vertex coordinates (i.e., arithmetic coding) of each block are sequentially encoded to generate a binary attribute bitstream, i.e., an attribute code stream.
[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 the point cloud decoder. For the obtained binary bitstream, first, the geometric bitstream and the attribute bitstream in the binary bitstream are decoded in step S402 and step 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 step S416 and step 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 this disclosure, coding is considered to refer to the methods and systems of 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 coding will follow the predefined Morton or Hilbert order. A 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 out of 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 out of the 128 previously encoded neighboring points can be used to form an 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 building the attribute predictor. More specifically, according to the predefined Morton or Hilbert order, K previous points before the current point are selected, e.g., K = 6. Then, the new Morton or Hilbert codes of these N data points will be recalculated by adding a fixed offset (e.g., 1) to the coordinates (x, y, z) of these N 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, a full search method based on Hilbert codes 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 out of the 128 previously encoded neighboring points can be used to form an 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 M nearest points are selected, the weighted average of the attributes from these M points forms a predictor to encode the attributes of the current point.
[0069] It is known that the 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 values 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 a level. This level can be a signed integer and will be encoded into the bitstream.
[0071] [Color level encoding]
[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 the 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 can be encoded with the remainder of the absolute level to represent the residual level of the color component. In the remainder of the present 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 and 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 non-zero, first the zero run length is encoded, and after the zero run length encoding, 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 specification, 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 one, the third syntax is encoded to indicate whether the zero run length is equal to two; if not two, 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 the embodiments 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 the present embodiment is not limited thereto. The communication interface 52 is configured to acquire data of the point cloud.
[0083] The storage device 54 may be a volatile memory or a non-volatile memory, or may include both a volatile memory and a non-volatile memory. Among them, the non-volatile memory may be a Read-Only Memory (ROM), a Programmable ROM (PROM), an Erasable Programmable ROM (EPROM), an Electrically Erasable Programmable ROM (EEPROM), or a flash memory. The volatile memory may be a Random Access Memory (RAM), and the RAM is used as an external cache. The storage device 54 described in the present application is configured to store the data of the point cloud acquired by the communication interface 52. In some embodiments, the storage device 54 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 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 through a bus system 58. It can be understood that the bus system 58 serves as a data bus for realizing the connection and communication between these components. In addition to the data bus, the bus system 58 may 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 point to be encoded in the point cloud, where the first syntax element indicates the number of a plurality of attribute data sets of the specified attribute.
[0087] The attribute data set encoding unit 564 is configured to sequentially encode the plurality of attribute data sets of the specified attribute.
[0088] The attribute bitstream generation unit 566 is used to generate an attribute bitstream by using the encoded first syntax element and the encoded multiple attribute data sets.
[0089] The parameter set encoding unit 568 is used to encode the multiple attribute encoding parameter sets in sequence.
[0090] 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, each component 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.
[0091] 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 Figure 5 and Figure 6 , the method of this embodiment is applied to Figure 5 the encoder 50 in. Now, the detailed steps of the geometric point cloud encoding method of the exemplary embodiment of the present disclosure will be described below in conjunction with the elements in the encoder 50.
[0092] In step S602, the syntax element encoding unit 562 encodes the first syntax element for a specified attribute among multiple attributes of the point to be encoded in the point cloud, and the first syntax element indicates the number of multiple attribute data sets of the specified attribute. The multiple attributes include, for example, color and reflectivity, etc. The value of the first syntax element is, for example, equal to the number of the multiple attribute data sets minus one, and if the specified attribute does not exist, the value of the first syntax element is equal to minus one.
[0093] In step S604, the attribute data set encoding unit 564 encodes the multiple attribute data sets in sequence. For example, if the number of the multiple attribute data sets provided for the specified attribute is equal to three, the three attribute data sets are encoded one by one in sequence.
[0094] 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 on each of the multiple attributes.
[0095] 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 data sets.
[0096] In some embodiments, before encoding the first syntax element, the syntax element encoding unit 562 also encodes a second syntax element that indicates the presence of a specified attribute; and if the second syntax element indicates that the presence of the specified attribute is true, the attribute data set encoding unit 564 encodes the plurality of attribute data sets of the specified attribute.
[0097] In some embodiments, for a type of attribute, a multi-attribute encoding parameter set may be allowed. That is, for an attribute data set having an attribute of one type, a multi-attribute encoding parameter set is allowed to be used to encode the attribute data set. For example, a first attribute encoding parameter set is used to encode the first ten frames of the attribute data set, and a second attribute encoding parameter set is used to encode the next ten frames of the attribute data set. The number of frames to be encoded by the attribute encoding parameter set is not limited herein.
[0098] Therefore, the syntax element encoding unit 562 also encodes a third syntax element that indicates the number of multi-attribute encoding parameter sets allowed to be used to encode the plurality of attribute data sets of the specified attribute; and the parameter set encoding unit 568 encodes the plurality of multi-attribute encoding parameter sets in sequence. In this way, a multi-attribute encoding parameter set can be allowed to be used to encode an attribute data set of a type of attribute.
[0099] In some embodiments, before encoding the third syntax element, the syntax element encoding unit 562 encodes a fourth syntax element in the sequence header that indicates the allowance of a multi-attribute encoding parameter set for geometric point cloud encoding.
[0100] In some embodiments, when the attribute data set encoding unit 564 encodes the plurality of attribute data sets of the specified attribute, before encoding the third syntax element, the syntax element encoding unit 562 encodes a fifth syntax element in the attribute header that indicates the allowance of a multi-attribute encoding parameter set for the specified attribute; and if the fifth syntax element indicates that the allowance of the multi-attribute encoding parameter set is true, the attribute data set encoding unit 564 encodes the plurality of multi-attribute encoding parameter sets.
[0101] In some embodiments, when the attribute data set encoding unit 564 encodes the plurality of attribute data sets of the specified attribute, the syntax element encoding unit 562 encodes a sixth syntax element that indicates the identity of the specified attribute encoding parameter set used in the plurality of multi-attribute encoding parameter sets to encode the attribute data set.
[0102] [Decoder]
[0103] Figure 7It 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, so they will not be elaborated 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: this program causes the processor 76 to execute the geometric point cloud decoding method 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 used to decode a first syntax element from the attribute bitstream, and the first syntax element indicates the number of multiple attribute data sets of a specified attribute among multiple attributes of points in the point cloud.
[0108] The attribute data set decoding unit 764 is used to decode the multiple attribute data sets of the specified attribute according to the decoded first syntax element.
[0109] The attribute recovery unit 766 is used to recover the attributes of the points in the point cloud for the specified attribute data set.
[0110] The parameter set decoding unit 768 is used to decode multiple attribute encoding parameter sets.
[0111] It can be understood that in this embodiment, a "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, each component 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 It is a flowchart of a geometric point cloud decoding method applied to a decoder according to an embodiment of the present disclosure. Refer to Figure 7 and Figure 8, the method of the present embodiment is applied to Figure 7 the decoder 70 in
[0113] In step S802, the syntax element decoding unit 762 decodes a first syntax element from the attribute bitstream, and the first syntax element indicates the number of attribute data sets of a specified attribute among multiple attributes of 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 attribute data sets of the specified attribute.
[0114] In step S804, the attribute data set decoding unit 764 decodes the multiple attribute data sets of the specified attribute according to the decoded first syntax element.
[0115] In step S806, the attribute recovery unit 766 recovers the attributes of the points in the point cloud for the specified attribute data set.
[0116] In some embodiments, the syntax element decoding unit 762 decodes a second syntax element, and the second syntax element indicates the existence of the specified attribute; and if the second syntax element indicates that the existence of the specified attribute is true, the attribute data set decoding unit 764 decodes the multiple attribute data sets of the specified attribute.
[0117] In some embodiments, the syntax element decoding unit 762 decodes a third syntax element, and the third syntax element indicates the number of multiple attribute coding parameter sets allowed for decoding the multiple attribute data sets of the specified attribute; and the parameter set decoding unit 768 decodes the multiple attribute coding parameter sets.
[0118] In some embodiments, the syntax element decoding unit 762 decodes a fourth syntax element, and the fourth syntax element indicates the allowance of a multi-attribute coding parameter set for a specified attribute used for geometric point cloud coding; and if the fourth syntax element indicates that the allowance of the multi-attribute coding parameter set for the specified attribute is true, the parameter set decoding unit 768 decodes the multiple attribute coding parameter sets.
[0119] In some embodiments, when the attribute data set decoding unit 764 decodes the plurality of attribute data sets of a specified attribute, the syntax element decoding unit 762 decodes a fifth syntax element that indicates the permission for a multi-attribute coding parameter set for the specified attribute; and if the fifth syntax element indicates that the permission for the multi-attribute coding parameter set is true, the parameter set decoding unit 768 decodes the plurality of attribute coding parameter sets. The syntax element decoding unit 762 may calculate the value of the fifth syntax element plus one as the number of the plurality of attribute coding parameter sets of the specified attribute.
[0120] In some embodiments, when the attribute data set decoding unit 764 decodes the plurality of attribute data sets of a specified attribute, the syntax element decoding unit 762 decodes a sixth syntax element that indicates the identity of a specified attribute coding parameter set from the plurality of attribute coding parameter sets for encoding the attribute data set.
[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] Refer to Figure 9A In the syntax table 92 in, in the attribute header, the attributePresentFlag (the second 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, the attribute_num_data_set_minus1 (the first syntax element) is encoded to indicate the number of the plurality of attribute data sets of the specified attribute, where attribute_num_data_set_minus1[attrIdx] plus one specifies the number of the attribute data sets of the attrIdx-th attribute. The value of attribute_num_data_set_minus1[attrIdx] should 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, 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 a multi-attribute data set to be encoded into the bitstream.
[0126] Refer to Figure 9B Table 94 of the syntax in. 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 a multi-attribute data set of one type of attribute to use the same (identical) attribute information specified in the attribute header.
[0128] Figures 10A to 10C It is the syntax table of the function for geometric point cloud encoding according to an embodiment of the present disclosure.
[0129] Refer to Figure 10A Table 102 of the syntax in. In the sequence header, sps_multi_data_set_flag (the fourth syntax element) is encoded to indicate the allowance of a multi-attribute encoding parameter set for the specified attribute used for geometric point cloud encoding, where sps_multi_data_set_flag equal to 1 indicates that the multi-attribute encoding parameter set is allowed to be used for the current point cloud encoding, and sps_multi_data_set_flag equal to 0 indicates that the multi-attribute encoding parameter set is not allowed to be used for the current point cloud encoding. When the attribute encoding parameter set does not exist, the value of sps_multi_data_set_flag is inferred to be equal to 0.
[0130] Refer to Figure 10B Table 104 of the syntax in. In the attribute header, 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] should 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.
[0131] In addition, multi_set_flag (the fifth syntax element) being equal to 1 indicates that a multi-attribute coding parameter set for the specified attribute is allowed, and the number of allowed attribute coding parameter sets will be further specified by attribute_num_set_minus1 (the third syntax element); while multi_set_flag being equal to 0 indicates that a multi-attribute coding parameter set for the specified attribute 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 encoding the current attrIdx-th type of attribute. The value of attribute_num_set_minus1 should be in the range of 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, the attribute coding parameter sets are encoded, and these attribute coding parameter sets include the attribute coding parameters maxNumOfNeighboursLog2Minus7 for the first attribute (attrIdx == 0) and the second attribute (attrIdx == 1), the attribute coding parameters cross_component_Pred and colorQuantParam for the first attribute (attrIdx == 0), and the attribute coding parameters nearestPredParam1 and reflQuantParam for the second attribute (attrIdx == 1).
[0136] Reference Figure 10CIn the syntax table 106, in the attribute slice, attributeID[attrIdx] (the sixth syntax element) specifies the identification of the set of attribute coding parameters used to code the attrIdx-th attribute. The value of attributeID[attrIdx] should be in the range from 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, the multi-attribute data set and multi-attribute coding parameter set of G-PCC can be supported.
[0138] It will be apparent 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. Given 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 data sets of a specified attribute among multiple attributes of points in the point cloud; Decoding the multiple attribute data sets of the specified attribute according to the decoded first syntax element; And Restoring the attributes of points in the point cloud for a specified attribute data set.
2. The method according to claim 1, further including: Decoding a second syntax element, where the second syntax element indicates the existence of the specified attribute; And if the second syntax element indicates that the existence of the specified attribute is true, decoding the multiple attribute data sets of the specified attribute.
3. The method according to claim 1, further including: Calculating the value of the first syntax element plus one as the number of multiple attribute data sets of the specified attribute.
4. The method according to claim 1, further including: Decoding a third syntax element, where the third syntax element indicates the number of multiple attribute coding parameter sets allowed for decoding the multiple attribute data sets of the specified attribute; and decoding the multiple attribute coding parameter sets.
5. The method according to claim 4, further including: Decoding a fourth syntax element, where the fourth syntax element indicates the permission for a multiple attribute coding parameter set for the specified attribute used for geometric point cloud encoding; And if the fourth syntax element indicates that the permission for the multiple attribute coding parameter set for the specified attribute is true, decoding the third syntax element and the multiple attribute coding parameter sets.
6. The method according to claim 4, wherein, When decoding the multiple attribute data sets of the specified attribute, the method further includes: Decoding a fifth syntax element, where the fifth syntax element indicates the permission for a multiple attribute coding parameter set for the specified attribute; and if the fifth syntax element indicates that the permission for the multiple attribute coding parameter set is true, decoding the third syntax element and the multiple attribute coding parameter sets.
7. The method according to claim 4, wherein When decoding the multiple attribute data sets of the specified attribute, the method further includes: Decoding a sixth syntax element, where the sixth syntax element indicates the identifier of a specified attribute coding parameter set from the multiple attribute coding parameter sets for encoding an attribute data set.
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 data sets of a specified attribute among multiple attributes of points in the point cloud; An attribute data set decoding unit that decodes the multiple attribute data sets of the specified attribute according to the decoded first syntax element; and An attribute restoration unit that restores the attributes of the points in the point cloud for a specified attribute data set.
9. The decoder according to claim 8, wherein The syntax element decoding unit further decodes a second syntax element that indicates the existence of the specified attribute, and If the second syntax element indicates that the existence of the specified attribute is true, the attribute data set decoding unit decodes the multiple attribute data sets of the specified attribute.
10. The decoder according to claim 8, wherein The syntax element decoding unit further decodes a third syntax element that indicates the number of multiple attribute coding parameter sets allowed for decoding the multiple attribute data sets of the specified attribute, and The decoder further includes:[[]] A parameter set decoding unit that decodes the multiple attribute coding parameter sets.
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, encoding a first syntax element that indicates the number of multiple attribute data sets of the specified attribute, and sequentially encoding the multiple attribute data sets of the specified attribute; And Repeating 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, further including:[[]] Before encoding the first syntax element, encoding a second syntax element that indicates the existence of the specified attribute, where If the second syntax element indicates that the existence of the specified attribute is true, the multiple attribute data sets of the specified attribute are encoded.
13. The method according to claim 11, wherein For the specified attribute, the value of the first syntax element is equal to the number of the multiple attribute data sets minus one, and if the specified attribute does not exist, the value of the first syntax element is equal to minus one.
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 third syntax element that indicates the number of multiple attribute coding parameter sets allowed for encoding the multiple attribute data sets of the specified attribute; and sequentially encoding the multiple attribute coding parameter sets.
15. The method according to claim 14, wherein, Before encoding the third syntax element and the multiple attribute coding parameter sets, the method further includes:[[]] Encoding a fourth syntax element that indicates the allowance of the multiple attribute coding parameter sets for the geometric point cloud encoding.
16. The method according to claim 14, wherein, When encoding the multiple attribute data sets of the specified attribute, the method further includes:[[]] Before encoding the third grammar element and the multiple attribute coding parameter sets, encode a fifth grammar element, where the fifth grammar element indicates the permission for the multiple attribute coding parameter sets for the specified attribute, and if the fifth grammar element indicates that the permission for the multiple attribute coding parameter sets for the specified attribute is true, then the multiple attribute coding parameter sets are encoded.
17. The method according to claim 14, wherein, When encoding the multiple attribute data sets for the specified attribute, the method further includes: encoding a sixth grammar element, where the sixth grammar element indicates the identity of the specified attribute coding parameter set among the multiple attribute coding parameter sets for encoding the attribute data set for the specified attribute.
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 grammar element encoding unit that encodes a first grammar element for a specified attribute among multiple attributes of a point to be encoded in the point cloud, where the first grammar element indicates the number of multiple attribute data sets of the specified attribute; an attribute data set encoding unit that sequentially encodes the multiple attribute data sets of the specified attribute; and an attribute bitstream generation unit that generates an attribute bitstream using the encoded first grammar element and the encoded multiple attribute data sets.
19. The encoder according to claim 18, wherein before encoding the first grammar element, the grammar element encoding unit further encodes a second grammar element, where the second grammar element indicates the existence of the specified attribute, and if the second grammar element indicates that the existence of the specified attribute is true, then the attribute data set encoding unit encodes the multiple attribute data sets of the specified attribute.
20. The encoder according to claim 18, wherein the grammar element encoding unit further encodes a third grammar element, where the third grammar element indicates the number of multiple attribute coding parameter sets allowed for encoding the multiple attribute data sets of the specified attribute, and the encoder further includes: a parameter set encoding unit that sequentially encodes the multiple attribute coding parameter sets.
21. A non-transitory computer-readable recording medium storing a program that causes a computer to perform the following operations: decode a first grammar element from an attribute bitstream of a point cloud, where the first grammar element indicates the number of multiple attribute data sets of a specified attribute among multiple attributes of a point in the point cloud; decode the multiple attribute data sets of the specified attribute according to the decoded first grammar element; and and restore the attributes of the points in the point cloud for a specified attribute data set.
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 a plurality of attributes of an encoding target point in a point cloud, encode a first syntax element that indicates the number of a plurality of attribute data sets of the specified attribute, and sequentially encode the plurality of attribute data sets of the specified attribute; and Repeat the above steps to perform encoding for each of the plurality of attributes of the encoding target points in the point cloud to generate an attribute bitstream.