Method for encoding and decoding a point cloud
Patent Information
- Application Number
- CN202180099780.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2021-07-02
- Publication Date
- 2026-10-23
- Estimated Expiration
- 2041-07-02
Smart Images

Figure CN117581537B_ABST
Abstract
Description
Technical Field
[0001] The present application relates generally to compression of attributes of points in a point cloud, and preferably, the present application relates to encoding and decoding methods as well as encoders and decoders for improving the encoding and decoding of point cloud attributes. Background Art
[0002] As a format for representing 3D data, point clouds have recently gained attention because they are generic in their capability to represent all types of 3D objects or scenes. Accordingly, many use cases can be addressed by point clouds, including
[0003] · Film post-production,
[0004] · Real-time 3D immersive telepresence or Virtual Reality VR / Augmented Reality AR applications,
[0005] · Free viewpoint video (for example for sports viewing),
[0006] · Geographic information systems (also known as mapping),
[0007] · Cultural heritage (storing scans of rare objects in digital form),
[0008] · Autonomous driving, including 3D mapping of the environment and real-time Lidar data acquisition.
[0009] A point cloud is a set of points located in 3D space, optionally with an added value attached to each of the points. These added values are generally referred to as point attributes. Thus, a point cloud is a combination of geometry (the 3D position of each point) and attributes.
[0010] The attributes may be, for example, three-component color, material properties such as reflectivity, and / or two-component normal vectors of the surface associated with the point.
[0011] Point clouds may be captured by various types of devices, such as camera arrays, depth sensors, lidars, scanners, or may be generated by a computer (for example in film post-production). Depending on the use case, a point cloud may have, for example, thousands up to billions of points for mapping applications.
[0012] The raw representation of a point cloud requires a very high number of bits per point, at least a dozen bits for each spatial component X, Y or Z, and optionally more bits for attributes, for example a triplet of 10 bits for color. Practical deployment of point cloud-based applications requires compression techniques that enable the storage and distribution of point clouds with reasonable storage and transmission infrastructure.
[0013] Compression can be lossy (as in video compression) for distribution to and visualization by the end user, such as on AR / VR glasses or any other device with 3D capabilities. Other use cases require lossless compression, such as in medical applications or autonomous driving, to avoid altering decision-making outcomes obtained by analyzing compressed and transmitted point clouds.
[0014] Until recently, point cloud compression (also known as PCC) had not been addressed in the mass market, and no standardized point cloud codec was available. In 2017, the standardization working group ISO / JCT1 / SC29 / WG11, also known as the Moving Picture Experts Group or MPEG, initiated a working project on point cloud compression. This has resulted in two standards:
[0015] • 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 Both V-PCC and G-PCC standards finalized their first versions at the end of 2020 and will soon be launched to the market.
[0016] The V-PCC encoding / decoding method compresses point clouds by performing multiple projections of 3D objects to obtain 2D patches that are packed into an image (or video when processing moving point clouds). The resulting image or video is then compressed using an existing image / video codec, allowing the use of already deployed image and video solutions. By its very nature, V-PCC is only effective on dense and continuous point clouds because image / video codecs cannot compress non-smooth patches, such as those obtained from projections of sparse geometry data acquired from, for example, LiDAR.
[0017] The G-PCC encoding / decoding method has two schemes for geometric compression.
[0018] The first approach is based on an occupancy tree (octree / quadtree / binary tree) representation of the point cloud geometry. Occupied nodes are partitioned downwards until a certain size is reached, and the occupied leaf nodes provide the location of points, typically at the center of these nodes. High levels of compression can be achieved for dense point clouds by using neighbor-based prediction techniques. Sparse point clouds are further addressed by directly encoding and decoding the locations of points within nodes with non-minimum sizes, and by stopping tree construction when only isolated points exist in a node; this technique is known as Direct Codec Mode (DCM).
[0019] The second approach is based on a prediction tree, where each node represents the 3D location of a point, and the relationship between nodes is a spatial prediction from parent to child nodes. This method can only solve sparse point clouds and has the advantages of lower latency and simpler decoding compared to occupancy-based methods. However, compared to the first occupancy-based method, which focuses on finding the best predictor among a long list of potential predictors when constructing the prediction tree, the compression performance is only slightly better, and the encoding is complex.
[0020] In both schemes, attribute encoding / decoding is performed after complete geometry encoding / decoding, resulting in two-way encoding / decoding. Therefore, low latency can be achieved by using slices, which decompose the 3D space into sub-volumes that can be independently encoded and decoded, without the need for prediction between sub-volumes. When using many slices, this can severely impact compression performance.
[0021] Point attributes are encoded and decoded based on pre-encoded geometric coordinates, which are used to decorrelate attribute information according to spatial relationships / distances between points. In G-PCC, there are two main methods for decorrelation and encoding / decoding attributes: the first, called RAHT, is used for region adaptive hierarchical transformation; the second uses one or more levels of detail (LoD), sometimes referred to as LoD or predlift, as it can be configured as a predictive decorrelation method or a lift-based decorrelation method.
[0022] Using a LOD prediction scheme, the prediction of the attribute value of the current decoded point (e.g., three-channel / component color, or single-channel / component reflectance, transparency) is performed using weighted predictions from the k nearest prior decoded points (using geometric coordinates). The weights in the prediction depend on the spatial distance (based on geometric coordinates) between the current point and each of the nearest prior decoded points used in the prediction.
[0023] In the current G-PCC, attribute prediction is performed between the current point and its k nearest neighbors (based on Manhattan distance) in the same LoD (i.e., intra-LoD prediction) and higher LoD (inter-LoD prediction).
[0024] Given the complex distribution of 3D points, selecting the k nearest neighbors as predictors (i.e., using distance as the sole criterion) may not always be optimal. Theoretically, the k nearest neighbors (in terms of distance) are often not the k nearest neighbors in terms of attribute value.
[0025] One object of the present invention is to provide an efficient encoding and decoding method, as well as an encoder and decoder, to provide improved compression of point cloud properties. Summary of the Invention
[0026] In one aspect of the invention, a method is provided for encoding point attributes associated with points in a point cloud in a bitstream. The method includes:
[0027] For a point P to be encoded in the bitstream, a list of predictor factors for k predictor points in the point cloud is determined. This list includes the point in the point cloud closest to the point P, selected based on their relative positions.
[0028] Based on the attributes of the predictor points in the predictor list, point attributes associated with the point P to be encoded are encoded using predictive coding.
[0029] Therefore, for a point P whose attributes will be encoded into the bitstream, a list of predictor points of k predictor points is determined. Typically, k equals 3. The predictor list includes the k nearest points in the point cloud to the point P to be encoded, and these k points are also selected based on their relative geographical locations around the point P. Therefore, the predictor list may not include the k nearest points in the point cloud; however, using the method of this invention, points in the point cloud that are far from the point P to be encoded can be included in the predictor list, resulting in the predictor points in the predictor list being scattered or sufficiently distributed around the point P to be encoded. Therefore, one or more of the k nearest points to the point P to be encoded can be ignored and replaced by points in the point cloud that are (geometrically) farther away but provide improved predictions of the attributes of point P.
[0030] In the next step, the point attributes associated with the point P to be encoded are encoded by predictive encoding based on the attributes of the predictor points in the predictor list. Therefore, the predictor list is used to predictively encode the attributes of point P.
[0031] By using the points in the selected predictor list, better prediction of the properties of point P can be achieved, thereby reducing the residual to be encoded and thus reducing the size of the bitstream.
[0032] Preferably, determining the list of predictors includes:
[0033] Determine an initial list of k predictor points P0,…,P(k-1) of the point cloud, the initial list including the k points in the point cloud that are geographically closest to the point P to be encoded;
[0034] The selection of predictor points as the predictor list is determined based on the relative positions of the predictor points in the initial list. Therefore, in the first step, an initial list of k predictor points P0,…,P(k-1) in the point cloud is determined, where the initial list includes the k points in the point cloud closest to the point P to be encoded. In subsequent steps, the predictor points in the initial list are selected based on their relative positions to the point P to be encoded. If the initial list is sufficiently dispersed or distributed, the initial list, i.e., the k closest predictor points in the point cloud, is selected to ensure sufficiently high accuracy in predicting the attributes of the point P during predictive encoding of the attributes of the point P to be encoded.
[0035] Preferably, the initial list is sorted according to the distance to the point P to be encoded, from the nearest point P0 to the farthest point P(k-1).
[0036] Preferably, the method includes:
[0037] If the predictor points in the initial list are not selected:
[0038] A candidate list of n predictor points is determined from the k to k+n-1 nearest points Pk,…,P(k+n-1) in the point cloud;
[0039] Replace at least one predictor point in the initial list with a predictor point in the candidate list to obtain the predictor list; and
[0040] Based on the relative positions of the predictor points in the obtained list, the predictor points are selected as the predictor list.
[0041] Preferably, n is between 1 and 10, more preferably between 1 and 5, and most preferably n = 3.
[0042] Therefore, at least one predictor point in the initial list is replaced by a predictor point in the candidate list to obtain a list. The obtained list is selected based on the geographical locations of the predictor points relative to each other for encoding point attributes associated with the point P to be encoded via predictive coding. Thus, one of the k nearest predictor points in the initial list is replaced by a predictor point further away from the point to be encoded, in order to obtain improved predictions of the attributes of the point P to be encoded.
[0043] Preferably, the method includes:
[0044] If the obtained list of predictors is not selected, at least one predictor point is iteratively replaced with each predictor point in the candidate list to obtain a list, until a predictor point in the appropriate list is selected based on the position of the predictor points in the obtained list relative to each other.
[0045] Therefore, it is continuously considered whether each predictor point in the candidate list can increase the dispersion or distribution of the initial list through the corresponding predictor points in the candidate list, thereby providing better prediction results for the attributes of the point P to be encoded. Once a predictor point is found in the candidate list, the process can be stopped, thus selecting the predictor point in the result list.
[0046] Preferably, the predictor points in the candidate list are sorted in ascending order of distance to the point P to be encoded, where point Pk is the closest point in the candidate list (but still farther than the last point in the initial list) and P(k+n-1) is the farthest predictor point in the candidate list.
[0047] Preferably, only the last predictor point in the initial list is replaced. Therefore, if a predictor point in the initial list is not selected, only the last predictor point in the initial list is replaced by one of the predictor points in the candidate list. Specifically, for the acquired list obtained by replacing the last predictor point in the initial list, or for the acquired list obtained during iteration by replacing the last predictor point in the acquired list of a previous step, only the last predictor point is replaced by one of the predictor points in the candidate list.
[0048] Preferably, k is equal to 2 or greater, more preferably equal to 3. In particular, k = 3 is a sufficient trade-off between the implementation complexity of increasing the number of k and sufficient predictability, which means sufficient reduction of the individual residuals during prediction.
[0049] Preferably, the space surrounding the point P to be encoded is divided into octants along the X, Y, and Z axes (used for the geographic location / coordinates of the point) for encoding / decoding, wherein a predictor point is selected if at least two predictor points are located in opposite octants, wherein the opposite octants share only the common point P to be encoded.
[0050] Therefore, the list of predictor points, which serves as the initial list or predictor list, is considered to include predictor points that are sufficiently dispersed or distributed around the point P to be encoded, and thus the list is selected if at least two predictor points in that respective list are located in opposite octaves. Specifically, when considering the relative positions of the individual predictor points and selecting those predictor points from the acquired predictor list or initial list, it is determined whether each list includes at least two opposite predictor points, i.e., located in opposite octaves.
[0051] Preferably, the space around the point P to be encoded is divided into octets along the X, Y and Z axes of encoding / decoding, wherein a predictor point is selected if at least two predictor points are located in loose opposite octets, wherein the loose opposite octets share only one common edge.
[0052] Therefore, the list of predictor points, which serves as the initial list or predictor list, is considered to include predictor points that are sufficiently dispersed or distributed around the point to be encoded, P, and thus the list is selected if at least two predictor points in that corresponding list are located in loosely opposite octaves. Specifically, when considering the relative positions of the individual predictor points and selecting those predictor points from the acquired predictor list or initial list, it is determined whether each list includes at least two loosely opposite predictor points, i.e., at least two predictor points located in loosely opposite octaves.
[0053] Preferably, the selection of predictor points in the initial list and / or predictor list includes:
[0054] Determine whether at least two predictor points in the initial list or the predictor list lie in opposite octaves, and then determine whether at least two predictor points in the initial list or the predictor list lie in loose opposite octaves. Alternatively, for the case where a specific predictor point in the candidate list replaces a predictor point in the initial list, determine whether at least two predictor points in the predictor list lie in opposite octaves, and then determine whether at least two predictor points in the initial list or the predictor list lie in loose opposite octaves. The next predictor point in the candidate list can then be considered.
[0055] Preferably, the subsequent determination of whether at least two predictor points in the initial list or predictor list are located in loosely opposite octaves is performed only if the last two points in the initial list are in the same octave.
[0056] Preferably, at least one threshold Ti is defined by Ti = W × dist(P, Pi), with weight W > 1 and Pi being the predictor point of the initial list, wherein if the distance between the predictor point in the candidate list and the point P to be encoded / decoded is less than Ti, then the predictor point in the candidate list is eligible to replace at least one predictor point in the initial list.
[0057] Therefore, if the distance between the corresponding predictor point in the candidate list and the point P to be encoded is less than a threshold Ti, only those predictor points in the candidate list are considered to replace one or more predictor points in the initial list or any previously acquired predictor list. Each threshold Ti can be defined based on the distance between point P and point Pi in the initial list to adequately filter candidates. The weight W is preferably fixed for a given point cloud. Preferably, W is determined based on the density of points in the point cloud, with a larger weight W chosen for sparse point clouds.
[0058] Preferably, the weight information W and / or n is included in the bitstream.
[0059] Preferably, the bitstream is a bitstream conforming to MPEG G-PCC, and the weight information W and / or n exists in the attribute parameter set APS of the G-PCC bitstream.
[0060] In one aspect of the invention, a method is provided for decoding point attributes associated with points in a point cloud from a bitstream, comprising:
[0061] For a point P to be decoded in the bitstream, a list of prediction factors for k prediction factor points in the point cloud is determined. This list includes the point in the point cloud closest to the point P to be decoded, selected based on their relative positions.
[0062] Based on the attributes of the predictor points in the predictor list, the point attributes associated with the point P to be decoded are decoded through predictive decoding.
[0063] Preferably, the method for decoding is further constructed together with the features described above regarding the encoding method. In particular, the encoding and decoding processes are similar. The same method steps can also be implemented for the method used for decoding.
[0064] In one aspect of the invention, an encoder is provided for encoding point attributes associated with points in a point cloud in a bitstream, comprising: a processor and a memory storage device, wherein executable instructions of the processor are stored in the memory storage device, the instructions, when executed, cause the processor to perform the above-described encoding method.
[0065] In one aspect of the invention, a decoder is provided for decoding point attributes associated with points in a point cloud in a bitstream, comprising: a processor and a memory storage device, wherein executable instructions of the processor are stored in the memory storage device, the instructions causing the processor to perform the method described above when executed.
[0066] In one aspect of the invention, a non-transitory computer-readable storage medium is provided that stores processor execution instructions, which, when executed by a processor, cause the processor to perform the method described above. Attached Figure Description
[0067] Reference will now be made to the accompanying drawings, which illustrate exemplary embodiments of this application, and wherein the drawings show:
[0068] Figure 1 A flowchart of a method for encoding according to the present invention is shown.
[0069] Figure 2 This diagram illustrates the predictor points in a point cloud.
[0070] Figure 3 A flowchart illustrating another embodiment of the method according to the present invention is shown.
[0071] Figure 4 The illustration shows a specific sequence surrounding the point P to be encoded.
[0072] Figure 5 A flowchart illustrating another embodiment of the method according to the present invention is shown.
[0073] Figure 6 A flowchart illustrating another embodiment of the method according to the present invention is shown.
[0074] Figure 7 The diagram illustrates a flowchart for decoding according to the present invention.
[0075] Figure 8 An encoder according to the present invention is shown.
[0076] Figure 9 A decoder according to the present invention is shown. Detailed Implementation
[0077] This application describes a method for encoding and decoding the attributes of points in a point cloud, as well as an encoder and decoder for encoding and decoding the attributes of points in a point cloud.
[0078] This invention relates to a method for encoding point attributes associated with points in a point cloud in a bitstream, comprising:
[0079] For a point P to be encoded in a bitstream, a list of predictors for k predictor points in the point cloud is determined, the list of predictors including the point in the point cloud closest to the point P to be encoded, selected based on their relative positions to each other; and
[0080] Based on the attributes of the predictor points in the predictor list, point attributes associated with the point P to be encoded are encoded through predictive coding.
[0081] Furthermore, the present invention relates to a method for decoding point attributes associated with points in a point cloud from a bitstream, comprising:
[0082] For a point P to be decoded in the bitstream, a list of predictors for k predictor points in the point cloud is determined. This list includes points in the point cloud closest to the point P, selected based on their relative positions to each other.
[0083] Based on the attributes of the predictor points in the predictor list, the point attributes associated with the point P to be decoded are decoded through predictive decoding.
[0084] Other aspects and features of this application will be understood by those skilled in the art through a review of the following description of the examples in conjunction with the accompanying drawings.
[0085] A point cloud is a set of points in a three-dimensional coordinate system. These points are typically intended to represent the outer surface 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 can be a Cartesian coordinate system or any other coordinate system. These points have further associated properties, such as color, which in some cases can also be three-component values, such as R, G, B or Y, Cb, Cr. Other associated properties may include transparency, reflectivity, normal vectors, etc., depending on the desired application of the point cloud data.
[0086] Point clouds can be static or dynamic. For example, a detailed scan or mapping of an object or terrain can be static point cloud data. LiDAR-based scans of the environment for machine vision purposes can be dynamic because the point cloud (at least potentially) changes over time, for example, for each consecutive scan of a volume. A dynamic point cloud is therefore a temporally ordered sequence of points.
[0087] Point cloud data can be used in many applications, including conservation (scanning of historical or cultural relics), mapping, machine vision (such as autonomous or semi-autonomous vehicles), and virtual reality systems, to give some examples. Dynamic point cloud data used for applications such as machine vision can be quite different from static point cloud data used for conservation purposes. For example, automotive vision typically involves relatively low-resolution, non-color, and highly dynamic point clouds obtained through LiDAR (or similar) sensors with high capture frequencies. The purpose of such point clouds is not for human use or viewing, but for machine object detection / classification in the decision-making process. As an example, a typical LiDAR frame contains approximately tens of thousands of points, while high-quality virtual reality applications require millions of points. It can be expected that, over time, there will be a demand for higher-resolution data as computing speeds increase and new applications are discovered.
[0088] While point cloud data is useful, the lack of effective and efficient compression of the properties and geometry of such point clouds—that is, the encoding and decoding process—may hinder adoption and deployment.
[0089] One more common mechanism for encoding and decoding point cloud data is the use of tree-based structures. In a tree-based structure, the boundary 3D volume of the point cloud is recursively partitioned into subvolumes. Nodes in the tree correspond to subvolumes. The decision to further partition into subvolumes can be based on the tree's resolution and / or the presence of any points contained within a subvolume. Leaf nodes can have occupancy flags indicating whether their associated subvolume contains points. Segmentation flags can signal whether a node has child nodes (i.e., whether the current volume has been further partitioned into subvolumes). These flags can be entropy-encoded in some cases and predictive-encoded in others. A commonly used tree structure is an octree. In this structure, both the volume and subvolumes are cubes, and each partition of a subvolume produces eight additional subvolumes / subcubes.
[0090] The basic process of creating an octree to encode and decode point clouds can include:
[0091] Start with a bounding volume (cube) containing a point cloud in a coordinate system;
[0092] 1. Divide the solid into 8 sub-solids (eight sub-cubes);
[0093] 2. For each sub-body, if the sub-body is empty, mark it as 0, or if it contains at least one point, mark it as 1;
[0094] 3. For all sub-body marked as 1, repeat (2) to segment those sub-body until the maximum segmentation depth is reached; and
[0095] 4. For all leaf cubes (sub-cubes) with the maximum depth, mark them as 1 if they are non-empty, otherwise mark them as 0.
[0096] The tree can be traversed in a predefined order (breadth-first or depth-first, and according to the scan pattern / order within each partitioned sub-body) to produce a bit sequence representing the occupancy pattern of each node.
[0097] As described above, points in a point cloud can include attributes. These attributes are encoded and decoded independently of the geometry of the point cloud. Therefore, each occupied node, i.e., a node that includes at least one point of the point cloud, is associated with one or more attributes to further specify the properties of the point cloud.
[0098] This invention provides a method for encoding the attributes of points in a point cloud of a bitstream. The method is as follows: Figure 1 As shown.
[0099] In step S01, for a point P to be encoded in the bitstream, a list of predictors for k predictor points in the point cloud is determined. The list of predictors includes points in the point cloud that are closest to the point P to be encoded, selected based on their relative positions to each other.
[0100] In step S02, based on the attributes of the predictor points in the predictor list, the point attributes associated with the point P to be encoded are encoded by predictive coding.
[0101] This invention introduces a mechanism that allows the list of the k most recent predictors used for LoD attribute encoding and decoding to be replaced on both the encoding and decoding sides with a different list of the k predictors that ultimately provide better predictions (lower residuals).
[0102] To do this, if “farther” points are more advantageously located in space, the invention considers replacing one or more of the k nearest predictor points with them, i.e., predictor points that are more dispersed or distributed around the point to be predicted.
[0103] refer to Figure 2 To encode the attributes of point P, it is probably preferable to use a method derived from... Figure 2 P3 in the model indicates a more distant point than the closer point P2 because predictor points P0, P1, and P3 are better dispersed or sufficiently distributed around P than the three closest predictor points P0, P1, and P2, and therefore may provide better predictions of the properties of point P.
[0104] In the examples described below, three predictor points are used to predict the properties of the point P to be encoded, i.e., k = 3. Of course, the invention is not limited to the number of predictor points considered. However, common applications under the MPEG standard use this number of predictor points in LoD prediction schemes because it provides a good trade-off between implementation complexity and accuracy in reducing residuals in the bitstream. Therefore, in the embodiments given below, k = 3 is used.
[0105] refer to Figure 3 This illustrates another embodiment of the invention.
[0106] In step S10, an initial list of k predictor points in the point cloud is determined, including the k nearest points P0,…,P(K-1) to the point to be encoded P.
[0107] In step S11, a candidate list of n predictor points is determined from the k to (k+n-1) nearest points Pk,…,P(k+n-1) in the point cloud.
[0108] 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 list of predictor points.
[0109] In step S13, the predictor points in the obtained list are selected as the predictor list based on their relative positions to each other.
[0110] Therefore, the initial list includes the k points in the point cloud that are geographically closest to the point P to be encoded. The candidate list includes the next n points that are closest to the point P to be encoded. The candidate list includes predictor points that can be considered to obtain a final list of predictors for predicting and encoding the attributes of point P. For example, k = 3, so the initial list includes P0, P1, and P2. n can be set to equal 5, so the candidate list includes points P3, P4, P5, P6, and P7, where P0 to P7 are ordered by increasing their distance to the point P to be encoded and are the eight points in the point cloud closest to the point P to be encoded. According to step S12, at least one predictor point P0, P1, or P2 is replaced by one of the predictor points in the candidate list. Preferably, only one predictor point in the initial list is replaced. Preferably, the last predictor point in the initial list is replaced by one of the predictor points in the candidate list. In the example above, P2 can be replaced by one of P3 to P7 to obtain a new list of predictor points. Next, according to step S13, it is tested whether the predictor points of each predictor list are scattered or sufficiently distributed. The predictor points of the new list are selected as the predictor list based on their relative positions to each other. This predictor list is considered the final predictor list and is determined according to... Figure 3 Arrow 102 is used for predictive encoding of the attributes of point P. If no predictor point in the obtained predictor list is selected, then according to... Figure 3 Arrow 100 indicates that during the iteration process, all predictor points in the candidate list are circled, and it is tested whether to replace one or more predictor points in the initial list with each predictor point in the candidate list. This allows for the selection of a predictor point list for prediction encoding based on their relative positions, 102, to improve the prediction of the attributes of the point P to be encoded. For example, in the first step, point P2 is replaced by P3, and it is tested whether the obtained predictor list (P0, P1, P3) is scattered. If not, the predictor list (P0, P1, P4), etc., is tested in the next step until a scattered predictor list is found or the end of the candidate list is reached. In the former case, the corresponding predictor list is selected and used for prediction encoding; in the latter case, the initial list can be used.
[0111] refer to Figure 4This describes the space surrounding the point P to be encoded, where the axes in the X, Y, and Z directions are aligned with the encoding / decoding directions. Therefore, eight octets are defined around point P, indicated by 0, ..., 7. The list of predictor points is selected if at least two points in the predictor point list are opposite to each other.
[0112] This means that the strictly opposite quatrains are:
[0113] 0 and 7;
[0114] 1 and 6;
[0115] 2 and 5;
[0116] 3 and 4.
[0117] If both predictor points cannot be found, the requirement that at least two predictor points are opposites is relaxed; if at least two predictor points need to be loosely opposite, then the predictor points are selected. A loosely opposite octet is defined as whether at least two predictor points lie in a loosely opposite octet, where the loosely opposite octets share only one common edge. This means that a loosely opposite octet is:
[0118] 0 and 3, 5, 6;
[0119] 4 and 1, 2, 7;
[0120] 1 and 2, 4, 7;
[0121] 5 and 0, 3, 6;
[0122] 2 and 1, 4, 7;
[0123] 6 and 0, 3, 5;
[0124] 3 and 0, 5, 6;
[0125] 7 and 1, 2, 4.
[0126] Reference Figure 5 Among them, steps S10 to S12 are the same as those referenced. Figure 3 The descriptions are the same.
[0127] In step S131, it is determined whether at least two predictor points in the obtained predictor list are located in opposite octaves.
[0128] If this is the case, then according to arrow 104, the predictor points in the obtained predictor list are considered to be sufficiently distributed around the point P to be encoded, i.e., dispersed and selected for predictive encoding.
[0129] Otherwise, according to arrow 100, iteratively consider each element of the candidate list, as described above. Figure 3 As stated above.
[0130] If no predictor point is 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 from the candidate list to obtain a predictor list, similar to step 12 above.
[0131] In step S133, it is determined whether at least two predictor points in the acquired predictor list are located in loose opposite octaves.
[0132] If this is the case, then according to arrow 106, the predictor points in the obtained predictor list are considered to be sufficiently distributed around the point to be encoded P, i.e., dispersed and selected for predictive encoding.
[0133] Otherwise, as described above, each element of the candidate list is considered iteratively in steps S132 and S133.
[0134] exist Figure 5 The document describes first checking all predictor points in the candidate list to see if they provide at least two predictor points in the opposite quadrant of the acquired predictor list. If this fails, it then checks all predictor points in the candidate list again to see if they can provide at least two predictor points in loosely opposite quadrants. However, the order of the steps can be rearranged such that the first predictor point in the candidate list is first tested to see if it can provide at least two predictor points in the opposite quadrant, and then the same predictor points in the candidate list are tested to see if they can provide at least two predictor points in two loosely opposite quadrants.
[0135] For an instance where k=3, the steps of this method can be:
[0136] 1. It identifies an initial list of the three nearest predictors P0, P1, and P2, and a subsequent candidate list of the n nearest predictors P3 to Pn+2 to point P.
[0137] 2. If the predictor points in the initial list are not sufficiently dispersed around point P, each element of the candidate list will be considered one after another to replace the last element P2 of the initial list, until all elements of the first list are sufficiently dispersed around point P or there are no more candidates to evaluate. The list of predictors is considered sufficiently dispersed as long as at least two of the predictor points are in opposite octaves.
[0138] 3. If the process fails to select a list of sufficiently dispersed elements for the initial list, the entire process restarts, but this time, if at least two of the predictor points are in loosely opposite octaves, the predictor points in the candidate list are considered suitable to replace P2.
[0139] refer to Figure 6 An example is given for the case where k=3. By defining two distance thresholds F (far threshold) and C (near threshold), and evaluating the spatial position of the corresponding predictor point in the candidate list relative to P0 and P1 (in opposite directions, then loosely in opposite directions), a predictor point in the candidate list is qualified to replace P2 as long as it is close enough, i.e., below threshold F for P0 and below threshold C for P1.
[0140] In a preferred embodiment of the present invention, the two thresholds are selected as follows:
[0141] F = W × dist(P, P2)
[0142] • C = W × dist(P, P1)
[0143] Where W is a weighting factor that influences the selection of candidates. The weight W can be preset and is fixed for a specific point cloud. Since the same decision-making process needs to be performed on both the encoder and decoder sides, and its result depends on the value of the weight W, this value can also be transmitted / signaled along with the encoded data in the bitstream.
[0144] In a preferred embodiment of the present invention, for k=3, the following steps are performed on the encoding side:
[0145] Steps S10 and S12 are similar to those described above, and redundant descriptions are omitted here.
[0146] In step S120, the far threshold F = W × dist(P, P2) and the near threshold C = W × dist(P, P1) are set.
[0147] In an alternative step, if P1 and P2 are on opposite octaves and (P0, P1, P2) are well dispersed around P, then the process is stopped and (P0, P1, P2) is selected as the final list of predictors.
[0148] In step S121, for each point Pi in the candidate list, they are ordered according to their distances to P:
[0149] a. If dist(Pi, P) ≤ F and Pi is in the opposite octave to P0, then replace P2 in the predictor list with Pi, and stop the process by selecting (P0, P1, Pi) as the final predictor list as shown by arrow 108.
[0150] b. If dist(Pi, P) ≤ C and Pi is in the opposite octave to P1, then replace P2 in the predictor list with Pi, and stop the process by selecting (P0, P1, Pi) as the final predictor list as indicated by arrow 108.
[0151] In step S122, if at least P1 or P2 is in the same direction as P0, then for each point Pi in the candidate list, they are ordered according to their distances to P:
[0152] a. If dist(Pi, P) ≤ F and Pi is in the opposite octet to P0, then replace P2 in the predictor list with Pi, and stop the process by selecting (P0, P1, Pi) as the final predictor list.
[0153] b. If dist(Pi,P)≤C and Pi is in the opposite octet to P1, then replace P2 in the predictor list with Pi and stop the process by selecting (P0, P1, Pi) as the final predictor list.
[0154] Otherwise, (P0, P1, P2) are selected as the final list of predictors because no better candidates can be found.
[0155] This invention also provides a method for decoding the attributes of points in a point cloud in a bitstream. The method is as follows: Figure 7 As shown. See also Figure 7 ,
[0156] In step S03, for the point P to be decoded in the bitstream, a list of predictor factors for k predictor points in the point cloud is determined. The list of predictor factors includes the points in the point cloud that are closest to the point P to be decoded, selected according to their relative positions to each other.
[0157] In step S04, the point attributes associated with point P are decoded by predicting and decoding the attributes of the predictor points in the predictor list.
[0158] The decoding method is constructed according to the features and steps described above in conjunction with the detailed description of the encoding method.
[0159] By sharing the W and n values between the encoder and decoder, the exact same process for selecting predictor points can be performed on both sides with identical results. Therefore, the decoding method has the additional step of reading the W (weights for distance eligibility) and n (maximum number of candidates) values from the encoded / decoded point cloud bitstream. Subsequent steps are the same as those described in detail above for the encoding method.
[0160] In a preferred embodiment of the present invention, the weight W and n parameter values are transmitted by signal within the attribute parameter set APS of the MPEG G-PCC encoded and decoded point cloud.
[0161] Now for reference Figure 8 The diagram illustrates a simplified block diagram of an example embodiment of encoder 10. Encoder 10 includes a processor 12 and a memory storage device 14. The memory storage device 14 may store a computer program or application containing instructions that, when executed, cause processor 12 to perform operations such as those described herein. For example, instructions may encode and output a bitstream encoded according to the methods described herein. It will be understood that instructions may be stored on a non-transitory computer-readable medium, such as an optical disk, flash memory device, random access memory, hard disk drive, etc. When instructions are executed, processor 12 performs the operations and functions specified in the instructions to act as a dedicated processor operation for implementing the process. In some examples, such a processor may be referred to as a "processor circuit" or a "processor circuit system".
[0162] Still referencing Figure 9 The diagram illustrates a simplified block diagram of an example embodiment of decoder 16. Decoder 16 includes a processor 18 and a memory storage device 20. The memory storage device 20 may include a computer program or application containing instructions that, when executed, cause processor 18 to perform operations such as those described herein. It will be understood that the instructions may be stored on a computer-readable medium, such as an optical disc, flash memory, random access memory, hard disk drive, etc. When the instructions are executed, processor 18 performs the operations and functions specified in the instructions to operate as a dedicated 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".
[0163] It is understood that the decoder and / or encoder according to this application can 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 can be implemented by software containing instructions for configuring one or more processors to perform the functions described herein. The software instructions can be stored on any suitable non-transitory computer-readable storage medium, including CD, RAM, ROM, flash memory, etc.
[0164] It should be understood that the decoders and / or encoders described herein, as well as the modules, routines, procedures, threads, or other software components implementing the described methods / processes for configuring the encoders or decoders, can be implemented using standard computer programming techniques and languages. This application is not limited to specific processors, computer languages, computer programming conventions, data structures, 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, as part of an application-specific integrated circuit (ASIC), etc.
[0165] This application also provides a computer-readable signal that encodes data generated by applying the encoding process according to this application.
[0166] Certain adjustments and modifications can be made to the described embodiments. Therefore, the embodiments discussed above are considered illustrative rather than restrictive. In particular, the embodiments can be freely combined with each other.
Claims
1. A method for encoding point attributes associated with points in a point cloud in a bitstream, comprising: For a point P to be encoded in the bitstream, a list of predictors for k predictor points in the point cloud is determined. The list of predictors includes the point in the point cloud that is closest to the point P to be encoded, selected according to their relative positions to each other. as well as Based on the attributes of the predictor points in the predictor list, the point attributes associated with the point P to be encoded are encoded by predictive coding. The determination of the predictor list includes: Determine 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; Based on their relative positions, the predictor points in the initial list are selected as the predictor list. The space surrounding the point P to be encoded is divided into octets along the X, Y and Z axes of the encoding. If at least two predictor points are located in opposite octets, the predictor point is selected. The opposite octets only share the common point P to be encoded.
2. The method according to claim 1, wherein, If the predictor points in the initial list are not selected: A candidate list of n predictor points is determined from the k to k+n-1 nearest points Pk,…,P(k+n-1) of the point cloud; Replace at least one predictor point in the initial list with a predictor point from the candidate list. as well as Based on the relative positions of the predictor points in the obtained list, select the predictor points in the obtained list as the predictor list.
3. The method according to claim 2, wherein, At least one predictor point is iteratively replaced with each predictor point in the candidate list to obtain a predictor list, until a predictor point in the predictor list is selected.
4. The method according to claim 2, wherein, Replace only the last predictor point in the initial list and / or the predictor list.
5. The method according to claim 1, wherein, k is equal to or greater than 3.
6. The method according to claim 1, wherein, The space surrounding the point P to be encoded is divided into octets along the X, Y, and Z axes of the encoding. If at least two predictor points are located in a loose octet, the predictor point is selected, wherein the loose octets share only one common edge.
7. The method according to claim 1, wherein, Selecting predictor points from the initial list and / or the predictor list includes: Determine whether at least two predictor points lie in the opposite octave, and then determine whether at least two predictor points lie in the loose opposite octave.
8. The method of claim 2, wherein at least one threshold Ti is defined by Ti = W × dist(P, Pi), weight W > 1, and Pi is a predictor point of the initial list, wherein if the distance between a predictor point of the candidate list and the point to be encoded P is less than Ti, then a predictor point of the candidate list is eligible to replace at least one predictor point of the initial list.
9. The method of claim 8, wherein weight information W and / or n is included in the bitstream.
10. The method according to claim 8, wherein, The bitstream is a bitstream conforming to MPEG-PCC, and the weight information W and / or n exists in the attribute parameter set APS of the G-PCC bitstream.
11. A method for decoding point attributes associated with points in a point cloud from a bitstream, comprising: For a point P to be decoded in the bitstream, a list of predictors for k predictor points in the point cloud is determined. The list of predictors includes the point in the point cloud that is closest to the point P to be decoded, selected according to their relative positions to each other. as well as Based on the attributes of the predictor points in the predictor list, the point attributes associated with the point P to be decoded are decoded by predictive decoding. The determination of the predictor list includes: Determine 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 decoded; Based on their relative positions, the predictor points in the initial list are selected as the predictor list. The space around the point P to be decoded is divided into octagons along the X, Y and Z axes of the decoding process. If at least two predictor points are located in opposite octagons, the predictor point is selected. The opposite octagons only share the common point P to be decoded.
12. The method according to claim 11, wherein, A candidate list of n predictor points is determined from the k to k+n-1 nearest points Pk,…,P(k+n-1) of the point cloud; Replace at least one predictor point in the initial list with a predictor point from the candidate list. as well as Based on the relative positions of the predictor points in the obtained list, select the predictor points in the obtained list as the predictor list.
13. The method according to claim 12, wherein, At least one predictor point is iteratively replaced with each predictor point in the candidate list to obtain a predictor list, until a predictor point in the predictor list is selected.
14. The method according to claim 11, wherein, Replace only the last predictor point in the initial list and / or the predictor list.
15. The method of claim 12, wherein at least one threshold Ti is defined by Ti = W × dist(P, Pi), weight W > 1, and Pi is a predictor point of the initial list, wherein if the distance between a predictor point of the candidate list and the point to be decoded P is less than Ti, then a predictor point of the candidate list is eligible to replace at least one predictor point of the initial list.
16. An encoder for encoding point attributes associated with points in a point cloud in a bitstream, comprising: A processor and a memory storage device, wherein executable instructions of the processor are stored in the memory storage device, the instructions, when executed, cause the processor to perform the method according to any one of claims 1 to 10.
17. A decoder for decoding point attributes associated with points in a point cloud in a bitstream, comprising: A processor and a memory storage device, wherein executable instructions of the processor are stored in the memory storage device, the instructions, when executed, cause the processor to perform the method according to any one of claims 11 to 15.
18. A non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by a processor, cause the processor to perform the method according to any one of claims 1 to 15.
Citation Information
Patent Citations
Point cloud encoding and decoding method, encoding device and decoding device
CN109889840A