WO2024059232A1 - Point cloud decoding method, point cloud encoding method, decoder and encoder - Google Patents

Point cloud decoding method, point cloud encoding method, decoder and encoder Download PDF

Info

Publication number
WO2024059232A1
WO2024059232A1 PCT/US2023/032810 US2023032810W WO2024059232A1 WO 2024059232 A1 WO2024059232 A1 WO 2024059232A1 US 2023032810 W US2023032810 W US 2023032810W WO 2024059232 A1 WO2024059232 A1 WO 2024059232A1
Authority
WO
WIPO (PCT)
Prior art keywords
header
point cloud
frame
slice
attribute
Prior art date
Application number
PCT/US2023/032810
Other languages
French (fr)
Inventor
Yue Yu
Haoping Yu
Original Assignee
Innopeak Technology, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Innopeak Technology, Inc. filed Critical Innopeak Technology, Inc.
Publication of WO2024059232A1 publication Critical patent/WO2024059232A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding

Definitions

  • a point cloud is a collection of data points in a three-dimensional space. Point clouds are commonly used to represent the shape, appearance, and spatial distribution of objects or scenes in various applications. Point cloud coding, also known as point cloud compression, is essential due to many reasons, such as transmission efficiency, bandwidth constraints and so on.
  • point cloud data may be voluminous, especially when capturing detailed 3D scenes or objects. Efficient coding techniques are crucial for minimizing the data size of point cloud data, thus leading to accelerated transmission speeds and diminished storage space requirements.
  • G-PCC Geometry Point Cloud Coding
  • MPEG released the first version G-PCC standard
  • AVS Audio Video Standard
  • geometry information of a point cloud is compressed first, and then the corresponding attributes, including color or reflectance, are compressed based upon the geometry information.
  • the point cloud decoding method of the invention includes the following step: obtaining a bitstream of point cloud; and parsing a plurality of headers coded and point cloud data in layer structure in the bitstream of point cloud.
  • the headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header.
  • the sequence header is disposed outside the geometry header, the attribute header, and the frame header.
  • the geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header.
  • the headers in the bitstream of point cloud further includes an attribute slice header and a geometry slice header, the geometry slice header is before the attribute slice header.
  • the step of parsing the headers and the point cloud data coded in layer structure in the bitstream of point cloud includes: when a syntax flag included in the frame header is equal to 1, parsing the attribute slice header and the geometry slice header for each slice of a PCC frame; and when a slice index is equal to 0 and the syntax flag included in the frame header is not equal to 1, parsing the attribute slice header and the geometry slice header for only one slice of the PCC frame.
  • the step of parsing the headers coded in layer 137382wof structure in the bitstream of point cloud includes: identifying the headers from the bitstream of point cloud according to a prefix bitstring and a predefined code.
  • the prefix bitstring includes a 24-bit binary code
  • the predefined code includes an 8-bit binary code.
  • the predefined code includes at least one of a slice start code, a slice end code, a pcc sequence start code, a pcc sequence end code, an attribute start code, a geometry start code, a frame start code, and a pcc edit code.
  • the frame header includes a first syntax element specifying a decoding order of a PCC frame.
  • the frame header includes a first syntax element specifying an order of a PCC frame associated with a plurality of point cloud frames.
  • the first syntax element is configured to uniquely identify the associated PCC frame among all the point cloud frames.
  • the first syntax element is configured to indicate a position of the associated PCC frame in output order relative to output order positions of the other point cloud frames that are to be output from the decoded point cloud buffer.
  • the frame header includes a second syntax element specifying a frame type of a PCC frame.
  • the frame header includes a third syntax element specifying whether there is more than one slice in a PCC frame.
  • the frame header includes a third syntax element, a fourth syntax element, and a fifth syntax element.
  • the third syntax element specifies whether there is more than one slice in a PCC frame, and the fourth syntax element specifies the number of slices in the PCC frame.
  • the fifth syntax element specifies whether multiple geometry slice headers and multiple attribute slice headers are used for the slices in the frame header when the third syntax element is equal to a preset value.
  • a sixth syntax element specifying whether a current intra-coded PCC frame is a random access point and a seventh syntax element specifying whether a delta QP is enabled for a PCC frame are present in the frame header when a second syntax element specifying a frame type of the PCC frame is equal to a preset value.
  • the method further includes: identifying a coding specification version of the bitstream of point cloud according to a syntax element associated with the coding specification version in at least one of the headers.
  • the method further includes: obtaining a syntax element specifying the length of a sequence extension data and a syntax element specifying the sequence extension data in at least one of the headers when the syntax element associated with the coding specification version is equal to a preset value.
  • the method further includes: ignoring values of the sequence extension data by using a decoder conforming to a 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 when the syntax element associated with the coding specification version of the bitstream of point cloud is equal to the preset value.
  • the coding specification version of the bitstream of point cloud is a second coding specification version when the syntax element associated with the coding specification version is equal to the preset value.
  • an extension data and a user data are disposed after each of the headers, and the extension data and the user data are identified from the bitstream of point cloud according to a prefix bitstring and a predefined code.
  • the prefix bitstring includes a 24-bit binary code
  • the predefined code includes an 8-bit binary code.
  • the predefined code includes an extension start code and a user data start code.
  • the point cloud encoding method of the invention includes the following step: obtaining point cloud data; and encoding the point cloud data to generate a bitstream of point cloud comprising a plurality of headers coded in layer structure.
  • the headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header.
  • the sequence header is disposed outside the geometry header, the attribute header, and the frame header.
  • the geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header.
  • the headers in the bitstream of point cloud further includes an attribute slice header and a geometry slice header, and the geometry slice header is before the attribute slice header.
  • the step of encoding the point cloud data to generate the bitstream of point cloud comprising the headers coded in layer structure further includes: inserting the attribute slice header and the geometry slice header for each slice of a PCC frame into the bitstream of point cloud when a syntax flag included in the frame header is equal to 1; and inserting the attribute slice header and the geometry slice header for only one slice of the PCC frame into the bitstream of point cloud when a slice index is equal to 0 and the syntax flag included in the frame header is not equal to 1.
  • the step of encoding the point cloud data to generate the bitstream of point cloud comprising the headers coded in layer structure further includes: inserting a prefix bitstring and a predefined code into the bitstream of point cloud to indicate the headers in the bitstream of point cloud, wherein the last bit of the prefix bitstring is concatenated with the first bit of the predefined code.
  • the step of encoding the point cloud data to generate the bitstream of point cloud comprising the headers coded in layer structure further includes: inserting a syntax element according to a coding specification version of the bitstream of point cloud into at least one of the headers in the bitstream of point cloud.
  • the step of encoding the point cloud data to generate 137382wof the bitstream of point cloud comprising the headers coded in layer structure further includes: inserting a syntax element specifying the length of a sequence extension data and a syntax element specifying the sequence extension data into at least one of the headers when the syntax element associated with the coding specification version is equal to a preset value.
  • the decoder of the invention includes a storage device and a processor. The processor is electrically connected to the storage device, and is configured to: obtain a bitstream of point cloud; and parse a plurality of headers and point cloud data coded in layer structure in the bitstream of point cloud.
  • the headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header.
  • the sequence header is disposed outside the geometry header, the attribute header, and the frame header.
  • the geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header.
  • the encoder of the invention includes a storage device and a processor.
  • the processor is electrically connected to the storage device, and is configured to: obtain point cloud data; and encode the point cloud data to generate a bitstream of point cloud comprising a plurality of headers coded in layer structure.
  • the headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header.
  • the sequence header is disposed outside the geometry header, the attribute header, and the frame header.
  • the geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header.
  • FIG.1 is a schematic diagram of a G-PCC encoding process according to an embodiment of the invention.
  • FIG. 2A and FIG. 2B illustrate octree structures of G-PCC according to an embodiment of the invention.
  • FIG.2C illustrates corresponding digital representation of the octree structure according to an embodiment of the invention.
  • FIG. 3 illustrates structure of the cubes according to an embodiment of the invention.
  • FIG.4 is a schematic diagram of a G-PCC decoding process according to an embodiment of the invention.
  • FIG. 5A and 5B are schematic diagrams of a syntax table of color residual coding according to an embodiment of the invention.
  • FIG. 6 is a schematic diagram of a syntax table of reflectance coding according to an embodiment of the invention.
  • FIG. 7 is a schematic diagram of a syntax table of zero-run length coding according to an embodiment of the invention.
  • FIG. 8 is a flowchart of a point cloud decoding method applied to a decoder according to an embodiment of the invention.
  • FIG. 9 is a flowchart of parsing the attribute slice header and the geometry slice header according to an embodiment of the invention.
  • FIG.10A is a schematic diagram of a syntax table of a bitstream of point cloud according to an embodiment of the invention.
  • FIG. 10B is a schematic diagram of a syntax table of a geometry slice according to an embodiment of the invention.
  • FIG. 10C is a schematic diagram of a syntax table of an attribute slice according to an 137382wof embodiment of the invention.
  • FIG. 11 is a flowchart of identifying the headers according to an embodiment of the invention.
  • FIG. 12 is a schematic diagram of a syntax table of a frame header according to an embodiment of the invention. [0045] FIG.
  • FIG. 13 is a flowchart of recognizing a coding specification version of the bitstream of point cloud according to an embodiment of the invention.
  • FIG. 14A and 14B are schematic diagrams of a syntax table of a sequence header according to an embodiment of the invention.
  • FIG. 15A and 15B are schematic diagrams of a syntax table of a geometry header according to an embodiment of the invention.
  • FIG. 16A and 16B are schematic diagrams of a syntax table of an attribute header according to an embodiment of the invention.
  • FIG. 17A and 17B are schematic diagrams of a syntax table of a geometry slice header according to an embodiment of the invention.
  • FIG. 14A and 14B are schematic diagrams of a syntax table of a sequence header according to an embodiment of the invention.
  • FIG. 15A and 15B are schematic diagrams of a syntax table of a geometry header according to an embodiment of the invention.
  • FIG. 16A and 16B are schematic diagrams of a syntax table of an attribute header according to an embodiment of the invention.
  • FIG. 18A and 18B are schematic diagrams of a syntax table of an attribute slice header according to an embodiment of the invention.
  • FIG. 19 is a schematic diagram of a syntax table of a sequence header according to an embodiment of the invention.
  • FIG. 20 is a schematic diagram of an extension and user data structure according to an embodiment of the invention.
  • FIG.21A and FIG.21B are schematic diagrams of an extension data structure according to an embodiment of the invention.
  • FIG. 22 is a schematic diagram of an user data structure according to an embodiment of the invention.
  • FIG.23 is a flowchart of a point cloud encoding method applied to an encoder according 137382wof to an embodiment of the invention.
  • FIG.24 is a schematic block diagram of an codec device provided by an embodiment of the invention.
  • DESCRIPTION OF EMBODIMENTS [0057]
  • This disclosure proposes a coding method for G-PCC.
  • the proposed method may be used in future G-PCC coding standards, such as AVS-GPCC.
  • modifications to bitstream structure, syntax, constraints, and mapping for the generation of decoded point cloud are considered for standardizing.
  • Point cloud refers to a set of discrete points in space with irregular distribution, representing the spatial structure and surface attributes of a three-dimensional object or scene.
  • Each point in the point cloud can include the position information of the point and the attribute information of the point.
  • the position information of a point may be three-dimensional coordinate information of a point.
  • the position information of a point can also be referred to as the geometric information of a point.
  • the attribute information of a point may be color information and/or reflectivity.
  • the color information of a point can encompass data from various color spaces, such as the RGB color space, YCbCr color space, or YUV color space. That is, the color information may include RGB information.
  • the color information may include luminance information and chromaticity information.
  • the points in the point cloud can include the three-dimensional coordinate 137382wof information of the points and the laser reflectance intensity (reflectance).
  • the points in the point cloud can include the three-dimensional coordinate information of the points and the color information.
  • Point cloud data may be acquired through various methods, which include but are not restricted to, at least one of the following: (1) computer equipment generation, wherein computer equipment can generate point cloud data based on virtual 3D objects and virtual 3D scenes; (2) 3D laser scanning acquisition, wherein through 3D laser scanning, point cloud data of static real- world three-dimensional objects or three-dimensional scenes can be obtained, and millions of point cloud data can be obtained every second; (3) 3D photogrammetry acquisition, wherein the point cloud data of the real-world visual scene can be obtained by 3D photography equipment (that is, a group of cameras or camera equipment with multiple lenses and sensors) to obtain the point cloud data of the real-world visual scene, and the point cloud data of dynamic real-world three-dimensional objects or three-dimensional scenes can be obtained through 3D photography; and (4) Obtain point cloud data of biological tissues and organs through medical equipment.
  • 3D photography equipment that is, a group of cameras or camera equipment with multiple lenses and sensors
  • FIG.1 is a schematic diagram of a G-PCC encoding process according to an embodiment of the invention. Referring to FIG. 1, the G-PCC encoding process shown in FIG.
  • the point cloud 137382wof data is divided into multiple slices through slice division.
  • the positions (i.e., geometric information) of the points and the attributes of the points are coded (i.e., encoded and decoded) separately.
  • the encoding of points may involve position encoding and attribute encoding.
  • the position information of points is referred to as geometric information, and the encoding of point position can also be termed as geometric encoding.
  • a transform to the coordinates of the points is performed to transform the coordinates of the points from an initial domain to a transform domain.
  • the positions of the points are coordinated to enclose the point cloud into a bounding box (bounding box).
  • the transform coordinates are voxelized.
  • Voxelization of the transform coordinates may include quantization and removing some points of the point cloud.
  • the quantization mainly plays the role of scaling. Due to the quantization rounding, part of the positions of the point cloud is the same, so whether to remove the duplicate points based on the parameters is further determined in step S104.
  • the process of quantifying and removing the duplicate points is also called the voxelization process.
  • step S106 an octree is generated based on the voxelized transform coordinates.
  • the bounding box is divided into an octree for octree analysis.
  • the bounding box is divided into eight sub-cubes, and the non-empty (including points in the point cloud) sub-cubes are continued to be divided into eight equal parts until the leaf nodes are obtained.
  • the points in the leaf nodes of the octree structure are arithmetic coded to generate a binary geometric bitstream, that is, a geometric code stream.
  • FIG. 2B illustrate octree structures of G-PCC according to an embodiment of the invention
  • FIG.2C illustrates corresponding digital representation of the octree structure according to an embodiment of the invention
  • a cubical axis-aligned 137382wof bounding box B is defined by two extreme points (0,0,0) and ⁇ 2 ⁇ , 2 ⁇ , 2 ⁇ ⁇ where d is the maximum size of a given point cloud along x, y or z direction.
  • a point of the point cloud will be noted as “point” below. All points are included in this defined cube B.
  • the cube B is divided into eight sub-cubes B1 to B8, which creates an octree structure allowing 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 the same size cubes and share at least one same face/edge/point with this given cube.
  • the volume of each of the cubes B1 to B8 is 1/8 volume of its parent cube B.
  • Each of the cubes B1 to B8 may contain more than one point, and a number of points in a cube is dependent on the size and location of the cube.
  • the size of a smallest cube is pre-defined for a given point cloud.
  • an octree is a recursive data structure that is often used to describe three-dimensional space in which each internal cube has exactly eight children. The space is recursively subdivided into eight octants to the point where the resolution of the child cube is equal to a size of the point – the smallest element that has no further subdivisions.
  • FIG. 3 illustrates structure of the cubes according to an embodiment of the invention. Referring to FIG.
  • one cube may have up to six same-size cubes to share one face.
  • the current cube may also have some neighbouring cubes which share lines or points with the current cube. 137382wof [0070]
  • the parent cube of the current cube also has up to six neighbouring cubes with the same size of the parent cube that share one face with the parent cube.
  • the parent cube of the current cube also has up to twelve neighbouring cubes with the same size of parent cubes that share an edge.
  • the parent cube of the current cube also has up to eight neighbouring cubes with the same size of parent cubes that share a point with the parent cube. [0071] Referring back to FIG.
  • step S110 the points is analyzed to potentially determine a surface representation of sets of the points.
  • twelve pieces of the surface and the block are analyzed.
  • At most twelve vertexes (intersection points) are generated by the edges, and the arithmetic coding is performed on the vertexes (surface fitting based on the intersection points) in step S108 to generate the binary geometric bitstream.
  • the transform coordinates of points in the point cloud may be reconstructed based on the octree, data indicating the surfaces determined in step S110 and/or other information.
  • the reconstructed geometric information may be used by attribute coding process.
  • step S114 color transformation is performed in step S114, in which the color information (that is, the attribute information) is transformed from the RGB color space to the YUV color space, YCbCr color space or other color space.
  • step S116 the reconstructed geometric information is used to recolor the point cloud, so that the uncoded attribute information corresponds to the reconstructed geometric information. Because the geometric information changes after the geometric encoding, it is necessary to reassign the attribute value to each point after the geometric encoding.
  • step S116 the reconstructed geometric information is used to recolor the point cloud, so that the uncoded attribute information corresponds to the reconstructed geometric information. Because the geometric information changes after the geometric encoding, it is necessary to reassign the attribute value to each point after the geometric encoding.
  • the first method is distance-based lifting transformation in step S120 that relies on Level of Detail (LOD) division in step S118.
  • the second method is Region Adaptive Hierarchical Transform (RAHT) transformation in step S122, which directly transforms the image. Both of these methods convert color information from the spatial domain to the frequency domain, to obtain 137382wof high-frequency coefficients and low-frequency coefficients through the transformation. The high-frequency coefficients and low-frequency coefficients may be referred to transform coefficients.
  • RAHT Region Adaptive Hierarchical Transform
  • quantizing the transform coefficients for a point may involve dividing the quantized attribute value (i.e., quantized transform coefficients ) by a QP step size for the point, and the QP step size is determined according to a Quantization Parameter (QP).
  • QP Quantization Parameter
  • arithmetic encoding may be performed to syntax elements representing the quantized attribute coefficients, to output these syntax elements in an attribute bitstream.
  • the quantized transform coefficients may be encoded by using arithmetic encoding to generate a binary attribute bitstream, that is, the attribute code stream.
  • FIG.4 is a schematic diagram of a G-PCC decoding process according to an embodiment of the invention. The process in FIG. 4 may be implemented by the point cloud decoder.
  • the geometric bitstream and the attribute bitstream in the binary code stream are first decoded in steps S402 and S404, respectively.
  • the geometric bitstream through arithmetic decoding in step S402, octree synthesis in step S406, surface fitting in step S408, geometry reconstruction in step S410, and inverse coordinate transformation in step S412, the positions (i.e., geometric information) of the point cloud are obtained.
  • step S4 When decoding the attribute bitstream, through arithmetic decoding in step S404, inverse Quantization in step S414, LOD-based lifting based inverse transformation in steps S416 and S418, or RAHT based inverse transformation in step S420, and inverse color conversion in step S422, the attributes of the point cloud are obtained.
  • the quantized attribute values i.e., quantized transform coefficients
  • dequantizing a quantized attribute value for a point may involve multiplying the quantized attribute value by a QP step size for the point, and the QP step size is determined according to a Quantization Parameter (QP).
  • QP Quantization Parameter
  • the octree-based geometry information may be coded with context-based arithmetic coding. There may also be some corresponding attribute information for point clouds, including color, reflectance, etc., that needs to be compressed. Because the neighbouring points in a point cloud may have a strong correlation, prediction-based coding methods have been developed and used to compose and code point cloud attributes. More specifically, a prediction is formed from neighbouring coded attributes. Then, the difference between the current attribute and the prediction is coded. [0077] It should be noted that, the steps depicted in FIG. 1 and FIG. 4 may be implemented as a plurality of program codes or circuits, which are not particularly limited in the invention.
  • coding may be assumed to mean encoding and decoding methods and systems.
  • [0079] [Attribute Coding in the AVS G-PCC] [0080] AVS is developing a G-PCC standard. After the geometry information is coded, Morton or Hilbert code/order may be used to convert a point cloud cube into a one-dimension array. Each position in the cube will have a corresponding Morton or Hilbert code, but some positions may not have any corresponding point cloud attribute. In other words, some positions may be empty. The attribute coding will follow the pre-defined Morton or Hilbert order. A predictor may be generated from the previous coded points in Morton or Hilbert order.
  • the attribute difference between the current point and its predictor is coded into the bitstream.
  • some pre-defined number has been specified to limit the number of neighboring points that can be used in generating the prediction. For example, only M data points among previous N consecutively coded points may be used for coding the current attribute. In the previous AVS G-PCC software, M and N are set as a fixed number of 3 and 128, respectively.
  • M and N are set as a fixed number of 3 and 128, respectively.
  • M points are selected with M closest “distance” between these coded points and the current point.
  • the distance d1 as one example is defined as follows, other distance metrics can also be used. [0083] [0084] where ( ⁇ 1, ⁇ 1, ⁇ 1) and ( ⁇ 2, ⁇ 2, ⁇ 2) are coordinates of the current point and pre- selected point, respectively. [0085] More recently, a full search method based on Hilbert code has been applied in the AVS GPCC attribute coding. In the current software, the search range is set as 128 and the number of previous points used to form the predictor is set as M.
  • the residual is defined as the difference of attribute values between the current point and its predictor.
  • PCC can be either lossless or lossy.
  • the residual may or may not be quantized by using the predefined quantization process.
  • the residual without or with quantization is called level.
  • the level can be a signed integer and will be coded into the bitstream.
  • the residuals between the three color predictors and their corresponding color attributes for the current point can be obtained. Then, the corresponding levels for the three components of the current point also can be obtained. If the current point is a zero level point, the zero-run length value will be increased by one and the process proceeds to the next point. If the current point is a non-zero level point, the zero-run length value will be coded first and then the three color levels for this non-zero level point will be coded right after. After the level coding of a non-zero level point, the zero-run length value will be reset to zero and the process proceeds to the next point till 137382wof finishing all points.
  • the zero-run length value is first decoded and the three color levels corresponding to the number of zero-run length points are set as zero. Then, the levels for the non-zero level point are decoded and then the next zero-run length value is decoded. This process continues until all points are decoded.
  • FIG. 5A and 5B which are schematic diagrams of a syntax table 500a and 500b of color residual coding according to an embodiment of the invention. For a non-zero level point, there is at least one non-zero level among the three components. The values of three components are coded in the color_residual_coding( ).
  • a first flag (e.g., color_first_comp_zero) is coded to indicate if the first component of color is zero or not; if the first component of color is zero, a second flag (e.g., color_second_comp_zero) is coded to indicate if the second component of color is zero or not; if the second component of color is zero, the absolute level minus one and the sign of the third component will be coded according to the following coded level method.
  • a second flag e.g., color_second_comp_zero
  • a first flag is coded to indicate if the first component of color is zero or not; if the first component of color is zero, a second flag is coded to indicate if the second component of color is zero or not; if the second component of color is not zero, the absolute level minus one and sign of the second component will be coded according to the following coded level method, the absolute level and sign of the third component will be coded according to the following coded level method.
  • a first flag is coded to indicate if the first component of color is zero or not; if the first component of color is not zero, the absolute level minus one and sign of the first component will be coded according to the following coded level method, the absolute levels and 137382wof signs of the second and third components will be coded according to the following coded level method, respectively.
  • the coding method to produce a coded level is designed as follows.
  • the first flag (e.g., coded_level_equal_zero) is coded to indicate if the coded level is zero or not; if the coded level is the absolute level of one component minus one, i.e., when isComponentNoneZero is equal to true, the sign (e.g., coded_level_sign) of the level of this component will be coded. If the first flag indicates that the coded level is not zero, and if the coded level is the absolute level of one component itself, i.e., when isComponentNoneZero is equal to false, the sign of the level of this component will be coded.
  • the second flag (e.g., coded_level_gt1) will be coded to indicate if the coded level is greater than one or not; if the coded level is greater than one, the parity of the coded level minus two is coded and the third flag (e.g., coded_level_minus2_div2_gt0) will be coded to indicate if the coded level minus two dividing two is greater than zero or not; if the coded level minus two dividing two is greater than zero, the coded level minus two dividing two minus one will be coded.
  • coded_level_gt1 The second flag (e.g., coded_level_gt1) will be coded to indicate if the coded level is greater than one or not; if the coded level is greater than one, the parity of the coded level minus two is coded and the third flag (e.g., coded_level_minus2_div2_gt0) will be coded to indicate if the coded level
  • the zero-run length of reflectance level and the non-zero reflectance level are coded into bitstream. More specifically, in the encoding side, before coding of the first point, the zero-run length counter is set as zero. Starting from the first point along the predefined coding order, the residuals between the predictors and corresponding original points are obtained. Then the corresponding levels are obtained. If current level is zero, zero-run length will be increased by one and the process proceeds to the next point. If the level is not zero, the zero-run length will be coded first and the non-zero level will be coded after the zero- run length coding.
  • FIG. 6 is schematic diagram of a syntax table 600 of reflectance coding according to an embodiment of the invention. For a non-zero level, if the current point is not a duplicated point, the sign of level is coded with a syntax element residual_sign first.
  • abs_level_minus1_parity which indicates the parity of the absolute level minus one is coded.
  • Another syntax element abs_level_minus1_div2_gt0 is coded to indicate if the value of the absolute level minus one divided by two is greater than zero or not; if abs_level_minus1_div2_gt0 is great than zero, another syntax element abs_level_minus1_div2_gt1 is coded to indicate if the value of the absolute level minus one divided by two is greater than one or not; if abs_level_minus1_div2_gt1 is greater than 1, another syntax element abs_level_minu1_div2_minus2 is coded to indicate the value of the absolute level minus one divided by two minus two.
  • FIG. 7 is a schematic diagram of a syntax table 700 of zero-run length coding according to an embodiment of the invention.
  • the first syntax zero_run_length_level_equal_zero is coded to indicate if the zero-run length is eqaul to zero or not; if it is not zero, the second syntax syntax zero_run_length_level_equal_one is coded to indicate if the zero-run length is eqaul to one or not; if it is not one, the third syntax zero_run_length_level_equal_two is coded to indicate if the zero-run length is eqaul to two or not; if it is not two, the fourth syntax zero_run_length_level_minus3_parity and the fifth syntax zero_run_length_level_minus3_div2 are coded to indicate the parity of the zero-run length minus three and the value of the zero-run length minus three divided by two, respectively.
  • FIG. 8 is a flowchart of a point cloud decoding method applied to a decoder according to an embodiment of the invention.
  • each step in the methods may be 137382wof performed by a decoder using the G-PCC decoding process illustrated as FIG. 4.
  • the decoder may obtain a bitstream of point cloud.
  • the decoder may parse a plurality of headers and point cloud data coded in layer structure in the bitstream of point cloud.
  • the headers in the bitstream of point cloud includes at least a sequence header, a geometry header, an attribute header, and a frame header, and other headers.
  • the sequence header is disposed outside the geometry header, the attribute header, and the frame header.
  • the geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header. That is, the headers are disposed in a specific order within the bitstream.
  • Each header may include information (e.g., parameters, identifiers, or flags) for decoding the bitstream of point cloud.
  • the point cloud data in the bitstream of point cloud may further include geometry data and attribute data.
  • the geometry data may include general geometry data bitstream of one or more slice(s) of a PCC frame.
  • the attribute data may include the general attribute data bitstream of one or more slice(s) of a PCC frame.
  • the geometry bitstream may be decoded according to the information in the geometry header.
  • the attribute bitstream may be decoded according to the information in the attribute header.
  • the headers in the bitstream of point cloud may further include an attribute slice header and a geometry slice header, and the geometry slice header is before the attribute slice header.
  • the decoder may parse the attribute slice header and the geometry slice header for each slice of a PCC frame.
  • the decoder may parse the geometry slice header for each slice of a PCC frame.
  • the decoder may parse the attribute slice header and the geometry slice header for only one slice of the PCC frame.
  • the syntax flag included in the frame header is not equal to 1 (i.e., the syntax flag is equal to 0)
  • the decoder may parse the geometry slice header for only one slice of the PCC frame.
  • FIG. 9 is a flowchart of parsing the attribute slice header and the geometry slice header according to an embodiment of the invention. Referring to FIG.9, each step in the methods may be performed by a decoder using the G-PCC decoding process illustrated as FIG.4. In step S821, the decoder may determine whether a syntax flag included in the frame header is equal to 1.
  • step S822 the decoder may parse the attribute slice header and the geometry slice header for each slice of a PCC frame when a syntax element included in the sequence header indicates the attribute data is not present. That is, when the syntax flag included in the frame header is equal to 1, each slice may be corresponding to one attribute slice header and one geometry slice header, and the bitstream may include multiple attribute slice headers and multiple geometry slice headers for multiple slices in the same PCC frame.
  • step S823 the decoder may parse the attribute slice header and the geometry slice header for only one slice of the PCC frame when the slice index is equal to 0 when a syntax element included in the sequence header indicates the attribute data is not present. That is, in step S823, the bitstream may only include one attribute slice header and one geometry slice header for all slices in the same PCC frame.
  • FIG. 10A is a schematic diagram of a syntax table 100 of a bitstream of point cloud 137382wof according to an embodiment of the invention.
  • FIG.10B is a schematic diagram of a syntax table of a geometry slice according to an embodiment of the invention.
  • FIG. 10A is a schematic diagram of a syntax table 100 of a bitstream of point cloud 137382wof according to an embodiment of the invention.
  • FIG.10B is a schematic diagram of a syntax table of a geometry slice according to an embodiment of the invention.
  • FIG. 10C is a schematic diagram of a syntax table of an attribute slice according to an embodiment of the invention.
  • the sequence header is the first parsed structure which includes some sequence related syntax. After the first sequence header, one geometry header may be parsed. Then, if a syntax element (i.e., attribute_present_flag) specifying whether the attribute is present is equal to 1, one attribute header may be parsed after parsing the geometry header. If a syntax element (i.e., attribute_present_flag) specifying whether the attribute is present is equal to 0, one attribute header may not be parsed after parsing the geometry header.
  • attribute_present_flag i.e., attribute_present_flag
  • FIG.10A merely takes one sequence header, one geometry header and one attribute header for example, the number of the sequence header, the number of the geometry header and the number of attribute header is not limited in the disclosure. That is, there may be multiple sequence headers, geometry headers and attribute headers between the first sequence header among the multiple sequence headers and the first sequence ending code or the first editing code.
  • the first sequence header, the first geometry header and the first attribute header may appear in order
  • the other sequences headers, the other geometry headers, and the other attribute headers may appear one, two, or three of them and in any order.
  • the sequence header, the geometry header and the attribute header there may be one or multiple coded PCC frames.
  • the latest sequence header, the latest geometry header, and the latest attribute header maybe used for coding the current PCC frame.
  • Coded bitstream has same decoding order with coded PCC frame.
  • the 137382wof coding order of PCC frame may be different with display order of PCC frame.
  • a syntax table of a bitstream of point cloud may include a conditioning statement determining whether to parse the the attribute slice header and the geometry slice header, wherein the conditioning statement may include checking whether the slice index is equal to 0 and whether a syntax flag (e.g., multi_slice_header_enabled_flag in FIG. 12) included in the frame header is equal to 1. If the slice index is equal to 0 or the syntax flag (e.g.., multi_slice_header_enabled_flag in FIG.12) is equal to 1, the decoder may parse the attribute slice header and the geometry slice header when a syntax element (i.e., attribute_present_flag) is equal to 1.
  • a syntax flag e.g., multi_slice_header_enabled_flag
  • the decoder may parse the geometry slice header when a 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 (e.g., multi_slice_header_enabled_flag in FIG. 12) is not equal to 1, the decoder may not parse the attribute slice header and the geometry slice header for the current slice.
  • the decoder may identify the headers from the bitstream of point cloud according to a prefix bitstring and a predefined code.
  • the last bit of the prefix bitstring is concatenated with the first bit of the predefined code.
  • a code consisting of the prefix bitstring and the predefined code may be used to identify the header and data information.
  • the prefix bitstring includes 24-bit binary code
  • the predefined code includes 8-bit binary code.
  • the prefix bitstring may be 24-bit binary code “00000000000000000001”.
  • the predefined code includes at least one of a slice start code, a slice end code, a pcc sequence start code, a pcc sequence end code, an attribute start code, a geometry start code, a frame start code, and a pcc edit code.
  • FIG. 11 is a flowchart of identifying the headers according to an embodiment of the invention.
  • each step in the methods may be performed by a decoder using the G-PCC decoding process illustrated as FIG. 4.
  • the decoder may determine whether the next sequence of bits match to a prefix bitstring. If the step S825 is determined as yes, the decoder may identify the headers from the bitstream of point cloud according to a prefix bitstring and a predefined code.
  • the frame header includes a first syntax element 137382wof specifying a decoding order of a PCC frame.
  • the frame header includes a first syntax element specifying an order of a PCC frame associated with a plurality of point cloud frames. The first syntax element is configured to uniquely identify the associated PCC frame among all the point cloud frames.
  • the first syntax element is configured to indicate a position of the associated point cloud frame in output order relative to output order positions of the other point cloud frames that are to be output from the decoded point cloud buffer.
  • the frame header includes a second syntax element specifying a frame type of a PCC frame.
  • the frame header includes a third syntax element specifying whether there is more than one slice in a PCC frame.
  • the frame header includes a third syntax element specifying whether there is more than one slice in a PCC frame.
  • 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 are present in the frame header when the third syntax element is equal to a preset value.
  • FIG. 12 is a schematic diagram of a syntax table 200 of a frame header according to an embodiment of the invention.
  • the frame header may include a first syntax element (i.e., decode_order_index) specifying a decoding order of a PCC frame.
  • the frame header may include a first syntax element (i.e., decode_order_index) specifying an order of a PCC frame that is associated with each point cloud frame.
  • the first syntax element i.e., decode_order_index
  • the first syntax element may be configured for 137382wof uniquely identifying the associated PCC frame among all the point cloud frames.
  • the he first syntax element i.e., decode_order_index
  • the frame header may include a second syntax element (i.e., frame_type) specifying a frame type of a PCC frame which is specified in Table 2.
  • frame_type a second syntax element
  • mul_slice_flag the third syntax element in the frame header specifying whether there is more than one slice in a PCC frame.
  • mul_slice_flag 0 specifies that there is only one slice within the current picture
  • mul_slice_flag 1 specifies that there is more than one slice within the current picture.
  • a fourth syntax element (i.e., num_slice_minus_two) specifying the number of slices in the PCC frame and a fifth syntax element (i.e., mult_slice_header_enabled_flag) specifying whether multiple geometry slice headers and multiple attribute slice headers are used for the slices are present in the frame header when the third syntax element (i.e., mul_slice_flag) is equal to 1.
  • num_slice_minus_two plus 2 specifies the number of slices for 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 num_slice) may be obtained according to the following formula (1).
  • mult_slice_header_enabled_flag 1 specifies that multiple geometry slice 137382wof headers and the attribute slice headers may be used for multiple slices
  • mult_slice_header_enabled_flag 0 specifies that only one geometry slice header and one attribute slice header are used for the current frame.
  • mult_slice_header_enabled_flag not present, it is inferred to be equal to 0.
  • a sixth syntax element (i.e., random_access_point_flag) specifying whether a current intra-coded PCC frame is a random access point and a seventh syntax element (i.e., frame_qp_delta_enabled_flag) specifying whether a delta QP is enabled for a PCC frame are present in the frame header when a second syntax element specifying a frame type of the PCC frame is equal to “00”.
  • random_access_point_flag 1 specifies that the current intra-coded PCC frame may be a random access point
  • random_access_point_flag equal to 0 specifies that the current intra coded PCC frame may not be a random access point.
  • pic_qp_delta_enabled_flag 1 specifies that delta quantization parameter (QP) may be enabled for the current PCC frame
  • pic_qp_delta_enabled_flag 0 specifies that delta QP may not be enabled for the current PCC frame.
  • the later version standard (e.g., GPCC v2) decoder can fully decode the previous version standard (e.g., GPCC v1) bitstreams, i.e. backward compatibility.
  • a previous standard (e.g., GPCC v1) decoder can also be forward compatible at least with the high level syntax portion of bitstreams produced by later versions of GPCC (e.g., GPCC v2).
  • a decoder conforming to GPCC v1 may not be able to decode the entirety of a GPCC v2 bitstream of, because the GPCC v2 bitstream may exercise coding tools which are defined in the GPCC v2 specification but are not known to GPCC v1 decoders. 137382wof
  • a GPCC v1 decoder should at least be able to decode the high level syntax portion of a GPCC v2 bitstream.
  • the GPCC decoder may determine not just tool information, but also profile and tier information. Such information provides hints to the decoder of the capabilities required to decode the bitstream.
  • tool information hints to the decoder which coding tools are used in the bitstream.
  • the profile and tier information hints to the decoder about the uncompressed video data throughput that needs to be supported.
  • the GPCC decoder can determine if the current bitstream can be decoded. If the current bitstream can be decoded, the GPCC decoder can gracefully terminate the decoding process. Therefore, forward compatibility is also highly desirable for designing an earlier version standard. In contrast, a GPCC v1 decoder without such ability may not parse even the high level syntax of GPCC v2bitstreams. As a result, all tools, profile and tier information will be unknown.
  • a syntax element e.g., a one- or two-bit syntax element
  • a coding specification version of the bitstream of point cloud may be identified according to a syntax element associated with the coding specification version in at least one of the headers.
  • a syntax element specifying the length of a sequence extension data and a syntax element specifying the sequence extension data in at least one of the headers may be obtained when the syntax element associated with the coding specification version is equal to a preset value.
  • values of the sequence extension data may be ignored by using the decoder conforming to a first coding specification version according to the syntax element specifying the length of the sequence extension data and the syntax element specifying 137382wof the sequence extension data when the syntax element associated with the coding specification version of the bitstream of point cloud is equal to the preset value.
  • the coding specification version of the bitstream of point cloud is a second coding specification version when the syntax element associated with the coding specification version is equal to the preset value.
  • the coding specification with the second coding specification version may be specified later than the coding specification with the first coding specification version.
  • each step in the methods may be performed by a decoder using the G-PCC decoding process illustrated as FIG. 4.
  • the decode may obtain a bitstream of point cloud.
  • the decode may parse a plurality of headers coded in layer structure in the bitstream of point cloud.
  • the decode may identify a coding specification version of the bitstream of point cloud according to a syntax element associated with the coding specification version in the sequence header.
  • step S1340 the decode may determine whether the syntax element associated with the coding specification version is equal to a preset value. If step is determined as yes, in step S1350, the decode may obtain a syntax element specifying the length of a sequence extension data and a syntax element specifying the sequence extension data in at least one of the headers. It should be noted that, if the decode conforming to the first coding specification version and the bitstream of point cloud is coded according to the second coding specification version, the decoder may ignore the values of the sequence extension data according to the syntax element specifying the length of a sequence extension data. In step S1360, the decode may decode the bitstream of point cloud according to the headers. [00140] FIG.
  • sequence_extension_enable a syntax element associated with the coding specification version is included in the sequence header.
  • sequence_extension_enable 0x00 137382wof specifies that sequence_extension_length and sequnce_extension_data_byte syntax elements are not present in the sequence header syntax structure
  • sequence_extension_enable 0x10 specifies that sequence_extension_length and sequnce_extension_data_byte may be present in the sequence header syntax structure.
  • sequence_extension_enable shall be equal to 0x00 in bitstreams conforming to the first coding specification version of the current specification.
  • sequence_extension_enable equal to 0x10 may be configured and specified due to the second coding specification version of the current specification, and the decoder conforming to the first coding specification version of the current specification shall allow the value of sequence_extension_enable equal to 0x10 to appear in the syntax.
  • sequence_extension_length specifies the length of the sequence extension data in bytes, not including the bits used for signalling sequnce_extension_length itself. When sequence_extension_length is not present, the value of sequence_extension_length is inferred to be equal to 0.
  • sequence_extension_data_byte[ i ] may have any value. The presence and value of sequence_extension_data_byte[ i ] do not affect the decoding process specified in the first coding specification version.
  • sequence_extension_data_bit may have any value.
  • the presence and value of sequence_extension_data_bit do not affect the decoding process specified in the first coding specification version of this Specification.
  • the decoders conforming 137382wof to the first coding specification version shall ignore the values of all the sequence_extension_data_bit syntax elements. Its value does not affect the decoding process specified in the first coding specification version of the specification.
  • more_data_in_sequence_header_extension( ) is specified as follows: [00145] – If (the current position in the sequence_header( ) syntax structure ) ⁇ ( the 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. [00146] – Otherwise, the return value of more_data_in_sequence_header_extension( ) is equal to FALSE. [00147] FIG. 15A and 15B are schematic diagrams of a syntax table 400a, 400b of a geometry header according to an embodiment of the invention.
  • a syntax element (e.g., geometry_extension_enable) associated with the coding specification version is included in the sequence header.
  • geometry_extension_enable 0x00 specifies that geometry_extension_length and geometry_extension_data_byte syntax elements are not present in the sequence header syntax structure
  • geometry_extension_enable 0x10 specifies that geometry_extension_length and geometry_extension_data_byte may be present in the sequence header syntax structure.
  • FIG. 16A and 16B are schematic diagrams of a syntax table 900a, 900b of an attribute header according to an embodiment of the invention. Referring to FIG.
  • a syntax 137382wof element (e.g., attribute_extension_enable) associated with the coding specification version is included in the sequence header.
  • attribute_extension_enable e.g., attribute_extension_enable
  • attribut_extension_enable 0x00 specifies that attribute_extension_length and attribute_extension_data_byte syntax elements are not present in the sequence header syntax structure
  • attribute_extension_enable 0x10 specifies that attribute_extension_length and attribute_extension_data_byte may be present in the sequence header syntax structure.
  • FIG.17A and 17B are schematic diagrams of a syntax table 1700a, 1700b of a geometry slice header according to an embodiment of the invention. Referring to FIG.
  • a syntax element (e.g., geometry_slice_extension_enable) associated with the coding specification version is included in the sequence header.
  • geometry_slice_extension_enable 0x00 specifies that geometry_slice_extension_length and geometry_slice_extension_data_byte syntax elements are not present in the sequence header syntax structure
  • geometry_slice_extension_enable 0x10 specifies that geometry_slice_extension_length and geometry_slice_extension_data_byte may be present in the sequence header syntax structure.
  • FIG.18A and 18B are schematic diagrams of a syntax table 1800a, 1800b of an attribute slice header according to an embodiment of the invention. Referring to FIG.
  • a syntax element (e.g., attribute_slice_extension_enable) associated with the coding specification version is included in the sequence header.
  • attribute_slice_extension_enable 0x00 specifies that attribute_slice_extension_length and attribute_slice_extension_data_byte syntax elements are not present in the sequence header syntax structure
  • attribute_slice_extension_enable 0x10 specifies that attribute_slice_extension_length and attribute_slice_extension_data_byte may be present in the sequence header syntax structure.
  • FIG.19 is a schematic diagram of a syntax table 1900 of a sequence header according to an embodiment of the invention. Referring to FIG.
  • a syntax element (e.g., profile_id) associated with the coding specification version is included in the sequence header.
  • profile_id equal to 0xXX specifies that sequence_extension_length and sequence_extension_data_byte[ i ] syntax elements are not present in the sequence header syntax structure.
  • the syntax table in FIG. 14A to 18B may be modified in a similar way by using the syntax element (e.g., profile_id) associated with the coding specification version.
  • This disclosure proposes to use a predefined extension and user data structures to support both forward and back compatibilities between previous and later version standards.
  • the high level syntax or the new defined function of the later version standards may be presented in the extension data or the user data.
  • a extension data and a user data are disposed after each of the headers, and the extension data and the user data are identified from the bitstream of point cloud according to a prefix bitstring and a predefined code.
  • a function for decoding the user data and the extension data e.g., extension_and_user_data(0)
  • the prefix bitstring includes 24-bit binary code
  • the predefined code includes an 8-bit binary code.
  • the prefix bitstring may be a 24- bit binary code “000000000000000000000001”.
  • the predefined code includes an extension start code and a user data start code.
  • the coded value of the extension start code and the user data start code may be defined in Table 1.
  • FIG. 20 is a schematic diagram of an extension and user data structure 2000 according to an embodiment of the invention.
  • the decoder may obtain the extension data and the user data according to the coded value of the extension start code and the coded value of the user data start code.
  • FIG. 21A and FIG. 21B are schematic diagrams of an extension data structure 2100a, 2100b according to an embodiment of the invention.
  • FIG.22 is a schematic diagram of a user data structure 2200 according to an embodiment of the invention. Comparing FIG. 21A with FIG. 21B, the extension functions in the future coding version may be included in the extension data of FIG.
  • FIG.23 is a flowchart of a point cloud encoding method applied to an encoder according to an embodiment of the invention.
  • each step in the methods may be performed by a encoder using the G-PCC encoding process illustrated as FIG.1.
  • the encoder may obtain point cloud data.
  • the encoder may encode the point cloud data to generate a bitstream of point cloud comprising a plurality of headers coded in layer structure.
  • the headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header.
  • the sequence header is disposed outside the geometry header, the attribute header, and the frame header.
  • the geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header. That is, the headers are disposed in a specific order within the bitstream.
  • Each header may include information (e.g., parameters, identifiers, or flags) for decoding the bitstream of point cloud.
  • the headers in the bitstream of point cloud may include an attribute slice header and a geometry slice header.
  • the attribute slice header and the geometry slice header for each slice of a PCC frame may be inserted into the bitstream of point cloud by the encode when a syntax flag included in the frame header is equal to 1.
  • the attribute slice header and the geometry slice header for only one slice of the PCC frame may be inserted into the bitstream of point cloud by the encode when a slice index is equal to 0 and the syntax flag included in the frame header is not equal to 1.
  • a prefix bit string and a predefined code are inserted into the bitstream of point cloud by the encode to indicate the headers in the bitstream of point cloud, wherein the last bit of the prefix bitstring is concatenated with the first bit of the predefined code.
  • a syntax element is inserted into at least one of the headers in the bitstream of point cloud by the encode according to a coding specification version of the bitstream of point cloud. 137382wof [00165] In an embodiment of the invention, a syntax element specifying the length of a sequence extension data and a syntax element specifying the sequence extension data are inserted into at least one of the headers when the syntax element associated with the coding specification version is equal to a preset value. [00166]
  • the decoder of the invention includes a storage device and a processor.
  • the processor is electrically connected to the storage device, and is configured to: obtain a bitstream of point cloud; parse a plurality of headers coded in layer structure in the bitstream of point cloud; and decode the bitstream of point cloud according to the headers.
  • the headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header.
  • the sequence header is disposed outside the geometry header, the attribute header, and the frame header.
  • the geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header.
  • the encoder of the invention includes a storage device and a processor.
  • the processor is electrically connected to the storage device, and is configured to: obtain point cloud data; and encode the point cloud data to generate a bitstream of point cloud comprising a plurality of headers coded in layer structure.
  • the headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header.
  • the sequence header is disposed outside the geometry header, the attribute header, and the frame header.
  • the geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header.
  • the counter is set to 0.
  • the first bin will be coded to indicate the value of zero-run length is not zero and the counter increases by one; the second bin will be coded to indicate the value of zero-run length is not one and the counter increases by one; the third bin will be coded to indicate the value of zero-run length is not two and the counter increases by one; the fourth bin will be coded to indicate the parity of 62 and the counter increases by one.
  • the first six bins 000010 will be coded with the context-based approach and the remaining five bins 00010 will be coded with the bypass approach.
  • the first five 00001 bins will be coded with the bypass approach, and the rest six bins 000010 will be coded with the context-based approach.
  • predefined counter for reflectance and color residual will be used to control the throughput for reflectance and color residual coding, respectively.
  • a global counter or several global counters are proposed to count total context bins for all bins, including geometry coding, zero-run length, reflectance and color residual coding etc.
  • FIG.24 is a schematic block diagram of an codec device provided by an embodiment of the invention.
  • the codec device 1000 may be the decoder or the encoder described in an embodiment of the invention.
  • the codec device 1000 may comprise a transceiver 1001, a storage device 1002 and a processor 1003. 137382wof [00173]
  • the storage device 1002 may stores executable instructions or the computer program.
  • the processor 1003 may execute the executable instructions or the computer program to implement the methods in an embodiment of the invention.
  • the processor 1003 may be used to perform the steps of the above method in FIG. 8 to FIG. 11 according to the instructions or the computer program stored in the storage device 1002.
  • the processor 1003 may include (but is not limited to) a central processing unit (CPU), a graphic processing unit (GPU), general-purpose or special-purpose processors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs) or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc.
  • CPU central processing unit
  • GPU graphic processing unit
  • DSPs digital signal processors
  • ASICs application specific integrated circuits
  • FPGAs field programmable gate arrays
  • the codec device 1000 may include more processors to implement the method in an embodiment of the invention.
  • the storage device 1002 includes(but is not limited to) volatile memory and/or non-volatile memory.
  • non-volatile memory can be Read-Only Memory (ROM), programmable ROM (PROM), erasable programmable read- only memory (EPROM), electrically erasable programmable read-only memory (EEPROM) or flash memory.
  • Volatile memory can be Random Access Memory (RAM), which is used as an external cache.
  • the computer program may be divided into one or more units, the one or more units are stored in the storage device 1002, and executed by the processor 1003 to complete the method provided in the invention.
  • the unit or units may be a series of computer program instruction segments capable of completing a particular function.
  • 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.
  • the transceiver 1003 is configured to receive or transmit the bitstream of point cloud.
  • the transceiver 1001 may include a transmitter and receiver.
  • the transceiver 1001 may further include antennas, the number of antennas may be one or more. [00178] It should be understood that the various components in the codec device 1000 are connected by a bus system, wherein the bus system includes a power bus, a control bus and a status signal bus in addition to the data bus.
  • the invention also provides a computer storage medium on which a computer program is stored, and the computer program is executed by the computer such that the computer can execute the method embodiment of the above method.
  • embodiments of the invention also provide a computer program product comprising instructions, the instruction is executed by the computer when the computer executes the method of executing the above method embodiment.
  • the computer program product includes one or more computer instructions. When loading and executing the computer program instructions on the computer, the process or function in accordance with the invention is produced in whole or in part.
  • the computer may be a general-purpose computer, a special purpose computer, a computer network, or other programmable device.
  • the computer instruction may be stored in a computer- readable storage medium, or transmitted from one computer-readable storage medium to another computer-readable storage medium, for example, the computer instruction may be transmitted from a website site, computer, server or data center to another website site (e.g., coaxial cable, optical fiber, digital subscriber line (DSL)) or wireless (e.g., infrared, wireless, microwave, etc.) to another website site, computer, Server or data center for transmission.
  • the computer-readable storage medium may be any available media that the computer can access, or a data storage device 137382wof such as a server, data center, etc., that contains one or more available media integration.
  • the available media may be magnetic media (e.g., floppy disks, hard disks, magnetic tapes), optical media (e.g., digital video discs (DVDs)), or semiconductor media (e.g., solid state disks (SSDs)) and the like.
  • magnetic media e.g., floppy disks, hard disks, magnetic tapes
  • optical media e.g., digital video discs (DVDs)
  • semiconductor media e.g., solid state disks (SSDs)
  • Reference Signs List [00183] 1000:codec device 1003:Processor 1002:Storage device 1001:Transceiver 100, 200, 300a, 300b, 400a, 400b,500a, 500b, 600, 700, 900a, 900b, 1700a, 1700b, 1800a, 1800b, 1900:syntax table B1 ⁇ B8:Cube 2000: extension and user data structure 2100a, 2100b: extension data structure 2200: user data structure S102 ⁇ S104 ⁇ S106 ⁇ S108 ⁇ S110 ⁇ S112 ⁇ S114 ⁇ S116 ⁇ S118 ⁇ S120 ⁇ S122 ⁇ S124 ⁇ 137382wof S126 ⁇ S402 ⁇ S404 ⁇ S406 ⁇ S408 ⁇ S410 ⁇ S412 ⁇ S414 ⁇ S416 ⁇ S418 ⁇ S420 ⁇ S422 ⁇ S810 ⁇ S820 ⁇ S830 ⁇ S821

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

