CN117813822A - Attribute codec in geometric point cloud codec - Google Patents

Attribute codec in geometric point cloud codec Download PDF

Info

Publication number
CN117813822A
CN117813822A CN202280046607.6A CN202280046607A CN117813822A CN 117813822 A CN117813822 A CN 117813822A CN 202280046607 A CN202280046607 A CN 202280046607A CN 117813822 A CN117813822 A CN 117813822A
Authority
CN
China
Prior art keywords
points
point
candidate points
index
maximum number
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN202280046607.6A
Other languages
Chinese (zh)
Inventor
余越
于浩平
弗莱德斯拉夫·扎克哈成科
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
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
Priority claimed from PCT/US2022/035927 external-priority patent/WO2023278829A1/en
Publication of CN117813822A publication Critical patent/CN117813822A/en
Pending legal-status Critical Current

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

In some aspects, a method for encoding a point cloud is disclosed. The processor represents the point cloud in a one-dimensional (1D) array. The 1D array includes a set of points, each point in the set of points being associated with one or more attributes. The processor obtains an index for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point. The processor determines a maximum number of candidate points based on the index. The processor encodes at least one attribute associated with a current point in a set of points into a bitstream based on at least one attribute associated with the set of candidate points. The number of candidate points in the set of candidate points is less than or equal to the determined maximum number.

Description

