Method and apparatus for encoding / decoding point cloud geometry data captured by a spin sensor head
By performing sensor indexing and azimuth sorting on the point cloud data captured by spin lidar, and using the order index difference and radius value encoding, the problem of efficient compression of sparse geometric data is solved, realizing low-latency point cloud transmission and real-time decision support for autonomous vehicles.
Patent Information
- Application Number
- CN202180086363.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-12-23
- Filing Date
- 2021-10-13
- Publication Date
- 2025-11-07
- Estimated Expiration
- 2041-10-13
AI Technical Summary
Existing technologies have failed to effectively address the issues of simplicity in encoding and decoding, low latency, and compression performance in the compression of sparse geometric data captured by spin lidar, especially given the demands of real-time transmission and decision-making in autonomous vehicles. Existing methods have failed to provide optimized compression performance and low latency.
By obtaining the sensor index and azimuth angle for each point in the point cloud, the point cloud data is encoded based on the order index difference and radius value, and entropy coding technology is used to achieve efficient compression. The point cloud data is then decoded after transmission.
It achieves low-latency point cloud transmission at high compression levels, suitable for the real-time decision-making needs of autonomous vehicles, and provides a simple and efficient encoding and decoding scheme.
Smart Images

Figure CN116670714B_ABST
Abstract
Description
[0001] Cross-references to related applications
[0002] This application claims priority to European Patent Application No. EP20306672.5, filed on 23 December 2020, the contents of which are incorporated herein by reference in their entirety. Technical Field
[0003] This application generally relates to point cloud compression, and more particularly to methods and apparatus for encoding / decoding point cloud geometric data captured by a spin sensor head. Background Technology
[0004] This section is intended to introduce the reader to various aspects of the art that may relate to aspects of at least one exemplary embodiment of the present application described below and / or claimed. This discussion is intended to help provide the reader with background information to facilitate a better understanding of the various aspects of the present application.
[0005] Point clouds, as a format for representing 3D data, have recently gained attention due to their versatility in representing all types of physical objects or scenes. Point clouds can be used for various purposes, such as cultural heritage / buildings, where objects like statues or buildings are scanned in 3D to share their spatial configuration without sending or accessing them. Furthermore, it is a way to ensure the preservation of knowledge about objects in the event of potential damage; for example, temples destroyed by earthquakes. Such point clouds are typically static, colored, and massive.
[0006] Another use case is in topology and cartography, where using 3D representation allows maps to be not limited to a plane and can include topography. Google Maps is now a good example of a 3D map, but it uses a grid instead of point clouds. However, point clouds can be a suitable data format for 3D maps, and such point clouds are typically static, colored, and huge.
[0007] Virtual reality (VR), augmented reality (AR), and immersive worlds have recently become hot topics and are envisioned by many as the future of 2D flat video. The basic idea is to immerse the viewer in their surrounding environment, whereas standard television only allows the viewer to see a virtual world directly in front of them. Immersion has several levels depending on the viewer's degree of freedom within the environment. Point clouds are a good candidate format for distributing VR / AR worlds.
[0008] The automotive industry, especially the foreseeable autonomous vehicles, is another area where point clouds can be used extensively. Autonomous vehicles should be able to "detect" their environment to make sound driving decisions based on the presence and nature of their nearest neighbors and road configurations.
[0009] A point cloud is a collection of points located in a three-dimensional (3D) space, optionally with additional values attached to each point. These additional values are often referred to as attributes. Attributes can be, for example, three-component colors, material properties like reflectance, and / or two-component normal vectors of a surface associated with the point.
[0010] Thus, a point cloud is a combination of geometry (position of points in 3D space, usually represented by 3D Cartesian coordinates x, y and z) and attributes.
[0011] Point clouds can be captured by various types of devices like arrays of cameras, depth sensors, lasers (light detection and ranging, also known as lidar), radars, or can be generated by computers (for example, in movie post-production). Depending on the use case, point clouds can have from thousands to billions of points for mapping applications. The raw representation of a point cloud requires a very large number of bits per point, at least a dozen bits per Cartesian coordinate x, y or z, and optionally more bits for the attribute(s), for example three times 10 bits for color.
[0012] In many applications, it is important to be able to distribute point clouds to end users or store them in servers by consuming only a reasonable amount of bitrate or storage space while maintaining an acceptable (or preferably very good) quality of experience. Efficient compression of these point clouds is a key point to make the distribution chain of many immersive worlds practical.
[0013] For distribution and visualization by end users, for example on AR / VR glasses or any other 3D-enabled device, compression can be lossy (as in video compression). Other use cases do require lossless compression, like medical applications or autonomous driving, to avoid altering the results of decisions taken from subsequent analysis of the point clouds compressed and transmitted.
[0014] Until recently, the mass market had no point cloud compression (aka PCC) problem solved and no standardized point cloud codec available. In 2017, the standardization working group ISO / JCT1 / SC29 / WG11, also known as Moving Picture Experts Group or MPEG, launched a work item on point cloud compression. This led to two standards, namely
[0015] • MPEG-I Part 5 (ISO / IEC 23090-5) or Video-based Point Cloud Compression (V-PCC)
[0016] • MPEG-I Part 9 (ISO / IEC 23090-9) or Geometry-based Point Cloud Compression (G-PCC)
[0017] The V-PCC encoding method compresses a point cloud by performing multiple projections on the 3D object to obtain 2D tiles packed into images (or videos when processing dynamic point clouds). The obtained images or videos are then compressed using existing image / video codecs, allowing to leverage already deployed image and video solutions. By its nature, V-PCC is only efficient on dense and continuous point clouds, as image / video codecs cannot compress non-smooth tiles, such as the ones obtained from the projection of sparse geometry data captured from a lidar.
[0018] The G-PCC encoding method has two schemes for compressing captured sparse geometry data.
[0019] The first scheme is based on an occupancy tree, locally any kind of tree, octree, quadtree or binary tree, representing the point cloud geometry. Occupied nodes are split until a certain size is reached and occupied leaf nodes provide the 3D position of points, typically at the center of these nodes. The occupancy information is carried through occupancy flags signaling the occupancy status of each child node of a node. High level compression of occupancy flags for dense point clouds can be obtained by using a neighbor-based prediction technique. Sparse point clouds can also be addressed by directly encoding the positions of non-minimal size points within a node, stopping the tree construction when only isolated points exist in a node; this technique is called direct coding mode (DCM).
[0020] The second scheme is based on a prediction tree where each node represents a 3D position of a point and the parent / child relationship between nodes represents a spatial prediction from parent to child. This method can only address sparse point clouds and offers the advantage of lower latency and simpler decoding than the occupancy-based first method. However, the compression performance is only slightly better with respect to the first occupancy-based method and the encoding is complex as the encoder has to find the best predictor (among a long list of potential predictors) while constructing the prediction tree.
[0021] In both schemes, attribute (decoding) encoding is performed after the completion of the geometry (decoding) encoding, actually resulting in two encodings. Joint geometry / attribute low latency is thus obtained by using slices that decompose the 3D space into independently encoded sub-volumes, without the need for prediction between sub-volumes. This severely impacts the compression performance when many slices are used.
[0022] Combining the requirements of simplicity of encoder and decoder, low latency and compression performance remains an unsatisfactory solved problem for current point cloud codecs.
[0023] An important use case is the transmission of sparse geometry data captured by a spinning LiDAR mounted on a moving vehicle. This usually requires a simple and low-latency embedded encoder. Simplicity is required because the encoder can be deployed on a computing unit that performs other processing (such as (semi-)autonomous driving) in parallel, thereby limiting the processing power available to the point cloud encoder. Low latency is also required to allow fast transmission from the car to the cloud in order to allow real-time viewing of local traffic based on multi-vehicle acquisition and to make decisions based on traffic information fast enough. While the transmission latency can be made low enough by using 5G, the encoder itself should not introduce too much latency due to encoding. Moreover, compression performance is extremely important because the data stream from millions of cars to the cloud is expected to be very large.
[0024] Particular priors related to sparse geometry data captured by a spinning LiDAR have been exploited in G-PCC and brought very significant compression gains.
[0025] First, G-PCC exploits the capture elevation angle (with respect to the horizontal ground) from the spinning LiDAR head, as illustrated in Figure 1 and 2 The LiDAR head 10 comprises a set of sensors 11 (lasers), here represented by five lasers. The LiDAR head 10 can spin around a vertical axis z to capture geometry data of physical objects. The geometry data captured by the LiDAR is then represented in spherical coordinates (r 3D , φ, θ), where r 3D is the distance of a point P to the center of the LiDAR head, φ is the azimuth angle of the spin of the LiDAR head with respect to a reference, and θ is the elevation angle of a sensor k of the LiDAR head with respect to a horizontal reference plane.
[0026] A regular distribution along the azimuth angle is observed on the data captured by the LiDAR, as depicted in Figure 3 This regularity is exploited in G-PCC to obtain a quasi-1D representation of the point cloud, where, up to noise, only the radius r 3D belongs to a continuous range of values, while the angles φ and θ only take a discrete number of values, to I-1, where I is the number of azimuth angles used to capture points, to K-1, where K is the number of sensors of the LiDAR head 10. Basically, G-PCC represents the sparse geometry data captured by the LiDAR on a 2D discrete angular plane (φ, θ), as depicted in Figure 3 and the radius value r 3D of each point.
[0027] This quasi-1D property has been exploited in G-PCC in the occupancy tree and the prediction tree by predicting the position of a current point based on already encoded points by using the discrete nature of the angles in the spherical coordinate space.
[0028] More precisely, the occupancy tree uses a lot of DCMs and encodes the direct positions of the points within the nodes using a context adaptive entropy encoder. A local conversion from the point positions to angular coordinates (f, 0) and a position of these angular coordinates with respect to discrete angular coordinates (f i , 0 k ) obtained from previously encoded points are then used to obtain a context. Using the quasi-1D nature of this coordinate space (r 2D , f i , 0 k ), the prediction tree directly encodes a first version of the point positions in angular coordinates (r 2D , f, 0), where r 2D is a projected radius on the horizontal xy-plane, as depicted in Figure 4 Then, the angular coordinates (r 2D , f, 0) are converted into 3D Cartesian coordinates (x, y, z) and the xyz residuals are encoded to account for the errors of the coordinate conversion, the approximation of the elevation and azimuth angles and potential noise.
[0029] G-PCC does use angular priors to better compress the sparse geometry data captured by a spinning laser radar, but does not adapt the encoding structure to the order of capture. By its nature, the occupancy tree has to be encoded up to its last depth before the output of the points. This occupancy is encoded in a so-called breadth-first order: first the occupancy of the root node is encoded, indicating its occupied children; then the occupancy of each occupied child is encoded, indicating the occupied grandchildren; and so on iteratively at the tree depth until the leaf nodes can be determined and the corresponding points are provided / output to the application or attribute(s) encoding scheme. Regarding the prediction tree, the encoder can freely choose the order of the points in the tree, but in order to obtain good compression performance, optimize the prediction accuracy, G-PCC recommends to encode one tree per laser, as depicted in Figure 5 This has mainly the same drawbacks as using one encoding slice per laser, i.e. non-optimal compression performance because no prediction between lasers (sensors) is allowed and no low latency for the encoder is provided. Worse, there should be one encoding process per laser (sensor) and the number of core encoding units should be equal to the number of sensing lasers; this is not practical.
[0030] In short, in the framework of a spinning sensor head for capturing sparse geometry data of a point cloud, the prior art does not solve the problem of combining simplicity of encoding and decoding, low latency and compression performance.
[0031] At least one exemplary embodiment of the present application is designed in view of the foregoing. SUMMARY
[0032] The following presents a simplified summary of at least one exemplary embodiment in order to provide a basic understanding of some aspects of the application. This summary is not an extensive overview of the exemplary embodiments. It is not intended to identify key or critical elements of the embodiments. The following summary merely presents some aspects of the at least one exemplary embodiment in a simplified form as a prelude to the more detailed description provided elsewhere in the document.
[0033] According to a first aspect of the application, there is provided a method of encoding a point cloud into a bitstream of encoded point cloud data representing a physical object. The method comprises, for each point of the point cloud, obtaining a sensor index associated with a sensor that captured the point, an azimuth angle representing a capture angle of said sensor; ordering the points of the point cloud based on the azimuth angles and the sensor indices; and encoding at least one order index difference into the bitstream, the order index difference representing a difference between order indices of two consecutive ordered points.
[0034] According to an exemplary embodiment, the method further comprises encoding a radius value into the bitstream.
[0035] According to an exemplary embodiment, the method further comprises encoding a residual of the three-dimensional Cartesian coordinates of the ordered point in the bitstream based on the three-dimensional Cartesian coordinates of the ordered point, based on a decoded azimuth angle obtained from the azimuth angle, based on a decoded radius value obtained from the radius value and based on the sensor index.
[0036] According to an exemplary embodiment, the decoded azimuth angle is also obtained from a residual azimuth angle associated with the ordered point, and wherein the method further comprises encoding the residual azimuth angle in the bitstream.
[0037] The bitstream obtained in the present application can be quickly transmitted to obtain a low latency while obtaining a high level of compression.
[0038] According to an exemplary embodiment, the method further comprises transmitting the bitstream to the cloud.
[0039] According to a second aspect of the application, there is provided a method of decoding a point cloud from a bitstream of encoded point cloud data representing a physical object. The method comprises decoding at least one order index difference from the bitstream, the order index difference representing a difference between order indices of two consecutive ordered points of the point cloud; and for each point of the point cloud, obtaining from the order indices obtained from the decoded order index difference, a sensor index associated with a sensor that captured the point and an azimuth angle representing a capture angle of said sensor.
[0040] According to an exemplary embodiment, the method further comprises decoding a radius value from the bitstream and obtaining a decoded radius value from the radius value.
[0041] According to an example embodiment, the method further comprises obtaining decoded three-dimensional Cartesian coordinates of the ordered points from the bitstream based on their obtained decoded azimuth angles, based on their decoded radius values and based on their sensor indices.
[0042] According to an example embodiment, the method further comprises decoding a residual azimuth angle from the bitstream, and wherein the decoded azimuth angle is also obtained from the residual azimuth angle.
[0043] According to an example embodiment, the method further comprises obtaining the bitstream from a cloud.
[0044] According to a third aspect of the present application, there is provided an apparatus for encoding a point cloud into a bitstream of encoded point cloud data representing a physical object. The apparatus comprises one or more processors configured to perform the method according to the first aspect of the present application.
[0045] According to a fourth aspect of the present application, there is provided an apparatus for decoding a point cloud from a bitstream of encoded point cloud data representing a physical object. The apparatus comprises one or more processors configured to perform the method according to the second aspect of the present application.
[0046] According to a fifth aspect of the present application, there is provided a bitstream of encoded point cloud data representing a physical object. The bitstream further comprises at least one order index difference representing a difference between order indices of two consecutive ordered points of the point cloud.
[0047] According to a sixth aspect of the present application, there is provided a computer program product comprising instructions which, when the program is executed by one or more processors, cause the one or more processors to perform the method according to the first aspect of the present application.
[0048] According to a seventh aspect of the present application, there is provided a non-transitory storage medium carrying instructions of a program code for performing the method according to the first aspect of the present application.
[0049] According to an eighth aspect of the present application, there is provided a computer program product comprising instructions which, when the program is executed by one or more processors, cause the one or more processors to perform the method according to the second aspect of the present application.
[0050] According to a ninth aspect of the present application, there is provided a non-transitory storage medium carrying instructions of a program code for performing the method according to the second aspect of the present application.
[0051] The specific nature of at least one of the exemplary embodiments, as well as other objects, advantages, features and uses of at least one of the exemplary embodiments, will become evident in the following description in connection with the accompanying drawings. BRIEF DESCRIPTION OF DRAWINGS
[0052] Reference will now be made to the drawings in which the exemplary embodiments of the application are shown. In this regard, the drawings represent a simplified view of the implementation of the application as generally set forth.
[0053] Figure 1 illustrates a side view of a sensor head and some of its parameters according to the prior art;
[0054] Figure 2 illustrates a top view of a sensor head and some of its parameters according to the prior art;
[0055] Figure 3 illustrates a regular distribution of data captured by a spin sensor head according to the prior art;
[0056] Figure 4 illustrates a representation of points in a 3D space according to the prior art;
[0057] Figure 5 illustrates an encoding of a prediction tree according to the prior art;
[0058] Figure 6 illustrates a block diagram of steps of a method 100 of encoding a point cloud into a bitstream of encoded point cloud data representing a physical object according to at least one exemplary embodiment;
[0059] Figure 7 illustrates an example of captured points represented in a 2D space according to one exemplary embodiment of the application;
[0060] Figure 8 illustrates an example of encoded ordered points according to one exemplary embodiment of the application;
[0061] Figure 9 illustrates an example of captured points according to one exemplary embodiment of the application;
[0062] Figure 10 illustrates an example of ordered and quantized captured points according to one exemplary embodiment of the application;
[0063] Figure 11 illustrates a block diagram of steps of a method 200 of decoding a point cloud from a bitstream of encoded point cloud data representing a physical object according to at least one exemplary embodiment; and
[0064] Figure 12 illustrates a schematic block diagram of an example of a system in which various aspects and exemplary embodiments are implemented.
[0065] Similar reference numerals can have been used in different drawings to indicate similar components. DETAILED DESCRIPTION
[0066] At least one of the example embodiments will be described more fully hereinafter with reference to the accompanying drawings, in which at least one example embodiment is shown. The example embodiments may, however, be implemented in many different forms and should not be construed as limited to the examples set forth herein. Rather, these example embodiments are provided as example forms of implementing the example embodiments. Like reference numerals may
[0067] When the drawings are in the form of a flow diagram, it is to be understood that only the corresponding steps can be presented. Similarly, when the drawings are in the form of a block diagram, it is to be understood that only the corresponding blocks can be presented.
[0068] At least one of these aspects is generally directed to point cloud encoding and decoding, and at least one other aspect is generally directed to transmitting a generated or encoded bitstream.
[0069] Moreover, the present aspects are not limited to MPEG standards such as MPEG-I Part 5 or Part 9 related to point cloud compression, and can be applied to, for example, other standards and recommendations, whether pre-existing or future-developed, and extensions of any such standards and recommendations, including MPEG-I Part 5 and Part 9. The aspects described in this application can be used individually or in combination, unless otherwise indicated, or technically precluded.
[0070] Figure 6 A block diagram illustrating steps of a method 100 of encoding a point cloud into a bitstream representing an encoded point cloud data of a physical object, according to at least one example embodiment, is shown.
[0071] The geometry data of the point cloud, i.e., the 3D positions of the points of the point cloud, is captured by the spinning sensor head.
[0072] The spinning sensor head can be a spinning lidar head 10 comprising a plurality of lasers (sensors), as explained above. But the scope of the present disclosure is not limited to spinning lidar heads, and can be applied to any sensor head capable of spinning around an axis and capturing 3D position points representing a physical object for each captured angle. The sensors can be cameras, depth sensors, lasers, lidars, or scanners.
[0073] The captured 3D positions are represented in a 2D coordinate (φ, λ) system, as Figure 7 As depicted in 2D or r 3DTogether. The coordinate φ is the azimuth angle of the sensor head's spin, and its discrete value is expressed as φ. i ( (To I-1). The coordinate λ is the sensor index, and its discrete value is represented as λ. k ( To K-1). Radius r 2D or r 3D It belongs to a continuous range of values.
[0074] Due to the regular spin (rotation) of the sensor head and continuous acquisition with fixed time intervals, the azimuth distance between two points detected by the same sensor is a multiple of the basic azimuth shift Δφ, such as... Figure 7 As described above. Then, for example, at the first capture time t1, five points P1(t1), ..., P k (t1), ...P5(t1) Figure 1 The five sensors of the lidar head 10 detect at an azimuth angle φ1, at the second acquisition time t2, five points P1(t2), ..., P k P(t2), ..., P5(t2) are detected by the sensor of the lidar head 10 at an azimuth angle φ2 = φ1 + Δφ, and so on. Therefore, the discrete value φ1 can be regarded as points P1(t1), ..., P k The azimuth angle φ of P1(t1), ..., P5(t1) is quantized; quantization is obtained by the quantization step size Δφ. Similarly, the discrete value φ2 can be regarded as the points P1(t2), ..., P5(t1). k The quantized values of the azimuth angle φ of (t2), ... P5(t2).
[0075] In step 110, for each point P in the point cloud n Obtain and capture point P n The sensor index λ associated with the sensor k(n) (In the set of sensor indices, λ) k ( To K-1), φ represents the azimuth angle φ of the sensor's acquisition angle. i(n) (In the set of discrete angles, φ) i ( to I-1)) and point P n The radius value r in spherical coordinates n For simplicity, λ k(n) The index i(n) will be represented as λ in the following text. n and φ n Therefore, φ n It's not an angle, but rather a direction pointing to the angle φ. i index i( To I-1). However, because of index φn Azimuth angle associated with the standard There is a clear relationship between them, so the quantity φ n It is still referred to as the azimuth.
[0076] According to the exemplary embodiment of step 110, the captured point P is represented by a transformation. n 3D Cartesian coordinates of the 3D position (x n ,y n ,z n To obtain the sensor index λ n and azimuth φ n These 3D Cartesian coordinates (x... n ,y n ,z n () can be the output of the sensor head.
[0077] In step 120, based on the azimuth angle φ n and sensor index λ n Sort the points in the point cloud.
[0078] According to the exemplary embodiment of step 120, the points are sorted first based on azimuth angle and then on lexicographical order of sensor index. See also Figure 7 The sorted captured points are P1(t1), ..., Pk(t1), ..., P5(t1), P1(t2), ..., P k (t2),...P5(t2),...,P1(tn),...,P k (tn), …P5(tn).
[0079] Point P n The order index o(P) n ) is obtained through the following formula:
[0080] o(P n )=φ n *K+λ n
[0081] According to an exemplary embodiment of step 120, the points are sorted according to a dictionary order based first on the sensor index and then on the azimuth angle.
[0082] Point P n The order index o(P) n ) is obtained through the following formula:
[0083] o(P n )=λ n *I+φ n
[0084] In step 130, each represents two consecutive points P.n-1 with P n the order index of the point P n The order index difference Δo n between the order indices of P n and P n-1 is obtained by
[0085] Δo n = o(P n ) - o(P n )
[0086] Encoding the ordered points into the bitstream B can comprise encoding at least one order index difference Δo n . Optionally, it can also comprise encoding a radius value r n (in essence representing r n or r 2D of the point P 3D ), a Cartesian residual (x res,n , y res,n , z res,n ) of the three-dimensional Cartesian coordinates of the ordered point and an angular residual φ res,n .
[0087] The order index o(P1) of the first point P1 can be directly encoded into the bitstream B. This is equivalent to arbitrarily setting the order index of the virtual 0thpoint to 0, i.e. o(P0) = 0, and encoding Δo1 = o(P1) - o(P0) = o(P1).
[0088] Given the order index o(P1) of the first point and the order difference Δo n , the order index o(P n ) of any point P n can be recursively reconstructed by
[0089] o(P n ) = o(P n-1 ) + Δo n
[0090] The sensor index λ n and the azimuth angle φ n are then obtained by
[0091] λ n = o(P n ) mod K (1)
[0092] φ n = o(P n ) / K (2)
[0093] where the division / K is integer division (a.k.a. Euclidean division). Thus, o(P1) and Δo n are alternative representations of λ n and φ n .
[0094] In step 140, the (N-1) order index differences Δo are encoded. n ( To N), in bitstream B, the order index o(P) associated with the ordered point. n Encode the ordered points, where N is the number of ordered points. Each ordered index o(P) n This represents the difference between the order indices associated with two consecutive ordered points. Figure 8 Above, five ordered points (black circles) are represented: two points P. n and P n+1 In time t1, angle φ c (in φ) i Captured in 's', three points at time t2 with angle φ c +Δφ capture. Assume the first point P. n The coordinates of the first order index Δo in the 2D coordinate (φ, λ) system are known in advance. n+1 It is as a point P n+1 Associated order index o(P) n+1 and point P n Associated order index o(P) n The difference between the two indices is obtained. The second order index difference Δo is... n+2 It is as another ordered point P n+2 Associated order index o(P) n+2 ) and P n+1 Associated order index o(P) n+1 The difference between ) is obtained, and so on.
[0095] The sorting of capture points provides for the interaction between points captured by different sensors in the spin sensor head. Therefore, a single code is required to encode those ordered points, resulting in very simple and low-latency coding.
[0096] From the order index difference Δo n The requirements for reconstructing points include the number of points N in the point cloud, the index o(P1) of the first point in the 2D coordinate (φ, λ) system, and sensor setup parameters (such as the basic azimuth shift Δφ or elevation angle θ associated with each sensor). n Information such as (e.g., bitstream B). This information can also be encoded in bitstream B, signaled in another way, or known in advance by the decoder.
[0097] According to the exemplary embodiment of step 140, the order index difference Δo n Encoded by entropy.
[0098] Optionally, the method further comprises encoding, in step 150, in the bitstream B, a radius value r of the spherical coordinates associated with the ordered points of the point cloud n .
[0099] According to an exemplary embodiment of step 150, the radius value r n is quantized.
[0100] According to an exemplary embodiment of step 150, the radius value r n is quantized.
[0101] According to an exemplary embodiment of step 150, the radius value r n is quantized and entropy encoded.
[0102] According to an exemplary embodiment of step 150, the radius value r n represents the radius r 3D .
[0103] According to an exemplary embodiment of step 150, the radius value r n represents a projected radius r 2D on the horizontal xy-plane as depicted in Figure 4 .
[0104] Optionally, the method further comprises, in step 160, encoding, based on their three- dimensional Cartesian coordinates (x n , y n , z n ), based on the decoded azimuth angle f dec,n , based on the decoded radius value r n obtained from the radius value r dec,n and based on the sensor index l n , residuals (x res,n , y res,n , z res,n ) of the three-dimensional Cartesian coordinates of the ordered points P n .
[0105] According to an exemplary embodiment of step 160, the residuals (x res,n , y res,n , z res,n ) are differences between the three-dimensional Cartesian coordinates (x n , y n , z n ) of the points of the point cloud and the estimated three-dimensional coordinates (x estim,n , y estim,n , z estim,n .
[0106] According to an exemplary embodiment of step 160, the residuals (x res,n , y res,n , z res,n) is given by the following formula:
[0107]
[0108] According to an exemplary embodiment of step 160, the estimated coordinates (x n , y estim,n ) associated with the ordered point P estim,n are based on the decoded azimuth angle φ n and the decoded radius value r dec,n associated with the point P dec,n .
[0109] According to an exemplary embodiment of step 160, the residual (x res,n , y res,n , z res,n ) is entropy encoded.
[0110] According to an exemplary embodiment of step 160, the estimated coordinates (x estim,n , y estim,n ) are given by the following formula:
[0111]
[0112] According to an exemplary embodiment of step 160, the estimated coordinate (z estim,n ) associated with the ordered point is based on the decoded radius value r dec,n associated with the point and the elevation angle Θ n of the sensor capturing the point.
[0113] According to an exemplary embodiment of step 160, the estimated coordinate (z estim,n ) is also based on the sensor index λ n .
[0114] According to an exemplary embodiment of step 160, the estimated coordinate (z estim,n ) is given by the following formula:
[0115] z estim,n = r dec,n tan Θ n
[0116] Optionally, the method further comprises encoding in the bitstream B, in step 170, a residual azimuth angle φ res,n associated with the ordered point. According to an exemplary embodiment of step 170, the azimuth angle φ n is quantized by the following formula:
[0117] φ n = round(φ(P n ) / Δφ)
[0118] where φ(Pn ) is the original azimuth angle of point P n In this case, the discrete angles φ i (0≤i<I) are defined substantially by φ i = i*Δφ and φ i(n) = φ n *Δφ is obtained.
[0119] Thus, the order index o(P n ) of point P n is given by:
[0120] o(P n ) = φ n *K + λ n = round(φ(P n ) / Δφ)*K + λ n
[0121] The residual azimuth angle φ res,n is given by:
[0122] φ res,n = φ(P n )- φ n *Δφ (3)
[0123] This exemplary embodiment of step 170 provides an advantage because sometimes in practice, not all points are captured at each capture time because noise can be captured or because the sensors can not be perfectly aligned or because at least one laser beam of the lidar sensor head can not be reflected. The captured points can then look as depicted on Figure 9 Quantizing the azimuth angle φ(P n ) leads to an easier discrete representation of the points in the 2D coordinate (φ, λ) system as depicted on Figure 10 , which allows for a simpler path to order the points of the point cloud.
[0124] The residual azimuth angle φ res,n is encoded into the bitstream B, preferably by quantization and / or entropy coding.
[0125] This exemplary embodiment of step 170 also reduces the dynamic of the angles to be encoded into the bitstream because only the residual is encoded and not the full range values. High compression performance is reached.
[0126] Optionally, the method further comprises, in step 180, based on the azimuth angles φ n obtaining decoded azimuth angles φ dec,n .
[0127] According to an embodiment of step 180, the decoded azimuth angles φ dec,nis given by
[0128] φ dec,n = φ n * Δφ + φ
[0129] According to an embodiment of step 180, the decoded azimuth angle φ n is obtained based on the azimuth angle φ res,n , the base azimuth shift Δφ and the quantized residual azimuth angle φ dec,n .
[0130] According to an embodiment of step 180, the decoded azimuth angle φ dec,n is given by
[0131] φ dec,n = φ n * Δφ + φ res,n
[0132] According to an embodiment of step 180, the decoded azimuth angle φ dec,n is obtained based on the azimuth angle φ n , the base azimuth shift Δφ and the quantized residual azimuth angle φ res,n obtained by dequantizing the quantity given by equation 3. dec,res,n
[0133] According to an embodiment of step 180, the decoded azimuth angle φ dec,n is given by
[0134] φ dec,n = φ n * Δφ + φ dec,res,n
[0135] Optionally, in step 190, the decoded radius value r n is obtained based on the encoded radius value r dec,n .
[0136] According to an exemplary embodiment of step 190, the decoded radius value r dec,n is obtained by dequantizing the quantized radius value r n .
[0137] Figure 11 Fig. illustrates a block diagram of steps of a method 200 of decoding a point cloud from a bitstream representing encoded point cloud data of a physical object, according to at least one exemplary embodiment.
[0138] Decoding a point of the point cloud from the bitstream B requires information such as the number of points N of the point cloud, the order index o(P1) of the first point in the 2D coordinate (φ, λ) system, and sensor setup parameters such as the base azimuth shift Δφ or the elevation angle θkassociated with each sensor k k ). This information can also be decoded from the bitstream B or received by any other means or can be known a priori by the decoder.
[0139] N points of the point cloud are decoded recursively.
[0140] In step 210, at least one order index difference Δo n (n = 2 to N) is decoded from the bitstream B. n For the current point P n decoded.
[0141] In step 220, the order index o(P n ) of the current point P n is obtained by:
[0142] o(P n ) = o(P n-1 ) + Δo n
[0143] The order index difference Δo n represents the difference between the order index associated with the current point P n and another order index o(P n-1 ) associated with the previous decoded point P n-1 .
[0144] In step 230, a sensor index λ n associated with the sensor that captured the current point P n and an azimuth angle φ n representing a capture angle of said sensor are obtained from the order index o(P n ).
[0145] According to an exemplary embodiment of step 230, the sensor index λ n and the azimuth angle φ n are obtained from equations (1) and (2).
[0146] Optionally, in step 240, a decoded azimuth angle φ dec,n is obtained based on the azimuth angle φ n .
[0147] According to an embodiment of step 240, the decoded azimuth angle φ n is obtained based on the azimuth angle φ dec,n and a base azimuth shift Δφ.
[0148] According to an embodiment of step 240, the decoded azimuth angle φ dec,n is given by:
[0149] φ dec,n = φn * Δφ
[0150] According to an embodiment of step 240, the decoded azimuth angle φ dec,n is obtained based on a residual azimuth angle φ res,n decoded from the bitstream B.
[0151] According to an embodiment of step 240, the decoded azimuth angle φ dec,n is given by:
[0152] φ dec,n = φ n * Δφ + φ res,n
[0153] Optionally, in step 250, a radius value r n of the spherical coordinates of the current point P n is decoded from the bitstream B.
[0154] According to an exemplary embodiment of step 250, the radius value r n is dequantized to obtain a decoded radius value r dec,n .
[0155] According to an exemplary embodiment of step 250, the radius value r n is entropy decoded and dequantized to obtain a decoded radius value r dec,n .
[0156] Optionally, in step 260, a residual (x res,n , y res,n , z res,n ) of the three-dimensional Cartesian coordinates of the current point P n is decoded from the bitstream B.
[0157] According to an exemplary embodiment of step 260, the residual (x res,n , y res,n , z res,n ) is entropy decoded.
[0158] Optionally, in step 270, the three-dimensional Cartesian coordinates (x, y, z) of the current point P n are decoded based on the decoded residual (x res,n , y res,n , z res,n ) of the three-dimensional Cartesian coordinates, the radius value r n , the decoded azimuth angle φ dec,n , and the sensor index λ n of the current point P n .
[0159] According to an exemplary embodiment of step 270, the three-dimensional Cartesian coordinates (x, y, z) of the current point P nThe three-dimensional Cartesian coordinates (x, y, z) of the residual error are the sum of the estimated three-dimensional coordinates (x estim , y estim , z estim ) and the residual error (x dec,n , y n , z n ):
[0160]
[0161] According to an exemplary embodiment of step 270, the estimated coordinates (x estim , y estim ) associated with the current point P n are based on the azimuth angle φ n and the radius value r n .
[0162] According to an exemplary embodiment of step 270, the estimated coordinates (x estim , y estim ) are given by:
[0163]
[0164] According to another exemplary embodiment of step 270, the estimated coordinates (x estim,n , y estim,n ) are given by:
[0165]
[0166] where r dec,n is a decoded radius value obtained from the radius value r n . For example, the decoded radius value r dec,n may be obtained by dequantizing the radius value r n .
[0167] According to an exemplary embodiment of step 270, the estimated coordinate (z estim ) associated with the current point P n is based on the radius value r n associated with the current point P n and the elevation angle θ k of the sensor k that captured the current point P n .
[0168] According to an exemplary embodiment of step 270, the estimated coordinate (z estim ) is given by:
[0169] z estim = r n tan θ k
[0170] According to exemplary embodiments of step 270, the estimated coordinates (z estim ) are also based on the sensor index λ n .
[0171] According to exemplary embodiments of step 270, the estimated coordinates (z estim ) are given by:
[0172] z estim = r n tan θ λn
[0173] Figure 12 A schematic block diagram illustrating an example of a system in which various aspects and exemplary embodiments are implemented is shown.
[0174] System 300 can be embedded in one or more devices including various components described below. In various embodiments, system 300 can be configured to implement one or more aspects described in this application.
[0175] Examples of equipment in which all or part of system 300 can be constituted include a personal computer, a laptop computer, a smartphone, a tablet computer, a digital multimedia set-top box, a digital television receiver, a personal video recording system, a connected home appliance, a connected vehicle and its associated processing system, a head-mounted display device (HMD, see-through glasses), a projector (projector), a "cave" (a system comprising multiple displays), a server, a video encoder, a video decoder, a post-processor processing output from a video decoder, a pre-processor providing input to a video encoder, a web server, a set-top box, and any other device for processing point clouds, videos or images, or other communication devices. The elements of system 300 can be implemented individually or in combination in a single integrated circuit (IC), multiple ICs, and / or discrete components. For example, in at least one embodiment, the processing and encoder / decoder elements of system 300 can be distributed across multiple ICs and / or discrete components. In various embodiments, system 300 can be communicatively coupled to other similar systems or other electronic devices, via, for example, a communications bus or through dedicated input and / or output ports.
[0176] The system 300 can include at least one processor 310 configured to execute instructions therein to implement, for example, the various aspects described in this application. The processor 310 can include embedded memory, input output interface, and various other circuitries known in the art. The system 300 can include at least one memory 320 (e.g., a volatile memory device and / or a non-volatile memory device). The system 300 can include a storage device 340, which can include non-volatile memory and / or volatile memory including, but not limited to, Electrically Erasable Programmable Read-Only Memory (EEPROM), Read-Only Memory (ROM), Programmable Read-Only Memory (PROM), Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), flash, magnetic disk drive, and / or optical disk drive. By way of non-limiting example only, the storage device 340 can include an internal storage device, an attached storage device, and / or a network accessible storage device.
[0177] The system 300 can include an encoder / decoder module 330 configured, for example, to process data to provide encoded / decoded point cloud geometry data, and the encoder / decoder module 330 can include its own processor and memory. The encoder / decoder module 330 can represent the module(s) that can be included in a device to perform the encoding and / or decoding functions. As is known, a device can include one or both of the encoding and decoding modules. Also, the encoder / decoder module 330 can be implemented as a separate element of the system 300, or can be incorporated within the processor 310 as a combination of hardware and software as known to those skilled in the art.
[0178] The program code to be loaded onto the processor 310 or the encoder / decoder 330 to perform the various aspects described in this application can be stored in the storage device 340 and then loaded onto the memory 320 for execution by the processor 310. In accordance with various embodiments, one or more of the processor 310, the memory 320, the storage device 340, and the encoder / decoder module 330 can store one or more of various items during the execution of the processes described in this application. Such stored items can include, but are not limited to, point cloud frames, encoded / decoded geometry / attribute video / images or portions of encoded / decoded geometry / attribute video / images, bitstreams, matrices, variables, and intermediate or final results of equations, formulas, operations, and operation logic processing.
[0179] In several embodiments, the memory internal to the processor 310 and / or the encoder / decoder module 330 can be used to store instructions and provide working memory for processing that can be performed during encoding or decoding.
[0180] However, in other embodiments, memory external to the processing device (e.g., the processing device can be the processor 310 or the encoder / decoder module 330) is used for one or more of these functions. The external memory can be the memory 320 and / or the storage device 340, e.g., dynamic volatile memory and / or non-volatile flash memory. In several embodiments, external non-volatile flash memory is used to store the operating system of the television. In at least one embodiment, fast external dynamic volatile memory such as RAM can be used as working memory for video encoding and decoding operations, e.g., for MPEG-2 Part 2 (also known as ITU-T Recommendation H.262 and ISO / IEC 13818-2, also known as MPEG-2 Video), HEVC (High Efficiency Video Coding), VVC (Versatile Video Coding), or MPEG-I Part 5 or Part 9.
[0181] As indicated in block 390, input to elements of the system 300 can be provided through various input devices. Such input devices include, without limitation, (i) an RF portion that can receive RF signals transmitted, e.g., over the air by a broadcast facility, (ii) a composite input terminal, (iii) a USB input terminal, and / or (iv) an HDMI input terminal.
[0182] In various embodiments, the input devices of block 390 have associated respective input processing elements, as is known in the art. For example, the RF portion can be associated with elements necessary for (i) selecting a desired frequency (also referred to as selecting a signal, or limiting a signal band to be within a frequency band), (ii) downconverting the selected signal, (iii) limiting the frequency band again to a narrower frequency band to select a signal frequency band that can be referred to as a channel in certain embodiments, (iv) demodulating the downconverted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a desired stream of data packets. The RF portion of various embodiments can include one or more elements that perform these functions, e.g., a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a downconverter, a demodulator, an error corrector, and a demultiplexer. The RF portion can include a tuner that performs various of these functions, including, e.g., downconverting a received signal to a lower frequency (e.g., an intermediate frequency or a near-baseband frequency) or baseband.
[0183] In one set-top box embodiment, the RF portion and its associated input processing elements can receive RF signals transmitted on a wired (e.g., cable) medium. The RF portion can then perform frequency selection by filtering, downconverting, and filtering again to a desired frequency band.
[0184] Various embodiments rearrange the order of the above-described (and other) elements, remove some of these elements, and / or add other elements performing similar or different functionality.
[0185] Adding elements can include inserting elements between existing elements, such as, for example, inserting an amplifier and an analog-to-digital converter. In various embodiments, the RF portion includes an antenna.
[0186] Further, the USB and / or HDMI terminals can include respective interface processors for connecting the system 300 to other electronic devices through USB and / or HDMI connections. It will be appreciated that various aspects of input processing (e.g., Reed-Solomon error correction) can be implemented, for example, within a separate input processing IC or within the processor 310, as necessary. Similarly, various aspects of USB or HDMI interface processing can be implemented within a separate interface IC or within the processor 310, as necessary. The demodulated, error corrected, and demultiplexed streams can be provided to various processing elements, including, for example, the processor 310 and the encoder / decoder 330, which operate in conjunction with memory and storage elements to process the data streams, as necessary, for presentation on output devices.
[0187] Various elements of the system 300 can be provided within an integrated housing. Within the integrated housing, various elements can be interconnected and transmit data therebetween using suitable connection arrangements 390, for example, internal buses (including I2C buses), wiring, and printed circuit boards, as known in the art.
[0188] The system 300 can include a communication interface 350 that enables communication with other devices via a communication channel 700. The communication interface 350 can include, but is not limited to, a transceiver configured to transmit and receive data on the communication channel 700. The communication interface 350 can include, but is not limited to, a modem or network card, and the communication channel 700 can be implemented, for example, within wired and / or wireless media.
[0189] In various embodiments, data can be streamed to the system 300 using a Wi-Fi network, such as IEEE 802.11. The Wi-Fi signals of these embodiments can be received through the communication channel 700 and the communication interface 350 adapted for Wi-Fi communication. The communication channel 700 of these embodiments can typically be connected to an access point or router that provides access to external networks, including the Internet, to allow streaming applications and other Over-the-top communications.
[0190] Other embodiments can use a set-top box to provide streamed data to the system 300, with the set-top box delivering data through the HDMI connection of the input block 390.
[0191] Still other embodiments can use the RF connection of input block 390 to provide streamed data to system 300.
[0192] Streamed data can be used as a way of signaling information for use by system 300. Signaling information can include bitstream B and / or information such as the number of points of a point cloud, the coordinates of a first point in 2D coordinate (φ, λ) system or the order o(P1) and / or sensor setup parameters such as the base azimuth shift Δφ or elevation angle Θ k ) associated with a sensor of lidar head 10.
[0193] It should be appreciated that signaling can be implemented in a variety of ways. For example, in various embodiments, one or more syntax elements, flags, etc. can be used to signal information to a corresponding decoder.
[0194] System 300 can provide output signals to various output devices, including display 400, speakers 500, and other peripheral devices 600. In various examples of embodiments, other peripheral devices 600 can include one or more of a stand-alone DVR, a disc player, a stereo system, a lighting system, and other devices that provide functionality based on the output of system 300.
[0195] In various embodiments, control signals can be communicated between system 300 and display 400, speakers 500, or other peripheral devices 600 using signaling such as AV.Link (Audio / Video Link), CEC (Consumer Electronics Control), or other communication protocols that enable device-to-device control with or without user intervention.
[0196] Output devices can be communicatively coupled to system 300 via dedicated connections through respective interfaces 360, 370, and 380.
[0197] Alternatively, output devices can be connected to system 300 using communication channel 700 via communication interface 350. Display 400 and speakers 500 can be integrated with other components of system 300 in a single unit in an electronic device such as, for example, a television.
[0198] In various embodiments, display interface 360 can include a display driver such as, for example, a timing controller (TCon) chip.
[0199] Display 400 and speakers 500 can alternatively be separate from one or more of the other components, for example, if the RF portion of input 390 is part of a separate set-top box. In various embodiments in which display 400 and speakers 500 can be external components, output signals can be provided via dedicated output connections including, for example, HDMI ports, USB ports, or COMP outputs.
[0200] In Figures 1-12 Methods are described herein, and each method includes one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for proper operation of the method, the order and / or use of specific steps and / or actions can be modified or combined.
[0201] Some examples are described with respect to block and / or operational flow diagrams. Each block is representative of a circuit element, a module, or a portion of code which includes one or more executable instructions for implementing the specified logical function(s). It should also be noted that in other implementations, the function(s) noted in the blocks can occur out of the order noted. For example, two blocks shown in succession can in fact be executed substantially concurrently or the blocks can sometimes be executed in reverse order, depending on the functionality involved.
[0202] Implementations and aspects described herein can be implemented in, for example, a method or a process, an apparatus, a computer program a data stream, a bitstream, or a signal. Even if discussed in the context of only a single form of implementation (for example, only as a method), implementations of the features discussed can be realized in other forms (for example, an apparatus or a computer program).
[0203] Methods can be implemented in, for example, a processor, which generally refers to processing devices comprising, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices.
[0204] Further, methods can be implemented by instructions being performed by a processor, and such instructions (and / or data values produced by implementations) can be stored on a computer-readable storage medium. A computer-readable storage medium can take forms in which a computer-readable program code is embodied and has embodied thereon computer-readable program code executable by a computer. A computer-readable storage medium, as used herein, can be considered a non-transitory storage medium given the inherent capabilities of a computer-readable storage medium to store information and provide the information retrieved therefrom as a computer-readable program code. A computer-readable storage medium can be, for example, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. It should be recognized that the following, while providing more specific examples of computer-readable storage media to which the present embodiments can be applied, are merely illustrative and not exhaustive: a portable computer diskette; a hard disk; a read-only memory (ROM); an erasable programmable read-only memory (EPROM or flash memory); a portable compact disc read-only memory (CD-ROM); an optical storage device; a magnetic storage device; or any suitable combination of the foregoing.
[0205] The instructions can form an application program tangibly embodied on a processor-readable media.
[0206] For example, the instructions can be in hardware, firmware, software, or combinations thereof. The instructions can be found in operating system, in application, per process, in a combination of the two, among others. A processor can be characterized, therefore, as being a device configured to access a processor-readable medium containing instructions to perform a process. Depending on the embodiment, such a processor-readable medium can be non-transitory, volatile, nonvolatile, or a combination of media. Processor-readable media can include storage media and communication links, among others. For example, processor-readable media can include random access memory (RAM), read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electronically erasable programmable read-only memory (EEPROM), flash memory, compact disc read-only memory (CD-ROM), digital versatile disc (DVD), magnetic disks, optical disks, and other media, among others. Such instructions can also be executed by other devices such as, for example, by a field programmable gate array (FPGA) or by an application-specific integrated circuit (ASIC).
[0207] The apparatus can be implemented in, for example, appropriate hardware, software, and firmware. Examples of such apparatus include a personal computer, laptop computer, smartphone, tablet computer, digital multimedia set top box, digital television, personal video recording system, connected home appliance, head-mounted display device (HMD, see-through glasses), projector (front or rear projection), "cave" (system comprising multiple displays), server, video encoder, video decoder, post-processor of output from a video decoder, pre-processor of input for a video encoder, web server, set-top box, and any other device for processing a point cloud, a video or an image, or other communication devices. As should be clear, the equipment can be mobile and even installed in a mobile vehicle.
[0208] The computer software can be implemented by the processor 310 or by hardware, or by a combination of hardware and software. The embodiments can also be implemented by one or more integrated circuits, by way of non-limiting example. The memory 320 can be of any type appropriate for technical environments of the type described herein and can be implemented using any appropriate data storage technology, such as optical, magnetic, semiconductor-based, or any other storage technology. The processor 310 can be of any type appropriate for technical environments of the type described herein and can encompass one or more of microprocessors, general purpose computers, special purpose computers, and processors based on a multi-core architecture, as non-limiting examples.
[0209] As will be evident to one of ordinary skill in the art, implementations can produce a variety of signals formatted to carry information that can be, for example, stored or transmitted. The information can include, for example, instructions for performing a method, or data created by one of the described implementations. For example, a signal can be formatted to carry the bitstream of an embodiment described herein. Such a signal can be formatted, for example, as an electromagnetic wave (for example, using a radio frequency portion of spectrum) or a baseband signal. The formatting can include, for example, encoding a data stream and modulating a carrier with the encoded data stream. The information that the signal carries can be, for example, analog or digital information. The signal can be transmitted over a variety of different wired or wireless links, as is known. The signal can be stored on a processor-readable medium.
[0210] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the singular forms "a," "an," and "the" can be intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms "include," "comprise," and / or "comprising," when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof. Also, as used herein, when an element is referred to as being "responsive" or "connected" to another element, it can be directly responsive or connected to the other element, or indirectly responsive or connected to the other element through one or more other elements. In contrast, when an element is referred to as being "directly responsive" or "directly connected" to another element, it can not be indirectly responsive or connected to the other element through one or more other elements.
[0211] It should be recognized that the use of any of the symbols / terminology " / ", " and / or ", and " at least one of " in, for example, the cases of "A / B", "A and / or B", and "at least one of A and B" can be intended to encompass the selection of only the first listed option (A) or only the second listed option (B) or the selection of both options (A and B). As a further example, in the cases of "A, B, and / or C" and "at least one of A, B, and C", such phrasing is intended to encompass the selection of only the first listed option (A) or only the second listed option (B) or only the third listed option (C), or the selection of both the first and second listed options (A and B), or the selection of both the first and third listed options (A and C), or the selection of both the second and third listed options (B and C), or the selection of all three options (A and B and C). As will be apparent to one of ordinary skill in the art and relevant field(s), this can be extended to as many items as are listed.
[0212] Various numerical values can be used in this application. Particular values can be used for example purposes and the aspects described are not limited to these particular values.
[0213] It will be understood that, although the terms first, second, etc. can be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and, similarly, a second element could be termed a first element, without departing from the teachings of this application. No sequence is implied by the use of the terms first, second, etc.
[0214] Reference to“one example embodiment” or“an example embodiment” or“one implementation” or“an implementation” and other variations thereof, frequently appear in this application. These phrases are used to convey that a particular feature, structure, characteristic, etc. described in connection with an embodiment / implementation can be included in at least one embodiment / implementation. Thus, appearances of the phrases“in one example embodiment” or“in an example embodiment” or“in one implementation” or“in an implementation” and any other variations thereof, throughout this application do not necessarily all refer to the same embodiment.
[0215] Similarly, reference to“according to an example embodiment” or“in an example embodiment” or“in an example” and other variations thereof frequently appear in this application. These phrases are used to convey that a particular feature, structure, or characteristic described in connection with an example embodiment can be included in at least one example embodiment. Thus, appearances of the phrases“according to an example embodiment” or“in an example embodiment” throughout this specification do not necessarily all refer to the same example embodiment, and that an example embodiment / implementation need not necessarily be mutually exclusive of other example embodiments / implementations.
[0216] Reference signs appearing in the claims are only used to illustrate the application and do not limit the scope of the claims in any way. Embodiments / examples and variants can be employed in any combination or sub-combination, even if not explicitly described.
[0217] When a figure is presented as a flow diagram, it is understood that it also provides a block diagram of a corresponding apparatus. Similarly, when a figure is presented as a block diagram, it is understood that it also provides a flow diagram of a corresponding method / process.
[0218] While some figures include arrows on communication paths to demonstrate the primary direction of communication, it should be understood that communication can occur in the opposite direction of the depicted arrows.
[0219] Various implementations relate to decoding. As used in this application, “decoding” can encompass, for example, all or part of a process performed on a received point cloud frame (possibly including a received bitstream that encodes one or more point cloud frames) in order to produce a final output suitable for display or further processing in a reconstructed point cloud domain. In various embodiments, such a process includes one or more of the processes typically performed by a decoder. In various embodiments, such a process also or alternatively includes a process performed by a decoder of various implementations described in this application.
[0220] As further examples, in one embodiment “decoding” can refer only to dequantization, in one embodiment “decoding” can refer to entropy decoding, in another embodiment “decoding” can refer only to difference decoding, and in another embodiment “decoding” can refer to a combination of dequantization, entropy decoding, and difference decoding. Based on the particular context of the description, it will be clear whether the phrase “decoding process” is intended to refer specifically to a subset of operations or more generally to a broader decoding process, and it is believed to be well within the understanding of one of skill in the art.
[0221] Various implementations relate to encoding. Similar to the discussion above regarding “decoding,” “encoding” as used in this application can encompass, for example, all or part of a process performed on an input point cloud frame in order to produce an encoded bitstream. In various embodiments, such a process includes one or more of the processes typically performed by an encoder. In various embodiments, such a process also or alternatively includes a process performed by an encoder of various implementations described in this application.
[0222] As further examples, in one embodiment “encoding” can refer only to quantization, in one embodiment “encoding” can refer only to entropy encoding, in another embodiment “encoding” can refer only to difference encoding, and in another embodiment “encoding” can refer to a combination of quantization, difference encoding, and entropy encoding. Based on the particular context of the description, it will be clear whether the phrase “encoding process” is intended to refer specifically to a subset of operations or more generally to a broader encoding process, and it is believed to be well within the understanding of one of skill in the art.
[0223] Furthermore, this application can refer to “determining” various pieces of information. Determining the information can include one or more of, for example, estimating the information, calculating the information, predicting the information, or retrieving the information from memory.
[0224] In addition, this application can refer to “accessing” various pieces of information. Accessing the information can include one or more of, for example, receiving the information, retrieving the information (e.g., from memory), storing the information, moving the information, copying the information, calculating the information, determining the information, predicting the information, or estimating the information.
[0225] Moreover, the application can refer to "receiving" various pieces of information. Receiving is a broad term that, in the context of this application, can be taken to mean one or more of the following: for example, accessing information or retrieving information (for example, from memory). Additionally, in one way or another, generally involves "receiving" during, for example, operations such as: storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.
[0226] Also, as used herein, the word "signaling" refers to, among other things, indicating something or the like to a corresponding decoder. For example, in certain embodiments, an encoder signals certain information, such as the number of points of a point cloud or the coordinates of a first point in a 2D coordinate (φ, λ) system or the order o(P1) or sensor setup parameters (such as the basic azimuth shift Δφ or the elevation angle θk associated with sensor k k ). In this way, in embodiments, the same parameter can be used at the encoder side and the decoder side. Thus, for example, the encoder can transmit (explicit signaling) a certain parameter to the decoder so that the decoder can use the same certain parameter. Conversely, if the decoder already has the certain parameter as well as other parameters, then signaling can be used without transmission (implicit signaling) to simply allow the decoder to know and select the certain parameter. By avoiding transmission of any actual functionality, bit savings are achieved in various embodiments. It should be appreciated that signaling can be accomplished in a variety of ways. For example, in various embodiments, one or more syntax elements, flags, or the like are used to signal information to a corresponding decoder. While the foregoing involves the verb form of the word "signaling", the word "signaling" can also be used as a noun herein.
[0227] A number of implementations have been described. Nevertheless, it will be understood that various modifications can be made. For example, elements of different implementations can be combined, supplemented, modified, or removed to produce other implementations. Additionally, one of ordinary skill will understand that other structures and processes can be substituted for the disclosed structures and processes and that the resulting implementations will perform at least substantially the same function(s) in at least substantially the same way(s) to achieve at least substantially the same result(s) in at least substantially the same way(s). As a result, these and other implementations are contemplated by this application.
Claims
1. A method of encoding a point cloud into a bitstream of encoded point cloud data representing a physical object, wherein the method comprises: For each point in the point cloud, obtain (110) the sensor index (λ) associated with the sensor that captured the point. n ), representing the azimuth angle (φ) of the sensor's acquisition angle. n ); ordering (120) points of the point cloud based on the azimuth angle (f n ) and the sensor index (l n ); and At least one order index difference (Δo) n ) Encode (140) into the bitstream, the order index difference (Δo) n ) represents the order index of two consecutive ordered points (o(P) n The difference between )).
2. The method of claim 1, wherein the method further comprises encoding (150) a radius value (r n ) into the bitstream.
3. The method of claim 2, wherein the method further comprises encoding (160) in the bitstream residuals (x n , y dec,n , z n ) of the three-dimensional Cartesian coordinates of the ordered point based on the three-dimensional Cartesian coordinates of the ordered point, a decoded azimuth angle (φ dec,n ) obtained (180) from an azimuth angle (φ n ), a decoded radius value (r res,n ) obtained from a radius value (r res,n ), and based on a sensor index (λ res,n ).
4. The method of claim 3, wherein the decoded azimuth angle (φ dec,n ) is also obtained (180) from a residual azimuth angle (φ res,n ) associated with the ordered point, and wherein the method further comprises encoding (170) the residual azimuth angle (φ res,n ) in the bitstream.
5. A method of decoding a point cloud from a bitstream of encoded point cloud data representing a physical object, wherein the method comprises: decoding (210) at least one order index difference (Δo n ) from the bitstream, the order index difference (Δo n ) representing a difference between order indices (o(P n )) of two consecutive ordered points of the point cloud. and For each point of the point cloud, a sensor index (λ n ) and an azimuth angle (φ n ) representing a capture angle of the sensor capturing the point are obtained (230) from an order index (o(P n )) obtained from a decoded order index difference (Δo n ).
6. The method of claim 5, wherein the method further comprises decoding (250) a radius value (r from the bitstream and obtaining the decoded radius value (r from the radius value (r n ). n ). dec,n ).
7. The method of claim 6, wherein the method further comprises obtaining (240) decoded azimuth angles (φ dec,n ) based on their azimuth angles (φ n ) from the bitstream, decoding (260) residuals (x res,n , y res,n , z res,n ) of three-dimensional Cartesian coordinates of the ordered points from the bitstream based on their decoded radius values (r dec,n ) and based on their sensor indices (λ n ), and obtaining (270) decoded three-dimensional Cartesian coordinates (x n , y n , z n ) of the ordered points. 8. The method of claim 7, wherein the method further comprises decoding a residual azimuth angle (φ res,n ) from the bitstream, and wherein the decoded azimuth angle (φ res,n ) is further obtained (240) from the residual azimuth angle (φ dec,n ).
9. An apparatus of encoding a point cloud into a bitstream of encoded point cloud data representing a physical object, the apparatus comprising one or more processors configured to: for each point of the point cloud, obtain a sensor index associated with a sensor that captured the point, an azimuth angle representing a capture angle of the sensor; order points of the point cloud based on the azimuth angles and the sensor indices; and encode into the bitstream at least one order index difference representing a difference between order indices of two consecutive ordered points.
10. An apparatus of decoding a point cloud from a bitstream of encoded point cloud data representing a physical object, the apparatus comprising one or more processors configured to: decode from the bitstream at least one order index difference representing a difference between order indices of two consecutive ordered points of the point cloud; and for each point of the point cloud, obtain from the order indices obtained from the decoded order index difference a sensor index associated with a sensor that captured the point and an azimuth angle representing a capture angle of the sensor.
11. A computer program product comprising instructions which, when the program is executed by one or more processors, cause the one or more processors to carry out a method of encoding a point cloud into a bitstream of encoded point cloud data representing a physical object, the method comprising: for each point of the point cloud, obtaining a sensor index associated with a sensor that captured the point, an azimuth angle representing a capture angle of the sensor; ordering points of the point cloud based on the azimuth angles and the sensor indices; and encoding into the bitstream at least one order index difference representing a difference between order indices of two consecutive ordered points.
12. A non-transitory storage medium carrying instructions of program code for carrying out a method of encoding a point cloud into a bitstream of encoded point cloud data representing a physical object, the method comprising: for each point of the point cloud, obtaining a sensor index associated with a sensor that captured the point, an azimuth angle representing a capture angle of the sensor; ordering points of the point cloud based on the azimuth angles and the sensor indices; and encoding into the bitstream at least one order index difference representing a difference between order indices of two consecutive ordered points.
13. A computer program product comprising instructions which, when the program is executed by one or more processors, cause the one or more processors to carry out a method of decoding a point cloud from a bitstream of encoded point cloud data representing a physical object, the method comprising: decoding from the bitstream at least one order index difference representing a difference between order indices of two consecutive ordered points of the point cloud; and For each point of the point cloud, from the order index obtained from the decoded order index difference, a sensor index associated with a sensor that captured the point and an azimuth angle representative of a capture angle of the sensor are obtained.
14. A non-transitory storage medium carrying instructions of program code for performing a method of decoding a point cloud from a bitstream representing encoded point cloud data of a physical object, the method comprising: decoding from the bitstream at least one order index difference representative of a difference between order indexes of two consecutive ordered points of the point cloud; and For each point of the point cloud, from the order index obtained from the decoded order index difference, a sensor index associated with a sensor that captured the point and an azimuth angle representative of a capture angle of the sensor are obtained.
Citation Information
Patent Citations
Alignment of data captured by autonomous vehicle to generate high definition maps
CN110832279A
Method and device of processing point cloud data
CN110996098A