Method for encoding and decoding a point cloud

By selecting predictor points based on relative geographic positions rather than just distance, the method enhances the prediction accuracy of point attributes in point clouds, addressing inefficiencies in current compression techniques and reducing bitstream size.

JP7667887B2Active Publication Date: 2025-04-23BEIJING XIAOMI MOBILE SOFTWARE CO LTD +1
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2023580948
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2021-07-02
Publication Date
2025-04-23
Estimated Expiration
2041-07-02

AI Technical Summary

Technical Problem

Current point cloud compression techniques, such as those in G-PCC, face inefficiencies in encoding and decoding point attributes due to the selection of predictor points based solely on distance, which may not optimally predict attribute values.

Method used

A method for encoding and decoding point attributes in point clouds that determines a predictor list of k predictor points by selecting points based on their relative geographic positions, allowing for the inclusion of points farther away if they provide better prediction variance and distribution around the point to be encoded.

Benefits of technology

This approach improves the prediction accuracy of point attributes, reducing residuals and bitstream size, while maintaining efficient encoding and decoding processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007667887000001
    Figure 0007667887000001
  • Figure 0007667887000002
    Figure 0007667887000002
  • Figure 0007667887000003
    Figure 0007667887000003
Patent Text Reader

Abstract

A method, encoder and decoder for encoding and decoding point attributes associated with points of a point cloud in a bitstream, the encoding method comprising the steps of: determining, for a point P to be encoded in the bitstream, a predictor list of k predictor points of the point cloud, the predictor list including points of the point cloud that are closest to the point P to be encoded, selected based on their relative positions to each other, and encoding the point attributes associated with the point P to be encoded by predictive coding based on attributes of the predictor points in the predictor list.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present application generally relates to compression of attributes of points in a point cloud, and preferably, the present application relates to encoding and decoding methods and encoders and decoders for improved encoding and decoding of attributes of point clouds. [Background technology]

[0002] As a format for representing 3D data, point clouds have recently gained attention due to their universal ability to represent all types of 3D objects or scenes. Therefore, many use cases can be solved with point clouds, among which: Film post-production and Real-time 3D immersive remote rendering or Virtual Reality VR / Augmented Reality AR applications; Free viewpoint video (e.g. for watching sports) and Geographic Information Systems (aka cartography) and Cultural heritage (scans of rare objects stored in digital format); -Autonomous driving, including 3D mapping of the environment and real-time Lidar data collection.

[0003] A point cloud is a group of points located in 3D space, optionally with additional values ​​attached to each of the points. These additional values ​​are commonly called point attributes. A point cloud is thus a combination of geometry (the 3D position of each point) and attributes.

[0004] The attributes may be, for example, three-component colors, material attributes such as reflectance, and / or two-component normal vectors of the surface associated with this point.

[0005] Point clouds may be captured by various types of devices such as camera arrays, depth sensors, laser radar, scanners, or may be generated computationally (e.g., in film post-production). Depending on the use case, for cartography, a point cloud may contain thousands to billions of points.

[0006] The original representation of point clouds requires a very high number of bits for each point, at least a dozen bits for each spatial component X, Y or Z, and optionally additional bits for attributes, e.g., three times 10 bits for color. Practical deployment of point cloud-based applications requires compression techniques that provide a reasonable storage and transmission infrastructure for the storage and distribution of point clouds.

[0007] The compression may be lossy (e.g. in video compression) and used to be assigned to and visualized by the end user, e.g. in AR / VR glasses or other devices with 3D capabilities. Other use cases require lossless compression, such as medical applications or autonomous driving, to avoid altering the decision results obtained by analyzing the compressed and transmitted point cloud.

[0008] Until recently, point cloud compression (also called PCC) was not a mass market solution, with no standardized point cloud codecs available. In 2017, the standardization workgroup ISO / JCT1 / SC29 / WG11, also known as the Motion Picture Experts Group or MPEG, started a working project on point cloud compression. This resulted in two standards, namely: MPEG-I Part 5 (ISO / IEC 23090-5) or Video-Based Point Cloud Compression V-PCC MPEG-I Part 9 (ISO / IEC 23090-9) or Geometry-based Point Cloud Compression G-PCC The first versions of both the V-PCC and G-PCC standards will be finalized at the end of 2020 and will soon be launched into the market.

[0009] The V-PCC encoding / decoding method compresses the point cloud by performing multiple projections of the 3D object to obtain 2D patches that are packaged into an image (or video when processing moving point clouds). A conventional image / video codec is then used to compress the acquired images or videos, thereby enabling the use of collocated image and video solutions. V-PCC, by its very nature, is only efficient with dense and continuous point clouds, since image / video codecs cannot compress such non-smooth patches obtained from projections of sparse geometry data acquired, for example, by laser lidar.

[0010] The G-PCC encoding / decoding method provides two schemes for geometry compression.

[0011] The first approach is based on an occupancy tree (octree / quadtree / binary tree) representation of the point cloud geometry configuration. Occupied nodes are split into smaller ones until a certain size is reached, and the location of the points is provided by the occupied leaf nodes, usually at the center of these nodes. A high level of compression can be obtained for dense point clouds by using neighborhood-based prediction techniques. Sparse point clouds are solved by directly encoding and decoding the location of points in nodes with non-minimal size and stopping the tree construction if only isolated points are present in a node, this technique is called direct encoding and decoding mode DCM.