Attribute codec in geometric point cloud codec
Cross reference
The present application claims priority from U.S. provisional patent application Ser. No. 63/218,215 entitled "Flexible maximum number of neighboring Point cloud based Attribute codec for G-PCC" filed on 7.2.2021, and U.S. provisional patent application Ser. No. 63/264,509 entitled "geometric Point cloud codec" filed on 11.23.2021, which are incorporated herein by reference in their entireties.
Background
Embodiments of the present disclosure relate to point cloud codec.
The point cloud is one of the main three-dimensional (3D) data representation methods, and in addition to providing spatial coordinates, the point cloud also provides attributes associated with points in the 3D world. The point cloud of the raw format requires a large amount of storage space or transmission bandwidth. In addition, the advent of higher resolution point cloud capture technology has in turn placed higher demands on the size of the point cloud. Compression is necessary in order to make the point cloud available. For point cloud compression/coding (PCC) standardization activities, two compression techniques have been proposed: video-based PCC (V-PCC) and geometry-based PCC (G-PCC). The V-PCC method is based on 3D to two-dimensional (2D) projection; in contrast, the G-PCC method encodes content directly in 3D space. To achieve this, the G-PCC utilizes a data structure (e.g., an octree describing the location of points in 3D space).
Disclosure of Invention
According to one aspect of the disclosure, a method for encoding a point cloud is disclosed. The processor represents the point cloud in a one-dimensional (1D) array. The 1D array includes a set of points, each point in the set of points being associated with one or more attributes. The processor obtains an index for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point. The processor determines a maximum number of candidate points based on the index. The processor encodes at least one attribute associated with a current point in a set of points into a bitstream based on at least one attribute associated with the set of candidate points. The number of candidate points in the set of candidate points is less than or equal to the determined maximum number.
According to another aspect of the 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 represent the point cloud in a 1D array when executing the instructions. The 1D array includes a set of points, each point in the set of points being associated with one or more attributes. The processor is further configured to obtain, upon execution of the instruction, an index for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point. The processor is further configured to determine a maximum number of candidate points based on the index when the instruction is executed. The processor is further configured, upon execution of the instruction, to encode 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 the set of candidate points. The number of candidate points in the set of candidate points is less than or equal to the determined maximum number.
In accordance with yet another aspect of the present disclosure, a method for decoding a point cloud is disclosed. The point cloud is represented as a one-dimensional (1D) array, the 1D array comprising a set of points, each point of the set of points being associated with one or more attributes. The processor decodes the code stream to obtain an index for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point; and obtaining at least one attribute associated with a set of candidate points for encoding the at least one attribute associated with a current point in the set of points. The processor determines a maximum number of candidate points based on the index. The processor determines at least one attribute associated with the current point based on at least one attribute associated with the set of candidate points. The number of candidate points in the set of candidate points is less than or equal to the determined maximum number.
According to yet another aspect of the 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 as a 1D array, the 1D array comprising a set of points, each point of the set of points being associated with one or more attributes. The processor is configured, upon execution of the instructions, to decode the code stream to obtain an index for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point; and obtaining at least one attribute associated with a set of candidate points for encoding the at least one attribute associated with a current point in the set of points. The processor is further configured to determine a maximum number of candidate points based on the index when the instruction is executed. The processor is further configured to determine, upon execution of the instruction, at least one attribute associated with the current point 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 less than or equal to the determined maximum number.
These illustrative embodiments are not mentioned to limit or define the disclosure, but to provide examples that aid understanding. Additional embodiments are described in the detailed description, and further description is provided herein.
Drawings
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 disclosure and to enable a person skilled in the pertinent art to make and use the disclosure.
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 of 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 of fig. 2, according to some embodiments of the present disclosure.
Fig. 5A and 5B illustrate an exemplary octree structure and corresponding digital representations, respectively, of G-PCC according to some embodiments of the present disclosure.
FIG. 6 illustrates an exemplary structure of cubes and a relationship with adjacent cubes in an octree structure of G-PCC, according to some embodiments of the present disclosure.
FIG. 7 illustrates an exemplary 1D point array representing a point cloud, a set of candidate points, and a set of predicted points, in accordance with some embodiments of the present disclosure.
Fig. 8 illustrates an exemplary 1D point array representing a point cloud and a set of candidate points having a configurable maximum number, according to some embodiments of the present disclosure.
Fig. 9 illustrates a flowchart of an exemplary method for encoding a point cloud according to some embodiments of the present disclosure.
Fig. 10 illustrates a flowchart of an exemplary method for attribute codec in point cloud codec, according to some embodiments of the present disclosure.
Fig. 11 illustrates a flowchart of an exemplary method for decoding a point cloud according to some embodiments of the present disclosure.
Fig. 12 illustrates a flowchart of an exemplary method for attribute codec in point cloud codec, according to some embodiments of the present disclosure.
Embodiments of the present disclosure will be described with reference to the accompanying drawings.
Detailed Description
While some configurations and arrangements are discussed, it should be understood that this is for illustrative purposes only. One skilled in the relevant art will recognize that other configurations and arrangements may be used without departing from the spirit and scope of the disclosure. It will be apparent to those skilled in the relevant art that the present disclosure may also be used in a variety of other applications.
Note that reference in the specification to "one embodiment," "an embodiment," "one example embodiment," "some embodiments," "certain embodiments," etc., means that the described embodiments may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the relevant art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Generally, the term is at least partially understood from the use in context. For example, the term "one or more" as used herein, depending at least in part on the context, may be used to describe any feature, structure, or characteristic in the singular sense, or may be used to describe a feature, structure, or combination of features in the plural sense. Similarly, terms such as "a," "an," "the," and the like may also be construed to convey a singular usage or a plural usage, depending at least in part on the context. Furthermore, the term "based on" may be understood as not necessarily conveying a set of exclusive factors, but rather may allow for the presence of other factors not necessarily explicitly described, also depending at least in part on the context.
Various aspects of the point cloud codec system 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 codec applications. As described herein, point cloud encoding and decoding includes encoding and decoding a point cloud.
The point cloud consists of a collection of points in 3D space. Each point in 3D space is associated with a geometric location and associated attribute information (e.g., color, reflectivity, intensity, classification, etc.). To efficiently compress the point cloud data, the geometry of the point cloud may be compressed first, and then, according to the point cloud codec technique (e.g., G-PCC), the corresponding attributes, including color or reflectivity, may be compressed based on the geometry information. G-PCC has been widely used in entertainment and industrial applications such as virtual reality/augmented reality (VR/AR), telecommunications, autopilot, etc., for example, light detection and ranging (light detection and ranging, liDAR) scan compression for automobiles or robots, and High Definition (HD) maps for navigation. The motion picture expert group (Moving Picture Experts Group, MPEG) promulgates the first edition of the G-PCC standard, as are the audio video codec standards (Audio Video Coding Standard, AVS).
In existing G-PCC standards, after the geometric information is encoded, morton codes (also known as Morton curves), z-order curves (z-order curves) or Hilbert codes (Hilbert codes, also known as Hilbert curves) may be used to convert a 3D point cloud into a 1D array (array). The attribute codec may follow a predefined Morton order (Morton order) or a Hilbert order (Hilbert order). The prediction value may be generated according to a Morton order or a previous encoding point of a Hilbert order. The attribute differences between the current point and its predicted value may be encoded into the code stream.
To reduce the use of memory, some predefined numbers have been specified to limit the number of neighboring points that can be used to generate the predicted value. For example, of the previous up to N consecutive encoded points, up to only M points may be used to encode the attribute of the current point. For example, in the existing AVS G-PCC specification, M and N are predefined fixed numbers 3 and 128, respectively. However, the maximum number of predefined, fixed, previously encoded points in the point cloud (e.g., 128 for attribute encoding in AVS) is not flexible enough, even though the encoding and decoding system can afford more computation and have more memory.
To increase flexibility of point cloud codec, the present disclosure provides a scheme for a configurable maximum number of neighboring previously encoded points in a point cloud (point cloud data) for attribute codec in point cloud codec. The attribute codec schemes disclosed herein are not predefined, fixed maximum numbers, such as 128 in AVS G-PCC, but rather allow the codec systems to dynamically configure the maximum number of neighboring previously encoded point cloud data, e.g., based on their computing resources and/or memory size. For example, N represents the maximum number of neighboring points before the current point in the 1D array according to a predefined order (e.g., morton order or Hilbert order), and N may be dynamically configured to be equal to a number, e.g., a power of 2 (e.g., 128, 256, 512, or 1024).
In some embodiments, the maximum number N need not be encoded directly into the code stream. Instead, the index represented by a smaller number of bits than the maximum number N may be encoded into the code stream by fixed length encoding, for example using 2-bit or 3-bit fixed length binary numbers. The maximum number N may then be calculated based on the index, which reduces the number of additional bits in the code stream that represent the configurable maximum number N.
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 implemented or integrated into a variety of systems and devices capable of data processing, such as computers and wireless communication devices. For example, the system 100 or 200 may be a whole or part of a mobile phone, a desktop computer, a laptop computer, a tablet computer, a vehicle computer, a game console, a printer, a pointing device, a wearable electronic device, a smart sensor, a Virtual Reality (VR) device, an Augmented Reality (AR) device, or any other suitable electronic device with data processing capabilities. As shown in fig. 1 and 2, the system 100 or 200 may include a processor 102, a memory 104, and an interface 106. These components are shown as being interconnected by a bus, but other connection types are also permissible. It should be appreciated that the system 100 or 200 may include any other suitable components for performing the functions described herein.
The processor 102 may include a microprocessor, such as a graphics processing unit (graphic processing unit, GPU), an image signal processor (image signal processor, ISP), a central processing unit (central processing unit, CPU), a digital signal processor (digital signal processor, DSP), a tensor processing unit (tensor processing unit, TPU), a vision processing unit (vision processing unit, VPU), a neural processing unit (neural processing unit, NPU), a co-processing unit (synergistic processing unit, SPU), or a physical processing unit (physics processing unit, PPU), a microcontroller unit (microcontroller units, MCU), application-specific integrated circuits (application-specific integrated circuits, ASICs), field-programmable gate arrays (field-programmable gate arrays, FPGAs), programmable logic devices (programmable logic devices, PLDs), state machines, gate control logic, discrete hardware circuits, or other suitable hardware configured to perform the various functions described in this disclosure. Although only one processor is shown in fig. 1 and 2, it should be understood that multiple processors may be included in fig. 1 and 2. Processor 102 may be a hardware device having one or more processing cores. The processor 102 may execute software. Software should be construed broadly as instructions, instruction sets, code segments, program code, programs, subroutines, software modules, 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. The software may include computer instructions written in an interpreted language, assembly language, or machine code. Other techniques for indicating hardware are also allowed to be used under the broad category of software.
The memory 104 may broadly comprise two types of memory, including a memory referred to as main/system memory and a memory referred to as auxiliary memory. For example, the memory 104 may include random-access memory (RAM), read-only memory (ROM), static RAM (SRAM), dynamic RAM (DRAM), ferroelectric RAM (ferro-electric RAM, FRAM), electrically erasable programmable ROM (electrically erasable programmable ROM), compact disc read-only memory (CD-ROM) or other optical disc memory, hard Disk Drive (HDD), such as magnetic disk memory or other magnetic storage device, flash drive, solid State Drive (SSD), or any other medium that may be used to carry or store the desired program code in the form of instructions that may be accessed and executed by the processor 102. Broadly, the memory 104 may be implemented by any computer-readable medium, such as a non-transitory computer-readable medium. Although only one memory is shown in fig. 1 and 2, it should be understood that a plurality of memories may be included in fig. 1 and 2.
Interface 106 may broadly comprise a data interface and a communication interface configured to receive and transmit signals in the course 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 fig. 1 and 2, it should be understood that multiple interfaces may be included in fig. 1 and 2.
The processor 102, memory 104, and interface 106 may be implemented in various forms in the system 100 or 200 for performing point cloud codec functions. In some embodiments, the processor 102, memory 104, and interface 106 of the system 100 or 200 are implemented (e.g., integrated) on one or more systems-on-chips (socs). In one example, the processor 102, memory 104, and interface 106 may be integrated on an application processor (application processor, AP) SoC that may handle application processing in an Operating System (OS) environment, including running point cloud encoded and decoded applications. In another example, the processor 102, memory 104, and interface 106 may be integrated on a dedicated processor chip for point cloud encoding and decoding, such as a GPU or ISP chip dedicated to graphics processing in a real-time operating system (real-time operating system, RTOS).
As shown in fig. 1, in an encoding system 100, a processor 102 may include one or more modules, such as an encoder 101. Although fig. 1 shows encoder 101 within one processor 102, it should be understood that encoder 101 may include one or more sub-modules that may be implemented on different processors that are close or remote from each other. Encoder 101 (and any corresponding sub-modules or sub-units) may be a hardware unit (e.g., a portion of an integrated circuit) of processor 102 designed for use with other components or software units implemented by processor 102 by executing at least a portion of a program (i.e., instructions). The instructions of the program may be stored on a computer readable medium, such as the memory 104, and the instructions of the program, when executed by the processor 102, may perform processes having one or more functions related to point cloud encoding, such as voxelization (voxelization), transformation, quantization, arithmetic coding, and the like, as described in detail below.
Similarly, as shown in fig. 2, in decoding system 200, processor 102 may include one or more modules, such as decoder 201. Although fig. 2 shows decoder 201 within one processor 102, it should be understood that decoder 201 may include one or more sub-modules that may be implemented on different processors that are close or remote from each other. Decoder 201 (and any corresponding sub-modules or sub-units) may be a hardware unit (e.g., a portion of an integrated circuit) of processor 102 designed for use with other components or software units implemented by processor 102 by executing at least a portion of a program (i.e., instructions). The instructions of the program may be stored on a computer readable medium, such as the memory 104, and the instructions of the program, when executed by the processor 102, may perform processes having one or more functions related to point cloud decoding, such as arithmetic decoding, dequantization, inverse transformation, reconstruction, synthesis, as described in detail below.
Fig. 3 illustrates a detailed block diagram of an exemplary encoder 101 in the encoding system 100 of fig. 1, according to some embodiments of the present disclosure. As shown in fig. 3, encoder 101 may include a coordinate transformation module 302, a voxelization module 304, a geometric analysis module 306, and an arithmetic coding module 308, which together are configured to encode locations associated with points of a point cloud into a geometric code stream (i.e., geometric coding). As shown in fig. 3, encoder 101 may further include a color transform module 310, an attribute transform module 312, a quantization module 314, and an arithmetic coding module 316, which together are configured to encode attributes associated with points of the point cloud into an attribute code stream (i.e., attribute encoding). It should be understood that each element shown in fig. 3 is shown separately to represent feature functions different from each other in the point cloud encoder, however, this does not mean that each element is formed by a separate hardware or a configuration unit of a single software. That is, each element is listed as one element for ease of understanding, 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 should also be understood that some of these elements are not necessary elements to perform the functions described in this disclosure, but may be optional elements for improving performance. It should also be understood that these elements may be implemented using electronic hardware, firmware, computer software, or any combination thereof. Whether such elements are implemented in hardware, firmware, or software depends upon the particular application and design constraints imposed on encoder 101. It should also be understood that the modules shown in fig. 3 are for illustration purposes only, and in some examples, encoder 101 may include different modules for point cloud encoding.
As shown in fig. 3, may be separately encodedGeometric location and attributes associated with a point. The point cloud may be a collection of points having a location X k =(x k ,y k ,z k ) K=1, …, K, where K is the number of points in the point cloud and has the attribute a k =(A 1k ,A 2k ,…,A Dk ) K=1, …, K, where D is the number of attributes per point. In some embodiments, attribute encoding depends on the decoded geometry. Thus, the location of the point cloud may be encoded first. Because the geometric location may be represented by a floating point number in the original coordinate system, the coordinate transformation module 302 and the voxelization module 304 may be configured to perform a coordinate transformation followed by voxelization (quantization and removal of duplicate points). The process of position quantization, removing duplicate points, and assigning attributes to the remaining points is referred to as voxelization. The voxelized point cloud may be represented in a lossless manner using, for example, an octree structure. The geometry analysis module 306 may be configured to perform geometry analysis using, for example, an octree or trisoup scheme. The arithmetic coding module 308 may be configured to arithmetically code the structure derived from the geometry analyzing module 306 into a geometric code stream.
In some embodiments, the geometry analysis module 306 is configured to perform geometry analysis using an octree scheme. In the octree scheme, two extreme points (0, 0) and (2) d ,2 d ,2 d ) To define a bounding box B aligned with the cube axis, where d is the largest dimension of a given point cloud in the x, y or z direction. All points of the point cloud may be contained in this defined cube. As shown in fig. 5A, 1 cube may be divided into 8 subcubes, thus creating an octree structure that allows one cube to have 8 subcubes, which can then be constructed by recursively subdividing the subcubes. As shown in fig. 5B, an 8-bit code may be generated by associating a 1-bit value to each subcube, the 1-bit indicating whether the subcube contains a dot (i.e., full and a value of 1) or does not contain a dot (i.e., empty and a value of 0). Only complete subcubes of size greater than 1 (i.e., non-voxels) may be further subdivided. The geometric information (x, y, z) of a location can be defined byIs represented by such an octree structure. Since points can be replicated, multiple points can be mapped to the same subcube of size 1 (i.e., the same voxel). To deal with this case, the number of points of each subcube of dimension 1 is also arithmetically encoded. By constructing an octree, the current cube associated with the current node can be surrounded by six cubes of the same depth with which it shares a face. As shown in fig. 6, a cube may have up to six cubes of the same size to share a face, depending on the location of the current cube. In addition, the current cube may also have some adjacent cubes sharing a line or point with the current cube.
Returning to fig. 3, with respect to attribute encoding, optionally, if the attributes include colors, the color conversion module 310 may be configured to convert the red/green/blue (RGB) color attributes of each point to YCbCr color attributes. The attribute transformation module 312 may be configured to perform attribute transformations based on results from the geometry analysis module 306 (e.g., using an octree scheme), including, but not limited to, region-adaptive hierarchical transforms (region adaptive hierarchical transform, RAHT), interpolation-based hierarchical nearest neighbor predictions (predictive transforms), and interpolation-based hierarchical nearest neighbor predictions (lifting transforms) with update/lifting steps. Optionally, the method comprises the step of. The quantization module 314 may be configured to quantize the transform coefficients of the attributes from the attribute transform module 312 to generate quantization levels for the attributes associated with each point, thereby reducing dynamic range. The arithmetic coding module 316 may be configured to arithmetically code the transform coefficients of the resulting (i.e., quantized) attributes associated with each point or with the quantization level of the attributes into an attribute code stream.
In some embodiments, predictions may be formed from neighboring coding properties, such as in the prediction transform and lifting transform of the property transform module 312. The difference between the current property and the prediction may then be encoded. According to some aspects of the present disclosure, as shown in fig. 7, after the geometric positions are encoded in the AVS G-PCC standard, a point cloud (e.g., a point cloud cube) in 3D space may be converted into a 1D array using Morton codes or Hilbert codes. Each location in the cube has a corresponding Morton code or Hilbert code, but some locations may not have any corresponding point cloud properties. In other words, some locations may be empty. The attribute encoding may follow a predefined Morton order or Hilbert order. The predictor may be generated from previously encoded points in the 1D array in Morton order or Hilbert order. The attribute differences between the current point and its predicted point may be encoded into the code stream.
As shown in fig. 7, to reduce memory usage, some predetermined number has been specified to limit the number of neighbors that can be used to generate predictions. For example, of the previous up to N consecutive encoding points, up to M points may be used to encode the current attribute. That is, in the attribute encoding, a set of n candidate points may be used as the candidate points to select a set of m prediction points (m.ltoreq.n) and use them to predict the current point. The number N of candidate points in the set is less than or equal to the maximum number N of candidate points (n.ltoreq.N), and the number M of predicted points in the set is less than or equal to the maximum number M of predicted points (m.ltoreq.M). As shown in fig. 7, in the 1D array in the Morton order or the Hilbert order, if the number of neighboring points before the current point is greater than the maximum number N of candidate points, the number N of candidate points in the candidate point set of the current point (shown in gray shading) is equal to the maximum number N; in a 1D array in Morton order or Hilbert order, if the number of neighboring points before the current point is greater than or equal to the maximum number N of candidate points, the number N of candidate points in the candidate point set of the current point (shown in gray shading) is smaller than the maximum number N, and all neighboring points before the current point are used as the candidate point set of the current point. In fig. 7, the maximum number M of predicted points may be set to 3, and 3 predicted points (points shown by bold and underline) may be selected from a set of n candidate points based on, for example, position information associated with the n candidate points and the current point (e.g., a distance between each candidate point and the current point) P) Is a set of (3).
In the current AVS G-PCC specification, M and N are set to a fixed number of 3 and 128, respectively. If more than 128 points have been encoded before the current point, then only 3 of the previous 128 neighboring points can be used to form an attribute predictor (predicted point) according to a predefined order. If there are less than 128 points encoded before the current point, then all points encoded before the current point will be used as candidate points to find the predicted point. Of the previous up to 128 candidate points, up to 3 predicted points are selected, which have the closest "distance" (e.g., euclidean) distance) between these candidate points and the current point. As one example, the euclidean distance d may be defined as follows, while other distance metrics may be used in other examples:
d=|x1-x2|+|y1-y2|+|z1-z2| (1),
wherein (x 1, y1, z 1) and (x 2, y2, z 2) are coordinates of the current point and the candidate point in Morton order or Hilbert order, respectively. According to some embodiments, once m predicted points (e.g., 3 nearest candidate points) are selected, a weighted attribute average may be formed from these m points and used as a predicted value to encode the attributes of the current point. It should be appreciated that in some examples, the predicted point may be selected from candidate points in a cube sharing the same face/line/point as the current point cloud.
Since a set of n candidate points needs to be stored in memory and traversed in order to select a set of M predicted points to encode the attribute associated with the current location, the maximum number of candidate points M is introduced to limit the size of memory and the amount of computing resources that may be occupied by storing and searching for candidate points. However, because different point cloud codec systems and/or applications may have different requirements to balance memory/computing resource consumption and accuracy of prediction, the maximum number of candidate points M (e.g., 128) is inflexible as a predefined fixed number. For example, certain point cloud codec systems and/or applications may provide more computing resources and have more memory, and may require higher prediction accuracy, which in turn may require prediction using a greater number of candidate points. In contrast, certain point cloud codec systems and/or applications may provide less computing resources and have less memory while requiring lower prediction accuracy, which in turn requires the use of a fewer number of candidate points for prediction.
Consistent with the scope of the present disclosure, a dynamic, configurable maximum number of candidate points is introduced in place of a predefined, fixed maximum number of candidate points for use in attribute codec in point cloud codec, e.g., for predictive conversion. For example, fig. 8 illustrates an exemplary 1D point array for representing a point cloud and a set of candidate points having a configurable maximum number, according to some embodiments of the present disclosure. In a 1D array, the collection of points (P) may be in Morton order or Hilbert order. The set of candidate points may be neighboring points preceding the current point in a 1D array in Morton order or Hilbert order. A set of predicted points may be selected from a set of candidate points (e.g., three points shown in bold and underline P). As shown in fig. 8, the maximum number N of candidate points for the attribute codec of the current point (shown in gray shading) in the 1D array is dynamically configurable, e.g., with different possible values N1, N2. 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., in order to be better compatible with a fixed number 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 a fixed number 128 in the existing AVS G-PCC standard. In some embodiments, the value of N may not exceed 1024 from a consistency point of view.
In some embodiments, to further reduce the number of bits in the code stream representing the configurable maximum number (maxnumofneighbors), the index (maxnumofneighbors_index) may be encoded into the code stream by fixed length encoding (f (n)) instead of the maximum value itself, and used to calculate the value of the configurable maximum number of candidate points. That is, both the encoder and decoder may first obtain an index and then determine a 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.
In one example, the value N of the maximum number of candidate points may be determined by the following equation:
N=2 (idx+7) (2),
where idx represents the value of the index, which is a positive integer. In some embodiments, one is selected as the value of the index from a group of numbers consisting of 0, 1, 2, and 3, and the maximum number of candidate points is 128, 256, 512, or 1024, respectively. That is, the index may be encoded using a binary number of a fixed length of 2 bits in the code stream to represent an index value from 0 to 3 by f (2). In other words, only two bits are required in the code stream to represent the four possible values 128, 256, 512, and 1024 of the configurable maximum candidate point number, which minimizes the necessary representation bits that need to be transmitted in the code stream. Further, by setting the value of the index to be not more than 3, the value of the configurable maximum candidate point number is 1024, which ensures the consistency of the scheme with the existing standard.
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 the value of the index, which is a positive integer. In some embodiments, one is selected from a group of numbers consisting of 0, 1, 2, 3, 4, 5, 6, 7 as the value of the index, and the maximum number of candidate points has a value of 128, 256, 384, 512, 640, 768, 896, or 1024, respectively. That is, the index may be encoded in the stream using a 3-bit fixed length binary number to represent an index value from 0 to 7 with f (3).
As above, each point in the point cloud may be associated with one or more attributes, such as color and reflectivity. 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 may be general for coding each attribute. In some embodiments, the index is used to set the maximum number of candidate points to codec each attribute. For example, color coding and reflectivity coding may use the same index (and the same maximum number of candidate points generated by the index) to achieve ease of setup. In some embodiments, the index is used to set the maximum number of candidate points that encode only one of the attributes. For example, a first index, such as a color index (and thus a first maximum number of candidate points), may be used for color coding, and a second index, such as a reflection index (and thus a second maximum number of candidate points), may be used for reflection coding, for greater flexibility.
It should be appreciated that in some examples, the maximum number of predicted points M may also have a configurable value, similar to the maximum number of candidate points N as described in detail above.
Fig. 4 illustrates a detailed block diagram of an exemplary decoder 201 in the 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 geometric synthesis module 404, a reconstruction module 406, and an inverse coordinate transformation module 408, which together are configured to decode a location associated with a point of the point cloud from the geometric code stream (i.e., geometric decoding). As shown in fig. 4, decoder 201 may further include an arithmetic decoding module 410, a dequantization module 412, an attribute inverse transformation module 414, and a color inverse transformation module 416, which together are configured to decode an attribute associated with a point of the point cloud from the attribute code stream (i.e., attribute decoding). It should be understood that each element shown in fig. 4 is shown separately to represent different characteristic functions from each other in the point cloud decoder, however, this does not mean that each component is formed by a separate hardware or a configuration unit of a single software. That is, each element is listed as one element for ease of understanding, and at least two elements 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 should also be understood that some of the elements are not necessary elements to perform the functions described in this disclosure, but may be optional elements for improved performance. It is also to be 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 should also be understood that the modules shown in fig. 4 are for illustration purposes only, and that in some examples, decoder 201 may include different modules for point cloud decoding.
When a point cloud code stream (e.g., a geometric code stream or an attribute code stream) is input from a point cloud encoder (e.g., encoder 101), the input code stream may be decoded by decoder 201 in a reverse process to the point cloud encoder. Accordingly, decoding details corresponding to encoding described above may be skipped for ease of description. The arithmetic decoding modules 402 and 410 may be configured to decode the geometric code stream and the attribute code stream, respectively, to obtain various information encoded into the code stream. For example, the arithmetic decoding module 410 may decode the attribute code stream to obtain attribute information associated with each point, such as coefficients or quantization levels of the attributes associated with each point. Alternatively, dequantization module 412 may be configured to dequantize the quantization level of the attribute associated with each point to obtain the coefficient of the attribute associated with each point. In addition to the attribute information, the arithmetic decoding module 410 may decode various other information such as an index for setting the maximum number of candidate points of the attribute encoding.
The attribute inverse transform module 414 may be configured to perform an attribute inverse transform, such as an inverse RAHT, an inverse predictive transform, or an inverse lifting transform, to transform data (e.g., coefficients) from the transform domain back into the attribute domain (e.g., luminance and/or chrominance information of the color attribute). Alternatively, the inverse color transform module 416 may be configured to transform YCbCr color attributes into RGB color attributes.
For geometry decoding, the geometry synthesis module 404, the reconstruction module 406, and the inverse coordinate transformation module 408 of the decoder 201 may be configured to perform inverse operations of the geometry analysis module 306, the voxelization module 304, and the coordinate transformation module 302 of the encoder 101, respectively.
Consistent with the scope of the present disclosure, encoder 101 and decoder 201 may be configured to employ an improved attribute encoding scheme with a dynamic, configurable maximum number of candidate points for prediction to improve codec flexibility for different systems and applications in point cloud codec.
Fig. 9 illustrates a flowchart 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 system. Method 900 may include operations 902, 904, 906, and 908 as described below. It should be understood that some operations may be optional and some operations may be performed simultaneously or in a different order than shown in fig. 9.
In operation 902, a point cloud is represented in a 1D array. The 1D array includes a set of points, each point being associated with one or more attributes. The attribute may include at least one of color or reflectivity. In some embodiments, each point in the set of points is also associated with a location. In some embodiments, the set of points is in a Morton order or Hilbert order (or any other suitable space-filling curve from 3D to 1D) in a 1D array. For example, as shown in fig. 3, the coordinate transformation module 302, the voxelization module 304, and the geometric analysis module 306 may together be configured to represent a point cloud in a 1D array, the 1D array including a set of points, each point in the set of points being associated with a location and one or more attributes.
In operation 904, an index is obtained for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point. In some embodiments, the set of candidate points is a neighboring point before the current point in the 1D array. In some embodiments, the index is used to set the maximum number of candidate points for encoding each attribute (e.g., color and reflectivity). In some embodiments, the index is used to set the maximum number of candidate points that encode only one of the attributes (e.g., one of color and reflectivity). For example, as shown in FIG. 3, the attribute transformation module 312 may be configured to obtain an index.
In operation 906, a maximum number of candidate points is determined based on the index. In some embodiments, to determine the maximum number, calculate 2 (idx+7) Wherein idx represents the value of the index. In some embodiments, the index is selected from a group consisting of 0, 1, 2, and 3. For example, as shown in FIG. 3, the attribute transformation module 312 may be configured toThe maximum number of candidate points is determined based on the index.
At operation 908, at least one attribute associated with a current point in a set of points is encoded into a bitstream based on at least one attribute associated with the set of candidate points. The number of candidate points in the set of candidate points is less than or equal to the determined maximum number. In some embodiments, the index is also encoded into the code stream. As shown in fig. 3, the arithmetic coding module 316 may be configured to encode the attributes and indices of the current location into an attribute code stream.
In some embodiments, as shown in FIG. 10, to encode an attribute associated with a current location, a set of predicted points is selected from a set of candidate points at operation 1002. In some embodiments, the set of predicted points is selected based on locations associated with the candidate points and the current point (e.g., a distance between each candidate point and the current point). At operation 1004, at least one attribute associated with the current point is encoded based on at least one attribute associated with a set of predicted points (e.g., a weighted average of attributes of a set of predicted points). In some embodiments, at operation 1006, the locations associated with the candidate point and the current point are encoded into a geometric bitstream.
Fig. 11 illustrates a flowchart 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 system. Method 1100 may include operations 1102, 1104, and 1106 as described below. It should be appreciated that some operations may be optional and some operations may be performed simultaneously or in a different order than shown in fig. 11.
The point cloud is represented in a 1D array. The 1D array includes a set of points, each point in the set of points being associated with one or more attributes and a location. The attribute may include at least one of color or reflectivity. In some embodiments, the set of points is in a Morton order or Hilbert order (or any other suitable space-filling curve from 3D to 1D) in a 1D array.
In operation 1102, a code stream is decoded to obtain an index and at least one attribute associated with a set of candidate points, the index being used to set a maximum number of candidate points, the candidate points being used to encode at least one of the attributes associated with each point, the at least one attribute being used to encode 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 in the 1D array that precede the current point. In some embodiments, the index is used to set the maximum number of candidate points for encoding each attribute (e.g., color and reflectivity). In some embodiments, the index is used to set the maximum number of candidate points that encode only one of the attributes (e.g., one of color and reflectivity). For example, as shown in fig. 4, the arithmetic decoding module 410 may be configured to obtain index and attribute information from the attribute code stream.
In operation 1104, a maximum number of candidate points is determined based on the index. In some embodiments, to determine the maximum number, calculate 2 (idx+7) Wherein idx represents the value of the index. In some embodiments, the value of the index is selected from a group of numbers consisting of 0, 1, 2, and 3. For example, as shown in fig. 4, the inverse attribute transformation module 414 may be configured to determine a maximum number of candidate points based on the index.
At operation 1106, 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 less than or equal to the determined maximum number. For example, as shown in fig. 4, the inverse attribute transformation module 414 may be configured to determine an attribute associated with the current location based on the attributes associated with the set of candidate points.
In some embodiments, as shown in fig. 12, to determine the attribute associated with the current location, the geometric code stream is decoded to obtain locations associated with the candidate point and the current point in operation 1202. In operation 1204, a set of predicted points is selected from a set of candidate points. In some embodiments, the set of predicted points is selected based on locations associated with the candidate points and the current point (e.g., a distance between each candidate point and the current point). At operation 1206, at least one attribute associated with the current point is determined based on at least one attribute associated with the set of predicted points (e.g., a weighted attribute average of the set of predicted points).
In various aspects of the disclosure, the functions described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, these functions may be stored as instructions on a non-transitory computer-readable medium. Computer readable media includes computer storage media. A storage medium may be any available medium that can be accessed by a processor, such as processor 102 in fig. 1 and 2. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, HDD (e.g., magnetic disk storage or other magnetic storage devices), flash drives, 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 (e.g., a mobile device or computer). Disk (Disk) and optical Disk (Disk) as used herein include CD, laser Disk, optical Disk, digital Video Disk (DVD) and floppy Disk where the Disk typically reproduces data magnetically and the Disk reproduces data optically with a laser. Combinations of the above should also be included within the scope of computer-readable media.
According to one aspect of the disclosure, a method for encoding a point cloud is disclosed. The processor represents the point cloud in a one-dimensional (1D) array. The 1D array includes a set of points, each point in the set of points being associated with one or more attributes. The processor obtains an index for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point. The processor determines a maximum number of candidate points based on the index. The processor encodes at least one attribute associated with a current point in a set of points into a bitstream based on at least one attribute associated with the set of candidate points. The number of candidate points in the set of candidate points is less than or equal to the determined maximum number.
In some embodiments, to determine the maximum number of candidate points, 2 is calculated (idx+7) Wherein idx represents the value of the index.
In some embodiments, the value of the index is selected from a group of numbers consisting of 0, 1, 2, and 3.
In some embodiments, the index is used to set the maximum number of candidate points for encoding each attribute.
In some embodiments, the index is used to set the maximum number of candidate points that encode only one of the attributes.
In some embodiments, the attribute comprises at least one of color or reflectivity.
In some embodiments, the set of points is in the 1D array in Morton order or Hilbert order, and the set of candidate points is a neighboring point before the current point in the 1D array.
In some embodiments, to encode at least one attribute associated with a current point, a set of predicted points is selected from a 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 predicted points.
In some embodiments, each point in the set of points is also associated with a location, and the set of predicted points is selected based on the locations associated with the candidate point and the current point.
In some embodiments, the index is encoded into the code stream.
According to another aspect of the 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 represent the point cloud in a 1D array when executing the instructions. The 1D array includes a set of points, each point in the set of points being associated with one or more attributes. The processor is further configured to obtain, upon execution of the instruction, an index for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point. The processor is further configured to determine a maximum number of candidate points based on the index when the instruction is executed. The processor is further configured, upon execution of the instruction, to encode 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 the set of candidate points. The number of candidate points in the set of candidate points is less than or equal to the determined maximum number.
In some embodiments, to determine the maximum number of candidate points, the processor is configured to calculate 2 (idx+7) Wherein idx represents the value of the index.
In some embodiments, the value of the index is selected from a group of numbers consisting of 0, 1, 2, and 3.
In some embodiments, the index is used to set the maximum number of candidate points for encoding each attribute.
In some embodiments, the index is used to set the maximum number of candidate points that encode only one of the attributes.
In some embodiments, the attribute comprises at least one of color or reflectivity.
In some embodiments, the set of points is in Morton order or Hilbert order in the 1D array, and the set of candidate points are neighboring points before the current point in the 1D array.
In some embodiments, to encode at least one attribute associated with the current point, the processor is configured to select a set of predicted points from a set of candidate points, encode at least one attribute associated with the current point based on the at least one attribute associated with the set of predicted points.
In some embodiments, each point in the set of points is also associated with a location, and the set of predicted points is selected based on the locations associated with the candidate point and the current point.
In some embodiments, the processor is further configured to encode an index into the code stream.
In accordance with yet another aspect of the present disclosure, a method for decoding a point cloud is disclosed. The point cloud is represented as a one-dimensional (1D) array that includes a set of points, each point in the set of points being associated with one or more attributes. The processor decodes the code stream to obtain an index for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point, and to obtain at least one attribute associated with a set of candidate points for encoding at least one attribute associated with a current point in the set of points. The processor determines a maximum number of candidate points based on the index. The processor determines at least one attribute associated with the current point based on at least one attribute associated with the set of candidate points. The number of candidate points in the set of candidate points is less than or equal to the determined maximum number.
In some embodiments, to determine the maximum number of candidate points, 2 is calculated (idx+7) Wherein idx represents the value of the index.
In some embodiments, the value of the index is selected from a group of numbers consisting of 0, 1, 2, and 3.
In some embodiments, the index is used to set the maximum number of candidate points encoding each attribute.
In some embodiments, the index is used to set the maximum number of candidate points that encode only one of the attributes.
In some embodiments, the attribute comprises at least one of color or reflectivity.
In some embodiments, the set of points is in Morton order or Hilbert order in the 1D array, and the set of candidate points is a neighboring point before the current point in the 1D array.
In some embodiments, to determine at least one attribute associated with the current point, a set of predicted points is selected from the set of candidate points, and at least one attribute associated with the current point is determined based on the at least one attribute associated with the set of predicted points.
In some embodiments, each point in the set of points is also associated with a location, and the set of predicted points is selected based on the locations associated with the candidate point and the current point.
In some embodiments, the code stream is decoded to obtain locations associated with the candidate point and the current point.
According to yet another aspect of the 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 as a one-dimensional (1D) array that includes a set of points, each point in the set of points being associated with one or more attributes. The processor is configured, upon execution of the instructions, to decode the code stream to obtain: an index for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point; and at least one attribute associated with a set of candidate points, the set of candidate points being used to encode the at least one attribute associated with a current point in the set of points. The processor is further configured to determine a maximum number of candidate points based on the index when the instruction is executed. The processor is further configured to determine, upon execution of the instruction, at least one attribute associated with the current point 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 less than or equal to the determined maximum number.
In some embodiments, to determine the maximum number of candidate points, the processor is configured to calculate a value of 2 (idx+7) Where idx represents the value of the index.
In some embodiments, the value of the index is selected from a group of numbers consisting of 0, 1, 2, and 3.
In some embodiments, the index is used to set the maximum number of candidate points for encoding each attribute.
In some embodiments, the index is used to set the maximum number of candidate points that encode only one of the attributes.
In some embodiments, the attribute comprises at least one of color or reflectivity.
In some embodiments, the set of points is in Morton order or Hilbert order in the 1D array, and the set of candidate points is a neighboring point before the current point in the 1D array.
In some embodiments, to determine at least one attribute associated with the current point, the processor is configured to select a set of predicted points from the set of candidate points and determine at least one attribute associated with the current point based on the at least one attribute associated with the set of predicted points.
In some embodiments, each point in the set of points is also associated with a location, and the set of predicted points is selected based on the locations associated with the candidate point and the current point.
In some embodiments, the processor is further configured to decode the code stream to obtain locations associated with the candidate point and the current point.
The foregoing description of the embodiments will reveal the general nature of the disclosure so that others can, by applying knowledge within the skill of the art, readily modify and/or adapt for various applications such embodiments without departing from the generic concept of the disclosure, and without undue experimentation. Accordingly, 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 terminology or phraseology 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.
Embodiments of the present disclosure have been described above with the aid of functional building blocks illustrating the implementation of specific functions and relationships thereof. Boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries may be defined so long as the specified functions and relationships thereof are appropriately performed.
The summary and abstract sections may set forth one or more, but not all exemplary embodiments of the disclosure as contemplated by the inventors, and are therefore not intended to limit the disclosure and appended claims in any way.
Various functional blocks, modules, and steps have been described above. The arrangement provided is illustrative, but not limiting. Accordingly, the functional blocks, modules, and steps may be reordered or combined in a different manner than the examples provided above. Similarly, some embodiments include only a subset of the functional blocks, modules, and steps, and any such subset is permitted.
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 (40)

