System and method for geometric point cloud coding

By introducing multi-level attribute syntax elements and octree structure, the existing geometric point cloud encoding standards solve the complexity of parameter representation and analysis, improve the flexibility and universality of point cloud encoding, and achieve more efficient compression and decompression effect.

CN119301955APending Publication Date: 2025-01-10GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380043116.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-06-23
Filing Date
2023-06-22
Publication Date
2025-01-10

AI Technical Summary

Technical Problem

The existing geometric point cloud encoding standards cannot be effectively applied to many different applications, and are highly complex in parameter representation and syntax element analysis, resulting in insufficient flexibility and universality.

Method used

A new syntax element representation and organization scheme is proposed, supporting the enablement and disabling of multiple attribute parameter sets, simplifying condition checking by introducing multi-level attribute existence syntax elements, and adopting an octree structure during encoding and decoding. and predefined quantization processes to improve the compression and decompression efficiency of point cloud data.

Benefits of technology

It improves the flexibility and versatility of point cloud encoding, reduces the complexity of encoding and decoding processes, is suitable for a variety of application scenarios, and reduces the memory and computing resources requirements.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119301955A_ABST
    Figure CN119301955A_ABST
Patent Text Reader

Abstract

According to one aspect of the present disclosure, there is provided a method for decoding a point cloud represented in a one-dimensional (1D) array comprising a set of points. The method may include parsing, by at least one processor, a bitstream to obtain a first syntax element indicating that a plurality of attribute parameter sets are enabled for a point cloud. The method may include determining, by at least one processor, whether a first syntax element indicates that a plurality of attribute parameter sets are enabled for a point cloud. The method may include, in response to determining that a plurality of attribute parameter sets are enabled for a point cloud, decompressing, by at least one processor, the point cloud based on the plurality of attribute parameter sets.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims the benefit of priority to U.S. Provisional Application No. 63 / 366,904, filed on June 23, 2022, entitled “Geometric Point Cloud Coding,” which is incorporated herein by reference in its entirety. Background Art

[0003] Embodiments of the present disclosure relate to point cloud coding.

[0004] Point clouds are one of the main three-dimensional (3D) data representations that provide attributes associated with points in the 3D world in addition to spatial coordinates. Point clouds in their raw format require a lot of memory for storage or a lot of bandwidth for transmission. In addition, the emergence of higher resolution point cloud capture technologies has put forward higher requirements on the size of point clouds. In order to make point clouds usable, compression is necessary. Two compression techniques have been proposed for point cloud compression / coding (PCC) standardization activities: video-based PCC (V-PCC) and geometry-based PCC (G-PCC). The V-PCC method is based on 3D to two-dimensional (2D) projection, while G-PCC, on the contrary, encodes the content directly in 3D space. To achieve this, G-PCC utilizes data structures such as octrees that describe the positions of points in 3D space. Summary of the invention

[0005] According to one aspect of the present disclosure, a method for decoding a point cloud is provided, the point cloud being represented by a one-dimensional (1D) array including a set of points. The method may include: parsing a bitstream by at least one processor to obtain a first syntax element indicating that multiple attribute parameter sets are enabled for the point cloud. The method may include: determining by at least one processor whether the first syntax element indicates that multiple attribute parameter sets are enabled for the point cloud. The method may include: decompressing the point cloud based on multiple attribute parameter sets in response to determining that multiple attribute parameter sets are enabled for the point cloud by at least one processor.

[0006] According to another aspect of the present disclosure, a system for decoding a point cloud is provided, the point cloud being represented by a 1D array including a set of points. The system may include at least one processor and a memory storing instructions. The memory stores instructions that, when executed by at least one processor, may cause the at least one processor to perform the following operations: parse a bitstream to obtain a first syntax element indicating that multiple attribute parameter sets are enabled for the point cloud. The memory stores instructions that, when executed by at least one processor, may cause the at least one processor to perform the following operations: determine whether the first syntax element indicates that multiple attribute parameter sets are enabled for the point cloud. The memory stores instructions that, when executed by at least one processor, may cause the at least one processor to perform the following operations: in response to determining that multiple attribute parameter sets are enabled for the point cloud, decompress the point cloud based on multiple attribute parameter sets.

[0007] According to another aspect of the present disclosure, a method for encoding a point cloud is provided, the point cloud being represented by a 1D array including a set of points. The method may include: generating, by at least one processor, a first syntax element indicating a plurality of attribute parameter sets of the point cloud. The method may include: inputting, by at least one processor, the first syntax element into a bitstream. The method may include: in response to enabling a plurality of attribute parameter sets for the point cloud, by at least one processor, compressing the point cloud based on the plurality of attribute parameter sets.

[0008] According to another aspect of the present disclosure, a system for encoding a point cloud is provided, the point cloud being represented by a 1D array including a set of points. The system may include at least one processor and a memory storing instructions. The memory stores instructions that, when executed by at least one processor, may cause the at least one processor to perform the following operations: generate a first syntax element indicating multiple attribute parameter sets of the point cloud. The memory stores instructions that, when executed by at least one processor, may cause the at least one processor to perform the following operations: input the first syntax element into a bitstream. The memory stores instructions that, when executed by at least one processor, may cause the at least one processor to perform the following operations: in response to multiple attribute parameter sets being enabled for the point cloud, compress the point cloud based on the multiple attribute parameter sets.

[0009] These illustrative embodiments are not mentioned to limit or define the present disclosure, but to provide examples to aid understanding of the present disclosure. Additional embodiments are described in the detailed description, and further description is provided in these additional embodiments. BRIEF DESCRIPTION OF THE DRAWINGS

[0010] The accompanying drawings, which are incorporated herein and constitute a part of the specification, illustrate embodiments of the present disclosure and, together with the description, further serve to explain the principles of the present disclosure and enable those skilled in the relevant art to make and use the present disclosure.

[0011] Figure 1 A block diagram of an exemplary encoding system according to some embodiments of the present disclosure is shown.

[0012] Figure 2 A block diagram of an exemplary decoding system according to some embodiments of the present disclosure is shown.

[0013] Figure 3 It shows some embodiments of the present disclosure. Figure 1 Detailed block diagram of an exemplary encoder in the encoding system in.

[0014] Figure 4 It shows some embodiments of the present disclosure. Figure 2 Detailed block diagram of an exemplary decoder in a decoding system in .

[0015] Figure 5A and Figure 5B An exemplary octree structure and a corresponding digital representation of a G-PCC according to some embodiments of the present disclosure are respectively shown.

[0016] Figure 6 An exemplary structure of a cube in an octree structure of a G-PCC and a relationship with adjacent cubes according to some embodiments of the present disclosure are shown.

[0017] Figure 7 An exemplary one-dimensional (1D) point array representing a point cloud, a set of candidate points, and a set of predicted points according to some embodiments of the present disclosure is shown.

[0018] Figure 8 An exemplary hierarchy of parameter sets for a G-PCC according to some embodiments of the present disclosure is shown.

[0019] Fig. 9 A flowchart of an exemplary method for encoding a point cloud according to some embodiments of the present disclosure is shown.

[0020] Fig.10 A flowchart of an exemplary method for decoding a point cloud according to some embodiments of the present disclosure is shown.

[0021] Embodiments of the present disclosure will be described with reference to the accompanying drawings. DETAILED DESCRIPTION

[0022] Although some configurations and arrangements are discussed, it should be understood that this is for illustrative purposes only. Those skilled in the relevant art will recognize that other configurations and arrangements may be used without departing from the spirit and scope of the present disclosure. It is apparent to those skilled in the relevant art that the present disclosure may also be used for various other applications.

[0023] It is worth noting that references in the specification to "one embodiment", "an embodiment", "example embodiment", "some embodiments", "certain embodiments", etc. indicate that the described embodiment may include a particular feature, structure, or characteristic, but not every embodiment necessarily includes the particular feature, structure, or characteristic. Furthermore, such expressions do not necessarily refer to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in conjunction with an embodiment, it is within the knowledge of a technician in the relevant field to implement the feature, structure, or characteristic in conjunction with other embodiments, whether or not explicitly described.

[0024] In general, terms can be understood at least in part based on the context of use. For example, the term "one or more" as used herein, which depends at least in part on the context, can be used to describe any feature, structure or characteristic in a singular sense, or can be used to describe a combination of features, structures or characteristics in a plural sense. Similarly, terms such as "one", "an" or "the" can also be understood to express singular usage or to express plural usage, which depends at least in part on the context. In addition, the term "based on" can be understood to not necessarily be intended to express a set of exclusive factors, but can allow for the presence of additional factors that are not necessarily explicitly described, again, which depends at least in part on the context.

[0025] Various aspects of the point cloud coding system will now be described with reference to various devices and methods. These devices and methods will be described in the specific embodiments below and illustrated in the accompanying drawings by various modules, components, circuits, steps, operations, processes, algorithms, etc. (collectively referred to as "elements"). These elements can be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether these elements are implemented as hardware, firmware, or software depends on the specific application and the design constraints imposed on the entire system. The techniques described herein can be used in a variety of point cloud coding applications. As described herein, point cloud coding includes encoding and decoding a point cloud.

[0026] A point cloud consists of a series of points in a 3D space. Each point in the 3D space is associated with a geometric position and associated attribute information (e.g., color, reflectivity, intensity, classification, etc.). In order to effectively compress point cloud data, the geometry of the point cloud can be compressed first, and then the corresponding attributes, including color or reflectivity, can be compressed based on the geometric information according to point cloud coding technology (e.g., G-PCC). G-PCC has been widely used in virtual reality / augmented reality (VR / AR), telecommunications, self-driving cars, etc. for entertainment and industrial applications, such as light detection and ranging (LiDAR) scanning compression for cars or robots and high-definition (HD) maps for navigation. The Moving Picture Experts Group (MPEG) released the first version of the G-PCC standard, and the Audio Video Coding Standard (AVS) is also developing the G-PCC standard.