[0012] The second approach is based on a prediction tree, where each node represents the 3D location of a point, and the relationships between nodes represent spatial predictions from parent nodes to children. This approach only solves sparse point clouds, and has the advantages of lower latency and easier decoding than occupancy trees. However, compared to the first occupancy-based approach, it focuses on finding the best predictor (among a long sequence of potential predictors) when building the prediction tree, and has slightly better compression performance and more complex encoding.

[0013] In these two schemes, attribute encoding / decoding occurs after geometry encoding / decoding is completed, resulting in two encodings / decodings. Thus, by using slices to decompose the 3D space into independently decodable sub-volumes, low latency is obtained without the need for prediction between sub-volumes. Using many slices can severely impact compression performance.

[0014] G-PCC mainly has two methods for decorrelating and de-correlating attributes: the first is called RAHT and is used for region-adaptive hierarchical transformation, and the second uses one or more layers of detail (LoD), which may be called LoD or predictive prelifting (predlift), and can be configured to be used as a predictive decorrelation method or configured to be used as a prelifting based decorrelation method.

[0015] The LOD prediction scheme is used to perform prediction of an attribute value (e.g., 3 channel / component color, or 1 channel / component reflectance, transparency) of a current decoded point using a weighted prediction from the attribute values ​​of the k closest (using geometric coordinates) previously decoded points. The prediction weight is determined by the spatial distance (based on geometric coordinates) between the current point and each of the closest previously decoded points used for the prediction.

[0016] In the current G-PCC, attribute prediction is performed between the current point and its k nearest neighbors (based on Manhattan distance) of the same LoD (i.e., intra-LoD prediction) and higher LoD (inter-LoD prediction).

[0017] Given the complex distribution of 3D points, selecting the k-nearest points as predictors (i.e., using distance as the only criterion) may not necessarily be optimal: in theory, the k-nearest neighbors (in terms of distance) are usually not the k-nearest neighbors for the attribute value.

[0018] One object of the present invention is to provide an efficient encoding and decoding method, and an encoder and decoder, to provide improved compression of attributes of point clouds. Summary of the Invention [Means for solving the problem]

[0019] According to one aspect of the invention, there is provided a method for encoding point attributes associated with a point of a cloud of points in a bitstream, the method comprising the steps of: determining, for a point P to be encoded in the bitstream, a predictor list of k predictor points of the cloud of points, the predictor list including points of the cloud of points that are closest to the point P to be encoded, selected based on their relative positions to each other, and encoding point attributes associated with the point P to be encoded by predictive coding based on attributes of the predictor points in the predictor list.

[0020] Thus, for a point P whose attributes are to be coded into the bitstream, a predictor list of k predictor points is determined, where k is typically equal to 3. The predictor list includes the k closest points of the point cloud to the point P to be coded, and the k points are also selected based on their relative geographical location around the point P to be coded. Thus, the predictor list may not include the k closest points of the point cloud, but the method of the present invention may include points of the point cloud far from the point P to be coded in the predictor list, so that the predictor points of the predictor list are dispersed or well distributed around the point P to be coded. Thus, one or more of the k closest points to the point P to be coded may be ignored and replaced with points of the point cloud that are farther away (in geometry) but provide an improved prediction of the point P attributes.

[0021] In a next step, point attributes related to the point P to be coded are coded by predictive coding based on the attributes of the predictor points in the predictor list. Thus, the predictor list is used to predictively code the attributes of the point P.

[0022] The points in the selected predictor list can provide a better prediction of the attributes of point P, thereby reducing the residual to be coded and further reducing the size of the bitstream.

[0023] Preferably, the step of determining the predictor list comprises the steps of determining an initial list of k predictor points P0, ..., P(k-1) of the point cloud, the initial list comprising the k points of the point cloud that are closest to the geographic location of the point P to be coded, and determining to select the predictor points as the predictor list based on the relative positions of the predictor points of the initial list to each other. Thus, in a first step, an initial list of k predictor points P0, ..., P(k-1) of the point cloud is determined, the initial list comprising the k points of the point cloud that are closest to the point P to be coded. In a next step, the predictor points of the initial list are selected based on their relative positions to each other with respect to the point P to be coded. If the variance or distribution of the initial list is sufficient, the initial list, i.e. the k closest predictor points of the point cloud, are selected, which ensures a sufficiently high accuracy of predicting the attribute of the point P to be coded during predictive coding of the attribute of the point P.

[0024] Preferably, the initial list is sorted based on distance to the point P to be encoded, from the closest point P0 to the furthest point P(k-1).

[0025] Preferably, the method comprises the steps of: if no predictor point of an initial list has been selected: determining a candidate list of n predictor points by the k to k+n-1 closest points Pk, ..., P(k+n-1) of the cloud of points; replacing at least one predictor point of said initial list with a predictor point of said candidate list to obtain said predictor list; selecting said predictor point as predictor list based on relative positions of the predictor points of the obtained list with respect to each other.

[0026] Preferably, n is between 1 and 10, more preferably between 1 and 5, and most preferably n=3.

[0027] Thus, at least one predictor point of the initial list is replaced by a predictor point of the candidate list to obtain a list. Based on the relative geographical positions of the predictor points of the obtained list to each other, the obtained list is selected for coding a point attribute related to the point P to be coded by predictive coding. Thus, one of the k closest predictor points of the initial list is replaced by a predictor point that is further away from the point to be coded to obtain an improved prediction of the attribute of the point P to be coded.