A point cloud decoding method, a point cloud encoding method, a decoder and an encoder are provided. The point cloud decoding method includes the following step: obtaining a bitstream of point cloud; parsing a plurality of headers coded in layer structure in the bitstream of point cloud; and decoding the bitstream of point cloud according to the headers. The headers in the bitstream of point cloud comprises a sequence header, a geometry header, an attribute header, and a frame header. The sequence header is disposed outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header.

Description

137382wof POINT CLOUD DECODING METHOD, POINT CLOUD ENCODING METHOD, DECODER AND ENCODER CROSS-REFERENCE TO RELATED APPLICATION This application claims the priority benefits of U.S. provisional application serial no. 63/376,068, filed on September 16, 2022. The entirety of the above-mentioned patent application is hereby incorporated by reference herein and made a part of this specification. Technical Field [0001] A point cloud is a collection of data points in a three-dimensional space. Point clouds are commonly used to represent the shape, appearance, and spatial distribution of objects or scenes in various applications. Point cloud coding, also known as point cloud compression, is essential due to many reasons, such as transmission efficiency, bandwidth constraints and so on. Specifically, point cloud data may be voluminous, especially when capturing detailed 3D scenes or objects. Efficient coding techniques are crucial for minimizing the data size of point cloud data, thus leading to accelerated transmission speeds and diminished storage space requirements. [0002] Recently, Geometry Point Cloud Coding (G-PCC) is widely used in entertainment applications, e.g., VR/AR, and industrial applications, e.g., LiDAR sweep compression for automotive or robotics and HD map for navigation. MPEG released the first version G-PCC standard, and Audio Video Standard (AVS) is also developing a G-PCC standard. In order to compress the point cloud data efficiently, geometry information of a point cloud is compressed first, and then the corresponding attributes, including color or reflectance, are compressed based upon the geometry information. However, there are still many deficiencies that need to be improved in the existing G-PCC specification. 137382wof SUMMARY OF INVENTION [Technical Problem] [0003] The current AVS-GPCC specification cannot work well for a wide range of PCC input, and cannot be used in many applications. [Solution to Problem] [0004] This disclosure proposes several improvements for Geometry Point Cloud Coding. The proposed method may be used in future GPCC coding standards, in particular AVS-GPCC. With the implementation of the proposed method, modifications to bitstream structure, syntax, constraints, and mapping for the generation of decoded point cloud are considered for standardizing. [0005] The point cloud decoding method of the invention includes the following step: obtaining a bitstream of point cloud; and parsing a plurality of headers coded and point cloud data in layer structure in the bitstream of point cloud. The headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header. The sequence header is disposed outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header. [0006] In an embodiment of the invention, the headers in the bitstream of point cloud further includes an attribute slice header and a geometry slice header, the geometry slice header is before the attribute slice header. The step of parsing the headers and the point cloud data coded in layer structure in the bitstream of point cloud includes: when a syntax flag included in the frame header is equal to 1, parsing the attribute slice header and the geometry slice header for each slice of a PCC frame; and when a slice index is equal to 0 and the syntax flag included in the frame header is not equal to 1, parsing the attribute slice header and the geometry slice header for only one slice of the PCC frame. [0007] In an embodiment of the invention, the step of parsing the headers coded in layer 137382wof structure in the bitstream of point cloud includes: identifying the headers from the bitstream of point cloud according to a prefix bitstring and a predefined code. The last bit of the prefix bitstring is concatenated with the first bit of the predefined code. [0008] In an embodiment of the invention, the prefix bitstring includes a 24-bit binary code, and the predefined code includes an 8-bit binary code. [0009] In an embodiment of the invention, the predefined code includes at least one of a slice start code, a slice end code, a pcc sequence start code, a pcc sequence end code, an attribute start code, a geometry start code, a frame start code, and a pcc edit code. [0010] In an embodiment of the invention, the frame header includes a first syntax element specifying a decoding order of a PCC frame. In another embodiment of the invention, the frame header includes a first syntax element specifying an order of a PCC frame associated with a plurality of point cloud frames. The first syntax element is configured to uniquely identify the associated PCC frame among all the point cloud frames. When the associated PCC frame is to be output from a decoded point cloud buffer, the first syntax element is configured to indicate a position of the associated PCC frame in output order relative to output order positions of the other point cloud frames that are to be output from the decoded point cloud buffer. [0011] In an embodiment of the invention, the frame header includes a second syntax element specifying a frame type of a PCC frame. [0012] In an embodiment of the invention, the frame header includes a third syntax element specifying whether there is more than one slice in a PCC frame. [0013] In an embodiment of the 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 is more than one slice in a PCC frame, and the fourth syntax element specifies the number of slices in the PCC frame. The fifth syntax element specifies whether multiple geometry slice headers and multiple attribute slice headers are used for the slices in the frame header when the third syntax element is equal to a preset value. 137382wof [0014] In an embodiment of the invention, a sixth syntax element specifying whether a current intra-coded PCC frame is a random access point and a seventh syntax element specifying whether a delta QP is enabled for a PCC frame are present in the frame header when a second syntax element specifying a frame type of the PCC frame is equal to a preset value. [0015] In an embodiment of the invention, the method further includes: identifying a coding specification version of the bitstream of point cloud according to a syntax element associated with the coding specification version in at least one of the headers. [0016] In an embodiment of the invention, the method further includes: obtaining a syntax element specifying the length of a sequence extension data and a syntax element specifying the sequence extension data in at least one of the headers when the syntax element associated with the coding specification version is equal to a preset value. [0017] In an embodiment of the invention, the method further includes: ignoring values of the sequence extension data by using a decoder conforming to a 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 when the syntax element associated with the coding specification version of the bitstream of point cloud is equal to the preset value. The coding specification version of the bitstream of point cloud is a second coding specification version when the syntax element associated with the coding specification version is equal to the preset value. [0018] In an embodiment of the invention, an extension data and a user data are disposed after each of the headers, and the extension data and the user data are identified from the bitstream of point cloud according to a prefix bitstring and a predefined code. [0019] In an embodiment of the invention, the prefix bitstring includes a 24-bit binary code, and the predefined code includes an 8-bit binary code. [0020] In an embodiment of the invention, the predefined code includes an extension start code and a user data start code. 137382wof [0021] The point cloud encoding method of the invention includes the following step: obtaining point cloud data; and encoding the point cloud data to generate a bitstream of point cloud comprising a plurality of headers coded in layer structure. The headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header. The sequence header is disposed outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header. [0022] In an embodiment of the invention, the headers in the bitstream of point cloud further includes an attribute slice header and a geometry slice header, and the geometry slice header is before the attribute slice header. The step of encoding the point cloud data to generate the bitstream of point cloud comprising the headers coded in layer structure further includes: inserting the attribute slice header and the geometry slice header for each slice of a PCC frame into the bitstream of point cloud when a syntax flag included in the frame header is equal to 1; and inserting the attribute slice header and the geometry slice header for only one slice of the PCC frame into the bitstream of point cloud when a slice index is equal to 0 and the syntax flag included in the frame header is not equal to 1. [0023] In an embodiment of the invention, the step of encoding the point cloud data to generate the bitstream of point cloud comprising the headers coded in layer structure further includes: inserting a prefix bitstring and a predefined code into the bitstream of point cloud to indicate the headers in the bitstream of point cloud, wherein the last bit of the prefix bitstring is concatenated with the first bit of the predefined code. [0024] In an embodiment of the invention, the step of encoding the point cloud data to generate the bitstream of point cloud comprising the headers coded in layer structure further includes: inserting a syntax element according to a coding specification version of the bitstream of point cloud into at least one of the headers in the bitstream of point cloud. [0025] In an embodiment of the invention, the step of encoding the point cloud data to generate 137382wof the bitstream of point cloud comprising the headers coded in layer structure further includes: inserting a syntax element specifying the length of a sequence extension data and a syntax element specifying the sequence extension data into at least one of the headers when the syntax element associated with the coding specification version is equal to a preset value. [0026] The decoder of the invention includes a storage device and a processor. The processor is electrically connected to the storage device, and is configured to: obtain a bitstream of point cloud; and parse a plurality of headers and point cloud data coded in layer structure in the bitstream of point cloud. The headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header. The sequence header is disposed outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header. [0027] The encoder of the invention includes a storage device and a processor. The processor is electrically connected to the storage device, and is configured to: obtain point cloud data; and encode the point cloud data to generate a bitstream of point cloud comprising a plurality of headers coded in layer structure. The headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header. The sequence header is disposed outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header. [Effects of Invention] [0028] Based on the above, according to the point cloud decoding method, the point cloud encoding method, the decoder and the encoder of the invention, the code stream can be efficiently decoded, and the data of the point cloud can be efficiently encoded. [0029] To make the aforementioned more comprehensible, several embodiments accompanied with drawings are described in detail as follows. 137382wof BRIEF DESCRIPTION OF DRAWINGS [0030] FIG.1 is a schematic diagram of a G-PCC encoding process according to an embodiment of the invention. [0031] FIG. 2A and FIG. 2B illustrate octree structures of G-PCC according to an embodiment of the invention. [0032] FIG.2C illustrates corresponding digital representation of the octree structure according to an embodiment of the invention. [0033] FIG. 3 illustrates structure of the cubes according to an embodiment of the invention. [0034] FIG.4 is a schematic diagram of a G-PCC decoding process according to an embodiment of the invention. [0035] FIG. 5A and 5B are schematic diagrams of a syntax table of color residual coding according to an embodiment of the invention. [0036] FIG. 6 is a schematic diagram of a syntax table of reflectance coding according to an embodiment of the invention. [0037] FIG. 7 is a schematic diagram of a syntax table of zero-run length coding according to an embodiment of the invention. [0038] FIG. 8 is a flowchart of a point cloud decoding method applied to a decoder according to an embodiment of the invention. [0039] FIG. 9 is a flowchart of parsing the attribute slice header and the geometry slice header according to an embodiment of the invention. [0040] FIG.10A is a schematic diagram of a syntax table of a bitstream of point cloud according to an embodiment of the invention. [0041] FIG. 10B is a schematic diagram of a syntax table of a geometry slice according to an embodiment of the invention. [0042] FIG. 10C is a schematic diagram of a syntax table of an attribute slice according to an 137382wof embodiment of the invention. [0043] FIG. 11 is a flowchart of identifying the headers according to an embodiment of the invention. [0044] FIG. 12 is a schematic diagram of a syntax table of a frame header according to an embodiment of the invention. [0045] FIG. 13 is a flowchart of recognizing a coding specification version of the bitstream of point cloud according to an embodiment of the invention. [0046] FIG. 14A and 14B are schematic diagrams of a syntax table of a sequence header according to an embodiment of the invention. [0047] FIG. 15A and 15B are schematic diagrams of a syntax table of a geometry header according to an embodiment of the invention. [0048] FIG. 16A and 16B are schematic diagrams of a syntax table of an attribute header according to an embodiment of the invention. [0049] FIG. 17A and 17B are schematic diagrams of a syntax table of a geometry slice header according to an embodiment of the invention. [0050] FIG. 18A and 18B are schematic diagrams of a syntax table of an attribute slice header according to an embodiment of the invention. [0051] FIG. 19 is a schematic diagram of a syntax table of a sequence header according to an embodiment of the invention. [0052] FIG. 20 is a schematic diagram of an extension and user data structure according to an embodiment of the invention. [0053] FIG.21A and FIG.21B are schematic diagrams of an extension data structure according to an embodiment of the invention. [0054] FIG. 22 is a schematic diagram of an user data structure according to an embodiment of the invention. [0055] FIG.23 is a flowchart of a point cloud encoding method applied to an encoder according 137382wof to an embodiment of the invention. [0056] FIG.24 is a schematic block diagram of an codec device provided by an embodiment of the invention. DESCRIPTION OF EMBODIMENTS [0057] In order to have a more detailed understanding of the characteristics and technical content of the embodiments of the invention, the implementation of the embodiments of the invention will be described in detail below with reference to the accompanying drawings. The attached drawings are for reference and explanation purposes only, and are not used to limit the embodiments of the invention. [0058] This disclosure proposes a coding method for G-PCC. The proposed method may be used in future G-PCC coding standards, such as AVS-GPCC. With the implementation of the proposed method, modifications to bitstream structure, syntax, constraints, and mapping for the generation of decoded point cloud are considered for standardizing. [0059] Point cloud refers to a set of discrete points in space with irregular distribution, representing the spatial structure and surface attributes of a three-dimensional object or scene. Each point in the point cloud can include the position information of the point and the attribute information of the point. The position information of a point may be three-dimensional coordinate information of a point. The position information of a point can also be referred to as the geometric information of a point. On the other hand, the attribute information of a point may be color information and/or reflectivity. [0060] As an example, the color information of a point can encompass data from various color spaces, such as the 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 luminance information and chromaticity information. Besides, based on the principles of laser measurement, the points in the point cloud can include the three-dimensional coordinate 137382wof information of the points and the laser reflectance intensity (reflectance). As another example, based on the principles of photogrammetry measurement, the points in the point cloud can include the three-dimensional coordinate information of the points and the color information. [0061] Point cloud data may be acquired through various methods, which include but are not restricted to, at least one of the following: (1) computer equipment generation, wherein computer equipment can generate point cloud data based on virtual 3D objects and virtual 3D scenes; (2) 3D laser scanning acquisition, wherein through 3D laser scanning, point cloud data of static real- world three-dimensional objects or three-dimensional scenes can be obtained, and millions of point cloud data can be obtained every second; (3) 3D photogrammetry acquisition, wherein the point cloud data of the real-world visual scene can be obtained by 3D photography equipment (that is, a group of cameras or camera equipment with multiple lenses and sensors) to obtain the point cloud data of the real-world visual scene, and the point cloud data of dynamic real-world three-dimensional objects or three-dimensional scenes can be obtained through 3D photography; and (4) Obtain 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 obtained through medical equipment such as magnetic resonance imaging (MRI), computed tomography (CT), and electromagnetic positioning information. [0062] These technologies have reduced the cost and time cycle of point cloud data acquisition meanwhile enhancing data accuracy. However, the processing of massive 3D point cloud data may face challenge of limitations in storage space and transmission bandwidth. G-PCC is one solution to overcome such issue. G-PCC generally includes the compression of geometry information and the compression of attribute information, and the operations of point cloud coding is introduced below. [0063] FIG.1 is a schematic diagram of a G-PCC encoding process according to an embodiment of the invention. Referring to FIG. 1, the G-PCC encoding process shown in FIG. 1 may be implemented by a point cloud encoder. For the point cloud data to be encoded, the point cloud 137382wof data is divided into multiple slices through slice division. In each slice, the positions (i.e., geometric information) of the points and the attributes of the points are coded (i.e., encoded and decoded) separately. From the above, it can be understood that points in a point cloud can have both position information and attribute information. Therefore, the encoding of points may involve position encoding and attribute encoding. In some cases, the position information of points is referred to as geometric information, and the encoding of point position can also be termed as geometric encoding. [0064] In the geometric encoding process, in step S102, a transform to the coordinates of the points is performed to transform the coordinates of the points from an initial domain to a transform domain. In particular, the positions of the points are coordinated to enclose the point cloud into a bounding box (bounding box). In step S104, the transform coordinates are voxelized. Voxelization of the transform coordinates may include quantization and removing some points of the point cloud. The quantization mainly plays the role of scaling. Due to the quantization rounding, part of the positions of the point cloud is the same, so whether to remove the duplicate points based on the parameters is further determined in step S104. The process of quantifying and removing the duplicate points is also called the voxelization process. [0065] In step S106, an octree is generated based on the voxelized transform 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 (including points in the point cloud) sub-cubes are continued to be divided into eight equal parts until the leaf nodes are obtained. In step S108, the points in the leaf nodes of the octree structure are arithmetic coded to generate a binary geometric bitstream, that is, a geometric code stream. [0066] FIG. 2A and FIG. 2B illustrate octree structures of G-PCC according to an embodiment of the invention, and FIG.2C illustrates corresponding digital representation of the octree structure according to an embodiment of the invention. Referring to FIG. 2A, a cubical axis-aligned 137382wof bounding box B is defined by two extreme points (0,0,0) and ^2^, 2^, 2^^ where d is the maximum size of a given point cloud along x, y or z direction. A point of the point cloud will be noted as “point” below. All points are included in this defined cube B. [0067] Referring to FIG.2B, the cube B is divided into eight sub-cubes B1 to B8, which creates an octree structure allowing 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 the same size cubes and share at least one same face/edge/point with this given cube. The volume of each of the cubes B1 to B8 is 1/8 volume of its parent cube B. Each of the cubes B1 to B8 may contain more than one point, and a number of points in a cube is dependent on the size and location of the cube. The size of a smallest cube is pre-defined for a given point cloud. For a given point, the parent cube of a given point is defined as a minimum size cube which contains this given point. Sibling points of a given point are defined as those points which have the same parent cube with this given point. [0068] Referring to FIG.2C, an octree is a recursive data structure that is often used to describe three-dimensional space in which each internal cube has exactly eight children. The space is recursively subdivided into eight octants to the point where the resolution of the child cube is equal to a size of the point – the smallest element that has no further subdivisions. To represent a cube an 8-bit binary code that follows a space-filling curve pattern (Hilbert, Morton) is used, each child is assigned a “1” or “0” value to indicate if the space in the child cube has any points associated with that child cube, or the child cube is empty. Only the occupied child cubes are further subdivided. The process of parent cube subdivision is terminated when the size of the child cube becomes equal to the size of the indivisible element, i.e., spatial resolution of the point cloud, or simply the size of the point. [0069] FIG. 3 illustrates structure of the cubes according to an embodiment of the invention. Referring to FIG. 3, depending on the location of the current cube, one cube may have up to six same-size cubes to share one face. In addition, the current cube may also have some neighbouring cubes which share lines or points with the current cube. 137382wof [0070] Similarly, the parent cube of the current cube also has up to six neighbouring cubes with the same size of the parent cube that share one face with the parent cube. The parent cube of the current cube also has up to twelve neighbouring cubes with the same size of parent cubes that share an edge. The parent cube of the current cube also has up to eight neighbouring cubes with the same size of parent cubes that share a point with the parent cube. [0071] Referring back to FIG. 1, in step S110, the points is analyzed to potentially determine a surface representation of sets of the points. In other words, based on the surface formed by the distribution of the point cloud in each block, twelve pieces of the surface and the block are analyzed. At most twelve vertexes (intersection points) are generated by the edges, and the arithmetic coding is performed on the vertexes (surface fitting based on the intersection points) in step S108 to generate the binary geometric bitstream. In step S112, the transform coordinates of points in the point cloud may be reconstructed based on the octree, data indicating the surfaces determined in step S110 and/or other information. The reconstructed geometric information may be used by attribute coding process. [0072] In the attribute coding process, after the geometric information is reconstructed, color transformation is performed in step S114, in which the color information (that is, the attribute information) is transformed from the RGB color space to the YUV color space, YCbCr color space or other color space. In step S116, the reconstructed geometric information is used to recolor the point cloud, so that the uncoded attribute information corresponds to the reconstructed geometric information. Because the geometric information changes after the geometric encoding, it is necessary to reassign the attribute value to each point after the geometric encoding. [0073] In the process of color information coding, there are mainly two transformation methods. The first method is distance-based lifting transformation in step S120 that relies on Level of Detail (LOD) division in step S118. The second method is Region Adaptive Hierarchical Transform (RAHT) transformation in step S122, which directly transforms the image. Both of these methods convert color information from the spatial domain to the frequency domain, to obtain 137382wof high-frequency coefficients and low-frequency coefficients through the transformation. The high-frequency coefficients and low-frequency coefficients may be referred to transform coefficients. Next, in step S124, these transform coefficients are quantified to generate quantized transform coefficients. In some case, quantizing the transform coefficients for a point may involve dividing the quantized attribute value (i.e., quantized transform coefficients ) by a QP step size for the point, and the QP step size is determined according to a Quantization Parameter (QP). In step S126, arithmetic encoding may be performed to syntax elements representing the quantized attribute coefficients, to output these syntax elements in an attribute bitstream. Namely, the quantized transform coefficients may be encoded by using arithmetic encoding to generate a binary attribute bitstream, that is, the attribute code stream. [0074] FIG.4 is a schematic diagram of a G-PCC decoding process according to an embodiment of the invention. The process in FIG. 4 may be implemented by the point cloud decoder. For the obtained binary code stream, the geometric bitstream and the attribute bitstream in the binary code stream are first decoded in steps S402 and S404, respectively. When decoding the geometric bitstream, through arithmetic decoding in step S402, octree synthesis in step S406, surface fitting in step S408, geometry reconstruction in step S410, and inverse coordinate transformation in step S412, the positions (i.e., geometric information) of the point cloud are obtained. [0075] When decoding the attribute bitstream, through arithmetic decoding in step S404, inverse Quantization in step S414, LOD-based lifting based inverse transformation in steps S416 and S418, or RAHT based inverse transformation in step S420, and inverse color conversion in step S422, the attributes of the point cloud are obtained. It should be noted that, the quantized attribute values (i.e., quantized transform coefficients ) may be dequantized in step S414. In some case, dequantizing a quantized attribute value for a point may involve multiplying the quantized attribute value by a QP step size for the point, and the QP step size is determined according to a Quantization Parameter (QP). 137382wof [0076] The octree-based geometry information may be coded with context-based arithmetic coding. There may also be some corresponding attribute information for point clouds, including color, reflectance, etc., that needs to be compressed. Because the neighbouring points in a point cloud may have a strong correlation, prediction-based coding methods have been developed and used to compose and code point cloud attributes. More specifically, a prediction is formed from neighbouring coded attributes. Then, the difference between the current attribute and the prediction is coded. [0077] It should be noted that, the steps depicted in FIG. 1 and FIG. 4 may be implemented as a plurality of program codes or circuits, which are not particularly limited in the invention. [0078] In the disclosure, coding may be assumed to mean encoding and decoding methods and systems. [0079] [Attribute Coding in the AVS G-PCC] [0080] AVS is developing a G-PCC standard. After the geometry information is coded, Morton or Hilbert code/order may be used to convert a point cloud cube into a one-dimension array. Each position in the cube will have a corresponding Morton or Hilbert code, but some positions may not have any corresponding point cloud attribute. In other words, some positions may be empty. The attribute coding will follow the pre-defined Morton or Hilbert order. A predictor may be generated from the previous coded points in Morton or Hilbert order. The attribute difference between the current point and its predictor is coded into the bitstream. [0081] To reduce the memory usage, some pre-defined number has been specified to limit the number of neighboring points that can be used in generating the prediction. For example, only M data points among previous N consecutively coded points may be used for coding the current attribute. In the previous AVS G-PCC software, M and N are set as a fixed number of 3 and 128, respectively. [0082] If more than 128 points have already been coded before the current point, only 3 out of the 128 previously coded neighbouring points could be used to form the attribute predictor 137382wof according to a pre-defined order. If there are less than 128 coded points before the current point, all such coded points will be used as candidates to establish the attribute predictor. More specifically, the previous K points, e.g., K = 6, before the current point are selected according to a pre-defined Morton or Hilbert order. Then, new Morton or Hilbert codes for these N points will be re-calculated by adding a fixed shift, e.g., 1, to coordinates (x, y, z) of these N data points. Assuming that the new Morton or Hilbert code for the current position is X, a P-point set before and a Q-point set after the current position according to the new Morton or Hilbert code order will be selected. Among these pre-defined K, P and Q point sets, M points are selected with M closest “distance” between these coded points and the current point. The distance d1 as one example is defined as follows, other distance metrics can also be used. [0083]
Figure imgf000017_0001
[0084] where (^1, ^1, ^1) and (^2, ^2, ^2) are coordinates of the current point and pre- selected point, respectively. [0085] More recently, a full search method based on Hilbert code has been applied in the AVS GPCC attribute coding. In the current software, the search range is set as 128 and the number of previous points used to form the predictor is set as M. If more than 128 points have already been coded before the current point, only M out of the 128 previously coded neighbouring points can be used to form the attribute predictor according to the Hilbert order. [0086] If there are fewer than 128 coded points before the current one, all such coded points will be used as candidates to form the attribute predictor. Among the up-to 128 previously coded points, M points are selected with M closest “distance” between these coded points and the current point. The distance d2 as one example is defined as follows, other distance metrics can also be used. [0087]
Figure imgf000017_0002
[0088] where (^1, ^1, ^1) and (^3, ^3, ^3) are the coordinates of the current point and the pre-selected point along Hilbert order, respectively. Once M closest points have been selected, 137382wof a weighted average of attributes from these M points is formed as the predictor to code the attribute of the current point. [0089] It is known that the points which share the same face/line/point with the current point are close to the current point. Another technology is to consider these points serving as a predictor. [0090] The residual is defined as the difference of attribute values between the current point and its predictor. Depending on the application, PCC can be either lossless or lossy. Hence, the residual may or may not be quantized by using the predefined quantization process. In the disclosure, the residual without or with quantization is called level. The level can be a signed integer and will be coded into the bitstream. [0091] [Color Level Coding] [0092] There are three color attributes for each point, which come from the three color components. If the levels for all the three color components are zeros, this point is called a zero level point. Otherwise, if there is at least one non-zero level for one color component with the point, this point is called a non-zero level point. In the current AVS-GPCC, the number of consecutive zero level points is called zero-run length. The zero-run length values and levels for non-zero level points are coded into the bitstream. [0093] More specifically, on the encoding side, before coding the first point, the zero-run length value is set as zero. Starting from the first point along the predefined coding order, the residuals between the three color predictors and their corresponding color attributes for the current point can be obtained. Then, the corresponding levels for the three components of the current point also can be obtained. If the current point is a zero level point, the zero-run length value will be increased by one and the process proceeds to the next point. If the current point is a non-zero level point, the zero-run length value will be coded first and then the three color levels for this non-zero level point will be coded right after. After the level coding of a non-zero level point, the zero-run length value will be reset to zero and the process proceeds to the next point till 137382wof finishing all points. [0094] On the decoding side, the zero-run length value is first decoded and the three color levels corresponding to the number of zero-run length points are set as zero. Then, the levels for the non-zero level point are decoded and then the next zero-run length value is decoded. This process continues until all points are decoded. [0095] For example, referring to FIG. 5A and 5B, which are schematic diagrams of a syntax table 500a and 500b of color residual coding according to an embodiment of the invention. For a non-zero level point, there is at least one non-zero level among the three components. The values of three components are coded in the color_residual_coding( ). Several one-bit flags plus the remainder of the absolute level may be coded to represent levels of three components. The absolute level or absolute level of color residual minus one may be coded in the function coded_level_coding( ) and named as coded level in the remaining of this disclosure. [0096] In one exemplary case, a first flag (e.g., color_first_comp_zero) is coded to indicate if the first component of color is zero or not; if the first component of color is zero, a second flag (e.g., color_second_comp_zero) is coded to indicate if the second component of color is zero or not; if the second component of color is zero, the absolute level minus one and the sign of the third component will be coded according to the following coded level method. [0097] In another case, a first flag is coded to indicate if the first component of color is zero or not; if the first component of color is zero, a second flag is coded to indicate if the second component of color is zero or not; if the second component of color is not zero, the absolute level minus one and sign of the second component will be coded according to the following coded level method, the absolute level and sign of the third component will be coded according to the following coded level method. [0098] In another case, a first flag is coded to indicate if the first component of color is zero or not; if the first component of color is not zero, the absolute level minus one and sign of the first component will be coded according to the following coded level method, the absolute levels and 137382wof signs of the second and third components will be coded according to the following coded level method, respectively. [0099] The coding method to produce a coded level is designed as follows. The first flag (e.g., coded_level_equal_zero) is coded to indicate if the coded level is zero or not; if the coded level is the absolute level of one component minus one, i.e., when isComponentNoneZero is equal to true, the sign (e.g., coded_level_sign) of the level of this component will be coded. If the first flag indicates that the coded level is not zero, and if the coded level is the absolute level of one component itself, i.e., when isComponentNoneZero is equal to false, the sign of the level of this component will be coded. The second flag (e.g., coded_level_gt1) will be coded to indicate if the coded level is greater than one or not; if the coded level is greater than one, the parity of the coded level minus two is coded and the third flag (e.g., coded_level_minus2_div2_gt0) will be coded to indicate if the coded level minus two dividing two is greater than zero or not; if the coded level minus two dividing two is greater than zero, the coded level minus two dividing two minus one will be coded. [00100] [Reflectance Level Coding] [00101] In the current AVS-GPCC specification, the zero-run length of reflectance level and the non-zero reflectance level are coded into bitstream. More specifically, in the encoding side, before coding of the first point, the zero-run length counter is set as zero. Starting from the first point along the predefined coding order, the residuals between the predictors and corresponding original points are obtained. Then the corresponding levels are obtained. If current level is zero, zero-run length will be increased by one and the process proceeds to the next point. If the level is not zero, the zero-run length will be coded first and the non-zero level will be coded after the zero- run length coding. After coding a non-zero level, zero-run length counter will be reset to zero and the process proceeds to next point. In the decoding side, the number of zero-run length is first decoded and the levels corresponding to the number of zero-run length points are set as zero. Then non-zero level is decoded and the next number of zero-run length is decoded. Process 137382wof continues until all points are decoded. [00102] For example, referring to FIG. 6, which is schematic diagram of a syntax table 600 of reflectance coding according to an embodiment of the invention. For a non-zero level, if the current point is not a duplicated point, the sign of level is coded with a syntax element residual_sign first. Then a syntax element abs_level_minus1_parity which indicates the parity of the absolute level minus one is coded. Another syntax element abs_level_minus1_div2_gt0 is coded to indicate if the value of the absolute level minus one divided by two is greater than zero or not; if abs_level_minus1_div2_gt0 is great than zero, another syntax element abs_level_minus1_div2_gt1 is coded to indicate if the value of the absolute level minus one divided by two is greater than one or not; if abs_level_minus1_div2_gt1 is greater than 1, another syntax element abs_level_minu1_div2_minus2 is coded to indicate the value of the absolute level minus one divided by two minus two. [00103] [Zero-run length coding] [00104] In the current AVS-GPCC specification, the value of the zero-run length is coded into bitstream. For example, referring to FIG. 7, which is a schematic diagram of a syntax table 700 of zero-run length coding according to an embodiment of the invention. More specifically, the first syntax zero_run_length_level_equal_zero is coded to indicate if the zero-run length is eqaul to zero or not; if it is not zero, the second syntax syntax zero_run_length_level_equal_one is coded to indicate if the zero-run length is eqaul to one or not; if it is not one, the third syntax zero_run_length_level_equal_two is coded to indicate if the zero-run length is eqaul to two or not; if it is not two, the fourth syntax zero_run_length_level_minus3_parity and the fifth syntax zero_run_length_level_minus3_div2 are coded to indicate the parity of the zero-run length minus three and the value of the zero-run length minus three divided by two, respectively. [00105] [Aspect 1: bitstream structure] [00106] FIG. 8 is a flowchart of a point cloud decoding method applied to a decoder according to an embodiment of the invention. Referring to FIG. 8, each step in the methods may be 137382wof performed by a decoder using the G-PCC decoding process illustrated as FIG. 4. In step S810, the decoder may obtain a bitstream of point cloud. In step S820, the decoder may parse a plurality of headers and point cloud data coded in layer structure in the bitstream of point cloud. The headers in the bitstream of point cloud includes at least a sequence header, a geometry header, an attribute header, and a frame header, and other headers. The sequence header is disposed outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header. That is, the headers are disposed in a specific order within the bitstream. Each header may include information (e.g., parameters, identifiers, or flags) for decoding the bitstream of point cloud. Besides, the point cloud data in the bitstream of point cloud may further include geometry data and attribute data. In some embodiments, the geometry data may include general geometry data bitstream of one or more slice(s) of a PCC frame. In some embodiments, the attribute data may include the general attribute data bitstream of one or more slice(s) of a PCC frame.For example, the geometry bitstream may be decoded according to the information in the geometry header. The attribute bitstream may be decoded according to the information in the attribute header. However, when a syntax element, which is included in the sequence header and specifying whether the attribute data is present, is equal to 0, the attribute header and the attribute data may not be included in the bitstream of point cloud. [00107] In an embodiment of the invention, the headers in the bitstream of point cloud may further include an attribute slice header and a geometry slice header, and the geometry slice header is before the attribute slice header. When a syntax flag included in the frame header is equal to 1 and a syntax element included in the sequence header indicates the attribute data is present, the decoder may parse the attribute slice header and the geometry slice header for each slice of a PCC frame. When a syntax flag included in the frame header is equal to 1 and a syntax element included in the sequence header indicates the attribute data is not present, the decoder may parse the geometry slice header for each slice of a PCC frame. When a slice index is equal to 0, the 137382wof syntax flag included in the frame header is not equal to 1 (i.e., the syntax flag is equal to 0), and a syntax element included in the sequence header indicates the attribute data is present, the decoder may parse the attribute slice header and the geometry slice header for only one slice of the PCC frame. When a slice index is equal to 0, the syntax flag included in the frame header is not equal to 1 (i.e., the syntax flag is equal to 0), and a syntax element included in the sequence header indicates the attribute data is not present, the decoder may parse the geometry slice header for only one slice of the PCC frame. Further, when a slice index is not equal to 0 and the syntax flag included in the frame header is not equal to 1 (i.e., the syntax flag is equal to 0), the decoder may not parse the attribute slice header and the geometry slice header for the current slice of the PCC frame. [00108] FIG. 9 is a flowchart of parsing the attribute slice header and the geometry slice header according to an embodiment of the invention. Referring to FIG.9, each step in the methods may be performed by a decoder using the G-PCC decoding process illustrated as FIG.4. In step S821, the decoder may determine whether a syntax flag included in the frame header is equal to 1. If the step S821 is determined as yes, in step S822, the decoder may parse the attribute slice header and the geometry slice header for each slice of a PCC frame when a syntax element included in the sequence header indicates the attribute data is not present. That is, when the syntax flag included in the frame header is equal to 1, each slice may be corresponding to one attribute slice header and one geometry slice header, and the bitstream may include multiple attribute slice headers and multiple geometry slice headers for multiple slices in the same PCC frame. On the other hand, if the step S821 is determined as no, in step S823, the decoder may parse the attribute slice header and the geometry slice header for only one slice of the PCC frame when the slice index is equal to 0 when a syntax element included in the sequence header indicates the attribute data is not present. That is, in step S823, the bitstream may only include one attribute slice header and one geometry slice header for all slices in the same PCC frame. [00109] FIG. 10A is a schematic diagram of a syntax table 100 of a bitstream of point cloud 137382wof according to an embodiment of the invention. FIG.10B is a schematic diagram of a syntax table of a geometry slice according to an embodiment of the invention. FIG. 10C is a schematic diagram of a syntax table of an attribute slice according to an embodiment of the invention. This disclosure proposes that the bitstream of point cloud is organized with the layered structures in FIG. 10A to FIG.10C. The sequence header is the first parsed structure which includes some sequence related syntax. After the first sequence header, one geometry header may be parsed. Then, if a syntax element (i.e., attribute_present_flag) specifying whether the attribute is present is equal to 1, one attribute header may be parsed after parsing the geometry header. If a syntax element (i.e., attribute_present_flag) specifying whether the attribute is present is equal to 0, one attribute header may not be parsed after parsing the geometry header. The bitstream starts with the first sequence header and ends with either the first sequence ending code or the first editing code. It should be noted that, FIG.10A merely takes one sequence header, one geometry header and one attribute header for example, the number of the sequence header, the number of the geometry header and the number of attribute header is not limited in the disclosure. That is, there may be multiple sequence headers, geometry headers and attribute headers between the first sequence header among the multiple sequence headers and the first sequence ending code or the first editing code. [00110] In an embodiment of the invention, except for that the first sequence header, the first geometry header and the first attribute header may appear in order, the other sequences headers, the other geometry headers, and the other attribute headers may appear one, two, or three of them and in any order. [00111] In an embodiment of the invention, after the sequence header, the geometry header and the attribute header, there may be one or multiple coded PCC frames. In the exemplary case of FIG. 10A, 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 maybe used for coding the current PCC frame. Coded bitstream has same decoding order with coded PCC frame. The 137382wof coding order of PCC frame may be different with display order of PCC frame. [00112] In an embodiment of the invention, a syntax table of a bitstream of point cloud may include a conditioning statement determining whether to parse the the attribute slice header and the geometry slice header, wherein the conditioning statement may include checking whether the slice index is equal to 0 and whether a syntax flag (e.g., multi_slice_header_enabled_flag in FIG. 12) included in the frame header is equal to 1. If the slice index is equal to 0 or the syntax flag (e.g.., multi_slice_header_enabled_flag in FIG.12) is equal to 1, the decoder may parse the attribute slice header and the geometry slice header when a syntax element (i.e., attribute_present_flag) is equal to 1. If the slice index is equal to 0 or the syntax flag (e.g.., multi_slice_header_enabled) is equal to 1, the decoder may parse the geometry slice header when a 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 (e.g., multi_slice_header_enabled_flag in FIG. 12) is not equal to 1, the decoder may not parse the attribute slice header and the geometry slice header for the current slice. [00113] In an embodiment of the invention, the decoder may identify the headers from the bitstream of point cloud according to a prefix bitstring and a predefined code. The last bit of the prefix bitstring is concatenated with the first bit of the predefined code. Namely, a code consisting of the prefix bitstring and the predefined code may be used to identify the header and data information. [00114] In an embodiment of the invention, the prefix bitstring includes 24-bit binary code, and the predefined code includes 8-bit binary code. For example, the prefix bitstring may be 24-bit binary code “000000000000000000000001”. [00115] In an embodiment of the invention, the predefined code includes at least one of a slice start code, a slice end code, a pcc sequence start code, a pcc sequence end code, an attribute start code, a geometry start code, a frame start code, and a pcc edit code. The value of the predefined code may be shown in Table 1. 137382wof Table 1
Figure imgf000026_0001
[00116] FIG. 11 is a flowchart of identifying the headers according to an embodiment of the invention. Referring to FIG. 11, each step in the methods may be performed by a decoder using the G-PCC decoding process illustrated as FIG. 4. In step S825, the decoder may determine whether the next sequence of bits match to a prefix bitstring. If the step S825 is determined as yes, the decoder may identify the headers from the bitstream of point cloud according to a prefix bitstring and a predefined code. [00117] For example, based on the Table 1 and syntax table 100 in FIG.10, if the next 32 bits in the bitstream is “0000 0000 0000 0000 0000 0001” concatenated with the “1011 0000”, the decoder may be able to identify the pcc_sequence_start_code which is used for identifying the sequence header. [00118] [Aspect 2: AVS_GPCC frame header] [00119] This disclosure proposes a frame header for a PCC frame. All the frame-related syntax elements (e.g., frame number, frame coding type, etc.) are specified in the frame header. [00120] In an embodiment of the invention, the frame header includes a first syntax element 137382wof specifying a decoding order of a PCC frame. In another embodiment of the invention, the frame header includes a first syntax element specifying an order of a PCC frame associated with a plurality of point cloud frames. The first syntax element is configured to uniquely identify the associated PCC frame among all the point cloud frames. When the associated PCC frame is to be output from a decoded point cloud buffer, the first syntax element is configured to indicate a position of the associated point cloud frame in output order relative to output order positions of the other point cloud frames that are to be output from the decoded point cloud buffer. [00121] In an embodiment of the invention, the frame header includes a second syntax element specifying a frame type of a PCC frame. [00122] In an embodiment of the invention, the frame header includes a third syntax element specifying whether there is more than one slice in a PCC frame. [00123] In an embodiment of the invention, the frame header includes a third syntax element specifying whether there is more than one slice in a PCC frame. 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 are present in the frame header when the third syntax element is equal to a preset value. [00124] In an embodiment of the invention, a sixth syntax element specifying whether a current intra-coded PCC frame is a random access point and a seventh syntax element specifying whether a delta QP is enabled for a PCC frame are present in the frame header when a second syntax element specifying a frame type of the PCC frame is equal to a preset value. [00125] For example, FIG. 12 is a schematic diagram of a syntax table 200 of a frame header according to an embodiment of the invention. Referring to FIG. 12, the frame header may include a first syntax element (i.e., decode_order_index) specifying a decoding order of a PCC frame. In another example of the invention, the frame header may include a first syntax element (i.e., decode_order_index) specifying an order of a PCC frame that is associated with each point cloud frame. The first syntax element (i.e., decode_order_index) may be configured for 137382wof uniquely identifying the associated PCC frame among all the point cloud frames. When the associated PCC frame is to be output from the decoded point cloud buffer, the he first syntax element (i.e., decode_order_index) may be configured for indicating the position of the associated PCC frame in output order relative to the output order positions of the other point cloud frames that are to be output from the decoded point cloud buffer. [00126] The frame header may include a second syntax element (i.e., frame_type) specifying a frame type of a PCC frame which is specified in Table 2. Table 2
Figure imgf000028_0001
[00127] Besides, the third syntax element (i.e., mul_slice_flag) in the frame header specifying whether there is more than one slice in a PCC frame. In one exemplary case, mul_slice_flag equal to 0 specifies that there is only one slice within the current picture, and mul_slice_flag equal to 1 specifies that there is more than one slice within the current picture. [00128] A fourth syntax element (i.e., num_slice_minus_two) specifying the number of slices in the PCC frame and a fifth syntax element (i.e., mult_slice_header_enabled_flag) specifying whether multiple geometry slice headers and multiple attribute slice headers are used for the slices are present in the frame header when the third syntax element (i.e., mul_slice_flag) is equal to 1. In detail, num_slice_minus_two plus 2 specifies the number of slices for 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 num_slice) may be obtained according to the following formula (1). num_slice = num_slice_minus_two + 2 formula (1) Further, mult_slice_header_enabled_flag equal to 1 specifies that multiple geometry slice 137382wof headers and the attribute slice headers may be used for multiple slices, and 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. [00129] In an embodiment of the invention, a sixth syntax element (i.e., random_access_point_flag) specifying whether a current intra-coded PCC frame is a random access point and a seventh syntax element (i.e., frame_qp_delta_enabled_flag) specifying whether a delta QP is enabled for a PCC frame are present in the frame header when a second syntax element specifying a frame type of the PCC frame is equal to “00”. In one exemplary case, random_access_point_flag equal to 1 specifies that the current intra-coded PCC frame may be a random access point, and 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. Further, pic_qp_delta_enabled_flag equal to 1 specifies that delta quantization parameter (QP) may be enabled for the current PCC frame, and pic_qp_delta_enabled_flag equal to 0 specifies that delta QP may not be enabled for the current PCC frame. [00130] [Aspect 3: The extension of AVS-GPCC] [00131] To add more coding tools in future coding specification versions, it is desirable to design the interface supporting compatibility between the current standard and extension standards. First, the later version standard (e.g., GPCC v2) decoder can fully decode the previous version standard (e.g., GPCC v1) bitstreams, i.e. backward compatibility. Second, it is better for a previous standard (e.g., GPCC v1) decoder can also be forward compatible at least with the high level syntax portion of bitstreams produced by later versions of GPCC (e.g., GPCC v2). [00132] More specifically, a decoder conforming to GPCC v1 may not be able to decode the entirety of a GPCC v2 bitstream of, because the GPCC v2 bitstream may exercise coding tools which are defined in the GPCC v2 specification but are not known to GPCC v1 decoders. 137382wof However, it is highly desirable that a GPCC v1 decoder should at least be able to decode the high level syntax portion of a GPCC v2 bitstream. By decoding the high level syntax successfully, the GPCC decoder may determine not just tool information, but also profile and tier information. Such information provides hints to the decoder of the capabilities required to decode the bitstream. For example, tool information hints to the decoder which coding tools are used in the bitstream. The profile and tier information hints to the decoder about the uncompressed video data throughput that needs to be supported. [00133] If the high level syntax is successfully parsed, the GPCC decoder can determine if the current bitstream can be decoded. If the current bitstream can be decoded, the GPCC decoder can gracefully terminate the decoding process. Therefore, forward compatibility is also highly desirable for designing an earlier version standard. In contrast, a GPCC v1 decoder without such ability may not parse even the high level syntax of GPCC v2bitstreams. As a result, all tools, profile and tier information will be unknown. [00134] This disclosure proposes to add a syntax element (e.g., a one- or two-bit syntax element) to support the above-mentioned abilities, i.e., both forward and back compatibilities between previous and later version standards. [00135] In an embodiment of the invention, a coding specification version of the bitstream of point cloud may be identified according to a syntax element associated with the coding specification version in at least one of the headers. [00136] In an embodiment of the invention, a syntax element specifying the length of a sequence extension data and a syntax element specifying the sequence extension data in at least one of the headers may be obtained when the syntax element associated with the coding specification version is equal to a preset value. [00137] In an embodiment of the invention, values of the sequence extension data may be ignored by using the decoder conforming to a first coding specification version according to the syntax element specifying the length of the sequence extension data and the syntax element specifying 137382wof the sequence extension data when the syntax element associated with the coding specification version of the bitstream of point cloud is equal to the preset value. The coding specification version of the bitstream of point cloud is a second coding specification version when the syntax element associated with the coding specification version is equal to the preset value. The coding specification with the second coding specification version may be specified later than the coding specification with the first coding specification version. [00138] FIG. 13 is a flowchart of recognizing a coding specification version of the bitstream of point cloud according to an embodiment of the invention. Referring to FIG. 13, each step in the methods may be performed by a decoder using the G-PCC decoding process illustrated as FIG. 4. In step S1310, the decode may obtain a bitstream of point cloud. In step S1320, the decode may parse a plurality of headers coded in layer structure in the bitstream of point cloud. In step S1330, the decode may identify a coding specification version of the bitstream of point cloud according to a syntax element associated with the coding specification version in the sequence header. [00139] In step S1340, the decode may determine whether the syntax element associated with the coding specification version is equal to a preset value. If step is determined as yes, in step S1350, the decode may obtain a syntax element specifying the length of a sequence extension data and a syntax element specifying the sequence extension data in at least one of the headers. It should be noted that, if the decode conforming to the first coding specification version and the bitstream of point cloud is coded according to the second coding specification version, the decoder may ignore the values of the sequence extension data according to the syntax element specifying the length of a sequence extension data. In step S1360, the decode may decode the bitstream of point cloud according to the headers. [00140] FIG. 14A and 14B are schematic diagrams of a syntax table 300a of a sequence header according to an embodiment of the invention. Referring to FIG.14A and 14B, a syntax element (e.g., sequence_extension_enable) associated with the coding specification version is included in the sequence header. In one exemplary case, sequence_extension_enable equal to 0x00 137382wof specifies that sequence_extension_length and sequnce_extension_data_byte syntax elements are not present in the sequence header syntax structure, and sequence_extension_enable equal to 0x10 specifies that sequence_extension_length and sequnce_extension_data_byte may be present in the sequence header syntax structure. Here, sequence_extension_enable shall be equal to 0x00 in bitstreams conforming to the first coding specification version of the current specification. However, sequence_extension_enable equal to 0x10 may be configured and specified due to the second coding specification version of the current specification, and the decoder conforming to the first coding specification version of the current specification shall allow the value of sequence_extension_enable equal to 0x10 to appear in the syntax. [00141] In one exemplary case, sequence_extension_length specifies the length of the sequence extension data in bytes, not including the bits used for signalling sequnce_extension_length itself. When sequence_extension_length is not present, the value of sequence_extension_length is inferred to be equal to 0. Although sequnce_extension_length is not present in bitstreams conforming to the first coding specification version, sequnce_extension_length could be used and specified in a specification with the second coding specification version. The decoders conforming to the first coding specification version shall allow sequence_extension_length to be present and in the range of 0 to N, e.g. N is 256, inclusive. [00142] In one exemplary case, in FIG. 14A, sequence_extension_data_byte[ i ] may have any value. The presence and value of sequence_extension_data_byte[ i ] do not affect the decoding process specified in the first coding specification version. The decoder conforming to the first coding specification version shall ignore the values of all the sequence_extension_data_byte[ i ] syntax elements. Its value does not affect the decoding process specified in the first coding specification version of the specification. [00143] In one exemplary case, in FIG.14B, sequence_extension_data_bit may have any value. The presence and value of sequence_extension_data_bit do not affect the decoding process specified in the first coding specification version of this Specification. The decoders conforming 137382wof to the first coding specification version shall ignore the values of all the sequence_extension_data_bit syntax elements. Its value does not affect the decoding process specified in the first coding specification version of the specification. [00144] In one exemplary case, more_data_in_sequence_header_extension( ) is specified as follows: [00145] – If (the current position in the sequence_header( ) syntax structure ) − ( the 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. [00146] – Otherwise, the return value of more_data_in_sequence_header_extension( ) is equal to FALSE. [00147] FIG. 15A and 15B are schematic diagrams of a syntax table 400a, 400b of a geometry header according to an embodiment of the invention. Referring to FIG. 15A and 15B, a syntax element (e.g., geometry_extension_enable) associated with the coding specification version is included in the sequence header. In one exemplary case, geometry_extension_enable equal to 0x00 specifies that geometry_extension_length and geometry_extension_data_byte syntax elements are not present in the sequence header syntax structure, and 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. [00148] The definition of geometry_extension_enable, geometry_extension_length, geometry_extension_data_byte[i] and geometry_extension_data_bit is similar with the definition of sequence_extension_enable, sequence_extension_length, sequence_extension_data_byte[i] and sequence_extension_data_bit, and thus those skilled in the art can infer the usage and definitions of these grammatical elements with reference to the foregoing description. [00149] FIG. 16A and 16B are schematic diagrams of a syntax table 900a, 900b of an attribute header according to an embodiment of the invention. Referring to FIG. 16A and 16B, a syntax 137382wof element (e.g., attribute_extension_enable) associated with the coding specification version is included in the sequence header. In one exemplary case, attribut_extension_enable equal to 0x00 specifies that attribute_extension_length and attribute_extension_data_byte syntax elements are not present in the sequence header syntax structure, and 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. [00150] The definition of attribute_extension_enable, attribute_extension_length, attribute_extension_data_byte[i] and attribute_extension_data_bit is similar with the definition of sequence_extension_enable, sequence_extension_length, sequence_extension_data_byte[i] and sequence_extension_data_bit, and thus those skilled in the art can infer the usage and definitions of these grammatical elements with reference to the foregoing description. [00151] FIG.17A and 17B are schematic diagrams of a syntax table 1700a, 1700b of a geometry slice header according to an embodiment of the invention. Referring to FIG. 17A and 17B, a syntax element (e.g., geometry_slice_extension_enable) associated with the coding specification version is included in the sequence header. In one exemplary case, geometry_slice_extension_enable equal to 0x00 specifies that geometry_slice_extension_length and geometry_slice_extension_data_byte syntax elements are not present in the sequence header syntax structure, and 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. [00152] The definition of geometry_slice_extension_enable, geometry_slice_extension_length, geometry_slice_extension_data_byte[i] and geometry_slice_extension_data_bit is similar with the definition of sequence_extension_enable, sequence_extension_length, sequence_extension_data_byte[i] and sequence_extension_data_bit, and thus those skilled in the art can infer the usage and 137382wof definitions of these grammatical elements with reference to the foregoing description. [00153] FIG.18A and 18B are schematic diagrams of a syntax table 1800a, 1800b of an attribute slice header according to an embodiment of the invention. Referring to FIG. 18A and 18B, a syntax element (e.g., attribute_slice_extension_enable) associated with the coding specification version is included in the sequence header. In one exemplary case, attribute_slice_extension_enable equal to 0x00 specifies that attribute_slice_extension_length and attribute_slice_extension_data_byte syntax elements are not present in the sequence header syntax structure, and attribute_slice_extension_enable equal to 0x10 specifies that attribute_slice_extension_length and attribute_slice_extension_data_byte may be present in the sequence header syntax structure. [00154] The definition of attribute_slice_extension_enable, attribute_slice_extension_length, attribute_slice_extension_data_byte[i] and attribute_slice_extension_data_bit is similar with the definition of sequence_extension_enable, sequence_extension_length, sequence_extension_data_byte[i] and sequence_extension_data_bit, and thus those skilled in the art can infer the usage and definitions of these grammatical elements with reference to the foregoing description. [00155] FIG.19 is a schematic diagram of a syntax table 1900 of a sequence header according to an embodiment of the invention. Referring to FIG. 19, a syntax element (e.g., profile_id) associated with the coding specification version is included in the sequence header. In one exemplary case, profile_id equal to 0xXX specifies that sequence_extension_length and sequence_extension_data_byte[ i ] syntax elements are not present in the sequence header syntax structure. It should be noted that, the syntax table in FIG. 14A to 18B may be modified in a similar way by using the syntax element (e.g., profile_id) associated with the coding specification version. [00156] This disclosure proposes to use a predefined extension and user data structures to support both forward and back compatibilities between previous and later version standards. In an 137382wof embodiment of the invention, the high level syntax or the new defined function of the later version standards may be presented in the extension data or the user data. [00157] In an embodiment of the invention, a extension data and a user data are disposed after each of the headers, and the extension data and the user data are identified from the bitstream of point cloud according to a prefix bitstring and a predefined code. For example, in the syntax table 100 of FIG. 10A, a function for decoding the user data and the extension data (e.g., extension_and_user_data(0)) may be disposed after each of the sequence header, the geometry header, the attribute header, and the frame header. [00158] In an embodiment of the invention, the prefix bitstring includes 24-bit binary code, and the predefined code includes an 8-bit binary code. For example, the prefix bitstring may be a 24- bit binary code “000000000000000000000001”. [00159] In an embodiment of the invention, the predefined code includes an extension start code and a user data start code. For example, the coded value of the extension start code and the user data start code may be defined in Table 1. [00160] For example, FIG. 20 is a schematic diagram of an extension and user data structure 2000 according to an embodiment of the invention. If the next 32 bits match to the prefix bitstring concatenated with the coded value of the extension start code or match to the prefix bitstring concatenated with the coded value of the user data start code, the decoder may obtain the extension data and the user data according to the coded value of the extension start code and the coded value of the user data start code. For example, FIG. 21A and FIG. 21B are schematic diagrams of an extension data structure 2100a, 2100b according to an embodiment of the invention. Besides, FIG.22 is a schematic diagram of a user data structure 2200 according to an embodiment of the invention. Comparing FIG. 21A with FIG. 21B, the extension functions in the future coding version may be included in the extension data of FIG. 21A, and no any defined extension functions is included in the extension data of FIG. 21A since there is no any defined extension yet in the current coding version. 137382wof [00161] FIG.23 is a flowchart of a point cloud encoding method applied to an encoder according to an embodiment of the invention. Referring to FIG. 23, each step in the methods may be performed by a encoder using the G-PCC encoding process illustrated as FIG.1. In step S2310, the encoder may obtain point cloud data. In step S2320, the encoder may encode the point cloud data to generate a bitstream of point cloud comprising a plurality of headers coded in layer structure. The headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header. The sequence header is disposed outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header. That is, the headers are disposed in a specific order within the bitstream. Each header may include information (e.g., parameters, identifiers, or flags) for decoding the bitstream of point cloud. [00162] In an embodiment of the invention, the headers in the bitstream of point cloud may include an attribute slice header and a geometry slice header. The attribute slice header and the geometry slice header for each slice of a PCC frame may be inserted into the bitstream of point cloud by the encode when a syntax flag included in the frame header is equal to 1. The attribute slice header and the geometry slice header for only one slice of the PCC frame may be inserted into the bitstream of point cloud by the encode when a slice index is equal to 0 and the syntax flag included in the frame header is not equal to 1. [00163] In an embodiment of the invention, a prefix bit string and a predefined code are inserted into the bitstream of point cloud by the encode to indicate the headers in the bitstream of point cloud, wherein the last bit of the prefix bitstring is concatenated with the first bit of the predefined code. [00164] In an embodiment of the invention, a syntax element is inserted into at least one of the headers in the bitstream of point cloud by the encode according to a coding specification version of the bitstream of point cloud. 137382wof [00165] In an embodiment of the invention, a syntax element specifying the length of a sequence extension data and a syntax element specifying the sequence extension data are inserted into at least one of the headers when the syntax element associated with the coding specification version is equal to a preset value. [00166] The decoder of the invention includes a storage device and a processor. The processor is electrically connected to the storage device, and is configured to: obtain a bitstream of point cloud; parse a plurality of headers coded in layer structure in the bitstream of point cloud; and decode the bitstream of point cloud according to the headers. The headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header. The sequence header is disposed outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header. [00167] The encoder of the invention includes a storage device and a processor. The processor is electrically connected to the storage device, and is configured to: obtain point cloud data; and encode the point cloud data to generate a bitstream of point cloud comprising a plurality of headers coded in layer structure. The headers in the bitstream of point cloud includes a sequence header, a geometry header, an attribute header, and a frame header. The sequence header is disposed outside the geometry header, the attribute header, and the frame header. The geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header. [00168] [Aspect 4: Throughput related solution] [00169] This disclosure proposes that an individual counter is used to control how many bins are coded as context-coded bins for coding the value of zero-run length, the values of reflectance, and color residual, respectively. Once one context-coded bin is generated, the corresponding counter increases by one. If the corresponding counter reaches a predefined value, all the remaining bins for coding the value of zero-run length, the values of reflectance, and color residual will be coded 137382wof with the bypass approach, respectively. [00170] As an example, suppose that the value of zero-run length is 62, and a predefined value of context-coded bins for coding the value of zero-run length is set as 10. Before the coding, the counter is set to 0. The first bin will be coded to indicate the value of zero-run length is not zero and the counter increases by one; the second bin will be coded to indicate the value of zero-run length is not one and the counter increases by one; the third bin will be coded to indicate the value of zero-run length is not two and the counter increases by one; the fourth bin will be coded to indicate the parity of 62 and the counter increases by one. After these four bins are coded with the context-based approach, the remainder will be (62-2)/2 = 30, and 30 will be binarized with a 2nd-order EG code as 00001000010 with 11 bins. Because there are six more context-coded bins left in the budget, the first six bins 000010 will be coded with the context-based approach and the remaining five bins 00010 will be coded with the bypass approach. Alternatively, the first five 00001 bins will be coded with the bypass approach, and the rest six bins 000010 will be coded with the context-based approach. Similarly, predefined counter for reflectance and color residual will be used to control the throughput for reflectance and color residual coding, respectively. [00171] Beyond the individual counter for zero-run length, reflectance and color residual coding, a global counter or several global counters are proposed to count total context bins for all bins, including geometry coding, zero-run length, reflectance and color residual coding etc. so that the total context bins are less than a predefined value. The global counter could work at frame level, it also can work at subset of coded point cloud level. For example, the total context bins for K coded point cloud could be less than the predefined value where number K and the predefined values could be related to profile definition. [00172] FIG.24 is a schematic block diagram of an codec device provided by an embodiment of the invention. Referring to FIG. 24, the codec device 1000 may be the decoder or the encoder described in an embodiment of the invention. The codec device 1000 may comprise a transceiver 1001, a storage device 1002 and a processor 1003. 137382wof [00173] The storage device 1002 may stores executable instructions or the computer program. The processor 1003 may execute the executable instructions or the computer program to implement the methods in an embodiment of the invention. For example, the processor 1003 may be used to perform the steps of the above method in FIG. 8 to FIG. 11 according to the instructions or the computer program stored in the storage device 1002. [00174] In some embodiments of the invention, the processor 1003 may include (but is not limited to) a central processing unit (CPU), a graphic processing unit (GPU), general-purpose or special-purpose processors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs) or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc. In one embodiment of the invention, the codec device 1000 may include more processors to implement the method in an embodiment of the invention. [00175] In some embodiments of the invention, the storage device 1002 includes(but is not limited to) volatile memory and/or non-volatile memory. Among them, non-volatile memory can be Read-Only Memory (ROM), programmable ROM (PROM), erasable programmable read- only memory (EPROM), electrically erasable programmable read-only memory (EEPROM) or flash memory. Volatile memory can be Random Access Memory (RAM), which is used as an external cache. By illustrative but not limitless, many forms of RAM are available, such as Static RAM (SRAM), Dynamic RAM (DRAM), Synchronous DRAM (SDRAM), Double Data Rate SDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM), synch link DRAM (SLDRAM), and Direct Rambus RAM (DR RAM). [00176] In some embodiments of the invention, the computer program may be divided into one or more units, the one or more units are stored in the storage device 1002, and executed by the processor 1003 to complete the method provided in the invention. The unit or units may be a series of computer program instruction segments capable of completing a particular function. [00177] The transceiver 1001 may be connected to the processor 1003 or the storage device 1002. 137382wof 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 transmit the bitstream of point cloud. The transceiver 1001 may include a transmitter and receiver. The transceiver 1001 may further include antennas, the number of antennas may be one or more. [00178] It should be understood that the various components in the codec device 1000 are connected by a bus system, wherein the bus system includes a power bus, a control bus and a status signal bus in addition to the data bus. [00179] The invention also provides a computer storage medium on which a computer program is stored, and the computer program is executed by the computer such that the computer can execute the method embodiment of the above method. In other words, embodiments of the invention also provide a computer program product comprising instructions, the instruction is executed by the computer when the computer executes the method of executing the above method embodiment. [00180] When implemented using software, it may 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 loading and executing the computer program instructions on the computer, the process or function in accordance with the invention is produced in whole or in part. The computer may be a general-purpose computer, a special purpose computer, a computer network, or other programmable device. The computer instruction may be stored in a computer- readable storage medium, or transmitted from one computer-readable storage medium to another computer-readable storage medium, for example, the computer instruction may be transmitted from a website site, computer, server or data center to another website site (e.g., coaxial cable, optical fiber, digital subscriber line (DSL)) or wireless (e.g., infrared, wireless, microwave, etc.) to another website site, computer, Server or data center for transmission. The computer-readable storage medium may be any available media that the computer can access, or a data storage device 137382wof such as a server, data center, etc., that contains one or more available media integration. The available media may be magnetic media (e.g., floppy disks, hard disks, magnetic tapes), optical media (e.g., digital video discs (DVDs)), or semiconductor media (e.g., solid state disks (SSDs)) and the like. [00181] the G-PCC system applying the above-mentioned improved decoding method and the above-mentioned improved encoding method may adapt to a wide range of PCC inputs and can be used in many applications. [00182] It will be apparent to those skilled in the art that various modifications and variations can be made to the disclosed embodiments without departing from the scope or spirit of the disclosure. In view of the foregoing, it is intended that the disclosure covers modifications and variations provided that they fall in the scope of the following claims and their equivalents. Reference Signs List [00183] 1000:codec device 1003:Processor 1002:Storage device 1001:Transceiver 100, 200, 300a, 300b, 400a, 400b,500a, 500b, 600, 700, 900a, 900b, 1700a, 1700b, 1800a, 1800b, 1900:syntax table B1~B8:Cube 2000: extension and user data structure 2100a, 2100b: extension data structure 2200: user data structure S102、S104、S106、S108、S110、S112、S114、S116、S118、S120、S122、S124、 137382wof 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:Step