[0027] However, the existing G-PCC standard is not well suited for various PCC inputs for many different applications. For example, in addition to the representation of levels (or coefficients in some cases), the representation of other information (e.g., parameters) for G-PCC can also be encoded in the form of syntax elements in the bitstream. Since G-PCC is organized into different levels by dividing a series of points into different fragments (e.g., sequences, slices, etc.) associated with different properties (e.g., geometry, attributes, etc.), parameter sets are also arranged at different levels (e.g., sequence level, property level, slice level, etc.) in different headers, for example. In addition, in G-PCC, multiple conditional checks may be required to parse some syntax elements, which further increases the complexity of organizing and parsing the representation of syntax elements.

[0028] In order to improve the flexibility and versatility of point cloud coding, the present disclosure provides various novel syntax element representation and organization schemes, which are compatible with any suitable G-PCC standard, including but not limited to the AVS G-PCC standard and the MPEG G-PCC standard.

[0029] Figure 1 A block diagram of an exemplary encoding system 100 according to some embodiments of the present disclosure is shown. Figure 2A block diagram of an exemplary decoding system 200 according to some embodiments of the present disclosure is shown. Each system 100 or 200 can be applied or integrated into various systems and devices capable of data processing, such as computers and wireless communication devices. For example, system 100 or 200 can be all or part of the following items: a mobile phone, a desktop computer, a laptop computer, a tablet computer, a car computer, a game console, a printer, a positioning device, a wearable electronic device, a smart sensor, a virtual reality (VR) device, an augmented reality (AR) device, or any other suitable electronic device with data processing capabilities. Figure 1 and Figure 2 As shown, system 100 or 200 may include processor 102, memory 104, and interface 106. These components are shown as being interconnected via a bus, but other connection types are also allowed. It should be understood that system 100 or 200 may include any other suitable components for performing the functions described herein.