[0028] Preferably, the method comprises the step of iteratively replacing at least one predictor point with each predictor point of the candidate list to obtain a list if the obtained predictor list has not been selected, based on relative positions of the predictor points of the obtained list with respect to each other, until a predictor point of the corresponding list is selected.

[0029] Therefore, each predictor point in the candidate list is successively considered whether it can increase the variance or distribution of the initial list by the corresponding predictor point in the candidate list, thereby providing a good prediction result according to the attributes of the point P to be coded. When one predictor point in the candidate list is found, the process can be stopped and a predictor point in the result list can be selected.

[0030] Preferably, the predictor points in the candidate list are sorted based on their distance to the point P to be encoded, with increased distance, where point Pk is the closest point in the candidate list (but farther than the last point in the initial list) and P(k+n-1) is the farthest predictor point in the candidate list.

[0031] Preferably, only the last predictor point in the initial list is replaced. Thus, if no predictor point in the initial list is selected, only the last predictor point in the initial list is replaced with one of the predictor points in the candidate list. In particular, for the obtained list obtained by replacing the last predictor point in the initial list or the obtained list obtained by replacing the last predictor point in the obtained list of the previous step during the iteration, only the last predictor point is replaced with one of the predictor points in the candidate list.

[0032] Preferably, k is greater than or equal to 2, more preferably equal to 3. In particular, k=3 is a sufficient trade-off between implementation complexity for increasing the number k and sufficient predictability, i.e. a sufficient reduction in the respective residuals during prediction.

[0033] Preferably, the space around the point P to be coded is divided into octants along the X, Y and Z axes (for the geographic location / coordinates of the point) of the encoding / decoding, and a predictor point is selected if at least two predictor points are located in opposite octants, the opposite octants only sharing a common point P to be coded.

[0034] Thus, a list of predictor points to be an initial or predictor list is selected if it is deemed to contain predictor points that are well dispersed or distributed around said point P to be coded, and thus at least two predictor points in this corresponding list of predictor points are located in opposite octants. When selecting predictor points for the obtained predictor or initial list, the relative positions of each predictor point to each other are taken into account to determine whether each list contains at least two opposite predictor points, i.e. located in opposite octants.

[0035] Preferably, the space around the point P to be encoded is divided into octants along the encoding / decoding X, Y, and Z axes, and a predictor point is selected if at least two predictor points lie in loose opposite octants, and the loose opposite octants share only one common edge.

[0036] Thus, a list of predictor points to be an initial or predictor list is selected if it is deemed to contain predictor points that are well dispersed or distributed around said point P to be coded and therefore at least two predictor points in this corresponding list of predictor points are located in loose opposite octants. When selecting predictor points for the obtained predictor or initial list, taking into account the relative positions of each predictor point with respect to each other, it is determined whether each list contains at least two loose opposite predictor points, i.e. whether at least two predictor points are located in the loose opposite octant.

[0037] Preferably, the step of selecting predictor points of the initial list and / or predictor list comprises the step of determining whether at least two predictor points of said initial list or said predictor list are located in opposite octants, followed by determining whether at least two predictor points of said initial list or said predictor list are located in loose opposite octants. Alternatively, in case of replacing one predictor point of the initial list for a particular predictor point of the candidate list, determining whether at least two predictor points of the predictor list are located in opposite octants, followed by determining whether at least two predictor points of the initial list or predictor list are located in loose opposite octants. The next predictor point of the candidate list can then be considered.

[0038] Preferably, the subsequent determination of whether at least two predictor points of the initial list or predictor list are located in loosely opposite octants is performed only if the last two points of the initial list are in the same octant.

[0039] Preferably, at least one threshold Ti is defined by Ti=W×dist(P,Pi), where a weight W>1 and Pi is a predictor point in the initial list, and if the distance from a predictor point in the candidate list to a point P to be encoded / decoded is smaller than Ti, then the predictor point in the candidate list is eligible to replace at least one predictor point in the initial list.

[0040] Thus, only those predictor points of the candidate list are considered for replacing one or more of the predictor points in the initial list or the previously obtained predictor list if the distance from the corresponding predictor points of the candidate list to the point P to be encoded is smaller than a threshold Ti. Each threshold Ti can be defined based on the distance between the point P and the point Pi of the initial list so as to allow sufficient filtering of the candidates. The weight W is preferably fixed for a particular point cloud. Preferably, W is determined based on the density of the points of the point cloud, with a large weight W being selected for a sparse point cloud.

[0041] Preferably, the weight information W and / or n is included in the bitstream.

[0042] Preferably, the bitstream is an MPEG G-PCC compliant bitstream, and the weighting information W and / or n is present in an attribute parameter set APS of the G-PCC bitstream.

[0043] In one aspect of the present invention, there is provided a method for decoding point attributes associated with a point of a point cloud from a bitstream, the method comprising the steps of: determining, for a point P to be decoded of the bitstream, a predictor list of k predictor points of the point cloud, the predictor list including points of the point cloud that are closest to the point P to be decoded, selected based on their relative positions to each other; and decoding point attributes associated with the point P to be decoded by predictive decoding based on attributes of the predictor points in the predictor list.

