WO2023096973A1 - Geometry point cloud coding - Google Patents

Geometry point cloud coding Download PDF

Info

Publication number
WO2023096973A1
WO2023096973A1 PCT/US2022/050869 US2022050869W WO2023096973A1 WO 2023096973 A1 WO2023096973 A1 WO 2023096973A1 US 2022050869 W US2022050869 W US 2022050869W WO 2023096973 A1 WO2023096973 A1 WO 2023096973A1
Authority
WO
WIPO (PCT)
Prior art keywords
attribute
points
syntax element
point cloud
property
Prior art date
Application number
PCT/US2022/050869
Other languages
French (fr)
Inventor
Yue Yu
Vladyslav ZAKHARACHENKO
Haoping Yu
Original Assignee
Innopeak Technology, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Innopeak Technology, Inc. filed Critical Innopeak Technology, Inc.
Publication of WO2023096973A1 publication Critical patent/WO2023096973A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding

Definitions

  • Embodiments of the present disclosure relate to point cloud coding.
  • Point clouds are one of the major three-dimension (3D) data representations, which provide, in addition to spatial coordinates, attributes associated with the points in a 3D world. Point clouds in their raw format require a huge amount of memory for storage or bandwidth for transmission. Furthermore, the emergence of higher resolution point cloud capture technology imposes, in turn, even a higher requirement on the size of point clouds. In order to make point clouds usable, compression is necessary. Two compression technologies have been proposed for point cloud compression/coding (PCC) standardization activities: video-based PCC (V-PCC) and geometry-based PCC (G-PCC). V-PCC approach is based on 3D to two-dimension (2D) projections, while G-PCC, on the contrary, encodes the content directly in 3D space. In order to achieve that, G-PCC utilizes data structures, such as an octree that describes the point locations in 3D space.
  • V-PCC video-based PCC
  • G-PCC geometry-based PCC
  • a method for decoding a point cloud is disclosed.
  • the point cloud is represented in a one-dimension (ID) array including a set of points.
  • a bitstream is parsed by a processor to obtain a first syntax element indicative of presence of at least one attribute associated with the set of points. Whether the first syntax element indicates that the at least one attribute associated with the set of points is present is determined by the processor.
  • the bitstream is parsed by the processor to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points.
  • a system for decoding a point cloud includes a memory configured to store instructions and a processor coupled to the memory.
  • the point cloud is represented in a ID array including a set of points.
  • the processor is configured to, upon executing the instructions, parse a bitstream to obtain a first syntax element indicative of presence of at least one attribute associated with the set of points.
  • the processor is also configured to, upon executing the instructions, determine whether the first syntax element indicates that the at least one attribute associated with the set of points is present.
  • the processor is further configured to, upon executing the instructions, in response to the first syntax element indicating that the at least one attribute associated with the set of points is present, parse the bitstream to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points.
  • the processor is further configured to, upon executing the instructions, parse the bitstream to obtain, for each attribute of the maximum number of attributes, a respective third syntax element indicative of presence of the corresponding attribute.
  • a method for encoding a point cloud is disclosed.
  • the point cloud is represented in a ID array including a set of points.
  • a first syntax element indicating whether at least one attribute associated with the set of points is present is determined by a processor.
  • a second syntax element indicative of a maximum number of attributes associated with the set of points is determined by the processor.
  • a respective third syntax element indicating whether the corresponding attribute is present is determined by the processor.
  • a system for encoding a point cloud includes a memory configured to store instructions and a processor coupled to the memory.
  • the point cloud is represented in a ID array including a set of points.
  • the processor is configured to, upon executing the instructions, determine a first syntax element indicating whether at least one attribute associated with the set of points is present.
  • the processor is also configured to, upon executing the instructions, in response to the first syntax element indicating that the at least one attribute associated with the set of points is present, determine a second syntax element indicative of a maximum number of attributes associated with the set of points.
  • the processor is further configured to, upon executing the instructions, determine for each attribute of the maximum number of the attributes, a respective third syntax element indicating whether the corresponding attribute is present.
  • FIG. 1 illustrates a block diagram of an exemplary encoding system, according to some embodiments of the present disclosure.
  • FIG. 2 illustrates a block diagram of an exemplary decoding system, according to some embodiments of the present disclosure.
  • FIG. 3 illustrates a detailed block diagram of an exemplary encoder in the encoding system in FIG. 1, according to some embodiments of the present disclosure.
  • FIG. 4 illustrates a detailed block diagram of an exemplary decoder in the decoding system in FIG. 2, according to some embodiments of the present disclosure.
  • FIGs. 5A and 5B illustrate an exemplary octree structure of G-PCC and the corresponding digital representation, respectively, according to some embodiments of the present disclosure.
  • FIG. 6 illustrates an exemplary structure of cube and the relationship with neighboring cubes in an octree structure of G-PCC, according to some embodiments of the present disclosure.
  • FIG. 7 illustrates an exemplary ID array of points representing a point cloud, a set of candidate points, and a set of prediction points, according to some embodiments of the present disclosure.
  • FIG. 8 illustrates an exemplary hierarchy of parameter sets of G-PCC, according to some embodiments of the present disclosure.
  • FIG. 9 illustrates a flow chart of an exemplary method for encoding a point cloud, according to some embodiments of the present disclosure.
  • FIG. 10 illustrates a flow chart of an exemplary method for decoding a point cloud, according to some embodiments of the present disclosure.
  • FIG. 11 illustrates a flow chart of another exemplary method for encoding a point cloud, according to some embodiments of the present disclosure.
  • FIG. 12 illustrates a flow chart of another exemplary method for decoding a point cloud, according to some embodiments of the present disclosure.
  • references in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” “some embodiments,” “certain embodiments,” etc. indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases do not necessarily refer to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it would be within the knowledge of a person skilled in the pertinent art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
  • terminology may be understood at least in part from usage in context.
  • the term “one or more” as used herein, depending at least in part upon context may be used to describe any feature, structure, or characteristic in a singular sense or may be used to describe combinations of features, structures or characteristics in a plural sense.
  • terms, such as “a,” “an,” or “the,” again, may be understood to convey a singular usage or to convey a plural usage, depending at least in part upon context.
  • the term “based on” may be understood as not necessarily intended to convey an exclusive set of factors and may, instead, allow for existence of additional factors not necessarily expressly described, again, depending at least in part on context.
  • point cloud coding includes both encoding and decoding a point cloud.
  • a point cloud is composed of a collection of points in a 3D space. Each point in the 3D space is associated with a geometry position together with the associated attribute information (e.g., color, reflectance, intensity, classification, etc.).
  • attribute information e.g., color, reflectance, intensity, classification, etc.
  • the geometry of a point cloud can be compressed first, and then the corresponding attributes, including color or reflectance, can be compressed based upon the geometry information according to a point cloud coding technique, such as G-PCC.
  • G-PCC has been widely used in virtual reality/augmented reality (VR/AR), telecommunication, autonomous vehicle, etc., for entertainment and industrial applications, e.g., light detection and ranging (LiDAR) sweep compression for automotive or robotics and high-definition (HD) map for navigation.
  • VR/AR virtual reality/augmented reality
  • LiDAR light detection and ranging
  • HD high-definition
  • MPEG Moving Picture Experts Group
  • AVS Audio Video Coding Standard
  • the existing G-PCC standards cannot work well for a wide range of PCC inputs for many different applications.
  • the representation of other information (e.g., parameters) used for G- PCC may be coded in the forms of syntax elements in the bitstream as well.
  • G-PCC is organized in different levels by dividing a collection of points into different pieces (e.g., sequence, slices, etc.) associated with different properties (e.g., geometry, attributes, etc.), the parameter sets are also arranged in different levels (e.g., sequence-level, property-level, slice-level, etc.), for example, in the different headers.
  • multiple condition checks may be required for parsing some syntax elements in G-PCC, which further increases the complexity of organizing and parsing the representation of syntax elements
  • the present disclosure provides various novel schemes of syntax element representation and organization, which are compatible with any suitable G-PCC standards, including, but not limited to, AVS G- PCC standards and MPEG G-PCC standards.
  • various attribute-presence syntax elements are introduced at different levels to control the enablement/disablement of all attributes or an individual attribute in point cloud coding.
  • a syntax element specifying the supported maximum number of attributes is also introduced, in conjunction with the various attribute-presence syntax elements, to allow the flexibility of supporting various numbers of attributes in point cloud coding.
  • the different parameters under the same condition check at the same level e.g., associated with the same attribute
  • various identifiers are introduced at different levels to allow the parameter set synchronization at different levels in point cloud coding.
  • a sequence parameter set (SPS)-ID is introduced to support multiple sequences and SPSs.
  • a property parameter set-ID e.g., geometry parameter set-ID and attribute parameter set-ID
  • a slice property parameter set-ID (e.g., slice geometry parameter set-ID and slice attribute parameter set-ID) is introduced to allow different slices of the same sequence to have different property parameter sets, as well as enable the linkage of each slice property parameter set to its corresponding property parameter set and SPS.
  • FIG. 1 illustrates a block diagram of an exemplary encoding system 100, according to some embodiments of the present disclosure.
  • FIG. 2 illustrates a block diagram of an exemplary decoding system 200, according to some embodiments of the present disclosure.
  • Each system 100 or 200 may be applied or integrated into various systems and apparatuses capable of data processing, such as computers and wireless communication devices.
  • system 100 or 200 may be the entirety or part of a mobile phone, a desktop computer, a laptop computer, a tablet, a vehicle computer, a gaming console, a printer, a positioning device, a wearable electronic device, a smart sensor, a virtual reality (VR) device, an argument reality (AR) device, or any other suitable electronic devices having data processing capability.
  • VR virtual reality
  • AR argument reality
  • system 100 or 200 may include a processor 102, a memory 104, and an interface 106. These components are shown as connected one to another by a bus, but other connection types are also permitted. It is understood that system 100 or 200 may include any other suitable components for performing functions described here.
  • Processor 102 may include microprocessors, such as graphic processing unit (GPU), image signal processor (ISP), central processing unit (CPU), digital signal processor (DSP), tensor processing unit (TPU), vision processing unit (VPU), neural processing unit (NPU), synergistic processing unit (SPU), or physics processing unit (PPU), microcontroller units (MCUs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functions described throughout the present disclosure.
  • GPU graphic processing unit
  • ISP image signal processor
  • CPU central processing unit
  • DSP digital signal processor
  • TPU tensor processing unit
  • VPU vision processing unit
  • NPU neural processing unit
  • SPU synergistic processing unit
  • PPU physics processing unit
  • MCUs microcontroller units
  • ASICs application-specific integrated circuits
  • FPGAs field-programmable gate array
  • Processor 102 may be a hardware device having one or more processing cores.
  • Processor 102 may execute software.
  • Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise.
  • Software can include computer instructions written in an interpreted language, a compiled language, or machine code. Other techniques for instructing hardware are also permitted under the broad category of software.
  • Memory 104 can broadly include both memory (a.k.a, primary/system memory) and storage (a.k.a., secondary memory).
  • 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 readonly memory (CD-ROM) or other optical disk storage, hard disk drive (HDD), such as magnetic disk storage or other magnetic storage devices, Flash drive, solid-state drive (SSD), or any other medium that can be used to carry or store desired program code in the form of instructions that can be accessed and executed by processor 102.
  • RAM random-access memory
  • ROM read-only memory
  • SRAM static RAM
  • DRAM dynamic RAM
  • FRAM ferroelectric RAM
  • EEPROM electrically erasable programmable ROM
  • CD-ROM compact disc readonly memory
  • HDD hard disk drive
  • HDD such as magnetic disk storage or other magnetic storage devices
  • Flash drive solid-
  • memory 104 may be embodied by any computer-readable medium, such as a non-transitory computer-readable medium. Although only one memory is shown in FIGs. 1 and 2, it is understood that multiple memories can be included.
  • Interface 106 can broadly include a data interface and a communication interface that is configured to receive and transmit a signal in a process of receiving and transmitting information with other external network elements.
  • interface 106 may include input/output (VO) devices and wired or wireless transceivers.
  • VO input/output
  • FIGs. 1 and 2 it is understood that multiple interfaces can be included.
  • Processor 102, memory 104, and interface 106 may be implemented in various forms in system 100 or 200 for performing point cloud coding functions.
  • processor 102, memory 104, and interface 106 of system 100 or 200 are implemented (e.g., integrated) on one or more system-on-chips (SoCs).
  • SoCs system-on-chips
  • processor 102, memory 104, and interface 106 may be integrated on an application processor (AP) SoC that handles application processing in an operating system (OS) environment, including running point cloud encoding and decoding applications.
  • API application processor
  • processor 102, memory 104, and interface 106 may be integrated on a specialized processor chip for point cloud coding, such as a GPU or ISP chip dedicated to graphic processing in a real-time operating system (RTOS).
  • RTOS real-time operating system
  • processor 102 may include one or more modules, such as an encoder 101.
  • FIG. 1 shows that encoder 101 is within one processor 102, it is understood that encoder 101 may include one or more sub-modules that can be implemented on different processors located closely or remotely with each other.
  • Encoder 101 (and any corresponding sub-modules or sub-units) can be hardware units (e.g., portions of an integrated circuit) of processor 102 designed for use with other components or software units implemented by processor 102 through executing at least part of a program, i.e., instructions.
  • the instructions of the program may be stored on a computer-readable medium, such as memory 104, and when executed by processor 102, it may perform a process having one or more functions related to point cloud encoding, such as voxelization, transformation, quantization, arithmetic encoding, etc., as described below in detail.
  • processor 102 may include one or more modules, such as a decoder 201.
  • FIG. 2 shows that decoder 201 is within one processor 102, it is understood that decoder 201 may include one or more sub-modules that can be implemented on different processors located closely or remotely with each other.
  • Decoder 201 (and any corresponding sub-modules or sub-units) can be hardware units (e.g., portions of an integrated circuit) of processor 102 designed for use with other components or software units implemented by processor 102 through executing at least part of a program, i.e., instructions.
  • the instructions of the program may be stored on a computer-readable medium, such as memory 104, and when executed by processor 102, it may perform a process having one or more functions related to point cloud decoding, such as arithmetic decoding, dequantization, inverse transformation, reconstruction, synthesis, as described below in detail.
  • FIG. 3 illustrates a detailed block diagram of exemplary encoder 101 in encoding system 100 in FIG. 1, according to some embodiments of the present disclosure.
  • encoder 101 may include a coordinate transform module 302, a voxelization module 304, a geometry analysis module 306, and an arithmetic encoding module 308, together configured to encode positions associated with points of a point cloud into a geometry bitstream (i.e., geometry encoding).
  • a coordinate transform module 302 As shown in FIG. 3, a voxelization module 304, a geometry analysis module 306, and an arithmetic encoding module 308, together configured to encode positions associated with points of a point cloud into a geometry bitstream (i.e., geometry encoding).
  • geometry bitstream i.e., geometry encoding
  • encoder 101 may also include a color transform module 310, an attribute transform module 312, a quantization module 314, and an arithmetic encoding module 316, together configured to encode attributes associated with points of a point cloud into an attribute bitstream (i.e., attribute encoding).
  • attribute encoding i.e., attribute encoding
  • each of the elements shown in FIG. 3 is independently shown to represent characteristic functions different from each other in a point cloud encoder, and it does not mean that each component is formed by the configuration unit of separate hardware or single software. That is, each element is included to be listed as an element for convenience of explanation, and at least two of the elements may be combined to form a single element, or one element may be divided into a plurality of elements to perform a function.
  • attribute coding depends on decoded geometry. As a consequence, point cloud positions may be coded first.
  • coordinate transform module 302 and a voxelization module 304 may be configured to perform a coordinate transformation followed by voxelization that quantizes and removes duplicate points. The process of position quantization, duplicate point removal, and assignment of attributes to the remaining points is called voxelization.
  • the voxelized point cloud may be represented using, for example, an octree structure in a lossless manner.
  • Geometry analysis module 306 may be configured to perform geometry analysis using, for example, the octree or trisoup scheme.
  • Arithmetic encoding module 308 may be configured to arithmetically encode the resulting structure from geometry analysis module 306 into the geometry bitstream.
  • geometry analysis module 306 is configured to perform geometry analysis using the octree scheme.
  • a cubical axis-aligned bounding box B may be defined by the two extreme points (0,0,0) and (2 d , 2 d , 2 d ) where d is the maximum size of the given point cloud along the x, y, or z direction. All point cloud points may be included in this defined cube.
  • a cube may be divided into eight sub-cubes, which creates the octree structure allowing one parent to have 8 children, and an octree structure may then be built by recursively subdividing sub-cubes, as shown in FIG. 5A. As shown in FIG.
  • an 8-bit code may be generated by associating a 1 -bit value with each sub-cube to indicate whether it contains points (i.e., full and has value 1) or not (i.e., empty and has value 0). Only full sub-cubes with a size greater than 1 (i.e., non-voxels) may be further subdivided.
  • the geometry information (x, y, z) for one position may be represented by this defined octree structure. Since points may be duplicated, multiple points may be mapped to the same sub-cube of size 1 (i.e., the same voxel). In order to handle such a situation, the number of points for each sub-cube of dimension 1 is also arithmetically encoded.
  • a current cube associated with a current node may be surrounded by six cubes of the same depth sharing a face with it. Depending on the location of the current cube, one cube may have up to six same-sized cubes to share one face, as shown in FIG. 6. In addition, the current cube may also have some neighboring cubes which share lines or points with the current cube.
  • color transform module 310 may be configured to convert red/green/blue (RGB) color attributes of each point to YCbCr color attributes if the attributes include color.
  • Attribute transform module 312 may be configured to perform attribute transformation based on the results from geometry analysis module 306 (e.g., using the octree scheme), including but not limited to, the region adaptive hierarchical transform (RAHT), interpolation-based hierarchical nearest-neighbor prediction (predicting transform), and interpolation-based hierarchical nearest-neighbor prediction with an update/lifting step (lifting transform).
  • RAHT region adaptive hierarchical transform
  • predicting transform interpolation-based hierarchical nearest-neighbor prediction
  • lifting transform interpolation-based hierarchical nearest-neighbor prediction with an update/lifting step
  • quantization module 314 may be configured to quantize the transformed coefficients of attributes from attribute transform module 312 to generate quantization levels of the attributes associated with each point to reduce the dynamic range.
  • Arithmetic encoding module 316 may be configured to arithmetically encode the resulting transformed coefficients of attributes associated with each point or the quantization levels thereof into the attribute bitstream.
  • a prediction may be formed from neighboring coded attributes, for example, in predicting transform and lifting transform by attribute transform module 312. Then, the difference between the current attribute and the prediction may be coded.
  • a Morton code or Hilbert code may be used to convert a point cloud in a 3D space (e.g., a point cloud cube) into a ID array, as shown in FIG. 7.
  • Each position in the cube will have a corresponding Morton or Hilbert code, but some positions may not have any corresponding point cloud attribute. In other words, some positions may be empty.
  • the attribute coding may follow the predefined Morton order or Hilbert order.
  • a predictor may be generated from the previous coded points in the ID array following the Morton order or Hilbert order.
  • the attribute difference between the current point and its prediction points may be encoded into the bitstream.
  • the point cloud in the 3D space e.g., a point cloud cube
  • the attribute coding may follow the native input order of the point cloud, instead of the predefined Morton order or Hilbert order.
  • the order followed by the points in the ID array may be either a Morton order, a Hilbert order, or the native input order.
  • some predefined number has been specified to limit the number of neighboring points that can be used in generating the prediction. For example, only at most AT points among previous at most TV consecutively coded points may be used for coding the current attribute. That is, a set of n candidate points may be used as the candidates to select a set of m prediction points (m ⁇ ri) for predicting the current point in attribute coding.
  • the number n of candidate points in the set is equal to or smaller than the maximum number N of candidate points (n ⁇ N), and the number m of prediction points in the set is equal to or smaller than the maximum number M of prediction points (m ⁇ M). As shown in FIG.
  • the maximum number M of prediction points is set to be 3, and a set of 3 prediction points (P, bolded and underlined) may be selected from the set of n candidate points, for example, based on the positions associated with the n candidate points and the current points (e.g., the distances between each candidate point and the current point).
  • Aland N are set as a fixed number of 3 and 128, respectively. If more than 128 points before the current point are already coded, only 3 out of the previous 128 neighboring points could be used to form attribute predictors (prediction points) according to a predefined order. If there are less than 128 coded points before the current point, all coded points before the current point will be used as candidate points to find the prediction points. Among the previous up to 128 candidate points, up to 3 prediction points are selected, which have the closest “distance” (e.g., Euclidean distance) between these candidate points and the current point.
  • distance e.g., Euclidean distance
  • m prediction points e.g., the 3 closest candidate points
  • a weighted attribute average from these m points may be formed as the predictor to code the attribute of the current point, according to some embodiments.
  • the prediction points may be selected from the candidate points that are in the cubes sharing the same face/line/point with the current point cloud.
  • the maximum number M of candidate points is introduced to limit the size of memory and amount of computation resources that may be occupied by the candidate points storage and searching.
  • FIG. 4 illustrates a detailed block diagram of exemplary decoder 201 in decoding system 200 in FIG. 2, according to some embodiments of the present disclosure.
  • decoder 201 may include an arithmetic decoding module 402, a geometry synthesis module 404, a reconstruction module 406, and a coordinate inverse transform module 408, together configured to decode positions associated with points of a point cloud from the geometry bitstream (i.e., geometry decoding).
  • arithmetic decoding module 402 a geometry synthesis module 404
  • reconstruction module 406 a coordinate inverse transform module 408
  • FIG. 4 illustrates a detailed block diagram of exemplary decoder 201 in decoding system 200 in FIG. 2, according to some embodiments of the present disclosure.
  • decoder 201 may include an arithmetic decoding module 402, a geometry synthesis module 404, a reconstruction module 406, and a coordinate inverse transform module 408, together configured to decode positions associated with points of a point cloud from the geometry bitstream (i.e.
  • decoder 201 may also include an arithmetic decoding module 410, a dequantization module 412, an attribute inverse transform module 414, and a color inverse transform module 416, together configured to decode attributes associated with points of a point cloud from the attribute bitstream (i.e., attribute decoding).
  • attribute decoding i.e., attribute decoding
  • each of the elements shown in FIG. 4 is independently shown to represent characteristic functions different from each other in a point cloud decoder, and it does not mean that each component is formed by the configuration unit of separate hardware or single software. That is, each element is included to be listed as an element for convenience of explanation, and at least two of the elements may be combined to form a single element, or one element may be divided into a plurality of elements to perform a function.
  • a point cloud bitstream (e.g., a geometry bitstream or an attribute bitstream) is inputted from a point cloud encoder (e.g., encoder 101)
  • the input bitstream may be decoded by decoder 201 in a procedure opposite to that of the point cloud encoder.
  • Arithmetic decoding modules 402 and 410 may be configured to decode the geometry bitstream and attribute bitstream, respectively, to obtain various information encoded into the bitstream.
  • arithmetic decoding module 410 may decode the attribute bitstream to obtain the attribute information associated with each point, such as the quantization levels or the coefficients of the attributes associated with each point.
  • dequantization module 412 may be configured to dequantize the quantization levels of attributes associated with each point to obtain the coefficients of attributes associated with each point.
  • arithmetic decoding module 410 may parse the bitstream to obtain various other information (e.g., in the form of syntax elements), such as the syntax element indicative of the order followed by the points in the ID array for attribute coding.
  • Inverse attribute transform module 414 may be configured to perform inverse attribute transformation, such as inverse RAHT, inverse predicting transform, or inverse lifting transform, to transform the data from the transform domain (e.g., coefficients) back to the attribute domain (e.g., luma and/or chroma information for color attributes).
  • color inverse transform module 416 may be configured to convert YCbCr color attributes to RGB color attributes.
  • geometry synthesis module 404, reconstruction module 406, and coordinate inverse transform module 408 of decoder 201 may be configured to perform the inverse operations of geometry analysis module 306, voxelization module 304, and coordinate transform module 302 of encoder 101, respectively.
  • encoder 101 and decoder 201 may be configured to adopt various novel schemes of syntax element representation and organization, as disclosed herein, to improve the flexibility and generality of point cloud coding.
  • FIG. 8 illustrates an exemplary hierarchy of parameter sets of G-PCC, according to some embodiments of the present disclosure.
  • a point cloud may be represented in a ID array including a set of points each associated with a property, such as geometry and attributes (e.g., color and reflectance).
  • the set of points associated with different time stamps may be viewed as a “sequence.”
  • the syntax elements e.g., parameters, flags, etc.
  • the syntax elements used for coding the headers of the point cloud may be organized in a hierarchy having various levels.
  • the hierarchy may include a sequence header, for example, a header of a sequence parameter set (SPS) associated with the sequence representing the point cloud.
  • SPS sequence parameter set
  • the hierarchy may include one or more property headers belonging to the sequence header, such as a geometry parameter header and one or more attribute parameter headers.
  • geometry parameter headers and attribute parameter headers can also be at the same level as SPS. For example, as shown in FIG.
  • the next level under the SPS may include one header of a geometry parameter set belonging to the SPS and associated with the geometry, as well as one or more headers (1 to ri) of attribute parameter sets belonging to the SPS and each associate with a respective attribute (e.g., color or reflectance).
  • the hierarchy may include one or more slice property headers belonging to each property header, such as slice geometry parameter headers and slice attribute parameter headers. That is, the sequence representing the point cloud may be divided into one or more slices each including a slice of points, and each slice of points may be associated with one or more slice property headers. For example, as shown in FIG.
  • the next level under the geometry parameter set may include one or more headers of slice geometry parameter sets each belonging to the geometry parameter set and associated with a respective slice of points.
  • the next level under each attribute parameter set may include one or more headers of slice attribute parameter sets each belonging to the respective attribute parameter set and associated with a respective slice of points. It is understood that in some examples, the hierarchy may include fewer or more levels, such as picture/frame level(s).
  • decoder 201 is configured to parse the attribute bitstream to obtain a first syntax element indicative of the presence of at least one attribute associated with the set of points (sequence). In some embodiments, decoder 201 is also configured to determine whether the first syntax element indicates that at least one attribute associated with the set of points (sequence) is present. Correspondingly, in some embodiments, encoder 101 is configured to determine the first syntax element indicating whether at least one attribute associated with the set of points is present. That is, the first syntax element may be a sequence-level attribute flag (e.g., attribute_present_flag) coded in a sequence header for enabling/disabling the coding of any attribute associated with the sequence.
  • attribute_present_flag coded in a sequence header for enabling/disabling the coding of any attribute associated with the sequence.
  • attribute present flag equal to 1 may specify that the attribute(s) are present in the bitstream, while attribute present flag equal to 0 may specify that the attribute(s) are not present in the bitstream.
  • a syntax element specifying the supported maximum number of attributes can also be introduced, in conjunction with the various attribute-presence syntax elements, to allow the flexibility of supporting various numbers of attributes in point cloud coding.
  • decoder 201 is further configured to, in response to the first syntax element indicating that at least one attribute associated with the set of points is present, parse the bitstream to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points.
  • encoder 101 is also configured to, in response to the first syntax element indicating that at least one attribute associated with the set of points is present, determine the second syntax element indicative of the maximum number of attributes associated with the set of points. That is, the second syntax element may be a sequencelevel parameter coded in the sequence header for specifying the maximum number of attributes supported in coding the sequence.
  • the second syntax element may be coded in 4 bits, and the second syntax element may be represented as maxNumAttributesMinusl with a range of values between 0 and 15, inclusive. That is, the value of the second syntax element (maxNumAttributesMinusl) may be between 0 and 15, inclusive, and the value of the maximum number of attributes may be between 1 and 16, inclusive. Thus, the value of maxNumAttributesMinusl plus 1 may specify the maximum number of attributes. In other words, the value of the second syntax element plus 1 may be equal to the value of the maximum number of attributes.
  • the default value of the maximum number of attributes may be 0, and the default value of the second syntax element (maxNumAttributesMinusl) may be -1, when the value is not present.
  • the example specification below illustrates the two sequence-level syntax elements attribute_present_flag and maxNumAttributesMinusl in the sequence header. As shown in the example specification, attribute present flag may be coded in 1 bit with a value of either 0 or 1. If the value of attribute_present_flag is 1, then maxNumAttributesMinusl may be coded in 4 bits with a range of values between 0 and 15, inclusive.
  • maxNumAttributesMinusl may not be coded if the value of attribute present flag is 0, meaning that there is not any attribute coded in the sequence.
  • any other suitable sequence-level syntax elements may be conditionally parsed, like maxNumAttributesMinusl, when attribute present flag is 1, such as attribute_adapt_pred and attribute qp in the example specification below.
  • any other suitable sequence-level syntax elements may be coded in the sequence header, like attribute_present_flag, for enabling/disabling any other suitable properties or functions associated with the sequence, such as bounding box present flag in the example specification below, which is indicative of the presence of a bounding box associated with the set of points (sequence).
  • a cubical axis-aligned bounding box B may be defined by the two extreme points (0,0,0) and (2 d , 2 d , 2 d ) where 2 d is the maximum size of the given point cloud along the x, y, or z direction. All point cloud points may be included in this defined cube.
  • a bounding box offset may always be considered a positive integer number.
  • bounding box offset along x, y, and z directions may be represented by syntax elements of bounding box offset x upper, bounding_box_offset_y upper, bounding box offset z upper, bounding box offset x lower, bounding_box_offset_y lower, and bounding box offset z lower, which are all specified as 16-bit unsigned integer.
  • a bounding box offset can be positive or negative, and a sequence-level syntax element bounding box present flag, which is indicative of the presence of a bounding box associated with a set of points (sequence), is introduced.
  • bounding box present flag equal to 1 may specify that the bounding box is present in the bitstream
  • bounding_box_present_flag 0 may specify that the bounding box is not present in the bitstream.
  • syntax elements representing bounding box offset in either positive or negative values may be further conditionally parsed.
  • bounding box offset x sign equal to 0 may specify that the sign of offset along the x direction is positive, while bounding box offset x sign equal to 1 may specify that the sign of offset along x is negative; when not present, the value of the bounding box offset x sign may be inferred to be equal to 0.
  • bounding_box_offset_y_sign equal to 0 may specify that the sign of offset along the y direction is positive, while bounding_box_offset_y_sign equal to 1 may specify that the sign of offset along the direction is negative; when not present, the value of the bounding_box_offset_y_sign may be inferred to be equal to 0.
  • bounding box offset z sign equal to 0 may specify that the sign of offset along the z direction is positive, while bounding box offset z sign equal to 1 may specify that the sign of offset along z direction is negative; when not present, the value of the bounding box offset z sign is inferred to be equal to 0.
  • bounding box offset x upper, bounding_box_offset_y upper, and bounding box offset z upper may be 15-bit fields, while bounding box offset x lower, bounding_box_offset_y lower bounding box offset z lower may be 16-bits fields.
  • Bounding_box_offset_y (1 - 2 * sign) * ((bounding_box_offset_y upper « 16) + bounding_box_offset_y lower) (3);
  • Bounding box offset z (1 - 2 * sign) * ((bounding box offset z upper « 16) + bounding box offset z lower) (4), where an arithmetic shift operation (X « 16) is used for calculating the multiplication (X * 65536).
  • an alternative example of simplified signaling without parameter derivation is used, and the bounding box size and offset may be signaled directly in the bitstream using ue(v) for bounding box offset, and se(v) for bounding box size coding.
  • decoder 201 is further configured to parse a respective third syntax element indicative of the presence of the corresponding attribute.
  • decoder 201 is further configured to determine whether the respective third syntax element indicates that the corresponding attribute is present.
  • encoder 101 is further configured to determine the respective third syntax element indicating whether the corresponding attribute is present.
  • the third syntax element may be an attribute-level attribute flag (e.g., attributePresentFlag [attrldx]) coded in an attribute header for enabling/disabling the coding of a corresponding attribute.
  • attributePresentFlag [attrldx] coded in an attribute header for enabling/disabling the coding of a corresponding attribute.
  • an attribute index (attrldx) may be used to indicate each attribute within the maximum number of attributes.
  • attributePresentFlag [attrldx] equal to 1 may specify that the attrldx -th attribute specified in an attribute mapping table is present in the attribute header
  • attributePresentFlag [attrldx] equal to 0 may specify that the attrldx -th attribute specified in the attribute mapping table is not present in the attribute header.
  • Attrldx may be an integer between 0 and 15, inclusive.
  • color and reflectance are assigned with attribute indices of 0 and 1, respectively, when parsing the bitstream to obtain the third syntax elements.
  • TABLE I below shows an example of an attribute mapping table. It is understood that the range of attribute indices (attrldx) may be the same as the value of the second syntax element maxNumAttributesMinusl plus 1.
  • Attribute-level syntax elements can be used to group the attribute parameters related to the same attribute(s), e.g., a set of fourth syntax elements associated with the corresponding at least one attribute, for conditional parsing. That is, syntax elements related to the same attribute(s) (e.g., color and/or reflectance) can be conditionally parsed if those attributes are enabled.
  • decoder 201 is further configured to, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, parse the bitstream to obtain a set of fourth syntax elements associated with the corresponding at least one attribute.
  • encoder 101 is further configured to, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, determine the set of fourth syntax elements associated with the corresponding at least one attribute.
  • the fourth syntax element may be either a specific fourth syntax element that is associated with only one attribute, or a common fourth syntax element that is associated with multiple attributes.
  • the specific fourth syntax element may be conditionally parsed as long as its associated attribute is enabled, while the common fourth syntax element may be conditionally parsed only if each of its multiple associated attributes is enabled.
  • the specific fourth syntax elements and the common fourth syntax elements are grouped separately under the different attribute enabling/disabling conditions.
  • the common fourth syntax elements may be conditionally parsed prior to the specific fourth syntax elements.
  • the fourth syntax element includes a transform-related syntax element. That is, the transformrelated syntax elements could be conditionally parsed if one or more attributes are enabled, e.g., color and/or reflectance.
  • transform-related syntax elements are conditionally parsed first among all fourth syntax elements.
  • the third and fourth syntax elements are attribute-level syntax elements and thus, may be coded in the attribute header.
  • the example specification below illustrates the attribute-level syntax element attributePresentFlag [ attrldx ] and the grouping and conditionally parsing of various sets of attribute-level syntax elements in the attribute header.
  • attribute-level syntax element attributePresentFlag [ attrldx ] For each attribute (attrldx) within the maximum number of attributes (maxNumAttributesMinusl + 1), whether the corresponding attribute-level flag attributePresentFlag [ attrldx ] is enabled is checked to determine whether the respective attribute is present in the sequence.
  • attribute-level syntax elements may be introduced in the attribute header as well, such as inputBitDepthMinus8[ attrldx ] and outputBitDepthMinus8[ attrldx ], which may be conditionally coded/parsed when the corresponding attributePresentFlag [ attrldx ] is enabled.
  • inputBitDepthMinus8[ attrldx ] plus 8 may specify the input bit depth of the samples for the attrldx -th attribute in the coding.
  • the value of inputBitDepthMinus8[ attrldx ] may be in the range of 0 to 8, inclusive; when not present, the value of inputBitDepthMinus8[ attrldx ] may be inferred to be equal to 0.
  • outputBitDepthMinus8[ attrldx ] plus 8 may specify the output bit depth of the samples for the attrldx-th attribute in the coding.
  • the value of outputBitDepthMinus8[ attrldx ] may be in the range of 0 to 8, inclusive; when not present, the value of outputBitDepthMinus8[ attrldx ] may be inferred to be equal to 0.
  • decoder 201 is further configured to decode the corresponding at least one attribute based, at least in part, on the set of fourth syntax elements.
  • encoder 101 is further configured to encode the corresponding at least one attribute based, at least in part, on the set of fourth syntax elements.
  • FIG. 9 illustrates a flow chart of an exemplary method 900 of point cloud encoding, according to some embodiments of the present disclosure.
  • Method 900 may be performed by encoder 101 of encoding system 100 or any other suitable point cloud encoding systems.
  • Method 900 may include operations 902, 904, 906, 908, 910, and 912 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order than shown in FIG. 9.
  • a point cloud is represented in a ID array.
  • the ID array includes a set of points (e.g., a sequence) following an order and each associated with one or more attributes.
  • the order can include a Morton order, a Hilbert order, or a native input order.
  • the attributes can include at least one of color or reflectance. In some embodiments, a Morton code or a Hilbert code
  • encoder 101 may be configured to represent the point cloud in a ID array including a set of points.
  • a first syntax element indicating whether at least one attribute associated with the set of points is present is determined.
  • the first syntax element is coded in a sequence header.
  • at least one attribute associated with the set of points includes at least one of color or reflectance.
  • color and reflectance may be assigned with attribute indices of 0 and 1, respectively.
  • encoder 101 may be configured to determine a first syntax element indicating whether at least one attribute associated with the set of points is present.
  • a second syntax element indicative of a maximum number of attributes associated with the set of points is determined.
  • the second syntax element is coded in the sequence header.
  • a value of the second syntax element plus 1 is equal to a value of the maximum number of attributes.
  • the value of the second syntax element is between 0 and 15, inclusive, and the default value of the second syntax element is -1.
  • encoder 101 may be configured to, in response to the first syntax element indicating that at least one attribute associated with the set of points is present, determine a second syntax element indicative of a maximum number of attributes associated with the set of points.
  • a respective third syntax element indicating whether the corresponding attribute is present is determined.
  • the third syntax element is coded in an attribute header.
  • encoder 101 may be configured to determine, for each attribute of the maximum number of the attributes, a respective third syntax element indicating whether the corresponding attribute is present.
  • a set of fourth syntax elements associated with the corresponding at least one attribute is determined.
  • the fourth syntax element is coded in the attribute header.
  • a common fourth syntax element associated with each of the at least one attribute is determined, and a specific fourth syntax element associated with only one of the at least one attribute is determined.
  • the fourth syntax element includes a transformrelated syntax element.
  • the transformed-related syntax element may be determined prior to the common fourth syntax element, and the common fourth syntax element may be determined prior to the specific fourth syntax element.
  • encoder 101 may be configured to, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, determine a set of fourth syntax elements associated with the corresponding at least one attribute.
  • the corresponding at least one attribute is encoded based, at least in part, on the set of fourth syntax elements.
  • encoder 101 may be configured to encode the corresponding at least one attribute into a bitstream based, at least in part, on the set of fourth syntax elements.
  • FIG. 10 illustrates a flow chart of an exemplary method 1000 of point cloud decoding, according to some embodiments of the present disclosure.
  • Method 1000 may be performed by decoder 201 of decoding system 200 or any other suitable point cloud decoding systems.
  • Method 1000 may include operations 1002, 1004, 1006, 1008, 1010, 1012, and 1014 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order other than shown in FIG. 10.
  • a point cloud is represented in a ID array including a set of points each associated with one or more attributes and a position.
  • the attributes can include at least one of color or reflectance.
  • the set of points follows an order in the ID array.
  • Morton code or Hilbert code (or any other suitable space-filling curves from 3D to ID) is used to convert a point cloud in a 3D space (e.g., a point cloud cube) into the ID array, such that the set of the points in the ID array follows the order corresponding to the code.
  • the point cloud is converted from the 3D space into the ID array without any code, i.e., in its native input order, such that the set of points in the ID array follows the native input order.
  • a bitstream is parsed to obtain a first syntax element indicative of presence of at least one attribute associated with the set of points.
  • the first syntax element is coded in a sequence header.
  • at least one attribute associated with the set of points includes at least one of color or reflectance.
  • color and reflectance are assigned with attribute indices of 0 and 1, respectively, when parsing the bitstream to obtain the third syntax elements.
  • decoder 201 may be configured to parse the attribute bitstream to obtain a first syntax element indicative of the presence of at least one attribute associated with the set of points.
  • decoder 201 may be configured to determine whether the first syntax element indicates that at least one attribute associated with the set of points is present.
  • the bitstream is parsed to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points.
  • the second syntax element is coded in the sequence header.
  • a value of the second syntax element plus 1 is equal to a value of the maximum number of attributes.
  • the value of the second syntax element is between 0 and 15, inclusive, and the default value of the second syntax element is -1.
  • decoder 201 may be configured to, in response to the first syntax element indicating that at least one attribute associated with the set of points is present, parse the bitstream to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points.
  • the bitstream is parsed to obtain a respective third syntax element indicative of the presence of the corresponding attribute.
  • the third syntax element is coded in an attribute header.
  • decoder 201 may be configured to parse the bitstream to obtain, for each attribute of the maximum number of attributes, a respective third syntax element indicative of the presence of the corresponding attribute.
  • decoder 201 may be configured to parse the bitstream to determine, for each third syntax element, whether the respective third syntax element indicates that the corresponding attribute is present.
  • the bitstream is parsed to obtain a set of fourth syntax elements associated with the corresponding at least one attribute.
  • the fourth syntax element is coded in the attribute header.
  • to parse the bitstream to obtain the set of fourth syntax elements a common fourth syntax element associated with each of at least one attribute is parsed, and a specific fourth syntax element associated with only one of at least one attribute is parsed.
  • the fourth syntax element includes a transform-related syntax element.
  • the transformed-related syntax element may be parsed prior to the common fourth syntax element, and the common fourth syntax element may be parsed prior to the specific fourth syntax element.
  • decoder 201 may be configured to, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, parse the bitstream to obtain a set of fourth syntax elements associated with the corresponding at least one attribute.
  • the corresponding at least one attribute is decoded based, at least in part, on the set of fourth syntax elements.
  • decoder 201 may be configured to decode the corresponding at least one attribute based, at least in part, on the set of fourth syntax elements.
  • an SPS-ID can be introduced to support multiple sequences and SPSs.
  • decoder 201 is configured to parse the bitstream to obtain, from the SPS header associated with the set of points (sequence), an SPS ID specifying the SPS.
  • encoder 101 is configured to determine, in the SPS header, the SPS ID specifying the SPS. That is, each sequence and corresponding SPS may be assigned a unique ID to specify the sequence/SPS and distinguish the sequence/SPS from others.
  • an SPS ID may provide an ID for the SPS for reference by other syntax elements.
  • the value of sequence param eter set id may be in the range of 0 to 31, inclusive; when not present, the default value of sequence parameter set id may be 0.
  • the SPS header may include sequence-level parameters, i.e., parameters of each point of the set of points (sequence).
  • sequence param eter set id may specify the SPS.
  • a property parameter set-ID (e.g., geometry parameter set-ID and attribute parameter set-ID) is introduced to allow different properties to have different parameter sets, as well as enable the linkage of each property parameter set to its corresponding SPS.
  • decoder 201 may also be configured to parse the bitstream to obtain, from a property parameter set header belonging to the SPS and associated with the property, a first property ID specifying the property parameter set, and a second property ID specifying the SPS to which the property parameter set belongs.
  • encoder 101 may also be configured to determine, in the property parameter set header, the first property ID specifying the property parameter set, and the second property ID specifying the SPS to which the property parameter set belongs. That is, in order to specify the property/ property parameter set and distinguish the property/ property parameter set from others, as well as locate the property/ property parameter set in the hierarchy, each property parameter set may be assigned two property IDs, one specifying the property parameter set itself while the other one specifying its upper level, i.e., the SPS to which the property parameter set belongs. The property IDs thus can allow different properties to have different property information (e.g., parameters) and also correspond to different SPSs.
  • the property parameter set header may include property-level parameters, i.e., parameters of the property of each point of the set of points (sequence).
  • the property is a geometry, such that the property parameter set header is a geometry parameter set header, and the property IDs are geometry IDs.
  • a first geometry ID may indicate the geometry parameter set for reference by other syntax elements
  • a second geometry ID may specify the value of sequence param eter set id for the SPS.
  • the value of geometry _sequencej>arameter_set_id may be in the range of 0 to 31, inclusive; when not present, the default value of geometry sequence joarameter set id may be 0.
  • the values of geometry _sequencej>arameter_set_id may be the same in all geometry parameter set headers that are referred to by the same sequence/SPS.
  • geometry param eter set id may specify the geometry parameter set
  • geometry _sequencej>arameter_set_id may specify the SPS to which the geometry parameter set belongs.
  • the property is an attribute (e.g., color or reflectance), such that the property parameter set header is an attribute parameter set header, and the property IDs are attribute IDs.
  • a first attribute ID may indicate the attribute parameter set for reference by other syntax elements
  • a second attribute ID may specify the value of attribute param eter set id for the SPS.
  • the value of attribute sequence parameter set id may be in the range of 0 to 31, inclusive; when not present, the default value of geometry sequence parameter set id may be 0.
  • the values of geometry _sequencej>arameter_set_id may be the same in all attribute parameter set headers that are referred to by the same sequence/SPS.
  • attribute parameter set-IDs attribute param eter set id and attribute sequence parameter set id in the attribute header (e.g., attribute parameter set header having attribute-level parameters, such as attributePresentFlag [ attrldx ], inputBitDepthMinus8[attrIdx], and outputBitDepthMinus8[attrIdx]).
  • attribute parameter set id may specify the attribute parameter set
  • attribute sequence parameter set id may specify the SPS to which the attribute parameter set belongs.
  • a slice property parameter set-ID (e.g., slice geometry parameter set-ID and slice attribute parameter set-ID) may be introduced to allow different slices of the same sequence to have different property parameter sets, as well as enable the linkage of each slice property parameter set to its corresponding property parameter set and SPS.
  • decoder 201 may be further configured to parse the bitstream to obtain, from a slice property parameter set header belonging to the property parameter set and associated with a slice of points of the set of points, at least a first slice property ID specifying the slice property parameter set, and a second slice property ID specifying the property parameter set to which the slice property parameter set belongs.
  • encoder 101 may be further configured to determine, in the slice property parameter set header, at least the first slice property ID specifying the slice property parameter set, and the second slice property ID specifying the property parameter set to which the slice property parameter set belongs. That is, in order to specify the slice property/slice property parameter set and distinguish the slice property/ slice property parameter set from others, as well as locate the slice property/slice property parameter set in the hierarchy, each slice property parameter set may be assigned with at least two property IDs, one specifying the slice property parameter set itself while the other one specifying its immediate upper level, i.e., the property parameter set to which the slice property parameter set belongs.
  • the slice property IDs further include a third slice property ID specifying the SPS to which the slice property parameter set belongs. That is, each slice property parameter set may be further assigned with another property ID specifying the top level, i.e., the SPS to which the slice property parameter set and the property parameter set belong.
  • the slice property IDs thus can allow different properties to have different property information (e.g., parameters) and also correspond to different SPSs and/or property parameter sets.
  • the slice property parameter set header may include slice property-level parameters, i.e., parameters of the property of each point of the slice of points (slice).
  • the property is a geometry, such that the slice property parameter set header is a slice geometry parameter set header, and the slice property IDs are slice geometry IDs.
  • a first slice geometry ID (gsh slice geometry parameter set id) may indicate the slice geometry parameter set for reference by other syntax elements
  • a second slice geometry ID (gsh_geometry_parameter_set_id) may specify the value of geometry param eter set id for the geometry parameter set
  • a third slice geometry ID (gsh geometry sequence param eter set id) may specify the value of sequence param eter set id for the SPS.
  • one of the second and third slice geometry IDs e.g., gsh_geometry_parameter_set_id or gsh geom etry sequence param eter set id may be omitted from coding/parsing.
  • the values of gsh_geometry_sequence_parameter_set_id may be the same in all slice geometry parameter set headers that are referred to by the same sequence/SPS, and the values of gsh_geometry param eter set id may be the same in all slice geometry parameter set headers that are referred to by the same geometry parameter set.
  • slice geometry parameter set-IDs gsh_slice_geometry_parameter_set_id, gsh geometry parameter set id, and gsh geometry sequence param eter set id in the slice geometry header e.g., geometry slice header having slice geometry -level parameters, such as gsh context mode and gsh bounding boxjoresent flag.
  • gsh_slice_geometry_parameter_set_id may specify the slice geometry parameter set
  • gsh_geometry_parameter_set_id may specify the geometry parameter set to which the slice geometry parameter set belongs
  • gsh geometry sequence joarameter set id may specify the
  • one of the second and third slice geometry IDs e.g., gsh_geometry_parameter_set_id or gsh_geometry_sequence_parameter_set_id may be omitted from coding/parsing.
  • the property is an attribute (e.g., color or reflectance), such that the slice property parameter set header is a slice attribute parameter set header, and the slice property IDs are slice attribute IDs.
  • a first slice attribute ID (ash_slice_attribute_parameter_set_id) may indicate the slice attribute parameter set for reference by other syntax elements
  • a second slice attribute ID (ash attribute param eter set id) may specify the value of attribute param eter set id for the attribute parameter set
  • a third slice attribute ID (ash_attribute_sequence_parameter_set_id) may specify the value of sequence parameter set id for the SPS.
  • one of the second and third slice geometry IDs e.g., ash attribute parameter set id or ash_attribute_sequence_parameter_set_id may be omitted from coding/parsing.
  • the values of ash attribute sequence param eter set id may be the same in all slice attribute parameter set headers that are referred to by the same sequence/SPS, and the values of ash attribute param eter set id may be the same in all slice attribute parameter set headers that are referred to by the same attribute parameter set.
  • ash_slice_attribute_parameter_set_id may specify the slice attribute parameter set
  • ash attribute parameter set id may specify the attribute parameter set to which the slice attribute parameter set belongs
  • ash_attribute_sequence_parameter_set_id may specify the SPS to which the attribute parameter set/slice attribute parameter set belongs.
  • one of the second and third slice attribute IDs e.g., ash attribute parameter set id or ash_attribute_sequence_parameter_set_id may be omitted from coding/parsing.
  • decoder 201 is further configured to decode the property of the slice of points based, at least in part, on the SPS ID, the first and second property IDs, and the first and second slice property IDs.
  • encoder 101 is further configured to encode the property of the slice of points based, at least in part, on the SPS ID, the first and second property IDs, and the first and second slice property IDs.
  • FIG. 11 illustrates a flow chart of an exemplary method 1100 of point cloud encoding, according to some embodiments of the present disclosure.
  • Method 1100 may be performed by encoder 101 of encoding system 100 or any other suitable point cloud encoding systems.
  • Method 1100 may include operations 1102, 1104, 1106, 1108, and 1110 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order than shown in FIG. 11.
  • a point cloud is represented in a ID array.
  • the ID array includes a set of points (e.g., a sequence) following an order and each associated with a property.
  • the order can include a Morton order, a Hilbert order, or a native input order.
  • the property can include at least one of a geometry (e.g., a position) or an attribute.
  • the attributes can include at least one of color or reflectance.
  • each point of the set of points is further associated with a position.
  • a Morton code or a Hilbert code (or any other suitable space-filling curves from 3D to ID) is used to convert a point cloud in a 3D space (e.g., a point cloud cube) into the ID array, such that the set of the points in the ID array follows the order corresponding to the code.
  • the point cloud is converted from the 3D space into the ID array without any code, i.e., in its native input order, such that the set of points in the ID array follows the native input order.
  • encoder 101 may be configured to represent the point cloud in a ID array including a set of points each associated with a property.
  • an SPS ID specifying the SPS is determined.
  • the header of the SPS includes a parameter for each point of the set of points.
  • the range of the SPS ID is between 0 and 31, inclusive, and a default value of the SPS ID is 0.
  • encoder 101 may be configured to determine, in a header of an SPS associated with the set of points, an SPS ID specifying the SPS.
  • a first property ID specifying the property parameter set is determined, and a second property ID specifying the SPS to which the property parameter set belongs is determined.
  • the header of the property parameter set includes a parameter of the property of each point of the set of points.
  • a range of each of the first and second property IDs is between 0 and 31, inclusive.
  • encoder 101 may be configured to determine, in a header of a property parameter set belonging to the SPS and associated with the property, a first property ID specifying the property parameter set, and a second property ID specifying the SPS to which the property parameter set belongs.
  • a first slice property ID specifying the slice property parameter set, and a second slice property ID specifying the property parameter set to which the slice property parameter set belongs are determined.
  • the header of the slice property parameter set includes a parameter of the property of each point of the slice of points.
  • a third slice property ID specifying the SPS to which the slice property parameter set belongs is determined as well.
  • encoder 101 may be configured to determine in a header of a slice property parameter set belonging to the property parameter set and associated with a slice of points of the set of points, a first slice property ID specifying the slice property parameter set, a second slice property ID specifying the property parameter set to which the slice property parameter set belongs, and a third slice property ID specifying the SPS to which the slice property parameter set belongs.
  • the property of the slice of points is encoded based, at least in part, on the SPS ID, the first and second property IDs, and the first and second slice property IDs.
  • encoder 101 may be configured to encode the property of the slice of points based, at least in part, on the SPS ID, the first and second property IDs, and the first and second slice property IDs.
  • FIG. 12 illustrates a flow chart of an exemplary method 1200 of point cloud decoding, according to some embodiments of the present disclosure.
  • Method 1200 may be performed by decoder 201 of decoding system 200 or any other suitable point cloud decoding systems.
  • Method 1200 may include operations 1202, 1204, 1206, and 1208 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order other than shown in FIG. 12.
  • a point cloud is represented in a ID array including a set of points each associated with a property, e.g., one or more attributes and a geometry (e.g., position).
  • the attributes can include at least one of color or reflectance.
  • the set of points follows an order in the ID array.
  • Morton code or Hilbert code (or any other suitable space-filling curves from 3D to ID) is used to convert a point cloud in a 3D space (e.g., a point cloud cube) into the ID array, such that the set of the points in the ID array follows the order corresponding to the code.
  • the point cloud is converted from the 3D space into the ID array without any code, i.e., in its native input order, such that the set of points in the ID array follows the native input order.
  • a bitstream is parsed to obtain, from a header of an SPS associated with the set of points, an SPS ID specifying the SPS.
  • the header of the SPS includes a parameter of each point of the set of point.
  • a range of the SPS ID is between 0 and 31, inclusive, and a default value of the SPS ID is 0.
  • decoder 201 may be configured to parse the attribute bitstream to obtain, from a header of an SPS associated with the set of points, an SPS ID specifying the SPS.
  • the bitstream is parsed to obtain, from a header of a property parameter set belonging to the SPS and associated with the property, a first property ID specifying the property parameter set, and a second property ID specifying the SPS to which the property parameter set belongs.
  • the header of the property parameter set includes a parameter of the property of each point of the set of points.
  • a range of each of the first and second property IDs is between 0 and 31, inclusive.
  • decoder 201 may be configured to parse the bitstream to obtain, from a header of a property parameter set belonging to the SPS and associated with the property, a first property ID specifying the property parameter set, and a second property ID specifying the SPS to which the property parameter set belongs.
  • the bitstream is parsed to obtain, from a header of a slice property parameter set belonging to the property parameter set and associated with a slice of points of the set of points, at least a first slice property ID specifying the slice property parameter set, and a second slice property ID specifying the property parameter set to which the slice property parameter set belongs.
  • the header of the slice property parameter set includes a parameter of the property of each point of the slice of points.
  • the bitstream is parsed to obtain, from the header of the slice property parameter set, a third slice property ID specifying the SPS to which the slice property parameter set belongs as well.
  • decoder 201 may be configured to parse the bitstream to obtain, from a header of a slice property parameter set belonging to the property parameter set and associated with a slice of points of the set of points, at least a first slice property ID specifying the slice property parameter set, a second slice property ID specifying the property parameter set to which the slice property parameter set belongs, and a third slice property ID specifying the SPS to which the slice property parameter set belongs.
  • the property of the slice of points is decoded based, at least in part, on the SPS ID, the first and second property IDs, and the first and second slice property IDs.
  • decoder 201 may be configured to decode the property of the slice of points based, at least in part, on the SPS ID, the first and second property IDs, and the first and second slice property IDs.
  • the functions described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as instructions on a non-transitory computer-readable medium.
  • Computer-readable media includes computer storage media. Storage media may be any available media that can be accessed by a processor, such as processor 102 in FIGs. 1 and 2.
  • such computer-readable media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, HDD, such as magnetic disk storage or other magnetic storage devices, Flash drive, SSD, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a processing system, such as a mobile device or a computer.
  • Disk and disc includes CD, laser disc, optical disc, digital video disc (DVD), and floppy disk where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
  • a method for decoding a point cloud is disclosed.
  • the point cloud is represented in a ID array including a set of points.
  • a bitstream is parsed by a processor to obtain a first syntax element indicative of the presence of at least one attribute associated with the set of points. Whether the first syntax element indicates that at least one attribute associated with the set of points is present is determined by the processor.
  • the bitstream is parsed by the processor to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points.
  • the bitstream is parsed by the processor to obtain, for each attribute of the maximum number of attributes, a respective third syntax element indicative of the presence of the corresponding attribute.
  • each third syntax element whether the respective third syntax element indicates that the corresponding attribute is present is determined. In some embodiments, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, the bitstream is parsed to obtain a set of fourth syntax elements associated with the corresponding at least one attribute.
  • the corresponding at least one attribute is decoded based, at least in part, on the set of fourth syntax elements.
  • the bitstream is parsed to obtain a common fourth syntax element associated with each of the at least one attribute, and the bitstream is parsed to obtain a specific fourth syntax element associated with only one of the at least one attribute.
  • the fourth syntax element includes a transform-related syntax element.
  • the first and second syntax elements are coded in a sequence header, and the third and fourth syntax elements are coded in an attribute header.
  • a value of the second syntax element plus 1 is equal to a value of the maximum number of attributes.
  • the value of the second syntax element is between 0 and 15, inclusive, and a default value of the second syntax element of attributes is -1.
  • the at least one attribute associated with the set of points includes at least one of color or reflectance.
  • color and reflectance are assigned with attribute indices of 0 and 1, respectively, when parsing the bitstream to obtain the third syntax elements.
  • a system for decoding a point cloud includes a memory configured to store instructions and a processor coupled to the memory.
  • the point cloud is represented in a ID array including a set of points.
  • the processor is configured to, upon executing the instructions, parse a bitstream to obtain a first syntax element indicative of the presence of at least one attribute associated with the set of points.
  • the processor is also configured to, upon executing the instructions, determine whether the first syntax element indicates that the at least one attribute associated with the set of points is present.
  • the processor is further configured to, upon executing the instructions, in response to the first syntax element indicating that the at least one attribute associated with the set of points is present, parse the bitstream to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points.
  • the processor is further configured to, upon executing the instructions, parse the bitstream to obtain, for each attribute of the maximum number of attributes, a respective third syntax element indicative of the presence of the corresponding attribute.
  • a method for encoding a point cloud is disclosed.
  • the point cloud is represented in a ID array including a set of points.
  • a first syntax element indicating whether at least one attribute associated with the set of points is present is determined by a processor.
  • a second syntax element indicative of a maximum number of attributes associated with the set of points is determined by the processor.
  • a respective third syntax element indicating whether the corresponding attribute is present is determined by the processor.
  • a set of fourth syntax elements associated with the corresponding at least one attribute is determined.
  • the corresponding at least one attribute is encoded based, at least in part, on the set of fourth syntax elements.
  • a common fourth syntax element associated with each of the at least one attribute is determined, and a specific fourth syntax element associated with only one of the at least one attribute is determined.
  • the fourth syntax element includes a transform-related syntax element.
  • the first and second syntax elements are coded in a sequence header, and the third and fourth syntax elements are coded in an attribute header.
  • a value of the second syntax element plus 1 is equal to a value of the maximum number of attributes.
  • the value of the second syntax element is between 0 and 15, inclusive, and a default value of the second syntax element of attributes is -1.
  • the at least one attribute associated with the set of points includes at least one of color or reflectance.
  • color and reflectance are assigned with attribute indices of 0 and 1, respectively.
  • a system for encoding a point cloud includes a memory configured to store instructions and a processor coupled to the memory.
  • the point cloud is represented in a ID array including a set of points.
  • the processor is configured to, upon executing the instructions, determine a first syntax element indicating whether at least one attribute associated with the set of points is present.
  • the processor is also configured to, upon executing the instructions, in response to the first syntax element indicating that the at least one attribute associated with the set of points is present, determine a second syntax element indicative of a maximum number of attributes associated with the set of points.
  • the processor is further configured to, upon executing the instructions, determine for each attribute of the maximum number of the attributes, a respective third syntax element indicating whether the corresponding attribute is present.

Abstract

In certain aspects, a method for decoding a point cloud is disclosed. The point cloud is represented in a one-dimension (ID) array including a set of points. A bitstream is parsed by a processor to obtain a first syntax element indicative of presence of at least one attribute associated with the set of points. Whether the first syntax element indicates that the at least one attribute associated with the set of points is present is determined by the processor. In response to the first syntax element indicating that the at least one attribute associated with the set of points is present, the bitstream is parsed by the processor to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points. The bitstream is parsed by the processor to obtain, for each attribute of the maximum number of attributes, a respective third syntax element indicative of presence of the corresponding attribute.

Description

GEOMETRY POINT CLOUD CODING
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of priorities to U.S. Provisional Application No.
63/264,509, entitled “GEOMETRY POINT CLOUD CODING,” and filed on November 23, 2021, U.S. Provisional Application No. 63/285,957, entitled “PARAMETER SET SYNCHRONIZATION FOR GEOMETRY POINT CLOUD CODING,” and filed on December 3, 2021, and U.S. Provisional Application No. 63/366,904, entitled “GEOMETRY POINT CLOUD CODING,” and filed on June 23, 2022, all of which are incorporated by reference herein in their entireties.
BACKGROUND
[0002] Embodiments of the present disclosure relate to point cloud coding.
[0003] Point clouds are one of the major three-dimension (3D) data representations, which provide, in addition to spatial coordinates, attributes associated with the points in a 3D world. Point clouds in their raw format require a huge amount of memory for storage or bandwidth for transmission. Furthermore, the emergence of higher resolution point cloud capture technology imposes, in turn, even a higher requirement on the size of point clouds. In order to make point clouds usable, compression is necessary. Two compression technologies have been proposed for point cloud compression/coding (PCC) standardization activities: video-based PCC (V-PCC) and geometry-based PCC (G-PCC). V-PCC approach is based on 3D to two-dimension (2D) projections, while G-PCC, on the contrary, encodes the content directly in 3D space. In order to achieve that, G-PCC utilizes data structures, such as an octree that describes the point locations in 3D space.
SUMMARY
[0004] According to one aspect of the present disclosure, a method for decoding a point cloud is disclosed. The point cloud is represented in a one-dimension (ID) array including a set of points. A bitstream is parsed by a processor to obtain a first syntax element indicative of presence of at least one attribute associated with the set of points. Whether the first syntax element indicates that the at least one attribute associated with the set of points is present is determined by the processor. In response to the first syntax element indicating that the at least one attribute associated with the set of points is present, the bitstream is parsed by the processor to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points. The bitstream is parsed by the processor to obtain, for each attribute of the maximum number of attributes, a respective third syntax element indicative of presence of the corresponding attribute. [0005] According to another aspect of the present disclosure, a system for decoding a point cloud includes a memory configured to store instructions and a processor coupled to the memory. The point cloud is represented in a ID array including a set of points. The processor is configured to, upon executing the instructions, parse a bitstream to obtain a first syntax element indicative of presence of at least one attribute associated with the set of points. The processor is also configured to, upon executing the instructions, determine whether the first syntax element indicates that the at least one attribute associated with the set of points is present. The processor is further configured to, upon executing the instructions, in response to the first syntax element indicating that the at least one attribute associated with the set of points is present, parse the bitstream to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points. The processor is further configured to, upon executing the instructions, parse the bitstream to obtain, for each attribute of the maximum number of attributes, a respective third syntax element indicative of presence of the corresponding attribute.
[0006] According to still another aspect of the present disclosure, a method for encoding a point cloud is disclosed. The point cloud is represented in a ID array including a set of points. A first syntax element indicating whether at least one attribute associated with the set of points is present is determined by a processor. In response to the first syntax element indicating that the at least one attribute associated with the set of points is present, a second syntax element indicative of a maximum number of attributes associated with the set of points is determined by the processor. For each attribute of the maximum number of attributes, a respective third syntax element indicating whether the corresponding attribute is present is determined by the processor.
[0007] According to yet another aspect of the present disclosure, a system for encoding a point cloud includes a memory configured to store instructions and a processor coupled to the memory. The point cloud is represented in a ID array including a set of points. The processor is configured to, upon executing the instructions, determine a first syntax element indicating whether at least one attribute associated with the set of points is present. The processor is also configured to, upon executing the instructions, in response to the first syntax element indicating that the at least one attribute associated with the set of points is present, determine a second syntax element indicative of a maximum number of attributes associated with the set of points. The processor is further configured to, upon executing the instructions, determine for each attribute of the maximum number of the attributes, a respective third syntax element indicating whether the corresponding attribute is present.
[0008] These illustrative embodiments are mentioned not to limit or define the present disclosure, but to provide examples to aid understanding thereof. Additional embodiments are described in the Detailed Description, and further description is provided there.
BRIEF DESCRIPTION OF THE DRAWINGS
[0009] The accompanying drawings, which are incorporated herein and form 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 to enable a person skilled in the pertinent art to make and use the present disclosure.
[0010] FIG. 1 illustrates a block diagram of an exemplary encoding system, according to some embodiments of the present disclosure.
[0011] FIG. 2 illustrates a block diagram of an exemplary decoding system, according to some embodiments of the present disclosure.
[0012] FIG. 3 illustrates a detailed block diagram of an exemplary encoder in the encoding system in FIG. 1, according to some embodiments of the present disclosure.
[0013] FIG. 4 illustrates a detailed block diagram of an exemplary decoder in the decoding system in FIG. 2, according to some embodiments of the present disclosure.
[0014] FIGs. 5A and 5B illustrate an exemplary octree structure of G-PCC and the corresponding digital representation, respectively, according to some embodiments of the present disclosure.
[0015] FIG. 6 illustrates an exemplary structure of cube and the relationship with neighboring cubes in an octree structure of G-PCC, according to some embodiments of the present disclosure.
[0016] FIG. 7 illustrates an exemplary ID array of points representing a point cloud, a set of candidate points, and a set of prediction points, according to some embodiments of the present disclosure.
[0017] FIG. 8 illustrates an exemplary hierarchy of parameter sets of G-PCC, according to some embodiments of the present disclosure.
[0018] FIG. 9 illustrates a flow chart of an exemplary method for encoding a point cloud, according to some embodiments of the present disclosure.
[0019] FIG. 10 illustrates a flow chart of an exemplary method for decoding a point cloud, according to some embodiments of the present disclosure.
[0020] FIG. 11 illustrates a flow chart of another exemplary method for encoding a point cloud, according to some embodiments of the present disclosure.
[0021] FIG. 12 illustrates a flow chart of another exemplary method for decoding a point cloud, according to some embodiments of the present disclosure.
[0022] Embodiments of the present disclosure will be described with reference to the accompanying drawings.
DETAILED DESCRIPTION
[0023] Although some configurations and arrangements are discussed, it should be understood that this is done for illustrative purposes only. A person skilled in the pertinent art will recognize that other configurations and arrangements can be used without departing from the spirit and scope of the present disclosure. It will be apparent to a person skilled in the pertinent art that the present disclosure can also be employed in a variety of other applications.
[0024] It is noted that references in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” “some embodiments,” “certain embodiments,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases do not necessarily refer to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it would be within the knowledge of a person skilled in the pertinent art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
[0025] In general, terminology may be understood at least in part from usage in context. For example, the term “one or more” as used herein, depending at least in part upon context, may be used to describe any feature, structure, or characteristic in a singular sense or may be used to describe combinations of features, structures or characteristics in a plural sense. Similarly, terms, such as “a,” “an,” or “the,” again, may be understood to convey a singular usage or to convey a plural usage, depending at least in part upon context. In addition, the term “based on” may be understood as not necessarily intended to convey an exclusive set of factors and may, instead, allow for existence of additional factors not necessarily expressly described, again, depending at least in part on context.
[0026] Various aspects of point cloud coding systems will now be described with reference to various apparatus and methods. These apparatus and methods will be described in the following detailed description and illustrated in the accompanying drawings by various modules, components, circuits, steps, operations, processes, algorithms, etc. (collectively referred to as “elements”). These elements may be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether such elements are implemented as hardware, firmware, or software depends upon the particular application and design constraints imposed on the overall system. The techniques described herein may be used for various point cloud coding applications. As described herein, point cloud coding includes both encoding and decoding a point cloud.
[0027] A point cloud is composed of a collection of points in a 3D space. Each point in the 3D space is associated with a geometry position together with the associated attribute information (e.g., color, reflectance, intensity, classification, etc.). In order to compress the point cloud data efficiently, the geometry of a point cloud can be compressed first, and then the corresponding attributes, including color or reflectance, can be compressed based upon the geometry information according to a point cloud coding technique, such as G-PCC. G-PCC has been widely used in virtual reality/augmented reality (VR/AR), telecommunication, autonomous vehicle, etc., for entertainment and industrial applications, e.g., light detection and ranging (LiDAR) sweep compression for automotive or robotics and high-definition (HD) map for navigation. Moving Picture Experts Group (MPEG) released the first version G-PCC standard, and Audio Video Coding Standard (AVS) is also developing a G-PCC standard.
[0028] The existing G-PCC standards, however, cannot work well for a wide range of PCC inputs for many different applications. For example, besides the representation of levels (or coefficients in some cases), the representation of other information (e.g., parameters) used for G- PCC may be coded in the forms of syntax elements in the bitstream as well. Since G-PCC is organized in different levels by dividing a collection of points into different pieces (e.g., sequence, slices, etc.) associated with different properties (e.g., geometry, attributes, etc.), the parameter sets are also arranged in different levels (e.g., sequence-level, property-level, slice-level, etc.), for example, in the different headers. Moreover, multiple condition checks may be required for parsing some syntax elements in G-PCC, which further increases the complexity of organizing and parsing the representation of syntax elements
[0029] To improve the flexibility and generality of point cloud coding, the present disclosure provides various novel schemes of syntax element representation and organization, which are compatible with any suitable G-PCC standards, including, but not limited to, AVS G- PCC standards and MPEG G-PCC standards.
[0030] According to some aspects of the present disclosure, various attribute-presence syntax elements are introduced at different levels to control the enablement/disablement of all attributes or an individual attribute in point cloud coding. In some embodiments, a syntax element specifying the supported maximum number of attributes is also introduced, in conjunction with the various attribute-presence syntax elements, to allow the flexibility of supporting various numbers of attributes in point cloud coding. In some embodiments, the different parameters under the same condition check at the same level (e.g., associated with the same attribute) can be grouped altogether to reduce the number of condition checks, thereby further simplifying the scheme.
[0031] According to some aspects of the present disclosure, various identifiers (IDs) are introduced at different levels to allow the parameter set synchronization at different levels in point cloud coding. In some embodiments, a sequence parameter set (SPS)-ID is introduced to support multiple sequences and SPSs. In some embodiments, a property parameter set-ID (e.g., geometry parameter set-ID and attribute parameter set-ID) is introduced to allow different properties to have different parameter sets, as well as enable the linkage of each property parameter set to its corresponding SPS. In some embodiments, a slice property parameter set-ID (e.g., slice geometry parameter set-ID and slice attribute parameter set-ID) is introduced to allow different slices of the same sequence to have different property parameter sets, as well as enable the linkage of each slice property parameter set to its corresponding property parameter set and SPS.
[0032] FIG. 1 illustrates a block diagram of an exemplary encoding system 100, according to some embodiments of the present disclosure. FIG. 2 illustrates a block diagram of an exemplary decoding system 200, according to some embodiments of the present disclosure. Each system 100 or 200 may be applied or integrated into various systems and apparatuses capable of data processing, such as computers and wireless communication devices. For example, system 100 or 200 may be the entirety or part of a mobile phone, a desktop computer, a laptop computer, a tablet, a vehicle computer, a gaming console, a printer, a positioning device, a wearable electronic device, a smart sensor, a virtual reality (VR) device, an argument reality (AR) device, or any other suitable electronic devices having data processing capability. As shown in FIGs. 1 and 2, system 100 or 200 may include a processor 102, a memory 104, and an interface 106. These components are shown as connected one to another by a bus, but other connection types are also permitted. It is understood that system 100 or 200 may include any other suitable components for performing functions described here.
[0033] Processor 102 may include microprocessors, such as graphic processing unit (GPU), image signal processor (ISP), central processing unit (CPU), digital signal processor (DSP), tensor processing unit (TPU), vision processing unit (VPU), neural processing unit (NPU), synergistic processing unit (SPU), or physics processing unit (PPU), microcontroller units (MCUs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functions described throughout the present disclosure. Although only one processor is shown in FIGs. 1 and 2, it is understood that multiple processors can be included. Processor 102 may be a hardware device having one or more processing cores. Processor 102 may execute software. Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. Software can include computer instructions written in an interpreted language, a compiled language, or machine code. Other techniques for instructing hardware are also permitted under the broad category of software.
[0034] Memory 104 can broadly include both memory (a.k.a, primary/system memory) and storage (a.k.a., secondary memory). For example, 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 readonly memory (CD-ROM) or other optical disk storage, hard disk drive (HDD), such as magnetic disk storage or other magnetic storage devices, Flash drive, solid-state drive (SSD), or any other medium that can be used to carry or store desired program code in the form of instructions that can be accessed and executed by processor 102. Broadly, memory 104 may be embodied by any computer-readable medium, such as a non-transitory computer-readable medium. Although only one memory is shown in FIGs. 1 and 2, it is understood that multiple memories can be included. [0035] Interface 106 can broadly include a data interface and a communication interface that is configured to receive and transmit a signal in a process of receiving and transmitting information with other external network elements. For example, interface 106 may include input/output (VO) devices and wired or wireless transceivers. Although only one memory is shown in FIGs. 1 and 2, it is understood that multiple interfaces can be included.
[0036] Processor 102, memory 104, and interface 106 may be implemented in various forms in system 100 or 200 for performing point cloud coding functions. In some embodiments, processor 102, memory 104, and interface 106 of system 100 or 200 are implemented (e.g., integrated) on one or more system-on-chips (SoCs). In one example, processor 102, memory 104, and interface 106 may be integrated on an application processor (AP) SoC that handles application processing in an operating system (OS) environment, including running point cloud encoding and decoding applications. In another example, processor 102, memory 104, and interface 106 may be integrated on a specialized processor chip for point cloud coding, such as a GPU or ISP chip dedicated to graphic processing in a real-time operating system (RTOS).
[0037] As shown in FIG. 1, in encoding system 100, processor 102 may include one or more modules, such as an encoder 101. Although FIG. 1 shows that encoder 101 is within one processor 102, it is understood that encoder 101 may include one or more sub-modules that can be implemented on different processors located closely or remotely with each other. Encoder 101 (and any corresponding sub-modules or sub-units) can be hardware units (e.g., portions of an integrated circuit) of processor 102 designed for use with other components or software units implemented by processor 102 through executing at least part of a program, i.e., instructions. The instructions of the program may be stored on a computer-readable medium, such as memory 104, and when executed by processor 102, it may perform a process having one or more functions related to point cloud encoding, such as voxelization, transformation, quantization, arithmetic encoding, etc., as described below in detail.
[0038] Similarly, as shown in FIG. 2, in decoding system 200, processor 102 may include one or more modules, such as a decoder 201. Although FIG. 2 shows that decoder 201 is within one processor 102, it is understood that decoder 201 may include one or more sub-modules that can be implemented on different processors located closely or remotely with each other. Decoder 201 (and any corresponding sub-modules or sub-units) can be hardware units (e.g., portions of an integrated circuit) of processor 102 designed for use with other components or software units implemented by processor 102 through executing at least part of a program, i.e., instructions. The instructions of the program may be stored on a computer-readable medium, such as memory 104, and when executed by processor 102, it may perform a process having one or more functions related to point cloud decoding, such as arithmetic decoding, dequantization, inverse transformation, reconstruction, synthesis, as described below in detail.
[0039] FIG. 3 illustrates a detailed block diagram of exemplary encoder 101 in encoding system 100 in FIG. 1, according to some embodiments of the present disclosure. As shown in FIG. 3, encoder 101 may include a coordinate transform module 302, a voxelization module 304, a geometry analysis module 306, and an arithmetic encoding module 308, together configured to encode positions associated with points of a point cloud into a geometry bitstream (i.e., geometry encoding). As shown in FIG. 3, encoder 101 may also include a color transform module 310, an attribute transform module 312, a quantization module 314, and an arithmetic encoding module 316, together configured to encode attributes associated with points of a point cloud into an attribute bitstream (i.e., attribute encoding). It is understood that each of the elements shown in FIG. 3 is independently shown to represent characteristic functions different from each other in a point cloud encoder, and it does not mean that each component is formed by the configuration unit of separate hardware or single software. That is, each element is included to be listed as an element for convenience of explanation, and at least two of the elements may be combined to form a single element, or one element may be divided into a plurality of elements to perform a function. It is also understood that some of the elements are not necessary elements that perform functions described in the present disclosure but instead may be optional elements for improving performance. It is further understood that these elements may be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether such elements are implemented as hardware, firmware, or software depends upon the particular application and design constraints imposed on encoder 101. It is still further understood that the modules shown in FIG. 3 are for illustrative purposes only, and in some examples, different modules may be included in encoder 101 for point cloud encoding.
[0040] As shown in FIG. 3, geometry positions and attributes associated with points may be encoded separately. A point cloud may be a collection of points with positions Xk = (xk, yk, zk), k = 1, ... , K, where K is the number of points in the point cloud, and attributes Ak = (Alk,A2k, ... , ADk), k = 1, ... , K, where D is the number of attributes for each point. In some embodiments, attribute coding depends on decoded geometry. As a consequence, point cloud positions may be coded first. Since geometry positions may be represented by floating-point numbers in an original coordinate system, coordinate transform module 302 and a voxelization module 304 may be configured to perform a coordinate transformation followed by voxelization that quantizes and removes duplicate points. The process of position quantization, duplicate point removal, and assignment of attributes to the remaining points is called voxelization. The voxelized point cloud may be represented using, for example, an octree structure in a lossless manner. Geometry analysis module 306 may be configured to perform geometry analysis using, for example, the octree or trisoup scheme. Arithmetic encoding module 308 may be configured to arithmetically encode the resulting structure from geometry analysis module 306 into the geometry bitstream.
[0041] In some embodiments, geometry analysis module 306 is configured to perform geometry analysis using the octree scheme. Under the octree scheme, a cubical axis-aligned bounding box B may be defined by the two extreme points (0,0,0) and (2d, 2d, 2d) where d is the maximum size of the given point cloud along the x, y, or z direction. All point cloud points may be included in this defined cube. A cube may be divided into eight sub-cubes, which creates the octree structure allowing one parent to have 8 children, and an octree structure may then be built by recursively subdividing sub-cubes, as shown in FIG. 5A. As shown in FIG. 5B, an 8-bit code may be generated by associating a 1 -bit value with each sub-cube to indicate whether it contains points (i.e., full and has value 1) or not (i.e., empty and has value 0). Only full sub-cubes with a size greater than 1 (i.e., non-voxels) may be further subdivided. The geometry information (x, y, z) for one position may be represented by this defined octree structure. Since points may be duplicated, multiple points may be mapped to the same sub-cube of size 1 (i.e., the same voxel). In order to handle such a situation, the number of points for each sub-cube of dimension 1 is also arithmetically encoded. By construction of the octree, a current cube associated with a current node may be surrounded by six cubes of the same depth sharing a face with it. Depending on the location of the current cube, one cube may have up to six same-sized cubes to share one face, as shown in FIG. 6. In addition, the current cube may also have some neighboring cubes which share lines or points with the current cube.
[0042] Referring back to FIG. 3, as to attribute encoding, optionally, color transform module 310 may be configured to convert red/green/blue (RGB) color attributes of each point to YCbCr color attributes if the attributes include color. Attribute transform module 312 may be configured to perform attribute transformation based on the results from geometry analysis module 306 (e.g., using the octree scheme), including but not limited to, the region adaptive hierarchical transform (RAHT), interpolation-based hierarchical nearest-neighbor prediction (predicting transform), and interpolation-based hierarchical nearest-neighbor prediction with an update/lifting step (lifting transform). Optionally, quantization module 314 may be configured to quantize the transformed coefficients of attributes from attribute transform module 312 to generate quantization levels of the attributes associated with each point to reduce the dynamic range. Arithmetic encoding module 316 may be configured to arithmetically encode the resulting transformed coefficients of attributes associated with each point or the quantization levels thereof into the attribute bitstream.
[0043] In some embodiments, a prediction may be formed from neighboring coded attributes, for example, in predicting transform and lifting transform by attribute transform module 312. Then, the difference between the current attribute and the prediction may be coded. According to some aspects of the present disclosure, in the AVS G-PCC standard, after the geometry positions are coded, a Morton code or Hilbert code may be used to convert a point cloud in a 3D space (e.g., a point cloud cube) into a ID array, as shown in FIG. 7. Each position in the cube will have a corresponding Morton or Hilbert code, but some positions may not have any corresponding point cloud attribute. In other words, some positions may be empty. The attribute coding may follow the predefined Morton order or Hilbert order. A predictor may be generated from the previous coded points in the ID array following the Morton order or Hilbert order. The attribute difference between the current point and its prediction points may be encoded into the bitstream. In some embodiments, the point cloud in the 3D space (e.g., a point cloud cube) is converted into a ID array without any pre-defined order, but instead in its native input order, for example, the order in which the point cloud data is collected. That is, in some examples, the attribute coding may follow the native input order of the point cloud, instead of the predefined Morton order or Hilbert order. In other words, the order followed by the points in the ID array may be either a Morton order, a Hilbert order, or the native input order.
[0044] As shown in FIG. 7, to reduce the memory usage, some predefined number has been specified to limit the number of neighboring points that can be used in generating the prediction. For example, only at most AT points among previous at most TV consecutively coded points may be used for coding the current attribute. That is, a set of n candidate points may be used as the candidates to select a set of m prediction points (m < ri) for predicting the current point in attribute coding. The number n of candidate points in the set is equal to or smaller than the maximum number N of candidate points (n < N), and the number m of prediction points in the set is equal to or smaller than the maximum number M of prediction points (m < M). As shown in FIG. 7, if the number of neighboring points prior to the current point in the ID array following the Morton order, the Hilbert order, or the native input order is larger than the maximum number N of candidate points, then the number n of candidate points in the set of candidate points for the current point (shaded in grey) is equal to the maximum number A; if the number of neighboring points prior to the current point in the ID array following the Morton order, the Hilbert order, or the native input order is larger than or equal to the maximum number N of candidate points, then the number n of candidate points in the set of candidate points for the current point (shaded in grey) is smaller to the maximum number N, then all the neighboring points prior to the current point are used as the set of candidate points for the current point. In FIG. 7, the maximum number M of prediction points is set to be 3, and a set of 3 prediction points (P, bolded and underlined) may be selected from the set of n candidate points, for example, based on the positions associated with the n candidate points and the current points (e.g., the distances between each candidate point and the current point).
[0045] In some embodiments, Aland N are set as a fixed number of 3 and 128, respectively. If more than 128 points before the current point are already coded, only 3 out of the previous 128 neighboring points could be used to form attribute predictors (prediction points) according to a predefined order. If there are less than 128 coded points before the current point, all coded points before the current point will be used as candidate points to find the prediction points. Among the previous up to 128 candidate points, up to 3 prediction points are selected, which have the closest “distance” (e.g., Euclidean distance) between these candidate points and the current point. The Euclidean distance d as one example may be defined as follows, while other distance metrics can also be used in other examples: d = |xl — %2| + |yl — y2| + |zl — z2| (1), where (xl, y 1, zl) and (x2, y2, z2) are the coordinates of the current point and the candidate point along the Morton order, the Hilbert order, or the native input order, respectively. Once m prediction points (e.g., the 3 closest candidate points) have been selected, a weighted attribute average from these m points may be formed as the predictor to code the attribute of the current point, according to some embodiments. It is understood that in some examples, the prediction points may be selected from the candidate points that are in the cubes sharing the same face/line/point with the current point cloud. [0046] Since the set of n candidate points needs to be stored in the memory and traversed in order to select the set of m prediction points for coding the attributes associated with the current position, the maximum number M of candidate points is introduced to limit the size of memory and amount of computation resources that may be occupied by the candidate points storage and searching.
[0047] FIG. 4 illustrates a detailed block diagram of exemplary decoder 201 in decoding system 200 in FIG. 2, according to some embodiments of the present disclosure. As shown in FIG. 4, decoder 201 may include an arithmetic decoding module 402, a geometry synthesis module 404, a reconstruction module 406, and a coordinate inverse transform module 408, together configured to decode positions associated with points of a point cloud from the geometry bitstream (i.e., geometry decoding). As shown in FIG. 4, decoder 201 may also include an arithmetic decoding module 410, a dequantization module 412, an attribute inverse transform module 414, and a color inverse transform module 416, together configured to decode attributes associated with points of a point cloud from the attribute bitstream (i.e., attribute decoding). It is understood that each of the elements shown in FIG. 4 is independently shown to represent characteristic functions different from each other in a point cloud decoder, and it does not mean that each component is formed by the configuration unit of separate hardware or single software. That is, each element is included to be listed as an element for convenience of explanation, and at least two of the elements may be combined to form a single element, or one element may be divided into a plurality of elements to perform a function. It is also understood that some of the elements are not necessary elements that perform functions described in the present disclosure but instead may be optional elements for improving performance. It is further understood that these elements may be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether such elements are implemented as hardware, firmware, or software depends upon the particular application and design constraints imposed on decoder 201. It is still further understood that the modules shown in FIG. 4 are for illustrative purposes only, and in some examples, different modules may be included in decoder 201 for point cloud decoding.
[0048] When a point cloud bitstream (e.g., a geometry bitstream or an attribute bitstream) is inputted from a point cloud encoder (e.g., encoder 101), the input bitstream may be decoded by decoder 201 in a procedure opposite to that of the point cloud encoder. Thus, the details of decoding that are described above with respect to encoding may be skipped for ease of description. Arithmetic decoding modules 402 and 410 may be configured to decode the geometry bitstream and attribute bitstream, respectively, to obtain various information encoded into the bitstream. For example, arithmetic decoding module 410 may decode the attribute bitstream to obtain the attribute information associated with each point, such as the quantization levels or the coefficients of the attributes associated with each point. Optionally, dequantization module 412 may be configured to dequantize the quantization levels of attributes associated with each point to obtain the coefficients of attributes associated with each point. Besides the attribute information, arithmetic decoding module 410 may parse the bitstream to obtain various other information (e.g., in the form of syntax elements), such as the syntax element indicative of the order followed by the points in the ID array for attribute coding.
[0049] Inverse attribute transform module 414 may be configured to perform inverse attribute transformation, such as inverse RAHT, inverse predicting transform, or inverse lifting transform, to transform the data from the transform domain (e.g., coefficients) back to the attribute domain (e.g., luma and/or chroma information for color attributes). Optionally, color inverse transform module 416 may be configured to convert YCbCr color attributes to RGB color attributes.
[0050] As to the geometry decoding, geometry synthesis module 404, reconstruction module 406, and coordinate inverse transform module 408 of decoder 201 may be configured to perform the inverse operations of geometry analysis module 306, voxelization module 304, and coordinate transform module 302 of encoder 101, respectively.
[0051] Consistent with the scope of the present disclosure, encoder 101 and decoder 201 may be configured to adopt various novel schemes of syntax element representation and organization, as disclosed herein, to improve the flexibility and generality of point cloud coding.
[0052] According to some aspects of the present disclosure, various attribute-presence syntax elements are introduced at different levels to control the enablement/disablement of all attributes or an individual attribute in point cloud coding. In some embodiments, the different parameters under the same condition check at the same level (e.g., associated with the same attribute) can be grouped altogether to reduce the number of condition checks, thereby further simplifying the scheme. FIG. 8 illustrates an exemplary hierarchy of parameter sets of G-PCC, according to some embodiments of the present disclosure. A point cloud may be represented in a ID array including a set of points each associated with a property, such as geometry and attributes (e.g., color and reflectance). The set of points associated with different time stamps may be viewed as a “sequence.” [0053] As shown in FIG. 8, the syntax elements (e.g., parameters, flags, etc.) used for coding the headers of the point cloud may be organized in a hierarchy having various levels. At the top level, the hierarchy may include a sequence header, for example, a header of a sequence parameter set (SPS) associated with the sequence representing the point cloud. At the second level, the hierarchy may 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, geometry parameter headers and attribute parameter headers can also be at the same level as SPS. For example, as shown in FIG. 8, the next level under the SPS may include one header of a geometry parameter set belonging to the SPS and associated with the geometry, as well as one or more headers (1 to ri) of attribute parameter sets belonging to the SPS and each associate with a respective attribute (e.g., color or reflectance). At the third level, the hierarchy may include one or more slice property headers belonging to each property header, such as slice geometry parameter headers and slice attribute parameter headers. That is, the sequence representing the point cloud may be divided into one or more slices each including a slice of points, and each slice of points may be associated with one or more slice property headers. For example, as shown in FIG. 8, the next level under the geometry parameter set may include one or more headers of slice geometry parameter sets each belonging to the geometry parameter set and associated with a respective slice of points. Similarly, the next level under each attribute parameter set may include one or more headers of slice attribute parameter sets each belonging to the respective attribute parameter set and associated with a respective slice of points. It is understood that in some examples, the hierarchy may include fewer or more levels, such as picture/frame level(s).
[0054] In some embodiments, decoder 201 is configured to parse the attribute bitstream to obtain a first syntax element indicative of the presence of at least one attribute associated with the set of points (sequence). In some embodiments, decoder 201 is also configured to determine whether the first syntax element indicates that at least one attribute associated with the set of points (sequence) is present. Correspondingly, in some embodiments, encoder 101 is configured to determine the first syntax element indicating whether at least one attribute associated with the set of points is present. That is, the first syntax element may be a sequence-level attribute flag (e.g., attribute_present_flag) coded in a sequence header for enabling/disabling the coding of any attribute associated with the sequence. For example, attribute present flag equal to 1 may specify that the attribute(s) are present in the bitstream, while attribute present flag equal to 0 may specify that the attribute(s) are not present in the bitstream. [0055] A syntax element specifying the supported maximum number of attributes can also be introduced, in conjunction with the various attribute-presence syntax elements, to allow the flexibility of supporting various numbers of attributes in point cloud coding. In some embodiments, decoder 201 is further configured to, in response to the first syntax element indicating that at least one attribute associated with the set of points is present, parse the bitstream to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points. Correspondingly, in some embodiments, encoder 101 is also configured to, in response to the first syntax element indicating that at least one attribute associated with the set of points is present, determine the second syntax element indicative of the maximum number of attributes associated with the set of points. That is, the second syntax element may be a sequencelevel parameter coded in the sequence header for specifying the maximum number of attributes supported in coding the sequence.
[0056] In one example, the second syntax element may be coded in 4 bits, and the second syntax element may be represented as maxNumAttributesMinusl with a range of values between 0 and 15, inclusive. That is, the value of the second syntax element (maxNumAttributesMinusl) may be between 0 and 15, inclusive, and the value of the maximum number of attributes may be between 1 and 16, inclusive. Thus, the value of maxNumAttributesMinusl plus 1 may specify the maximum number of attributes. In other words, the value of the second syntax element plus 1 may be equal to the value of the maximum number of attributes. In some embodiments, the default value of the maximum number of attributes may be 0, and the default value of the second syntax element (maxNumAttributesMinusl) may be -1, when the value is not present. The example specification below illustrates the two sequence-level syntax elements attribute_present_flag and maxNumAttributesMinusl in the sequence header. As shown in the example specification, attribute present flag may be coded in 1 bit with a value of either 0 or 1. If the value of attribute_present_flag is 1, then maxNumAttributesMinusl may be coded in 4 bits with a range of values between 0 and 15, inclusive. It is understood that maxNumAttributesMinusl may not be coded if the value of attribute present flag is 0, meaning that there is not any attribute coded in the sequence. It is also understood that any other suitable sequence-level syntax elements may be conditionally parsed, like maxNumAttributesMinusl, when attribute present flag is 1, such as attribute_adapt_pred and attribute qp in the example specification below. It is further understood that any other suitable sequence-level syntax elements may be coded in the sequence header, like attribute_present_flag, for enabling/disabling any other suitable properties or functions associated with the sequence, such as bounding box present flag in the example specification below, which is indicative of the presence of a bounding box associated with the set of points (sequence).
Figure imgf000019_0001
[0057] As described above with respect to FIGs. 5A, 5B, and 6, under the octree scheme, a cubical axis-aligned bounding box B may be defined by the two extreme points (0,0,0) and (2d, 2d, 2d) where 2d is the maximum size of the given point cloud along the x, y, or z direction. All point cloud points may be included in this defined cube. In existing G-PCC standards, a bounding box offset may always be considered a positive integer number. Specifically, the bounding box offset along x, y, and z directions may be represented by syntax elements of bounding box offset x upper, bounding_box_offset_y upper, bounding box offset z upper, bounding box offset x lower, bounding_box_offset_y lower, and bounding box offset z lower, which are all specified as 16-bit unsigned integer.
[0058] Consistent with the scope of the present disclosure, in some embodiments, a bounding box offset can be positive or negative, and a sequence-level syntax element bounding box present flag, which is indicative of the presence of a bounding box associated with a set of points (sequence), is introduced. For example, bounding box present flag equal to 1 may specify that the bounding box is present in the bitstream, while bounding_box_present_flag equal to 0 may specify that the bounding box is not present in the bitstream. As shown in the example specification above, in response to bounding_box_present_flag being 1, syntax elements representing bounding box offset in either positive or negative values may be further conditionally parsed.
[0059] For example, bounding box offset x sign equal to 0 may specify that the sign of offset along the x direction is positive, while bounding box offset x sign equal to 1 may specify that the sign of offset along x is negative; when not present, the value of the bounding box offset x sign may be inferred to be equal to 0. For example, bounding_box_offset_y_sign equal to 0 may specify that the sign of offset along the y direction is positive, while bounding_box_offset_y_sign equal to 1 may specify that the sign of offset along the direction is negative; when not present, the value of the bounding_box_offset_y_sign may be inferred to be equal to 0. For example, bounding box offset z sign equal to 0 may specify that the sign of offset along the z direction is positive, while bounding box offset z sign equal to 1 may specify that the sign of offset along z direction is negative; when not present, the value of the bounding box offset z sign is inferred to be equal to 0. In one example, bounding box offset x upper, bounding_box_offset_y upper, and bounding box offset z upper may be 15-bit fields, while bounding box offset x lower, bounding_box_offset_y lower bounding box offset z lower may be 16-bits fields. In one example, the value of bounding box offset may be decoded based on the above-mentioned bounding box offset syntax elements as following equations: Bounding box offset x = (1 - 2 * sign) * ((bounding box offset x upper « 16) + bounding box offset x lower (2);
Bounding_box_offset_y = (1 - 2 * sign) * ((bounding_box_offset_y upper « 16) + bounding_box_offset_y lower) (3); and
Bounding box offset z = (1 - 2 * sign) * ((bounding box offset z upper « 16) + bounding box offset z lower) (4), where an arithmetic shift operation (X « 16) is used for calculating the multiplication (X * 65536). [0060] It is understood that in some examples, an alternative example of simplified signaling without parameter derivation is used, and the bounding box size and offset may be signaled directly in the bitstream using ue(v) for bounding box offset, and se(v) for bounding box size coding.
[0061] Besides the sequence-level syntax element for enabling/disabling the coding of attributes in the sequence, attribute-level syntax elements for enabling/disabling the coding of each specific attribute in the sequence can be introduced. In some embodiments, for each attribute of the maximum number of attributes, decoder 201 is further configured to parse a respective third syntax element indicative of the presence of the corresponding attribute. In some embodiments, for each third syntax element, decoder 201 is further configured to determine whether the respective third syntax element indicates that the corresponding attribute is present. Correspondingly, in some embodiments, for each attribute of the maximum number of attributes, encoder 101 is further configured to determine the respective third syntax element indicating whether the corresponding attribute is present. That is, the third syntax element may be an attribute-level attribute flag (e.g., attributePresentFlag [attrldx]) coded in an attribute header for enabling/disabling the coding of a corresponding attribute. For example, an attribute index (attrldx) may be used to indicate each attribute within the maximum number of attributes. In one example, attributePresentFlag [attrldx] equal to 1 may specify that the attrldx -th attribute specified in an attribute mapping table is present in the attribute header, while attributePresentFlag [attrldx] equal to 0 may specify that the attrldx -th attribute specified in the attribute mapping table is not present in the attribute header. For example, attrldx may be an integer between 0 and 15, inclusive. In one example, color and reflectance are assigned with attribute indices of 0 and 1, respectively, when parsing the bitstream to obtain the third syntax elements. TABLE I below shows an example of an attribute mapping table. It is understood that the range of attribute indices (attrldx) may be the same as the value of the second syntax element maxNumAttributesMinusl plus 1. TABLE I
Figure imgf000022_0001
[0062] Attribute-level syntax elements can be used to group the attribute parameters related to the same attribute(s), e.g., a set of fourth syntax elements associated with the corresponding at least one attribute, for conditional parsing. That is, syntax elements related to the same attribute(s) (e.g., color and/or reflectance) can be conditionally parsed if those attributes are enabled. In some embodiments, decoder 201 is further configured to, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, parse the bitstream to obtain a set of fourth syntax elements associated with the corresponding at least one attribute. Correspondingly, in some embodiments, encoder 101 is further configured to, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, determine the set of fourth syntax elements associated with the corresponding at least one attribute.
[0063] The fourth syntax element may be either a specific fourth syntax element that is associated with only one attribute, or a common fourth syntax element that is associated with multiple attributes. The specific fourth syntax element may be conditionally parsed as long as its associated attribute is enabled, while the common fourth syntax element may be conditionally parsed only if each of its multiple associated attributes is enabled. Thus, in some embodiments, the specific fourth syntax elements and the common fourth syntax elements are grouped separately under the different attribute enabling/disabling conditions. The common fourth syntax elements may be conditionally parsed prior to the specific fourth syntax elements. In some embodiments, the fourth syntax element includes a transform-related syntax element. That is, the transformrelated syntax elements could be conditionally parsed if one or more attributes are enabled, e.g., color and/or reflectance. In some embodiments, transform-related syntax elements are conditionally parsed first among all fourth syntax elements. The third and fourth syntax elements are attribute-level syntax elements and thus, may be coded in the attribute header.
[0064] The example specification below illustrates the attribute-level syntax element attributePresentFlag [ attrldx ] and the grouping and conditionally parsing of various sets of attribute-level syntax elements in the attribute header. As shown in the example specification, for each attribute (attrldx) within the maximum number of attributes (maxNumAttributesMinusl + 1), whether the corresponding attribute-level flag attributePresentFlag [ attrldx ] is enabled is checked to determine whether the respective attribute is present in the sequence.
Figure imgf000023_0001
Figure imgf000024_0001
[0065] As shown in the example specification above, it is understood that additional attribute-level syntax elements may be introduced in the attribute header as well, such as inputBitDepthMinus8[ attrldx ] and outputBitDepthMinus8[ attrldx ], which may be conditionally coded/parsed when the corresponding attributePresentFlag [ attrldx ] is enabled. For example, inputBitDepthMinus8[ attrldx ] plus 8 may specify the input bit depth of the samples for the attrldx -th attribute in the coding. The value of inputBitDepthMinus8[ attrldx ] may be in the range of 0 to 8, inclusive; when not present, the value of inputBitDepthMinus8[ attrldx ] may be inferred to be equal to 0. For example, outputBitDepthMinus8[ attrldx ] plus 8 may specify the output bit depth of the samples for the attrldx-th attribute in the coding. The value of outputBitDepthMinus8[ attrldx ] may be in the range of 0 to 8, inclusive; when not present, the value of outputBitDepthMinus8[ attrldx ] may be inferred to be equal to 0.
[0066] As shown in the example specification above, transform-related syntax elements, for example, attribute-level parameters, such as attrTransformQpDelta, attrTransformNumPoints, QpOffsetDC, and QpOffsetAC, that are common fourth syntax elements associated with both the color attribute and the reflectance attribute may be grouped altogether and conditionally coded/parsed first when either the color attribute or the reflectance attribute is enabled (e.g., attributePresentFlag[O] = 1 or attributePresentFlag[l] = 1 ). It is understood that some transformrelated syntax elements, for example, attribute-level parameters, such as chromaQpOffsetDC and chromaQpOffsetAC, that are specific fourth syntax elements associated with only the color attribute may be grouped together and conditionally coded/parsed next when the color attribute is enabled (e.g., attributePresentFlag[O] = 1).
[0067] As shown in the example specification above, after coding/parsing the transformrelated syntax elements, common fourth syntax elements, for example, attribute-level parameters, such as maxNumOfNeighboursLog2Minus7, numOflevelOfDetail, maxNumOfPredictNeighbours, and intraLodFlag, that are associated with both the color attribute and the reflectance attribute may be grouped altogether and conditionally coded/parsed when both the color attribute and the reflectance attribute are enabled e.g., attributePresentFlag[O] = 1 and attributePresentFlag[l] = 1 ). After coding/parsing the common fourth syntax elements, specific fourth syntax elements, for example, attribute-level parameters, such as cross component Pred, chromaQpOffsetCb, chromaQpOffsetCr, nearestPredParaml, nearestPredParam2, and axisBias, that are associated with only the color attribute or only the reflectance attribute may be grouped together and conditionally coded/parsed next when the color attribute or the reflectance attribute is enabled e.g., attributePresentFlagfO] = 1 or attributePresentFlagfl] = 1 ). [0068] It is understood that the specification described in the above example may be implemented in any suitable form, such as another example specification below. The details of the example specification below are not elaborated for ease of description.
Figure imgf000025_0001
Figure imgf000026_0001
[0069] In some embodiments, decoder 201 is further configured to decode the corresponding at least one attribute based, at least in part, on the set of fourth syntax elements. Correspondingly, in some embodiments, encoder 101 is further configured to encode the corresponding at least one attribute based, at least in part, on the set of fourth syntax elements.
[0070] FIG. 9 illustrates a flow chart of an exemplary method 900 of point cloud encoding, according to some embodiments of the present disclosure. Method 900 may be performed by encoder 101 of encoding system 100 or any other suitable point cloud encoding systems. Method 900 may include operations 902, 904, 906, 908, 910, and 912 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order than shown in FIG. 9.
[0071] At operation 902, a point cloud is represented in a ID array. The ID array includes a set of points (e.g., a sequence) following an order and each associated with one or more attributes. The order can include a Morton order, a Hilbert order, or a native input order. The attributes can include at least one of color or reflectance. In some embodiments, a Morton code or a Hilbert code
(or any other suitable space-filling curves from 3D to ID) is used to convert a point cloud in a 3D space (e.g., a point cloud cube) into the ID array, such that the set of the points in the ID array follows the order corresponding to the code. In some embodiments, the point cloud is converted from the 3D space into the ID array without any code, i.e., in its native input order, such that the set of points in the ID array follows the native input order. For example, encoder 101 may be configured to represent the point cloud in a ID array including a set of points.
[0072] At operation 904, a first syntax element indicating whether at least one attribute associated with the set of points is present is determined. In some embodiments, the first syntax element is coded in a sequence header. In some embodiments, at least one attribute associated with the set of points includes at least one of color or reflectance. In one example, color and reflectance may be assigned with attribute indices of 0 and 1, respectively. For example, encoder 101 may be configured to determine a first syntax element indicating whether at least one attribute associated with the set of points is present.
[0073] At operation 906, in response to the first syntax element indicating that at least one attribute associated with the set of points is present, a second syntax element indicative of a maximum number of attributes associated with the set of points is determined. In some embodiments, the second syntax element is coded in the sequence header. In some embodiments, a value of the second syntax element plus 1 is equal to a value of the maximum number of attributes. In one example, the value of the second syntax element is between 0 and 15, inclusive, and the default value of the second syntax element is -1. For example, encoder 101 may be configured to, in response to the first syntax element indicating that at least one attribute associated with the set of points is present, determine a second syntax element indicative of a maximum number of attributes associated with the set of points.
[0074] At operation 908, for each attribute of the maximum number of attributes, a respective third syntax element indicating whether the corresponding attribute is present is determined. In some embodiments, the third syntax element is coded in an attribute header. For example, encoder 101 may be configured to determine, for each attribute of the maximum number of the attributes, a respective third syntax element indicating whether the corresponding attribute is present.
[0075] At operation 910, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, a set of fourth syntax elements associated with the corresponding at least one attribute is determined. In some embodiments, the fourth syntax element is coded in the attribute header. In some embodiments, to determine the set of fourth syntax elements, a common fourth syntax element associated with each of the at least one attribute is determined, and a specific fourth syntax element associated with only one of the at least one attribute is determined. In some embodiments, the fourth syntax element includes a transformrelated syntax element. For example, the transformed-related syntax element may be determined prior to the common fourth syntax element, and the common fourth syntax element may be determined prior to the specific fourth syntax element. For example, encoder 101 may be configured to, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, determine a set of fourth syntax elements associated with the corresponding at least one attribute.
[0076] At operation 912, the corresponding at least one attribute is encoded based, at least in part, on the set of fourth syntax elements. For example, encoder 101 may be configured to encode the corresponding at least one attribute into a bitstream based, at least in part, on the set of fourth syntax elements.
[0077] FIG. 10 illustrates a flow chart of an exemplary method 1000 of point cloud decoding, according to some embodiments of the present disclosure. Method 1000 may be performed by decoder 201 of decoding system 200 or any other suitable point cloud decoding systems. Method 1000 may include operations 1002, 1004, 1006, 1008, 1010, 1012, and 1014 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order other than shown in FIG. 10. [0078] A point cloud is represented in a ID array including a set of points each associated with one or more attributes and a position. The attributes can include at least one of color or reflectance. In some embodiments, the set of points follows an order in the ID array. In some embodiments, Morton code or Hilbert code (or any other suitable space-filling curves from 3D to ID) is used to convert a point cloud in a 3D space (e.g., a point cloud cube) into the ID array, such that the set of the points in the ID array follows the order corresponding to the code. In some embodiments, the point cloud is converted from the 3D space into the ID array without any code, i.e., in its native input order, such that the set of points in the ID array follows the native input order.
[0079] At operation 1002, a bitstream is parsed to obtain a first syntax element indicative of presence of at least one attribute associated with the set of points. In some embodiments, the first syntax element is coded in a sequence header. In some embodiments, at least one attribute associated with the set of points includes at least one of color or reflectance. In one example, color and reflectance are assigned with attribute indices of 0 and 1, respectively, when parsing the bitstream to obtain the third syntax elements. For example, decoder 201 may be configured to parse the attribute bitstream to obtain a first syntax element indicative of the presence of at least one attribute associated with the set of points.
[0080] At operation 1004, whether the first syntax element indicates that at least one attribute associated with the set of points is present is determined. For example, decoder 201 may be configured to determine whether the first syntax element indicates that at least one attribute associated with the set of points is present.
[0081] At operation 1006, in response to the first syntax element indicating that at least one attribute associated with the set of points is present, the bitstream is parsed to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points. In some embodiments, the second syntax element is coded in the sequence header. In some embodiments, a value of the second syntax element plus 1 is equal to a value of the maximum number of attributes. In one example, the value of the second syntax element is between 0 and 15, inclusive, and the default value of the second syntax element is -1. For example, decoder 201 may be configured to, in response to the first syntax element indicating that at least one attribute associated with the set of points is present, parse the bitstream to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points.
[0082] At operation 1008, for each attribute of the maximum number of attributes, the bitstream is parsed to obtain a respective third syntax element indicative of the presence of the corresponding attribute. In some embodiments, the third syntax element is coded in an attribute header. For example, decoder 201 may be configured to parse the bitstream to obtain, for each attribute of the maximum number of attributes, a respective third syntax element indicative of the presence of the corresponding attribute.
[0083] At operation 1010, for each third syntax element, whether the respective third syntax element indicates that the corresponding attribute is present is determined. For example, decoder 201 may be configured to parse the bitstream to determine, for each third syntax element, whether the respective third syntax element indicates that the corresponding attribute is present.
[0084] At operation 1012, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, the bitstream is parsed to obtain a set of fourth syntax elements associated with the corresponding at least one attribute. In some embodiments, the fourth syntax element is coded in the attribute header. In some embodiments, to parse the bitstream to obtain the set of fourth syntax elements, a common fourth syntax element associated with each of at least one attribute is parsed, and a specific fourth syntax element associated with only one of at least one attribute is parsed. In some embodiments, the fourth syntax element includes a transform-related syntax element. For example, the transformed-related syntax element may be parsed prior to the common fourth syntax element, and the common fourth syntax element may be parsed prior to the specific fourth syntax element. For example, decoder 201 may be configured to, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, parse the bitstream to obtain a set of fourth syntax elements associated with the corresponding at least one attribute.
[0085] At operation 1012, the corresponding at least one attribute is decoded based, at least in part, on the set of fourth syntax elements. For example, decoder 201 may be configured to decode the corresponding at least one attribute based, at least in part, on the set of fourth syntax elements.
[0086] According to some aspects of the present disclosure, various IDs are introduced at different levels to allow the parameter set synchronization at different levels in point cloud coding, for example, as shown in the hierarchy of FIG. 8. At the sequence level, an SPS-ID can be introduced to support multiple sequences and SPSs. In some embodiments, decoder 201 is configured to parse the bitstream to obtain, from the SPS header associated with the set of points (sequence), an SPS ID specifying the SPS. Correspondingly, in some embodiments, encoder 101 is configured to determine, in the SPS header, the SPS ID specifying the SPS. That is, each sequence and corresponding SPS may be assigned a unique ID to specify the sequence/SPS and distinguish the sequence/SPS from others. For example, an SPS ID (sequencejoarameter set id) may provide an ID for the SPS for reference by other syntax elements. In one example, the value of sequence param eter set id may be in the range of 0 to 31, inclusive; when not present, the default value of sequence parameter set id may be 0. As described above, the SPS header may include sequence-level parameters, i.e., parameters of each point of the set of points (sequence).
[0087] The example specification below illustrates the SPS-ID sequence param eter set id in the sequence header (e.g., SPS header having sequence-level parameters, such as bounding_box_present_flag and attribute present flag). As shown in the example specification, sequence param eter set id may specify the SPS.
Figure imgf000030_0001
Figure imgf000031_0001
[0088] At the property level, a property parameter set-ID (e.g., geometry parameter set-ID and attribute parameter set-ID) is introduced to allow different properties to have different parameter sets, as well as enable the linkage of each property parameter set to its corresponding SPS. In some embodiment, decoder 201 may also be configured to parse the bitstream to obtain, from a property parameter set header belonging to the SPS and associated with the property, a first property ID specifying the property parameter set, and a second property ID specifying the SPS to which the property parameter set belongs. Correspondingly, in some embodiments, encoder 101 may also be configured to determine, in the property parameter set header, the first property ID specifying the property parameter set, and the second property ID specifying the SPS to which the property parameter set belongs. That is, in order to specify the property/ property parameter set and distinguish the property/ property parameter set from others, as well as locate the property/ property parameter set in the hierarchy, each property parameter set may be assigned two property IDs, one specifying the property parameter set itself while the other one specifying its upper level, i.e., the SPS to which the property parameter set belongs. The property IDs thus can allow different properties to have different property information (e.g., parameters) and also correspond to different SPSs. As described above, the property parameter set header may include property-level parameters, i.e., parameters of the property of each point of the set of points (sequence).
[0089] In some embodiments, the property is a geometry, such that the property parameter set header is a geometry parameter set header, and the property IDs are geometry IDs. For example, a first geometry ID (geometry param eter set id) may indicate the geometry parameter set for reference by other syntax elements, and a second geometry ID (geometry _sequencej>arameter_set_id) may specify the value of sequence param eter set id for the SPS. In one example, the value of geometry _sequencej>arameter_set_id may be in the range of 0 to 31, inclusive; when not present, the default value of geometry sequence joarameter set id may be 0. The values of geometry _sequencej>arameter_set_id may be the same in all geometry parameter set headers that are referred to by the same sequence/SPS.
[0090] The example specification below illustrates the geometry parameter set-IDs geometry param eter set id and geometry _sequencej>arameter_set_id in the geometry header (e.g., geometry parameter set header having geometry-level parameters, such as gps_lcu_node_size_log2_minus_one and gps_implicit_geom_partition flag). As shown in the example specification, geometry param eter set id may specify the geometry parameter set, and geometry _sequencej>arameter_set_id may specify the SPS to which the geometry parameter set belongs.
Figure imgf000032_0001
Figure imgf000033_0001
[0091] In some embodiments, the property is an attribute (e.g., color or reflectance), such that the property parameter set header is an attribute parameter set header, and the property IDs are attribute IDs. For example, a first attribute ID (attribute param eter set id) may indicate the attribute parameter set for reference by other syntax elements, and a second attribute ID (attribute sequence parameter set id) may specify the value of attribute param eter set id for the SPS. In one example, the value of attribute sequence parameter set id may be in the range of 0 to 31, inclusive; when not present, the default value of geometry sequence parameter set id may be 0. The values of geometry _sequencej>arameter_set_id may be the same in all attribute parameter set headers that are referred to by the same sequence/SPS.
[0092] The example specification below illustrates the attribute parameter set-IDs attribute param eter set id and attribute sequence parameter set id in the attribute header (e.g., attribute parameter set header having attribute-level parameters, such as attributePresentFlag [ attrldx ], inputBitDepthMinus8[attrIdx], and outputBitDepthMinus8[attrIdx]). As shown in the example specification, attribute parameter set id may specify the attribute parameter set, and attribute sequence parameter set id may specify the SPS to which the attribute parameter set belongs.
Figure imgf000033_0002
Figure imgf000034_0001
[0093] At the slice property level, a slice property parameter set-ID (e.g., slice geometry parameter set-ID and slice attribute parameter set-ID) may be introduced to allow different slices of the same sequence to have different property parameter sets, as well as enable the linkage of each slice property parameter set to its corresponding property parameter set and SPS. In some embodiment, decoder 201 may be further configured to parse the bitstream to obtain, from a slice property parameter set header belonging to the property parameter set and associated with a slice of points of the set of points, at least a first slice property ID specifying the slice property parameter set, and a second slice property ID specifying the property parameter set to which the slice property parameter set belongs. Correspondingly, in some embodiments, encoder 101 may be further configured to determine, in the slice property parameter set header, at least the first slice property ID specifying the slice property parameter set, and the second slice property ID specifying the property parameter set to which the slice property parameter set belongs. That is, in order to specify the slice property/slice property parameter set and distinguish the slice property/ slice property parameter set from others, as well as locate the slice property/slice property parameter set in the hierarchy, each slice property parameter set may be assigned with at least two property IDs, one specifying the slice property parameter set itself while the other one specifying its immediate upper level, i.e., the property parameter set to which the slice property parameter set belongs. In some embodiments, the slice property IDs further include a third slice property ID specifying the SPS to which the slice property parameter set belongs. That is, each slice property parameter set may be further assigned with another property ID specifying the top level, i.e., the SPS to which the slice property parameter set and the property parameter set belong. The slice property IDs thus can allow different properties to have different property information (e.g., parameters) and also correspond to different SPSs and/or property parameter sets. As described above, the slice property parameter set header may include slice property-level parameters, i.e., parameters of the property of each point of the slice of points (slice).
[0094] In some embodiments, the property is a geometry, such that the slice property parameter set header is a slice geometry parameter set header, and the slice property IDs are slice geometry IDs. For example, a first slice geometry ID (gsh slice geometry parameter set id) may indicate the slice geometry parameter set for reference by other syntax elements, a second slice geometry ID (gsh_geometry_parameter_set_id) may specify the value of geometry param eter set id for the geometry parameter set, and a third slice geometry ID (gsh geometry sequence param eter set id) may specify the value of sequence param eter set id for the SPS. It is understood that in some examples, one of the second and third slice geometry IDs, e.g., gsh_geometry_parameter_set_id or gsh geom etry sequence param eter set id may be omitted from coding/parsing. The values of gsh_geometry_sequence_parameter_set_id may be the same in all slice geometry parameter set headers that are referred to by the same sequence/SPS, and the values of gsh_geometry param eter set id may be the same in all slice geometry parameter set headers that are referred to by the same geometry parameter set.
[0095] The example specification below illustrates the slice geometry parameter set-IDs gsh_slice_geometry_parameter_set_id, gsh geometry parameter set id, and gsh geometry sequence param eter set id in the slice geometry header (e.g., geometry slice header having slice geometry -level parameters, such as gsh context mode and gsh bounding boxjoresent flag). As shown in the example specification, gsh_slice_geometry_parameter_set_id may specify the slice geometry parameter set, gsh_geometry_parameter_set_id may specify the geometry parameter set to which the slice geometry parameter set belongs, and gsh geometry sequence joarameter set id may specify the
SPS to which the geometry parameter set/slice geometry parameter set belong. It is understood that in some examples, one of the second and third slice geometry IDs, e.g., gsh_geometry_parameter_set_id or gsh_geometry_sequence_parameter_set_id may be omitted from coding/parsing.
Figure imgf000036_0001
Figure imgf000037_0001
[0096] In some embodiments, the property is an attribute (e.g., color or reflectance), such that the slice property parameter set header is a slice attribute parameter set header, and the slice property IDs are slice attribute IDs. For example, a first slice attribute ID (ash_slice_attribute_parameter_set_id) may indicate the slice attribute parameter set for reference by other syntax elements, a second slice attribute ID (ash attribute param eter set id) may specify the value of attribute param eter set id for the attribute parameter set, and a third slice attribute ID (ash_attribute_sequence_parameter_set_id) may specify the value of sequence parameter set id for the SPS. It is understood that in some examples, one of the second and third slice geometry IDs, e.g., ash attribute parameter set id or ash_attribute_sequence_parameter_set_id may be omitted from coding/parsing. The values of ash attribute sequence param eter set id may be the same in all slice attribute parameter set headers that are referred to by the same sequence/SPS, and the values of ash attribute param eter set id may be the same in all slice attribute parameter set headers that are referred to by the same attribute parameter set.
[0097] The example specification below illustrates the slice attribute parameter set-IDs ash_slice_attribute_parameter_set_id, ash attribute parameter set id, and ash attribute sequence parameter set id in the slice attribute header (e.g., attribute slice header having slice attribute-level parameters). As shown in the example specification, ash_slice_attribute_parameter_set_id may specify the slice attribute parameter set, ash attribute parameter set id may specify the attribute parameter set to which the slice attribute parameter set belongs, and ash_attribute_sequence_parameter_set_id may specify the SPS to which the attribute parameter set/slice attribute parameter set belongs. It is understood that in some examples, one of the second and third slice attribute IDs, e.g., ash attribute parameter set id or ash_attribute_sequence_parameter_set_id may be omitted from coding/parsing.
Figure imgf000038_0001
[0098] In some embodiments, decoder 201 is further configured to decode the property of the slice of points based, at least in part, on the SPS ID, the first and second property IDs, and the first and second slice property IDs. Correspondingly, in some embodiments, encoder 101 is further configured to encode the property of the slice of points based, at least in part, on the SPS ID, the first and second property IDs, and the first and second slice property IDs.
[0099] FIG. 11 illustrates a flow chart of an exemplary method 1100 of point cloud encoding, according to some embodiments of the present disclosure. Method 1100 may be performed by encoder 101 of encoding system 100 or any other suitable point cloud encoding systems. Method 1100 may include operations 1102, 1104, 1106, 1108, and 1110 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order than shown in FIG. 11.
[0100] At operation 1102, a point cloud is represented in a ID array. The ID array includes a set of points (e.g., a sequence) following an order and each associated with a property. The order can include a Morton order, a Hilbert order, or a native input order. The property can include at least one of a geometry (e.g., a position) or an attribute. The attributes can include at least one of color or reflectance. In some embodiments, each point of the set of points is further associated with a position. In some embodiments, a Morton code or a Hilbert code (or any other suitable space-filling curves from 3D to ID) is used to convert a point cloud in a 3D space (e.g., a point cloud cube) into the ID array, such that the set of the points in the ID array follows the order corresponding to the code. In some embodiments, the point cloud is converted from the 3D space into the ID array without any code, i.e., in its native input order, such that the set of points in the ID array follows the native input order. For example, encoder 101 may be configured to represent the point cloud in a ID array including a set of points each associated with a property.
[0101] At operation 1104, in a header of an SPS, an SPS ID specifying the SPS is determined. In some embodiments, the header of the SPS includes a parameter for each point of the set of points. In one example, the range of the SPS ID is between 0 and 31, inclusive, and a default value of the SPS ID is 0. For example, encoder 101 may be configured to determine, in a header of an SPS associated with the set of points, an SPS ID specifying the SPS.
[0102] At operation 1106, in a header of a property parameter set belonging to the SPS and associated with the property, a first property ID specifying the property parameter set is determined, and a second property ID specifying the SPS to which the property parameter set belongs is determined. In some embodiments, the header of the property parameter set includes a parameter of the property of each point of the set of points. In one example, a range of each of the first and second property IDs is between 0 and 31, inclusive. For example, encoder 101 may be configured to determine, in a header of a property parameter set belonging to the SPS and associated with the property, a first property ID specifying the property parameter set, and a second property ID specifying the SPS to which the property parameter set belongs.
[0103] At operation 1108, in a header of a slice property parameter set belonging to the property parameter set and associated with a slice of points of the set of points, at least a first slice property ID specifying the slice property parameter set, and a second slice property ID specifying the property parameter set to which the slice property parameter set belongs, are determined. In some embodiments, the header of the slice property parameter set includes a parameter of the property of each point of the slice of points. In some embodiments, in the header of the slice property parameter set, a third slice property ID specifying the SPS to which the slice property parameter set belongs is determined as well. For example, encoder 101 may be configured to determine in a header of a slice property parameter set belonging to the property parameter set and associated with a slice of points of the set of points, a first slice property ID specifying the slice property parameter set, a second slice property ID specifying the property parameter set to which the slice property parameter set belongs, and a third slice property ID specifying the SPS to which the slice property parameter set belongs.
[0104] At operation 1110, the property of the slice of points is encoded based, at least in part, on the SPS ID, the first and second property IDs, and the first and second slice property IDs. For example, encoder 101 may be configured to encode the property of the slice of points based, at least in part, on the SPS ID, the first and second property IDs, and the first and second slice property IDs.
[0105] FIG. 12 illustrates a flow chart of an exemplary method 1200 of point cloud decoding, according to some embodiments of the present disclosure. Method 1200 may be performed by decoder 201 of decoding system 200 or any other suitable point cloud decoding systems. Method 1200 may include operations 1202, 1204, 1206, and 1208 as described below. It is understood that some of the operations may be optional, and some of the operations may be performed simultaneously, or in a different order other than shown in FIG. 12.
[0106] A point cloud is represented in a ID array including a set of points each associated with a property, e.g., one or more attributes and a geometry (e.g., position). The attributes can include at least one of color or reflectance. In some embodiments, the set of points follows an order in the ID array. In some embodiments, Morton code or Hilbert code (or any other suitable space-filling curves from 3D to ID) is used to convert a point cloud in a 3D space (e.g., a point cloud cube) into the ID array, such that the set of the points in the ID array follows the order corresponding to the code. In some embodiments, the point cloud is converted from the 3D space into the ID array without any code, i.e., in its native input order, such that the set of points in the ID array follows the native input order.
[0107] At operation 1202, a bitstream is parsed to obtain, from a header of an SPS associated with the set of points, an SPS ID specifying the SPS. In some embodiments, the header of the SPS includes a parameter of each point of the set of point. In one example, a range of the SPS ID is between 0 and 31, inclusive, and a default value of the SPS ID is 0. For example, decoder 201 may be configured to parse the attribute bitstream to obtain, from a header of an SPS associated with the set of points, an SPS ID specifying the SPS.
[0108] At operation 1204, the bitstream is parsed to obtain, from a header of a property parameter set belonging to the SPS and associated with the property, a first property ID specifying the property parameter set, and a second property ID specifying the SPS to which the property parameter set belongs. In some embodiments, the header of the property parameter set includes a parameter of the property of each point of the set of points. In one example, a range of each of the first and second property IDs is between 0 and 31, inclusive. For example, decoder 201 may be configured to parse the bitstream to obtain, from a header of a property parameter set belonging to the SPS and associated with the property, a first property ID specifying the property parameter set, and a second property ID specifying the SPS to which the property parameter set belongs.
[0109] At operation 1206, the bitstream is parsed to obtain, from a header of a slice property parameter set belonging to the property parameter set and associated with a slice of points of the set of points, at least a first slice property ID specifying the slice property parameter set, and a second slice property ID specifying the property parameter set to which the slice property parameter set belongs. In some embodiments, the header of the slice property parameter set includes a parameter of the property of each point of the slice of points. In some embodiments, the bitstream is parsed to obtain, from the header of the slice property parameter set, a third slice property ID specifying the SPS to which the slice property parameter set belongs as well. For example, decoder 201 may be configured to parse the bitstream to obtain, from a header of a slice property parameter set belonging to the property parameter set and associated with a slice of points of the set of points, at least a first slice property ID specifying the slice property parameter set, a second slice property ID specifying the property parameter set to which the slice property parameter set belongs, and a third slice property ID specifying the SPS to which the slice property parameter set belongs.
[0110] At operation 1208, the property of the slice of points is decoded based, at least in part, on the SPS ID, the first and second property IDs, and the first and second slice property IDs. For example, decoder 201 may be configured to decode the property of the slice of points based, at least in part, on the SPS ID, the first and second property IDs, and the first and second slice property IDs.
[OHl] In various aspects of the present disclosure, the functions described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as instructions on a non-transitory computer-readable medium. Computer-readable media includes computer storage media. Storage media may be any available media that can be accessed by a processor, such as processor 102 in FIGs. 1 and 2. By way of example, and not limitation, such computer-readable media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, HDD, such as magnetic disk storage or other magnetic storage devices, Flash drive, SSD, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a processing system, such as a mobile device or a computer. Disk and disc, as used herein, includes CD, laser disc, optical disc, digital video disc (DVD), and floppy disk where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0112] According to one aspect of the present disclosure, a method for decoding a point cloud is disclosed. The point cloud is represented in a ID array including a set of points. A bitstream is parsed by a processor to obtain a first syntax element indicative of the presence of at least one attribute associated with the set of points. Whether the first syntax element indicates that at least one attribute associated with the set of points is present is determined by the processor. In response to the first syntax element indicating that at least one attribute associated with the set of points is present, the bitstream is parsed by the processor to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points. The bitstream is parsed by the processor to obtain, for each attribute of the maximum number of attributes, a respective third syntax element indicative of the presence of the corresponding attribute.
[0113] In some embodiments, for each third syntax element, whether the respective third syntax element indicates that the corresponding attribute is present is determined. In some embodiments, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, the bitstream is parsed to obtain a set of fourth syntax elements associated with the corresponding at least one attribute.
[0114] In some embodiments, the corresponding at least one attribute is decoded based, at least in part, on the set of fourth syntax elements.
[0115] In some embodiments, to parse the bitstream to obtain the set of fourth syntax elements, the bitstream is parsed to obtain a common fourth syntax element associated with each of the at least one attribute, and the bitstream is parsed to obtain a specific fourth syntax element associated with only one of the at least one attribute.
[0116] In some embodiments, the fourth syntax element includes a transform-related syntax element.
[0117] In some embodiments, the first and second syntax elements are coded in a sequence header, and the third and fourth syntax elements are coded in an attribute header.
[0118] In some embodiments, a value of the second syntax element plus 1 is equal to a value of the maximum number of attributes.
[0119] In some embodiments, the value of the second syntax element is between 0 and 15, inclusive, and a default value of the second syntax element of attributes is -1.
[0120] In some embodiments, the at least one attribute associated with the set of points includes at least one of color or reflectance.
[0121] In some embodiments, color and reflectance are assigned with attribute indices of 0 and 1, respectively, when parsing the bitstream to obtain the third syntax elements.
[0122] According to another aspect of the present disclosure, a system for decoding a point cloud includes a memory configured to store instructions and a processor coupled to the memory. The point cloud is represented in a ID array including a set of points. The processor is configured to, upon executing the instructions, parse a bitstream to obtain a first syntax element indicative of the presence of at least one attribute associated with the set of points. The processor is also configured to, upon executing the instructions, determine whether the first syntax element indicates that the at least one attribute associated with the set of points is present. The processor is further configured to, upon executing the instructions, in response to the first syntax element indicating that the at least one attribute associated with the set of points is present, parse the bitstream to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points. The processor is further configured to, upon executing the instructions, parse the bitstream to obtain, for each attribute of the maximum number of attributes, a respective third syntax element indicative of the presence of the corresponding attribute.
[0123] According to still another aspect of the present disclosure, a method for encoding a point cloud is disclosed. The point cloud is represented in a ID array including a set of points. A first syntax element indicating whether at least one attribute associated with the set of points is present is determined by a processor. In response to the first syntax element indicating that the at least one attribute associated with the set of points is present, a second syntax element indicative of a maximum number of attributes associated with the set of points is determined by the processor. For each attribute of the maximum number of attributes, a respective third syntax element indicating whether the corresponding attribute is present is determined by the processor.
[0124] In some embodiments, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, a set of fourth syntax elements associated with the corresponding at least one attribute is determined.
[0125] In some embodiments, the corresponding at least one attribute is encoded based, at least in part, on the set of fourth syntax elements.
[0126] In some embodiments, to determine the set of fourth syntax elements, a common fourth syntax element associated with each of the at least one attribute is determined, and a specific fourth syntax element associated with only one of the at least one attribute is determined.
[0127] In some embodiments, the fourth syntax element includes a transform-related syntax element.
[0128] In some embodiments, the first and second syntax elements are coded in a sequence header, and the third and fourth syntax elements are coded in an attribute header.
[0129] In some embodiments, a value of the second syntax element plus 1 is equal to a value of the maximum number of attributes.
[0130] In some embodiments, the value of the second syntax element is between 0 and 15, inclusive, and a default value of the second syntax element of attributes is -1.
[0131] In some embodiments, the at least one attribute associated with the set of points includes at least one of color or reflectance.
[0132] In some embodiments, color and reflectance are assigned with attribute indices of 0 and 1, respectively.
[0133] According to yet another aspect of the present disclosure, a system for encoding a point cloud includes a memory configured to store instructions and a processor coupled to the memory. The point cloud is represented in a ID array including a set of points. The processor is configured to, upon executing the instructions, determine a first syntax element indicating whether at least one attribute associated with the set of points is present. The processor is also configured to, upon executing the instructions, in response to the first syntax element indicating that the at least one attribute associated with the set of points is present, determine a second syntax element indicative of a maximum number of attributes associated with the set of points. The processor is further configured to, upon executing the instructions, determine for each attribute of the maximum number of the attributes, a respective third syntax element indicating whether the corresponding attribute is present.
[0134] The foregoing description of the embodiments will so reveal the general nature of the present disclosure that others can, by applying knowledge within the skill of the art, readily modify and/or adapt for various applications such embodiments, without undue experimentation, without departing from the general concept of the present disclosure. Therefore, such adaptations and modifications are intended to be within the meaning and range of equivalents of the disclosed embodiments, based on the teaching and guidance presented herein. It is to be understood that the phraseology or terminology herein is for the purpose of description and not of limitation, such that the terminology or phraseology of the present specification is to be interpreted by the skilled artisan in light of the teachings and guidance.
[0135] Embodiments of the present disclosure have been described above with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed.
[0136] The Summary and Abstract sections may set forth one or more but not all exemplary embodiments of the present disclosure as contemplated by the inventor(s), and thus, are not intended to limit the present disclosure and the appended claims in any way.
[0137] Various functional blocks, modules, and steps are disclosed above. The arrangements provided are illustrative and without limitation. Accordingly, the functional blocks, modules, and steps may be reordered or combined in different ways than in the examples provided above. Likewise, some embodiments include only a subset of the functional blocks, modules, and steps, and any such subset is permitted.
[0138] 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

- 44 - WHAT IS CLAIMED IS:
1. A method for decoding a point cloud, the point cloud being represented in a one- dimension (ID) array comprising a set of points, the method comprising: parsing, by a processor, a bitstream to obtain a first syntax element indicative of presence of at least one attribute associated with the set of points; determining, by the processor, whether the first syntax element indicates that the at least one attribute associated with the set of points is present; in response to the first syntax element indicating that the at least one attribute associated with the set of points is present, parsing, by the processor, the bitstream to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points; and parsing, by the processor, the bitstream to obtain, for each attribute of the maximum number of attributes, a respective third syntax element indicative of presence of the corresponding attribute.
2. The method of claim 1, further comprising: determining, for each third syntax element, whether the respective third syntax element indicates that the corresponding attribute is present; and in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, parsing the bitstream to obtain a set of fourth syntax elements associated with the corresponding at least one attribute.
3. The method of claim 2, further comprising decoding the corresponding at least one attribute based, at least in part, on the set of fourth syntax elements.
4. The method of claim 2, wherein parsing the bitstream to obtain the set of fourth syntax elements comprises: parsing the bitstream to obtain a common fourth syntax element associated with each of the at least one attribute; and parsing the bitstream to obtain a specific fourth syntax element associated with only one of the at least one attribute.
5. The method of claim 1, wherein the fourth syntax element comprises a transformrelated syntax element. - 45 -
6. The method of claim 2, wherein the first and second syntax elements are coded in a sequence header, and the third and fourth syntax elements are coded in an attribute header.
7. The method of claim 1, wherein a value of the second syntax element plus 1 is equal to a value of the maximum number of attributes.
8. The method of claim 1, wherein the value of the second syntax element is between 0 and 15, inclusive, and a default value of the second syntax element is -1.
9. The method of claim 1, wherein the at least one attribute associated with the set of points comprises at least one of color or reflectance.
10. The method of claim 9, wherein color and reflectance are assigned with attribute indices of 0 and 1, respectively, when parsing the bitstream to obtain the third syntax elements.
11. A system for decoding a point cloud, the point cloud being represented in a one- dimension (ID) array comprising a set of points, the system comprising: a memory configured to store instructions; and a processor coupled to the memory and configured to, upon executing the instructions: parse a bitstream to obtain a first syntax element indicative of presence of at least one attribute associated with the set of points; determine whether the first syntax element indicates that the at least one attribute associated with the set of points is present; in response to the first syntax element indicating that the at least one attribute associated with the set of points is present, parse the bitstream to obtain a second syntax element indicative of a maximum number of attributes associated with the set of points; and parse the bitstream to obtain, for each attribute of the maximum number of attributes, a respective third syntax element indicative of presence of the corresponding attribute. - 46 -
12. A method for encoding a point cloud, the point cloud being represented in a one- dimension (ID) array comprising a set of points, the method comprising: determining, by a processor, a first syntax element indicating whether at least one attribute associated with the set of points is present; in response to the first syntax element indicating that the at least one attribute associated with the set of points is present, determining, by the processor, a second syntax element indicative of a maximum number of attributes associated with the set of points; and determining, by the processor, for each attribute of the maximum number of attributes, a respective third syntax element indicating whether the corresponding attribute is present.
13. The method of claim 12, further comprising, in response to at least one of the third syntax elements indicating that the corresponding at least one attribute is present, determining a set of fourth syntax elements associated with the corresponding at least one attribute.
14. The method of claim 13, further comprising encoding the corresponding at least one attribute based, at least in part, on the set of fourth syntax elements.
15. The method of claim 13, wherein determining the set of fourth syntax elements comprises: determining a common fourth syntax element associated with each of the at least one attribute; and determining a specific fourth syntax element associated with only one of the at least one attribute.
16. The method of claim 12, wherein the fourth syntax element comprises a transformrelated syntax element.
17. The method of claim 13, wherein the first and second syntax elements are coded in a sequence header, and the third and fourth syntax elements are coded in an attribute header.
18. The method of claim 12, wherein a value of the second syntax element plus 1 is equal to a value of the maximum number of attributes.
19. The method of claim 12, wherein the value of the second syntax element is between 0 and 15, inclusive, and a default value of the second syntax element is -1.
20. The method of claim 12, wherein the at least one attribute associated with the set of points comprises at least one of color or reflectance.
21. The method of claim 20, wherein color and reflectance are assigned with attribute indices of 0 and 1, respectively.
22. A system for encoding a point cloud, the point cloud being represented in a one- dimension (ID) array comprising a set of points, the system comprising: a memory configured to store instructions; and a processor coupled to the memory and configured to, upon executing the instructions: determine a first syntax element indicating whether at least one attribute associated with the set of points is present; in response to the first syntax element indicating that the at least one attribute associated with the set of points is present, determine a second syntax element indicative of a maximum number of attributes associated with the set of points; and determine, for each attribute of the maximum number of the attributes, a respective third syntax element indicating whether the corresponding attribute is present.
PCT/US2022/050869 2021-11-23 2022-11-23 Geometry point cloud coding WO2023096973A1 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US202163264509P 2021-11-23 2021-11-23
US63/264,509 2021-11-23
US202163285957P 2021-12-03 2021-12-03
US63/285,957 2021-12-03
US202263366904P 2022-06-23 2022-06-23
US63/366,904 2022-06-23

Publications (1)

Publication Number Publication Date
WO2023096973A1 true WO2023096973A1 (en) 2023-06-01

Family

ID=86540298

Family Applications (2)

Application Number Title Priority Date Filing Date
PCT/US2022/050869 WO2023096973A1 (en) 2021-11-23 2022-11-23 Geometry point cloud coding
PCT/US2022/050875 WO2023096978A1 (en) 2021-11-23 2022-11-23 Geometry point cloud coding

Family Applications After (1)

Application Number Title Priority Date Filing Date
PCT/US2022/050875 WO2023096978A1 (en) 2021-11-23 2022-11-23 Geometry point cloud coding

Country Status (1)

Country Link
WO (2) WO2023096973A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210201539A1 (en) * 2018-09-14 2021-07-01 Huawei Technologies Co., Ltd. Attribute Support In Point Cloud Coding
WO2021199781A1 (en) * 2020-03-30 2021-10-07 Kddi株式会社 Point group decoding device, point group decoding method, and program

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4090028A4 (en) * 2020-01-07 2023-04-26 LG Electronics Inc. Point cloud data transmission apparatus, point cloud data transmission method, point cloud data reception apparatus, and point cloud data reception method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210201539A1 (en) * 2018-09-14 2021-07-01 Huawei Technologies Co., Ltd. Attribute Support In Point Cloud Coding
WO2021199781A1 (en) * 2020-03-30 2021-10-07 Kddi株式会社 Point group decoding device, point group decoding method, and program