Claims

137382wof WHAT IS CLAIMED IS: 1. A point cloud decoding method, comprising: obtaining a bitstream of point cloud; and parsing a plurality of headers and point cloud data coded in layer structure in the bitstream of point cloud, wherein the headers in the bitstream of point cloud comprises a sequence header, a geometry header, an attribute header, and a frame header, wherein the sequence header is disposed outside the geometry header, the attribute header, and the frame header, the geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header. 2. The point cloud decoding method according to claim 1, wherein the headers in the bitstream of point cloud further comprises an attribute slice header and a geometry slice header, the geometry slice header is before the attribute slice header, and the step of parsing the headers coded and the point cloud data in layer structure in the bitstream of point cloud comprises: when a syntax flag included in the frame header is equal to 1, parsing the attribute slice header and the geometry slice header for each slice of a PCC frame; and when a slice index is equal to 0 and the syntax flag included in the frame header is not equal to 1, parsing the attribute slice header and the geometry slice header for only one slice of the PCC frame. 3. The point cloud decoding method according to claim 1, wherein the step of parsing the headers coded and the point cloud data in layer structure in the bitstream of point cloud comprises: identifying the headers from the bitstream of point cloud according to a prefix bitstring and a predefined code, wherein the last bit of the prefix bitstring is concatenated with the first bit of 137382wof the predefined code. 4. The point cloud decoding method according to claim 3, wherein the prefix bitstring comprises a 24-bit binary code, and the predefined code comprises an 8-bit binary code. 5. The point cloud decoding method according to claim 3, wherein the predefined code comprises at least one of a slice start code, a slice end code, a pcc sequence start code, a pcc sequence end code, an attribute start code, a geometry start code, a frame start code, and a pcc edit code. 6. The point cloud decoding method according to claim 1, wherein the frame header comprises a first syntax element specifying an order of a PCC frame associated with a plurality of point cloud frames, the first syntax element is configured to uniquely identifies the associated PCC frame among all the point cloud frames, and the first syntax element is further configured to indicate a position of the associated PCC frame in output order relative to output order positions of other point cloud frames that are to be output from a decoded point cloud buffer when the associated PCC frame is to be output from the decoded point cloud buffer. 7. The point cloud decoding method according to claim 1, wherein the frame header comprises a second syntax element specifying a frame type of a PCC frame. 8. The point cloud decoding method according to claim 1, wherein the frame header comprises a third syntax element specifying whether there is more than one slice in a PCC frame. 9. The point cloud decoding method according to claim 1, wherein the frame header comprises a third syntax element specifying whether there is more than one slice in a PCC frame, 137382wof and 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 when the third syntax element is equal to a preset value. 10. The point cloud decoding method according to claim 1, wherein a sixth syntax element specifying whether a current intra-coded PCC frame is a random access point and a seventh syntax element specifying whether a delta QP is enabled for a PCC frame are present in the frame header when a second syntax element specifying a frame type of the PCC frame is equal to a preset value. 11. The point cloud decoding method according to claim 1, wherein the method further comprises: identifying a coding specification version of the bitstream of point cloud according to a syntax element associated with the coding specification version in at least one of the headers. 12. The point cloud decoding method according to claim 11, wherein the method further comprises: obtaining a syntax element specifying the length of a sequence extension data and a syntax element specifying the sequence extension data in at least one of the headers when the syntax element associated with the coding specification version is equal to a preset value. 13. The point cloud decoding method according to claim 12, wherein the method further comprises: ignoring values of the sequence extension data by using a decoder conforming to a 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 when the syntax element associated with the coding specification version of the bitstream of point cloud is equal 137382wof to the preset value, wherein the coding specification version of the bitstream of point cloud is a second coding specification version when the syntax element associated with the coding specification version is equal to the preset value. 14. The point cloud decoding method according to claim 1, wherein a extension data and a user data are disposed after each of the headers, and the extension data and the user data are identified from the bitstream of point cloud according to a prefix bitstring and a predefined code. 15. The point cloud decoding method according to claim 14, wherein the prefix bitstring comprises a 24-bit binary code, and the predefined code comprises an 8-bit binary code. 16. The point cloud decoding method according to claim 14, wherein the predefined code comprises an extension start code and a user data start code. 17. A point cloud encoding method, comprising: obtaining point cloud data; and encoding the point cloud data to generate a bitstream of point cloud comprising a plurality of headers coded in layer structure, wherein the headers in the bitstream of point cloud comprises a sequence header, a geometry header, an attribute header, and a frame header, wherein the sequence header is disposed outside the geometry header, the attribute header, and the frame header, the geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header. 137382wof 18. The point cloud encoding method according to claim 17, wherein the headers in the bitstream of point cloud further comprises an attribute slice header and a geometry slice header, the geometry slice header is before the attribute slice header, and the step of encoding the point cloud data to generate the bitstream of point cloud comprising the headers coded in layer structure further comprises: inserting the attribute slice header and the geometry slice header for each slice of a PCC frame into the bitstream of point cloud when a syntax flag included in the frame header is equal to 1; and inserting the attribute slice header and the geometry slice header for only one slice of the PCC frame into the bitstream of point cloud when a slice index is equal to 0 and the syntax flag included in the frame header is not equal to 1. 19. The point cloud encoding method according to claim 17, wherein the step of encoding the point cloud data to generate the bitstream of point cloud comprising the headers coded in layer structure further comprises: inserting a prefix bitstring and a predefined code into the bitstream of point cloud to indicate the headers in the bitstream of point cloud, wherein the last bit of the prefix bitstring is concatenated with the first bit of the predefined code. 20. The point cloud encoding method according to claim 19, wherein the prefix bitstring comprises 24-bit binary code, and the predefined code comprises 8-bit binary code. 21. The point cloud encoding method according to claim 19, wherein the predefined code comprises at least one of a slice start code, a slice end code, a pcc sequence start code, a pcc sequence end code, an attribute start code, a geometry start code, a frame start code, and a pcc edit code. 137382wof 22. The point cloud encoding method according to claim 17, wherein the frame header comprises a first syntax element specifying an order of a PCC frame associated with a plurality of point cloud frames, the first syntax element is configured to uniquely identify the associated PCC frame among all the point cloud frames, and the first syntax element is further configured to indicate a position of the associated PCC frame in output order relative to output order positions of other point cloud frames that are to be output from a decoded point cloud buffer when the associated PCC frame is to be output from the decoded point cloud buffer. 23. The point cloud encoding method according to claim 17, wherein the frame header comprises a second syntax element specifying a frame type of a PCC frame. 24. The point cloud encoding method according to claim 17, wherein the frame header comprises a third syntax element specifying whether there is more than one slice in a PCC frame. 25. The point cloud encoding method according to claim 17, wherein the frame header comprises a third syntax element specifying whether there is more than one slice in a PCC frame, and 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 are present in the frame header when the third syntax element is equal to a preset value. 26. The point cloud encoding method according to claim 17, wherein a sixth syntax element specifying whether a current intra-coded PCC frame is a random access point and a seventh syntax element specifying whether a delta QP is enabled for a PCC frame are present in the frame header when a second syntax element specifying a frame type of the PCC frame is equal to a preset value. 137382wof 27. The point cloud encoding method according to claim 17, wherein the step of encoding the point cloud data to generate the bitstream of point cloud comprising the headers coded in layer structure further comprises: inserting a syntax element according to a coding specification version of the bitstream of point cloud into at least one of the headers in the bitstream of point cloud. 28. The point cloud encoding method according to claim 27, wherein the step of encoding the point cloud data to generate the bitstream of point cloud comprising the headers coded in layer structure further comprises: inserting a syntax element specifying the length of a sequence extension data and a syntax element specifying the sequence extension data into at least one of the headers when the syntax element associated with the coding specification version is equal to a preset value. 29. The point cloud encoding method according to claim 17, wherein an extension data and a user data are disposed after each of the headers, and the extension data and the user data are inserted into the bitstream of point cloud according to a prefix bitstring and a predefined code. 30. The point cloud encoding method according to claim 29, wherein the prefix bitstring comprises 24-bit binary code, and the predefined code comprises 8-bit binary code. 31. The point cloud encoding method according to claim 29, wherein the predefined code comprises an extension start code and a user data start code. 32. A decoder, comprising: a storage device; and 137382wof a processor, electrically connected to the storage device, and configured to: obtain a bitstream of point cloud; and parse a plurality of headers and point cloud data coded in layer structure in the bitstream of point cloud, wherein the headers in the bitstream of point cloud comprises a sequence header, a geometry header, an attribute header, and a frame header, wherein the sequence header is disposed outside the geometry header, the attribute header, and the frame header, the geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header. 33. An encoder, comprising: a storage device; and a processor, electrically connected to the storage device, and configured to: obtain point cloud data; and encode the point cloud data to generate a bitstream of point cloud comprising a plurality of headers coded in layer structure, wherein the headers in the bitstream of point cloud comprises a sequence header, a geometry header, an attribute header, and a frame header, wherein the sequence header is disposed outside the geometry header, the attribute header, and the frame header, the geometry header and the attribute header are disposed outside the frame header, and the attribute header is after the geometry header.
PCT/US2023/032810 2022-09-16 2023-09-15 Point cloud decoding method, point cloud encoding method, decoder and encoder WO2024059232A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202263376068P 2022-09-16 2022-09-16
US63/376,068 2022-09-16