[0044] Preferably, the method for decoding is further constructed with the features described for the method for encoding above. In particular, the processes of encoding and decoding are similar. The same method steps can be realized in the method for decoding.

[0045] In one aspect of the invention, there is provided an encoder for encoding point attributes associated with points of a point cloud in a bitstream, comprising a processor and a memory storage device, the memory storage device storing executable instructions for the processor that, when executed, cause the processor to perform a method for said encoding.

[0046] In one aspect of the invention, there is provided a decoder for decoding point attributes associated with points of a point cloud in a bitstream, the decoder comprising a processor and a memory storage device, the memory storage device storing executable instructions for the processor that, when executed, cause the processor to perform the method described above.

[0047] In one aspect of the invention, there is provided a non-transitory computer readable storage medium having processor-executable instructions stored thereon which, when executed by a processor, cause the processor to perform the method described above. [Brief description of the drawings]

[0048] Reference is now made, by way of example, to the drawings illustrating exemplary embodiments of the present application, the drawings being described as follows: [Figure 1] 3 is a flow chart of a method for encoding according to the present invention; [Diagram 2] FIG. 1 is a schematic diagram of predictor points of a point cloud. [Diagram 3] 4 is a flow chart of another embodiment of a method according to the present invention. [Figure 4] 1 is a diagram of a particular order around a point P to be coded. [Diagram 5] 4 is a flow chart of another embodiment of a method according to the present invention. [Figure 6] 4 is a flow chart of another embodiment of a method according to the present invention. [Figure 7] 4 is a flow chart for decoding according to the present invention; [Figure 8] 1 is an encoder according to the present invention. [Figure 9] 1 is a decoder according to the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0049] This application describes methods for encoding and decoding attributes of points in a point cloud, and encoders and decoders for encoding and decoding attributes of points in a point cloud.

[0050] The present invention relates to a method for encoding point attributes associated with a point of a point cloud in a bitstream, said method comprising the steps of determining, for a point P to be encoded in a bitstream, a predictor list of k predictor points of a point cloud, said predictor list including the points of the point cloud that are closest to the point P to be encoded, selected based on their relative positions to each other, and encoding point attributes associated with the point P to be encoded by predictive coding based on attributes of the predictor points of the predictor list.

[0051] It should be noted that the present invention relates to a method for decoding point attributes associated with a point of a point cloud from a bitstream, said method comprising the steps of: determining, for a point P to be decoded of the bitstream, a predictor list of k predictor points of a point cloud, said predictor list including the points of the point cloud that are closest to the point P to be decoded, selected based on their relative positions to each other; and decoding point attributes associated with this point P to be decoded by predictive decoding based on attributes of the predictor points in the predictor list.

[0052] Other aspects and features of the present specification will be appreciated by those of ordinary skill in the art upon review of the following example description in conjunction with the accompanying drawings.

[0053] A point cloud is a set of points in a three-dimensional coordinate system. These points are typically intended to represent the exterior surfaces of one or more objects. Each point has a position in the three-dimensional coordinate system. This position can be represented by three coordinates (X, Y, Z), which may be Cartesian or any other coordinate system. The points further have associated attributes such as color, which in some cases may be a ternary value such as R, G, B, or Y, Cb, Cr. Other associated attributes may include transparency, reflectance, normal vectors, etc., depending on the desired application of the point cloud data.

[0054] A point cloud may be static or dynamic. For example, a detailed scan or map of an object or terrain may be static point cloud data. A laser radar-based scan of an environment for machine vision purposes may be dynamic, e.g., every successive scan of a volume, since the point cloud (at least potentially) changes in time. A dynamic point cloud is therefore a temporal ordering of points.

[0055] Point cloud data can be used for many applications including conservation (scanning of historical or cultural property), mapping, machine vision (autonomous or semi-autonomous cars, etc.), and virtual reality systems, some examples are provided. Dynamic point cloud data for applications such as machine vision may be quite different from static point cloud data for conservation purposes, etc. For example, automotive vision generally concerns a relatively small resolution, non-color, and highly dynamic point cloud acquired with a laser radar (or similar) sensor with a high capture frequency. The purpose of this point cloud is not for human use or viewing, but for detection / classification of machine objects in the decision-making process. As an example, a typical laser radar frame contains about tens of thousands of points, while a high-quality virtual reality application requires millions of points. It can be expected that there will be a need for higher resolution data over time with increasing computational speeds and the discovery of new applications.

[0056] Although point cloud data is useful, the lack of efficient and efficient compression, i.e., encoding and decoding processes, of the attributes and geometry of such point clouds can hinder adoption and deployment.

[0057] One of the more common mechanisms for encoding and decoding point cloud data is to use a tree-based construction. In a tree-based construction, the bounding 3D volume of the point cloud is recursively divided into subvolumes. The nodes of the tree correspond to the subvolumes. The decision to further divide a subvolume or not can be based on the resolution of the tree and / or whether there are any points contained in the subvolume. Leaf nodes can have an occupancy flag indicating whether the associated subvolume contains a point or not. A split flag can signal whether the node has subnodes or not (i.e., whether the current volume is to be further divided into subvolumes or not). These flags may be entropy coded or may use predictive coding. A common tree construction is the octree. In this structure, the volume / subvolume is a cube and each division of a subvolume produces 8 other subvolumes / subcubes.