[0030] The processor 102 may include a microprocessor, such as a graphics processing unit (GPU), an image signal processor (ISP), a central processing unit (CPU), a digital signal processor (DSP), a tensor processing unit (TPU), a vision processing unit (VPU), a neural processing unit (NPU), a synergistic processing unit (SPU) or a physical processing unit (PPU), a microcontroller unit (MCU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a programmable logic device (PLD), a state machine, gated logic, discrete hardware circuits, and other suitable hardware configured to perform various functions described throughout the present disclosure. Although in Figure 1 and Figure 2Only one processor is shown, but it should be understood that multiple processors may be included. Processor 102 may be a hardware device having one or more processing cores. Processor 102 may execute software. Software, whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise, should be broadly interpreted to mean: instructions, instruction sets, codes, code segments, program codes, programs, subroutines, software modules, applications, software applications, software packages, routines, subroutines, objects, executable files, execution threads, processes, functions, and the like. Software may include computer instructions written in an interpreted language, a compiled language, or machine code. Under the general category of software, other techniques for directing hardware are also permitted.

[0031] The memory 104 may broadly include memory (also known as main memory / system memory) and storage (also known as auxiliary memory). For example, the memory 104 may include random-access memory (RAM), read-only memory (ROM), static RAM (SRAM), dynamic RAM (DRAM), ferroelectric RAM (FRAM), electrically erasable programmable ROM (EEPROM), compact disc read-only memory (CD-ROM) or other optical disk storage, hard disk drive (HDD) (such as magnetic disk storage or other magnetic storage device), flash drive, solid-state drive (SSD), or any other medium that can be used to carry or store the required program code in the form of instructions that can be accessed and executed by the processor 102. In a broad sense, the memory 104 can be embodied by any computer-readable medium (such as a non-transitory computer-readable medium). Although in Figure 1 and Figure 2 Only one memory is shown, but it should be understood that multiple memories may be included.

[0032] The interface 106 may broadly include a data interface and a communication interface, wherein the communication interface is configured to receive and send signals in the process of receiving and sending information with other external network elements. For example, the interface 106 may include an input / output (I / O) device and a wired transceiver or a wireless transceiver. Figure 1 and Figure 2 Only one memory is shown, but it should be understood that multiple interfaces may be included.

[0033] The processor 102, memory 104, and interface 106 can be implemented in various forms in the system 100 or 200 for performing point cloud coding functions. In some embodiments, the processor 102, memory 104, and interface 106 of the system 100 or 200 are implemented (e.g., integrated) on one or more system-on-chips (SoCs). In one example, the processor 102, memory 104, and interface 106 can be integrated on an application processor (AP) SoC that operates application processing in an operating system (OS) environment, including running point cloud encoding and decoding applications. In another example, the processor 102, memory 104, and interface 106 can be integrated on a dedicated processor chip for point cloud coding, such as a GPU or ISP chip dedicated to graphics processing in a real-time operating system (RTOS).

[0034] like Figure 1 As shown, in the encoding system 100, the processor 102 may include one or more modules, such as an encoder 101. Figure 1 The encoder 101 is shown as being located within one processor 102, but it should be understood that the encoder 101 may include one or more submodules that may be implemented on different processors that are close to or far from each other. The encoder 101 (and any corresponding submodules or subunits) may be multiple hardware units (e.g., multiple parts of an integrated circuit) of the processor 102, which are designed to be used with other components or software units implemented by the processor 102 by executing at least a portion of a program (i.e., instructions). The instructions of the program may be stored on a computer-readable medium (e.g., a memory 104), which, when executed by the processor 102, may perform a process having one or more functions related to point cloud encoding (e.g., voxelization, transformation, quantization, arithmetic coding, etc.) as described in detail below.

[0035] Similarly, if Figure 2 As shown, in the decoding system 200, the processor 102 may include one or more modules, such as a decoder 201. Figure 2The decoder 201 is shown as being located within one processor 102, but it should be understood that the decoder 201 may include one or more submodules that may be implemented on different processors that are close to or far from each other. The decoder 201 (and any corresponding submodules or subunits) may be multiple hardware units (e.g., multiple parts of an integrated circuit) of the processor 102, which are designed to be used with other components or software units implemented by the processor 102 by executing at least a portion of a program (i.e., instructions). The instructions of the program may be stored on a computer-readable medium (e.g., memory 104), which, when executed by the processor 102, may perform a process having one or more functions related to point cloud decoding (e.g., arithmetic decoding, inverse quantization, inverse transformation, reconstruction, synthesis) as described in detail below.

[0036] Figure 3 It shows some embodiments of the present disclosure. Figure 1 Detailed block diagram of an exemplary encoder 101 in the encoding system 100 in FIG. Figure 3 As shown, the encoder 101 may include a coordinate transformation module 302, a voxelization module 304, a geometry analysis module 306, and an arithmetic coding module 308, which are configured together to encode positions associated with points of a point cloud into a geometry bitstream (ie, geometry encoding). Figure 3 As shown, the encoder 101 may further include a color transformation module 310, an attribute transformation module 312, a quantization module 314, and an arithmetic coding module 316, which are configured together to encode the attributes associated with the points of the point cloud into an attribute bitstream (ie, attribute encoding). It should be understood that Figure 3 Each of the multiple elements shown in is shown independently to represent the characteristic functions that are different from each other in the point cloud encoder, and this does not mean that the various components are formed by separate hardware or single software configuration units. That is, for ease of explanation, each element is included to be listed as an element, and at least two of these elements can be combined to form a single element, or an element can be divided into multiple elements to perform a function. It should also be understood that some of these elements are not necessary elements for performing the functions described in the present disclosure, but may be optional elements for improving performance. It should also be understood that these elements can be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether these elements are implemented as hardware, firmware, or software depends on the specific application and the design constraints imposed on the encoder 101. It should also be understood that, Figure 3 The modules shown in are for illustration purposes only, and in some examples, the encoder 101 may include different modules for point cloud encoding.

[0037] like Figure 3As shown, the geometric positions and attributes associated with a point can be encoded separately. A point cloud can be a series of points with the following positions and attributes: Position X k =(x k ,y k ,z k ), k = 1, ..., K, where K is the number of points in the point cloud; attribute A k =(A 1k ,A 2k ,…,A Dk ), k=1,…,K, where D is the number of attributes for each point. In some embodiments, the attribute encoding depends on the decoded geometry. Therefore, the point cloud position can be encoded first. Since the geometric position can be represented by a floating point number in the original coordinate system, the coordinate transformation module 302 and the voxelization module 304 can be configured to perform a coordinate transformation, and then voxelize, voxelize quantize and delete duplicate points. The process of position quantization, duplicate point deletion and assigning attributes to the remaining points is called voxelization. The voxelized point cloud can be represented in a lossless manner using, for example, an octree structure. The geometric analysis module 306 can be configured to perform geometric analysis using, for example, an octree or a trisoup scheme. The arithmetic coding module 308 can be configured to arithmetically encode the resulting structure from the geometric analysis module 306 into a geometric bitstream.

[0038] In some embodiments, the geometry analysis module 306 is configured to perform geometry analysis using an octree scheme. Under the octree scheme, the cube axis-aligned bounding box B can be composed of two extreme points (0, 0, 0) and (2 d ,2 d ,2 d ) definition, where d is the maximum size of a given point cloud along the x, y or z direction. All point cloud points can be included in this defined cube. Figure 5A As shown in , a cube can be divided into eight sub-cubes (which results in an octree structure that allows a parent cube to have eight sub-cubes), and then the octree structure can be constructed by recursively subdividing the sub-cubes. Figure 5BAs shown, an 8-bit code can be generated by associating a 1-bit value with each sub-cube to indicate whether it contains a point (i.e., full and has a value of 1) or does not contain a point (i.e., empty and has a value of 0). Only full sub-cubes (i.e., non-voxels) with a size greater than 1 can be further subdivided. The geometric information (x, y, z) of a location can be represented using this defined octree structure. Since points may be repeated, multiple points may be mapped to the same sub-cube of size 1 (i.e., the same voxel). To handle this situation, the number of points in each sub-cube of size 1 is also arithmetically encoded. By constructing the octree, the current cube associated with the current node can be surrounded by six cubes of the same depth that share a face with it. As shown Figure 6 As shown, depending on the position of the current cube, a cube may have up to six cubes of the same size sharing a face. In addition, the current cube may also have some adjacent cubes that share lines or points with the current cube.

[0039] Return to reference Figure 3 Regarding attribute encoding, optionally, if the attribute includes color, the color conversion module 310 can be configured to convert the red / green / blue (RGB) color attribute of each point into a YCbCr color attribute. The attribute conversion module 312 can be configured to perform attribute conversion based on the result from the geometric analysis module 306 (e.g., using an octree scheme), and the attribute conversion includes but is not limited to a region adaptive hierarchical transform (RAHT), a hierarchical nearest neighbor prediction based on interpolation (prediction transform), and a hierarchical nearest neighbor prediction based on interpolation (lifting transform) with an update / lifting step. Optionally, the quantization module 314 can be configured to quantize the transformed attribute coefficients from the attribute conversion module 312 to generate a quantization level of the attribute associated with each point, thereby reducing the dynamic range. The arithmetic coding module 316 can be configured to arithmetic encode the obtained transformed attribute coefficients or the quantization level of the attribute associated with each point into the attribute bitstream.

[0040] In some embodiments, for example, when the attribute transformation module 312 performs the prediction transformation and the lifting transformation, a prediction may be formed based on the adjacent encoded attributes. Then, the difference between the current attribute and the prediction may be encoded. According to some aspects of the present disclosure, in the AVS G-PCC standard, after encoding the geometric position, a point cloud (e.g., a point cloud cube) in a 3D space may be converted into a 1D array using a Morton code or a Hilbert code, such as Figure 7As shown. Each position in the cube will have a corresponding Morton code or Hilbert code, but some positions may not have any corresponding point cloud attributes. In other words, some positions may be empty. Attribute encoding can follow a predefined Morton order or Hilbert order. Predictors can be generated from previously encoded points in a 1D array in accordance with the Morton order or the Hilbert order. The attribute difference between the current point and its predicted point can be encoded into the bitstream. In some embodiments, a point cloud in 3D space (e.g., a point cloud cube) is converted to a 1D array in its original input order (e.g., the order in which the point cloud data is collected) rather than in any predefined order. That is, in some examples, attribute encoding can follow the original input order of the point cloud, rather than the predefined Morton order or Hilbert order. In other words, the order followed by the points in the 1D array can be either the Morton order, the Hilbert order, or the original input order.

[0041] like Figure 7 As shown, in order to reduce memory usage, some predefined numbers can be specified to limit the number of neighboring points that can be used to generate predictions. For example, out of the previously up to N consecutively encoded points, at most only M points can be used to encode the current attribute. That is, in attribute encoding, a group of n candidate points can be used as candidates to select a group of m prediction points (m≤n) to predict the current point. The number of candidate points n in a group is equal to or less than the maximum number of candidate points N (n≤N), and the number of prediction points m in a group is equal to or less than the maximum number of prediction points M (m≤M). As Figure 7 As shown, if the number of neighboring points before the current point in the 1D array following the Morton order, Hilbert order or the original input order is greater than the maximum number of candidate points N, then the number of candidate points n in a set of candidate points for the current point (grey shading) is equal to the maximum number N; if the number of neighboring points before the current point in the 1D array following the Morton order, Hilbert order or the original input order is greater than or equal to the maximum number of candidate points N, then the number of candidate points n in a set of candidate points for the current point (grey shading) is less than the maximum number of candidate points N, then all neighboring points before the current point are used as the set of candidate points for the current point. Figure 7 , the maximum number of prediction points M is set to 3, and a set of 3 prediction points ( P , bold and underlined).

[0042] In some embodiments, M and N are set to fixed numbers 3 and 128, respectively. If more than 128 points have been encoded before the current point, only 3 neighboring points of the previous 128 neighboring points can be used to form an attribute predictor (prediction point) according to a predefined order. If there are less than 128 encoded points before the current point, all encoded points before the current point will be used as candidate points to find the prediction point. Among the previous up to 128 candidate points, at most 3 prediction points are selected, and these 3 prediction points have the closest "distance" (e.g., Euclidean distance) between these candidate points and the current point. As an example, the Euclidean distance d can be defined as follows, and other distance metrics can also be used in other examples:

[0043] d=|x1-x2|+|y1-y2|+|z1-z2| (1),

[0044] Where (x1, y1, z1) and (x2, y2, z2) are the coordinates of the current point and the candidate point along the Morton order, Hilbert order, or the original input order, respectively. According to some embodiments, once m prediction points are selected (e.g., the 3 nearest candidate points), the weighted attribute average from these m points can be formed as a predictor to encode the attributes of the current point. It should be understood that in some examples, the prediction point can be selected from candidate points in a cube that shares the same face / line / point as the current point cloud.

[0045] Since a set of n candidate points needs to be stored in memory and traversed to select a set of m prediction points to encode the attributes associated with the current position, a maximum number of candidate points M is introduced to limit the memory size and computing resources that may be occupied by candidate point storage and search.

[0046] According to some aspects of the present disclosure, the difference in property values ​​between the current point and its predictor may be referred to as a "residual". Depending on the application, the PCC may be either lossless or lossy. Thus, the residual may or may not be quantized using a predefined quantization process. According to the present disclosure, the unquantized or quantized residual may be referred to as a "level", which is a signed integer (e.g., a positive integer value or a negative integer value) encoded into the bitstream.

[0047] Each point has three color attributes, which come from the three color components. If the levels of all three color components are zero, the point is called a zero-level point. Otherwise, if at least one of the color components of the point has a non-zero level, the point is called a non-zero-level point. The number of consecutive zero-level points is called the "zero run length". The zero run length value and level of the non-zero level point are encoded into the bitstream. More specifically, before encoding the first point, the encoder 101 can set the zero run length counter to zero.

[0048] Starting from the first point along the predefined coding order, the residuals between the three color predictors of the current point and their corresponding color attributes can be obtained. Then, the corresponding levels of the three components of the current point can also be obtained. If the current point is a zero level point, the encoder 101 can increase the zero run length value by one, and the process continues to the next point. If the current point is a non-zero level point, the zero run length value will be encoded first, and then the three color levels of the non-zero level point will be encoded. After the non-zero level point is level-encoded, the zero run length value is reset to zero, and the process continues to the next point until all points are completed. On the decoding side, the decoder 201 can decode the zero run length value and set the three color levels corresponding to the number of zero run length points to zero. Then, the level of the non-zero level point is decoded, and then the next zero run length value is decoded. The process continues until all points are decoded. Table 1 and Table 2 show example syntax elements for color residual encoding and color level encoding, respectively.

[0049]

[0050] Table 1: Syntax elements for color residual coding

[0051]

[0052]

[0053] Table 2: Color-coded syntax elements

[0054] For non-zero level points, at least one of the three components has a non-zero level. The values ​​of the three color components are encoded in the color_residual_coding() syntax element. Several one-bit flags plus the remainder of the absolute level can be encoded to represent the levels of the three color components. The absolute level or the absolute level minus one of the color residual can be encoded in the coded_level_coding() function, which is also referred to as the "coded level" hereinafter.

[0055] According to some aspects of the present disclosure, a first flag (color_first_comp_zero) is encoded to indicate whether the first component of the color is zero; if the first color component is zero, a second flag (color_second_comp_zero) is encoded to indicate whether the second color component of the color is zero; if the second component of the color is zero, the absolute level minus one and the sign of the third component are encoded according to the following encoding level technique.

[0056] For example, a first flag is encoded to indicate whether the first color component of the color is zero; if the first color component is zero, a second flag can be encoded to indicate whether the second color component is zero; if the second color component is not zero, the absolute level minus one and sign of the second color component, and the absolute level and sign of the third color component will be encoded according to the following encoding level technique.

[0057] According to another aspect of the present disclosure, a first flag can be encoded to indicate whether the first component of the color is zero; if the first color component is not zero, the absolute level minus one and sign of the first color component, the absolute level and sign of the second color component, and the absolute level and sign of the third color component will be encoded according to the following encoding level technology.

[0058] For example, a first flag (coded_level_equal_zero) is encoded to indicate whether the coded level is zero; if the coded level is the absolute level of one color component minus one, i.e., for example, when the isComponentNoneZero flag is set to "true", the sign (coded_level_sign) of the level of the color component is encoded. On the other hand, if the first flag indicates that the coded level is not zero, and if the coded level is the absolute level of one color component, for example, when the isComponentNoneZero flag is set to "false", the sign of the level of the color component is encoded. A second flag (coded_level_gt1) is encoded to indicate whether the coded level is greater than one; if the coded level is greater than one, the parity of the coded level minus two is encoded, and a third flag (coded_level_minus2_div2_gt0) is encoded to indicate whether the coded level minus two divided by two is greater than zero; if the coded level minus two divided by two is greater than zero, the coded level minus two divided by two minus one is encoded.

[0059] Referring to Tables 1 and 2, a color_first_comp_zero value equal to 0 specifies that the absolute coded level of the first component of the color is non-zero. A color_first_comp_zero value equal to 1 specifies that the absolute coded level of the first component is zero.

[0060] A color_second_comp_zero value equal to 0 specifies that the absolute coded level of the second component of the color is non-zero. A color_second_comp_zero value equal to 1 specifies that the absolute coded level of the second component is zero.

[0061] A coded_level_equal_zero value equal to 0 specifies that the absolute coded level of this component is not zero. A coded_level_equal_zero value equal to 1 specifies that the absolute coded level of this component is zero.

[0062] A coded_level_gt1 value equal to 0 specifies that the coding level of the component is one. A coded_level_gt1 value equal to 1 specifies that the coding level of the component is greater than one. When a coded_level_gt1 value is not included in the bitstream, the decoder 201 may infer that the coded_level_gt1 value is equal to zero.

[0063] coded_level_minus2_parity specifies the parity of the coded level minus two of the current color component. A coded_level_minus2_parity value equal to 0 specifies that the current coded level minus two is an even number. A coded_level_minus2_parity value equal to 1 specifies that the current coded level minus two is an odd number. When a coded_level_minus2_parity value is not present in the bitstream, the decoder 201 may infer that the coded_level_minus2_parity value is equal to 0.

[0064] A coded_level_minus2_div2_gt0 value equal to 0 specifies that the coded level minus two divided by two is zero. A coded_level_minus2_div2_gt0 value equal to 1 specifies that the coded level minus two divided by two is greater than zero. When a coded_level_minus2_div2_gt0 value is not present in the bitstream, the decoder 201 may infer that the coded_level_minus2_div2_gt0 value is equal to zero.

[0065] The coded_level_minu2_div2_minus1 syntax element specifies the value of the coded level minus two divided by two minus 1. When the coded_level_minu2_div2_minus1 syntax element is not present in the bitstream, the decoder 201 may infer that the coded_level_minu2_div2_minus1 syntax element is equal to zero.

[0066] coded_level and coded_level_sign are the return values ​​of the function coded_level_coding(isComponentminusOne), which represent the coded level. The coded level may include the absolute level of the color residual or the absolute level of the color residual minus one, and the sign of the non-zero color residual, as shown below according to expression (2).

[0067] coded_level=(2*coded_level_sign-1)*(coded_level_equal_zero?0:1+(coded_level_gt1+coded_level_minus2_parity+(coded_level_minus2_div2_gt0+coded_level_minu2_div2_minus1)<<1) (2).

[0068] The residual levels of the three color components (eg, color_component[idx], where idx is an index from 0 to 2) are calculated according to color_residual_coding().

[0069] In addition, the zero run length of the reflectivity level and the non-zero reflectivity level can be encoded into the bitstream. More specifically, before encoding the first point, the encoder 101 can set the zero run length counter to zero. Starting from the first point, along the predefined coding order, the residual between the predictor and the corresponding original point is obtained. Then, the corresponding reflectivity level can be obtained. If the current reflectivity level is zero, the encoder 101 increases the value of the zero run length counter by one, and the process continues to the next point. If the reflectivity level is not zero, the encoder 101 can encode the zero run length, and then encode the non-zero reflectivity level. After encoding the non-zero reflectivity level, the encoder 101 can reset the zero run length counter to zero, and the process continues to the next point. On the decoding side, the decoder 201 can decode the zero run length and set the reflectivity level corresponding to the number of zero run length points to zero. Then, the decoder 201 can decode the non-zero reflectivity level, and then decode the next zero run length. This process can continue until all points are decoded.

[0070] For a non-zero reflectivity level, if the current point is not a repeated point, the sign of the reflectivity level is encoded using the "residual_sign" syntax element. The encoder 101 may then encode the "abs_level_minus1_parity" syntax element, which indicates the parity of the absolute level minus one. Another syntax element "abs_level_minus1_div2_gt0" may be encoded to indicate whether the value of the absolute level minus one divided by two is greater than zero; if abs_level_minus1_div2_gt0 is greater than zero, the encoder 101 may encode the "abs_level_minus1_div2_gt1" syntax element to indicate whether the value of the absolute level minus one divided by two is greater than one; if the abs_level_minus1_div2_gt1 syntax element is greater than one, the encoder 101 may encode the "abs_level_minu1_div2_minus2" syntax element to indicate the value of the absolute level minus one divided by two minus two. Table 3 shown below shows an example of reflectivity level coding syntax elements.

[0071]

[0072]

[0073] Table 3: Syntax elements for reflectivity level coding

[0074] Referring to Table 3, the abs_level_minus1_parity syntax element specifies the parity of the absolute reflectivity level minus one. An abs_level_minus1_parity value equal to 0 may indicate that the absolute reflectivity level minus one is an even number; on the other hand, an abs_level_minus1_parity value equal to 1 may indicate that the absolute reflectivity level minus one is an odd number.

[0075] The abs_level_minus1_div2_gt0 value equal to 0 may indicate that the value of the absolute reflectivity level minus one divided by two is zero. The abs_level_minus1_div2_gt0 value equal to 1 may indicate that the value of the absolute reflectivity level minus one divided by two is greater than zero. When there is no abs_level_minus1_div2_got0 value, the decoder 201 may infer that the abs_level_minus1_div2_got0 value is equal to 0.

[0076] An abs_level_minus1_div2_gt1 value equal to 0 may indicate that the value of the absolute reflectivity level minus one divided by two is one. An abs_level_minus1_div2_gt1 value equal to 1 may indicate that the value of the absolute reflectivity level minus one divided by two is greater than one. When the value of abs_level_minus1_div2_gt1 is not present in the bitstream, the decoder 201 may infer that the value of abs_level_minus1_div2_gt1 is equal to 0.

[0077] The abs_level_minu1_div2_minus2 syntax value may indicate a value of the absolute reflectivity level minus one divided by two minus two. When the value of abs_level_minu1_div2_minus2 is not present, the decoder 201 may infer that the value of abs_level_minu1_div2_minus2 is equal to zero.

[0078] A residual_sign value equal to 0 may indicate that the sign of the reflectivity level is negative; on the other hand, a residual_sign value equal to 1 may indicate that the sign of the reflectivity level is positive. When there is no residual_sign value in the bitstream, the decoder 201 may infer that the residual_sign value is equal to 1. The reflectivity may be calculated according to expression (3).

[0079] Reflectance=(2*residual_sign-1)*(1+abs_level_minus1_parity+(abs_level_minus1_div2_gt0+abs_level_minus1_div2_gt1+abs_level_minu1_div2_minus2)<<1)(3).

[0080] Furthermore, the encoder 101 may encode the value of the zero run length into the bitstream. For example, the encoder 101 may encode a first syntax element zero_run_length_level_equal_zero (e.g., a first syntax element) into the bitstream to indicate whether the zero run length is equal to zero; if it is not zero, the encoder 101 may encode a zero_run_length_level_equal_one syntax element (e.g., a second syntax element) to indicate whether the zero run length is equal to one; if it is not one, the encoder 101 may encode a zero_run_length_level_equal_two syntax element (e.g., a third syntax element) into the bitstream to indicate whether the zero run length is equal to two; if it is not two, the encoder 101 may encode a zero_run_length_level_minus3_parity syntax element (e.g., a fourth syntax element) and a zero_run_length_level_minus3_div2 syntax element (e.g., a fifth syntax element) into the bitstream 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. Examples of syntax elements for zero run length coding are provided in Table 4 below.

[0081]

[0082]

[0083] Table 4: Zero run length syntax elements

[0084] Referring to Table 4, zero_run_length_level_minus3_parity specifies the parity of the zero run length level minus three. zero_run_length_level_minus3_parity equal to 0 specifies that the zero run length level minus three is an even number. zero_run_length_level_minus3_parity equal to 1 specifies that the zero run length level minus three is an odd number. When a value for zero_run_length_level_minus3_parity is not present, the value of zero_run_length_level_minus3_parity is inferred to be equal to 0.

[0085] A zero_run_length_level_equal_zero value equal to 0 may indicate that the zero run length level is not zero; on the other hand, a zero_run_length_level_equal_zero value equal to 1 specifies that the zero run length level is zero.

[0086] A zero_run_length_level_equal_one value equal to 0 may indicate that the zero run length level is not one; on the other hand, a zero_run_length_level_equal_one value equal to 1 specifies that the zero run length level is one.

[0087] A zero_run_length_level_equal_two value equal to 0 may indicate that the zero run length level is not two; on the other hand, a zero_run_length_level_equal_two value equal to 1 may indicate that the zero run length level is two.

[0088] The zero_run_length_level_minus3_div2 syntax element may indicate the value of the zero run length level minus three divided by two. When the value of the zero_run_length_level_minus3_div2 syntax element is not present in the bitstream, the decoder 201 may infer that the value of the zero_run_length_level_minus3_div2 syntax element is equal to 0. The variable zero_run_length_level may be calculated according to expression (4).

[0089] zero_run_length_level=zero_run_length_level_equal_zero? 0:(zero_run_length_level_equal_one? 1:(zero_run_length_level_equal_two? 2:(3+zero_run_length_level_minus3_parity+(zero_run_length_level_minus3_div2<<1)))) (4).

[0090] The value of zero_run_length can be calculated according to expression (5).

[0091] zero_run_length=useGolomb? (2*zero_run_lenght_level+zero_run_length_LSB):zero_run_length_level (5).

[0092] Figure 4 It shows some embodiments of the present disclosure. Figure 2 Detailed block diagram of an exemplary decoder 201 in the decoding system 200 in FIG. Figure 4As shown, the decoder 201 may include an arithmetic decoding module 402, a geometry synthesis module 404, a reconstruction module 406, and an inverse coordinate transformation module 408, which together are configured to decode the positions associated with the points of the point cloud from the geometry bitstream (ie, geometry decoding). Figure 4 As shown, the decoder 201 may further include an arithmetic decoding module 410, an inverse quantization module 412, an attribute inverse transform module 414, and a color inverse transform module 416, which are together configured to decode the attributes associated with the points of the point cloud from the attribute bitstream (i.e., attribute decoding). It should be understood that Figure 4 Each of the multiple elements shown in is shown independently to represent the characteristic functions that are different from each other in the point cloud decoder, and this does not mean that the various components are formed by separate hardware or single software configuration units. That is, for ease of explanation, each element is included to be listed as an element, and at least two of these elements can be combined to form a single element, or an element can be divided into multiple elements to perform a function. It should also be understood that some of these elements are not necessary elements for performing the functions described in the present disclosure, but may be optional elements for improving performance. It should also be understood that these elements can be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether these elements are implemented as hardware, firmware, or software depends on the specific application and the design constraints imposed on the decoder 201. It should also be understood that, Figure 4 The modules shown in are for illustration purposes only, and in some examples, the decoder 201 may include different modules for point cloud decoding.

[0093] When a point cloud bitstream (e.g., a geometry bitstream or an attribute bitstream) is input from a point cloud encoder (e.g., encoder 101), the decoder 201 may decode the input bitstream in the opposite process of the point cloud encoder. Therefore, for ease of description, the decoding details described above regarding the encoding may be omitted. The arithmetic decoding modules 402 and 410 may be configured to decode the geometry bitstream and the attribute bitstream, respectively, to obtain various information encoded into the bitstream. For example, the arithmetic decoding module 410 may decode the attribute bitstream to obtain attribute information associated with each point, such as a quantization level or coefficient of an attribute associated with each point. Optionally, the dequantization module 412 may be configured to dequantize the quantization level of the attribute associated with each point to obtain the coefficient of the attribute associated with each point. In addition to the attribute information, the arithmetic decoding module 410 may also parse the bitstream to obtain various other information (e.g., in the form of syntax elements), such as syntax elements indicating the order followed by the points in the 1D array of the attribute encoding.

[0094] The inverse attribute transform module 414 may be configured to perform an inverse attribute transform (e.g., inverse RAHT, inverse prediction transform, or inverse lifting transform) to transform data from a transform domain (e.g., coefficients) back to an attribute domain (e.g., luminance and / or chrominance information of a color attribute). Optionally, the color inverse transform module 416 may be configured to convert a YCbCr color attribute to an RGB color attribute.

[0095] For geometry decoding, the geometry synthesis module 404 , the reconstruction module 406 , and the coordinate inverse transformation module 408 of the decoder 201 may be configured to perform inverse operations of the geometry analysis module 306 , the voxelization module 304 , and the coordinate transformation module 302 of the encoder 101 , respectively.

[0096] Consistent with the scope of the present disclosure, the encoder 101 and the decoder 201 may be configured to adopt various novel syntax element representation and organization schemes disclosed herein to improve the flexibility and versatility of point cloud coding.

[0097] According to some aspects of the present disclosure, various attribute presence syntax elements are introduced at different levels to control the enabling / disabling of all attributes or individual attributes in point cloud encoding. In some embodiments, different parameters under the same condition check at the same level (e.g., associated with the same attribute) can be grouped together to reduce the number of condition checks, thereby further simplifying the scheme. Figure 8 An exemplary hierarchy of parameter sets for G-PCC according to some embodiments of the present disclosure is shown. A point cloud can be represented by a 1D array comprising a set of points, each of which is associated with a property such as a geometric shape and an attribute (e.g., color and reflectivity). A set of points associated with different timestamps can be considered a "sequence".

[0098] like Figure 8 As shown, the syntax elements (e.g., parameters, flags, etc.) used to encode the header of the point cloud can be organized in a hierarchy with various levels. At the top level, the hierarchy can include a sequence header, for example, a header of a sequence parameter set (SPS) associated with a sequence representing the point cloud. At the second level, the hierarchy can include one or more property headers belonging to the sequence header, such as a geometry parameter header and one or more attribute parameter headers. In some embodiments, the geometry parameter header and the attribute parameter header can also be at the same level as the SPS. For example, as Figure 8As shown, the next level under the SPS may include a header for a geometry parameter set belonging to the SPS and associated with a geometric shape, and one or more headers (1 to n) for an attribute parameter set belonging to the SPS and each associated with a corresponding attribute (e.g., color or reflectivity). At the third level, the hierarchy may include one or more slice property headers belonging to each property header, such as a slice geometry parameter header and a slice attribute parameter header. That is, a sequence representing a point cloud may be divided into one or more slices, each slice comprising a point slice, and each point slice may be associated with one or more slice property headers. For example, as Figure 8 As shown, the next level under the geometry parameter set may include one or more slice geometry parameter set headers, each belonging to the set parameter set and associated with the corresponding point slice. Similarly, the next level under each attribute parameter set may include one or more slice attribute parameter set headers, each belonging to the corresponding attribute parameter set and associated with the corresponding point slice. It should be understood that in some examples, the hierarchy may include fewer or more levels, such as one or more picture / frame levels.

[0099] According to some aspects of the present disclosure, the difference in the property value between the current point and its predictor may be referred to as a "residual". Depending on the application, the PCC may be either lossless or lossy. Therefore, the residual may or may not be quantized using a predefined quantization process. According to the present disclosure, the unquantized or quantized residual may be referred to as a "level", which is a signed integer (e.g., a positive integer value or a negative integer value) encoded into the bitstream.

[0100] To reduce bitstream overhead, the maximum number of attributes (e.g., color, reflectivity, depth, etc.) may be indicated as the maximum number of attributes minus 1. To this end, the maxNumAttributesMinus1 syntax element may be encoded into the bitstream. According to some aspects consistent with the present disclosure, decoder 201 may infer that the value of the maxNumAttributesMinus1 syntax element is equal to -1. In addition, the present disclosure moves the colorQuantParam syntax element and the reflQuantParam syntax element from the SPS header to the attribute header, as shown in Table 5 below.

[0101]

[0102]

[0103] Table 5: Example changes to the SPS header

[0104]

[0105] Table 6: Example changes to the attribute header

[0106] Referring to Table 6, the maxNumAttributesMinus1 plus 1 syntax element may indicate the maximum number of supported attributes. The value of maxNumAttributesMinus1 may be in the range of 0 to 15 (inclusive). When the value of maxNumAttributesMinus1 is not present in the bitstream, the decoder 201 may infer that the value of maxNumAttributesMinus1 is equal to -1.

[0107] In the current AVS-GPCC specification, MPEG-GPCC specification, etc., only a single parameter set is supported for each attribute. For example, a point cloud may be associated with a single color data set (e.g., a first attribute), a single reflectance data set (e.g., a second attribute), a single distance data set (e.g., a third attribute), etc. However, there are scenarios where supporting multiple parameter sets may be beneficial. These scenarios include, but are not limited to, point clouds associated with faded paintings. For example, a compressed point cloud of a Renaissance painting may be associated with a first parameter set and a second parameter set, the first parameter set being associated with the colors used when the painting was originally created, and the second parameter set being associated with the current colors (the colors have faded since the painting was originally created).

[0108] Therefore, it may be desirable to enable multiple attribute encoding parameter sets for one attribute type. In order to support a wider range of GPCC applications, the present disclosure enables multiple attribute encoding parameter sets for one attribute type, as shown in Tables 7 to 9 below.

[0109]

[0110] Table 7: Example SPS header supporting multiple attribute coding parameter sets

[0111]

[0112]

[0113]

[0114] Table 8: Example attribute header supporting multiple attribute encoding parameter sets

[0115]

[0116] Table 9: Example attribute presence flags supporting multiple attribute encoding parameter sets

[0117] Referring to Table 7, sps_multi_data_set_flag may be used to indicate whether a bitstream includes multiple attribute coding parameter sets. For example, the encoder 101 may generate a sps_multi_data_set_flag value equal to 1 (e.g., the first syntax element), which may indicate that multiple attribute coding parameter sets are enabled for the current point cloud. On the other hand, a sps_multi_data_set_flag value equal to 0 specifies that multiple attribute coding parameter sets are not enabled for the point cloud. When a value of sps_multi_data_set_flag is not present in the bitstream, the decoder 201 may infer that the value of sps_multi_data_set_flag is equal to 0.

[0118] Referring to Table 8, a multi_data_set_flag[attrIdx] value equal to 1 may indicate that multiple attribute parameter sets are enabled for the current attribute type, and the number of attribute coding parameter sets allowed is further specified by the attribute_num_data_set_minus1 syntax element. On the other hand, a multi_data_set_flag value equal to 0 specifies that multiple attribute parameter sets are not enabled for the current attribute type, and the number of attribute coding parameter sets allowed is equal to 1. When there is no value of multi_data_set_flag in the bitstream, the decoder 201 may infer that the value of multi_data_set_flag is equal to 0. In some embodiments, multi_data_set_flag may be indicated as multi_data_set_flag[attrIdx], where [attrIdx] is associated with an attribute index related to the attribute indicated by multi_data_set_flag. As an example and not limitation, assuming that the attribute associated with multi_data_set_flag is a "color attribute" with an index value of 0, the second syntax element encoded into the bitstream may include multi_data_set_flag[0].

[0119] Referring to Table 8, the attribute_num_data_set_minus1[attrIdx] syntax element plus 1 may indicate the number of parameter sets used to encode the current attribute. The current attribute may be indicated by an address index (attrIdx). For example, an attribute index of 1 may indicate a color attribute, an attribute index of 2 may indicate a reflectivity attribute, an attribute index of 3 may indicate a depth attribute, and so on. The value of attribute_num_data_set_minus1 may be in the range of 0 to 15, inclusive. When the value of attribute_num_data_set_minus1 is not present in the bitstream, the decoder 201 may infer that the value of attribute_num_data_set_minus1 is equal to 0.

[0120] The number of allowed attribute encoding parameter sets (also referred to herein as "parameter sets") can be calculated according to expression (6).

[0121] num_allowed_attribute_coding=attribute_num_data_set_minus1+1 (6).

[0122] When all attributes can use the same transform-dependent syntax, an alternative table may be specified, as shown in Tables 10 to 12.

[0123]

[0124] Table 10: Example SPS header supporting multiple attribute coding parameter sets

[0125]

[0126]

[0127]

[0128] Table 11: Example attribute header supporting multiple attribute encoding parameter sets

[0129]

[0130] Table 12: Example attribute presence flags supporting multiple attribute encoding parameter sets

[0131] Fig. 9Flowchart of an exemplary method 900 for point cloud encoding according to some embodiments of the present disclosure is shown. Method 900 may be performed by encoder 101 of encoding system 100 or any other suitable point cloud encoding system. As described below, method 900 may include operations 902 to 918. It should be understood that some of these operations may be optional, and some of these operations may be performed simultaneously or in parallel. Fig. 9 The order shown in the figure is different from the order in which it is executed.

[0132] At 902, the encoder may generate a first syntax element indicating multiple attribute parameter sets for the point cloud. For example, the encoder 101 may generate a sps_multi_data_set_flag value equal to 1 (e.g., the first syntax element), and the sps_multi_data_set_flag value equal to 1 may indicate that multiple attribute coding parameter sets are enabled for the current point cloud. On the other hand, the sps_multi_data_set_flag value equal to 0 specifies that multiple attribute coding parameter sets are not enabled for the current attribute type. When the value of sps_multi_data_set_flag is not present in the bitstream, the encoder 101 may infer that the value of sps_multi_data_set_flag is equal to 0.

[0133] At 904, the encoder may input the first syntax element into the bitstream. For example, the encoder 101 may input sps_multi_data_set_flag into the bitstream.

[0134] At 906, the encoder may generate a second syntax element indicating multiple parameter sets for an attribute in response to the first syntax element indicating that multiple attribute parameter sets are enabled for the point cloud. For example, the encoder 101 may generate a multi_data_set_flag (e.g., a second syntax element) to indicate whether the attribute has multiple parameter sets. Different multi_data_set_flag syntax elements may be generated for different attributes. For example, a first multi_data_set flag may be generated to indicate whether a color attribute has multiple parameter sets, a second multi_data_flag may be generated to indicate whether a reflectivity attribute has multiple parameter sets, a third multi_data_flag may be generated to indicate whether a depth attribute has multiple parameter sets, and so on. In some embodiments, a multi_data_set_flag value equal to 1 may indicate that multiple attribute parameter sets are enabled for the current attribute type. On the other hand, a multi_data_set_flag value equal to 0 specifies that multiple attribute encoding parameter sets are not enabled for the current attribute type. When there is no value for multi_data_set_flag in the bitstream, the decoder 201 may infer that the value of multi_data_set_flag is equal to 0.

[0135] At 908, the encoder may input a second syntax element indicating multiple parameter sets for the property into the bitstream. For example, the encoder 101 may input a multi_data_set flag into the bitstream.

[0136] At 910, the encoder may generate a third syntax element indicating the number of parameter sets associated with the attribute in response to the second syntax element indicating that the attribute has multiple parameter sets. For example, the encoder 101 may generate an attribute_num_data_set_minus1 syntax element (e.g., a third syntax element) for each attribute type to indicate the number of parameter sets associated with an attribute type. For example, a first attribute_num_data_set_minus1 syntax element may be generated to indicate the number of parameter sets associated with a color attribute, a second attribute_num_data_set_minus1 syntax element may be generated to indicate the number of parameter sets associated with a reflectivity attribute, a third attribute_num_data_set_minus1 syntax element may be generated to indicate the number of parameter sets associated with a depth attribute, and so on. The attribute_num_data_set_minus1[attrIdx] syntax element (e.g., a third syntax element) plus 1 may indicate the number of parameter sets used to encode the current attribute. The current attribute may be indicated by an address index (attrIdx). For example, an attribute index of 1 may indicate a color attribute, an attribute index of 2 may indicate a reflectivity attribute, an attribute index of 3 may indicate a depth attribute, and so on. The value of attribute_num_data_set_minus1 may be in the range of 0 to 15, inclusive. When the value of attribute_num_data_set_minus1 is not present in the bitstream, the encoder 101 may infer that the value of attribute_num_data_set_minus1 is equal to 0.

[0137] At 912, the encoder may input a third syntax element into the bitstream indicating the number of parameter sets associated with the attribute. For example, the encoder 101 may input an attribute_num_data_set_minus1 syntax element into the bitstream.

[0138] At 914, the encoder may omit generation of the third syntax element in response to the second syntax element indicating that the attribute does not have multiple parameter sets. For example, the encoder 101 may not generate the attribute_num_data_set_minus1 syntax element.

[0139] At 916, the encoder may compress the point cloud based on the multiple attribute parameter sets in response to enabling multiple attribute parameter sets for the point cloud. For example, when an attribute has more than one parameter set associated with it, the encoder 101 may compress and / or encode the point cloud by using multiple attribute parameter sets. For example, the encoder 101 may encode the point cloud with two or more color parameter sets. The encoder 101 may encode the point cloud with two or more reflectivity parameter sets. The encoder 101 may encode the point cloud with two or more depth parameter sets.

[0140] At 918, the encoder can compress the point cloud based on a single attribute parameter set in response to not enabling multiple attribute parameter sets for the point cloud. For example, when each of the attributes is associated with a single parameter set, the encoder 101 can compress and / or encode the point cloud using a single attribute parameter set.

[0141] Fig.10 1 is a flow chart of an exemplary method 1000 for point cloud decoding according to some embodiments of the present disclosure. The method 1000 may be performed by the decoder 201 of the decoding system 200 or any other suitable point cloud encoding system. As described below, the method 1000 may include operations 1002 to 1016. It should be understood that some of these operations may be optional, and some of these operations may be performed simultaneously or in conjunction with the operation. Fig.10 The order shown is different from the order in which it is executed.

[0142] At 1002, the decoder may parse the bitstream to obtain a first syntax element indicating that multiple property parameter sets are enabled for the point cloud. For example, the decoder 201 may parse the bitstream to obtain a sps_multi_data_set flag (eg, a first syntax element).

[0143] At 1004, the decoder may determine whether the first syntax element indicates that multiple attribute parameter sets are enabled for the point cloud. For example, the decoder 201 may determine whether multiple attribute parameter sets are enabled based on the value of sps_multi_data_set_flag. A value of sps_multi_data_set_flag equal to 1 may indicate that multiple attribute parameter sets are enabled for the current point cloud. On the other hand, a value of sps_multi_data_set_flag equal to 0 specifies that multiple attribute parameter sets are not enabled for the current point cloud.

[0144] At 1006, the decoder may, in response to the first syntax element indicating that multiple attribute parameter sets are enabled for the point cloud, parse the bitstream to obtain a second syntax element indicating multiple parameter sets for an attribute. For example, when sps_multi_data_set_flag is set to 1, the decoder 201 may further parse the bitstream to obtain multi_data_set_flag (e.g., the second syntax element).

[0145] At 1008, the decoder may determine whether the second syntax element indicates that the attribute has multiple parameter sets. For example, the decoder 201 may determine whether the attribute has multiple parameter sets based on the value of multi_data_set_flag. Different multi_data_set_flag syntax elements may be included in the bitstream for different attributes. For example, a first multi_data_set flag may indicate whether a color attribute has multiple parameter sets, a second multi_data_flag may indicate whether a reflectivity attribute has multiple parameter sets, a third multi_data_flag may indicate whether a depth attribute has multiple parameter sets, and so on. In some embodiments, a value of multi_data_set_flag equal to 1 may indicate that multiple attribute encoding parameter sets are enabled for the current attribute type. On the other hand, a value of multi_data_set_flag equal to 0 specifies that multiple attribute parameter sets are not enabled for the current attribute type. When a value of multi_data_set_flag is not present in the bitstream, the decoder 201 may infer that the value of multi_data_set_flag is equal to 0.

[0146] At 1010, the decoder may, in response to the second syntax element indicating that the attribute has multiple parameter sets, parse the bitstream to obtain a third syntax element indicating the number of parameter sets associated with the attribute. For example, the decoder 201 may parse the bitstream to obtain an attribute_num_data_set_minus1 syntax element (e.g., a third syntax element) for each attribute type.

[0147] At 1012, the decoder may identify the number of parameter sets associated with the attribute based on the third syntax element. For example, the attribute_num_data_set_minus1[attrIdx] syntax element (e.g., the third syntax element) plus 1 may indicate the number of parameter sets used to encode the current attribute. The current attribute may be indicated by an address index (attrIdx). For example, an attribute index of 1 may indicate a color attribute, an attribute index of 2 may indicate a reflectivity attribute, an attribute index of 3 may indicate a depth attribute, and so on. The value of attribute_num_data_set_minus1 may be in the range of 0 to 15 (inclusive). When the value of attribute_num_data_set_minus1 is not present in the bitstream, the decoder 201 may infer that the value of attribute_num_data_set_minus1 is equal to 0. The decoder 201 may use calculations associated with expression (6) to identify the number of allowed attribute parameter sets (also referred to herein as "parameter sets").

[0148] At 1014, the decoder may determine that the property has a single parameter set associated therewith in response to the second syntax element indicating that the property does not have multiple parameter sets. For example, the decoder 201 may parse the second syntax element from the bitstream. The decoder 201 may determine that the associated property (e.g., color, reflectivity, intensity, etc.) has a single parameter set associated therewith based on receiving the second syntax element.

[0149] At 1016, the decoder may decompress the point cloud based on multiple attribute parameter sets in response to determining that multiple attribute parameter sets are enabled for the point cloud. For example, when multiple attribute parameter sets are present, the decoder 201 may decompress and / or decode the point cloud from the bitstream based on the multiple attribute parameter sets.

[0150] At 1018, the decoder may decompress the point cloud based on a single attribute parameter set in response to determining that multiple attribute parameter sets are not enabled for the point cloud. For example, when each attribute type has only a single parameter set associated therewith, the decoder 201 may decompress and / or decode the point cloud from the bitstream based on the single attribute parameter set.

[0151] In various aspects of the present disclosure, the functions described herein may be implemented in hardware, software, firmware, or any combination thereof. If the functions are implemented in software, the functions may be stored as instructions on a non-transitory computer-readable medium. Computer-readable media include computer storage media. Storage media may be a computer program that can be processed by a processor (e.g., Figure 1 and Figure 2Any available medium accessed by the processor 102 in the computer system. As an example and not limitation, such a computer-readable medium may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, HDD (e.g., disk storage or other magnetic storage device), flash drive, SSD, or any other medium that can be used to carry or store the required program code in the form of instructions or data structures and can be accessed by a processing system (e.g., a mobile device or a computer). Disks and discs used herein include compact disks (CDs), laser discs, optical discs, digital video discs (DVDs), and floppy disks, wherein disks generally reproduce data magnetically, while optical discs use lasers to reproduce data optically. Each combination of the above should also be included in the scope of computer-readable media.

[0152] According to one aspect of the present disclosure, a method for decoding a point cloud is provided, the point cloud being represented by a 1D array including a set of points. The method may include parsing a bitstream by at least one processor to obtain a first syntax element indicating that multiple attribute parameter sets are enabled for the point cloud. The method may include determining by at least one processor whether the first syntax element indicates that multiple attribute parameter sets are enabled for the point cloud. The method may include: in response to determining that multiple attribute parameter sets are enabled for the point cloud, decompressing the point cloud based on multiple attribute parameter sets by at least one processor.

[0153] In some embodiments, the method may include decompressing, by at least one processor, the point cloud based on a single attribute parameter set in response to determining that multiple attribute parameter sets are not enabled for the point cloud.

[0154] In some embodiments, the method may include: in response to the first syntax element indicating that multiple attribute parameter sets are enabled for the point cloud, parsing the bitstream by at least one processor to obtain a second syntax element indicating multiple parameter sets for the attribute. In some embodiments, the method may include: determining, by at least one processor, whether the second syntax element indicates that the attribute has multiple parameter sets.

[0155] In some embodiments, the method may include: in response to the second syntax element indicating that the property has multiple parameter sets, parsing the bitstream by at least one processor to obtain a third syntax element indicating the number of parameter sets associated with the property. In some embodiments, the method may include: identifying, by at least one processor, the number of parameter sets associated with the property based on the third syntax element.

[0156] In some embodiments, the method may include determining, by the at least one processor, in response to the second syntax element indicating that the property does not have multiple parameter sets, that the property has a single parameter set associated therewith.

[0157] In some embodiments, the first syntax element may include an sps_multi_data_set flag. In some embodiments, the second syntax element may include a multi_data_set flag. In some embodiments, the third syntax element may include an attribute_num_data_set_minus1[attrIdx] syntax element. In some embodiments, the value of the attribute_num_data_set_minus1[attrIdx] syntax element encoded in the bitstream may indicate the number of allowed multiple attribute parameter sets for the attribute, the number of allowed multiple attribute parameter sets for the attribute being the sum of attribute_num_data_set_minus1[attrIdx] and 1.

[0158] According to another aspect of the present disclosure, a system for decoding a point cloud is provided, the point cloud being represented by a 1D array including a set of points. The system may include at least one processor and a memory storing instructions. The memory stores instructions that, when executed by at least one processor, enable the at least one processor to perform the following operations: parse a bitstream to obtain a first syntax element indicating that multiple attribute parameter sets are enabled for the point cloud. The memory stores instructions that, when executed by at least one processor, enable the at least one processor to perform the following operations: determine whether the first syntax element indicates that multiple attribute parameter sets are enabled for the point cloud. The memory stores instructions that, when executed by at least one processor, enable the at least one processor to perform the following operations: in response to determining that multiple attribute parameter sets are enabled for the point cloud, decompress the point cloud based on the multiple attribute parameter sets.

[0159] In some embodiments, the memory stores instructions that, when executed by the at least one processor, may further cause the at least one processor to perform the following operations: in response to determining that multiple attribute parameter sets are not enabled for the point cloud, decompress the point cloud based on a single attribute parameter set.

[0160] In some embodiments, the memory stores instructions that, when executed by at least one processor, can further cause the at least one processor to perform the following operations: in response to a first syntax element indicating that multiple attribute parameter sets are enabled for the point cloud, parse the bitstream to obtain a second syntax element indicating multiple parameter sets for an attribute. The memory stores instructions that, when executed by at least one processor, can cause the at least one processor to perform the following operations: determine whether the second syntax element indicates that the attribute has multiple parameter sets.

[0161] In some embodiments, the memory stores instructions that, when executed by at least one processor, may cause the at least one processor to perform the following operations: in response to the second syntax element indicating that the property has multiple parameter sets, parse the bitstream to obtain a third syntax element indicating the number of parameter sets associated with the property. The memory stores instructions that, when executed by at least one processor, may cause the at least one processor to perform the following operations: identify the number of parameter sets associated with the property based on the third syntax element.

[0162] In some embodiments, the memory stores instructions that, when executed by at least one processor, cause the at least one processor to perform the following operations: in response to the second syntax element indicating that the property does not have multiple parameter sets, determine that the property has a single parameter set associated with the property.

[0163] In some embodiments, the first syntax element may include an sps_multi_data_set flag. In some embodiments, the second syntax element may include a multi_data_set flag. In some embodiments, the third syntax element may include an attribute_num_data_set_minus1[attrIdx] syntax element. In some embodiments, the value of the attribute_num_data_set_minus1[attrIdx] syntax element encoded in the bitstream may indicate the number of allowed multiple attribute parameter sets for the attribute, the number of allowed multiple attribute parameter sets for the attribute being the sum of attribute_num_data_set_minus1[attrIdx] and 1.

[0164] According to another aspect of the present disclosure, a method for encoding a point cloud is provided, the point cloud being represented by a 1D array including a set of points. The method may include: generating, by at least one processor, a first syntax element indicating a plurality of attribute parameter sets of the point cloud. The method may include: inputting, by at least one processor, the first syntax element into a bitstream. The method may include: in response to enabling a plurality of attribute parameter sets for the point cloud, by at least one processor, compressing the point cloud based on the plurality of attribute parameter sets.

[0165] In some embodiments, the method may include compressing, by at least one processor, the point cloud based on a single attribute parameter set in response to multiple attribute parameter sets not being enabled for the point cloud.

[0166] In some embodiments, the method may include: generating, by at least one processor, a second syntax element indicating a plurality of parameter sets for a property in response to the first syntax element indicating that a plurality of property parameter sets are enabled for the point cloud. In some embodiments, the method may include: inputting, by at least one processor, the second syntax element indicating the plurality of parameter sets for the property into a bitstream.

[0167] In some embodiments, the method may include: generating, by at least one processor, a third syntax element indicating the number of parameter sets associated with the property in response to the second syntax element indicating that the property has multiple parameter sets. In some embodiments, the third syntax element indicating the number of parameter sets associated with the property is input into the bitstream by at least one processor.

[0168] In some embodiments, the method may include: omitting, by at least one processor, generating a third syntax element in response to the second syntax element indicating that the property does not have multiple parameter sets.

[0169] In some embodiments, the first syntax element may include an sps_multi_data_set flag. In some embodiments, the second syntax element may include a multi_data_set flag. In some embodiments, the third syntax element may include an attribute_num_data_set_minus1[attrIdx] syntax element. In some embodiments, the value of the attribute_num_data_set_minus1[attrIdx] syntax element encoded in the bitstream may indicate the number of allowed multiple attribute parameter sets for the attribute, the number of allowed multiple attribute parameter sets for the attribute being the sum of attribute_num_data_set_minus1[attrIdx] and 1.

[0170] According to another aspect of the present disclosure, a system for encoding a point cloud is provided, the point cloud being represented by a 1D array including a set of points. The system may include at least one processor and a memory storing instructions. The memory stores instructions that, when executed by at least one processor, may cause the at least one processor to perform the following operations: generate a first syntax element indicating multiple attribute parameter sets of the point cloud. The memory stores instructions that, when executed by at least one processor, may cause the at least one processor to perform the following operations: input the first syntax element into a bitstream. The memory stores instructions that, when executed by at least one processor, may cause the at least one processor to perform the following operations: in response to multiple attribute parameter sets being enabled for the point cloud, compress the point cloud based on the multiple attribute parameter sets.

[0171] In some embodiments, the memory stores instructions that, when executed by at least one processor, cause the at least one processor to: in response to multiple attribute parameter sets not being enabled for the point cloud, compress the point cloud based on a single attribute parameter set.

[0172] In some embodiments, the memory stores instructions that, when executed by at least one processor, cause the at least one processor to: in response to a first syntax element indicating that multiple attribute parameter sets are enabled for a point cloud, generate a second syntax element indicating multiple parameter sets for an attribute. In some embodiments, the memory stores instructions that, when executed by at least one processor, cause the at least one processor to: input the second syntax element indicating multiple parameter sets for the attribute into a bitstream.

[0173] In some embodiments, the memory stores instructions that, when executed by at least one processor, cause the at least one processor to: in response to the second syntax element indicating that the property has multiple parameter sets, generate a third syntax element indicating the number of parameter sets associated with the property. In some embodiments, the memory stores instructions that, when executed by at least one processor, cause the at least one processor to: input the third syntax element indicating the number of parameter sets associated with the property into a bitstream.

[0174] In some embodiments, the memory stores instructions that, when executed by at least one processor, cause the at least one processor to: in response to the second syntax element indicating that the property does not have multiple parameter sets, omit generating a third syntax element.

[0175] In some embodiments, the first syntax element may include an sps_multi_data_set flag. In some embodiments, the second syntax element may include a multi_data_set flag. In some embodiments, the third syntax element may include an attribute_num_data_set_minus1[attrIdx] syntax element. In some embodiments, the value of the attribute_num_data_set_minus1[attrIdx] syntax element encoded in the bitstream may indicate the number of allowed multiple attribute parameter sets for the attribute, the number of allowed multiple attribute parameter sets for the attribute being the sum of attribute_num_data_set_minus1[attrIdx] and 1.

[0176] The foregoing description of each embodiment will reveal the general nature of the present disclosure, so that others can easily modify and / or change these embodiments for various applications by applying knowledge in the art without excessive experimentation without departing from the general concept of the present disclosure. Therefore, these changes and modifications are intended to be within the meaning and scope of the equivalents of the disclosed embodiments based on the teachings and guidance provided herein. It should be understood that the wording or terminology herein is for descriptive purposes rather than for limitation, and therefore those skilled in the art should interpret the terms or wording in this specification in accordance with the teachings and guidance.

[0177] The embodiments of the present disclosure have been described above with the help of functional building blocks that illustrate the implementation of the specified functions and their relationships. For ease of description, the boundaries of these functional building blocks are arbitrarily defined in this article. As long as the specified functions and their relationships can be properly performed, alternative boundaries can be defined.

[0178] The Summary and Abstract sections may set forth one or more but not all exemplary embodiments of the present disclosure as contemplated by one or more inventors, and thus, are not intended to limit the present disclosure and the appended claims in any way.

[0179] Various functional blocks, modules and steps are disclosed above. The arrangements provided are exemplary and non-restrictive. Therefore, the functional blocks, modules and steps can be reordered or combined in a manner different from the examples provided above. Similarly, some embodiments include only a subset of functional blocks, modules and steps, and any such subset is allowed.

[0180] The breadth and scope of the present disclosure should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.

Claims

1. A method for decoding a point cloud, the point cloud being represented by a one-dimensional (1D) array comprising a set of points, the method comprising: parsing, by at least one processor, a bitstream to obtain a first syntax element indicating that a plurality of attribute parameter sets are enabled for the point cloud; determining, by the at least one processor, whether the first syntax element indicates that a plurality of attribute parameter sets are enabled for the point cloud; as well as The point cloud is decompressed based on the plurality of attribute parameter sets by the at least one processor in response to determining that the plurality of attribute parameter sets are enabled for the point cloud.

2. The method according to claim 1, further comprising: In response to determining that the plurality of attribute parameter sets are not enabled for the point cloud, the point cloud is decompressed based on a single attribute parameter set by the at least one processor.

3. The method according to claim 1, further comprising: parsing, by the at least one processor, the bitstream to obtain a second syntax element indicating a plurality of parameter sets for a property in response to the first syntax element indicating that the plurality of property parameter sets are enabled for the point cloud; as well as A determination is made, by the at least one processor, whether the second syntax element indicates that the property has multiple parameter sets.

4. The method according to claim 3, further comprising: parsing, by the at least one processor, the bitstream to obtain a third syntax element indicating a number of parameter sets associated with the property in response to the second syntax element indicating that the property has multiple parameter sets; as well as A number of the parameter sets associated with the property is identified, by the at least one processor, based on the third syntax element.

5. The method according to claim 4, further comprising: In response to the second syntax element indicating that the property does not have multiple parameter sets, determining, by the at least one processor, that the property has a single parameter set associated with the property.

6. The method according to claim 4, wherein: The first syntax element comprises a sps_multi_data_set flag, The second syntax element comprises a multi_data_set flag, The third syntax element comprises an attribute_num_data_set_minus1[attrIdx] syntax element, and The value of the attribute_num_data_set_minus1[attrIdx] syntax element encoded in the bitstream plus 1 indicates the number of allowed multiple attribute parameter sets for the attribute.

7. A system for decoding a point cloud, the point cloud being represented by a one-dimensional (1D) array comprising a set of points, the system comprising: at least one processor; as well as a memory storing instructions which, when executed by the at least one processor, cause the at least one processor to: Parsing a bitstream to obtain a first syntax element indicating that a plurality of attribute parameter sets are enabled for the point cloud; determining whether the first syntax element indicates that a plurality of attribute parameter sets are enabled for the point cloud; as well as In response to determining that the plurality of attribute parameter sets are enabled for the point cloud, the point cloud is decompressed based on the plurality of attribute parameter sets.

8. The system according to claim 7, wherein: The memory stores instructions that, when executed by the at least one processor, further cause the at least one processor to: In response to determining that the plurality of attribute parameter sets are not enabled for the point cloud, the point cloud is decompressed based on a single attribute parameter set.

9. The system according to claim 7, wherein: The memory stores instructions that, when executed by the at least one processor, further cause the at least one processor to: In response to the first syntax element indicating that the plurality of attribute parameter sets are enabled for the point cloud, parsing the bitstream to obtain a second syntax element indicating a plurality of parameter sets for an attribute; as well as A determination is made as to whether the second syntax element indicates that the property has multiple parameter sets.

10. The system according to claim 9, wherein: The memory stores instructions that, when executed by the at least one processor, further cause the at least one processor to: In response to the second syntax element indicating that the property has multiple parameter sets, parsing the bitstream to obtain a third syntax element indicating a number of parameter sets associated with the property; as well as The number of the parameter sets associated with the property is identified based on the third syntax element.

11. The system according to claim 10, wherein: The memory stores instructions that, when executed by the at least one processor, further cause the at least one processor to: In response to the second syntax element indicating that the property does not have multiple parameter sets, determining that the property has a single parameter set associated with the property.

12. The system of claim 10, wherein: The first syntax element comprises a sps_multi_data_set flag, The second syntax element comprises a multi_data_set flag, and The third syntax element comprises an attribute_num_data_set_minus1[attrIdx] syntax element, and The value of the attribute_num_data_set_minus1[attrIdx] syntax element encoded in the bitstream indicates the number of allowed attribute parameter sets for the attribute, the number of allowed attribute parameter sets for the attribute being the sum of the attribute_num_data_set_minus1[attrIdx] and 1.

13. A method for encoding a point cloud, the point cloud being represented by a one-dimensional (1D) array comprising a set of points, the method comprising: generating, by at least one processor, a first syntax element indicating a plurality of sets of attribute parameters for the point cloud; inputting, by the at least one processor, the first syntax element into a bitstream; as well as The point cloud is compressed based on the plurality of attribute parameter sets by the at least one processor in response to the plurality of attribute parameter sets being enabled for the point cloud.

14. The method according to claim 13, further comprising: In response to the plurality of attribute parameter sets not being enabled for the point cloud, the point cloud is compressed based on a single attribute parameter set by the at least one processor.

15. The method according to claim 13, further comprising: generating, by the at least one processor, a second syntax element indicating a plurality of parameter sets for an attribute in response to the first syntax element indicating that the plurality of attribute parameter sets are enabled for the point cloud; as well as The second syntax element indicating a plurality of parameter sets for the property is input into the bitstream by the at least one processor.

16. The method according to claim 15, further comprising: generating, by the at least one processor, in response to the second syntax element indicating that the property has multiple parameter sets, a third syntax element indicating a number of parameter sets associated with the property; as well as The third syntax element indicating a number of the parameter sets associated with the property is input into the bitstream by the at least one processor.

17. The method according to claim 16, further comprising: In response to the second syntax element indicating that the property does not have multiple parameter sets, generating the third syntax element is omitted by the at least one processor.

18. The method of claim 16, wherein: The first syntax element comprises a sps_multi_data_set flag, The second syntax element comprises a multi_data_set flag, and The third syntax element comprises an attribute_num_data_set_minus1[attrIdx] syntax element, and The value of the attribute_num_data_set_minus1[attrIdx] syntax element encoded in the bitstream indicates the number of allowed attribute parameter sets for the attribute, the number of allowed attribute parameter sets for the attribute being the sum of the attribute_num_data_set_minus1[attrIdx] and 1.

19. A system for encoding a point cloud, the point cloud being represented by a one-dimensional (1D) array comprising a set of points, the system comprising: at least one processor; as well as a memory storing instructions which, when executed by the at least one processor, cause the at least one processor to: generating a first syntax element indicating a plurality of sets of attribute parameters of the point cloud; inputting the first syntax element into a bitstream; as well as In response to the plurality of attribute parameter sets being enabled for the point cloud, the point cloud is compressed based on a plurality of attribute parameter sets.

20. The system of claim 19, wherein: The memory stores instructions that, when executed by the at least one processor, further cause the at least one processor to: In response to the plurality of attribute parameter sets not being enabled for the point cloud, the point cloud is compressed based on a single attribute parameter set.

21. The system of claim 19, wherein: The memory stores instructions that, when executed by the at least one processor, further cause the at least one processor to: In response to the first syntax element indicating that the plurality of attribute parameter sets are enabled for the point cloud, generating a second syntax element indicating a plurality of parameter sets for an attribute; as well as The second syntax element indicating a plurality of parameter sets for the property is input into the bitstream.

22. The system of claim 21, further comprising: In response to the second syntax element indicating that the property has multiple parameter sets, generating a third syntax element indicating a number of parameter sets associated with the property; as well as The third syntax element indicating the number of the parameter sets associated with the property is input into the bitstream.

23. The system of claim 22, wherein: The memory stores instructions that, when executed by the at least one processor, further cause the at least one processor to: In response to the second syntax element indicating that the property does not have multiple parameter sets, generating the third syntax element is omitted.

24. The system of claim 22, wherein: The first syntax element comprises a sps_multi_data_set flag, The second syntax element comprises a multi_data_set flag, and The third syntax element comprises an attribute_num_data_set_minus1[attrIdx] syntax element, and The value of the attribute_num_data_set_minus1[attrIdx] syntax element encoded in the bitstream represents the number of allowed attribute parameter sets for the attribute, and the number of allowed attribute parameter sets for the attribute is the sum of the attribute_num_data_set_minus1[attrIdx] and 1.