Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
ATTRIBUTE CODING IN GEOMETRY POINT CLOUD CODING
Document Type and Number:
WIPO Patent Application WO/2023/278829
Kind Code:
A1
Abstract:
In certain aspects, a method for encoding a point cloud is disclosed. The point cloud is represented in a one-dimension (ID) array by a processor. The ID array includes a set of points each associated with one or more attributes. An index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point is obtained by the processor. The maximum number of candidate points is determined by the processor based on the index. The at least one attribute associated with a current point in the set of points is encoded by the processor into a bitstream based on the at least one attribute associated with a set of candidate points. The number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number.

Inventors:
YU YUE (US)
YU HAOPING (US)
ZAKHARACHENKO VLADYSLAV (US)
Application Number:
PCT/US2022/035927
Publication Date:
January 05, 2023
Filing Date:
July 01, 2022
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
INNOPEAK TECH INC (US)
International Classes:
G06T3/40; G06T9/00; G06T17/20
Foreign References:
US20130297574A12013-11-07
US20200311984A12020-10-01
US20200380760A12020-12-03
US20170214943A12017-07-27
US20210407144A12021-12-30
Other References:
GRAZIOSI D., NAKAGAMI O., KUMA S., ZAGHETTO A., SUZUKI T., TABATABAI A.: "An overview of ongoing point cloud compression standardization activities: video-based (V-PCC) and geometry-based (G-PCC)", APSIPA TRANSACTIONS ON SIGNAL AND INFORMATION PROCESSING, vol. 9, no. 1, 1 January 2020 (2020-01-01), XP093012170, ISSN: 2048-7703, DOI: 10.1017/ATSIP.2020.12
YAN HUANG, JINGLIANG PENG, KUO C.-C.J., GOPI M.: "A Generic Scheme for Progressive Point Cloud Coding", IEEE TRANSACTIONS ON VISUALIZATION AND COMPUTER GRAPHICS, IEEE, USA, vol. 14, no. 2, 1 March 2008 (2008-03-01), USA, pages 440 - 453, XP055806302, ISSN: 1077-2626, DOI: 10.1109/TVCG.2007.70441
Attorney, Agent or Firm:
ZOU, Zhiwei (US)
Download PDF:
Claims:
WHAT IS CLAIMED IS:

1. A method for encoding a point cloud, comprising: representing, by a processor, the point cloud in a one-dimension (ID) array, wherein the ID array comprises a set of points each associated with one or more attributes; obtaining, by the processor, an index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point; determining, by the processor, the maximum number of candidate points based on the index; and encoding, by the processor, the at least one attribute associated with a current point in the set of points into a bitstream based on the at least one attribute associated with a set of candidate points, wherein a number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number.

2. The method of claim 1, wherein determining the maximum number of candidate points comprises calculating a value where idx represents a value of the index.

3. The method of claim 2, wherein the value of the index is selected from the group consisting of 0, 1, 2, and 3.

4. The method of claim 1, wherein the index is for setting the maximum number of candidate points for coding each of the attributes.

5. The method of claim 1, wherein the index is for setting the maximum number of candidate points for coding only one of the attributes.

6. The method of claim 1, wherein the attributes comprise at least one of color or reflectance.

7. The method of claim 1, wherein the set of points follows Morton order or Hilbert order in the ID array; and the set of candidate points are neighboring points prior to the current point in the ID array. 8. The method of claim 7, wherein encoding the at least one attribute associated with the current point comprises: selecting a set of prediction points from the set of candidate points; and encoding the at least one attribute associated with the current point based on the at least one attribute associated with the set of prediction points.

9. The method of claim 8, wherein each point of the set of points is further associated with a position; and the set of prediction points is selected based on the positions associated with the candidate points and the current point.

10. The method of claim 1, further comprising encoding the index into the bitstream.

11. A system for encoding a point cloud, comprising: a memory configured to store instructions; and a processor coupled to the memory and configured to, upon executing the instructions: represent the point cloud in a one-dimension (ID) array, wherein the ID array comprises a set of points each associated with one or more attributes; obtain an index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point; determine the maximum number of candidate points based on the index; and encode the at least one attribute associated with a current point in the set of points into a bitstream based on the at least one attribute associated with a set of candidate points, wherein a number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number.