[0058] The basic process of creating an octree tree to encode and decode a point cloud is to start with a bounding volume (a cube) that contains the points in a coordinate system, 1. Divide the volume into 8 sub-volumes (8 sub-cubes) and 2. for each subvolume, mark this subvolume as 0 if this subvolume is empty, and mark this subvolume as 1 if there is at least one point in it; 3. For all subvolumes marked as 1, repeat (2) to split those subvolumes until a maximum split depth is reached; and 4. For every leaf subvolume (subcube) of maximum depth, if the cube is not empty, mark it as 1, otherwise mark it as 0.

[0059] The tree can be traversed in a predefined order (breadth-first or depth-first, based on the mode / order of operation within each partitioned subvolume) to generate a bit sequence representing the occupancy mode of each node.

[0060] As mentioned above, the points of the point cloud may include attributes, which are encoded and decoded independently of the encoding and decoding of the geometry of the point cloud. Thus, each occupied node, i.e., a node that contains at least one point of the point cloud, is associated with one or more attributes to further specify the attributes of the point cloud.

[0061] The present invention provides a method for comparing and encoding attributes of points of a point cloud in a bitstream, and the method is shown in Figure 1.

[0062] Step S01 involves determining, for a point P to be coded in the bitstream, a predictor list of k predictor points of a cloud of points, the predictor list including the points of the cloud of points that are closest to the point P to be coded, selected based on their relative positions to each other.

[0063] In step S02, point attributes associated with the point P to be coded are coded by predictive coding based on the attributes of the predictor points in the predictor list.

[0064] The present invention introduces a kind of mechanism that allows replacing the list of k closest predictors for the encoding / decoding of LoD attributes with a different list of k predictors that ultimately provide better predictions (lower residuals) on both the encoding and decoding sides.

[0065] To do this, if the spatial location of "further" points is more favorable, the invention considers using them to replace one or more of the k nearest predictor points, i.e. the predictor points are scattered or distributed around the point to be predicted.

[0066] With reference to FIG. 2, to encode the attributes of point P, it is preferable to use the more distant point indicated by P3 in FIG. 2 rather than the closer point P2, since the predictor points P0, P1, and P3 are more dispersed or well distributed around P than the three closest predictor points P0, P1, P2, which may provide a better prediction of the attributes of point P.

[0067] In the following, the reference example uses three predictor points to predict the attribute of the point P to be coded, i.e. k=3. Of course, the present invention is not limited to the number of predictor points considered, however, common applications in the MPEG standard use this number of predictors in the LoD prediction scheme, since it provides a good trade-off between the complexity of implementation and the accuracy for reducing the residual in the bitstream. Therefore, in the embodiment shown below, k=3 is adopted.

[0068] Referring to FIG. 3, there is shown a flow chart of another embodiment of the present invention.

[0069] In step S10, an initial list of k predictor points, the k points P0, . . . , P(K-1) of which are in the point cloud and are closest to the point P to be coded, is determined.

[0070] In step S11, a candidate list of n predictor points is determined by the k to (k+n-1) closest points Pk,...,P(k+n-1) of the point cloud.

[0071] In step S12, at least one predictor point in the initial list is replaced with a predictor point in the candidate list to obtain a predictor list.

[0072] In step S13, predictor points of the obtained list are selected as a predictor list based on their relative positions to each other.

[0073] Thus, the initial list includes the k points of the point cloud that are geographically closest to the point P to be coded. The candidate list includes the subsequent n points that are closest to the point P to be coded. The candidate list includes those predictor points that can be considered to obtain a final predictor list for predictive coding of the attribute of the point P. For example, since k=3, the initial list includes P0, P1, and P2. Since n can be set equal to 5, the candidate list can include P3, P4, P5, P6, and P7, where P0 to P7 are the 8 points of the point cloud that are closest to the point P to be coded, sorted by increasing distance to the point P to be coded. According to step S12, at least one predictor point P0, P1, or P2 is replaced by one of the predictor points of the candidate list. Preferably, only one predictor point of the initial list is replaced. Preferably, the last predictor point of the initial list is replaced by one of the predictor points of the candidate list. In the above example, P2 can be replaced by any of P3 to P7 to obtain a new predictor point list. Then, according to step S13, it is tested whether the predictor points of each predictor list are dispersed or well distributed. The predictor points of the new list are selected as a predictor list based on their relative positions with each other, and this predictor list is considered as the final predictor list and is used for predictive coding of the attribute of the point P based on arrow 102 in FIG. 3. If no predictor point of the obtained predictor list is selected, according to arrow 100 in FIG. 3, during the iteration, all predictor points of the candidate list are rounded up and respectively tested whether to replace one or more predictor points of the initial list with each predictor point of the candidate list, thereby selecting a predictor point list for predictive coding 102 based on their relative positions with each other to improve the prediction of the attribute for the point P to be coded based on the selected predictor point. For example, in the first step, the point P2 is replaced by P3 to test whether the obtained predictor list (P0, P1, P3) is dispersed or not.If not, the next step is to test predictor lists (P0, P1, P4), etc. until we find a predictor list that diverges or reach the end of the candidate list. In the former case, we select the corresponding predictor list to use for predictive coding, while in the latter case, we can use the initial list.

[0074] 4, the space around a point P to be coded is shown, with the X, Y and Z directional axes coinciding with the coding / decoding direction. Thus, eight octants are defined around the point P, designated by 0, ..., 7. A list of predictor points is selected if at least two points in the predictor point list are opposite to each other.