1. A method for encoding a point cloud, comprising:
the processor represents the point cloud in a one-dimensional (1D) array, wherein the 1D array comprises a set of points, each point in the set of points being associated with one or more attributes;
the processor obtaining an index for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point;
The processor determining a maximum number of the candidate points based on the index; and
the processor encodes at least one attribute associated with a current point in a set of points into a bitstream based on at least one attribute associated with the set of candidate points, wherein a number of candidate points in the set of candidate points is less than or equal to the determined maximum number.
2. The method of claim 1, wherein determining the maximum number of candidate points comprises calculating 2 (idx+7) Wherein idx represents the 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 used to set a maximum number of candidate points encoding each of the attributes.
5. The method of claim 1, wherein the index is used to set a maximum number of candidate points encoding only one of the attributes.
6. The method of claim 1, wherein the attribute comprises at least one of color or reflectivity.
7. The method of claim 1, wherein
The set of points follow a Morton order or a Hilbert order in the 1D array; and
The set of candidate points are neighboring points in the 1D array that are prior to the current point.
8. The method of claim 7, wherein encoding the at least one attribute associated with the current point comprises:
selecting a set of predicted points 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 predicted points.
9. The method of claim 8, wherein
Each point in the set of points is also associated with a location; and
the set of predicted points is selected based on locations associated with the candidate point and the current point.
10. The method of claim 1, further comprising encoding the index into the code stream.
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 execution of the instructions:
representing the point cloud in a one-dimensional (1D) array, wherein the 1D array comprises a set of points, each point of the set of points being associated with one or more attributes;
Obtaining an index for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point;
determining a maximum number of the candidate points based on the index; and
at least one attribute associated with a current point in a set of candidate points is encoded into a bitstream based on at least one attribute associated with the set of candidate points, wherein the number of candidate points in the set of candidate points is less than or equal to 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 2 (idx+7) Wherein idx represents the 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 used to set a maximum number of candidate points encoding each of the attributes.
15. The system of claim 11, wherein the index is used to set a maximum number of candidate points encoding only one of the attributes.
16. The system of claim 11, wherein the attribute comprises at least one of color or reflectivity.
17. The system of claim 11, wherein
The set of points follow a Morton order or a Hilbert order in the 1D array; and
the set of candidate points are neighboring points in the 1D array that are prior to the current point.
18. The system of claim 17, wherein to encode the at least one attribute associated with the current point, the processor is configured to:
selecting a set of predicted points 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 predicted points.
19. The system of claim 18, wherein
Each point in the set of points is also associated with a location; and
the set of predicted points is selected based on locations associated with the candidate point and the current point.
20. The system of claim 11, wherein the processor is further configured to encode the index into the code stream.
21. A method for decoding a point cloud, the point cloud represented as a one-dimensional (1D) array, the 1D array comprising a set of points, each point in the set of points being associated with one or more attributes, the method comprising:
The processor decodes the code stream to obtain:
an index for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point; and
at least one attribute associated with a set of candidate points, the set of candidate points being used to encode the at least one attribute associated with a current point in the set of points;
the processor determining a maximum number of the candidate points based on the index; and
the processor determines at least one attribute associated with the current point based on at least one attribute associated with the set of candidate points, wherein the number of candidate points in the set of candidate points is less than or equal to the determined maximum number.
22. The method of claim 21, wherein determining the maximum number of candidate points comprises calculating 2 (idx+7) Wherein idx represents the 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 used to set a maximum number of candidate points encoding each of the attributes.
25. The method of claim 21, wherein the index is used to set a maximum number of the candidate points encoding only one of the attributes.
26. The method of claim 21, wherein the attribute comprises at least one of color or reflectivity.
27. The method of claim 21, wherein
The set of points follow a Morton order or a Hilbert order in the 1D array; and
the set of candidate points are neighboring points in the 1D array that are prior to the current point.
28. The method of claim 27, wherein determining at least one attribute associated with the current point comprises:
selecting a set of predicted points from the set of candidate points; and
the at least one attribute associated with the current point is determined based on at least one attribute associated with the set of predicted points.
29. The method of claim 28, wherein
Each point in the set of points is also associated with a location; and
the set of predicted points is selected based on locations associated with the candidate point and the current point.
30. The method of claim 29, further comprising decoding the code stream to obtain the location associated with the candidate point and the current point.
31. A system for decoding a point cloud, the point cloud represented as a one-dimensional (1D) array, the 1D array comprising a set of points, each point in the set of points being 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 execution of the instructions:
decoding the code stream to obtain:
an index for setting a maximum number of candidate points for encoding at least one of the attributes associated with each point; and
at least one attribute associated with a set of candidate points, the set of candidate points being used to encode at least one attribute associated with a current point in the set of points;
determining a maximum number of the candidate points based on the index; and
at least one attribute associated with the current point is determined based on at least one attribute associated with the set of candidate points, wherein the number of candidate points in the set of candidate points is less than or equal to 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 2 (idx+7) Wherein idx represents the 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 used to set a maximum number of candidate points encoding each of the attributes.
35. The system of claim 31, wherein the index is used to set a maximum number of candidate points encoding only one of the attributes.
36. The system of claim 31, wherein the attribute comprises at least one of color or reflectivity.
37. The system of claim 31, wherein
The set of points follow a Morton order or a Hilbert order in the 1D array; and
the set of candidate points are neighboring points in the 1D array that are prior to the current point.
38. The system of claim 37, wherein to determine at least one attribute associated with the current point, the processor is configured to:
selecting a set of predicted points from the set of candidate points; and
the at least one attribute associated with the current point is determined based on at least one attribute associated with the set of predicted points.
39. The system of claim 38, wherein
Each point in the set of points is also associated with a location; and
the set of predicted points is selected based on locations associated with the candidate point and the current point.
40. The system of claim 39, wherein the processor is further configured to decode the code stream to obtain locations associated with the candidate point and the current point.
CN202280046607.6A 2021-07-02 2022-07-01 Attribute codec in geometric point cloud codec Pending CN117813822A (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US63/218,125 2021-07-02
US202163264509P 2021-11-23 2021-11-23
US63/264,509 2021-11-23
PCT/US2022/035927 WO2023278829A1 (en) 2021-07-02 2022-07-01 Attribute coding in geometry point cloud coding

Publications (1)

Publication Number Publication Date
CN117813822A true CN117813822A (en) 2024-04-02

Family

ID=90423724

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280046607.6A Pending CN117813822A (en) 2021-07-02 2022-07-01 Attribute codec in geometric point cloud codec

Country Status (1)

Country Link
CN (1) CN117813822A (en)

Similar Documents

Publication Publication Date Title
US11895307B2 (en) Block-based predictive coding for point cloud compression
CN112771583B (en) Method, device and storage medium for processing point cloud data
US11132818B2 (en) Predicting attributes for point cloud compression according to a space filling curve
US11450031B2 (en) Significant coefficient flag encoding for point cloud attribute compression
US10904564B2 (en) Method and apparatus for video coding
CN113615181B (en) Method and device for point cloud encoding and decoding
EP3603071B1 (en) Implicit view-dependent quantization
JP2022526232A (en) Methods for point cloud compression and their devices and computer programs
KR20230131878A (en) Apparatus and method for point cloud processing
WO2023132919A1 (en) Scalable framework for point cloud compression
CN113179411A (en) Point cloud attribute coding and decoding method and device, computer equipment and storage medium
CN118338021A (en) Attribute encoding in geometric point cloud encoding
WO2023278829A1 (en) Attribute coding in geometry point cloud coding
WO2023172703A1 (en) Geometry point cloud coding
CN117813822A (en) Attribute codec in geometric point cloud codec
CN115086716A (en) Method and device for selecting neighbor points in point cloud and coder/decoder
EP4364082A1 (en) Attribute coding in geometry point cloud coding
CN118369921A (en) Adaptive attribute coding for geometric point cloud coding
CN118302793A (en) Geometric point cloud coding
WO2023096973A1 (en) Geometry point cloud coding
US11915373B1 (en) Attribute value compression for a three-dimensional mesh using geometry information to guide prediction
WO2024012381A1 (en) Method, apparatus, and medium for point cloud coding
WO2023172705A1 (en) Attribute level coding for geometry point cloud coding
WO2023131132A1 (en) Method, apparatus, and medium for point cloud coding
WO2022257528A1 (en) Point cloud attribute prediction method and apparatus, and related device

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240410

Address after: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Applicant after: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd.

Country or region after: China

Address before: 2479 Bay East Road, Palo Alto, California, USA, Room 110

Applicant before: Chuangfeng Technology

Country or region before: U.S.A.

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination