Method for encoding and decoding a 3D point cloud, encoder, decoder
The method enhances point cloud encoding and decoding by using previous frame information and sensor geometry to reduce redundancy, improving efficiency and accuracy in reconstructing 3D environments.
Patent Information
- Application Number
- PCT/CN2024/075584
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-02-02
- Publication Date
- 2025-08-07
AI Technical Summary
Existing point cloud codecs fail to efficiently encode and decode 3D spatial data from LiDAR systems, particularly in dynamic environments, due to redundancy and inefficiencies in leveraging prior frame information and sensor geometry.
A method for decoding and encoding 3D point clouds that utilizes frame information from previous frames, considering the relative positioning of points and sensor geometry, and employs a coarse representation to reduce redundancy, especially in LiDAR data captured by spinning sensors.
Improves coding efficiency and accuracy in reconstructing 3D environments by leveraging temporal redundancy and sensor geometry, particularly suitable for applications like autonomous driving and geographic mapping.
Smart Images

Figure CN2024075584_07082025_PF_FP_ABST
Abstract
Description
Method for encoding and decoding a 3D point cloud, encoder, decoderTechnical Field
[0001] The present invention relates to a method for encoding and decoding a 3D point cloud, encoder, and decoder. In particular, relates to point cloud geometry data captured by a spinning sensor head.Background
[0002] As a format for the representation of 3D data, point clouds have recently gained traction as they are versatile in their capability to represent all types of 3D objects or scenes. However, as for all compression schemes, the quality of reconstruction of the points of the point cloud is essential.SUMMARY
[0003] Thus, it is an object of the present invention to provide a method for decoding the geometry of a 3D point cloud from a bitstream as well as encoding a 3D point cloud into a bitstream with increased efficiency.
[0004] The problem is solved by a method for decoding according to claim 1, a method for encoding according to claim 9, a decoder according to claim 16, an encoder according to claim 17, a bitstream according to claim 18 and software according to claim 19.
[0005] In a first aspect a method for decoding the geometry of a 3D point cloud from a bitstream is provided, preferably implemented in a decoder. The method includes: receiving the bitstream, wherein the bitstream contains frame information for a sequence of frames, each frame represents the point cloud data at a specific time; for the first frame in the sequence, obtaining the frame information and determining points of the point cloud based on its encoded data; for subsequent frames (S16) , obtaining the frame information and determining points of the point cloud based on at least one previously obtained frame information. wherein the frame information includes data indicative of the relative positioning of points in the point cloud; and each point of the point cloud is represented in a multidimensional coordinate system, the representation and ordering of the points being based on at least one characteristic of their capture. Thus, this invention involves a method for interpreting and reconstructing 3D spatial data from a sequential data stream, preferably generated by a Lidar system mounted on a rotating head. The spinning Lidar head may comprise one or more sensors to capture the corresponding point clould of a physical object. The system captures a series of 'frames' , each a snapshot of 3D data points representing the surrounding environment at a given moment. The decoding process begins by receiving a stream of encoded data (bitstream) which includes detailed information about these frames, including their relative positioning. For the initial frame in this sequence, the method decodes the point cloud directly from its encoded form as at the current stage, no prior knowledge of the point cloud is known. For subsequent frames, the decoding process leverages information from at least one prior frame (including the relative positioning data) , to accurately reconstruct the point cloud. Each point in the point cloud is represented in a multidimensional coordinate system, allowing for a flexible and efficient reconstruction of the 3D environment captured by the LiDAR system. This approach allows for efficient and accurate reconstruction of the 3D environment captured by the lidar system.
[0006] Preferably, the frame information comprises an order index difference configured to indicate a difference between samples of the point cloud, wherein each sample comprises one or more points of the point cloud. Thus, it specifies that the frame information includes an "order index difference. " This order index difference may be used to show how samples in the point cloud differ from each other. Each sample can consist of either a single point or multiple points from the point cloud. The order index difference could be interpreted as any kind of metric or value that quantifies or describes how different parts of the point cloud (the samples or the points) are from each other in terms of their ordering or arrangement. In a more specific example, the order index difference might be a numerical value that indicates the sequential difference in the arrangement of samples as they were captured or processed. For instance, if the point cloud is captured in a linear path by the LiDAR, the order index difference could reflect the distance or sequence between consecutive samples along that path.
[0007] Preferably, the order index is an index associated with each sample according to a coding order of the point cloud. Thus, it states that this index is assigned to each sample and is based on the coding order of the point cloud, which means the order in which the point cloud data is encoded (or decoded or arranged) . The coding order, and consequently the order index, could comprise various ways, such as the chronological order of data capture, the spatial arrangement of points, or the order in which data is processed and stored. For a specific example, consider a LiDAR system scanning an area in a systematic pattern. The coding order might refer to the sequence in which different regions are scanned, and the order index could be a number that identifies each sample's position in this sequence. For example, if the LiDAR scans from left to right, the order index could increase incrementally from the leftmost to the rightmost samples. The coding order could also be what has been shown in the detailed description.
[0008] Preferably, the previously obtained frame information is the directly preceding frame information in the sequence. Thus, by using directly preceding frame information for decoding subsequent frames, the method ensures continuity and consistency in the data interpretation process. This approach improves the temporal accuracy of the point cloud reconstruction, especially in dynamic environments where successive frames are closely related. Redundant information does not need to be coded anymore and thus improving the coding efficiency.
[0009] Preferably, the method further comprises determining the frame information in the bitstream corresponds to the high or low portions of the point cloud; proceed with determining points of the point cloud based on at least one previously obtained frame information. Thus, the method determines if the data belongs to higher or lower segments of the point cloud and adjusts the decoding process accordingly. This distinction is crucial for applications like autonomous driving, where the lower and higher part of the point cloud data are not frequently subjected to a change and thus more predictable based on the previously coded frames. Thus, this embodiment enhances the decoding process by introducing an additional decision-making step that identifies specific segments (high or low) of the point cloud. This segmentation allows for targeted decoding strategies tailored to different parts of the point cloud, optimizing the processing for varied spatial characteristics, which is particularly beneficial in complex environments with varied topography. High portion of the point cloud may correspond to the data acquired by higher laser beams (for example from 8° to 15°, preferably the range can be from 10° to 15°) , low portion of the point cloud may correspond to data acquired by lower laser beams (for example from -14°-Δθ to -25°, preferably the range can be from -20° to -25°, wherein Δθ is angle difference between two laser beams on vertical direction) . The above angles refer to the range of Lidar scanning in a vertical direction.
[0010] Preferably, for subsequent frames, the obtaining the frame information and determining points of the point cloud are based on at least two pieces of previously obtained frame information, wherein the two pieces of previously obtained frame information each associated with a weight, preferably the frame information from frames closer in the sequence to the current frame are assigned a greater weight compared to frame information from frames further away in the sequence. Thus, the method assigns weights to previously obtained frame information, giving priority to frames closer in sequence to the current frame being decoded. This weighted approach enhances the accuracy and relevance of the decoded data, especially in dynamic environments where the immediate past is often a better predictor of the current state than older data.
[0011] Preferably, the bitstream further contains a flag configured to enable or disable the preceding methods, wherein the flag is at least one bit. Thus, the decoding method includes a flag within the bitstream that allows the enabling or disabling of certain processes, providing flexibility and control over the decoding algorithm.
[0012] Preferably, each captured point of the point cloud is represented by a point of a 2-dimensional discrete angular plane, with a sensor index as a coordinate of a first axis and an azimuthal angle as a coordinate of a second axis, the points of the point cloud being ordered according to a lexicographic order based first on the azimuthal angles and then on the sensor indices, or inversely; the sensor index being an index associated with a sensor that captured at least one point of the point cloud and the azimuthal angle being a capture angle of said sensor. Thus, the method also employs an innovative approach to organizing the point cloud data, representing each point within a 2-dimensional discrete angular plane. This arrangement, based on a sensor index and an azimuthal angle, and ordered lexicographically, ensures an efficient and systematic way of processing the vast amount of data typically generated by LiDAR systems. Reference is also made to Figure 9, points represented by solid lines are captured points of the point cloud. Those represented by dotted lines may be unoccupied (e.g., a reflected beam is not received by the emitting laser) . Thus, the order index difference may be, for example, 1, 2, 3 or the like for between two consecutive order captured points. With the above information, for example, if a first point order information is obtained, and the order difference is known, it is possible to reconstrue other points of the point cloud. Also, it is further possible to predict the order difference for the subsequent frames.
[0013] Preferably, the method further comprising: determining the frame information in the bitstream corresponds to the middle portion of the point cloud; not to proceed with determining points of the point cloud based on at least one previously obtained frame information. Thus, the method further involves an additional step of identifying whether the frame information within the bitstream is associated with the middle portion of the point cloud. Upon determining that the frame information corresponds to this middle portion, the method then entails a decision not to continue with the process of determining points of the point cloud based on previously obtained frame information. This claim could be seen as a method to optimize the decoding process by skipping certain calculations for the middle portion of the point cloud. The "middle portion" might refer to any central segment of the scanned area, or identified by its geometric position or the sequence of the data capture. Preferably, the middle portion corresponds to the data acquired by the middle laser beams (for example from -14° to 8°-Δθ, preferably, the range can be from -6° to 3°, wherein Δθ is the angle difference between two laser beams on vertical direction) . The above angles refer to the range of Lidar scanning in a vertical direction.
[0014] In another aspect of the present invention, an encoding is provided, the method includes: generating frame information for a sequence of frames, each frame representing the point cloud data at a specific time; for the first frame in the sequence, encoding points of the point cloud based on their three-dimensional data; for subsequent frames, encoding points of the point cloud based on at least one previously encoded frame information. The embodiments described with reference to the decoding method also apply to the corresponding encoding method.
[0015] In another aspect of the present invention, an encoder is provided for encoding a 3D point cloud into a bitstream. The encoder comprises a memory and a processor, wherein instructions are stored in the memory, which when executed by the processor, performs the steps of the method for encoding described before.
[0016] In another aspect of the present invention, a decoder is provided for decoding a 3D point cloud from a bitstream. The decoder comprises a memory and a processor, wherein instructions are stored in the memory, which when executed by the processor, performs the steps of the method for decoding described before.
[0017] In another aspect of the present invention, a bitstream is provided, wherein the bitstream is encoded by the steps of the method for encoding described before.
[0018] In another aspect of the present invention, a computer-readable storage medium is provided comprising instructions to perform the steps of the method for encoding a 3D point cloud into a bitstream as described above.
[0019] In another aspect of the present invention, a computer-readable storage medium is provided comprising instructions to perform the steps of the method for decoding a 3D point cloud from a bitstream as described above.
[0020] FIGURES
[0021] In the following the present invention is described in more detail with reference to the accompanying figures.
[0022] Figure 1 illustrates a spinning Lidar head that includes several spinning lasers that probe the environment;
[0023] Figure 2 illustrates the elevation angle θ of a spinning laser;
[0024] Figure 3 illustrates 2D angular representation of the points acquired by a spinning Lidar;
[0025] Figure 4 illustrates acquired points on the discrete representation;
[0026] Figure 5 illustrates 3D xyz coordinates and angle-based coordinates or
[0027] Figure 6 illustrates acquisition order in azimuthal angle and laser index λ;
[0028] Figure 7 illustrates points in azimuthal angle and laser index λ by a real;
[0029] Figure 8 illustrates the ordering of points in coarse azimuthal angle and laser index λ;
[0030] Figure 9 illustrates the representation of the point cloud by differences Δnext for a first lexicographic order
[0031] Figure 10 illustrates an overview of an encoding method implementing an example;
[0032] Figure 11 illustrates an overview of a decoding method implementing an example;
[0033] Figure 12a and Figure 12b illustrate a coarse representation of two Lidar point cloud frames with 1-second time differences;
[0034] Figure 13 illustrates an overview of the Lidar point cloud decoding method with according to the present invention;
[0035] Figure 14 illustrates a block diagram of the decoding method according to the present invention;
[0036] Figure 15 illustrates a block diagram of the encoding method according to the present invention;
[0037] Figure 16 illustrates a decoder / encoder according to the present invention.DETAILED DESCRIPTION
[0038] As a format for the representation of 3D data, point clouds have recently gained traction as they are versatile in their capability to represent all types of 3D objects or scenes. Therefore, many use cases can be addressed by point clouds, among which are
[0039] · movie post-production,
[0040] · real-time 3D immersive telepresence or VR / AR applications,
[0041] · free viewpoint video (for instance for sports viewing) ,
[0042] · Geographical Information Systems (aka cartography) ,
[0043] · culture heritage (storage of scans of rare objects into a digital form) ,
[0044] · Autonomous driving, including 3D mapping of the environment and real-time Lidar data acquisition
[0045] A point cloud is a set of points located in a 3D space, optionally with additional values attached to each of the points. These additional values are usually called point attributes. Consequently, a point cloud is combination of a geometry (the 3D position of each point) and attributes.
[0046] Attributes may be, for example, three-component colors, material properties like reflectance and / or two-component normal vectors to a surface associated with the point. Point clouds may be captured by various types of devices like an array of cameras, depth sensors, Lidars, scanners, or may be computer-generated (in movie post-production for example) . Depending on the use cases, points clouds may have from thousands to up to billions of points for cartography applications. Raw representations of point clouds require a very high number of bits per point, with at least a dozen of bits per spatial component X, Y or Z, and optionally more bits for the attribute (s) , for instance three times 10 bits for the colors. Practical deployment of point-cloud-based applications requires compression technologies that enable the storage and distribution of point clouds with reasonable storage and transmission infrastructures. Compression may be lossy (like in video compression) for the distribution to and visualization by an end-user, for example on AR / VR glasses or any other 3D-capable device. Other use cases do require lossless compression, like medical applications or autonomous driving, to avoid altering the results of a decision obtained from the analysis of the compressed and transmitted point cloud. Until recently, point cloud compression (aka PCC) was not addressed by the mass market and no standardized point cloud codec was available. In 2017, the standardization working group ISO / JCT1 / SC29 / WG11, also known as Moving Picture Experts Group or MPEG, has initiated work items on point cloud compression. This has led to two standards, namely
[0047] · MPEG-I part 5 (ISO / IEC 23090-5) or Video-based Point Cloud Compression (V-PCC)
[0048] · MPEG-I part 9 (ISO / IEC 23090-9) or Geometry-based Point Cloud Compression (G-PCC)
[0049] Both V-PCC and G-PCC standards have finalized their first version in late 2020 and will soon be available to the market. The V-PCC coding method compresses a point cloud by performing multiple projections of a 3D object to obtain 2D patches that are packed into an image (or a video when dealing with moving point clouds) . Obtained images or videos are then compressed using already existing image / video codecs, allowing for the leverage of already deployed image and video solutions. By its very nature, V-PCC is efficient only on dense and continuous point clouds because image / video codecs are unable to compress non-smooth patches as would be obtained from the projection of, for example, Lidar-acquired sparse geometry data.
[0050] The G-PCC coding method has two schemes for the compression of the geometry. The first scheme is based on an occupancy tree (octree / quadtree / binary tree) representation of the point cloud geometry. Occupied nodes are split down until a certain size is reached, and occupied leaf nodes provide the location of points, typically at the center of these nodes. By using neighbor-based prediction techniques, high level of compression can be obtained for dense point clouds. Sparse point clouds are also addressed by directly coding the position of point within a node with non-minimal size, by stopping the tree construction when only isolated points are present in a node; this technique is known as Direct Coding Mode (DCM) . The second scheme is based on a predictive tree, each node representing the 3D location of one point and the relation between nodes is spatial prediction from parent to children. This method can only address sparse point clouds and offers the advantage of lower latency and simpler decoding than the occupancy tree. However, compression performance is only marginally better, and the encoding is complex, relatively to the first occupancy-based method, intensively looking for the best predictor (among a long list of potential predictors) when constructing the predictive tree. In both schemes, attribute (de) coding may be performed after complete geometry (de) coding, leading to a two-pass coding. Thus, low latency is obtained by using slices that decompose the 3D space into sub-volumes that are coded independently, without prediction between the sub-volumes. This may heavily impact the compression performance when many slices are used.
[0051] An important use case is the transmission of Lidar data acquired by a moving vehicle. This usually requires a simple low-latency embarked encoder. Simplicity is required because the encoder is likely to be deployed on computing units which perform other processing in parallel, such as (semi-) autonomous driving, thus limiting the processing power available to the point cloud encoder. Low latency is also required to allow for fast transmission from the car to a cloud in order to have a real-time view of the local traffic, based on multiple-vehicle acquisition, and take adequate fast decisions based on the traffic information. While transmission latency can be low enough by using 5G, the encoder itself shall not introduce too much latency due to coding. Also, compression performance is extremely important since the flow of data from millions of cars to the cloud is expected to be extremely heavy. Combining encoder and decoder simplicity, low latency and compression performance is still a problem that has not been satisfactorily solved by existing point cloud codecs.
[0052] Specific priors related to the acquisition of Lidar data have been already exploited in G-PCC and have led to very significant gains of compression. A first technique concerns the vertical angle (relative to the horizontal ground) of acquisition from a spinning Lidar (depicted in Figure 1) The Lidar head of Figure 1 may spin around the vertical axis (dotted line) to capture geometry data of an object: this angle θ is fixed, as shown on Figure 2.
[0053] Practically, the representation of the Lidar-acquired point cloud is not 3D but quasi 2D in the spherical coordinates where r3D is 3D the distance of a point from the Lidar’s center. It is the linear distance measured directly from the Lidar sensor to a point in space, irrespective of the horizontal or vertical angle. The parameter r is critical for determining the absolute distance of objects from the Lidar sensor. It is fundamental in generating accurate three-dimensional maps and models of the environment, as it provides the direct spatial relationship between the sensor and the objects in its field of view. is an azimuthal angle of a Lidar head’s spin relative to a referential. The azimuthal angle refers to the horizontal angular displacement measured from a defined origin. Specifically, it is the angle between the projection of the point in question onto the horizontal plane and a fixed reference direction on that plane. In Lidar systems, is used to determine the horizontal orientation of a scanned point relative to the Lidar device. It is crucial in calculating the precise horizontal positioning of objects in the scanned environment. θ is the elevation angle of a sensor of the Lidar head relative to a horizontal referential plane. The elevation angle signifies the vertical angular displacement from a defined horizontal plane. It is the angle between the line from the point to the Lidar's center and the horizontal plane, measured in the vertical plane containing the line. θ is essential for determining the vertical positioning of objects in Lidar scans. It allows for the calculation of the height or altitude of points in relation to the Lidar device, contributing to the creation of three-dimensional representations of the scanned area.
[0054] G-PCC has gone even further by exploiting a second technique that makes benefit of the regularity of laser sensing while the Lidar is spinning, as depicted in Figure 3. A regular distribution along the azimuthal angle has been observed on Lidar acquired data. This regularity may be used to obtain a quasi 1D representation of the point cloud where, up to noise, preferably only the radius r3D belongs to a continuous range of value while the angles and θ may take only a discrete number of values. Basically, one may represent the point cloud geometry on a 2D discrete angular plane, see Figure 4, together with a radius value for each point. This quasi 1D property has been exploited in G-PCC in both the occupancy tree and the predictive tree by predicting, in the spherical coordinate, the location of a current point relative to an already coded point by using the discrete nature of angles.
[0055] Practically, the occupancy tree may use DCM intensively and entropy codes the direct location of points within a node by using a context-adaptive entropy coder. Contexts are obtained from the local conversion of the point location into angular coordinates. The predictive tree directly codes the angular coordinates where r2D is the projected radius on the horizontal xy plane (see Figure 5) , before converting into (x, y, z) and then coding a xyz residual to tackle the errors of coordinate conversion, the approximation of laser angle and noise (xyz residual refers to the difference between the actual coordinates of a point and its estimated coordinates) . As explained above there are mainly two types of coding structure in the art, namely the occupancy tree and the predictive tree.
[0056] However, according to existing coding structures, there are still redundancies in coding and the prior information of already coded frames has not been taken into account. Therefore, a decoding method according to Figure 14 and an encoding method according to Figure 15 are proposed.
[0057] The decoding method comprises the following steps:
[0058] receiving the bitstream, wherein the bitstream contains frame information for a sequence of frames, each frame represents the point cloud data at a specific time (S12) ;
[0059] for the first frame in the sequence, obtaining the frame information and determining points of the point cloud based on its encoded data (S14) ;
[0060] for subsequent frames, obtaining the frame information and determining points of the point cloud based on at least one previously obtained frame information (S16) wherein the frame information includes data indicative of the relative positioning of points in the point cloud; and each point of the point cloud is represented in a multidimensional coordinate system, the representation and ordering of the points being based on at least one characteristic of their capture. .
[0061] The encoding method comprises the following steps:
[0062] generating frame information for a sequence of frames, each frame representing the point cloud data at a specific time (S22) ;
[0063] for the first frame in the sequence, encoding points of the point cloud based on their three-dimensional data (S24) ;
[0064] for subsequent frames, encoding points of the point cloud based on at least one previously encoded frame information (S26) wherein the frame information includes data indicative of the relative positioning of points in the point cloud; and each point of the point cloud is represented in a multidimensional coordinate system, the representation and ordering of the points being based on at least one characteristic of their capture. .
[0065] Thus, according to the proposed methods, the coding efficiency could be improved by considering adjacent lidar data frame (s) .
[0066] The proposed method could also be used in combination with the coarse representation of the point cloud. In the following, the present invention will be introduced in combination with the coarse representation framework, and the embodiments can be freely combined.
[0067] In some embodiments, all lasers (sensors) may be coded at once by using the order of acquisition, as shown in Figure 6 in the plane. Due to the regular rotation of the Lidar’s head and the continuous acquisition with fixed time interval by each laser, the azimuthal distance between two points probed by the same laser is a multiple of an elementary azimuthal shift
[0068] Instead of coding the point location directly, a coarse representation may be coded first, based on the acquisition priors. For example, one may use a coarse representation of the point cloud geometry to order the point using a lexicographic order (aka dictionary order) first in the coarse azimuthal angle and second in the laser index (or the sensing elevation angle index) λ or inversely.
[0069] Schematically, the points may be acquired in the order already shown in Figure 7 in the plane. Due to the regular rotation of the Lidar’s head and the continuous acquisition with fixed time interval by each laser, the azimuthal distance between two points probed by the same laser is a multiple of an elementary azimuthal shift
[0070] Practically, not all points are acquired, i.e. the laser beam may not be reflected, there is acquisition noise and the laser may not be all perfectly aligned. Real data looks as shown in Figure 7.
[0071] The coarse angle may be simply obtained by the quantization of as follows
[0072] and the order index o (P) of a point P may be obtained by
[0073] where Nlaser is the number of lasers (i.e., the maximum of λ) and λ is the index of the laser index, in [0, Nlaser -1] that has acquired point P. The codec encodes the points P following their order o (P) monotonously, for example using an ascending order. Thus, points may be coded in the order depicted in Figure 8.
[0074] The coarse representation in the plane may be coded by
[0075] · the number of points Npoints
[0076] · the value of for the first acquired point
[0077] · the Npoints-1 successive differences Δnext between a current point and a next point as sorted by the lexicographic order, as depicted in Figure 9.
[0078] The coarse representation consists in successive differences Δnext and the compression of the coarse representation is essentially based on the compression of the successive positive values Δnext.
[0079] An overview of an encoding method based on the above-described method may be shown in Figure 10.
[0080] Firstly, the encoder may convert the xyz point location into a laser (sensor) index λ, a coarse angle and a radius r2D thanks to the knowledge of the Lidar sensor setup.
[0081] Differences Δnext are determined and the method is applied to the coding of the Δnext’s into the bitstream, as well as useful information on the sensor setup (like and laser elevation angles for example) .
[0082] Secondly, a reconstructed azimuthal angle may be computed. It can be obtained directly from the dequantization of the coarse angle. Optionally, a residual may be computed as the difference and encoded i nto the bitstream. The residual may be quantized into before encoding. In this case, the reconstructed azimuthal angle may be obtained by
[0083] where IQ stands for the inverse quantization process.
[0084] The radius r (here r2D) may also be coded, optionally after quantization into Q (r) . It is inverse quantized to obtain a reconstructed radius rrec = IQ (Q (r) ) .
[0085] Thirdly, the reconstructed azimuthal angle and the reconstructed radius rrec may be converted back to xy to obtain an estimation of the x and y location of the point.
[0086] Residuals xres and yres relative to the original point location xy may be computed xres = x -xestim, yres = y -yestim,
[0087] and encoded into the bitstream.
[0088] Fourthly and finally, a vertical estimate zestim may be obtained from the laser angle θ (λ) by zestim = rrec tan (θ (λ) )
[0089] and a residual zres relative to the original point location z may be computed zres = z -zestim
[0090] and encoded into the bitstream.
[0091] An overview of the associated corresponding decoding method is shown in Figure 11. It is straightforward once the encoding process is understood.
[0092] Firstly, the decoder may decode useful information on the sensor setup (like and laser elevation angles for example) and differences Δnext, by using the proposed method, from the bitstream. Then, the values of the laser index λ and the coarse angle may be obtained from Δnext as explained in the following.
[0093] Secondly, the reconstructed azimuthal angle may be computed. It may be obtained directly from the dequantization of the coarse angle. Optionally, an azimuthal residual may be decoded from the bitstream. The decoded residual may be a quantized version of the residual and the reconstructed azimuthal angle is obtained by
[0094] where IQ stands for the inverse quantization process.
[0095] The radius r (here r2D) may also be decoded. The coded radius may be a quantized version Q (r) of the radius. It is inverse quantized to obtain a reconstructed radius rrec = IQ (Q (r) ) .
[0096] Optionally, the radius may be predicted (by a preceding coded radius for example) and a radius residual may be coded instead of the radius.
[0097] Thirdly, the reconstructed azimuthal angle and the reconstructed radius rrec may be converted back to xy to obtain an estimation of the x and y location of the point.
[0098] Residuals xres and yres may be decoded from the bitstream and decoded horizontal location xdec and ydec of the point may be computed xdec = xestim + xres, ydec = yestim + yres.
[0099] Fourthly and finally, a vertical estimate zestim may be obtained from the laser angle θ (λ) by zestim = rrec tan (θ (λ) ) ,
[0100] a residual zres may be decoded from the bitstream and the decoded vertical location zdec of the point is computed zdec = zestim + zres .
[0101] In real applications of Lidar, like automatic driving, Lidar device scanning speed can reach 25HZ, then it can produce 25 frames of Lidar point cloud data per second, the geometry information between several successive Lidar point cloud frames is similar since the surrounding environment may not change dramatically within time period of around 0.1s, especially for the environment more than 100 meters away from the car. For example, front places that are more than 100 meters away from the car always have tall buildings and roads in a city or sometimes front cars run in the same way as the car, these objects that have a distance from the car in the front environment may not change dramatically within the time of several frames. Thus, there is temporal redundancy existing in successive Lidar data frames, and the redundancy can be exploited to improve the performance of Lidar data coding. Thus, why the proposed method according to the present invention is preferably implemented in such a situation.
[0102] To encode / decode sequences of Lidar data captured by Lidar devices of auto-driving cars, the coarse representation in the plane of successive lidar data frames when being used alone, will have much redundancy information. However, coding sequences of lidar data didn’ t make use of redundancy information between successive point cloud frames.
[0103] Thus, according to the present invention, by considering adjacent lidar data frames’ coarse representation information, the compression performance of lidar data sequences (captured in auto-driving cars) can be improved. Additionally, by combining the method according to the present invention with the above-described framework of coarse representation, the compression efficiency can be further improved.
[0104] It is proposed to reduce the temporal redundancy of coarse representation information between successive Lidar data frames to further improve the compression performance of Lidar data sequences.
[0105] In real applications, the vertical angle range of Lidar scanning can reach around more than 25°, generally it is around 40° (for example, from -25° to +15°) , and the Lidar laser beams’ vertical angle range can be divided into three parts, which are higher laser beams (for example from 8° to 15°, preferably the range can be from 10° to 15°) , middle laser beams (for example from -14° to 8°-Δθ, preferably the range can be from -6° to 3°, wherein Δθ is angle difference between two laser beams on vertical direction) and lower laser beams (for example from -14°-Δθ to -25°, preferably the range can be from -20° to -25°) , the lasers of different parts may probe objects that have different / distinguished distances from the car. The higher laser beams can probe objects that are farther and taller, like buildings or trees; And the middle laser beams may probe near objects, like front cars, people, bicycles, and etc; The lower laser beams may probe the places that are really close to the car, usually the places are the road in front of the car. When a Lidar device working on a running car, the objects probed by higher laser beams and lower laser beams will not disappear suddenly within two adjacent Lidar scanning frames (within 0.1s time period) , then the order differences Δnext between two adjacent point cloud frames may have correlations, and their differences ΔΔnext will be smaller than Δnext, and then coding ΔΔnext into bitstream will save bits than coding Δnext directly into bitstream when coding coarse representation for current Lidar data frame.
[0106] As is illustrated in Figure 12a and Figure 12b, they show the coarse representation in the plane of Lidar point cloud at time t s and time t+1 s, and the points in the middle part represent points captured by middle laser beams, and the points in the upper part., the points in the lower part represent points captured by higher laser beams and lower laser beams respectively. And some middle points in the plane may change a little within 1 second because of the objects' movement or the front cars running, and it can be found that the little changes by comparing Figure 12a with Figure 12b. Thus, it can be observed that the coarse representation of adjacent frames captured within 0.1 second will be much smaller, especially for points probed by higher laser beams and lower beams. Thus, the coarse representation information of the previous adjacent lidar point cloud can be used to predict the coarse representation of the current coded lidar point cloud frame.
[0107] In a preferred embodiment, to code the current Lidar point cloud frame (the i-th frame) , the order difference Δnexti-1, Pn between two consecutive points Pn and Pn-1 in the previous Lidar point cloud frame (the (i-1) -th frame) may be introduced to predict the order difference Δnexti, Pn between corresponding consecutive points in Pn and Pn-1 in the current frame, and a predicted order difference residual ΔΔnexti, Pn may be encoded / decoded into / from the bitstream. The predicted order difference residual for a point Pn may be obtained by ΔΔnexti, Pn=Δnexti, Pn-Δnexti-1, Pn.
[0108] In a preferred embodiment, the order difference prediction method may be used for each point to encode / decode the current point cloud frame.
[0109] A preferred embodiment of the proposed decoding method is shown in Figure 13. To be detailed, to decode a point Pn of a Lidar point cloud frame from a bitstream, it may follow the steps:
[0110] · Obtain the predicted order difference Δnexti-1, Pn between two consecutive points Pn and Pn-1 of the previous frame and obtain the order oi (Pn-1) of previously coded point Pn-1in the current frame;
[0111] · Decode the predicted order difference residual ΔΔnexti, Pn from bitstream by using Context-Adaptive Binary Arithmetic Coding, CABAC;
[0112] · And then obtain the order difference Δnexti, Pn of Pn in the current frame based on predicted order difference residual ΔΔnexti, Pn and the order difference Δnexti-1, Pn of Pn in the previous frame by Δnexti, Pn=Δnexti-1, Pn+ΔΔnexti, Pn
[0113] · Then obtain the order oi (Pn) of the current coded point in the current frame based on the obtained order difference Δnexti, Pn of Pn and order oi (Pn-1) of previously coded point in the current frame by oi (Pn) =oi (Pn-1) +Δnexti, Pn = oi (Pn-1) +Δnexti-1, Pn+ΔΔnexti, Pn
[0114] · Then construct the coarse representation in plane of the point Pn by calculating the laser (sensor) Index λ and azimuthal sampling angle based on the order of the point Pn, and they may be calculated by λn=oi (Pn) mod Nlaser,
[0115] wherein Nlaser is the total number of laser beams (or sensors) of a Lidar device.
[0116] · Then decode the radius residual, azimuthal residual, and residuals xres, yres and zres following the same process as previously outlined to reconstruct the geometry information (x, y, z) of the point oi (Pn) in the current frame.
[0117] After finishing decoding geometry and attribute information of a point in the current frame, then it may proceed to decode the next point of the current frame until it reaches the last point in the current frame.
[0118] In the current low latency low complexity Lidar coding method, for each frame, the information encoded / decoded into / from bitstream may include the order of first point P0 in the current frame and order differences ΔnextPn of all points in the frame for coarse representation. In the proposed method described above, the order of the first point P0 for each frame may be encoded / decoded into / from bitstream when coding Lidar data sequences.
[0119] In a preferred embodiment, only the order of first point P0 of the first frame in a Group of Pictures (GOP) is encoded / decoded into / from bitstream and the first point order in later frames in a GOP will not be encoded / decoded into / from bitstream directly, and only the first point order difference between the first point P0 in the current frame (the i-th frame) and the first point P’ 0 in the previous frame ( (the (i-1) -th frame) ) is encoded / decoded into / from bitstream. And the equation to calculate the first point order difference may be described by
[0120] A Group of Pictures, commonly abbreviated as GOP, is a series of consecutive frames within a compressed video or image sequence. It is a fundamental concept in digital video compression, used to organize the sequence of frames for efficient encoding and decoding. A GOP typically starts with an I-frame (Intra-coded frame) that is encoded independently of other frames, followed by a series of P-frames (Predictive-coded frames) and B-frames (Bi-directionally predictive-coded frames) that are encoded based on information from preceding and / or following frames within the GOP. The I- frame serves as a reference point for subsequent frames, facilitating error recovery and random access in the video stream. The length of a GOP, defined as the number of frames it contains, and the pattern of I, P, and B-frames within it are adjustable based on the specific requirements of the video compression application, balancing between compression efficiency, image quality, and processing complexity.
[0121] In a preferred embodiment, the predicted order difference only depends on previously coded 1 frame information. In a variant, the predicted order differences Δnextpred of points in the current frame can be obtained based on an average value of Δnext between two consecutive points Pn and Pn-1 in more than 1 previously coded frames if more than 1 previously frames have been coded in a GOP, then, for example, if previously 2 frames order differences are used, the predicted order differences Δnextpred of points in the current frame can be obtained by Δnextpred= (w1*Δnexti-1, Pn+w2*Δnexti-2, Pn) ,
[0122] Wherein, weight W1 and W2 might be optionally applied, preferably W1+W2 = 1 and more preferably W1 > W2. And then the predicted order difference residual for a captured point can be obtained by ΔΔnexti, Pn=Δnexti, Pn-Δnextpred=Δnexti, Pn- (Δnexti-1, Pn+Δnexti-2, Pn) / 2.
[0123] In a preferred embodiment, a flag (for example, coarse_inter_prediction_flag) may be used to enable / disable the usage of the proposed inter-prediction method of coarse representation. And in another embodiment, the flag can be inter inter-prediction flag indicating if inter inter-prediction method of Lidar data sequences coding is enabled or not. And if the flag is true, then the proposed inter-prediction method of coarse representation (for example, the order difference prediction method) may be used to code the coarse representation of the current frame in the current Lidar frame coding process; otherwise, the proposed inter prediction method of coarse representation (for example, the order difference prediction method) will not be used in current Lidar frame coding process.
[0124] Reference is now made to Figure 16, which shows a simplified block diagram of an example embodiment of an encoder or decoder 300. The encoder or decoder 300 includes a processor 301 and a memory storage device 303. The memory storage device 303 may store a computer program or application containing instructions that, when executed, cause the processor 301 to perform operations such as those described herein. For example, the instructions may encode and output bitstreams encoded or decode bitstreams and output points of a point cloud in accordance with the methods described herein. It will be understood that the instructions may be stored on a non-transitory computer-readable medium, such as a compact disc, flash memory device, random access memory, hard drive, etc. When the instructions are executed, the processor 301 carries out the operations and functions specified in the instructions so as to operate as a special-purpose processor that implements the described process (es) . Such a processor may be referred to as a "processor circuit" or "processor circuitry" in some examples.
[0125] It will be appreciated that the decoder and / or encoder according to the present invention may be implemented in a number of computing devices, including, without limitation, servers, suitably programmed general purpose computers, machine vision systems, and mobile devices. The decoder or encoder may be implemented by way of software containing instructions for configuring a processor or processors to carry out the functions described herein. The software instructions may be stored on any suitable non-transitory computer-readable memory, including CDs, RAM, ROM, Flash memory, etc.
[0126] It will be understood that the decoder and / or encoder described herein and the module, routine, process, thread, or other software component implementing the described method / process for configuring the encoder or decoder may be realized using standard computer programming techniques and languages. The present application is not limited to particular processors, computer languages, computer programming conventions, data structures, other such implementation details. Those skilled in the art will recognize that the described processes may be implemented as a part of computer-executable code stored in volatile or non-volatile memory, as part of an application-specific integrated chip (ASIC) , etc.
[0127] Certain adaptations and modifications of the described embodiments can be made. Therefore, the above-discussed embodiments are considered to be illustrative and not restrictive. In particular, embodiments can be freely combined with each other.
Claims
1.A method for decoding, from a bitstream, three-dimensional position of points of a point cloud, preferably the point cloud is captured by a spinning Light Detection and Ranging, lidar, head with a plurality of sensors, comprising:receiving the bitstream, wherein the bitstream contains frame information for a sequence of frames, each frame represents the point cloud data at a specific time (S12) ;obtaining the frame information;for the first frame in the sequence, determining points of the point cloud based on its encoded data (S14) ;for subsequent frames, determining points of the point cloud based on at least one previously obtained frame information (S16) wherein the frame information includes data indicative of the relative positioning of points in the point cloud;and each point of the point cloud is represented in a multidimensional coordinate system, the representation and ordering of the points being based on at least one characteristic of their capture.2.The method according to claim 1, the frame information comprises an order index difference configured to indicate a difference between samples of the point cloud, wherein each sample comprises one or more points of the point cloud.3.The method according to claim 2, the order index is an index associated with each sample according to a coding order of the point cloud.4.The method according to any of claims 1 -3, further comprising:determining the frame information in the bitstream corresponds to the high or low portions of the point cloud;proceed with determining points of the point cloud based on at least one previously obtained frame information (S16) .5.The method according to any of claims 1 -4, for subsequent frames, the obtaining the frame information and determination of points of the point cloud are based on at least two pieces of previously obtained frame information, wherein the two pieces of previously obtained frame information each associated with a weight, preferably the frame information from frames closer in the sequence to the current frame are assigned a greater weight compared to frame information from frames further away in the sequence.6.The method according to any of claims 1 –5, the bitstream further contains a flag configured to enable or disable the step of determining points of the point cloud based on at least one previously obtained frame information (S16) , wherein the flag is at least one bit.7.The method according to any of claims 2 –5, wherein each captured point of the point cloud being represented by a point of a 2-dimentional discrete angular plane in which a sensor index is a coordinate of a first axis of the 2D discrete angular plane and an azimuthal angle is a coordinate of a second axis of the 2D discrete angular plane, the points of the point cloud are ordered according to a lexicographic order based first on the azimuthal angles and then on the sensor indices or inversely; the sensor index is an index associated with a sensor that captured at least one point of the point cloud and the azimuthal angle is a capture angle of said sensor.8.The method according to any of claims 1 –7, further comprising: determining the frame information in the bitstream corresponds to a middle portion of the point cloud; not to proceed with determining points of the point cloud based on at least one previously obtained frame information (S16) .9.A method for encoding a three-dimensional point cloud into a bitstream, preferably the point cloud is captured by a spinning Light Detection and Ranging, Lidar, head with a plurality of sensors, comprising:generating frame information for a sequence of frames, each frame representing the point cloud data at a specific time (S22) ;for the first frame in the sequence, encoding points of the point cloud based on their three-dimensional data (S24) ;for subsequent frames, encoding points of the point cloud based on at least one previously encoded frame information (S26) wherein the frame information includes data indicative of the relative positioning of points in the point cloud;and each point of the point cloud is represented in a multidimensional coordinate system, the representation and ordering of the points being based on at least one characteristic of their capture.10.The method according to claim 9, the frame information comprises an order index difference configured to indicate a difference between samples of the point cloud, wherein each sample comprises one or more points of the point cloud.11.The method according to claim 10, the order index is an index associated with each sample according to a coding order of the point cloud.12.The method according to any of claims 9 to 11, further comprising:determining the frame information corresponds to the high or low portions of the point cloud;proceeding with encoding points of the point cloud based on at least one previously encoded frame information (S26) .13.The method according to any of claims 7 -9, wherein for subsequent frames, the frame information and the determination of points of the point cloud are based on at least two pieces of previously encoded frame information, each associated with a weight, with frame information from frames closer in the sequence to the current frame being assigned a greater weight compared to frame information from frames further away in the sequence.14.The method according to any of claims 7 -10, wherein the bitstream further contains a flag configured to enable or disable the encoding points of the point cloud based on at least one previously encoded frame information (S26) , with the flag being at least one bit.15.The method according to any of claims 7 -11, wherein each captured point of the point cloud is represented by a point of a 2-dimensional discrete angular plane, with a sensor index as a coordinate of a first axis and an azimuthal angle as a coordinate of a second axis, the points of the point cloud being ordered according to a lexicographic order based first on the azimuthal angles and then on the sensor indices, or inversely; the sensor index being an index associated with a sensor that captured at least one point of the point cloud and the azimuthal angle being a capture angle of said sensor.16.A decoder to decode a 3D point cloud from a bitstream comprising at least one processor and a memory, wherein the memory stores instructions when executed by the processor perform the steps of the method according to any of claims 1 to 8.17.An encoder to encode a 3D point cloud into a bitstream comprising at least one processor and a memory, wherein the memory stores instructions when executed by the processor perform the steps of the method according to any of claims 9 to 15.18.A bitstream encoded by the method according to any of claims 9 to 15.19.A computer-readable storage medium comprising instructions when executed by a processor to perform the steps of the method according to any of claims 1 to 15.
Citation Information
Patent Citations
Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
EP4365845A1
Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
US20230290006A1
Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
WO2023276820A1
Point cloud encoding method and apparatus, point cloud decoding method and apparatus, device and storage medium
WO2024011381A1