Method and apparatus for encoding / decoding point cloud geometry data captured by spin sensor head
By performing sensor indexing and azimuth encoding on the point cloud data captured by the spin sensor head, and utilizing the entropy encoding of the order index difference and radius value, the problem of efficient compression and low-latency transmission of sparse geometric data is solved, which is suitable for real-time decision-making in autonomous vehicles.
Patent Information
- Application Number
- CN202511511098.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2020-12-23
- Filing Date
- 2021-10-13
- Publication Date
- 2026-02-27
AI Technical Summary
Existing technologies have failed to effectively combine the simplicity of encoding and decoding, low latency, and compression performance in the compression of sparse geometric data captured by spin lidar, especially failing to meet the real-time decision-making requirements in autonomous vehicles.
By obtaining the sensor index and azimuth angle for each point in the point cloud, encoding is performed based on the order index difference and radius value. Entropy coding technology is used to achieve efficient compression, and the data is transmitted in a bit stream.
It achieves high compression levels while maintaining low latency, making it suitable for point cloud data transmission and decoding of spin sensor heads, and applicable to real-time decision-making in autonomous vehicles.
Smart Images

Figure CN121585833A_ABST
Abstract
Description
[0001] This application is a divisional application of application No. 202180086363.X, filed on October 13, 2021, with the title “Method and apparatus for encoding / decoding point cloud geometry data captured by a spin sensor head”. CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to European Patent Application No. EP20306672.5 filed on December 23, 2020, the contents of which are incorporated by reference in their entirety into the present disclosure. TECHNICAL FIELD
[0003] The present application relates generally to point cloud compression, and in particular to a method and apparatus for encoding / decoding point cloud geometry data captured by a spin sensor head. BACKGROUND
[0004] This section is intended to introduce the reader to various aspects of art that can be related to various aspects of at least one exemplary embodiment of the present application that is described and / or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present application. Accordingly, it should be understood that this section is merely intended to provide a brief overview of some aspects of the art and does not represent a
[0005] As a format of representation of 3D data, point clouds have recently gained attention as they have multiple capabilities in representing all types of physical objects or scenes. Point clouds can be used for various purposes, such as cultural heritage / buildings, where an object like a statue or a building is scanned in 3D in order to share the spatial configuration of the object without sending or accessing the object. Also, it is a way to ensure the preservation of the knowledge of an object in case it can be destroyed; for example, a temple destroyed by an earthquake. Such point clouds are typically static, colored and huge.
[0006] Another use case is in topology and cartography, where the use of 3D representation allows maps not to be limited to a plane and can include the landscape. Google Maps is now a good example of 3D maps, but uses a mesh 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 a hot topic and are foreseen by many as the future of 2D planar video. The basic idea is to immerse the viewer in the surrounding environment, whereas standard TV only allows the viewer to watch a virtual world in front of him / her. There are several levels of immersion depending on the degree of freedom of the viewer in the environment. Point clouds are a good candidate for distributing VR / AR worlds.
[0008] The automotive industry, especially foreseeable autonomous cars, is also a field where point clouds can be used in large quantities. Autonomous cars should be able to “probe” their environment in order to make good driving decisions based on the presence and nature of their closest nearby objects detected and the road configuration.
[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 usually called 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 called 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 for each 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 bit rate 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 (a.k.a. PCC) problem solved and no standardized point cloud codec available. In 2017, the standardization working group ISO / JCT1 / SC29 / WG11, also called Moving Picture Experts Group or MPEG, launched a work item on point cloud compression. This led to two standards, namely • MPEG-I Part 5 (ISO / IEC 23090-5) or Video-based Point Cloud Compression (V-PCC) • MPEG-I Part 9 (ISO / IEC 23090-9) or Geometry-based Point Cloud Compression (G-PCC) The 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 dealing with 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.
[0015] The G-PCC encoding method has two schemes for compressing captured sparse geometry data.
[0016] 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 nodes, stopping the tree construction when only isolated points exist in a node; this technique is called Direct Encoding Mode (DCM).
[0017] 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 one. 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.
[0018] 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 prediction between sub-volumes. This severely impacts the compression performance when using many slices.
[0019] Combining the requirements on encoder and decoder simplicity, low latency and compression performance remains an unsatisfactory solved problem for current point cloud codecs.
[0020] An important use case is the transmission of sparse geometry data captured by a spinning LiDAR mounted on a moving vehicle. This typically 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, 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 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.
[0021] Particular priors related to the sparse geometry data captured by a spinning LiDAR have been exploited in G-PCC and brought very significant compression gains.
[0022] First, G-PCC exploits the captured elevation angles (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 ( ), where 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 the sensor k of the LiDAR head with respect to a horizontal reference plane.
[0023] 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- ID 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, where I is the number of azimuth angles used to capture the points, 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 of each point.
[0024] This quasi-1D property has been exploited in the occupancy tree and the prediction tree in G-PCC by predicting the position of the current point based on the already encoded points in a spherical coordinate space by using the discrete nature of the angles.
[0025] More precisely, the occupancy tree heavily uses the DCM and entropy encodes the direct position of the points within the nodes by using a context adaptive entropy encoder. A local conversion from the point positions to angular coordinates (r ) and a context is obtained from the position of these angular coordinates with respect to the discrete angular coordinates (r ) obtained from the previously encoded points. Using the quasi-1D nature of this coordinate space (r 2D , ), the prediction tree directly encodes a first version of the point positions in angular coordinates (r 2D , ) where r 2D is the projected radius on the horizontal xy-plane as depicted in Figure 4 . Then, the angular coordinates (r 2D , ) are converted into 3D Cartesian coordinates (x, y, z) and the xyz residuals are encoded to account for the error of the coordinate conversion, the approximation of the elevation and azimuth angles and potential noise.
[0026] G-PCC does use angular priors to better compress the sparse geometry data captured by a spinning LiDAR, 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 child nodes; then the occupancy of each occupied child node is encoded indicating the occupied grandchild nodes; 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 encoding scheme(s). Regarding the prediction tree, the encoder has the freedom to 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.
[0027] In short, in the framework of a spinning sensor head for capturing sparse geometry data of a point cloud, the state of the art does not solve the problem of combining simplicity of encoding and decoding, low latency and compression performance.
[0028] At least one example embodiment of the present application has been designed taking the foregoing into account. SUMMARY
[0029] The following presents a simplified summary of at least one example embodiment in order to provide a basic understanding of some aspects of the application. This summary is not an extensive overview of the example embodiments. It is not intended to identify key or critical elements of the embodiments. The following summary merely presents some aspects of at least one example embodiment in a simplified form as a prelude to the more detailed description provided elsewhere in the document.
[0030] According to a first aspect of the present application, there is provided a method of encoding a point cloud into a bitstream representing an encoded point cloud data of 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 angle and the sensor index; 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.
[0031] According to an example embodiment, the method further comprises encoding a radius value into the bitstream.
[0032] According to an example 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.
[0033] According to an example 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.
[0034] The bitstream obtained in the present application can be quickly transmitted to obtain a low latency while obtaining a high level of compression.
[0035] According to an example embodiment, the method further comprises transmitting the bitstream to the cloud.
[0036] According to a second aspect of the present application, there is provided a method of decoding a point cloud from a bitstream representing an encoded point cloud data of 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 a sensor index associated with a sensor that captured the point and an azimuth angle representing a capture angle of said sensor from the order indices obtained from the decoded order index difference.
[0037] According to an example embodiment, the method further comprises decoding the radius values from the bitstream and obtaining the decoded radius values from the radius values.
[0038] According to an example embodiment, the method further comprises decoding the three-dimensional Cartesian coordinates of the ordered points from the bitstream based on their decoded azimuths obtained from the azimuths, based on their decoded radius values and based on their sensor indices and obtaining the decoded three-dimensional Cartesian coordinates of the ordered points.
[0039] According to an example embodiment, the method further comprises decoding the residual azimuths from the bitstream, and wherein the decoded azimuths are also obtained from the residual azimuths.
[0040] According to an example embodiment, the method further comprises obtaining the bitstream from a cloud.
[0041] 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.
[0042] 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.
[0043] 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.
[0044] 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.
[0045] 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.
[0046] 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.
[0047] 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.
[0048] 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
[0049] Reference will now be made to the drawings in which the exemplary embodiments of the application are shown. Like reference indicators can be used throughout the drawings and text to denote like components. Figure 1 illustrates a side view of a sensor head and some of its parameters according to the prior art; Figure 2 illustrates a top view of a sensor head and some of its parameters according to the prior art; Figure 3 illustrates a regular distribution of data captured by a spin sensor head according to the prior art; Figure 4 illustrates a representation of points in a 3D space according to the prior art; Figure 5 illustrates an encoding of a prediction tree according to the prior art; 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; Figure 7 illustrates an example of captured points represented in a 2D space according to one exemplary embodiment of the application; Figure 8 illustrates an example of encoded ordered points according to one exemplary embodiment of the application; Figure 9 illustrates an example of captured points according to one exemplary embodiment of the application; Figure 10 illustrates an example of ordered and quantized captured points according to one exemplary embodiment of the application; 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 Figure 12 illustrates a schematic block diagram of an example of a system in which various aspects and exemplary embodiments are implemented.
[0050] Similar reference indicators can have been used in different drawings to denote similar components. DETAILED DESCRIPTION
[0051] 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 denote like elements throughout the attached drawings. It will be understood that when an element or layer is referred to as being "on" another element or substrate, it can be directly on the element or substrate or intervening layers can also be present. Such a construction is also referred to herein as a "contact."
[0052] 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.
[0053] 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.
[0054] 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.
[0055] 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.
[0056] The geometry data of the point cloud, i.e. the 3D positions of the points of the point cloud, are captured by a spinning sensor head.
[0057] 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.
[0058] The captured 3D positions are represented in 2D coordinates as Figure 7 depicted in together with radius values or The coordinate is the azimuth angle of the spin of the sensor head, whose discrete values are represented as . The coordinate λIt is the sensor index, and its discrete values are represented as: .radius or It belongs to a continuous range of values.
[0059] 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 basic azimuth displacement. Multiples of, 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) is derived from...P5(t1) Figure 1 The five sensors of the lidar head 10 are in azimuth angle The probe detects five points P1(t2),..., P at the second capture time t2. k (t2),...P5(t2) is detected by the sensor of the lidar head 10 at the azimuth angle. + Probe, and so on. Therefore, discrete values It can be viewed as points P1(t1),…, P k Azimuth angles of (t1),… P5(t1) The quantized value; quantization is achieved through the quantization step size. Obtained. Similarly, discrete values. It can be viewed as points P1(t2),…, P k Azimuth angles of (t2),… P5(t2) The quantified value.
[0060] In step 110, for each point P in the point cloud n Obtain and capture point P n Sensor index associated with the sensor (In the set of sensor indexes, ), representing the azimuth angle of the sensor's acquisition angle. (In the set of discrete angles, ) and point P n The radius value r in spherical coordinates n For the sake of simplicity, and index They will be referred to as follows in the following text. and .therefore, Not the angle, but the direction of the angle. index i However, because of the index Azimuth angle associated with the standard There is a clear relationship between the two, so the quantity is still called the azimuth angle.
[0061] According to an exemplary embodiment of step 110, the sensor index and the azimuth angle are obtained by converting 3D Cartesian coordinates (x n ,y n ,z n ) representing the 3D position of the captured point P n . These 3D Cartesian coordinates (x n ,y n ,z n ) can be the output of the sensor head.
[0062] In step 120, the points of the point cloud are ordered based on the azimuth angle and the sensor index .
[0063] According to an exemplary embodiment of step 120, the points are ordered according to a lexicographic order first based on the azimuth angle and then based on the sensor index. Referring back to Figure 7 , the ordered captured points are P1(t1),..., P k (t1),... P5(t1), P1(t2),..., P k (t2),... P5(t2),..., P1(tn),..., P k (tn),... P5(tn).
[0064] The order index of a point P n is obtained by: *K+
[0065] According to an exemplary embodiment of step 120, the points are ordered according to a lexicographic order first based on the sensor index and then based on the azimuth angle.
[0066] The order index of a point P n is obtained by: +
[0067] In step 130, an order index difference P n-1 is computed for each pair of consecutive points P n representing the difference between the order indices of two consecutive points By the following formula: = -
[0068] Encoding the ordered points into the bitstream B can comprise encoding at least one order index difference . Optionally, it can also comprise encoding a radius value r n (in essence representing the distance between the point or ), a Cartesian residual of the three-dimensional Cartesian coordinates of the ordered point and an angular residual
[0069] The order index of the first point 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., , and encoding .
[0070] Given the order index of the first point and the order difference , the order index of any point can be reconstructed recursively by the following formula: = +
[0071] Then, the sensor index and the azimuth angle are obtained by the following formula: mod K(1) = / K(2) where the division / K is integer division (a.k.a. Euclidean division). Thus, and are alternative representations of and , respectively.
[0072] In step 140, the order indices associated with the ordered points are encoded in the bitstream B by encoding (N-1) order index differences , where N is the number of ordered points. Each order index difference represents the difference between the order indices associated with two consecutive ordered points. In Figure 8 , five ordered points (black circles) are represented: two points P nand P n+1 In time t1, the three points are captured at angles In time t2, the three points are captured at angles In time t2, the three points are captured at angles Assuming the coordinates of the first point P n are known in advance in a 2D coordinate ) system, the first order index difference is obtained as the difference between the order index n+1 associated with the point P and the order index n associated with the point P The second order index difference is obtained as the difference between the order index n+2 associated with another ordered point P and the order index n+1 associated with P and so on.
[0073] Ordering the captured points provides the interaction between points captured by different sensors of the spin sensor head. It is therefore required to encode a single code to encode those ordered points which results in a very simple and low latency encoding.
[0074] Reconstructing the points from the order index differences requires information such as the number of points N of the point cloud, the order index of the first point in a 2D coordinate ) system and sensor setup parameters such as the basic azimuth shift or elevation associated with each sensor. This information can also be encoded in the bitstream B or signaled by another means or can be known in advance by the decoder.
[0075] According to an exemplary embodiment of step 140, the order index differences are entropy encoded.
[0076] Optionally, the method further comprises encoding in the bitstream B, in step 150, the radius value r n。
[0077] According to an exemplary embodiment of step 150, the radius value r n is quantized.
[0078] According to an exemplary embodiment of step 150, the radius value r n is quantized.
[0079] According to an exemplary embodiment of step 150, the radius value r n is quantized and entropy encoded.
[0080] According to the exemplary embodiment of step 150, the radius value r n Indicates radius r 3D .
[0081] According to the exemplary embodiment of step 150, the radius value r n Indicates as Figure 4 The projected radius r on the horizontal xy plane depicted in the figure 2D .
[0082] Optionally, the method further includes, in step 160, determining their three-dimensional Cartesian coordinates (x... n ,y n ,z n ), based on decoding azimuth angle Based on radius value r n The obtained decoded radius value And based on sensor index Encoding ordered point P n The residuals of the three-dimensional Cartesian coordinates ( .
[0083] According to the exemplary embodiment of step 160, the residual ( It is the three-dimensional Cartesian coordinate (x, y) of a point in a point cloud. n ,y n ,z n ) and estimated three-dimensional coordinates ( The difference between them.
[0084] According to the exemplary embodiment of step 160, the residual ( It is given by the following formula:
[0085] According to the exemplary embodiment of step 160, with ordered point P n Associated estimated coordinates ( Based on point P n The associated decoding azimuth angle and the radius value r of the decoded value dec,n .
[0086] According to the exemplary embodiment of step 160, the residual ( Perform entropy encoding.
[0087] According to the exemplary embodiment of step 160, the estimated coordinates ( It is given by the following formula:
[0088] According to an exemplary embodiment of step 160, the estimated coordinates (Xest, Yest) associated with the ordered point (X, Y) are given by: based on the decoded radius value r associated with this point dec,n and the elevation angle of the sensor that captured this point .
[0089] According to an exemplary embodiment of step 160, the estimated coordinates (Xest, Yest) associated with the ordered point (X, Y) are given by: also based on the sensor index .
[0090] According to an exemplary embodiment of step 160, the estimated coordinates (Xest, Yest) associated with the ordered point (X, Y) are given by: by the following formula:
[0091] Optionally, the method further comprises, in step 170, encoding in the bitstream B a residual azimuth angle According to an exemplary embodiment of step 170, the azimuth angle is quantized by the following formula: round( ) where is the original azimuth angle of the point In this case, the set of discrete angles (0≤i<I) is essentially defined by =i* and one obtains .
[0092] The order index of the point is thus given by the following formula: *K+ = round( ) *K+
[0093] The residual azimuth angle is given by the following formula: = - (3) This exemplary embodiment of step 170 provides an advantage because sometimes in practice, not all points are captured at each capture time, because it is possible to capture noise 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 appear as depicted on Figure 9 The azimuth angle leading to a more easily discrete representation of points in a 2D coordinate ) system, as depicted above, it allows for a simpler path to order the points of a point cloud. Figure 10
[0094] residual azimuth angle is encoded into the bitstream B, preferably by quantization and / or entropy coding.
[0095] This exemplary embodiment of step 170 also reduces the dynamic of the angles to be encoded into the bitstream, as only residuals are encoded and not full range values. High compression performance is reached.
[0096] Optionally, the method further comprises, in step 180, obtaining a decoded azimuth angle from the encoded azimuth angle .
[0097] According to an embodiment of step 180, the decoded azimuth angle is given by the following equation:
[0098] According to an embodiment of step 180, the decoded azimuth angle is obtained from the azimuth angle , the base azimuth shift and the residual azimuth angle .
[0099] According to an embodiment of step 180, the decoded azimuth angle is given by the following equation: +
[0100] According to an embodiment of step 180, the decoded azimuth angle is obtained from the azimuth angle , the base azimuth shift and the decoded angle residual obtained by dequantizing the residual azimuth angle given by equation 3.
[0101] According to an embodiment of step 180, the decoded azimuth angle is given by the following equation:
[0102] Optionally, in step 190, a decoded radius value r n is obtained from the encoded radius value r dec,n .
[0103] 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 .
[0104] Figure 11 Fig. 2 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.
[0105] Decoding a point of the point cloud from the bitstream B requires information such as the number of points N of the point cloud, 2D coordinates (x, y) of the first point of the point cloud, and sensor setup parameters (such as a base azimuth shift or an elevation angle associated with each sensor k). This information can also be decoded from the bitstream B or received by any other means or can be known beforehand by the decoder. The N points of the point cloud are decoded recursively.
[0106] In step 210, at least one order index difference is decoded from the bitstream B. Each order index difference
[0107] is decoded for a current point P n . In step 220, the order index n of the current point P is obtained by:
[0108] = +
[0109] The order index difference represents the difference between the order index associated with the current point P n and another order index associated with the previous decoded point P n-1 .
[0110] In step 230, the sensor index associated with the sensor that captured the current point P n and the azimuth angle representing the capture angle of said sensor are obtained from the order index .
[0111] According to an exemplary embodiment of step 230, the sensor index and the azimuth angle are obtained from equations (1) and (2).
[0112] Optionally, in step 240, the decoded azimuth angle is obtained based on the azimuth angle .
[0113] According to an embodiment of step 240, the decoded azimuth angle is obtained based on the azimuth angle and a basic azimuth angle shift .
[0114] According to an embodiment of step 240, the decoded azimuth angle is given by:
[0115] According to an embodiment of step 240, the decoded azimuth angle is obtained based on a residual azimuth angle decoded from the bitstream B.
[0116] According to an embodiment of step 240, the decoded azimuth angle is given by:
[0117] 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.
[0118] According to an exemplary embodiment of step 250, the radius value r n is dequantized to obtain a decoded radius value .
[0119] According to an exemplary embodiment of step 250, the radius value r n is entropy decoded and dequantized to obtain a decoded radius value .
[0120] Optionally, in step 260, a residual ( of the three-dimensional Cartesian coordinates of the current point P n is decoded from the bitstream B.
[0121] According to an exemplary embodiment of step 260, the residual ( is entropy decoded.
[0122] Optionally, in step 270, based on the decoded residual ( of the three-dimensional Cartesian coordinates of the current point P n , the radius value r n , the decoded azimuth angle and the sensor index , the current point P nThe three-dimensional Cartesian coordinates (x, y, z) are decoded.
[0123] According to the exemplary embodiment of step 270, the current point P n The three-dimensional Cartesian coordinates (x, y, z) are the residuals ( and estimated three-dimensional coordinates ( sum:
[0124] According to the exemplary embodiment of step 270, with the current point P n Associated estimated coordinates ( Based on azimuth and radius value r n .
[0125] According to the exemplary embodiment of step 270, the estimated coordinates ( It is given by the following formula:
[0126] According to another exemplary embodiment of step 270, the estimated coordinates ( It is given by the following formula:
[0127] in From the radius value r n The obtained decoded radius value. For example, the decoded radius value. By adjusting the radius value r n We obtain it by dequantization.
[0128] According to the exemplary embodiment of step 270, with the current point P n Associated estimated coordinates ( Based on the current point P n The associated radius value r n And capture the current point P n The elevation angle of sensor k .
[0129] According to the exemplary embodiment of step 270, the estimated coordinates ( It is given by the following formula:
[0130] According to the exemplary embodiment of step 270, the estimated coordinates ( Also based on sensor index .
[0131] According to the exemplary embodiment of step 270, the estimated coordinates ( It is given by the following formula:
[0132] Figure 12 A schematic block diagram illustrating an example of a system in which various aspects and example embodiments are implemented is shown.
[0133] 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.
[0134] Examples of equipment that can make up all or part of system 300 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, video or images, or other communication devices. The elements of system 300 can be implemented in a single integrated circuit (IC), multiple ICs, and / or discrete components, individually or in combination. 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, for example, via a communications bus or through dedicated input and / or output ports.
[0135] System 300 can include at least one processor 310 configured to execute instructions loaded thereinto for implementing, for example, the various aspects described in this application. Processor 310 can include embedded memory, input output interface, and various other circuitry known in the art. System 300 can include at least one memory 320 (e.g., a volatile memory device and / or a non-volatile memory device). System 300 can include a storage device 340, which can include non-volatile 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 disks, and / or optical disks. Storage device 340 can include, for example, an internal storage device, an attached storage device, and / or a network accessible storage device, as non-limiting examples.
[0136] The system 300 can include an encoder / decoder module 330 that is 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 internally as a combination of hardware and software as known to those of skill in the art, within the processor 310.
[0137] 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 performance 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 arithmetic logic processing.
[0138] 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.
[0139] 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.
[0140] As indicated in block 390, input to elements of system 300 can be provided through various input devices. Such input devices include, but are not limited to, (i) an RF portion that can receive RF signals transmitted, for example, over the air by a broadcast device, (ii) a composite input terminal, (iii) a USB input terminal, and / or (iv) an HDMI input terminal.
[0141] 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 to (i) select a desired frequency (also referred to as selecting a signal, or band-limiting a signal to within a frequency band), (ii) down-convert the selected signal, (iii) band-limit the frequency band again to a narrower frequency band to select a signal frequency band that can be referred to as a channel, for example, in certain embodiments, (iv) demodulate the down-converted and band-limited signal, (v) perform error correction, and (vi) demultiplex 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 down-converter, a demodulator, an error corrector, and a demultiplexer. The RF portion can include a tuner that performs various of these functions, including, for example, down-converting a received signal to a lower frequency (e.g., an intermediate frequency or a near-baseband frequency) or baseband.
[0142] 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, down-converting, and filtering again to a desired frequency band.
[0143] Various embodiments rearrange the order of the above-described (and other) elements, remove some of these elements, and / or add other elements that perform similar or different functions.
[0144] 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.
[0145] 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 separate input processing ICs or within the processor 310, as necessary. Similarly, various aspects of USB or HDMI interface processing can be implemented within separate interface ICs 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.
[0146] Various elements of the system 300 can be provided within an integrated housing. Within the integrated housing, various elements can be interconnected and data transmitted therebetween using suitable connection arrangements 390, for example, internal buses (including I2C buses), wiring, and printed circuit boards, as known in the art.
[0147] 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.
[0148] 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.
[0149] Other embodiments can provide streamed data to the system 300 using a set-top box that delivers the data through the HDMI connection of the input block 390.
[0150] Still other embodiments can provide streamed data to the system 300 using the RF connection of the input block 390.
[0151] Streamed data can be used as a way of signaling information for use by the system 300. The signaling information can include bitstreams B and / or information, such as the number of points of a point cloud, 2D coordinates (x, y) of the points of a point cloud, and / or 3D coordinates (x, y, z) of the points of a point cloud. the coordinate or order of the first point in the system o(P1) and / or sensor setup parameters such as a basic azimuth shift associated with the sensor of the lidar head 10 or elevation ).
[0152] It should be recognized that signaling can be implemented in a variety of ways. For example, in various embodiments, one or more syntax elements, flags, and the like can be used to signal information to a corresponding decoder.
[0153] The system 300 can provide output signals to various output devices, including a display 400, speakers 500, and other peripheral devices 600. In various examples of embodiments, the 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 the system 300.
[0154] In various embodiments, control signals can be communicated between the system 300 and the 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.
[0155] The output devices can be communicatively coupled to the system 300 via dedicated connections through respective interfaces 360, 370, and 380.
[0156] Alternatively, the output devices can be connected to the system 300 using a communication channel 700 via the communication interface 350. The display 400 and speakers 500 can be integrated with other components of the system 300 in a single unit in an electronic device such as, for example, a television.
[0157] In various embodiments, the display interface 360 can include a display driver such as, for example, a timing controller (TCon) chip.
[0158] For example, if the RF portion of the input 390 is part of a separate set-top box, the display 400 and speakers 500 can alternatively be separate from one or more of the other components. In various embodiments in which the display 400 and speakers 500 can be external components, the output signals can be provided via dedicated output connections including, for example, HDMI ports, USB ports, or COMP outputs.
[0159] In Figures 1-12In general, the various embodiments can be implemented in hardware or special purpose circuits, software, logic or any combination thereof. For example, some aspects can be implemented in hardware, while other aspects can be implemented in software. In some embodiments, the various components and / or features can be implemented in the context of a computer product, such as a computer program product. The embodiments can be implemented using one or more computer program products, which can be implemented in a computer readable storage medium having stored, embodied and / or encoded thereon computer readable program code, such that when the computer readable program code is executed by a computer, the execution of the computer readable program code causes the computer to carry out one or more of the methods described herein.
[0160] Some examples are described with respect to block and / or operational flow diagrams. Each block is representative of a circuit element, module, or 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 order of the blocks can be modified, or the blocks can be combined, or additional blocks can be added, or some blocks can be eliminated, depending on the functionality involved.
[0161] Embodiments 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 only discussed in the context of a single form of implementation (for example, discussed only as a method), implementation of the features discussed can also be implemented in other forms (for example, an apparatus or computer program).
[0162] Methods can be implemented in, for example, a processor, which refers to processing devices in general, including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices, e.g., those having some processing capability.
[0163] Furthermore, the methods can be implemented by way of machine (for example, computer) executable instructions stored in a memory of a machine (for example, computer) which, when executed by the machine, cause the machine to perform methods described in connection with various embodiments. Such machine can provide output to an output device or devices, e.g., a display, an audio speaker, etc. Such machines can include, for example, a computer, a mobile device, a network server, etc. It will be appreciated that a "memory" of a machine can be embodied in a general purpose computer, in an application specific computer, in a computer processor, in a computer processor register, in a computer processor cache, in random access memory (RAM), in read only memory (ROM), in an integrated circuit, etc. It will also be appreciated that a "computer readable medium" can be any medium, or combination of media, that can be read by a machine (for example, a computer). Such media can include, for example, a floppy disk, a flexible disk, a hard disk, a solid state drive, a magnetic tape, a holographic medium, a punch card, a paper tape, a compact disc read only memory (CD-ROM), a compact disc - read / write (CD-R / W), an optical disc, a digital versatile disc (DVD), a Blu-ray disc, a memory stick, a memory card, a ROM, an erasable programmable read only memory (EPROM), an electrically erasable programmable read only memory (EEPROM), a secure digital (SD) card, a flash drive, a solid state drive, a magnetic storage device, an optical storage device, a cassette, a tape, etc. It will also be appreciated that a "computer program product" can be a computer program, which can be embodied in two different forms: (1) a machine executable code, which is directly executable by a machine, and (2) a computer readable medium having stored, embodied and / or encoded thereon a computer program, which is directly executable by a machine. It will be appreciated that a "computer program" can be a software routine, a set of instructions, a program, a computer program product, a software development toolkit, etc. It will also be appreciated that a "processor" can include a "processing device", which can include, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device.
[0164] The instructions can form an application program embodied on a processor-readable medium. The instructions can be written using any
[0165] For example, the instructions can be in hardware, firmware, software, or combinations thereof. The instructions can be found in operating system, in application, or in combination of the two. Thus, the processor can be characterized, for example, as being configured to perform a process in one example, the processor can be characterized, for example, as being configured to perform a process. In addition, the processor-readable medium can store a data value produced by an embodiment, in addition to or in place of the instructions.
[0166] 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 receiver, personal video recording system, connected home appliance, head-mounted display device (HMD, see-through glasses), projector (projector), "cave" (system comprising multiple displays), server, video encoder, video decoder, post-processor processing the output from a video decoder, pre-processor providing input to 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 device. As should be clear, the equipment can be mobile and even installed in a mobile vehicle.
[0167] 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 or semiconductor memory devices, as non-limiting examples. 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.
[0168] 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.
[0169] 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.
[0170] 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.
[0171] 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.
[0172] 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.
[0173] 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 conjunction with an embodiment / implementation) is 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 throughout this application do not necessarily all refer to the same embodiment.
[0174] 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 conjunction 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 application 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.
[0175] Reference signs appearing in the claims are used to illustrate the present application and are in no way limiting of the scope of the claims. Although not explicitly described, the present embodiments / examples and variants can be employed in any combination or sub-combination.
[0176] 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.
[0177] Although 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.
[0178] Various embodiments are directed 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 embodiments described in this application.
[0179] 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 specific 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.
[0180] Various embodiments are directed 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 embodiments described in this application.
[0181] 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 specific 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.
[0182] 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.
[0183] 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.
[0184] Moreover, the present application can refer to "receiving" various pieces of information. Receiving is a broad term that, in various embodiments, can refer to the act of accessing the information by, for example, reading the information from a storage medium, or retrieving the information (e.g., from memory). Additionally, one or the other, in various embodiments, generally involves "receiving" during, for example, one or more of: storing the information, processing the information, transmitting the information, moving the information, copying the information, erasing the information, calculating the information, determining the information, predicting the information, or estimating the information.
[0185] 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 2D coordinates ) of a first point or an order o(P1) or a sensor setup parameter (such as a basic azimuth shift or an elevation angle ) associated with a sensor 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 along with 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.
[0186] 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 those disclosed and 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) of those disclosed. Accordingly, these and other implementations are contemplated by this application.
Claims
1. A method for encoding point clouds into a bitstream of encoded point cloud data representing physical objects, wherein the method comprises: For each point in the point cloud, obtain (110) the sensor index associated with the sensor that captured the point. ), representing the azimuth angle of the sensor's acquisition angle ( ), wherein the azimuth angle ( ) and the sensor index ( This is used to sort the points in the point cloud; At least one order index difference ( ) Encode (140) into the bitstream, the order index difference ( ) represents the order index of two consecutive ordered points ( The difference between them.
2. The method as described in claim 1, characterized in that, The method also includes based on the azimuth angle ( ) and the sensor index ( Sort the points in the point cloud.
3. The method as described in claim 2, characterized in that, The order index of the ordered point Pn It is obtained through the following formula: *K+ , Where K is the number of sensors in the lidar head.
4. The method as described in claim 1, characterized in that, The order index difference Entropy encoding.
5. The method as described in claim 1, characterized in that, The azimuth angle It is based on the point The original azimuth angle and basic azimuth shift It is quantified.
6. The method as described in claim 5, characterized in that, The residual azimuth angles associated with ordered points are encoded in the bitstream. .
7. The method as described in claim 6, characterized in that, The residual azimuth angle Through quantization and / or entropy encoding.
8. The method as described in claim 7, characterized in that, The method also includes, based on azimuth angle Obtain the azimuth angle of the decoded image. .
9. The method as described in claim 8, characterized in that, The azimuth angle of the decoding Based on azimuth Basic azimuth shift And quantized residual azimuth Obtained through dequantization.
10. The method as described in claim 9, characterized in that, The decoded radius value rdec,n is obtained based on the encoded radius value rn.
11. A method for decoding a point cloud from a bitstream of encoded point cloud data representing a physical object, wherein the method comprises: Decode (210) at least one order index difference from the bitstream. The order index difference ( ) represents the order index of two consecutive ordered points in the point cloud. The difference between them; as well as For each point in the point cloud, the difference is determined by the order index of the decoded points ( The order index obtained in ) (230) obtains the sensor index associated with the sensor that captured the point. ) and the azimuth angle representing the acquisition angle of the sensor ( ).
12. The method as described in claim 11, characterized in that, The order index difference This represents the order index associated with the current point Pn and another order index associated with the previously decoded point Pn-1. The difference between them.
13. The method as described in claim 12, characterized in that, The sensor index and the azimuth angle It is obtained through the following formula: Modulo K; = / K, where K is the number of sensors in the LiDAR head, and division / K is integer division.
14. The method as described in claim 13, characterized in that, Based on the azimuth angle and basic azimuth shift Obtain the azimuth angle of the decoded image. .
15. The method as described in claim 14, characterized in that, The radius value rn is obtained by entropy decoding and dequantization from the bitstream. .
16. The method as described in claim 16, characterized in that, Decode the residual of the three-dimensional Cartesian coordinates of the current point Pn from the bitstream. .
17. The method as described in claim 17, characterized in that, For the residual ( Perform entropy decoding.
18. The method as described in claim 17, characterized in that, The residual of decoding based on the three-dimensional Cartesian coordinates of the current point Pn ( Radius value rn, decoded azimuth angle and sensor index Decode the three-dimensional Cartesian coordinates (x, y, z) of the current point Pn.
19. A method for encoding point clouds into a bitstream of encoded point cloud data representing physical objects, the method being applied to a system for encoding point clouds into a bitstream of encoded point cloud data representing physical objects, the method comprising: For each point in the point cloud, obtain (110) the sensor index associated with the sensor that captured the point. ), representing the azimuth angle of the sensor's acquisition angle ( ), wherein the azimuth angle ( ) and the sensor index ( This is used to sort the points in the point cloud; At least one order index difference ( ) Encode (140) into the bitstream, the order index difference ( ) represents the order index of two consecutive ordered points ( The difference between them.
20. A method for decoding a point cloud from a bitstream of encoded point cloud data representing a physical object, the method being applied to a system for decoding a point cloud from a bitstream of encoded point cloud data representing a physical object, the method comprising: Decode (210) at least one order index difference from the bitstream. The order index difference ( ) represents the order index of two consecutive ordered points in the point cloud. The difference between them; as well as For each point in the point cloud, the difference is determined by the order index of the decoded points ( The order index obtained in ) (230) obtains the sensor index associated with the sensor that captured the point. ) and the azimuth angle representing the acquisition angle of the sensor ( ).
21. An apparatus for encoding point clouds into a bit stream of encoded point cloud data representing physical objects, the apparatus comprising one or more processors configured to: For each point in the point cloud, obtain the sensor index associated with the sensor that captured the point, and the azimuth angle representing the capture angle of the sensor, wherein, The azimuth angle and the sensor index are used to sort the points in the point cloud; At least one order index difference is encoded into the bit stream, the order index difference representing the difference between the order indices of two consecutive ordered points.
22. An apparatus for 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 at least one order index difference from the bitstream, the order index difference representing the difference between the order indices of two consecutive ordered points in the point cloud; and For each point in the point cloud, the sensor index associated with the sensor that captured the point and the azimuth angle representing the capture angle of the sensor are obtained from the order index obtained by the order index difference obtained by decoding.
23. A system for encoding point clouds into a bitstream of encoded point cloud data representing physical objects, wherein the system includes an encoder module, the encoder module being configured to: For each point in the point cloud, obtain (110) the sensor index associated with the sensor that captured the point. ), representing the azimuth angle of the sensor's acquisition angle ( ),in, The azimuth angle ( ) and the sensor index ( This is used to sort the points in the point cloud; At least one order index difference ( ) Encode (140) into the bitstream, the order index difference ( ) represents the order index of two consecutive ordered points ( The difference between them.
24. A system for decoding a point cloud from a bitstream of encoded point cloud data representing a physical object, wherein the system includes a decoder module configured to: Decode (210) at least one order index difference from the bitstream. The order index difference ( ) represents the order index of two consecutive ordered points in the point cloud. The difference between ) and ; and For each point in the point cloud, the difference is determined by the order index of the decoded points ( The order index obtained in ) (230) obtains the sensor index associated with the sensor that captured the point. ) and the azimuth angle representing the acquisition angle of the sensor ( ).
25. A computer program product including instructions, which, when executed by one or more processors, cause the one or more processors to perform a method of encoding point clouds into a bitstream of encoded point cloud data representing physical objects, the method comprising: For each point in the point cloud, obtain the sensor index associated with the sensor that captured the point and the azimuth angle representing the capture angle of the sensor, wherein the azimuth angle and the sensor index are used to sort the points in the point cloud; At least one order index difference is encoded into the bit stream, the order index difference representing the difference between the order indices of two consecutive ordered points.
26. A non-transitory storage medium carrying instructions for program code to perform a method of encoding point cloud data into a bit stream of encoded point cloud data representing physical objects, the method comprising: For each point in the point cloud, obtain the sensor index associated with the sensor that captured the point and the azimuth angle representing the capture angle of the sensor, wherein the azimuth angle and the sensor index are used to sort the points in the point cloud; At least one order index difference is encoded into the bit stream, the order index difference representing the difference between the order indices of two consecutive ordered points.
27. A computer program product including instructions, which, when executed by one or more processors, cause the one or more processors to perform a method for decoding a point cloud from a bitstream of encoded point cloud data representing a physical object, the method comprising: Decode at least one order index difference from the bit stream, the order index difference representing the difference between the order indices of two consecutive ordered points in the point cloud; as well as For each point in the point cloud, the sensor index associated with the sensor that captured the point and the azimuth angle representing the capture angle of the sensor are obtained from the order index obtained by the order index difference obtained by decoding.
28. A non-transitory storage medium carrying instructions for program code to perform a method of decoding a point cloud from a bitstream of encoded point cloud data representing a physical object, the method comprising: Decode at least one order index difference from the bit stream, the order index difference representing the difference between the order indices of two consecutive ordered points in the point cloud; as well as For each point in the point cloud, the sensor index associated with the sensor that captured the point and the azimuth angle representing the capture angle of the sensor are obtained from the order index obtained by the order index difference obtained by decoding.