[0075] This means that the exact opposite octants are: 0 and 7, 1 and 6, 2 and 5, 3 and 4.

[0076] If we cannot find these two predictor points, we relax the requirement that at least two predictor points are opposite and select a predictor point where at least two predictor points must be both loose and opposite. A loose opposite octant is defined as if at least two predictor points are located in the loose opposite octant, and loose opposite octants share only one common edge. This means that a loose opposite octant is: 0, 3, 5, and 6, 4, 1, 2, and 7, 1, 2, 4, and 7, 5, 0, 3, and 6, 2, 1, 4, and 7, 6, 0, 3, and 5, 3, 0, 5, and 6, 7, 1, 2, and 4.

[0077] Please refer to Fig. 5. Steps S10 to S12 are the same as those described with reference to Fig. 3.

[0078] In step S131, it is determined whether at least two predictor points in the obtained predictor list are located in opposite octants.

[0079] In this case, based on arrow 104, the predictor points of the obtained predictor list are considered to be well distributed around the point P to be coded, i.e., spread out, and are selected for predictive coding.

[0080] If not, then based on arrow 100, each element of the candidate list is considered iteratively, as shown in FIG. 3 above.

[0081] If no predictor points have been selected in steps S12 and S131, then in step S132 at least one predictor point in the initial list is replaced with a predictor point in the candidate list to obtain a predictor list, similar to step 12 above.

[0082] In step S133, it is determined whether at least two predictor points in the obtained predictor list are located in loose opposite octants.

[0083] In this case, based on arrow 106, the predictor points of the obtained predictor list are considered to be well distributed around the point P to be coded, i.e., spread out, and are selected for predictive coding.

[0084] If not, then steps S132 and S133 consider each element of the candidate list iteratively, as described above.

[0085] In Fig. 5 it was explained that all predictor points of the candidate list are first checked whether they provided predictor points located in at least two opposite octants in the obtained predictor list, and if unsuccessful, all predictor points of the candidate list are checked again whether they can provide predictor points located in at least two loose opposite octants. However, the order of steps can be rearranged, whereby a first predictor point of the candidate list is first tested whether this candidate can provide predictor points located in at least two opposite octants, and then the same predictor point of the candidate list is tested whether it can provide predictor points located in at least two loose opposite octants.

[0086] For the example of k=3, the steps of the method may be as follows: 1. Identify an initial list of three closest predictors P0, P1, and P2, followed by a candidate list of n closest predictors P3 to Pn+2 to point P. 2. If the predictor points in the initial list are not sufficiently distributed around point P, then each element of the candidate list is considered in turn to replace the last element P2 of the initial list until all elements of the first list are sufficiently distributed around point P or no further candidates are evaluated. A list of predictor points is considered to be sufficiently distributed as long as at least two of the predictor points are located in opposite octants to each other. 3. If this process fails to select a list of elements that are sufficiently distributed in the initial list, the whole process is started again, but in this case a predictor point in the candidate list is considered suitable to replace P2 if at least two of the predictor points are located in loose opposite octants of each other.

[0087] With reference to Fig. 6, the case of k = 3 is shown as an example. By defining two distance thresholds F (far threshold) and C (near threshold) and evaluating the spatial positions (opposite and loosely opposite directions) of the corresponding predictor points in the candidate list with respect to P0 and P1, only if it is close enough, i.e., below threshold F for P0 and threshold C for P1, will it qualify to replace P2 with a predictor point in the candidate list.

[0088] In a preferred embodiment of the present invention, the two thresholds are selected as follows: F = W × dist(P, P2) C = W × dist(P, P1)

[0089] W is a weighting coefficient that influences the filtering of the candidates. The weight W may be preset and is fixed for a particular point cloud. The same decision process needs to be done at both the encoder and decoder sides, and the result is determined by the value of the weight W, which can also be transmitted / signaled together with the encoded data in the bitstream.

[0090] In the preferred embodiment of the present invention, for k=3, the following steps are performed on the encoding side:

[0091] Steps S10 and S12 are similar to those described above, and redundant explanations will be omitted here.

[0092] In step S120, a far threshold F=W×dist(P,P2) and a near threshold C=W×dist(P,P1) are set.

[0093] In another selective step, if P1 and P2 are in opposite octants and (P0, P1, P2) is well distributed around P, stop this process and select (P0, P1, P2) as the final predictor list.

[0094] In step S121, for each point Pi in the candidate list, in order of their distance to P: If dist(Pi,P)≦F and Pi is in the opposite octant to P0, then replace P2 with Pi in the predictor list and stop the process by selecting (P0,P1,Pi) as the final predictor list, as indicated by arrow 108. b. If dist(Pi,P)≦C and Pi is in the opposite octant to P1, then replace P2 with Pi in the predictor list and stop the process by selecting (P0,P1,Pi) as the final predictor list as indicated by arrow 108.

[0095] In step S122, if at least P1 or P2 are in the same direction as P0, then for each point Pi in the candidate list, in order of their distance to P: a.If dist(Pi,P) ≦ F and Pi is in the loosely opposite octant to P0, then stop the process by replacing P2 with Pi in the predictor list and selecting (P0,P1,Pi) as the final predictor list. b. If dist(Pi,P)≦C and Pi is in the loosely opposite octant to P1, then replace P2 with Pi in the predictor list and stop the process by selecting (P0,P1,Pi) as the final predictor list.

