Point cloud decoding method, point cloud coding method, decoder and encoder
By introducing multiple header and point cloud data analysis methods for layer structure encoding in the AVS-GPCC specification, the problem of inapplicability of existing specifications when dealing with a large number of point cloud encoding inputs is solved, and efficient encoding and decoding of point cloud data is achieved.
Patent Information
- Application Number
- CN202380065375.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-09-16
- Filing Date
- 2023-09-15
- Publication Date
- 2025-04-22
AI Technical Summary
The existing AVS-GPCC specification is not applicable when handling large amounts of point cloud encoding inputs and cannot be used in many applications.
An improved method for geometric point cloud encoding is proposed, including obtaining point cloud code streams and parsing multiple headers and point cloud data encoded in layer structures, and achieving efficient encoding and decoding by identifying sequence headers, geometric headers, attribute headers, frame headers, etc.
This method can effectively decode the code stream and efficiently encode the point cloud data. It is suitable for future GPCC encoding standards, especially AVS-GPCC, and improves the processing capability of large amounts of point cloud data.
Smart Images

Figure CN119866508A_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims the benefit of priority to U.S. Provisional Application Serial No. 63 / 376,068, filed on September 16, 2022. The entire contents of the above patent application are incorporated herein by reference and become a part of this specification. Technical Field
[0003] Point cloud is a collection of data points in three-dimensional space. In various applications, point cloud is often used to represent the shape, appearance, and spatial distribution of objects or scenes. Point cloud encoding (also known as point cloud compression) is essential due to various reasons such as transmission efficiency and bandwidth limitations. Specifically, point cloud data can be very large, especially when capturing detailed three-dimensional scenes or objects. Efficient encoding technology is crucial to minimize the data size of point cloud data, thereby speeding up transmission and reducing the need for storage space.
[0004] Currently, Geometry Point Cloud Coding (G-PCC) is widely used in entertainment applications (e.g., virtual reality / augmented reality (VR / AR)) and industrial applications (e.g., laser radar (LiDAR) scan compression for cars or robots and high-definition (HD) maps for navigation). MPEG has released the first version of the G-PCC standard, and the Audio Video Standard (AVS) is also developing the G-PCC standard. In order to effectively 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. However, there are still many deficiencies in the existing AVS-GPCC specification that need to be improved. Summary of the invention
[0005] [Technical issues]
[0006] The current AVS-GPCC specification is not robust to large point cloud coding (PCC) inputs and cannot be used for many applications.
[0007] [Solution to the problem]
[0008] This disclosure proposes several improvements for geometric point cloud coding, and the proposed method can be used in future GPCC coding standards, especially AVS-GPCC. Along with the implementation of the proposed method, modifications to the codestream structure, syntax, constraints and mapping used to generate decoded point clouds are considered for standardization.
[0009] The point cloud decoding method of the present invention comprises the following steps: obtaining a point cloud code stream; and parsing a plurality of headers and point cloud data encoded in a layer structure in the point cloud code stream. The plurality of headers in the point cloud code stream include a sequence header, a geometry header, an attribute header and a frame header. The sequence header is arranged outside the geometry header, the attribute header and the frame header. The geometry header and the attribute header are arranged outside the frame header, and the attribute header is arranged after the geometry header.
[0010] In one embodiment of the present invention, the multiple headers in the point cloud code stream further include an attribute slice header and a geometry slice header, and the geometry slice header is located before the attribute slice header. The step of parsing the multiple headers and point cloud data encoded in the layer structure in the point cloud code stream includes: when the syntax identification bit included in the frame header is equal to 1, parsing the attribute slice header and the geometry slice header of each slice of the PCC frame; when the slice index is equal to 0 and the syntax identification bit included in the frame header is not equal to 1, only parsing the attribute slice header and the geometry slice header of one slice of the PCC frame.
[0011] In one embodiment of the present invention, parsing multiple headers encoded in a layer structure in a point cloud code stream includes: identifying multiple headers from the point cloud code stream according to a prefix bit string and a predefined code. The last bit of the prefix bit string is connected to the first bit of the predefined code.
[0012] In one embodiment of the present invention, the prefix bit string includes a 24-bit binary code, and the predefined code includes an 8-bit binary code.
[0013] In one embodiment of the present invention, the predefined code includes at least one of the following: slice start code, slice end code, PCC sequence start code, PCC sequence end code, attribute start code, geometry start code, frame start code and PCC edit code.
[0014] In one embodiment of the present invention, the frame header includes a first syntax element that specifies a decoding order of PCC frames. In another embodiment of the present invention, the frame header includes a first syntax element that specifies an order of PCC frames associated with a plurality of point cloud frames. The first syntax element is configured to uniquely identify the associated PCC frame among all the plurality of point cloud frames. When the associated PCC frame is to be output from the decoded point cloud buffer, the first syntax element is configured to indicate a position of the associated PCC frame in the output order relative to an output order position of other point cloud frames to be output from the decoded point cloud buffer.
[0015] In an embodiment of the present invention, the frame header includes a second syntax element specifying a frame type of the PCC frame.
[0016] In an embodiment of the invention, the frame header includes a third syntax element specifying whether more than one slice exists in the PCC frame.
[0017] In one embodiment of the present invention, the frame header includes a third syntax element, a fourth syntax element, and a fifth syntax element. The third syntax element specifies whether there are more than one slice in the PCC frame, and the fourth syntax element specifies the number of slices in the PCC frame. The fifth syntax element specifies whether multiple geometric slice headers and multiple attribute slice headers in the frame header are used for the slices when the third syntax element is equal to a preset value.
[0018] In one embodiment of the present invention, when the second syntax element specifying the frame type of the PCC frame is equal to a preset value, there is a sixth syntax element in the frame header specifying whether the current intra-coded PCC frame is a random access point, and a seventh syntax element specifying whether a variable quantization parameter (ΔQP) is enabled for the PCC frame.
[0019] In one embodiment of the present invention, the method further includes: identifying the encoding specification version of the point cloud code stream according to a syntax element associated with the encoding specification version in at least one header among the multiple headers.
[0020] In one embodiment of the present invention, the method further includes: when the syntax element associated with the coding specification version is equal to a preset value, obtaining the syntax element of the length of the specified sequence extension data and the syntax element of the specified sequence extension data in at least one of the multiple headers.
[0021] In one embodiment of the present invention, the method further includes: when a syntax element associated with the coding specification version of the point cloud code stream is equal to a preset value, by using a decoder that conforms to the first coding specification version, according to a syntax element specifying a length of the sequence extension data and a syntax element specifying the sequence extension data, ignoring the value of the sequence extension data. When the syntax element associated with the coding specification version is equal to the preset value, the coding specification version of the point cloud code stream is the second coding specification version.
[0022] In one embodiment of the present invention, extended data and user data are set after each header of the multiple headers, and the extended data and the user data are identified from the point cloud code stream according to the prefix bit string and the predefined code.
[0023] In one embodiment of the present invention, the prefix bit string includes a 24-bit binary code, and the predefined code includes an 8-bit binary code.
[0024] In one embodiment of the present invention, the predetermined code includes an extension start code and a user data start code.
[0025] The point cloud coding method of the present invention comprises the following steps: acquiring point cloud data; encoding the point cloud data to generate a point cloud code stream including multiple headers encoded in a layer structure. The multiple headers in the point cloud code stream include a sequence header, a geometry header, an attribute header and a frame header. The sequence header is arranged outside the geometry header, the attribute header and the frame header. The geometry header and the attribute header are arranged outside the frame header, and the attribute header is located after the geometry header.
[0026] In one embodiment of the present invention, the multiple headers in the point cloud code stream further include an attribute slice header and a geometry slice header, and the geometry slice header is located before the attribute slice header. The step of encoding the point cloud data to generate a point cloud code stream including multiple headers encoded in a layer structure further includes: when the syntax identification bit included in the frame header is equal to 1, the attribute slice header and the geometry slice header of each slice of the PCC frame are inserted into the point cloud code stream; and when the slice index is equal to 0 and the syntax identification bit included in the frame header is not equal to 1, only the attribute slice header and the geometry slice header of one slice of the PCC frame are inserted into the point cloud code stream.
[0027] In one embodiment of the present invention, the step of encoding point cloud data to generate a point cloud code stream including multiple headers encoded in a layer structure further includes: inserting a prefix bit string and a predefined code into the point cloud code stream to indicate multiple headers in the point cloud code stream, wherein the last bit of the prefix bit string is connected to the first bit of the predefined code.
[0028] In one embodiment of the present invention, the step of encoding point cloud data to generate a point cloud codestream including multiple headers encoded in a layer structure further includes: inserting a syntax element according to the encoding specification version of the point cloud codestream into at least one of the multiple headers of the point cloud codestream.
[0029] In one embodiment of the present invention, the step of encoding point cloud data to generate a point cloud code stream including multiple headers encoded in a layer structure further includes: when a syntax element associated with the encoding specification version is equal to a preset value, a syntax element specifying the length of the sequence extension data and a syntax element specifying the sequence extension data are inserted into at least one header among the multiple headers.
[0030] The decoder of the present invention includes a storage device and a processor. The processor is electrically connected to the storage device and is configured to: obtain a point cloud code stream; and parse multiple headers and point cloud data encoded in a layer structure in the point cloud code stream. The multiple headers in the point cloud code stream include a sequence header, a geometry header, an attribute header, and a frame header. The sequence header is set outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are set outside the frame header, and the attribute header is located after the geometry header.
[0031] The encoder of the present invention includes a storage device and a processor. The processor is electrically connected to the storage device and is configured to: acquire point cloud data; and encode the point cloud data to generate a point cloud code stream including multiple headers encoded in a layer structure. The multiple headers in the point cloud code stream include a sequence header, a geometry header, an attribute header, and a frame header. The sequence header is set outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are set outside the frame header, and the attribute header is located after the geometry header.
[0032] [Effects of the Invention]
[0033] Based on the above content, according to the point cloud decoding method, point cloud encoding method, decoder and encoder of the present invention, the code stream can be efficiently decoded and the point cloud data can be efficiently encoded.
[0034] In order to make the above contents easier to understand, several embodiments are described in detail below with reference to the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0035] Figure 1 is a schematic diagram of a G-PCC encoding process according to an embodiment of the present invention.
[0036] Figure 2A and Figure 2B FIG. 4 shows an octree structure of a G-PCC according to an embodiment of the present invention.
[0037] Figure 2C A corresponding digital representation of an octree structure according to an embodiment of the present invention is shown.
[0038] Figure 3 The structure of a cube according to an embodiment of the present invention is shown.
[0039] Figure 4 is a schematic diagram of a G-PCC decoding process according to an embodiment of the present invention.
[0040] Figure 5A and Figure 5B FIG. 4 is a schematic diagram of a syntax table for color residual coding according to an embodiment of the present invention.
[0041] Figure 6 is a schematic diagram of a syntax table of reflective coding according to an embodiment of the present invention.
[0042] Figure 7 FIG. 4 is a diagram of a syntax table of zero-run length coding according to an embodiment of the present invention.
[0043] Figure 8 is a flowchart of a point cloud decoding method applied to a decoder according to an embodiment of the present invention.
[0044] Fig. 9 The flowchart of parsing the attribute slice header and the geometry slice header according to one embodiment of the present invention.
[0045] Fig. 10A is a schematic diagram of a syntax table of a point cloud code stream according to an embodiment of the present invention.
[0046] Fig. 10B 4 is a schematic diagram of a syntax table of geometric slices according to an embodiment of the present invention.
[0047] Fig. 10C is a schematic diagram of a syntax table of attribute slices according to an embodiment of the present invention.
[0048] Fig.11 is a flow chart of identifying a header according to an embodiment of the present invention.
[0049] Fig.12 is a schematic diagram of a syntax table of a frame header according to an embodiment of the present invention.
[0050] Fig.13 The present invention is a flowchart of identifying a coding standard version of a point cloud code stream according to an embodiment of the present invention.
[0051] Fig.14A and Fig. 14B is a schematic diagram of a syntax table of a sequence header according to an embodiment of the present invention.
[0052] Fig.15A and Fig. 15B is a schematic diagram of a syntax table of a geometry header according to an embodiment of the present invention.
[0053] Fig.16A and Fig. 16B is a schematic diagram of a syntax table of an attribute header according to an embodiment of the present invention.
[0054] Fig.17A and Fig. 17B It is a schematic diagram of a syntax table of a geometry slice header according to an embodiment of the present invention.
[0055] Fig.18A and Fig.18B It is a schematic diagram of a syntax table of an attribute slice header according to an embodiment of the present invention.
[0056] Fig.19 is a schematic diagram of a syntax table of a sequence header according to an embodiment of the present invention.
[0057] Fig. 20 is a schematic diagram of an extension and user data structure according to an embodiment of the present invention.
[0058] Fig.21Aand Fig. 21B is a schematic diagram of an extended data structure according to an embodiment of the present invention.
[0059] Fig. 22 is a schematic diagram of a user data structure according to an embodiment of the present invention.
[0060] Fig.23 is a flowchart of a point cloud encoding method applied to an encoder according to an embodiment of the present invention.
[0061] Fig.24 is a schematic block diagram of a coding and decoding device provided according to an embodiment of the present invention. DETAILED DESCRIPTION
[0062] In order to understand the features and technical contents of the embodiments of the present invention in more detail, the implementation methods of the embodiments of the present invention will be described in detail below in conjunction with the accompanying drawings. The accompanying drawings are only for reference and explanation purposes and are not intended to limit the embodiments of the present invention.
[0063] The present disclosure proposes a coding method for G-PCC. The proposed method can be used in future G-PCC coding standards, such as AVS-GPCC. With the implementation of the proposed method, modifications to the code stream structure, syntax, constraints, and mappings used to generate decoded point clouds are considered for standardization.
[0064] Point cloud refers to a collection of irregularly distributed discrete points in space, representing the spatial structure and surface properties of a three-dimensional (3D) object or scene. Each point in the point cloud can include the location information of the point and the attribute information of the point. The location information of the point can be the three-dimensional coordinate information of the point. The location information of the point can also be called the geometric information of the point. On the other hand, the attribute information of the point can be color information and / or reflectivity.
[0065] For example, the color information of a point may include data from various color spaces, such as RGB color space, YCbCr color space, or YUV color space. That is, the color information may include RGB information. Alternatively, the color information may include brightness information and chromaticity information. In addition, based on the principle of laser measurement, a point in a point cloud may include the three-dimensional coordinate information of the point and the laser reflection intensity (reflectivity). For another example, based on the principle of photogrammetry, a point in a point cloud may include the three-dimensional coordinate information and color information of the point.
[0066] Point cloud data can be obtained by a variety of methods, including but not limited to at least one of the following: (1) generation by a computer device, wherein the computer device can generate point cloud data based on a virtual 3D object and a virtual 3D scene; (2) 3D laser scanning acquisition, wherein point cloud data of a static real-world three-dimensional object or three-dimensional scene can be acquired through 3D laser scanning, and millions of point cloud data can be obtained per second; (3) 3D photogrammetry acquisition, wherein point cloud data of a real-world visual scene can be acquired through a 3D photography device (i.e., a set of cameras or camera devices with multiple lenses and sensors) to obtain point cloud data of a real-world visual scene, and point cloud data of a dynamic real-world three-dimensional object or three-dimensional scene can be acquired through 3D photography; and (4) acquisition of point cloud data of biological tissues and organs through medical equipment. In the medical field, point cloud data of biological tissues and organs can be acquired through medical equipment such as magnetic resonance imaging (MRI), computed tomography (CT) and electromagnetic positioning information.
[0067] These technologies have reduced the cost and time of point cloud data acquisition while improving data accuracy. However, the processing of large amounts of 3D point cloud data may face challenges in storage space and transmission bandwidth limitations. G-PCC is a solution to such problems. G-PCC usually includes compression of geometric information and compression of attribute information, and the operations of point cloud encoding are introduced below.
[0068] Figure 1 is a schematic diagram of a G-PCC encoding process according to an embodiment of the present invention. Figure 1 , Figure 1 The G-PCC encoding process shown can be implemented by 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 position of the point (i.e., geometric information) and the attributes of the point are encoded (i.e., encoded and decoded) respectively. Based on the above, it can be understood that the points in the point cloud can have both position information and attribute information. Therefore, the encoding of the points can involve position encoding and attribute encoding. In some cases, the position information of the point is referred to as geometric information, and the encoding of the point position can also be referred to as geometric encoding.
[0069] In the geometric encoding process, in step S102, the coordinates of the points are transformed to transform the coordinates of the points from the initial domain to the transformed domain. Specifically, the positions of the points are coordinated to enclose the point cloud in a bounding box. In step S104, the transformed coordinates are voxelized. Voxelization of the transformed coordinates can include quantization and removal of certain points of the point cloud. Quantization mainly plays a role in scaling. Due to quantization rounding, some positions of the point cloud are the same, so in step S104, it is further determined whether to remove duplicate points based on parameters. The process of quantization and removal of duplicate points is also called voxelization process.
[0070] In step S106, an octree is generated based on the voxelized transformed coordinates. In other words, the bounding box is divided into an octree for octree analysis. In the octree-based geometric information encoding process, the bounding box is divided into eight sub-cubes, and the non-empty (containing points in the point cloud) sub-cubes are further divided into eight equal parts until a leaf node is obtained. In step S108, the points in the leaf nodes of the octree structure are arithmetically encoded to generate a binary geometric code stream, i.e., a geometric code stream.
[0071] Figure 2A and Figure 2B shows an octree structure of a G-PCC according to an embodiment of the present invention, and Figure 2C 2 shows a corresponding digital representation of an octree structure according to an embodiment of the present invention. Figure 2A , the cube axis-aligned bounding box B consists of two extreme points (0, 0, 0) and (2 d , 2 d , 2 d ) where d is the maximum dimension of a given point cloud along the x, y or z direction. Points in the point cloud will be referred to as "points" hereinafter. All points are included in this defined cube B.
[0072] refer to Figure 2B , cube B is divided into eight child cubes B1 to B8, which creates an octree structure that allows one 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 common face / edge / point with the given cube. The volume of each cube in cubes B1 to B8 is 1 / 8 of the volume of its parent cube B. Each cube in cubes 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 minimum cube is predefined. For a given point, the parent cube of the given point is defined as the minimum size cube that contains the given point. The sibling point of a given point is defined as a point that has the same parent cube as the given point.
[0073] refer to Figure 2C , an octree is a recursive data structure commonly used to describe a three-dimensional space in which each internal cube has exactly eight sub-cubes. The space is recursively subdivided into eight octaves, where the resolution of the sub-cube is equal to the size of the point - the smallest element without further subdivision. To represent a cube, an 8-bit binary code following a space-filling curve pattern (Hilbert, Morton) is used, and each sub-cube is assigned a "1" value or a "0" value to indicate whether the space in the sub-cube has any points associated with the sub-cube, or whether the sub-cube is empty. Only occupied sub-cubes are further subdivided. The process of subdividing the parent cube terminates when the size of the sub-cube is equal to the size of the indivisible element (i.e., the spatial resolution of the point cloud, or simply the size of the point).
[0074] Figure 3 FIG. 2 shows a structure of a cube according to an embodiment of the present invention. Figure 3 ,Depending on the position of the current cube, a cube can have up to six cubes of the same size that share a face. In addition, the current cube may have some neighboring cubes that share lines or points with the current cube.
[0075] Similarly, the parent cube of the current cube also has at most six neighboring 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 neighboring cubes that are the same size as the parent cube and share a side. The parent cube of the current cube also has at most eight neighboring cubes that are the same size as the parent cube and share a point with the parent cube.
[0076] Return to reference Figure 1 In step S110, multiple points are analyzed to potentially determine a surface representation of a set of these points. In other words, based on the surface formed by the distribution of point clouds within each block, 12 parts of the surface and the block are analyzed. Multiple edges generate up to 12 vertices (intersections), which are arithmetically encoded (surface fitting based on intersections) in step S108 to generate a binary geometry code stream. In step S112, the transformed coordinates of the points in the point cloud can be reconstructed based on the octree, data indicating the surface determined in step S110 and / or other information. The reconstructed geometric information can be used in the attribute encoding process.
[0077] In the attribute encoding process, after the geometric information is reconstructed, a color transformation is performed in step S114, wherein the color information (i.e., attribute information) is transformed from the RGB color space to the YUV color space, the YCbCr color space, or other color spaces. In step S116, the point cloud is recolored using the reconstructed geometric information so that the unencoded attribute information corresponds to the reconstructed geometric information. Since the geometric information has changed after the geometric encoding, it is necessary to reassign attribute values to each point after the geometric encoding.
[0078] In the color information encoding process, there are mainly two transformation methods. The first method is the distance-based lifting transformation in step S120, which relies on the level of detail (LOD) division in step S118. The second method is the transformation of the region adaptive hierarchical transform (RAHT) in step S122, which directly transforms the image. Both methods convert the color information from the spatial domain to the frequency domain to obtain high-frequency coefficients and low-frequency coefficients through transformation. The high-frequency coefficients and the low-frequency coefficients can be referred to as transform coefficients. Next, in step S124, these transform coefficients are quantized to generate quantized transform coefficients. In some cases, quantizing the transform coefficient of a certain point may involve dividing the quantized attribute value (i.e., the quantized transform coefficient) by the quantization parameter (QP) step size of the point, and the QP step size is determined according to the quantization parameter (QP). In step S126, the syntax elements representing the quantized attribute coefficients can be arithmetically encoded to output these syntax elements in the attribute code stream. That is, the quantized transform coefficients may be encoded by using arithmetic coding to generate a binary attribute code stream, ie, an attribute code stream.
[0079] Figure 4 is a schematic diagram of a G-PCC decoding process according to an embodiment of the present invention. Figure 4 The process in can be implemented by the point cloud decoder. For the acquired binary code stream, the geometric code stream and the attribute code stream in the binary code stream are first decoded in steps S402 and S404 respectively. When decoding the geometric code stream, the position of the point cloud (i.e., geometric information) is obtained through arithmetic decoding in step S402, octree reconstruction in step S406, surface fitting in step S408, geometric reconstruction in step S410, and inverse coordinate transformation in step S412.
[0080] When the attribute code stream is decoded, the attributes of the point cloud are obtained through arithmetic decoding in step S404, dequantization in step S414, LOD-based and lifting-based inverse transforms in steps S416 and S418, or RAHT-based inverse transforms in step S420, and inverse color transforms in step S422. It is worth noting that the quantized attribute value (i.e., the quantized transform coefficient) may be dequantized in step S414. In some cases, dequantizing the quantized attribute value of a point may involve multiplying the quantized attribute value by the QP step size of the point, and the QP step size is determined according to the quantization parameter (QP).
[0081] Octree-based geometric information can be encoded using context-based arithmetic coding. The point cloud may also have some corresponding attribute information (including color, reflectivity, etc.) that needs to be compressed. Since adjacent points in the point cloud may have strong correlations, prediction-based coding methods have been developed and used to compose and encode point cloud attributes. More specifically, a prediction is formed from adjacent encoded attributes. Then, the difference between the current attribute and the prediction is encoded.
[0082] It is worth noting that Figure 1 and Figure 4 The described steps may be implemented as a plurality of program codes or circuits, and the present invention is not particularly limited thereto.
[0083] In this disclosure, coding may be considered to mean encoding and decoding methods and systems.
[0084] [Attribute Coding in AVS G-PCC]
[0085] AVS is developing the G-PCC standard. After encoding the geometric information, the point cloud cube can be converted into a one-dimensional array using Morton or Hilbert codes / sequences. Each position in the cube will have a corresponding Morton code 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 a predefined Morton or Hilbert sequence. Predictors can be generated from previously encoded points in Morton or Hilbert order. The attribute differences between the current point and its predicted point are encoded into the code stream.
[0086] To reduce memory usage, some predefined numbers have been assigned to limit the number of neighboring points that can be used to generate a prediction. For example, only M data points out of the previous N consecutive coded points can be used to encode the current attribute. In previous AVS G-PCC software, M and N were set to fixed numbers 3 and 128, respectively.
[0087] If more than 128 points have been encoded before the current point, only 3 points out of the 128 previously encoded neighboring points can be used to form an attribute predictor according to a predefined order. If fewer than 128 points have been encoded before the current point, all of these encoded points will be used as candidate points to establish the attribute predictor. More specifically, the previous K points (e.g., K=6) before the current point are selected according to a predefined Morton or Hilbert order. Then, the new Morton code or Hilbert code of these N points will be recalculated by adding a fixed shift (e.g., 1) to the coordinates (x, y, z) of the N data points. Assuming that the new Morton code or Hilbert code of the current position is X, 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 K point sets, P point sets, and Q point sets, M points with the M closest "distances" between these encoded points and the current point are selected. As an example, the distance d1 is defined as follows, and other distance metrics may also be used.
[0088] d1=|x1-x2|+|y1-y2|+|z1-z2| (1)
[0089] Among them, (x1, y1, z1) and (x2, y2, z2) are the coordinates of the current point and the pre-selected point respectively.
[0090] More recently, a complete search method based on Hilbert codes has been applied to AVS GPCC attribute encoding. 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.
[0091] If there are fewer than 128 points encoded before the current point, all of these encoded points will be used as candidate points to form the attribute predictor. The M points with the M closest "distances" between these encoded points and the current point are selected from up to 128 previously encoded points. As an example, the distance d2 is defined as follows, and other distance metrics can also be used.
[0092] d2=|x1-x3|+|y1-y3|+|z1-z3| (2)
[0093] Where (x1, y1, z1) and (x3, y3, z3) are the coordinates of the current point and the pre-selected point along the Hilbert order, respectively. Once the M nearest points have been selected, a weighted average of the attributes of these M points is formed as a predictor to encode the attributes of the current point.
[0094] It is known that points that share 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.
[0095] The residual is defined as the difference in the property value between the current point and its predictor. Depending on the application, PCC can be lossless or lossy. Therefore, the residual can be quantized with or without a predefined quantization process. In this disclosure, the unquantized and quantized residuals are referred to as levels. The level can be a signed integer and will be encoded into the bitstream.
[0096] [Color level coding]
[0097] Each point has three color attributes, which come from the three color components. If the levels of all three color components are zero, the point is called a zero-level point. Otherwise, if at least one of the color components of the point has a non-zero level, the point is called a non-zero-level point. In the current AVS-GPCC, the number of consecutive zero-level points is called the zero-run length. The zero-run length value and level of the non-zero-level point are encoded into the bitstream.
[0098] 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 predefined encoding order, the residuals between the three color predictors of the current point and the color attributes corresponding to the current point 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 will be increased by one, and the process continues to the next point. If the current point is a non-zero level point, the zero run length value will be encoded first, and then the three color levels of the non-zero level point will be encoded immediately. After the non-zero level point is horizontally encoded, the zero run length value will be reset to zero, and the process continues to the next point until all points are completed.
[0099] On the decoding side, the zero run length value is decoded first 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 horizontal points are decoded and then the next zero run length value is decoded. This process continues until all points are decoded.
[0100] For example, refer to Figure 5A and Figure 5B , Figure 5A and Figure 5B Schematic diagram of syntax tables 500a and 500b for color residual coding according to an embodiment of the present invention. For non-zero level points, at least one of the three components has a non-zero level. The values of the three components are encoded in color_residual_coding(). The remainder of several one-bit flags plus the absolute level is encoded to represent the levels of the three components. The absolute level of the color residual or the absolute level of the color residual minus one can be encoded in the function coded_level_coding() and is referred to as the coded level in other parts of this disclosure.
[0101] In an exemplary case, a first flag (e.g., color_first_comp_zero) is encoded to indicate whether the first component of the color is zero; if the first component of the color is zero, a second flag (e.g., color_second_comp_zero) is encoded to indicate whether the second component of the color is zero; if the second component of the color is zero, the absolute level minus one and the sign of the third component are encoded according to the following encoding level method.
[0102] In another case, a first flag is encoded to indicate whether the first component of the color is zero; if the first component of the color is zero, a second flag is encoded to indicate whether the second component of the color is zero; if the second component of the color is not zero, the absolute level minus one and the sign of the second component are encoded according to the following encoding level method, and the absolute level and sign of the third component are encoded according to the following encoding level method.
[0103] In another case, a first flag is encoded to indicate whether the first component of the color is zero; if the first component of the color is not zero, the absolute level minus one and the sign of the first component are encoded according to the following encoding level method, and the absolute level and sign of the second component, and the absolute level and sign of the third component are encoded according to the following encoding level method, respectively.
[0104] The encoding method for generating the coding level is designed as follows. A first flag (e.g., coded_level_equal_zero) is encoded to indicate whether the coding level is zero; if the coding level is the absolute level of a component minus one, that is, when isComponentNoneZero is equal to true (true), the sign of the level of the component (e.g., coded_level_sign) is encoded. If the first flag indicates that the coding level is not zero, and if the coding level is the absolute level of a component itself, that is, when isComponentNoneZero is equal to false (false), the sign of the level of the component is encoded. A second flag (e.g., coded_level_gt1) is encoded to indicate whether the coding level is greater than one; if the coding level is greater than one, the parity of the coding level minus two is encoded, and a third flag (e.g., coded_level_minus2_div2_gt0) is encoded to indicate whether the coding level minus two divided by two is greater than zero; if the coding level minus two divided by two is greater than zero, the coding level minus two divided by two minus one is encoded.
[0105] [Reflectivity level coding]
[0106] In the current AVS-GPCC specification, both the zero run length of the reflectivity level and the non-zero reflectivity level are encoded into the code stream. 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 predefined coding 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 will increase by one, and the process continues to the next point. If the level is not zero, the zero run length will be encoded first, and then after the zero run length encoding, the non-zero level will be encoded. After encoding the non-zero level, the zero run length counter will be reset to zero, and the process continues to the next point. On the decoding side, the number of zero run lengths is first decoded, and the level corresponding to the number of zero run length points is set to zero. Then, the non-zero level is decoded and the number of the next zero run length is decoded. The process continues until all points are decoded.
[0107] For example, refer to Figure 6 , Figure 66 is a schematic diagram of a syntax table 600 for reflectivity coding according to an embodiment of the present invention. For a non-zero level, if the current point is not a repeated point, the sign of the level is first encoded using the syntax element residual_sign. Then, the syntax element abs_level_minus1_parity indicating the parity of the absolute level minus one is encoded. Another syntax element abs_level_minus1_div2_gt0 is encoded to indicate whether the value of the absolute level minus one divided by two is greater than zero; if abs_level_minus1_div2_gt0 is greater than zero, another syntax element abs_level_minus1_div2_gt1 is encoded to indicate whether the value of the absolute level minus one divided by two is greater than one; if abs_level_minus1_div2_gt1 is greater than 1, another syntax element abs_level_minu1_div2_minus2 is encoded to indicate the value of the absolute level minus one divided by two minus two.
[0108] [Zero run length encoding]
[0109] In the current AVS-GPCC specification, a zero run length value is encoded into the codestream. For example, refer to Figure 7 , Figure 7 7 is a schematic diagram of a syntax table 700 for zero run length coding according to an embodiment of the present invention. More specifically, the first syntax zero_run_length_level_equal_zero is encoded to indicate whether the zero run length is equal to zero; if the zero run length is not zero, the second syntax zero_run_length_level_equal_one is encoded to indicate whether the zero run length is equal to one; if the zero run length is not one, the third syntax zero_run_length_level_equal_two is encoded to indicate whether the zero run length is equal to two; if the zero run length is not two, the fourth syntax zero_run_length_level_minus3_parity is encoded to indicate the parity of the zero run length minus three, and the fifth syntax zero_run_length_level_minus3_div2 is encoded to indicate the value of the zero run length minus three divided by two.
[0110] [Aspect 1: Code stream structure]
[0111] Figure 8 is a flow chart of a point cloud decoding method applied to a decoder according to an embodiment of the present invention. Figure 8 The various steps in this method can be used by the decoder as follows Figure 4The G-PCC decoding process shown in FIG. 8 is performed. In step S810, the decoder can obtain a point cloud code stream. In step S820, the decoder can parse multiple headers and point cloud data encoded in a layer structure in the point cloud code stream. The multiple headers in the point cloud code stream include at least a sequence header, a geometry header, an attribute header, a frame header, and other headers. The sequence header is set outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are set outside the frame header, and the attribute header is located after the geometry header. That is, multiple headers are set in the code stream in a specific order. Each header may include information (e.g., parameters, identifiers, or flags) for decoding the point cloud code stream. In addition, the point cloud data in the point cloud code stream may also include geometry data and attribute data. In some embodiments, the geometry data may include a general geometry data code stream of one or more slices of a PCC frame. In some embodiments, the attribute data may include a general attribute data code stream of one or more slices of a PCC frame. For example, the geometry code stream can be decoded according to the information in the geometry header. The attribute codestream can be decoded according to the information in the attribute header. However, when the syntax element included in the sequence header and specifying whether the attribute data exists is equal to 0, the attribute header and the attribute data may not be included in the point cloud codestream.
[0112] In one embodiment of the present invention, the multiple headers in the point cloud code stream may further include an attribute slice header and a geometry slice header, and the geometry slice header is located before the attribute slice header. When the syntax flag included in the frame header is equal to 1 and the syntax element included in the sequence header indicates that the attribute data exists, the decoder can parse the attribute slice header and the geometry slice header of each slice of the PCC frame. When the syntax flag included in the frame header is equal to 1 and the syntax element included in the sequence header indicates that the attribute data does not exist, the decoder can parse the geometry slice header of each slice of the PCC frame. When the slice index is equal to 0, the syntax flag included in the frame header is not equal to 1 (that is, the syntax flag is equal to 0), and the syntax element included in the sequence header indicates that the attribute data exists, the decoder can only parse the attribute slice header and the geometry slice header of one slice of the PCC frame. When the slice index is equal to 0, the syntax flag included in the frame header is not equal to 1 (that is, the syntax flag is equal to 0), and the syntax element included in the sequence header indicates that the attribute data does not exist, the decoder can only parse the geometry slice header of one slice of the PCC frame. Further, when the slice index is not equal to 0 and the syntax flag included in the frame header is not equal to 1 (ie, the syntax flag is equal to 0), the decoder may not parse the attribute slice header and the geometry slice header of the current slice of the PCC frame.
[0113] Fig. 9 FIG. 1 is a flowchart of parsing an attribute slice header and a geometry slice header according to an embodiment of the present invention. Fig. 9 The various steps in this method can be used by the decoder as follows Figure 4 The decoder may perform the G-PCC decoding process shown in FIG. 821. In step S821, the decoder may determine whether the syntax flag included in the frame header is equal to 1. If step S821 is determined to be yes, then in step S822, the decoder may parse the attribute slice header and the geometry slice header of each slice of the PCC frame when the syntax element included in the sequence header indicates that the attribute data does not exist. That is, when the syntax flag included in the frame header is equal to 1, each slice may correspond to one attribute slice header and one geometry slice header, and for multiple slices in the same PCC frame, the code stream may include multiple attribute slice headers and multiple geometry slice headers. On the other hand, if step S821 is determined to be no, then in step S823, the decoder may parse the attribute slice header and the geometry slice header of only one slice of the PCC frame when the slice index is equal to 0 and when the syntax element included in the sequence header indicates that the attribute data does not exist. That is, in step S823, for all slices in the same PCC frame, the code stream may include only one attribute slice header and one geometry slice header.
[0114] Fig. 10A is a schematic diagram of a syntax table 100 of a point cloud code stream according to an embodiment of the present invention. Fig. 10B It is a schematic diagram of a syntax table of geometric slices according to an embodiment of the present invention. Fig. 10C Schematic diagram of a syntax table of attribute slices according to an embodiment of the present invention. FIG. 10A to FIG. 10C The point cloud codestream is organized in a hierarchical structure. The sequence header is the first parsed structure that includes some sequence-related syntax. After the first sequence header, a geometry header can be parsed. Then, if the syntax element that specifies whether the attribute exists (i.e., attribute_present_flag) is equal to 1, an attribute header can be parsed after parsing the geometry header. If the syntax element that specifies whether the attribute exists (i.e., attribute_present_flag) is equal to 0, an attribute header may not be parsed after parsing the geometry header. The codestream starts with the first sequence header and ends with the first sequence end code or the first editing code. It is worth noting that Fig. 10A Taking only one sequence header, one geometry header and one attribute header as an example, the present disclosure does not limit the number of sequence headers, geometry headers and attribute headers. That is, there may be multiple sequence headers, multiple geometry headers and multiple attribute headers between the first sequence header and the first sequence end code or the first editing code among multiple sequence headers.
[0115] In one embodiment of the present invention, except for the first sequence header, the first geometry header and the first attribute header which can appear in order, other sequence headers, other geometry headers and other attribute headers can appear one, two or three in any order.
[0116] In one embodiment of the present invention, there may be one or more coded PCC frames after the sequence header, geometry header, and attribute header. Fig. 10A In the exemplary case of , there is a PCC frame header associated with each coded PCC frame. The latest sequence header, the latest geometry header, and the latest attribute header may be used to encode the current PCC frame. The coded code stream has the same decoding order as the coded PCC frame. The coding order of the PCC frames may be different from the display order of the PCC frames.
[0117] In one embodiment of the present invention, the syntax table of the point cloud code stream may include a conditional statement for determining whether to parse the attribute slice header and the geometry slice header, wherein the conditional statement may include checking whether the slice index is equal to 0 and the syntax flag bit included in the frame header (for example, Fig.12 If the slice index is equal to 0 or the syntax flag (for example, Fig.12 If the multi_slice_header_enabled_flag in the decoder is equal to 1, the decoder can parse the attribute slice header and the geometry slice header when the syntax element (i.e., attribute_present_flag) is equal to 1. If the slice index is equal to 0 or the syntax flag (i.e., multi_slice_header_enabled) is equal to 1, the decoder can parse the geometry slice header when the syntax element (i.e., attribute_present_flag) is equal to 0. Otherwise, if the slice index is not equal to 0 and the syntax flag (i.e., Fig.12 If the multi_slice_header_enabled_flag in the decoder is not equal to 1, the decoder may not be able to parse the attribute slice header and geometry slice header of the current slice.
[0118] In one embodiment of the present invention, the decoder can identify multiple headers from the point cloud code stream according to the prefix bit string and the predefined code. The last bit of the prefix bit string is connected to the first bit of the predefined code. In other words, the code composed of the prefix bit string and the predefined code can be used to identify the header and data information.
[0119] In one embodiment of the present invention, the prefix bit string includes a 24-bit binary code, and the predefined code includes an 8-bit binary code. For example, the prefix bit string may be a 24-bit binary code "0000 0000 0000 0000 0000 0001".
[0120] In one embodiment of the present invention, the predefined code includes at least one of the following: slice start code, slice end code, PCC sequence start code, PCC sequence end code, attribute start code, geometry start code, frame start code and PCC edit code. The value of the predefined code can be shown in Table 1.
[0121] Table 1
[0122] Predefined code types value slice_start_code 00~7F reserved 80~8E slice_end_code 8F reserved 90~AF pcc_sequence_start_code B0 pcc_sequence_end_code B1 attribute_start_code B2 geometry_start_code B3 frame_start_code B4 user_data_start_code B5 pcc_edit_code B6 extension_start_code B7 reserved B8 System codes B9~FF
[0123] Fig.11 FIG. 1 is a flowchart of identifying multiple headers according to an embodiment of the present invention. Fig.11 The various steps in this method can be used by the decoder as follows Figure 4 The G-PCC decoding process shown in FIG. 8 is performed. In step S825, the decoder can determine whether the next bit sequence matches the prefix bit string. If step S825 is determined to be yes, the decoder can identify multiple headers from the point cloud code stream based on the prefix bit string and the predefined code.
[0124] For example, based on the syntax table 100 in Table 1 and Fig. 10. If the next 32 bits in the code stream are "000000000 0000 0000 0000 0001" connected with "10110000", the decoder can recognize the pcc_sequence_start_code for identifying the sequence header.
[0125] [Aspect 2: AVS_GPCC frame header]
[0126] The present disclosure proposes a frame header of a PCC frame, in which all frame-related syntax elements (eg, frame number, frame coding type, etc.) are specified.
[0127] In one embodiment of the present invention, the frame header includes a first syntax element that specifies a decoding order of PCC frames. In another embodiment of the present invention, the frame header includes a first syntax element that specifies an order of PCC frames associated with a plurality of point cloud frames. The first syntax element is configured to uniquely identify the associated PCC frame among all point cloud frames. When the associated PCC frame is to be output from the decoded point cloud buffer, the first syntax element is configured to indicate the position of the associated point cloud frame in the output order relative to the output order position of other point cloud frames to be output from the decoded point cloud buffer.
[0128] In an embodiment of the present invention, the frame header includes a second syntax element specifying a frame type of the PCC frame.
[0129] In an embodiment of the invention, the frame header includes a third syntax element specifying whether more than one slice exists in the PCC frame.
[0130] In one embodiment of the present invention, the frame header includes a third syntax element specifying whether there are more than one slice in the PCC frame. When the third syntax element is equal to a preset value, there is a fourth syntax element specifying the number of slices in the PCC frame and a fifth syntax element specifying whether multiple geometry slice headers and multiple attribute slice headers are used for the slices in the frame header.
[0131] In one embodiment of the present invention, when the second syntax element specifying the frame type of the PCC frame is equal to a preset value, there is a sixth syntax element in the frame header specifying whether the PCC frame encoded within the current frame is a random access point, and a seventh syntax element specifying whether a variable QP is enabled for the PCC frame.
[0132] For example, Fig.12 FIG. 2 is a schematic diagram of a syntax table 200 of a frame header according to an embodiment of the present invention. Fig.12 , the frame header may include a first syntax element (i.e., decode_order_index) that specifies the decoding order of the PCC frames. In another example of the present invention, the frame header may include a first syntax element (i.e., decode_order_index) that specifies the order of the PCC frames associated with each point cloud frame. The first syntax element (i.e., decode_order_index) may be configured to uniquely identify the associated PCC frame among all point cloud frames. When the associated PCC frame is to be output from the decoded point cloud buffer, the first syntax element (i.e., decode_order_index) may be configured to indicate the position of the associated point cloud frame in the output order relative to the output order position of other point cloud frames to be output from the decoded point cloud buffer.
[0133] The frame header may include a second syntax element (ie, frame_type) that specifies the frame type of the PPC frame specified in Table 2.
[0134] Table 2
[0135] Binary Code Frame encoding type 00 Intra-PCC 01 PPC 10 B PCC 11 Reserve
[0136] In addition, the third syntax element in the frame header, mul_slice_flag, specifies whether there is more than one slice in the PCC frame. In an exemplary case, mul_slice_flag equal to 0 specifies that there is only one slice in the current picture, while mul_slice_flag equal to 1 specifies that there are more than one slice in the current picture.
[0137] When the third syntax element (i.e., mul_slice_flag) is equal to 1, a fourth syntax element (i.e., num_slice_minus_two) that specifies the number of slices in the PCC frame and a fifth syntax element (i.e., mult_slice_header_enabled_flag) that specifies whether multiple geometry slice headers and multiple attribute slice headers are used for these slices are present in the frame header. In detail, num_slice_minus_two plus 2 specifies the number of slices of the current picture. When num_slice_minus_two is not present, it is inferred to be equal to -1. The number of slices (referred to as num_slice) can be obtained according to the following formula (1).
[0138] num_slice = num_slice_minus_two + 2 formula (1)
[0139] Furthermore, mult_slice_header_enabled_flag equal to 1 specifies that multiple geometry slice headers and attribute slice headers can be used for multiple slices, while mult_slice_header_enabled_flag equal to 0 specifies that only one geometry slice header and one attribute slice header are used for the current frame. When mult_slice_header_enabled_flag is not present, it is inferred to be equal to 0.
[0140] In one embodiment of the present invention, when the second syntax element specifying the frame type of the PCC frame is equal to "00", a sixth syntax element (i.e., random_access_point_flag) specifying whether the current intra-coded PCC frame is a random access point and a seventh syntax element (i.e., frame_qp_delta_enabled_flag) specifying whether the variable QP is enabled for the PCC frame are present in the frame header. In an exemplary case, random_access_point_flag equal to 1 specifies that the current intra-coded PCC frame may be a random access point, while random_access_point_flag equal to 0 specifies that the current intra-coded PCC frame may not be a random access point. When random_access_point_flag is not present, it is inferred to be 0. In addition, pic_qp_delta_enabled_flag equal to 1 specifies that the variable quantization parameter (ΔQP) may be enabled for the current PCC frame, while pic_qp_delta_enabled_flag equal to 0 specifies that the variable QP may not be enabled for the current PCC frame.
[0141] [Aspect 3: Extension of AVS-GPCC]
[0142] In order to add more coding tools in future versions of the coding specification, it is necessary to design an interface that supports compatibility between the current standard and the extended standard. First, the decoder of the subsequent version of the standard (e.g., GPCC v2) can fully decode the code stream of the previous version of the standard (e.g., GPCC v1), that is, backward compatibility. Second, the decoder of the previous standard (e.g., GPCC v1) is also preferably forward compatible, at least compatible with the high-level syntax part of the code stream generated by the subsequent version of GPC (e.g., GPCC v2).
[0143] More specifically, a GPCC v1-compliant decoder may not be able to decode the entire content of a GPCC v2 codestream because a GPCC v2 codestream may use coding tools that are defined in the GPCC v2 specification but are unknown to the GPCC v1 decoder. However, it is very ideal that a GPCC v1 decoder should be able to decode at least the high-level syntax portion of a GPCC v2 codestream. By successfully decoding the high-level syntax, a GPCC decoder can determine not only the tool information, but also the profile and tier information. This information provides the decoder with hints about the capabilities required to decode the codestream. For example, the tool information prompts the decoder which coding tools are used in the codestream. The profile and tier information prompt the decoder about the uncompressed video data throughput that needs to be supported.
[0144] If the high-level syntax has been successfully parsed, the GPCC decoder can determine whether the current code stream can be decoded. If the current code stream can be decoded, the GPCC decoder can terminate the decoding process normally. Therefore, forward compatibility is also very necessary for designing earlier versions of the standard. In contrast, a GPCC v1 decoder that does not have this capability may not even be able to parse the high-level syntax of a GPCC v2 code stream. Therefore, all tools, profiles, and layer information will be unknown.
[0145] The present disclosure proposes to add syntax elements (eg, one-bit or two-bit syntax elements) to support the above capabilities, ie, both forward compatibility and backward compatibility between previous version standards and subsequent version standards.
[0146] In one embodiment of the present invention, the encoding specification version of the point cloud code stream may be identified based on a syntax element associated with the encoding specification version in at least one header among multiple headers.
[0147] In an embodiment of the present invention, when a syntax element associated with a coding specification version is equal to a preset value, a syntax element specifying a length of sequence extension data and a syntax element specifying sequence extension data in at least one header among multiple headers may be obtained.
[0148] In one embodiment of the present invention, when a syntax element associated with a coding specification version of a point cloud code stream is equal to a preset value, the value of the sequence extension data can be ignored according to a syntax element specifying the length of the sequence extension data and a syntax element specifying the sequence extension data by using a decoder conforming to the first coding specification version. When the syntax element associated with the coding specification version is equal to the preset value, the coding specification version of the point cloud code stream is a second coding specification version. The coding specification with the second coding specification version may be specified later than the coding specification with the first coding specification version.
[0149] Fig.13 FIG. 1 is a flowchart of identifying a coding standard version of a point cloud code stream according to an embodiment of the present invention. Fig.13 The various steps in this method can be used by the decoder as follows Figure 4 The decoder may obtain a point cloud code stream in step S1310. In step S1320, the decoder may parse multiple headers encoded in a layer structure in the point cloud code stream. In step S1330, the decoder may identify the coding specification version of the point cloud code stream according to the syntax elements associated with the coding specification version in the sequence header.
[0150] In step S1340, the decoder may determine whether the syntax element associated with the coding specification version is equal to a preset value. If step S1350 is determined to be yes, the decoder may obtain a syntax element specifying the length of the sequence extension data and a syntax element specifying the sequence extension data in at least one header of the multiple headers. It is worth noting that if the decoder complies with the first coding specification version and the point cloud code stream is encoded according to the second coding specification version, the decoder may ignore the value of the sequence extension data according to the syntax element specifying the length of the sequence extension data. In step S1360, the decoder decodes the point cloud code stream according to the multiple headers.
[0151] Fig.14A and Fig. 14B FIG. 3 is a schematic diagram of a syntax table 300a of a sequence header according to an embodiment of the present invention. Fig.14A and Fig. 14B , the syntax elements associated with the coding specification version (e.g., sequence_extension_enable) are included in the sequence header. In an exemplary case, sequence_extension_enable equal to 0x00 specifies that the sequence_extension_length syntax element and the sequence_extension_data_byte syntax element are not present in the sequence header syntax structure, while sequence_extension_enable equal to 0x10 specifies that sequence_extension_length and sequence_extension_data_byte may be present in the sequence header syntax structure. Here, in a bitstream that conforms to the first coding specification version of the current specification, sequence_extension_enable should be equal to 0x00. However, due to the second coding specification version of the current specification, sequence_extension_enable may be configured and specified to be equal to 0x10, and a decoder that conforms to the first coding specification version of the current specification should allow the value of sequence_extension_enable equal to 0x10 to appear in the syntax.
[0152] In an exemplary case, sequence_extension_length specifies the length of the sequence extension data (in bytes, excluding the bits used to signal sequence_extension_length itself). When sequence_extension_length is not present, the value of sequence_extension_length is inferred to be equal to 0. Although sequence_extension_length is not present in a bitstream conforming to the first coding specification version, sequence_extension_length may be used and specified in the specification of the second coding specification version. A decoder conforming to the first coding specification version shall allow sequence_extension_length to be present and in the range of 0 to N (inclusive), for example, N is 256.
[0153] In one exemplary case, Fig.14A In the , sequence_extension_data_byte[i] can have any value. The presence and value of sequence_extension_data_byte[i] does not affect the decoding process specified in the first coding specification version. A decoder conforming to the first coding specification version shall ignore the value of all sequence_extension_data_byte[i] syntax elements. Its value does not affect the decoding process specified in the first coding specification version of this specification.
[0154] In one exemplary case, Fig. 14B , the sequence_extension_data_bit may have any value. The presence and value of the sequence_extension_data_bit does not affect the decoding process specified in the first encoding specification version of this specification. A decoder conforming to the first encoding specification version shall ignore the value of all sequence_extension_data_bit syntax elements. Its value does not affect the decoding process specified in the first encoding specification version of this specification.
[0155] In an exemplary case, more_data_in_sequence_header_extension() is defined as follows:
[0156] - If (current position in the sequence_header() syntax structure) - (position immediately following sequence_extension_length) is less than (sequence_extension_length*8), the return value of more_data_in_sequence_header_extension() is equal to TRUE.
[0157] Otherwise, the return value of more_data_in_sequence_header_extension() is equal to FALSE.
[0158] Fig.15A and Fig. 15B FIG. 4 is a schematic diagram of syntax tables 400a and 400b of a geometry header according to an embodiment of the present invention. Fig.15A and Fig. 15B , syntax elements associated with the coding specification version (e.g., geometry_extension_enable) are included in the sequence header. In an exemplary case, geometry_extension_enable equal to 0x00 specifies that the geometry_extension_length syntax element and the geometry_extension_data_byte syntax element are not present in the sequence header syntax structure, while geometry_extension_enable equal to 0x10 specifies that geometry_extension_length and geometry_extension_data_byte may be present in the sequence header syntax structure.
[0159] The definitions of geometry_extension_enable, geometry_extension_length, geometry_extension_data_byte[i] and geometry_extension_data_bit are similar to those of sequence_extension_enable, sequence_extension_length, sequence_extension_data_byte[i] and sequence_extension_data_bit, so those skilled in the art can infer the usage and definition of these syntax elements with reference to the above description.
[0160] Fig.16A and Fig. 16B900a and 900b are schematic diagrams of syntax tables 900a and 900b of attribute headers according to an embodiment of the present invention. Fig.16A and Fig. 16B , syntax elements associated with the coding specification version (e.g., attribute_extension_enable) are included in the sequence header. In an exemplary case, attribute_extension_enable equal to 0x00 specifies that attribute_extension_length syntax elements and attribute_extension_data_byte syntax elements are not present in the sequence header syntax structure, while attribute_extension_enable equal to 0x10 specifies that attribute_extension_length and attribute_extension_data_byte may be present in the sequence header syntax structure.
[0161] The definitions of attribute_extension_enable, attribute_extension_length, attribute_extension_data_byte[i] and attribute_extension_data_bit are similar to those of sequence_extension_enable, sequence_extension_length, sequence_extension_data_byte[i] and sequence_extension_data_bit, so those skilled in the art can infer the usage and definition of these syntax elements with reference to the above description.
[0162] Fig.17A and Fig. 17B 1700a and 1700b are schematic diagrams of syntax tables 1700a and 1700b of a geometry slice header according to an embodiment of the present invention. Fig.17A and Fig. 17B, syntax elements associated with the coding specification version (e.g., geometry_slice_extension_enable) are included in the sequence header. In an exemplary case, geometry_slice_extension_enable equal to 0x00 specifies that the geometry_slice_extension_length syntax element and the geometry_slice_extension_data_byte syntax element are not present in the sequence header syntax structure, while geometry_slice_extension_enable equal to 0x10 specifies that geometry_slice_extension_length and geometry_slice_extension_data_byte may be present in the sequence header syntax structure.
[0163] The definitions of geometry_slice_extension_enable, geometry_slice_extension_length, geometry_slice_extension_data_byte[i] and geometry_slice_extension_data_bit are similar to those of sequence_extension_enable, sequence_extension_length, sequence_extension_data_byte[i] and sequence_extension_data_bit, so those skilled in the art can infer the usage and definition of these syntax elements with reference to the above description.
[0164] Fig.18A and Fig.18B 1800a and 1800b are schematic diagrams of syntax tables 1800a and 1800b of attribute slice headers according to an embodiment of the present invention. Fig.18A and Fig.18B, a syntax element associated with the coding specification version (e.g., attribute_slice_extension_enable) is included in the sequence header. In an exemplary case, attribute_slice_extension_enable equal to 0x00 specifies that the attribute_slice_extension_length syntax element and the attribute_slice_extension_data_byte syntax element are not present in the sequence header syntax structure, while attribute_slice_extension_enable equal to 0x10 specifies that the attribute_slice_extension_length and the attribute_slice_extension_data_byte may be present in the sequence header syntax structure.
[0165] The definitions of attribute_slice_extension_enable, attribute_slice_extension_length, attribute_slice_extension_data_byte[i] and attribute_slice_extension_data_bit are similar to those of sequence_extension_enable, sequence_extension_length, sequence_extension_data_byte[i] and sequence_extension_data_bit, so those skilled in the art can infer the usage and definition of these syntax elements with reference to the above description.
[0166] Fig.19 FIG. 1 is a schematic diagram of a syntax table 1900 of a sequence header according to an embodiment of the present invention. Fig.19 , the syntax elements associated with the coding specification version (e.g., profile_id) are included in the sequence header. In an exemplary case, profile_id equal to 0xXX specifies that the sequence_extension_length syntax element and the sequence_extension_data_byte[i] syntax element are not present in the sequence header syntax structure. It is worth noting that FIG. 14A to FIG. 18B The syntax tables in can be modified in a similar manner by using syntax elements associated with the coding specification version (e.g., profile_id).
[0167] The present disclosure proposes to use predefined extension and user data structures to support both forward compatibility and backward compatibility between previous version standards and subsequent version standards. In one embodiment of the present invention, high-level syntax or newly defined functions of subsequent version standards can be presented in extension data or user data.
[0168] In one embodiment of the present invention, each of the multiple headers is followed by extended data and user data, and the extended data and user data are identified from the point cloud code stream according to the prefix bit string and the predefined code. Fig. 10A In the syntax table 100 of , a function for decoding user data and extended data (eg, extension_and_user_data(0)) may be provided after a sequence header, a geometry header, an attribute header, and a frame header.
[0169] In one embodiment of the present invention, the prefix bit string includes a 24-bit binary code, and the predefined code includes an 8-bit binary code. For example, the prefix bit string may be a 24-bit binary code "0000 0000 0000 0000 0000 0001".
[0170] In one embodiment of the present invention, the predetermined code includes an extension start code and a user data start code. For example, the encoding values of the extension start code and the user data start code may be defined in Table 1.
[0171] For example, Fig. 20 2 is a schematic diagram of an extended and user data structure 2000 according to an embodiment of the present invention. If the following 32 bits match the prefix bit string connected to the coded value of the extended start code, or match the prefix bit string connected to the coded value of the user data start code, the decoder can obtain the extended data and user data according to the coded value of the extended start code and the coded value of the user data start code. For example, Fig.21A and Fig. 21B is a schematic diagram of extended data structures 2100a and 2100b according to an embodiment of the present invention. Fig. 22 is a schematic diagram of a user data structure 2200 according to an embodiment of the present invention. Fig.21A and Fig. 21B , Fig.21A The extended data may include extended functionality in future versions of the encoding, while Fig.21A The extension data does not include any defined extension functions because there are no defined extension functions in the current encoding version.
[0172] Fig.23 is a flow chart of a point cloud encoding method applied to an encoder according to an embodiment of the present invention. Fig.23 , the various steps of the method can be used by the encoder as Figure 1 The G-PCC encoding process shown in FIG. 23 is performed. In step S2310, the encoder may acquire point cloud data. In step S2320, the encoder may encode the point cloud data to generate a point cloud codestream including multiple headers encoded in a layer structure. The multiple headers in the point cloud codestream include a sequence header, a geometry header, an attribute header, and a frame header. The sequence header is arranged outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are arranged outside the frame header, and the attribute header is located after the geometry header. That is, multiple headers are arranged in the codestream in a specific order. Each header may include information (e.g., parameters, identifiers, or flags) for decoding the point cloud codestream.
[0173] In one embodiment of the present invention, the multiple headers in the point cloud code stream may include an attribute slice header and a geometry slice header. When the syntax flag included in the frame header is equal to 1, the encoder may insert the attribute slice header and the geometry slice header of each slice of the PCC frame into the point cloud code stream. When the slice index is equal to 0 and the syntax flag included in the frame header is not equal to 1, the encoder may only insert the attribute slice header and the geometry slice header of one slice of the PCC frame into the point cloud code stream.
[0174] In one embodiment of the present invention, the encoder inserts a prefix bit string and a predefined code into the point cloud code stream to indicate multiple headers in the point cloud code stream, wherein the last bit of the prefix bit string is connected to the first bit of the predefined code.
[0175] In one embodiment of the present invention, the encoder inserts a syntax element according to a coding specification version of the point cloud codestream into at least one header among multiple headers in the point cloud codestream.
[0176] In an embodiment of the present invention, when a syntax element associated with the coding specification version is equal to a preset value, a syntax element specifying the length of the sequence extension data and a syntax element specifying the sequence extension data are inserted into at least one header among the plurality of headers.
[0177] The decoder of the present invention includes a storage device and a processor. The processor is electrically connected to the storage device and is configured to: obtain a point cloud code stream; parse multiple headers encoded in a layer structure in the point cloud code stream; and decode the point cloud code stream according to the multiple headers, wherein the multiple headers in the point cloud code stream include a sequence header, a geometry header, an attribute header, and a frame header. The sequence header is arranged outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are arranged outside the frame header, and the attribute header is located after the geometry header.
[0178] The encoder of the present invention includes a storage device and a processor. The processor is electrically connected to the storage device and is configured to: acquire point cloud data; and encode the point cloud data to generate a point cloud code stream including multiple headers encoded in a layer structure. The multiple headers in the point cloud code stream include a sequence header, a geometry header, an attribute header, and a frame header. The sequence header is set outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are set outside the frame header, and the attribute header is located after the geometry header.
[0179] [Aspect 4: Throughput-related solutions]
[0180] The present invention proposes to use a separate counter to control how many bits (bins) are encoded as context-coded bits to encode the value of zero run length, the value of reflectivity, and the color residual, respectively. Once a context-coded bit is generated, the corresponding counter is increased by 1. If the corresponding counter reaches a predefined value, all remaining bits used to encode the value of zero run length, the value of reflectivity, and the color residual will be encoded using a bypass method, respectively.
[0181] For example, assume that the value of zero run length is 62, and the predefined value of the context-coded bit for encoding the value of zero run length is set to 10. Before encoding, the counter is set to 0. The first bit will be encoded to indicate that the value of zero run length is not zero, and the counter is increased by one; the second bit will be encoded to indicate that the value of zero run length is not one, and the counter is increased by one; the third bit will be encoded to indicate that the value of zero run length is not two, and the counter is increased by one; the fourth bit will be encoded to indicate that the parity check is 62, and the counter is increased by one. After these four bits are encoded by the context-based method, (62-2) / 2=30 remains, and 30 will be binarized as 00001000010 using the second-order EG coding, a total of 11 bits. Since there are 6 bits of context coding left in the budget, the first 6 bits 000010 will be encoded using the context-based method, and the remaining 5 bits 00010 will be encoded using the bypass method. Alternatively, the first five bits 00001 will be encoded using the bypass method, while the remaining six bits 000010 will be encoded using the context-based method. Similarly, predefined counters for reflectance and color residual will be used to control the throughput of reflectance and color residual encoding, respectively.
[0182] In addition to independent counters for zero run length, reflectivity and color residual encoding, one or more global counters are proposed to count the total context bits of all bits (including geometry encoding, zero run length, reflectivity and color residual encoding, etc.), so that the total context bits are less than a predefined value. The global counter can work at the frame level or at the level of a subset of encoded point clouds. For example, the total context bits of K encoded point clouds can be less than a predefined value, where the number K and the predefined value may be related to the profile definition.
[0183] Fig.24 is a schematic block diagram of a coding and decoding device provided by an embodiment of the present invention. Fig.24 The coding and decoding device 1000 may be a decoder or an encoder in an embodiment of the present invention. The coding and decoding device 1000 may include a transceiver 1001, a storage device 1002 and a processor 1003.
[0184] The storage device 1002 may store executable instructions or computer programs. The processor 1003 may execute the executable instructions or computer programs to implement the method in the embodiment of the present invention. For example, the processor 1003 may be used to execute the instructions or computer programs stored in the storage device 1002. Figures 8 to 11 Each step of the above method.
[0185] In some embodiments of the present invention, the processor 1003 may include (but is not limited to) a central processing unit (CPU), a graphic processing unit (GPU), a general or special processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc. In one embodiment of the present invention, the codec device 1000 may include multiple processors to implement the method in the embodiment of the present invention.
[0186] In some embodiments of the present invention, the storage device 1002 includes (but is not limited to) volatile memory and / or non-volatile memory. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable ROM (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM) or a flash memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. As an example and not a limitation, there are many forms of RAM available, such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), synchronous link DRAM (SLDRAM) and direct memory bus RAM (DR RAM).
[0187] In some embodiments of the present invention, the computer program may be divided into one or more units, which are stored in the storage device 1002 and executed by the processor 1003 to implement the method provided by the present invention. The one or more units may be a series of computer program instruction segments capable of completing specific functions.
[0188] The transceiver 1001 may be connected to the processor 1003 or the storage device 1002. The processor 1003 may control the transceiver 1003 to communicate with other devices, specifically, may send information or data to other devices, or receive information or data sent by other devices. For example, the transceiver 1003 is configured to receive or send a point cloud code stream. The transceiver 1001 may include a transmitter and a receiver. The transceiver 1001 may also include an antenna, and the number of antennas may be one or more.
[0189] It should be understood that the various components in the codec device 1000 are connected via a bus system, wherein the bus system includes a power bus, a control bus, and a status signal bus in addition to a data bus.
[0190] The present invention also provides a computer storage medium, on which a computer program is stored, and the computer program is executed by a computer so that the computer can execute the method embodiment of the above method. In other words, an embodiment of the present invention also provides a computer program product, which includes multiple instructions, and when the computer executes the method of the above method embodiment, these instructions are executed by the computer.
[0191] When software is used for implementation, it can be implemented in whole or in part in the form of a computer program product. The computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on a computer, the process or function according to the present invention is generated in whole or in part. The computer can be a general-purpose computer, a special-purpose computer, a computer network or other programmable device. The computer instructions can be stored in a computer-readable storage medium, or can be transmitted from one computer-readable storage medium to another computer-readable storage medium. For example, the computer instructions can be transmitted from a website site, a computer, a server or a data center by wired (for example, coaxial cable, optical fiber, digital subscriber line (digital subscriber line, DSL)) or wireless (for example, infrared, wireless, microwave, etc.) mode to another website site, computer, server or data center. The computer-readable storage medium can be any available medium that a computer can access or a data storage device such as a server or a data center that includes one or more available media integration. The available medium can be a magnetic medium (for example, a floppy disk, a hard disk, a tape), an optical medium (for example, a digital video disc (digital video disc, DVD)), or a semiconductor medium (for example, a solid state disk (solid state disk, SSD)), etc.
[0192] The G-PCC system applying the above improved decoding method and the above improved encoding method can adapt to a wide range of PCC inputs and can be used in many applications.
[0193] It is obvious to those skilled in the art that various modifications and variations can be made to the disclosed embodiments without departing from the scope and spirit of the present disclosure. In view of the above, it is intended that the present disclosure covers modifications and variations provided that they fall within the scope of the appended claims and their equivalents.
[0194] Reference Symbols List
[0195] 1000: Codec device
[0196] 1003: Processor
[0197] 1002: Storage device
[0198] 1001: Transceiver
[0199] 100, 200, 300a, 300b, 400a, 400b, 500a, 500b, 600, 700, 900a, 900b, 1700a, 1700b, 1800a, 1800b, 1900: Syntax table
[0200] B1~B8: Cube
[0201] 2000: Extensions and user data structures
[0202] 2100a, 2100b: Extended data structure
[0203] 2200: User data structure
[0204] S102, S104, S106, S108, S110, S112, S114, S116, S118, S120, S122, S124, S126, S402, S404, S406, S408, S410, S412, S414, S416, S418, S420, S422, S810, S820, S830, S821, S822, S823, S825, S826, S1310, S1320, S1330, S1340, S1350, S1356, S2310, S2320: Steps
Claims
1. A point cloud decoding method, comprising: Get point cloud stream; as well as Parsing multiple headers and point cloud data encoded in a layer structure in the point cloud code stream, The multiple headers in the point cloud code stream include a sequence header, a geometry header, an attribute header and a frame header; The sequence header is arranged outside the geometry header, the attribute header and the frame header, The geometry header and the attribute header are arranged outside the frame header, and the attribute header is located after the geometry header.
2. The point cloud decoding method according to claim 1, wherein: The multiple headers in the point cloud code stream further include an attribute slice header and a geometry slice header, and the geometry slice header is located before the attribute slice header; The step of parsing the plurality of headers and the point cloud data encoded in the layer structure in the point cloud code stream comprises: When the syntax flag included in the frame header is equal to 1, parsing the attribute slice header and the geometry slice header of each slice of the point cloud coded PCC frame; When the slice index is equal to 0 and the syntax flag included in the frame header is not equal to 1, only the attribute slice header and the geometry slice header of one slice of the PCC frame are parsed.
3. The point cloud decoding method according to claim 1, wherein: The step of parsing the plurality of headers and the point cloud data encoded in the layer structure in the point cloud code stream comprises: The multiple headers are identified from the point cloud code stream according to a prefix bit string and a predefined code, wherein the last bit of the prefix bit string is connected to the first bit of the predefined code.
4. The point cloud decoding method according to claim 3, wherein: The prefix bit string includes a 24-bit binary code, and the predefined code includes an 8-bit binary code.
5. The point cloud decoding method according to claim 3, wherein: The predefined codes include at least one of the following: slice start code, slice end code, PCC sequence start code, PCC sequence end code, attribute start code, geometry start code, frame start code and PCC edit code.
6. The point cloud decoding method according to claim 1, wherein: The frame header includes a first syntax element that specifies the order of PCC frames associated with multiple point cloud frames, the first syntax element is configured to uniquely identify the associated PCC frame among all the multiple point cloud frames, and the first syntax element is also configured to: when the associated PCC frame is to be output from the decoded point cloud buffer, indicate the position of the associated PCC frame in the output order relative to the output order position of other point cloud frames to be output from the decoded point cloud buffer.
7. The point cloud decoding method according to claim 1, wherein: The frame header includes a second syntax element specifying a frame type of the PCC frame.
8. The point cloud decoding method according to claim 1, wherein: The frame header includes a third syntax element that specifies whether more than one slice is present in the PCC frame.
9. The point cloud decoding method according to claim 1, wherein: The frame header includes: a third syntax element specifying whether there is more than one slice in the PCC frame; and when the third syntax element is equal to a preset value, a fourth syntax element specifying the number of slices in the PCC frame, and a fifth syntax element specifying whether multiple geometric slice headers and multiple attribute slice headers in the frame header are used for the slice.
10. The point cloud decoding method according to claim 1, wherein: When the second syntax element specifying the frame type of the PCC frame is equal to a preset value, the frame header contains a sixth syntax element specifying whether the PCC frame encoded within the current frame is a random access point, and a seventh syntax element specifying whether a variable quantization parameter QP is enabled for the PCC frame.
11. The point cloud decoding method according to claim 1, wherein: The method further comprises: The coding specification version of the point cloud codestream is identified according to a syntax element associated with the coding specification version in at least one header among the multiple headers.
12. The point cloud decoding method according to claim 11, wherein: The method further comprises: When the syntax element associated with the coding specification version is equal to a preset value, a syntax element specifying a length of sequence extension data and a syntax element specifying sequence extension data in at least one header among the plurality of headers are acquired.
13. The point cloud decoding method according to claim 12, wherein: The method further comprises: When the syntax element associated with the coding specification version of the point cloud codestream is equal to the preset value, by using a decoder conforming to the first coding specification version, according to the syntax element specifying the length of the sequence extension data and the syntax element specifying the sequence extension data, ignoring the value of the sequence extension data; Among them, when the syntax element associated with the coding specification version is equal to the preset value, the coding specification version of the point cloud code stream is the second coding specification version.
14. The point cloud decoding method according to claim 1, wherein: Extension data and user data are arranged after each of the plurality of headers, and the extension data and the user data are identified from the point cloud code stream according to a prefix bit string and a predefined code.
15. The point cloud decoding method according to claim 14, wherein: The prefix bit string includes a 24-bit binary code, and the predefined code includes an 8-bit binary code.
16. The point cloud decoding method according to claim 14, wherein: The predefined codes include an extension start code and a user data start code.
17. A point cloud encoding method, comprising: Get point cloud data; as well as encoding the point cloud data to generate a point cloud code stream including a plurality of headers encoded in a layer structure, The multiple headers in the point cloud code stream include a sequence header, a geometry header, an attribute header and a frame header; The sequence header is arranged outside the geometry header, the attribute header and the frame header, The geometry header and the attribute header are arranged outside the frame header, and the attribute header is located after the geometry header.
18. The point cloud encoding method according to claim 17, wherein: The multiple headers in the point cloud codestream further include an attribute slice header and a geometry slice header, the geometry slice header is located before the attribute slice header, and the step of encoding the point cloud data to generate the point cloud codestream including the multiple headers encoded in a layer structure further includes: When the syntax flag included in the frame header is equal to 1, inserting the attribute slice header and the geometry slice header of each slice of the point cloud coding PCC frame into the point cloud code stream; and When the slice index is equal to 0 and the syntax flag included in the frame header is not equal to 1, only the attribute slice header and the geometry slice header of one slice of the PCC frame are inserted into the point cloud code stream.
19. The point cloud encoding method according to claim 17, wherein: The step of encoding the point cloud data to generate the point cloud code stream including the plurality of headers encoded in a layer structure further comprises: Inserting a prefix bit string and a predefined code into the point cloud code stream to indicate the multiple headers in the point cloud code stream, wherein the last bit of the prefix bit string is connected to the first bit of the predefined code.
20. The point cloud encoding method according to claim 19, wherein: The prefix bit string includes a 24-bit binary code, and the predefined code includes an 8-bit binary code.
21. The point cloud encoding method according to claim 19, wherein: The predefined codes include at least one of the following: slice start code, slice end code, PCC sequence start code, PCC sequence end code, attribute start code, geometry start code, frame start code and PCC edit code.
22. The point cloud encoding method according to claim 17, wherein: The frame header includes a first syntax element that specifies the order of PCC frames associated with multiple point cloud frames, the first syntax element is configured to uniquely identify the associated PCC frame among all of the multiple point cloud frames, and the first syntax element is also configured: when the associated PCC frame is to be output from the decoded point cloud buffer, indicate the position of the associated PCC frame in the output order relative to the output order position of other point cloud frames to be output from the decoded point cloud buffer.
23. The point cloud encoding method according to claim 17, wherein: The frame header includes a second syntax element specifying a frame type of the PCC frame.
24. The point cloud encoding method according to claim 17, wherein: The frame header includes a third syntax element that specifies whether more than one slice is present in the PCC frame.
25. The point cloud encoding method according to claim 17, wherein: The frame header includes: a third syntax element specifying whether there is more than one slice in the PCC frame; and when the third syntax element is equal to a preset value, a fourth syntax element specifying the number of slices in the PCC frame, and a fifth syntax element specifying whether multiple geometric slice headers and multiple attribute slice headers in the frame header are used for the slice.
26. The point cloud encoding method according to claim 17, wherein: When the second syntax element specifying the frame type of the PCC frame is equal to a preset value, the frame header contains a sixth syntax element specifying whether the PCC frame encoded within the current frame is a random access point, and a seventh syntax element specifying whether a variable quantization parameter QP is enabled for the PCC frame.
27. The point cloud encoding method according to claim 17, wherein: The step of encoding the point cloud data to generate the point cloud code stream including the plurality of headers encoded in a layer structure further comprises: Inserting a syntax element according to a coding specification version of the point cloud codestream into at least one header of the multiple headers of the point cloud codestream.
28. The point cloud encoding method according to claim 27, wherein: The step of encoding the point cloud data to generate the point cloud code stream including the plurality of headers encoded in a layer structure further comprises: When the syntax element associated with the coding specification version is equal to a preset value, a syntax element specifying a length of sequence extension data and a syntax element specifying sequence extension data are inserted into at least one header among the plurality of headers.
29. The point cloud encoding method according to claim 17, wherein: Extension data and user data are arranged after each of the plurality of headers, and the extension data and the user data are inserted into the point cloud code stream according to a prefix bit string and a predefined code.
30. The point cloud encoding method according to claim 29, wherein: The prefix bit string includes a 24-bit binary code, and the predefined code includes an 8-bit binary code.
31. The point cloud encoding method according to claim 29, wherein: The predefined codes include an extension start code and a user data start code.
32. A decoder comprising: Storage devices; as well as a processor, the processor being electrically connected to the storage device, and the processor being configured to: Get point cloud stream; as well as Parse multiple headers and point cloud data encoded in a layered structure in the point cloud code stream, The multiple headers in the point cloud code stream include a sequence header, a geometry header, an attribute header and a frame header; The sequence header is arranged outside the geometry header, the attribute header and the frame header, The geometry header and the attribute header are arranged outside the frame header, and the attribute header is located after the geometry header.
33. An encoder comprising: Storage devices; as well as A processor, the processor being electrically connected to the storage device, the processor being configured to: Get point cloud data; as well as encoding the point cloud data to generate a point cloud code stream including a plurality of headers encoded in a layer structure, The multiple headers in the point cloud code stream include a sequence header, a geometry header, an attribute header and a frame header; The sequence header is arranged outside the geometry header, the attribute header and the frame header, The geometry header and the attribute header are arranged outside the frame header, and the attribute header is located after the geometry header.