Publications (1)

Publication Number Publication Date
WO2024059232A1 true WO2024059232A1 (en) 2024-03-21

Family

ID=90275672

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2023/032810 WO2024059232A1 (en) 2022-09-16 2023-09-15 Point cloud decoding method, point cloud encoding method, decoder and encoder

Country Status (1)

Country Link
WO (1) WO2024059232A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200314435A1 (en) * 2019-03-25 2020-10-01 Apple Inc. Video based point cloud compression-patch alignment and size determination in bounding box
US20200381022A1 (en) * 2019-05-29 2020-12-03 Nokia Technologies Oy Method and apparatus for storage and signaling of compressed point clouds
US20210227232A1 (en) * 2020-01-09 2021-07-22 Lg Electronics Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
US20210297699A1 (en) * 2018-12-26 2021-09-23 Panasonic Intellectual Property Corporation Of America Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
WO2023172703A1 (en) * 2022-03-09 2023-09-14 Innopeak Technology, Inc. Geometry point cloud coding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210297699A1 (en) * 2018-12-26 2021-09-23 Panasonic Intellectual Property Corporation Of America Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
US20200314435A1 (en) * 2019-03-25 2020-10-01 Apple Inc. Video based point cloud compression-patch alignment and size determination in bounding box
US20200381022A1 (en) * 2019-05-29 2020-12-03 Nokia Technologies Oy Method and apparatus for storage and signaling of compressed point clouds
US20210227232A1 (en) * 2020-01-09 2021-07-22 Lg Electronics Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
WO2023172703A1 (en) * 2022-03-09 2023-09-14 Innopeak Technology, Inc. Geometry point cloud coding