[0096] If not, we cannot find any better candidates and therefore select (P0, P1, P2) as the final predictor list.

[0097] The present invention further provides a method for decoding attributes of points of a point cloud in a bitstream, the method is shown in Figure 7. Referring to Figure 7, as follows.

[0098] In step S03, for a point P to be decoded of the bitstream, a predictor list of k predictor points of the point cloud is determined, said predictor list including the points of the point cloud that are closest to the point P to be decoded, selected based on their relative positions to each other.

[0099] In step S04, the point attributes associated with point P are decoded by predictively decoding the attributes of the predictor points in the predictor list.

[0100] The decoding method is constructed according to the features and steps described in conjunction with the encoding method detailed above.

[0101] By sharing the W and n values ​​between the encoder and the decoder, the exact same process for selecting predictor points can be performed on both sides with the same results. Therefore, the decoding method has an additional step of reading the W (weight for distance eligibility) and n (maximum number of candidates) values ​​from the encoded and decoded point cloud bit stream. The subsequent steps are the same as the encoding method described in detail above.

[0102] In a preferred embodiment of the present invention, the weights W and n parameter values ​​are signaled within the Attribute Parameter Set (APS) of the MPEG G-PCC encoded point cloud.

[0103] Referring to FIG. 8, a simplified block diagram of an exemplary embodiment of an encoder 10 is shown. The encoder 10 includes a processor 12 and a memory storage device 14. The memory storage device 14 can store a computer program or application including instructions that, when executed, cause the processor 12 to perform operations as described herein. For example, the instructions can encode and output a bitstream encoded according to the methods described herein. It should be noted that the instructions can be stored in a non-transitory computer readable medium such as an optical disk, a flash memory device, a random access memory, a hard disk drive, etc. When the instructions are executed, the processor 12 performs the operations and functions specified in the instructions to operate as a dedicated processor to realize the process. In some examples, such a processor may be referred to as a "processor circuit" or a "processor circuit system."

[0104] With further reference to FIG. 9, a simplified block diagram of an exemplary embodiment of the decoder 16 is shown. The decoder 16 includes a processor 18 and a memory storage device 20. The memory storage device 20 may include a computer program or application including instructions that, when executed, cause the processor 18 to perform operations as described herein. It should be noted that the instructions may be stored on a computer readable medium such as an optical disk, a flash memory device, a random access memory, a hard disk drive, etc. When the instructions are executed, the processor 18 performs the operations and functions specified in the instructions to operate as a special purpose processor implementing the described processes and methods. In some examples, such a processor may be referred to as a "processor circuit" or a "processor circuit system."

[0105] It should be noted that the decoder and / or encoder of the present application may be implemented in multiple computing devices, including, but not limited to, servers, appropriately programmed general-purpose computers, machine vision systems, and mobile devices. The decoder or encoder may be implemented by software that includes instructions for configuring one or more processors to perform the functions described herein. The software instructions may be stored in any suitable non-transitory computer-readable memory, including CD, RAM, ROM, flash memory, and the like.

[0106] It should be understood that the described modules, routines, processes, threads, or other software components implementing the decoders and / or encoders described herein, and the methods / processes for configuring the encoders or decoders, can be implemented using standard computer programming techniques and languages. The application is not limited to specific processors, computer languages, computer programming conventions, data organizations, and other such implementation details. Those skilled in the art will recognize that the described processes can be implemented as part of computer executable code stored in volatile or non-volatile memory, such as as part of an application specific integrated chip (ASIC).

[0107] The present application further provides a computer readable signal encoding data produced by applying the encoding process of the present application.

[0108] Several adjustments and modifications can be made to the described embodiments. The above discussed embodiments are therefore to be considered as illustrative rather than restrictive. In particular, the embodiments can be freely combined with each other.

Claims

1. 1. A method for encoding point attributes associated with points of a point cloud in a bitstream, comprising the steps of: The method comprises: determining, for a point P to be coded of the bitstream, a predictor list of k predictor points of the cloud of points, the predictor list including the points of the cloud of points that are closest to the point P to be coded, selected based on their relative positions to each other; encoding the point attributes associated with the point P to be encoded by predictive encoding based on attributes of predictor points in the predictor list; The step of determining the list of predictors comprises: determining an initial list of k predictor points P0, ..., P(k-1) of the point cloud, the initial list including the k points of the point cloud that are closest to the point P to be encoded; selecting predictor points of the initial list as a predictor list based on their relative positions to each other; The space around the point P to be coded is divided into octants along the X, Y and Z axes of the encoding / decoding, and the predictor point is selected if at least two predictor points are located in opposite octants, and the opposite octants only share a common point to be coded.

13. A method for encoding point attributes associated with points of a point cloud in a bitstream, comprising:

2. if no predictor points from the initial list have been selected, determining a candidate list of n predictor points by the k to k+n-1 closest points P(k+n-1) of the point cloud; replacing at least one predictor point of the initial list with a predictor point of the candidate list; selecting predictor points from the obtained list as a predictor list based on the relative positions of the predictor points from the obtained list with respect to each other; 2. The method of claim 1 .

