Color component encoding methods, encoders and decoders
By performing residual-level encoding on the difference between color components and predicted values in point clouds, the problem of insufficient color component encoding efficiency and throughput in existing technologies is solved, and an efficient encoding and decoding process is achieved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2023-06-13
- Publication Date
- 2026-03-10
AI Technical Summary
In the existing G-PCC standard, the residual level of color components is encoded using a bypass method, which is not suitable for high-throughput hardware implementation, resulting in insufficient encoding efficiency and throughput.
A color component encoding method is adopted, which calculates the difference between the color component of each point in the point cloud and the predicted value as the residual level, and encodes the residual level, including the encoding of symbolic markers. The encoding and decoding of the encoding level are performed using absolute level and parity markers.
It improves the coding efficiency and throughput of G-PCC, making it suitable for high-throughput hardware implementations.
Smart Images

Figure CN119366178B_ABST
Abstract
Description
[0001] Cross-references to related applications
[0002] This application claims priority to U.S. Provisional Application No. 63 / 366,464, filed June 15, 2022, and U.S. Provisional Application No. 63 / 366,614, filed June 17, 2022. The entirety of each of the foregoing patent applications is incorporated herein by reference and forms part of this specification. Technical Field
[0003] This disclosure generally relates to computer-implemented methods and systems for video processing. Specifically, this disclosure relates to parity-based color-level coding of Geometry Point Cloud Coding (G-PCC). Background Technology
[0004] G-PCC is widely used in entertainment applications (e.g., VR / AR) and industrial applications (e.g., LiDAR scanning compression for automobiles or robots and high-definition (HD) maps for navigation). The Moving Picture Experts Group (MPEG) released the first version of the G-PCC standard, and the Audio Video Standard (AVS) is also developing a G-PCC standard. To effectively compress point cloud data, the geometric information of the point cloud is first compressed, and then corresponding attributes, including color or reflectivity, are compressed based on that geometric information.
[0005] In the current AVS-GPCC specification, the symbols for the residual levels of color components are encoded using a bypass method, while other syntax elements are encoded using a context-coded method. This design is not user-friendly for hardware implementations requiring high throughput. Summary of the Invention
[0006] Embodiments of this application provide a color component encoding method, encoder, and decoder that can improve the encoding efficiency and throughput of G-PCC.
[0007] In a first aspect, embodiments of this application provide a color component encoding method applied to an encoder. The method includes: calculating the difference between three color components of each of a plurality of points to be encoded in a point cloud and a predicted value of that color component, as a residual level for that point; encoding the encoding level of the residual level of the color component; and encoding a set of symbol flags of a plurality of symbols respectively indicating the residual level of the color component.
[0008] According to one embodiment, the encoding step includes: encoding a first zero flag indicating whether the residual level of a first color component is equal to zero; if the residual level of the first color component is not equal to zero, encoding the encoding level of the residual levels of the three color components, and if at least one of the residual levels of the second and third color components is not equal to zero, encoding the set of symbol flags of the plurality of symbols indicating the residual level of the color component; if the residual level of the first color component is equal to zero, determining that the encoding level of the residual level of the first color component is zero, and encoding the encoding level of the residual level of the second color component. The second zero flag is encoded; if the residual level of the second color component and the residual level of the third color component are not equal to zero, the encoding level of the residual level of the second color component and the encoding level of the residual level of the third color component are encoded, and the symbol flag indicating the residual level of the second color component and the symbol flag indicating the residual level of the third color component are encoded; and if the residual level of the second color component is equal to zero, the encoding level of the residual level of the second color component is determined to be zero, the encoding level of the residual level of the third color component is encoded, and the symbol flag indicating the residual level of the third color component is encoded.
[0009] According to one embodiment, the encoding level of the residual level of each color component in the color component is the absolute level of the residual level of the color component or the absolute level of the residual level minus one, and is the return value of the encoding level encoding function.
[0010] According to one embodiment, the step of encoding the residual levels of the residual levels of the color component includes: for each encoding level, encoding a first flag indicating whether the encoding level is equal to zero; if the encoding level is not equal to zero, encoding a second flag indicating whether the encoding level is equal to one; if the encoding level is not equal to one, encoding a third flag indicating the parity of the encoding level; encoding a fourth flag indicating whether the value of the encoding level minus two divided by two is equal to zero; and encoding a series of fifth flags indicating the value of the value of the encoding level minus two divided by two and then minus one.
[0011] According to one embodiment, the step of encoding the residual level of the color component includes: for each encoding level, encoding a sixth flag indicating whether the encoding level is greater than zero; if the encoding level is greater than zero, encoding a seventh flag indicating whether the encoding level is greater than one; if the encoding level is greater than one, encoding an eighth flag indicating the parity of the encoding level; encoding a ninth flag indicating whether the value of the encoding level minus two divided by two is greater than zero; and encoding a series of tenth flags indicating the value of the value of the encoding level minus two divided by two and then minus one.
[0012] According to one embodiment, the method also checks the enable flag in the attribute header of the point cloud sequence to enable encoding of the encoding level and symbol flag.
[0013] In a second aspect, embodiments of this application provide a color component decoding method applied to a decoder. The method includes: decoding an encoding level of residual levels for three color components of each of a plurality of points in a point cloud, wherein the residual level of the color component represents the difference between the color component of that point and a predicted value of that color component; decoding a set of symbol flags to obtain symbols for the corresponding residual levels of the color components; and reconstructing the point cloud by using the decoded encoding levels and the decoded symbols to recover the residual levels of the color components of each of the plurality of points.
[0014] According to one embodiment, the decoding step includes: decoding a first zero flag to determine whether the residual level of a first color component is equal to zero; if the residual level of the first color component is not equal to zero, decoding the encoding levels of the residual levels of the three color components, and if at least one of the residual levels of the second and third color components is not equal to zero, decoding a set of symbol flags to determine the symbol of the residual level of the color component; if the residual level of the first color component is equal to zero, determining that the encoding level of the residual level of the first color component is zero, and decoding a second zero flag to determine whether the residual level of the second color component is zero. If the residual level of the second color component is not equal to zero, then the encoding level of the residual level of the second color component and the encoding level of the residual level of the third color component are decoded, and if the residual level of the third color component is not equal to zero, then a set of symbol flags are decoded to determine the symbol of the residual level of the second color component and the symbol of the residual level of the third color component; and if the residual level of the third color component is equal to zero, then the encoding level of the residual level of the second color component is determined to be zero, the encoding level of the residual level of the third color component is decoded, and the symbol flags are decoded to determine the symbol of the residual level of the third color component.
[0015] According to one embodiment, the recovery step includes recovering the residual level of the color component of each of the plurality of points by calculating the product of the decoded symbol and the absolute level of the decoding level of the residual level of these color components.
[0016] According to one embodiment, the decoded encoding level of the residual level of each color component in the color component is the absolute level of the residual level of the color component or the absolute level of the residual level minus one.
[0017] According to one embodiment, the step of decoding the residual level encoding of the three color components of each of a plurality of points in a point cloud includes: for each encoding level, decoding a first encoding to determine whether the encoding level is equal to zero; if the encoding level is not equal to zero, decoding a second encoding to determine whether the encoding level is equal to one; if the encoding level is not equal to one, decoding a third encoding to obtain the parity of the encoding level; decoding a fourth encoding to determine whether the value of the encoding level minus two and divided by two is equal to zero; decoding a series of fifth encodings to obtain the value of the encoding level minus two and divided by two and then minus one; and determining the value of the encoding level based on the decoding result.
[0018] According to one embodiment, the step of decoding the residual level encoding of the three color components of each of a plurality of points in a point cloud includes: for each encoding level, decoding a sixth encoding to determine whether the encoding level is greater than zero; if the encoding level is greater than zero, decoding a seventh encoding to determine whether the encoding level is greater than one; if the encoding level is greater than one, decoding an eighth encoding to obtain the parity of the encoding level; decoding a ninth encoding to determine whether the value of the encoding level minus two divided by two is greater than zero; decoding a series of tenth encodings to obtain the value of the encoding level minus two divided by two and then minus one; and determining the value of the encoding level based on the decoding result.
[0019] In a third aspect, embodiments of this application provide an encoder including a communication interface, a storage device, and a processor. The communication interface is configured to retrieve point cloud data. The storage device is configured to store the point cloud data. The processor is coupled to the communication interface and the storage device, and the processor includes a residual calculation unit, a residual encoding unit, and a symbol encoding unit. The residual calculation unit calculates the difference between three color components of each of a plurality of points to be encoded in the point cloud and the predicted value of the color component, as the residual level of that point. The residual encoding unit encodes the encoding level of the residual level of the color component. The symbol encoding unit encodes a set of symbol flags of a plurality of symbols respectively indicating the residual level of the color component.
[0020] According to one embodiment, the residual coding unit encodes a first zero flag indicating whether the residual level of the first color component is equal to zero; if the residual level of the first color component is not equal to zero, the residual coding unit encodes the coding level of the residual levels of the three color components, and if at least one of the residual levels of the second and third color components is not equal to zero, the symbol coding unit encodes the set of symbol flags of the plurality of symbols indicating the residual level of the color component; if the residual level of the first color component is equal to zero, the residual coding unit determines that the coding level of the residual level of the first color component is zero, and encodes the second zero flag indicating whether the residual level of the second color component is equal to zero. The zero flag is encoded; if the residual level of the second color component and the residual level of the third color component are not equal to zero, the residual encoding unit encodes the encoding level of the residual level of the second color component and the encoding level of the residual level of the third color component, and encodes the symbol flag indicating the symbol of the residual level of the second color component and the symbol flag indicating the symbol of the residual level of the third color component; and if the residual level of the second color component is equal to zero, the residual encoding unit determines that the encoding level of the residual level of the second color component is zero, and encodes the encoding level of the residual level of the third color component, and the symbol encoding unit encodes the symbol flag indicating the symbol of the residual level of the third color component.
[0021] According to one embodiment, the residual coding unit further encodes, for each coding level, a first flag indicating whether the coding level is equal to zero; if the coding level is not equal to zero, a second flag indicating whether the coding level is equal to one; if the coding level is not equal to one, a third flag indicating the parity of the coding level; a fourth flag indicating whether the value of the coding level minus two divided by two is equal to zero; and a series of fifth flags indicating the value of the value of the coding level minus two divided by two and then minus one.
[0022] According to one embodiment, the residual coding unit further encodes, for each coding level, a sixth flag indicating whether the coding level is greater than zero; if the coding level is greater than zero, a seventh flag indicating whether the coding level is greater than one; if the coding level is greater than one, an eighth flag indicating the parity of the coding level; a ninth flag indicating whether the value of the coding level minus two divided by two is greater than zero; and a series of tenth flags indicating the value of the value of the coding level minus two divided by two and then minus one.
[0023] According to one embodiment, the residual coding unit and the symbol coding unit are enabled by an enable flag in the attribute header of the point cloud sequence.
[0024] In a fourth aspect, embodiments of this application provide a decoder including a communication interface, a storage device, and a processor. The communication interface is configured to retrieve an attribute bitstream of a point cloud. The storage device is configured to store the attribute bitstream of the point cloud. The processor is coupled to the communication interface and the storage device, and the processor includes an encoding-level decoding unit, a symbol decoding unit, and a residual recovery unit. The encoding-level decoding unit decodes the encoding level of the residual levels of three color components for each of a plurality of points in the point cloud from the attribute bitstream, wherein the residual level of the color component represents the difference between the color component of the point and the predicted value of the color component. The symbol decoding unit decodes a set of symbol flags from the attribute bitstream to obtain the symbol of the corresponding residual level of the color component. The residual recovery unit reconstructs the point cloud by using the decoded encoding level and the decoded symbol to recover the residual level of the color component of each of the plurality of points.
[0025] According to one embodiment, the encoding-level decoding unit decodes a first zero flag to determine whether the residual level of the first color component is equal to zero; if the residual level of the first color component is not equal to zero, the encoding-level decoding unit decodes the encoding level of the residual levels of the three color components; and if at least one of the residual levels of the second and third color components is not equal to zero, the symbol decoding unit decodes a set of symbol flags to determine the symbol of the residual level of the color component; if the residual level of the first color component is equal to zero, the encoding-level decoding unit determines that the encoding level of the residual level of the first color component is zero, and decodes a second zero flag to determine whether the residual level of the second color component is equal to zero. If the residual level of the second color component is not equal to zero, the encoding level decoding unit decodes the encoding level of the residual level of the second color component and the encoding level of the residual level of the third color component; and if the residual level of the third color component is not equal to zero, the symbol decoding unit decodes a set of symbol flags to determine the symbol of the residual level of the second color component and the symbol of the residual level of the third color component; and if the residual level of the third color component is equal to zero, the encoding level decoding unit determines that the encoding level of the residual level of the second color component is zero, decodes the encoding level of the residual level of the third color component, and the symbol decoding unit decodes the symbol flags to determine the symbol of the residual level of the third color component.
[0026] According to one embodiment, the residual recovery unit recovers the residual level of the color component of each of the plurality of points by calculating the product of the decoded symbol and the absolute level of the decoding level of the residual level of these color components. Attached Figure Description
[0027] The various aspects of this disclosure can be best understood by reading the following detailed description in conjunction with the accompanying drawings. Note that, according to industry standard practice, the features are not drawn to scale. In fact, the dimensions of the features may be increased or decreased arbitrarily for clarity of discussion.
[0028] Figure 1 This is a flowchart of G-PCC encoding according to an embodiment of this application.
[0029] Figure 2A and Figure 2B An octree structure of a G-PCC according to an embodiment of this application is shown.
[0030] Figure 2C The corresponding numerical representation of an octree structure according to an embodiment of this application is shown.
[0031] Figure 3 The structure of a cube according to an embodiment of this application is shown.
[0032] Figure 4 This is a flowchart of G-PCC decoding according to an embodiment of this application.
[0033] Figure 5 This is a schematic diagram of the hardware structure of the encoder provided by the embodiments of this application.
[0034] Figure 6 This is a flowchart of a color component encoding method applied to an encoder according to an embodiment of the present disclosure.
[0035] Figure 7 This is a schematic diagram of the hardware structure of the decoder provided by an embodiment of this application.
[0036] Figure 8 This is a flowchart of a color component decoding method applied to a decoder according to an embodiment of the present disclosure.
[0037] Figure 9 This is a syntax table of color residual encoding functions according to embodiments of the present disclosure.
[0038] Figure 10A and Figure 10B It is a syntax table of encoding level encoding functions according to embodiments of the present disclosure.
[0039] Figure 11 This is a syntax table of color residual encoding functions according to embodiments of the present disclosure. Detailed Implementation
[0040] To gain a more detailed understanding of the features and technical content of the embodiments of this application, the implementation methods of the embodiments of this application will be described in detail below with reference to the accompanying drawings. The drawings are for reference and explanation purposes only and are not intended to limit the embodiments of this application.
[0041] Figure 1 This is a flowchart of G-PCC encoding according to an embodiment of this application. Figure 1 The process shown is applied to a point cloud encoder. For the point cloud data to be encoded, it is divided into multiple slices. Within each slice, the location (i.e., geometric information) of the point cloud and the attributes corresponding to each point cloud are encoded separately.
[0042] In the geometric encoding process, the locations are reconciled in step S102 to convert the point cloud into bounding boxes, and then these locations are quantized in step S104. Quantization mainly serves a scaling function. Due to quantization rounding, some locations in the point cloud are identical, so in step S104, it is further determined whether to remove duplicate points based on parameters. The process of quantization and removing duplicate points is also called voxelization.
[0043] Then, in step S106, the bounding box is divided into an octree for octree analysis. During the octree-based geometric information encoding process, the bounding box is divided into eight sub-cubes, and the non-empty sub-cubes (including points in the point cloud) are further divided into eight equal parts until a leaf knot is obtained. When the point is a 1×1×1 unit cube, the division stops, and in step S108, the points within the leaf knot are arithmetically encoded to generate a binary geometric bitstream, i.e., a geometric codestream.
[0044] Figure 2A and Figure 2B An octree structure of G-PCC according to an embodiment of this application is shown, and Figure 2C A corresponding numerical representation of an octree structure according to an embodiment of this application is shown. Reference Figure 2A The cube axis-aligned bounding box B consists of two extreme points (0, 0, 0) and (2... d ,2 d ,2 d The definition is given by ), where d is the maximum size of the given point cloud along the x, y, or z direction. Points in the point cloud are denoted as "points" below. The cube B defined in this case includes all points.
[0045] refer to Figure 2BCube B is divided into eight sub-cubes B1 to B8, creating an octree structure that allows a parent cube B to have eight sub-cubes B1 to B8. The seven sibling cubes B2 to B8 of a given cube B1 are cubes of the same size and share at least one identical face / edge / point with the given cube. The volume of each cube in B1 to B8 is 1 / 8 of the volume of its parent cube B. Each cube in B1 to B8 can contain more than one point, and the number of points in a cube depends on the cube's size and position. A cube of minimum size for a given point cloud is predefined. For a given point, the parent cube of the given point is defined as the cube containing the minimum size of that point. Sibling points of a given point are defined as those points that share the same parent cube as the given point.
[0046] refer to Figure 2C An octree is a recursive data structure commonly used to describe three-dimensional space where each internal cube has exactly eight child cubes. This space is recursively subdivided into eight octets until the resolution of a child cube equals the size of that point—the smallest element to which no further subdivision is possible. To represent a cube, an 8-bit binary code following a space-filling curve pattern (Hilbert / Morton) is used. Each child cube is assigned a "1" or "0" value to indicate whether the space within the child cube contains any point associated with that child cube, or whether the child cube is empty. Further subdivision is only performed on occupied child cubes. The subdivision process of the parent cube terminates when the size of a child cube becomes equal to the size of an indivisible element (i.e., the spatial resolution of the point cloud, or simply the size of a point).
[0047] Figure 3 The structure of a cube according to one embodiment of this application is shown. Reference Figure 3 Depending on the current cube's position, a cube can have up to six cubes of the same size sharing a face. Additionally, the current cube may have some neighboring cubes that share lines or points with it.
[0048] Similarly, the parent cube of the current cube can have at most six neighboring cubes of the same size that share a face with the parent cube. The parent cube of the current cube can also have at most twelve neighboring cubes of the same size that share an edge with the parent cube. The parent cube of the current cube can also have at most eight neighboring cubes of the same size that share a point with the parent cube.
[0049] Return to reference Figure 1In step S110, the surface and 12 slices of the block are analyzed based on the surface formed by the point cloud distribution in each block. In step S108, up to 12 vertices (intersections) are generated by edges, and arithmetic encoding (surface fitting based on intersections) is performed on these vertices to generate a binary geometric bitstream, i.e., a geometric codestream. In step S112, vertices are also used to implement the geometric reconstruction process, and the reconstructed set information is used when encoding the attributes of the point cloud.
[0050] During the attribute encoding process, geometric encoding is completed, and after the geometric information is reconstructed in step S112, a color transformation is performed in step S114, converting the color information (i.e., attribute information) from the RGB color space to the YUV color space. Then, in step S116, the point cloud is recolored using the reconstructed geometric information, so that the unencoded attribute information corresponds to the reconstructed geometric information. The main focus is on attribute encoding of the color information.
[0051] In the color information encoding process, there are two main transformation methods. One method is distance-based lifting transformation, which depends on the Level of Detail (LOD) partitioning in step S118 and the lifting in step S120. The other method is direct region adaptation. A hierarchical transformation (Region Adaptive Hierarchical Transform (RAHT)) is performed in step S122. Both methods transform the color information from the spatial domain to the frequency domain, thereby obtaining high-frequency and low-frequency coefficients. Finally, these coefficients are quantized (i.e., quantization coefficients) in step S124.
[0052] Finally, in step S126, after performing octree partitioning and surface fitting, the geometric encoded data and the quantization coefficient processed attribute encoded data are sliced and synthesized. Then, the vertex coordinates of each block are encoded sequentially (i.e., arithmetic encoding) to generate a binary attribute bit stream, i.e., an attribute code stream.
[0053] Figure 4 This is a flowchart of G-PCC decoding according to an embodiment of this application. Figure 4 The process described above is applied to the point cloud decoder. For the acquired binary bitstream, the geometric bitstream and attribute bitstream in the binary bitstream are first decoded in steps S402 and S404, respectively. When decoding the geometric bitstream, the position (i.e., geometric information) of the point cloud is obtained through arithmetic decoding in step S402, octree synthesis in step S406, surface fitting in step S106, geometric reconstruction in step S410, and inverse coordinate transformation in step S412.
[0054] When decoding the attribute bitstream, the attributes of the point cloud are obtained through arithmetic decoding in step S404, inverse quantization in step S414, inverse LOD-based lifting in steps S416 and S418, or RAHT-based inverse transformation in step S420, and color inverse transformation in step S422. The three-dimensional image model of the point cloud data to be encoded is then recovered based on the position and attributes.
[0055] Context-based arithmetic coding can be used to encode octree-based geometric information. There may also be corresponding attribute information in the point cloud that needs to be compressed (including color, reflectivity, etc.). Since neighboring points in a point cloud can be highly correlated, prediction-based coding methods have been developed to construct and encode point cloud attributes. More specifically, predictions are formed based on adjacent coded attributes. Then, the difference between the current attribute and the prediction is encoded.
[0056] In this disclosure, encoding is considered to refer to encoding methods, decoding methods, encoding systems, and decoding systems.
[0057] Attribute Encoding in AVS G-PCC
[0058] AVS is developing the G-PCC standard. After encoding the geometric information, a point cloud cube can be converted into a one-dimensional array using Morton or Hilbert encoding / sequence. Each location in the cube will have a corresponding Morton or Hilbert code, but some locations may not have any corresponding point cloud attributes. In other words, some locations may be empty. Attribute encoding will follow a predefined Morton or Hilbert order. Predictors can be generated based on previously encoded points according to the Morton or Hilbert order. The attribute difference between the current point and its predictor is encoded into a bitstream.
[0059] To reduce memory usage, predefined quantities have been specified to limit the number of neighboring points that can be used to generate predictions. For example, in the first N consecutively encoded points, only M data points may be used to encode the current attribute. In the previous AVS G-PCC software, M and N were set to fixed quantities of 3 and 128, respectively.
[0060] If more than 128 points have been encoded before the current point, only 3 of the previously encoded 128 neighboring points can be used to form the attribute predictor according to a predefined order. If fewer than 128 points have been encoded before the current point, all of these points will be used as candidate points for building the attribute predictor. More specifically, K points before the current point are selected according to a predefined Morton or Hilbert order, for example, K=6. Then, new Morton or Hilbert codes for these N points are recalculated by adding a fixed shift (e.g., 1) to the coordinates (x, y, z) of these N points. Assuming the new Morton or Hilbert code for the current position is X, the set of P points before the current position and the set of Q points after the current position are selected according to the new Morton or Hilbert encoding order. From these predefined sets of K, P, and Q points, M points are selected using the M nearest "distances" between these encoded points and the current point. As an example, distance d1 is defined as follows, but other distance metrics can also be used.
[0061] d1=|x1-x2|+ |y1-y2|+|z1-z2| (1)
[0062] Where (x1,y1,z1) and (x2,y2,z2) are the coordinates of the current point and the pre-selected point, respectively.
[0063] Recently, a full search method based on Hilbert coding has been applied to attribute coding in AVSGPCC. In the current software, the search range is set to 128, and the number of previous points used to form the predictor is set to M. If more than 128 points have been encoded before the current point, it may be possible to use only M of the 128 previously encoded neighboring points to form the attribute predictor according to the Hilbert order.
[0064] If there are fewer than 128 previous encoded points, all of these encoded points will be used as candidate points for forming the attribute predictor. The M nearest "distances" between these encoded points and the current point are used to select M points from a maximum of 128 previous encoded points. As an example, distance d2 is defined as follows; other distance metrics can also be used.
[0065] d2=|x1-x3|+ |y1-y3|+|z1-z3| (2)
[0066] Where (x1,y1,z1) and (x3,y3,z3) are the coordinates of the current point and the pre-selected point along the Hilbert order, respectively. Once M nearest points have been selected, a weighted average of the attributes of these M points is formed as a predictor, which is used to encode the attributes of the current point.
[0067] It is known that points sharing the same face / line / point with the current point are close to that current point. Another technique is to consider using these points as predictors.
[0068] The residual is defined as the difference in attribute values between the current point and its predictor. Depending on the application, PCC can be lossless or lossy. Therefore, the residual can be quantized or not quantized using a predefined quantization process. In this disclosure, the unquantized or quantized residual is referred to as a level. This level can be a signed integer and will be encoded into a bitstream.
[0069] [Color Level Encoding]
[0070] Each point has three color attributes from three color components. A point is called a zero-level point if the levels of all three color components are zero. Otherwise, a point is called a non-zero-level point if there is a non-zero level for at least one color component. In the current AVS-GPCC, the number of consecutive zero-level points is called the zero run length. The zero run length values and the levels of non-zero-level points are encoded into the bitstream.
[0071] More specifically, on the encoding side, the zero run length value is set to zero before encoding the first point. Starting from the first point and following a predefined encoding order, the residuals between the three color predictors of the current point and their corresponding color attributes can be obtained. Then, the levels corresponding to the three components of the current point can also be obtained. If the current point is a zero-level point, the zero run length value is incremented by one, and the process continues to the next point. If the current point is a non-zero-level point, the zero run length value is encoded first, and then the three color levels of that non-zero-level point are encoded immediately. After the non-zero-level points are encoded, the zero run length value is reset to zero, and the process continues to the next point until all points are completed.
[0072] On the decoding side, zero-run-length values are first decoded, and the three color levels corresponding to the number of zero-run-length points are set to zero. Then, the levels of non-zero-level points are decoded, followed by the next zero-run-length value. This process continues until all points are decoded.
[0073] For non-zero level points, at least one non-zero level exists in the three components. Several one-bit flags and the remainder of the absolute level can be encoded to represent the residual level of the color component. In the remainder of this disclosure, the absolute level or the absolute level of the color residual minus one can be encoded and named the encoded level.
[0074] [Encoder]
[0075] Figure 5 This is a schematic diagram of the hardware structure of the encoder provided in an embodiment of this application. (Reference) Figure 5 The encoder 50 includes a communication interface 52, a storage device 54, and a processor 56.
[0076] Communication interface 52 may be, for example, a network interface card (NIC) supporting wired network connections (e.g., Ethernet), a wireless network interface card (NIC) supporting wireless communication standards (e.g., Institute of Electrical and Electronics Engineers (IEEE) 802.11n / b / g / ac / ax / be), or any other network connection device, but the embodiment is not limited thereto. Communication interface 52 is configured to retrieve point cloud data.
[0077] Storage device 54 can be volatile memory or non-volatile memory, or it can include both. The non-volatile memory can be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. The volatile memory can be random access memory (RAM), which is used as an external cache. The storage device 54 described in this application is configured to store point cloud data retrieved by communication interface 52.
[0078] The processor 56 is coupled to the communication interface 52 and the storage device 54 via a bus system 58. It is understood that the bus system 58 serves as a data bus to enable connection and communication between these components. In addition to a data bus, the bus system 58 can also be a power bus, a control bus, a status signal bus, or a combination thereof, but this embodiment is not limited to these.
[0079] The processor 56 includes a residual calculation unit 562, a residual encoding unit 564, and a symbol encoding unit 566.
[0080] The residual calculation unit 562 is used to calculate the difference between the three color components of each of the multiple points to be encoded in the point cloud and the predicted values of these color components, and use it as the residual level of that point.
[0081] The residual coding unit 564 is used to encode the coding level of the residual level of these color components.
[0082] The symbol encoding unit 566 is used to encode a set of symbol markers for multiple symbols that respectively indicate the residual level of these color components.
[0083] It is understood that in this embodiment, a "unit" can be a part of a circuit, a part of a processor, a part of a program or software, etc. Of course, a "unit" can also be a module, or a non-modular unit. Furthermore, various components in this embodiment can be integrated into a single processing unit, or each unit can actually exist independently, or two or more units can be integrated into a single unit. The integrated unit described above can be implemented in the form of hardware or software functional modules.
[0084] Figure 6 This is a flowchart of a color component encoding method applied to an encoder according to an embodiment of the present disclosure. (See also...) Figure 5 and Figure 6 The method in this embodiment is applied to Figure 5 The encoder 50 is described below in detail. The steps of the color component encoding method of the exemplary embodiments of this disclosure and the elements in the encoder 50 will now be described below.
[0085] In step S602, the residual calculation unit 562 is used to calculate the difference between the three color components of each of the multiple points to be encoded in the point cloud and the predicted values of these color components, as the residual level of that point.
[0086] In step S604, the residual coding unit 564 is used to encode the coding level of the residual level of these color components.
[0087] In step S606, the symbol encoding unit 566 is used to encode a set of symbol markers for multiple symbols that respectively indicate the residual level of these color components.
[0088] In some embodiments, the residual coding unit 564 encodes a first zero flag indicating whether the residual level of the first color component is equal to zero. If the residual level of the first color component is not equal to zero, the residual coding unit 564 encodes the coding levels of the residual levels of the three color components, and if at least one of the residual levels of the second and third color components is not equal to zero, the symbol coding unit 566 encodes a set of symbol flags indicating a plurality of symbols of the residual levels of these color components. If the residual level of the first color component is equal to zero, the residual coding unit 564 determines that the coding level of the residual level of the first color component is zero and encodes a second zero flag indicating whether the residual level of the second color component is equal to zero. If the residual levels of the second and third color components are not equal to zero, the residual coding unit 564 encodes the coding levels of the residual levels of the second and third color components, and the symbol coding unit 566 encodes the symbol flags indicating the symbols of the residual levels of the second and third color components. If the residual level of the second color component is equal to zero, the residual coding unit 564 determines that the coding level of the residual level of the second color component is zero, and encodes the coding level of the residual level of the third color component. The symbol coding unit 566 then encodes the symbol flag indicating the residual level of the third color component. Figure 9 An exemplary embodiment can be seen in syntax table 900, and this embodiment will be described in detail below.
[0089] In some embodiments, the encoding level of the residual level of each color component is the absolute level of the residual level of that color component or the absolute level of the residual level minus one, and the encoding level of the residual level of each color component is as follows: Figure 10A Syntax Table 100a and Figure 10B The return value of the `coded_level_coding` function, as shown in syntax table 100b, will be explained in detail below. Specifically, when it is determined that the residual level of a color component is not equal to zero, one bit less can be encoded for the residual level; therefore, the encoded level of the residual level is the absolute level of the residual level minus one. When it is not yet determined whether the residual level of a color component is equal to zero, the residual level is encoded as the absolute level of the residual level.
[0090] In some embodiments, for each coding level, the residual coding unit 564 further encodes a first flag indicating whether the coding level is equal to zero; if the coding level is not equal to zero, it encodes a second flag indicating whether the coding level is equal to one; if the coding level is not equal to one, it encodes a third flag indicating the parity of the coding level; it encodes a fourth flag indicating whether the value of the coding level minus two divided by two is equal to zero; and it encodes the value of the coding level minus two divided by two and then minus one.
[0091] In some embodiments, for each coding level, the residual coding unit 564 further encodes a sixth flag indicating whether the coding level is greater than zero; if the coding level is greater than zero, it encodes a seventh flag indicating whether the coding level is greater than one; if the coding level is greater than one, it encodes an eighth flag indicating the parity of the coding level; it encodes a ninth flag indicating whether the value of the coding level minus two divided by two is greater than zero; and it encodes the value of the coding level minus two divided by two and then minus one.
[0092] In some embodiments, an enable flag is provided in the attribute header of the point cloud sequence, and this enable flag is used to enable encoding of the encoding level and symbol flag. That is, during the encoding process, the encoder 50 can check the enable flag in the attribute header of the point cloud sequence, and when the value of the enable flag is true, enable encoding of the encoding level and symbol flag.
[0093] [Decoder]
[0094] Figure 7 This is a schematic diagram of the hardware structure of the decoder provided by an embodiment of this application. (Reference) Figure 7 The decoder 70 includes a communication interface 72, a storage device 74, and a processor 76, which is coupled to the communication interface 72 and the storage device 74 via a bus system 78.
[0095] It is understandable that the hardware structure of communication interface 72, storage device 74, processor 76 and bus system 78 is similar to that of communication interface 52, storage device 54, processor 56 and bus system 58, so the details will not be described here.
[0096] In this embodiment, the communication interface 72 is configured to retrieve the attribute bitstream of the point cloud, and the storage device 74 is configured to store the attribute bitstream of the point cloud.
[0097] The processor 76 includes an encoding-level decoding unit 762, a symbol decoding unit 764, and a residual recovery unit 766.
[0098] The encoding-level decoding unit 762 is used to decode the encoding level of the residual levels of the three color components for each of the multiple points in the point cloud from the attribute bitstream. The residual level of the color components represents the difference between these color components and their predicted values at that point.
[0099] The symbol decoding unit 764 is used to decode a set of symbol flags to obtain symbols of the corresponding residual levels from these color components of the attribute bitstream.
[0100] The residual recovery unit 766 is used to reconstruct the point cloud by recovering the residual level of the color component of each of the plurality of points using the decoded encoding level and the decoded symbol.
[0101] It is understood that in this embodiment, a "unit" can be a part of a circuit, a part of a processor, a part of a program or software, etc. Of course, a "unit" can also be a module, or a non-modular unit. Furthermore, the various components in this embodiment can be integrated into one processing unit, or each unit can actually exist independently, or two or more units can be integrated into one unit. The integrated unit described above can be implemented in the form of hardware or software functional modules.
[0102] Figure 8 This is a flowchart of a color component decoding method applied to a decoder according to an embodiment of the present disclosure. (See also...) Figure 7 and Figure 8 The method in this embodiment is applied to Figure 7 The decoder 70 is described below. The detailed steps of the color component decoding method of an exemplary embodiment of this disclosure, as well as the elements in the decoder 70, will now be described.
[0103] In step S802, the encoding level decoding unit 762 decodes the residual level encoding level of the three color components of each of the multiple points in the point cloud from the attribute bit stream.
[0104] In step S804, the symbol decoding unit 764 decodes a set of symbol flags to obtain symbols of the corresponding residual levels of these color components from the attribute bitstream.
[0105] In step S806, the residual recovery unit 766 reconstructs the point cloud by using the decoded encoding level and the decoded symbol to recover the residual level of the color component of each of the plurality of points.
[0106] In some embodiments, the encoding level decoding unit 762 decodes the first zero flag to determine whether the residual level of the first color component is equal to zero; if the residual level of the first color component is not equal to zero, the encoding level decoding unit 762 decodes the encoding level of the residual levels of the three color components, and if at least one of the residual levels of the second and third color components is not equal to zero, the symbol decoding unit 764 decodes a set of symbol flags to determine the symbols of the residual levels of these color components; if the residual level of the first color component is equal to zero, the encoding level decoding unit 762 determines that the encoding level of the residual level of the first color component is zero, and decodes the second zero flag to determine whether the residual level of the second color component is equal to zero. If the residual level of the second color component is zero, then the encoding level decoding unit 762 decodes the encoding level of the residual level of the second color component and the encoding level of the residual level of the third color component. If the residual level of the third color component is not zero, then the symbol decoding unit 764 decodes a set of symbol flags to determine the symbol of the residual level of the second color component and the symbol of the residual level of the third color component. If the residual level of the second color component is zero, then the encoding level decoding unit 762 determines that the encoding level of the residual level of the second color component is zero, and decodes the encoding level of the residual level of the third color component. The symbol decoding unit 764 decodes the symbol flags to determine the symbol of the residual level of the third color component.
[0107] In some embodiments, the residual recovery unit 766 recovers the residual level of the color component of each of the plurality of points by calculating the product of the decoded symbol and the absolute level of the decoding level of the residual level of the color component.
[0108] Figure 9 This is a syntax table for a color residual encoding function according to an embodiment of the present disclosure.
[0109] As shown in syntax table 90, the first zero flag (color_first_comp_zero) is encoded to indicate whether the residual level of the first color component is zero. If the residual level of the first color component is not zero, the encoding level (e.g., absolute level or absolute level minus one) of the residual levels of the three color components (i.e., color_component[0], color_component[1], and color_component[2]) is encoded according to the encoding function of the encoding level, and the sign flag (i.e., color_first_component_sign, color_second_component_sign, color_third_component_sign) indicating the residual level of the color components is also encoded, as shown below. Note that the encoding may be three signs, two signs, or one sign depending on whether the second or third color component is zero.
[0110] When the symbol flag `color_first_component_sign` is equal to 0, the sign of the residual level specifying the first color component is negative. When the symbol flag `color_first_component_sign` is equal to 1, the sign of the residual level specifying the first color component is positive. If the symbol flag `color_first_component_sign` does not exist, it is inferred to be equal to 1.
[0111] When the sign flag `color_second_component_sign` is 0, the sign of the residual level for the second color component is negative. When the sign flag `color_second_component_sign` is 1, the sign of the residual level for the second color component is positive. If the sign flag `color_second_component_sign` does not exist, it is inferred to be equal to 1.
[0112] When the symbol flag `color_third_component_sign` is equal to 0, the sign of the residual level for the third color component is negative. When the symbol flag `color_third_component_sign` is equal to 1, the sign of the residual level for the third color component is positive. If the symbol flag `color_third_component_sign` does not exist, it is inferred to be equal to 1.
[0113] If the residual level of the first color component is zero, then the encoding level of the residual level of the first color component (i.e., color_component[0]) is zero, and the second zero flag (color_second_comp_zero) is encoded to indicate whether the residual level of the second color component is zero.
[0114] If the residual level of the second color component is not zero, the encoding level of the residual level of the color component (i.e., color_component[1] and color_component[2]) will be encoded according to the encoding function of the encoding level, and the sign flags (i.e., color_second_component_sign, color_third_component_sign) indicating the residual levels of the second and third color components will be encoded. Note that the encoding may be based on whether the third color component is zero, and may be based on three signs, two signs, or one sign.
[0115] If the residual level of the second color component is zero, then the encoding level of the residual level of the second color component (i.e., color_component[1]) is zero. The encoding level of the residual level of the third color component (i.e., color_component[2]) will be encoded according to the encoding function of the encoding level, and the sign flag (i.e., color_third_component_sign) indicating the residual level of the third color component will be encoded.
[0116] Figure 10A and Figure 10B It is a syntax table of encoding level encoding functions according to embodiments of the present disclosure.
[0117] refer to Figure 10A Syntax table 100a in the code encodes the first flag (coded_level_equal_zero) to indicate whether the coding level is equal to zero.
[0118] If the encoding level is not equal to zero, the second flag (coded_level_equal_one) is encoded to indicate whether the encoding level is equal to one.
[0119] If the encoding level is not equal to one, the third flag (coded_level_parity) is encoded to indicate the parity of the encoding level, and the fourth flag (coded_level_minus2_div2_equal_zero) is encoded to indicate whether the value of the encoding level minus two divided by two is equal to zero.
[0120] If the value of encoding level minus two divided by two is not equal to zero, then the difference between encoding level minus two divided by two and then minus one (coded_level_minu2_div2_minus1) is encoded.
[0121] refer to Figure 10B Syntax table 100b in the code encodes the sixth flag (coded_level_gt_zero) to indicate whether the coding level is greater than zero.
[0122] If the encoding level is greater than zero, the seventh flag (coded_level_gt_one) is encoded to indicate whether the encoding level is greater than one.
[0123] If the encoding level is greater than one, the eighth flag (coded_level_parity) is encoded to indicate the parity of the encoding level, and the ninth flag (coded_level_minus2_div2_gt_zero) is encoded to indicate whether the value of the encoding level minus two and divided by two is greater than zero.
[0124] If the value of encoding level minus two divided by two is greater than zero, then the difference between encoding level minus two divided by two and then minus one (coded_level_minu2_div2_minus1) is encoded.
[0125] Figure 11 This is a syntax table for a color residual encoding function according to an embodiment of the present disclosure.
[0126] As shown in syntax table 110, the first zero flag (color_first_comp_zero) is encoded to indicate whether the residual level of the first color component is zero. If the residual level of the first color component is not zero, the encoding level of the residual level of the first color component (i.e., coded_level_coding(true)+1), the encoding level of the residual level of the second color component, and the encoding level of the residual level of the third color component (coded_level_coding(false)) are encoded according to the encoding level encoding function. Furthermore, the sign flags indicating the signs of the residual levels of the color components (i.e., color_first_component_sign, color_second_component_sign, and color_third_component_sign) can also be encoded.
[0127] Note that because the residual level of the first color component is determined to be non-zero, the return value of the encoding level function is the absolute level of the residual level minus one (i.e., coded_level_coding(true)), and therefore the encoding level of the residual level of the first color component is equal to coded_level_coding(true) + 1. On the other hand, because it is uncertain whether the residual levels of the second and third color components are equal to zero, the return value of the encoding level function is the absolute level of the residual level (i.e., coded_level_coding(false)), and therefore the encoding level of the residual level of the first color component is equal to coded_level_coding(false).
[0128] Note that the residual level of the first color component (color component[0]) can be recovered by calculating the product of the decoded symbol and the absolute level of the residual level of the first color component, which is denoted as (2*color_first_component_sign-1)*color_component[0].
[0129] Similarly, the residual level of the second color component [1] can be recovered by calculating the product of the decoded symbol and the absolute level of the encoded level of the residual level of the second color component, which is denoted as (2*color_second_component_sign-1)*color_component[1]. The residual level of the third color component [2] can be recovered by calculating the product of the decoded symbol and the absolute level of the decoded level of the residual level of the third color component, which is denoted as (2*color_third_component_sign-1)*color_component[2].
[0130] If the residual level of the first color component is zero, the encoding level of the residual level of the first color component (i.e., color_component[0]) is zero, and the second zero flag (color_second_comp_zero) is encoded to indicate whether the residual level of the second color component is zero.
[0131] If the residual level of the second color component is not zero, the encoding level of the residual level of the color component (i.e., color_component[1] and color_component[2]) will be encoded according to the encoding level encoding function, and the sign flags (i.e. color_second_component_sign and color_third_component_sign) indicating the residual level of the second color component and the residual level of the third color component can be encoded.
[0132] Note that because it cannot be determined whether the residual level of the second color component is equal to zero, the return value of the encoding level of the residual level of the second color component is equal to coded_level_coding(true)+1, and the return value of the encoding level of the residual level of the third color component is equal to coded_level_coding(false).
[0133] The residual level of the second color component (color component[1]) can be recovered by calculating the product of the decoded symbol and the absolute level of the residual level of the second color component, which is denoted as (2*color_second_component_sign-1)*color_component[1]. The residual level of the third color component (color component[2]) can be recovered by calculating the product of the decoded symbol and the absolute level of the residual level of the third color component, which is denoted as (2*color_third_component_sign-1)*color_component[2].
[0134] If the residual level of the second color component is zero, the encoding level of the residual level of the second color component (i.e., color_component[1]) will be zero. The encoding level of the residual level of the third color component (i.e., color_component[2]) will be encoded according to the encoding level encoding function, and the sign flag (i.e., color_third_component_sign) indicating the residual level of the third color component will be encoded.
[0135] Note that because the residual level of the second color component is determined to be zero, the return value of the encoding level of the residual level of the third color component is equal to coded_level_coding(true+1).
[0136] The residual level of the third color component (color component[2]) can be recovered by calculating the product of the decoded symbol and the absolute level of the residual level of the third color component, which is denoted as (2*color_third_component_sign-1)*color_component[2].
[0137] In summary, the color component encoding method, encoder, and decoder disclosed herein employ several 1-bit symbol flags to indicate the symbols of the residual levels of these color components, and encode the residual levels of the color components separately to represent these residual levels. Therefore, the encoding efficiency and throughput of G-PCC can be improved.
[0138] It will be apparent to those skilled in the art that various modifications and variations can be made to the disclosed embodiments without departing from the scope or spirit of this disclosure. In view of the foregoing, this disclosure is intended to cover modifications and variations and their equivalents that fall within the scope of the appended claims.
Claims
1. A color component encoding method, the method being applied to an encoder, the method comprising: computing, as a residual level of each point of a plurality of points to be encoded in a point cloud, a difference between three color components of the point and predicted values of the color components; and, encoding an encoding level of the residual level of the color components and a set of sign flags respectively indicating a plurality of signs of the residual level of the color components; wherein the encoding step comprises: encoding a first zero flag indicating whether a residual level of a first color component is equal to zero; if the residual level of the first color component is not equal to zero, encoding the encoding level of the residual level of the three color components and, if at least one of a residual level of a second color component and a residual level of a third color component is not equal to zero, encoding the set of sign flags indicating the plurality of signs of the residual level of the color components; if the residual level of the first color component is equal to zero, deriving that the encoding level of the residual level of the first color component is zero and encoding a second zero flag indicating whether the residual level of the second color component is equal to zero; if the residual level of the second color component and the residual level of the third color component are not equal to zero, encoding an encoding level of the residual level of the second color component and an encoding level of the residual level of the third color component and encoding a sign flag of a sign of the residual level of the second color component and a sign flag of a sign of the residual level of the third color component; and, if the residual level of the second color component is equal to zero, deriving that the encoding level of the residual level of the second color component is zero, encoding the encoding level of the residual level of the third color component and encoding the sign flag of the sign of the residual level of the third color component.
2. The method of claim 1, wherein, The encoding level of a residual level of each of the color components is an absolute level of the residual level of the color component or an absolute level of the residual level minus one and is a return value of an encoding level encoding function.
3. The method of claim 1, wherein, The encoding step of the encoding level of the residual level of the color components comprises: for each encoding level, encoding a first flag indicating whether the encoding level is equal to zero; if the encoding level is not equal to zero, encoding a second flag indicating whether the encoding level is equal to one; if the encoding level is not equal to one, encoding a third flag indicating an oddness of the encoding level; encoding a fourth flag indicating whether a value of the encoding level minus two divided by two is equal to zero; and, encoding a value of the value of the encoding level minus two divided by two then minus one.
4. The method of claim 1, wherein, The encoding step of the encoding level of the residual level of the color components comprises: for each encoding level, encoding a sixth flag indicating whether the encoding level is greater than zero; if the encoding level is greater than zero, encoding a seventh flag indicating whether the encoding level is equal to one; and, if the encoding level is not equal to one, encoding an eighth flag indicating an oddness of the encoding level. if the coding level is greater than zero, encoding a seventh flag indicating whether the coding level is greater than one; if the coding level is greater than one, encoding an eighth flag indicating a parity of the coding level; encoding a ninth flag indicating whether a value of the coding level minus two divided by two is greater than zero; and, encoding a value of the value of the coding level minus two divided by two then minus one.
5. The method of claim 1, further comprising: checking an enabling flag in a property header of a sequence of the point cloud to enable encoding of the coding level and the sign flags.
6. A color component decoding method, the method applied to a decoder, the method comprising: decoding a coding level of a residual level of three color components of each point in a plurality of points in a point cloud, wherein the residual level of the color components represents a difference between the color components of the point and predicted values of the color components; decoding a set of sign flags to obtain signs of respective residual levels of the color components; and, reconstructing the point cloud by recovering the residual levels of the color components of each point in the plurality of points using the decoded coding levels and the decoded signs; wherein the decoding comprises: decoding a first zero flag to determine whether a residual level of a first color component is equal to zero; if the residual level of the first color component is not equal to zero, decoding the coding levels of the residual levels of the three color components and decoding the set of sign flags to determine the signs of the residual levels of the color components if at least one of a residual level of a second color component and a residual level of a third color component is not equal to zero; if the residual level of the first color component is equal to zero, determining a coding level of the residual level of the first color component is zero and decoding a second zero flag to determine whether the residual level of the second color component is equal to zero; if the residual level of the second color component is not equal to zero, decoding coding levels of the residual level of the second color component and the residual level of the third color component and decoding the set of sign flags to determine signs of the residual level of the second color component and the residual level of the third color component if the residual level of the third color component is not equal to zero; and, if the residual level of the second color component is equal to zero, determining the coding level of the residual level of the second color component is zero, decoding the coding level of the residual level of the third color component and decoding the sign flags to determine a sign of the residual level of the third color component.
7. The method of claim 6, wherein, the recovering comprises: The residual level of the color component of each of the points in the point cloud is recovered by computing the product of the decoded sign and two minus one, and the absolute level of the encoded level of the residual level of the color component.
8. The method of claim 6, wherein, The decoded encoded level of the residual level of each of the color components is the absolute level of the residual level of the color component or the absolute level of the residual level minus one.
9. The method of claim 6, wherein, The step of decoding the encoded level of the residual level of the three color components of each of the points in the point cloud comprises: for each encoded level, decoding a first encoding to determine whether the encoded level is equal to zero; if the encoded level is not equal to zero, decoding a second encoding to determine whether the encoded level is equal to one; if the encoded level is not equal to one, decoding a third encoding to obtain the parity of the encoded level; decoding a fourth encoding to determine whether the value of the encoded level minus two divided by two is equal to zero; decoding a series of fifth encodings to obtain the value of the encoded level minus two divided by two then minus one; and, determining the value of the encoded level from the decoding results.
10. The method of claim 6, wherein, The step of decoding the encoded level of the residual level of the three color components of each of the points in the point cloud comprises: for each encoded level, decoding a sixth encoding to determine whether the encoded level is greater than zero; if the encoded level is greater than zero, decoding a seventh encoding to determine whether the encoded level is greater than one; if the encoded level is greater than one, decoding an eighth encoding to obtain the parity of the encoded level; decoding a ninth encoding to determine whether the value of the encoded level minus two divided by two is greater than zero; decoding a series of tenth encodings to obtain the value of the encoded level minus two divided by two then minus one; and, determining the value of the encoded level from the decoding results.
11. An encoder, the encoder comprising: a communication interface configured to retrieve data of a point cloud; a storage device configured to store the data of the point cloud; a processor coupled to the communication interface and the storage device, and the processor comprising: a residual computation unit that computes a difference between three color components of each of a plurality of points in a point cloud to be encoded and predicted values of the color components as residual levels of the points; a residual encoding unit that encodes encoded levels of the residual levels of the color components; and a sign encoding unit that encodes a set of sign flags respectively indicating a plurality of signs of the residual levels of the color components; wherein the residual encoding unit encodes a first zero flag indicating whether a residual level of a first color component is equal to zero; the residual encoding unit encodes a first zero flag indicating whether a residual level of a first color component is equal to zero; if the residual level of the first color component is not equal to zero, the residual coding unit codes the coding level of the residual levels of the three color components and, if at least one of the residual level of the second color component and the residual level of the third color component is not equal to zero, the sign coding unit codes the set of sign flags of the plurality of signs indicating the residual levels of the color components; if the residual level of the first color component is equal to zero, the residual coding unit derives that the coding level of the residual level of the first color component is zero and codes a second zero flag indicating whether the residual level of the second color component is equal to zero; if the residual level of the second color component and the residual level of the third color component are not equal to zero, the residual coding unit codes the coding level of the residual level of the second color component and the coding level of the residual level of the third color component and codes sign flags of the signs indicating the residual level of the second color component and the residual level of the third color component; and, if the residual level of the second color component is equal to zero, the residual coding unit derives that the coding level of the residual level of the second color component is zero and codes the coding level of the residual level of the third color component and the sign coding unit codes the sign flags of the signs indicating the residual level of the third color component.
12. The encoder of claim 11, wherein, The residual coding unit further comprises: for each coding level, coding a first flag indicating whether the coding level is equal to zero; if the coding level is not equal to zero, coding a second flag indicating whether the coding level is equal to one; if the coding level is not equal to one, coding a third flag indicating the parity of the coding level; coding a fourth flag indicating whether a value of the coding level minus two divided by two is equal to zero; and, coding a value of the coding level minus two divided by two then minus one.
13. The encoder of claim 11, wherein, The residual coding unit further comprises: for each coding level, coding a sixth flag indicating whether the coding level is greater than zero; if the coding level is greater than zero, coding a seventh flag indicating whether the coding level is greater than one; if the coding level is greater than one, coding an eighth flag indicating the parity of the coding level; coding a ninth flag indicating whether a value of the coding level minus two divided by two is greater than zero; and, coding a value of the coding level minus two divided by two then minus one.
14. The encoder of claim 11, wherein, The residual coding unit and the sign coding unit are enabled by an enable flag in a property header of a sequence of the point cloud.
15. A decoder, the decoder comprising: a communication interface configured to retrieve an attribute bitstream of a point cloud; a storage device configured to store the attribute bitstream of the point cloud; a processor coupled to the communication interface and the storage device, and the processor comprises: an encoding level decoding unit that decodes an encoding level of a residual level of each of a plurality of points in a point cloud from an attribute bitstream, wherein the residual level of the color component represents a difference between the color component of the point and a predicted value of the color component; a sign decoding unit that decodes a set of sign flags from the attribute bitstream to obtain a sign of a respective residual level of the color component; and, a residual recovering unit that recovers the residual level of the color component of each of the plurality of points by using the decoded encoding level and the decoded sign to reconstruct the point cloud; wherein, the encoding level decoding unit decodes a first zero flag to determine whether a residual level of a first color component is equal to zero; if the residual level of the first color component is not equal to zero, the encoding level decoding unit decodes the encoding level of the residual level of the three color components, and if at least one of a residual level of a second color component and a residual level of a third color component is not equal to zero, the sign decoding unit decodes the set of sign flags to determine the sign of the residual level of the color component; if the residual level of the first color component is equal to zero, the encoding level decoding unit determines that the encoding level of the residual level of the first color component is zero, and decodes a second zero flag to determine whether the residual level of the second color component is equal to zero; if the residual level of the second color component is not equal to zero, the encoding level decoding unit decodes the encoding level of the residual level of the second color component and the encoding level of the residual level of the third color component, and if the residual level of the third color component is not equal to zero, the sign decoding unit decodes the set of sign flags to determine the sign of the residual level of the second color component and the sign of the residual level of the third color component; and, if the residual level of the second color component is equal to zero, the encoding level decoding unit determines that the encoding level of the residual level of the second color component is zero, and decodes the encoding level of the residual level of the third color component, and the sign decoding unit decodes the sign flag to determine the sign of the residual level of the third color component.
16. The decoder of claim 15, wherein, the residual recovering unit recovers the residual level of the color component of each of the plurality of points by calculating a product of the decoded sign and two minus one, and an absolute level of the encoding level of the residual level of the color component.
Citation Information
Patent Citations
Color component prediction method, encoder, decoder, and computer storage medium
CN114009014A
Coding of component of color attributes in geometry-based point cloud compression (g-PCC)
US20220108479A1