12. The system of claim 11, wherein to determine the maximum number of candidate points, the processor is configured to calculate a value of 2 ('ί/g_7), where idx represents a value of the index.

13. The system of claim 12, wherein the value of the index is selected from the group consisting of 0, 1, 2, and 3. 14. The system of claim 11, wherein the index is for setting the maximum number of candidate points for coding each of the attributes.

15. The system of claim 11, wherein the index is for setting the maximum number of candidate points for coding only one of the attributes.

16. The system of claim 11, wherein the attributes comprise at least one of color or reflectance.

17. The system of claim 11, wherein the set of points follows Morton order or Hilbert order in the ID array; and the set of candidate points are neighboring points prior to the current point in the ID array.

18. The system of claim 17, wherein to encode the at least one attribute associated with the current point, the processor is configured to: select a set of prediction points from the set of candidate points; and encode the at least one attribute associated with the current point based on the at least one attribute associated with the set of prediction points.

19. The system of claim 18, wherein each point of the set of points is further associated with a position; and the set of prediction points is selected based on the positions associated with the candidate points and the current point.

20. The system of claim 11, wherein the processor is further configured to encode the index into the bitstream.

21. A method for decoding a point cloud, the point cloud being represented in a one- dimension (ID) array comprising a set of points each associated with one or more attributes, the method comprising: decoding, by a processor, a bitstream to obtain: an index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point; and the at least one attribute associated with a set of candidate points for coding the at least one attribute associated with a current point in the set of points; determining, by the processor, the maximum number of candidate points based on the index; and determining, by the processor, the at least one attribute associated with the current point based on the at least one attribute associated with the set of candidate points, wherein a number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number.

22. The method of claim 21, wherein determining the maximum number of candidate points comprises calculating a value where idx represents a value of the index.

23. The method of claim 22, wherein the value of the index is selected from the group consisting of 0, 1, 2, and 3.

24. The method of claim 21, wherein the index is for setting the maximum number of candidate points for coding each of the attributes.

25. The method of claim 21, wherein the index is for setting the maximum number of candidate points for coding only one of the attributes.

26. The method of claim 21, wherein the attributes comprise at least one of color or reflectance.

27. The method of claim 21, wherein the set of points follows Morton order or Hilbert order in the ID array; and the set of candidate points are neighboring points prior to the current point in the ID array.

28. The method of claim 27, wherein determining the at least one attribute associated with the current point comprises: selecting a set of prediction points from the set of candidate points; and determining the at least one attribute associated with the current point based on the at least one attribute associated with the set of prediction points.

29. The method of claim 28, wherein each point of the set of points is further associated with a position; and the set of prediction points is selected based on the positions associated with the candidate points and the current point.

30. The method of claim 29, further comprising decoding the bitstream to obtain the positions associated with the candidate points and the current point.

31. A system for decoding a point cloud, the point cloud being represented in a one- dimension (ID) array comprising a set of points each associated with one or more attributes, the system comprising: a memory configured to store instructions; and a processor coupled to the memory and configured to, upon executing the instructions: decode a bitstream to obtain: an index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point; and the at least one attribute associated with a set of candidate points for coding the at least one attribute associated with a current point in the set of points; determine the maximum number of candidate points based on the index; and determine the at least one attribute associated with the current point based on the at least one attribute associated with the set of candidate points, wherein a number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number.

32. The system of claim 31, wherein to determine the maximum number of candidate points, the processor is configured to calculate a value of 2 ('ί/g_7), where idx represents a value of the index. 33. The system of claim 32, wherein the value of the index is selected from the group consisting of 0, 1, 2, and 3.

34. The system of claim 31, wherein the index is for setting the maximum number of candidate points for coding each of the attributes.

35. The system of claim 31, wherein the index is for setting the maximum number of candidate points for coding only one of the attributes.

36. The system of claim 31, wherein the attributes comprise at least one of color or reflectance.

37. The system of claim 31, wherein the set of points follows Morton order or Hilbert order in the ID array; and the set of candidate points are neighboring points prior to the current point in the ID array.

38. The system of claim 37, wherein to determine the at least one attribute associated with the current point, the processor is configured to: select a set of prediction points from the set of candidate points; and determine the at least one attribute associated with the current point based on the at least one attribute associated with the set of prediction points.

39. The system of claim 38, wherein each point of the set of points is further associated with a position; and the set of prediction points is selected based on the positions associated with the candidate points and the current point.

40. The system of claim 39, wherein the processor is further configured to decode the bitstream to obtain the positions associated with the candidate points and the current point.

Description:
ATTRIBUTE CODING IN GEOMETRY POINT CLOUD CODING

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application claims the benefit of priorities to U. S. Provisional Application No.

63/218, 215, entitled “FLEXIBLE MAXIMUM NUMBER OF NEIGHBORING POINT CLOUD BASED ATTRIBUTE CODING FOR G-PCC,” and filed on July 2, 2021, and to U S. Provisional Application No. 63/264,509, entitled “GEOMETRY POINT CLOUD CODING,” and filed on November 23, 2021, both 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 encoding a point cloud is disclosed. The point cloud is represented in a one-dimension (ID) array by a processor. The ID array includes a set of points each associated with one or more attributes. An index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point is obtained by the processor. The maximum number of candidate points is determined by the processor based on the index. The at least one attribute associated with a current point in the set of points is encoded by the processor into a bitstream based on the at least one attribute associated with a set of candidate points. The number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number.

[0005] According to 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 processor is configured to, upon executing the instructions, represent the point cloud in a ID array. The ID array includes a set of points each associated with one or more attributes. The processor is also configured to, upon executing the instructions, obtain an index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point. The processor is further configured to, upon executing the instructions, determine the maximum number of candidate points based on the index. The processor is further configured to, upon executing the instructions, encode the at least one attribute associated with a current point in the set of points into a bitstream based on the at least one attribute associated with a set of candidate points. A number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number.

[0006] According to still another 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 each associated with one or more attributes. A bitstream is decoded by a processor to obtain an index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point, and the at least one attribute associated with a set of candidate points for coding the at least one attribute associated with a current point in the set of points. The maximum number of candidate points is determined by the processor based on the index. The at least one attribute associated with the current point is determined by the processor based on the at least one attribute associated with the set of candidate points. A number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number.

[0007] According to yet 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 each associated with one or more attributes. The processor is configured to, upon executing the instructions, decode a bitstream to obtain an index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point, and the at least one attribute associated with a set of candidate points for coding the at least one attribute associated with a current point in the set of points. The processor is also configured to, upon executing the instructions, determine the maximum number of candidate points based on the index. The processor is further configured to, upon executing the instructions, determine the at least one attribute associated with the current point based on the at least one attribute associated with the set of candidate points. A number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number.

[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 ID array of points representing a point cloud and a set of candidate points with a configurable maximum number, 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 attribute coding in point cloud coding, according to some embodiments of the present disclosure.

[0020] FIG. 11 illustrates a flow chart of an exemplary method for decoding a point cloud, according to some embodiments of the present disclosure.

[0021] FIG. 12 illustrates a flow chart of an exemplary method for attribute coding in point cloud coding, 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] In existing G-PCC standards, after the geometry information is coded, Morton code

(a.k.a., Morton curve, z-order curve) or Hilbert code (a.k.a., Hilbert curve) may be used to convert a point cloud in 3D into a ID array. The attribute coding may follow the predefined Morton or Hilbert order. A predictor may be generated from the previous coded points in Morton or Hilbert order. The attribute difference between the current point and its predictor may be coded into the bitstream. [0029] 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 Appoints among previous at most N consecutively coded points may be used for coding the attribute of the current point. For example, in the existing AVS G-PCC specification, M and N are predefined, fixed numbers of 3 and 128, respectively. However, a predefined, fixed maximum number of previous coded points in a point cloud, e.g., 128 for attribute coding in AVS, is not flexible enough even if the coding systems can afford more computation and have larger memory. [0030] To improve the flexibility of point cloud coding, the present disclosure provides a scheme with a configurable maximum number of neighboring previously coded points in a point cloud (point cloud data) for attribute coding in point cloud coding. Instead of a predefined, fixed maximum number, e.g., 128 in AVS G-PCC, the attribute coding scheme disclosed herein allows the coding systems to dynamically configure the maximum number of neighboring previously coded point cloud data, for example, based on their computation resources and/or memory size. For example, N represents the maximum number of neighboring points prior to the current point in the ID array according to the predefined order, e.g., Morton or Hilbert order, and N may be dynamically configured to be equal to a number, e.g., a power of 2, such as 128, 256, 512, or 1024. [0031] In some embodiments, the maximum number N does not need to be coded into bitstream directly. Instead, an index represented by a smaller number of bits than the maximum number N can be coded into the bitstream by fixed-length coding, e.g., using 2-bit or 3 -bit fixed- length binary numbers. The maximum number N can then be calculated based on the index, which reduces the number of additional bits in the bitstream to represent the configurable maximum number N.

[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 apparatus 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 to one 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), ferro electric RAM (FRAM), electrically erasable programmable ROM (EEPROM), compact disc read only memory (CD-ROM) or other optical disk storage, hard disk drive (HDD), such as magnetic disk storage or other magnetic storage 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 (I/O) 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 = ( x k , y k> z ), k = 1, ... , K , where K is the number of points in the point cloud, and attributes A = (A l ,A 2k , A Dk ), 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 (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. 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 point 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, Morton code or Hilbert code may be used to convert a point cloud in a 3D space (e.g., a pint 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.

[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 Appoints among previous at most A 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 ( < //) 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 A of candidate points (n < A), and the number m of prediction points in the set is equal to or smaller than the maximum number 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 or Hilbert order is larger than the maximum number A 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 or Hilbert order is larger than or equal to the maximum number A 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 the current AVS G-PCC specification, M and 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 — x2| + |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 or Hilbert 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. However, a predefined, fixed number of the maximum number M (e.g., 128) of candidate points is not flexible since different point cloud coding systems and/or applications may have different requirements to balance the memory/computation resource consumption and the accuracy of the prediction. For example, certain point cloud coding systems and/or applications may afford more computation resources and have larger memory and may require higher accuracy of prediction, which in turn need a larger number of candidate points for prediction. In contrast, certain point cloud coding systems and/or applications may afford fewer computation resources and have smaller memory while requiring a lower accuracy of prediction, which in turn need a smaller number of candidate points for prediction.

[0047] Consistent with the scope of the present disclosure, a dynamic, configurable maximum number of candidate points is introduced to replace the predefined, fixed maximum number of candidate points, for attribute coding in point cloud coding, for example, for predicting transform. For example, FIG. 8 illustrates an exemplary ID array of points representing a point cloud and a set of candidate points with a configurable maximum number, according to some embodiments of the present disclosure. The set of points ( P ) may follow Morton order or Hilbert order in the ID array. The set of candidate points may be neighboring points prior to the current point in the ID array following the Morton order or the Hilbert order. A set of prediction points (e.g., 3 points P, bolded and underlined) may be selected from the set of candidate points. As shown in FIG. 8, the maximum number A of candidate points for attribute coding of a current point (shaded in grey) in the ID array is dynamically configurable, for example, with different possible values of Nl, N2, ... M. For example, the value of N may be a positive integer. In one example, the value of N may be an integer multiple of 128, such as 128, 256, 384, 512, etc., to be better compatible with the fixed number of 128 in the existing AVS G-PCC standard. In another example, the value of N may be a power of 2, such as 128, 256, 512, 1024, etc., which is also compatible with the fixed number of 128 in the existing AVS G-PCC standard. In some embodiments, the value of N may not exceed 1024 from a conformance point of view.

[0048] In some embodiments, to further reduce the number of bits representing the configurable maximum number (maxNumOfNeighbours) in the bitstream, an index (maxNumOfNeighbours index), as opposed to the maximum number itself, may be encoded into the bitstream by fixed-length coding (/(//)), and used for calculating the value of the configurable maximum number of candidate points. That is, both the encoder and decoder can obtain the index first, and then determine the configurable maximum number of candidate points based on the index according to a predefined relationship between the index and the maximum number of candidate points.

[0049] In one example, the value N of the maximum number of candidate points may be determined by the following equation:

]\f = 2 ( dx+7) (2), where idx represents a value of the index, and the value of the index is a positive integer. In some embodiments, the value of the index is selected from the group consisting of 0, 1, 2, and 3, and the value of the maximum number of candidate points is 128, 256, 512, or 1024, respectively. That is, the index can be coded in the bitstream using a 2-bit fixed-length binary number to represent the values of the index from 0 to 3 with /(2) representation. In other words, only two bits are needed in the bitstream to represent four possible values 128, 256, 512, and 1024 of the configurable maximum number of candidate points, which minimizes the necessary representation bits that need to be transmitted in the bitstream. Also, by setting the value of the index not greater than 3, i.e., the value of the configurable maximum number of candidate points being 1024, the conformity of the scheme with the existing standard is ensured.

[0050] In another example, the value N of the maximum number of candidate points may be determined by the following equation:

N= idx+ 1 « 7 (3), where idx represents a value of the index, and the value of the index is a positive integer. In some embodiments, the value of the index is selected from the group consisting of 0, 1, 2, 3, 4, 5, 6, and 7, and the value of the maximum number of candidate points is 128, 256, 384, 512, 640, 768, 896, or 1024, respectively. That is, the index can be coded in the bitstream using a 3-bit fixed-length binary number to represent the values of the index from 0 to 7 with /(3) representation.

[0051] As described above, each point in a point cloud may be associated with one or more attributes, such as color and reflectance. The index for setting the maximum number of candidate points for attribute coding and the maximum number of candidate points for attribute coding may be specific for coding one attribute or generic for coding each attribute. In some embodiments, the index is for setting the maximum number of candidate points for coding each of the attributes. For example, the same index (and the resulting same maximum number of candidate points) may be used for color coding and reflectance coding to achieve ease of setting. In some embodiments, the index is for setting the maximum number of candidate points for coding only one of the attributes. For example, a first index, e.g., a color index (and the resulting first maximum number of candidate points), may be used for color-coding, and a second index, e.g., a reflectance index (and the resulting second maximum number of candidate points) may be used for reflectance-coding to achieve more flexibility. [0052] It is understood that in some examples, the maximum number of prediction points may have a configurable value as well, similar to the maximum number N of candidate points, as described above in detail.

[0053] 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.

[0054] 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 decode various other information, such as the index for setting the maximum number of candidate points for attribute coding.

[0055] 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.

[0056] 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.

[0057] Consistent with the scope of the present disclosure, encoder 101 and decoder 201 may be configured to adopt an improved attribute coding scheme with a dynamic, configurable maximum number of candidate points for prediction to improve the coding flexibility for different systems and applications in point cloud coding.

[0058] 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 at the transform unit level by encoder 101 of encoding system 100 or any other suitable point cloud encoding systems. Method 900 may include operations 902, 904, 906, and 908, 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.

[0059] At operation 902, a point cloud is represented in a ID array. The ID array includes a set of points each associated with one or more attributes. 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, the set of points follows Morton order or Hilbert order (or any other suitable space-filling curves from 3D to ID) in the ID array. For example, as shown in FIG. 3, coordinate transform module 302, voxelization module 304, and geometry analysis module 306 may be together configured to represent the point cloud in a ID array including a set of points each associated with a position and one or more attributes.

[0060] At operation 904, an index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point is obtained. In some embodiments, the set of candidate points are neighboring points prior to the current point in the ID array. In some embodiments, the index is for setting the maximum number of candidate points for coding each of the attributes, e.g., both the color and the reflectance. In some embodiments, the index is for setting the maximum number of candidate points for coding only one of the attributes, e.g., one of the color and reflectance. For example, as shown in FIG. 3, attribute transform module 312 may be configured to obtain the index.

[0061] At operation 906, the maximum number of candidate points is determined based on the index. In some embodiments, to determine the maximum number, a value of 2 ( ,dx+ 7) , where idx represents a value of the index, is calculated. In some embodiments, the value of the index is selected from the group consisting of 0, 1, 2, and 3. For example, as shown in FIG. 3, attribute transform module 312 may be configured to determine the maximum number of candidate points based on the index.

[0062] At operation 908, the at least one attribute associated with a current point in the set of points is encoded into a bitstream based on the at least one attribute associated with a set of candidate points. The number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number. In some embodiments, the index is encoded into the bitstream as well. As shown in FIG. 3, arithmetic encoding module 316 may be configured to encode the attribute of the current position and the index into the attribute bitstream.

[0063] In some embodiments, as shown in FIG. 10, to encode the attribute associated with the current position, at operation 1002, a set of prediction points is selected from the set of candidate points. In some embodiments, the set of prediction points is selected based on the positions associated with the candidate points and the current point, for example, the distances between each candidate point and the current point. At operation 1004, the at least one attribute associated with the current point is encoded based on the at least one attribute associated with the set of prediction points for example, the weighted attribute average of the set of prediction points. In some embodiments, at operation 1006, the positions associated with the candidate points and the current point are encoded into a geometry bitstream. [0064] FIG. 11 illustrates a flow chart of an exemplary method 1100 of point cloud decoding, according to some embodiments of the present disclosure. Method 1100 may be performed at the transform unit level by decoder 201 of decoding system 200 or any other suitable point cloud decoding systems. Method 1100 may include operations 1102, 1104, and 1106 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. 11. [0065] 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 Morton order or Hilbert order (or any other suitable space-filling curves from 3D to ID) in the ID array.

[0066] At operation 1102, a bitstream is decoded to obtain an index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point, as well as the at least one attribute associated with a set of candidate points for coding the at least one attribute associated with a current point in the set of points. In some embodiments, the set of candidate points are neighboring points prior to the current point in the ID array. In some embodiments, the index is for setting the maximum number of candidate points for coding each of the attributes, e.g., both the color and the reflectance. In some embodiments, the index is for setting the maximum number of candidate points for coding only one of the attributes, e.g., one of the color and reflectance. For example, as shown in FIG. 4, arithmetic decoding module 410 may be configured to obtain the index and the attribute information from the attribute bitstream.

[0067] At operation 1104, the maximum number of candidate points is determined based on the index. In some embodiments, to determine the maximum number, a value of 2 ( ' ί/g_7) , where idx represents a value of the index, is calculated. In some embodiments, the value of the index is selected from the group consisting of 0, 1, 2, and 3. For example, as shown in FIG. 4, attribute inverse transform module 414 may be configured to determine the maximum number of candidate points based on the index.

[0068] At operation 1106, the at least one attribute associated with the current point is determined based on the at least one attribute associated with the set of candidate points. The number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number. For example, as shown in FIG. 4, attribute inverse transform module 414 may be configured to determine the attribute associated with the current position based on the attribute associated with the set of candidate points. [0069] In some embodiments, as shown in FIG. 12, to determine the attribute associated with the current position, at operation 1202, the geometry bitstream is decoded to obtain the positions associated with the candidate point and the current point. At operation 1204, a set of prediction points is selected from the set of candidate points. In some embodiments, the set of prediction points is selected based on the positions associated with the candidate points and the current point, for example, the distances between each candidate point and the current point. At operation 1206, the at least one attribute associated with the current point is determined based on the at least one attribute associated with the set of prediction points, for example, the weighted attribute average of the set of prediction points.

[0070] 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.

[0071] According to one aspect of the present disclosure, a method for encoding a point cloud is disclosed. The point cloud is represented in a ID array by a processor. The ID array includes a set of points each associated with one or more attributes. An index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point is obtained by the processor. The maximum number of candidate points is determined by the processor based on the index. The at least one attribute associated with a current point in the set of points is encoded by the processor into a bitstream based on the at least one attribute associated with a set of candidate points. The number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number.

[0072] In some embodiments, to determine the maximum number of candidate points, a value of 2 ( ' ί/g_7) is calculated, where idx represents a value of the index.

[0073] In some embodiments, the value of the index is selected from the group consisting of 0, 1, 2, and 3.

[0074] In some embodiments, the index is for setting the maximum number of candidate points for coding each of the attributes.

[0075] In some embodiments, the index is for setting the maximum number of candidate points for coding only one of the attributes.

[0076] In some embodiments, the attributes include at least one of color or reflectance.

[0077] In some embodiments, the set of points follows Morton order or Hilbert order in the

ID array, and the set of candidate points are neighboring points prior to the current point in the ID array.

[0078] In some embodiments, to encode the at least one attribute associated with the current point, a set of prediction points is selected from the set of candidate points, and the at least one attribute associated with the current point is encoded based on the at least one attribute associated with the set of prediction points.

[0079] In some embodiments, each point of the set of points is further associated with a position, and the set of prediction points is selected based on the positions associated with the candidate points and the current point.

[0080] In some embodiments, the index is encoded into the bitstream.

[0081] According to 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 processor is configured to, upon executing the instructions, represent the point cloud in a ID array. The ID array includes a set of points each associated with one or more attributes. The processor is also configured to, upon executing the instructions, obtain an index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point. The processor is further configured to, upon executing the instructions, determine the maximum number of candidate points based on the index. The processor is further configured to, upon executing the instructions, encode the at least one attribute associated with a current point in the set of points into a bitstream based on the at least one attribute associated with a set of candidate points. A number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number.

[0082] In some embodiments, to determine the maximum number of candidate points, the processor is further configured to calculate a value of 2 ( ' ί/g_7) , where idx represents a value of the index.

[0083] In some embodiments, the value of the index is selected from the group consisting of 0, 1, 2, and 3.

[0084] In some embodiments, the index is for setting the maximum number of candidate points for coding each of the attributes.

[0085] In some embodiments, the index is for setting the maximum number of candidate points for coding only one of the attributes.

[0086] In some embodiments, the attributes include at least one of color or reflectance.

[0087] In some embodiments, the set of points follows Morton order or Hilbert order in the

ID array, and the set of candidate points are neighboring points prior to the current point in the ID array.

[0088] In some embodiments, to encode the at least one attribute associated with the current point, the processor is configured to select a set of prediction points from the set of candidate points, and encode the at least one attribute associated with the current point based on the at least one attribute associated with the set of prediction points.

[0089] In some embodiments, each point of the set of points is further associated with a position, and the set of prediction points is selected based on the positions associated with the candidate points and the current point.

[0090] In some embodiments, the processor is further configured to encode the index into the bitstream.

[0091] According to still another 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 each associated with one or more attributes. A bitstream is decoded by a processor to obtain an index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point, and the at least one attribute associated with a set of candidate points for coding the at least one attribute associated with a current point in the set of points. The maximum number of candidate points is determined by the processor based on the index. The at least one attribute associated with the current point is determined by the processor based on the at least one attribute associated with the set of candidate points. A number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number.

[0092] In some embodiments, to determine the maximum number of candidate points, a value of 2 ( ' ί/g_7) is calculated, where idx represents a value of the index.

[0093] In some embodiments, the value of the index is selected from the group consisting of 0, 1, 2, and 3.

[0094] In some embodiments, the index is for setting the maximum number of candidate points for coding each of the attributes.

[0095] In some embodiments, the index is for setting the maximum number of candidate points for coding only one of the attributes.

[0096] In some embodiments, the attributes include at least one of color or reflectance.

[0097] In some embodiments, the set of points follows Morton order or Hilbert order in the

ID array, and the set of candidate points are neighboring points prior to the current point in the ID array.

[0098] In some embodiments, to determine the at least one attribute associated with the current point, a set of prediction points is selected from the set of candidate points, and the at least one attribute associated with the current point is determined based on the at least one attribute associated with the set of prediction points.

[0099] In some embodiments, each point of the set of points is further associated with a position, and the set of prediction points is selected based on the positions associated with the candidate points and the current point.

[0100] In some embodiments, the bitstream is decoded to obtain the positions associated with the candidate points and the current point.

[0101] According to yet 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 each associated with one or more attributes. The processor is configured to, upon executing the instructions, decode a bitstream to obtain an index for setting a maximum number of candidate points for coding at least one attribute of the attributes associated with each point, and the at least one attribute associated with a set of candidate points for coding the at least one attribute associated with a current point in the set of points. The processor is also configured to, upon executing the instructions, determine the maximum number of candidate points based on the index. The processor is further configured to, upon executing the instructions, determine the at least one attribute associated with the current point based on the at least one attribute associated with the set of candidate points. A number of candidate points in the set of candidate points is equal to or smaller than the determined maximum number.

[0102] In some embodiments, to determine the maximum number of candidate points, the processor is configured to calculate a value of 2 ( ' ί/g_7) , where idx represents a value of the index. [0103] In some embodiments, the value of the index is selected from the group consisting of 0, 1, 2, and 3.

[0104] In some embodiments, the index is for setting the maximum number of candidate points for coding each of the attributes.

[0105] In some embodiments, the index is for setting the maximum number of candidate points for coding only one of the attributes.

[0106] In some embodiments, the attributes include at least one of color or reflectance.

[0107] In some embodiments, the set of points follows Morton order or Hilbert order in the

ID array, and the set of candidate points are neighboring points prior to the current point in the ID array.

[0108] In some embodiments, to determine the at least one attribute associated with the current point, the processor is configured to select a set of prediction points from the set of candidate points, and determine the at least one attribute associated with the current point based on the at least one attribute associated with the set of prediction points.

[0109] In some embodiments, each point of the set of points is further associated with a position, and the set of prediction points is selected based on the positions associated with the candidate points and the current point.

[0110] In some embodiments, the processor is further configured to decode the bitstream to obtain the positions associated with the candidate points and the current point.

[0111] 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.

[0112] 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. [0113] 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.

[0114] 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.

[0115] 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.