3. if the obtained predictor list has not been selected, iteratively replacing at least one predictor point with each predictor point of the candidate list to obtain a predictor list until a predictor point of the predictor list is selected; 3. The method of claim 2 .

4. replacing only the last predictor point of the initial list and / or the predictor list; 4. The method according to claim 3 .

5. k is 3 or more; 5. The method of claim 4.

6. The space around the point P to be encoded is divided into octants along the encoding / decoding X, Y, and Z axes, and a predictor point is selected if at least two predictor points are located in loose opposite octants, and the loose opposite octants share only one common edge.

2. The method of claim 1 .

7. The step of selecting predictor points from the initial list and / or the list of predictors comprises: determining whether at least two predictor points are located in opposite octants, and then determining whether at least two predictor points are located in loose opposite octants; 2. The method of claim 1 .

8. Define at least one threshold Ti by Ti=W×dist(P,Pi), where if weight W>1 and Pi is a predictor point of an initial list, and the distance from the predictor point of the candidate list to the point P to be encoded / decoded is less than Ti, then the predictor point of the candidate list is eligible to replace at least one predictor point of the initial list; 3. The method of claim 2 .

9. Weight information W and / or n is included in the bitstream; 9. The method of claim 8.

10. The bitstream is a bitstream conforming to MPEG G-PCC, and the weight information W and / or n is present in the attribute parameter set APS of the G-PCC bitstream; 9. The method of claim 8.

11. 1. A method for decoding point attributes associated with points of a point cloud from a bitstream, comprising the steps of: The method comprises: determining, for a point P to be decoded of the bitstream, a predictor list of k predictor points of the cloud of points, the predictor list including the points of the cloud of points that are closest to the point P to be decoded, selected based on their relative positions to each other; and decoding the point attributes associated with the point P to be decoded by predictive decoding based on attributes of predictor points in the predictor list, The step of determining the list of predictors comprises: determining an initial list of k predictor points P0, ..., P(k-1) of the point cloud, the initial list including the k points of the point cloud that are closest to a point P to be encoded; selecting predictor points of the initial list as a predictor list based on their relative positions to each other; The space around the point P to be coded is divided into octants along the X, Y and Z axes of the encoding / decoding, and the predictor point is selected if at least two predictor points are located in opposite octants, and the opposite octants only share a common point to be coded.

13. A method for decoding point attributes associated with points of a point cloud from a bitstream, comprising:

12. if no predictor points from the initial list have been selected, determining a candidate list of n predictor points by the k to k+n-1 closest points P(k+n-1) of the point cloud; replacing at least one predictor point of the initial list with a predictor point of the candidate list; selecting predictor points from the obtained list as a predictor list based on the relative positions of the predictor points from the obtained list with respect to each other; 12. The method of claim 11 .

13. if the obtained predictor list has not been selected, iteratively replacing at least one predictor point with each predictor point of the candidate list to obtain a predictor list until a predictor point of the predictor list is selected; 13. The method of claim 12.

14. replacing only the last predictor point of the initial list and / or the predictor list; 14. The method of claim 13.

15. k is 3 or more; 15. The method of claim 14.

16. The space around the point P to be encoded is divided into octants along the encoding / decoding X, Y, and Z axes, and a predictor point is selected if at least two predictor points are located in loose opposite octants, and the loose opposite octants share only one common edge.

12. The method of claim 11 .

17. The step of selecting predictor points from the initial list and / or the list of predictors comprises: determining whether at least two predictor points are located in opposite octants, and then determining whether at least two predictor points are located in loose opposite octants; 12. The method of claim 11 .

18. Define at least one threshold Ti by Ti=W×dist(P,Pi), where if weight W>1 and Pi is a predictor point of an initial list, and the distance from the predictor point of the candidate list to the point P to be encoded / decoded is less than Ti, then the predictor point of the candidate list is eligible to replace at least one predictor point of the initial list; 13. The method of claim 12.

19. Weight information W and / or n is included in the bitstream; 20. The method of claim 18 .

20. The bitstream is a bitstream conforming to MPEG G-PCC, and the weight information W and / or n is present in the attribute parameter set APS of the G-PCC bitstream; 20. The method of claim 18 .

21. 1. An encoder for encoding point attributes associated with points of a point cloud in a bitstream, comprising: a processor and a memory storage device, the memory storage device storing executable instructions for the processor, the instructions, when executed, causing the processor to perform a method according to any one of claims 1 to 10; 1. An encoder for encoding point attributes associated with points of a point cloud in a bitstream, comprising:

22. 1. A decoder for decoding point attributes associated with points of a point cloud in a bitstream, comprising: a processor and a memory storage device, the memory storage device storing executable instructions for the processor, the instructions, when executed, causing the processor to perform a method according to any one of claims 11 to 20; 13. A decoder for decoding point attributes associated with points of a point cloud in a bitstream, comprising:

23. A non-transitory computer-readable storage medium having processor-executable instructions stored thereon, comprising: The processor-executable instructions, when executed by a processor, cause the processor to perform a method according to any one of claims 1 to 20. A non-transitory computer-readable storage medium comprising:

Citation Information

Patent Citations

  • Techniques and apparatus for interframe point-cloud attribute coding

    US20200304823A1

  • Method and apparatus for interframe point cloud attribute coding

    US20200304829A1

  • Method and apparatus for adaptive point cloud attribute coding

    US20200311984A1

  • Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device

    WO2020175708A1