Also Published As

Publication number Publication date
WO2023096978A1 (en) 2023-06-01

Similar Documents

Publication Publication Date Title
US11924468B2 (en) Implicit quadtree or binary-tree geometry partition for point cloud coding
US10904564B2 (en) Method and apparatus for video coding
US11166048B2 (en) Method and apparatus for video coding
US11010931B2 (en) Method and apparatus for video coding
US11469771B2 (en) Method and apparatus for point cloud compression
WO2023172703A1 (en) Geometry point cloud coding
WO2023028177A1 (en) Attribute coding in geometry point cloud coding
WO2023278829A1 (en) Attribute coding in geometry point cloud coding
US20220180567A1 (en) Method and apparatus for point cloud coding
WO2023096973A1 (en) Geometry point cloud coding
WO2023250100A1 (en) System and method for geometry point cloud coding
EP4364082A1 (en) Attribute coding in geometry point cloud coding
WO2023107868A1 (en) Adaptive attribute coding for geometry point cloud coding
WO2023172705A1 (en) Attribute level coding for geometry point cloud coding
RU2778864C1 (en) Implicit geometric division based on a quad-tree or binary tree for encoding a point cloud
EP4325853A1 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
WO2024085936A1 (en) System and method for geometry point cloud coding
CN117813822A (en) Attribute codec in geometric point cloud codec
WO2024010919A1 (en) System and method for geometry point cloud coding
WO2024081133A1 (en) Sparse tensor-based bitwise deep octree coding

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22899376

Country of ref document: EP

Kind code of ref document: A1