Similar Documents

Publication Publication Date Title
US11750839B2 (en) Method and apparatus for point cloud compression
US10535162B2 (en) Attribute mapping to encode and decode 3D models
US20220353549A1 (en) Angular mode for tree-based point cloud coding
US11350132B2 (en) High level syntax for geometry-based point cloud compression
US11469771B2 (en) Method and apparatus for point cloud compression
KR102486255B1 (en) Hybrid geometric coding of point clouds
US20220351423A1 (en) Angular mode syntax for tree-based point cloud coding
KR20230020418A (en) Attribute Residual Coding in G-PCC
JP2023533163A (en) Attribute parameter coding for geometry-based point cloud compression
KR102548048B1 (en) Device and method of transmitting point cloud data, Device and method of processing point cloud data
US20230048381A1 (en) Context determination for planar mode in octree-based point cloud coding
TW202141984A (en) Predictor index signaling for predicting transform in geometry-based point cloud compression
US20220376702A1 (en) Methods and devices for tree switching in point cloud compression
WO2021207406A2 (en) High-level syntax design for geometry-based point cloud compression
TW202143709A (en) Trisoup syntax signaling for geometry-based point cloud compression
WO2024059232A1 (en) Point cloud decoding method, point cloud encoding method, decoder and encoder
TW202218425A (en) Scale factor for quantization parameter values in geometry-based point cloud compression
CN115176279A (en) Method and device for point cloud decoding
WO2024064043A1 (en) Point cloud decoding method, point cloud encoding method, decoder and encoder
WO2024065269A1 (en) Point cloud encoding and decoding method and apparatus, device, and storage medium
WO2023197338A1 (en) Index determination method and apparatus, decoder, and encoder
US20230412837A1 (en) Point cloud data transmission method, point cloud data transmission device, point cloud data reception method, and point cloud data reception device
TW202348035A (en) Occupancy coding using inter prediction with octree occupancy coding based on dynamic optimal binary coder with update on the fly (obuf) in geometry-based point cloud compression
WO2024044082A2 (en) Decoding method, encoding method, decoder and endoder
WO2023244551A1 (en) Color component coding method, encoder and decoder