Method and apparatus for encoding / decoding point cloud captured by a rotating sensor head
By sorting and entropy encoding the point cloud data captured by the rotating sensor head, the complexity and latency issues of encoding and decoding in existing technologies are solved, achieving efficient point cloud data compression and real-time transmission, which is suitable for data processing in autonomous vehicles.
Patent Information
- Application Number
- CN202280046412.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-07-02
- Filing Date
- 2022-04-20
- Publication Date
- 2025-11-07
- Estimated Expiration
- 2042-04-20
AI Technical Summary
Existing technologies cannot effectively combine the simplicity of encoding and decoding, low latency, and compression performance, especially when rotating sensor heads capture sparse geometric data, making it difficult to meet the real-time data transmission requirements of autonomous vehicles.
By sorting the point cloud data captured by the rotating sensor head, and utilizing the sensor index and azimuth encoding to replicate the number of points and the difference in the order index, combined with entropy encoding and context-adaptive arithmetic encoding, efficient encoding and decoding of point clouds can be achieved.
A simple and low-latency encoding process was implemented, which improved the compression performance of point cloud data and is suitable for real-time transmission and processing of sparse geometric data captured by rotating sensor heads.
Smart Images

Figure CN117693769B_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The present application relates generally to methods and apparatuses for encoding / decoding point clouds captured by a rotating sensor head. BACKGROUND
[0002] 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 intended to provide information that can be of benefit in understanding the various aspects of the present application. Thus, it should be understood that the discussion below is but an introduction to the aspects described and / or claimed below.
[0003] As a format for the representation of 3D data, point clouds have recently gained attention as they are generic in their ability to represent 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 3D scanned in order to share the spatial configuration of the object without having to export or access it. Moreover, this is a way to ensure the preservation of the knowledge of an object in case it can be destroyed; for example, a temple in an earthquake. Such point clouds are typically static, colored and huge.
[0004] Another use case is in topography and cartography, where the use of 3D representations allows to not be limited to a plane and can include a relief map. Google Maps is now a good example of a 3D map, but it 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.
[0005] 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, in contrast to standard TV which only allows the viewer to watch a virtual world in front of him / her. Immersion has several levels, depending on the degree of freedom the viewer has in the environment. Point clouds are a good candidate for a format to distribute VR / AR worlds.
[0006] The automotive industry and more particularly the foreseeable self-driving cars are also a domain where point clouds can be widely used. Self-driving cars should be able to "probe" their environment to make good driving decisions based on the presence and nature of the objects and road configuration they detect in their vicinity.
[0007] A point cloud is a set 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 a three-component color, a material attribute like reflectance and / or a two-component normal vector of the surface associated with the point.
[0008] 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.
[0009] Point clouds can be captured by various types of devices, like camera arrays, depth sensors, lasers (light detection and ranging, also known as Lidar, LIDAR), radars, or can be computer generated (e.g. in movie post-production). Depending on the use case, point clouds can have from thousands up to billions of points for mapping applications. The raw representation of a point cloud requires very high number of bits per point, with at least a dozen of bits per Cartesian coordinate x, y or z, and optionally, more bits for the attribute(s), e.g. 10 bits for color, three times more.
[0010] 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. For the distribution chain of many immersive worlds to be practical, efficient compression of these point clouds is a key point.
[0011] Compression can be lossy (as in video compression) for example on AR / VR glasses or any other device with 3D capabilities, for distribution to and visualization by end users. Other use cases do require lossless compression, like medical applications or autonomous driving, to avoid altering the outcome of decisions taken from subsequent analysis of the compressed and transmitted point clouds.
[0012] Until recently, point cloud compression (aka PCC) has not been addressed by the mass market and no standardized point cloud codec was available. In 2017, the standardization working group ISO / JCT1 / SC29 / WG11 (also known as Moving Picture Experts Group or MPEG) has started a work item on point cloud compression. This resulted in two standards, namely
[0013] MPEG-I Part 5 (ISO / IEC 23090-5) or Video-based Point Cloud Compression (V-PCC)
[0014] MPEG-I Part 9 (ISO / IEC 23090-9) or Geometry-based Point Cloud Compression (G-PCC)
[0015] The V-PCC encoding method compresses the point cloud by performing multiple projections of the 3D object to obtain 2D patches 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 patches as would be obtained from the projection of sparse geometry data captured for example from a lidar.
[0016] The G-PCC encoding method has two schemes for compressing the captured sparse geometry data.
[0017] 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 subdivided down until a certain size is reached and the occupied leaf nodes provide the 3D positions of the points, typically at the center of these nodes. The occupancy information is carried by occupancy flags signaling the occupancy status of each child node of a node. By using neighbor-based prediction techniques, a high level compression of the occupancy flags can be obtained for dense point clouds. Sparse point clouds are also addressed by directly encoding the positions of the points within nodes of non-minimal size, by stopping the tree construction when only isolated points exist in a node; this technique is called Direct Encoding Mode (DCM).
[0018] 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 low latency and simple decoding compared to 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 centrally find the best prediction value (among a long list of potential prediction values) while constructing the prediction tree.
[0019] In both schemes, attribute encoding (decoding) is performed after the full geometry encoding (decoding), thus actually resulting in two passes of encoding (decoding). 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. When using many slices, this can severely impact the compression performance.
[0020] Combining the requirements of encoder and decoder simplicity, low latency and compression performance remains a problem that is not satisfactorily addressed by existing point cloud codecs.
[0021] An important use case is the transmission of sparse geometry data captured by a rotating sensor (Lidar) head mounted on a moving vehicle. This typically requires a simple and low-latency on-board encoder. Simplicity is required because the encoder can be deployed on a computing unit that performs other processing in parallel, 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 obtain a real-time view of the local traffic based on multi-vehicle acquisition, and to make appropriate fast decisions based on traffic information. 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 extremely large.
[0022] Particular priors related to the sparse geometry data captured by a rotating sensor have been exploited in G-PCC and have led to very significant compression gains.
[0023] First, G-PCC exploits the elevation angle (with respect to the horizontal ground) from which the rotating sensor head is captured, as depicted in Figure 1 and Figure 2 The rotating sensor head 10 comprises a set of sensors 11, five sensors are represented here. The rotating sensor head 10 can rotate around a vertical axis z to capture geometry data of a physical object. The geometry data captured by the sensors is then represented in spherical coordinates (r 3D , φ, θ), where r 3D is the distance of a point P n from the center of the rotating sensor head, φ is the azimuth angle of the rotation of the rotating sensor head with respect to a reference (e.g. the longitudinal axis of the rotating sensor head), and θ is the elevation angle of the sensor k of the rotating sensor head with respect to a horizontal reference plane (e.g. the plane perpendicular to the axis z).
[0024] A regular distribution along the azimuth angle has been observed on the data captured by a rotating sensor, as depicted in Figure 3 This regularity is used in G-PCC to obtain a quasi-1D representation of the point cloud, where, up to noise, only the radius r3D belongs to a continuous range of values, while the angles φ and θ take only a discrete number of values to I - 1, where I is the number of azimuth angles used to capture the points, and to K - 1, where K is the number of sensors of the rotating sensor head 10. Basically, G-PCC represents the sparse geometry data captured by a rotating sensor on a 2D discrete angular plane (φ, θ), as depicted in Figure 3 and the radius value r 3D for each point.
[0025] This quasi-1D property has been exploited in G-PCC in both occupancy tree and prediction tree by using the discrete nature of the angles to predict the position of the current point based on already encoded points in the spherical coordinate space.
[0026] More precisely, the occupancy tree uses centrally the DCM and entropy encodes the direct position of the in-node points by using a context adaptive entropy encoder. Then, a local conversion from the point position to angular coordinates (f, 0) and a position from these angular coordinates relative to the discrete angular coordinates (f i ,θ k ) obtained from previously encoded points are used to obtain a context. The prediction tree directly encodes a first version of the point position in the spherical coordinates (r 2D , f, 0) where the quasi-1D property of this coordinate space (r 2D , f i , 0 k ) is used, r 2D being the projected radius on the horizontal xy plane as depicted in Figure 4 . Then, the spherical coordinates (r 2D , f, 0) are converted into 3D Cartesian coordinates (x, y, z) and the xyz residual is encoded to account for the error of the coordinate conversion, the approximation of the elevation and azimuth angles and potential noise.
[0027] G-PCC does use angular priors to better compress the sparse geometry data captured by a rotating sensor but does not adapt the encoding structure to the order of the capture. By its nature, the occupancy tree has to be encoded down 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 for each occupied child node is encoded indicating the occupied grandchild nodes; and so on, repeating over the depth of the tree 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 is free to choose the order of the points in the tree but to get good compression performance to optimize the prediction accuracy, G-PCC proposes to encode one tree per sensor as depicted in Figure 5 . This has mainly the same drawbacks as using one encoding slice per sensor, i.e. non-optimal compression performance because no prediction between sensors is allowed and no low latency for the encoder is provided. Worse, one encoding process per sensor should be had and the number of core encoding units should be equal to the number of sensing sensors; this is not practical.
[0028] In short, in the framework of a rotating sensor head for capturing sparse geometry data of a point cloud, the prior art does not solve the problem of combining encoding and decoding simplicity, low latency and compression performance.
[0029] In view of the foregoing, at least one example embodiment of the present application has been devised. SUMMARY
[0030] 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 the example embodiments in a simplified form as a prelude to the more detailed description provided elsewhere in the document.
[0031] According to a first aspect of the present application, there is provided a method of encoding a point cloud captured by a set of sensors into a bitstream of encoded point cloud data. The method comprises: a) for a point of the point cloud, obtaining a sensor index associated with a sensor that captured the point, an azimuth angle representative of a capture angle of said sensor, each captured point being represented by a point in a 2D discrete angular plane in which said sensor index is a coordinate of a first axis of the 2D discrete angular plane and said azimuth angle is a coordinate of a second axis of the 2D discrete angular plane; b) obtaining an ordered point list of the point cloud by ordering the points according to a lexicographic order by first based on the azimuth angle and then based on the sensor index or conversely, an order index being associated with each point of the point cloud according to a rank of said point in the ordered point list; c) obtaining a next point in the ordered point list after a current point and having an order index different from the order index of the current point, and obtaining a number of replicated points equal to a number of points after the current point having an order index equal to the order index of the current point; d) encoding the number of replicated points in the bitstream; e) obtaining and encoding in the bitstream an order index difference representative of a difference between the order index of the next point and the order index of the current point; f) updating the current point by considering the next point as a new current point; and repeating steps c), d), e) and f) until all points in the ordered point list have been considered.
[0032] In one example embodiment, encoding the number of replicated points comprises: binarizing the number of replicated points into a series of binary data whose number is lower than or equal to a maximum bound; and entropy encoding each binary data of the series of binary data.
[0033] According to a second aspect of the application, there is provided a method of decoding a point cloud captured by a set of sensors from a bitstream of encoded point cloud data. The method comprises: a) decoding from the bitstream information representative of a number of duplicate points associated with a current point of the point cloud that has been decoded; b) reconstructing a number of duplicate points equal to the decoded number of duplicate points, each duplicate point having a same azimuth angle equal to an azimuth angle of the said current point that has been decoded and a sensor index equal to a sensor index of the said current point that has been decoded; c) decoding from the bitstream an order index difference for a next point, the next point having an order index different from an order index of the current point that has been decoded, the order index being associated with a point of the point cloud according to a rank of the point in an ordered point list obtained by first ordering the points of the point cloud according to a dictionary order based on the azimuth angle and then on the sensor index associated with the points of the point cloud or conversely; d) obtaining the order index for the next point from the decoded order index difference and the order index of the current point that has been decoded; e) obtaining from the order index of the next point a sensor index associated with a sensor that captured the next point and an azimuth angle representative of a capturing angle of the said sensor; updating the current point that has been decoded by considering the next point as a new current point that has been decoded, and repeating steps a) to e) until all information representative of a number associated with a current point of the point cloud that has been decoded is decoded.
[0034] In some example embodiments, decoding the number of duplicate points comprises entropy decoding each binary data of a series of binary data whose number is lower than or equal to the maximum bound; and obtaining the number of duplicate points by unary decoding at least one decoded binary data of the series of binary data.
[0035] In one example embodiment, each binary data is context-adaptive arithmetically encoded / decoded such that a context used for encoding / decoding the binary data depends on the sensor index associated with the current point / the current point that has been decoded.
[0036] In one example embodiment, encoding / decoding the number of duplicate points (Ndup n ) further comprises encoding / decoding a residual obtained as a difference between the number of duplicate points (Ndup n ) and the maximum bound.
[0037] In one example embodiment, encoding / decoding the residual comprises using an exponential Golomb code.
[0038] In one example embodiment, the method further comprises encoding / decoding in / from the bitstream a binary information indicating whether the duplicate points of the current point / the current point that has been decoded have the same three-dimensional coordinates.
[0039] According to a third aspect of this application, an apparatus is provided for encoding point clouds captured by a set of sensors into a bitstream of encoded point cloud data. The apparatus includes one or more processors configured to perform the method according to the first aspect of this application.
[0040] According to a fourth aspect of this application, an apparatus is provided for decoding a point cloud captured by a set of sensors from a bitstream of encoded point cloud data. The apparatus includes one or more processors configured to perform the method according to a second aspect of this application.
[0041] According to a fifth aspect of this application, a bitstream of encoded point cloud data captured by a set of sensors is provided, wherein the bitstream includes at least one syntax element carrying at least one piece of information representing the number of duplicate points associated with a decoded current point of the point cloud.
[0042] According to a sixth aspect of this application, a computer program product including instructions is provided, which, when executed by one or more processors, cause the one or more processors to perform the method according to the first aspect of this application.
[0043] According to a seventh aspect of this application, a non-transitory storage medium is provided that carries instructions for performing the method according to a first aspect of this application.
[0044] According to an eighth aspect of this application, a computer program product including instructions is provided, which, when executed by one or more processors, cause the one or more processors to perform the method according to a second aspect of this application.
[0045] According to a ninth aspect of this application, a non-transitory storage medium is provided that carries instructions for performing the method according to a second aspect of this application.
[0046] The specific properties of at least one of the exemplary embodiments, as well as other objects, advantages, features, and uses of said at least one of the exemplary embodiments, will become apparent from the following description of the examples taken in conjunction with the accompanying drawings. Attached Figure Description
[0047] Reference will now be made to the accompanying drawings, which illustrate exemplary embodiments of this application, wherein:
[0048] Figure 1 The illustration shows a side view of a sensor head according to the prior art and some of its parameters;
[0049] Figure 2 The illustration shows a top view of a sensor head according to the prior art and some of its parameters;
[0050] Figure 3 a regular distribution of data captured by a rotating sensor head is illustrated according to the prior art;
[0051] Figure 4 a representation of points in a 3D space is illustrated according to the prior art;
[0052] Figure 5 encoding of a prediction tree is illustrated according to the prior art;
[0053] Figure 6 a block diagram illustrating steps of a method 100 of encoding a point cloud into a bitstream of encoded point cloud data according to at least one example embodiment is shown;
[0054] Figure 7 an example of ordered captured points represented in a 2D space according to one example embodiment is shown;
[0055] Figure 8 another example of ordered captured points represented in a 2D space according to one example embodiment is shown;
[0056] Figure 9 an example of captured points according to one example embodiment is shown;
[0057] Figure 10 an example of ordered and quantized captured points according to one example embodiment is shown;
[0058] Figure 11 a block diagram illustrating steps of a method 200 of decoding a point cloud from a bitstream of encoded point cloud data according to at least one example embodiment is shown;
[0059] Figure 12 a block diagram illustrating steps of a method 300 of entropy encoding a plurality of replicated points according to at least one example embodiment is shown;
[0060] Figure 13 a block diagram illustrating steps of a method 400 of entropy encoding a sequential index difference according to at least one example embodiment is shown;
[0061] Figure 14 a block diagram of a context adaptive arithmetic encoder according to at least one example embodiment is shown;
[0062] Figure 15 a block diagram illustrating steps of a method 500 of entropy decoding a plurality of replicated points according to at least one example embodiment is shown;
[0063] Figure 16 a block diagram illustrating steps of a method 600 of entropy decoding a sequential index difference according to at least one example embodiment is shown; and
[0064] Figure 17 FIGURE 1 illustrates a schematic block diagram of an example of a system in which various aspects and exemplary embodiments are implemented.
[0065] Similar reference characters denote like elements throughout the attached drawings. The drawings are intended to facilitate understanding of various examples of at least one of the exemplary embodiments. In the drawings: DETAILED DESCRIPTION
[0066] The exemplary embodiments are described herein with reference to the accompanying drawings, in which at least one of the exemplary embodiments is illustrated. However, the exemplary embodiments can be embodied in many different forms and should not be construed as being limited to the examples set forth herein. Rather, the exemplary embodiments are provided as examples so that this disclosure will be thorough and complete, and will fully convey the scope of the exemplary embodiments to those skilled in the art. Accordingly, the exemplary embodiments are not intended to be limited to the particular forms set forth herein, but should be understood to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present application.
[0067] When the drawings are presented as flowcharts, it should be understood that each block in the flowchart also represents a block of computer code that can be executed. Similarly, when the drawings are presented as a block diagram, it should be understood that each block in the block diagram also represents a flowchart of a corresponding method / algorithm.
[0068] At least one of the aspects generally relates to point cloud encoding and decoding, and at least one other aspect generally relates to transmitting generated or encoded bitstreams.
[0069] Furthermore, the present aspects are not limited to MPEG standards related to point cloud compression, such as MPEG-1 Part 5 or Part 9, 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-1 Part 5 and Part 9. The aspects described in this application can be used independently or in combination, unless otherwise indicated or technically precluded.
[0070] Figure 6 FIGURE 2 illustrates a block diagram of steps of a method 200 of decoding a bitstream of encoded point cloud data into a point cloud, according to at least one exemplary embodiment.
[0071] The geometry data of the point cloud (i.e., the 3D positions of the points of the point cloud) is captured by a rotating sensor head.
[0072] The rotating sensor head can be a rotating sensor head 10 comprising a plurality of sensors as explained above. The scope of the present disclosure is not limited to a particular sensor and can be applied to any rotating sensor head capable of rotating around an axis and capturing 3D position points for each capture angle. The sensors can be cameras, depth sensors, lasers, lidars, or scanners.
[0073] As Figure 4The captured 3D position is depicted and represented in angular coordinates (φ, λ), along with a radius value r. 2D or r 3D The coordinate φ is the azimuth angle of the sensor head's rotation, and its discrete value is represented 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 rotation (rotation) of the rotating sensor head 10 and continuous acquisition at fixed time intervals, the azimuth distance between two points detected by the same sensor is a multiple of the basic azimuth offset Δφ, such as... Figure 7 The description. Then, for example, at the first capture time t1, five points P1(t1), ..., P... k (t1), ..., P5(t1) are... Figure 1 The five sensors of the rotating sensor head 10 detect at an azimuth angle φ1, at the second acquisition time t2, at five points P1(t2), ..., P k P(t2), ..., P5(t2) are detected by the sensor of the rotating sensor 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 through a quantization step size Δφ. Similarly, the discrete value φ2 can be considered as the azimuth angle φ of 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 a set of sensor index λ) k ( In K-1), φ represents the azimuth angle φ of the sensor's acquisition angle. i(n) (in a 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 the index i (t) of the point P n (t) is the azimuth angle associated with the normal N n (t). However, because there is a clear relationship between the azimuth angle n and the normal N associated with the normal N n , the quantity n is still referred to as the azimuth angle.
[0076] Each captured point P n (t) can be represented by a point in a 2D discrete angular plane as depicted in FIG. 2, in which the sensor index Figure 3 (t) is the coordinate of a first axis of the 2D discrete angular plane and the azimuth angle n (t) is the coordinate of a second axis of the 2D discrete angular plane. n
[0077] In one exemplary embodiment of step 110, the sensor index n (t) and the azimuth angle n (t) are obtained by converting 3D Cartesian coordinates (x n (t), y n (t), z n (t)) representing the 3D position of the captured point P n (t). These 3D Cartesian coordinates (x n (t), y n (t), z n (t)) can be the output of a rotating sensor head 10.
[0078] In step 115, an ordered point list L is obtained by sorting (ordering) the points of the point cloud according to the dictionary order, first based on the azimuth angle n (t) and then on the sensor index n (t) or vice versa. An order index is associated with each point P n (t) according to its rank in the ordered point list L.
[0079] In one exemplary embodiment of step 115, the points are sorted (classified) according to the dictionary order first based on the azimuth angle and then on the sensor index. Referring back to Figure 7 , the ordered captured points are P1(t1),..., P5(t1), P1(t2),..., P5(t2)... k k
[0080] The order index o(P n (t)) of a point P n (t) (i.e. its rank in the ordered point list L) is obtained by:
[0081] o(P n (t)) = f n (t)*K+λ n
[0082] In an exemplary embodiment of step 115, in Figure 8 As illustrated, the points are first sorted according to the sensor index and then according to the azimuth angle, based on dictionary order.
[0083] Point P n The sequential index o(P) n It is obtained from the following formula:
[0084] o(P n )=λ n *I+φ n
[0085] In step 120, for the current point P in the ordered point list L... n Obtain point P next Point P next It is the current point P in the ordered list of points L. n Then and has the same characteristics as the current point P. n The sequential index o(P) n Different sequential indices o(P) next The point P is also obtained. n The number of related items Ndup n Quantity Ndup n It is equivalent to the current point P n The number of subsequent points, which have a relationship with the current point P. n The sequential index o(P) n Equal sequential indices.
[0086] When two points have different sensor indices k(n) and / or different azimuth angles i(n), they have different order indices.
[0087] Two ordered points in an ordered point list L are represented as duplicate points if they have the same sequence index, i.e., the same sensor index and the same azimuth. Two ordered points in an ordered point list L are represented as non-duplicate points if they have different sensor indices and / or different azimuths.
[0088] Quantity Ndup n It is equivalent to the current point P n The number of subsequent replication points.
[0089] In an exemplary embodiment of step 120, from the current point P n Let's start by considering point P in an ordered list of points. n The first next point P n+1 If point P n+1 Having a sequential index o(P)n ) has the same order index as the order index o(P n ) of the current point P n+2 . If said second next point P n+2 has the same order index as the order index o(P n ) of the current point P n , a third next point P n+3 in the ordered point list L is considered, and so on until a next point has a different order index than the order index o(P n ) of the current point P n . Each time a next point of the ordered point list L has the same order index as the order index o(P n ) of the current point P n , the number of duplicate points Ndup n associated with the current point P n is incremented.
[0090] In step 130, information representative of the number Ndup next associated with the current point P next is encoded in the bitstream B.
[0091] In step 140, an order index difference Δo next is obtained. The order index difference Δo next represents the difference between the order index o(P next ) and the order index o(P n ) of the current point P n :
[0092] Δo next = o(P next ) - o(P n )
[0093] By definition, P next is the first point after P n having a different order than o(P n ). The value Δo next is therefore not equal to zero.
[0094] In step 145, the order index difference Δo next is encoded in the bitstream B.
[0095] The order index o(P1) of the first point P1 in the ordered point list L can be directly encoded into the bitstream B. This is equivalent to arbitrarily setting the order index of a virtual zeroth point to zero, i.e. o(P0) = 0, and encoding Δoi = o(P1) - o(P0) = o(P1).
[0096] Given the order index o(P1) of the first point and the order difference Δo nextThen point P can be reconstructed using the following formula. next Sequential index:
[0097] o(P next )=o(P n )+Δo next
[0098] Then, the sensor index λ is obtained from the following formula. next and azimuth φ next :
[0099] λ next =o(P next modulo K (1)
[0100] φ next =o(P next ) / K (2)
[0101] Where division / K is integer division (also known as Euclidean division). Therefore, o(P1) and Δo next It is λ next and φ next Alternative representation of .
[0102] In one exemplary embodiment of step 145, as referred to later... Figure 13 The explained sequential index difference Δo next Encoded by entropy.
[0103] In step 150, by using point P next Consider it as the new current point P n Update the current point P n .
[0104] Repeat steps 120, 130, 140, 145, and 150 until all points in the ordered point list L have been taken into account.
[0105] Sort the captured points to enable interaction between points captured by different sensors in the rotating sensor head. Therefore, encoding those ordered points requires a single encoding, resulting in a very simple and low-latency encoding.
[0106] From the sequential index difference Δo next Reconstructing points requires information such as the sequential index o(P1) of the first point in the angular coordinate (φ, λ) system, as well as information such as the basic azimuth offset Δφ or elevation angle θ associated with each sensor. k The sensor settings parameters. This information can also be encoded in bitstream B, signaled through another means, or known in advance by the decoder.
[0107] In one exemplary embodiment, the method further comprises, in step 160, encoding in the bitstream B a radius value r next associated with the spherical coordinates of the point P next .
[0108] In one exemplary embodiment of step 160, the radius value r next is quantized.
[0109] In one exemplary embodiment of step 160, the radius value r next is entropy coded.
[0110] In one exemplary embodiment of step 160, the radius value r next is quantized and entropy coded.
[0111] In one exemplary embodiment of step 160, the radius value r next represents the radius r 3D .
[0112] In one exemplary embodiment of step 160, the radius value r next represents a projected radius r 2D on the horizontal xy-plane, as depicted in Figure 4 .
[0113] In one exemplary embodiment, the method further comprises, in step 170, encoding a residual (x next , y next , z next ) of the three-dimensional Cartesian coordinates of the point P next based on the three-dimensional Cartesian coordinates (x dec,next , y next , z dec,next ) of the point P next , based on the decoded azimuth angle φ next , based on the decoded radius value r res,next obtained from the radius value r res,next and based on the sensor index λ res,next .
[0114] In one exemplary embodiment of step 170, the residual (x res,next , y res,next , z res,next ) is the difference between the three-dimensional Cartesian coordinates (x next , y next , z next ) of the point P next and the estimated three-dimensional coordinates (x estim,next , y estim,next , z estim,next ).
[0115] In one exemplary embodiment of step 170, the residual (x res,next ,y res,next ,z res,next ) is given by:
[0116]
[0117] In one exemplary embodiment of step 170, the estimated coordinates (x next ,y estim,next ) associated with point P next are based on the decoded azimuth angle φ dec,next and the decoded radius value r dec,next associated with point P estim,next .
[0118] In one exemplary embodiment of step 170, the residual (x res,next ,y res,next ,z res,next ) is entropy encoded.
[0119] In one exemplary embodiment of step 170, the estimated coordinates (x estim,next ,y estim,next ) are given by:
[0120]
[0121] In one exemplary embodiment of step 170, the estimated coordinate (z next ) associated with point P next is based on the decoded radius value r dec,next associated with point P next and the elevation angle Θ estim,next of the sensor capturing point P n .
[0122] In one exemplary embodiment of step 170, the estimated coordinate (z estim,next ) is also based on the sensor index λ estim,next .
[0123] In one exemplary embodiment of step 170, the estimated coordinate (z dec,next ) is given by:
[0124] z next = r next tan Θ res,next
[0125] In one exemplary embodiment, the method further comprises, in step 180, encoding in the bitstream B a residual azimuth angle φ next associated with point P next .
[0126] In the exemplary embodiment of step 180, the azimuth angle φ next Quantified by the following formula:
[0127] φ next =round(φ(P) next ) / Δφ)
[0128] Wherein, φ(P) next () is point P next The initial azimuth angle. In this case, a set of discrete angles φ i (0≤i<I) is essentially determined by φ i =i*Δφ is defined, and φ is obtained. i(next) =φ next *Δφ.
[0129] Point P next The sequential index o(P) next Therefore, it is given by the following formula:
[0130] o(P next )=φ next *K+λ next =round(φ(P) next ) / Δφ)*K+λ next .
[0131] residual azimuth φ res,next It is given by the following formula:
[0132] φ res,next =φ(P next )-φ next *Δφ (3)
[0133] This exemplary embodiment of step 180 offers an advantage because, sometimes in practice, not all points are captured at every capture time, because noise may be captured, or because the sensor may not be perfectly aligned, or because at least one laser beam from, for example, rotating the sensor head may not be reflected. The captured points may then appear as... Figure 9 The depiction. The azimuth angle φ(P) next Quantization yields a more easily discrete representation of points in the angular coordinate (φ,λ) system, such as... Figure 10 As depicted, this allows for a more convenient path for sorting the points in a point cloud.
[0134] Preferably, the residual azimuth angle φ is encoded in the bitstream B through quantization and / or entropy coding. res,next .
[0135] This exemplary embodiment of step 180 also reduces the dynamics of the angles to be encoded into the bitstream because only the residuals, rather than the full range of values, are encoded. This achieves high compression performance.
[0136] In one exemplary embodiment, the method further includes, in step 185, based on the azimuth angle φ next To obtain the decoded azimuth angle φ dec,next .
[0137] In an exemplary embodiment of step 185, the decoded azimuth angle φ dec,next It is given by the following formula:
[0138] φ dec,next =φ next *Δφ
[0139] In an exemplary embodiment of step 185, based on the azimuth angle φ next Basic azimuth offset Δφ and residual azimuth angle φ res,next To obtain the decoded azimuth angle φ dec,next .
[0140] In an exemplary embodiment of step 185, the decoded azimuth angle φ dec,next It is given by the following formula:
[0141] φ dec,next =φ next *Δφ+φ res,next
[0142] In an exemplary embodiment of step 185, based on the azimuth angle φ next The basic azimuth offset Δφ and the quantized residual azimuth angle φ given by Equation 3 res,next The decoded angular residual φ obtained by dequantization dec,res,next To obtain the decoded azimuth angle φ res,next .
[0143] In an exemplary embodiment of step 185, the decoded azimuth angle φ res,next It is given by the following formula:
[0144] φ dec,next =φ next *Δφ+φ dec,res,next
[0145] In one exemplary embodiment, the method further includes, in step 190, basing the encoded radius value r on... next To obtain the decoded radius value r dec,next .
[0146] In an exemplary embodiment of step 190, the quantized radius value r is...next dequantization is performed to obtain a decoded radius value r dec,next .
[0147] a sequence index difference Ao of a series of values equal to zero is encoded next In contrast, encoding Ndupnin the bitstream is advantageous by providing a less complex process in case there are many duplication points and also by providing an improved compression performance.
[0148] The number of duplication points Ndupnis encoded in the bitstream B to indicate whether the current point P n is duplicated, i.e. has the same azimuth angle and the same sensor index. But the two duplication points can not have the same three-dimensional Cartesian coordinates because they can have different radii.
[0149] In one exemplary embodiment, the method further comprises, in step 195, encoding in the bitstream B binary information BP n indicating whether the duplication points of the current point P n have the same three-dimensional Cartesian coordinates.
[0150] This embodiment is advantageous because if the binary information BP n indicates (e.g. BP n = 1) that the duplication points of the current BP n have the same three-dimensional Cartesian coordinates, then steps 140 to 190 are bypassed, thereby reducing the cost for encoding duplication points of a point cloud having the same three-dimensional Cartesian coordinates.
[0151] In one exemplary embodiment of step 195, the binary information BP n is entropy encoded.
[0152] In a variant, the binary data BPis entropy encoded by a context adaptive binary arithmetic coder such as CABAC and the context is selected according to the sensor index of the current point P n .
[0153] Figure 11 Fig. 1 illustrates a block diagram of steps of a method 100 of encoding a point cloud into a bitstream according to at least one exemplary embodiment.
[0154] Decoding the points of the point cloud from the bitstream B requires information such as the number M of encoded sequence index differences, the sequence index o(P1) of the first point in the angular coordinate (f, l) system and sensor setup parameters such as the basic azimuth offset Ap or the elevation angle Q k 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.
[0155] The N points of the point cloud are decoded recursively.
[0156] The number M of encoded sequential index differences is less than or equal to the number of points in the point cloud minus one (N-1): when the ordered point list L does not contain duplicate points, i.e., for n ( When Ndupn = 0, M = N-1. When the ordered list of points L contains at least one duplicate point, that is, for at least one n, Ndupn ≠ 0, M < N-1.
[0157] In step 210, the representation of the bitstream B is decoded and compared with the currently decoded point P. n The number of related items Ndup n Information.
[0158] In step 220, Ndup is obtained. n There are 3 copy points, each copy point having a value similar to the currently decoded point P. n azimuth φ n Equal sum of the same azimuth angles and the already decoded current point P n The orientation sensor index λ n Equal sensor indices.
[0159] In step 230, bitstream B is decoded for point P. next The order index difference Δo next Point P next The ordered point list L contains the current point P that has already been decoded. n The sequential index o(P) n Different sequential indices o(P) next ).
[0160] In step 240, the following formula is used to obtain the result for point P. next The sequential index o(P) next ):
[0161] o(P next )=o(P n )+Δo next
[0162] Sequential index difference Δo next Point P next The sequential index o(P) next ) and the currently decoded point P n The sequential index o(P) n The difference between them.
[0163] In step 250, from the sequential index o(P) next Obtain and capture point P nexta sensor index λ associated with the sensor next and an azimuth angle φ representing a capturing angle of the sensor next .
[0164] In one exemplary embodiment of step 250, the sensor index θ is obtained from equations (1) and (2) next and the azimuth angle φ next .
[0165] Then, the decoded current point (P next ) is updated by considering the next point P n as a new decoded current point P n ), and steps 210, 220, 230, 240 and 250 are repeated until all information representing the number Ndup n associated with the decoded current point is decoded.
[0166] In one exemplary embodiment, the method further comprises, in step 260, obtaining a decoded azimuth angle φ next based on the azimuth angle φ dec,n .
[0167] In one exemplary embodiment of step 260, the decoded azimuth angle φ next is obtained based on the azimuth angle φ dec,next and a base azimuth offset Δφ.
[0168] In one exemplary embodiment of step 260, the decoded azimuth angle φ dec,next is given by:
[0169] φ dec,next = φ next * Δφ
[0170] In one exemplary embodiment of step 260, the decoded azimuth angle φ res,next is obtained based on a residual azimuth angle φ dec,next decoded from the bitstream B.
[0171] In one exemplary embodiment of step 260, the decoded azimuth angle φ dec,next is given by:
[0172] φ dec,next = φ next * Δφ + φ res,next
[0173] In one exemplary embodiment, the method further comprises, in step 270, decoding a radius value r next of the spherical coordinates of the point P next from the bitstream B.
[0174] In an exemplary embodiment of step 270, the radius value r next Dequantization is performed to obtain the decoded radius value r. dec,next .
[0175] In an exemplary embodiment of step 270, the radius value r next Entropy decoding and dequantization are used to obtain the decoded radius value r. dec,next .
[0176] In one exemplary embodiment, the method further includes, in step 280, decoding point P from bitstream B. next The residuals (x) of the three-dimensional Cartesian coordinates res,next ,y res,next ,z res,next ).
[0177] In an exemplary embodiment of step 280, the residual (x) res,next ,y res,next ,z res,next It is decoded by entropy.
[0178] In one exemplary embodiment, the method further includes, in step 285, based on point P next The decoded residual (x) of the three-dimensional Cartesian coordinates res,next ,y res,next ,z res,next ), radius value r next Decoded azimuth angle φ dec,next and sensor index λ next Decode point P next 3D Cartesian coordinates (x next ,y next ,z next ).
[0179] In an exemplary embodiment of step 285, point P next 3D Cartesian coordinates (x next ,y next ,z next ) is the residual (x) res,next ,y res,next ,z res,next ) and estimated three-dimensional coordinates (x) estim ,y estim ,z estim )) and:
[0180]
[0181] In an exemplary embodiment of step 285, with point P next Associated estimated coordinates (x) estim ,yestim ) based on the azimuth angle φ next and the radius value r next .
[0182] In one exemplary embodiment of step 285, the estimated coordinates (x estim , y estim ) are given by:
[0183]
[0184] In one exemplary embodiment of step 285, the estimated coordinates (x estim,next , y estim,next ) are given by:
[0185]
[0186] where r dec,next is a decoded radius value obtained from the radius value r next . For example, the decoded radius value r dec,next may be obtained by dequantizing the radius value r next .
[0187] In one exemplary embodiment of step 285, the estimated coordinate (z next ) associated with the point P estim is based on the radius value r next associated with the point P next and the elevation angle θ next of the sensor k that captured the point P k .
[0188] In one exemplary embodiment of step 285, the estimated coordinate (z estim ) is given by:
[0189] z estim = r next tan θ k
[0190] In one exemplary embodiment of step 285, the estimated coordinate (z estim ) is also based on the sensor index λ next . In one exemplary embodiment of step 285, the estimated coordinate (z estim ) is given by:
[0191] z estim = r next tan θ λnext
[0192] In one exemplary embodiment, the method further comprises, in step 290, decoding binary information BP from the bitstream B n , the binary information indicating whether the copy point of the current point P n that has been decoded has the same three-dimensional Cartesian coordinates.
[0193] This embodiment is advantageous because if the binary information BP n indicates (e.g. BP n = 1) that the copy point of the current point P n that has been decoded has the same three-dimensional Cartesian coordinates, steps 230 to 285 are bypassed and Ndupn new points of the point cloud are created with the three-dimensional Cartesian coordinates of the current point P n .
[0194] In one exemplary embodiment of step 290, the binary information BP n is entropy decoded.
[0195] In a variant, the binary data BP n is entropy decoded by a context adaptive binary arithmetic coder such as CABAC and the context is selected according to the sensor index of the current point P n .
[0196] Figure 12 Fig. 6 illustrates a block diagram of steps of a method 300 of entropy encoding the number of copy points Ndup n according to at least one exemplary embodiment of step 140.
[0197] In step 310, the number of copy points Ndup n is binarized into a series of binary data gj. The number of the series of binary data gj does not exceed a maximum bound NP flag .
[0198] The maximum bound NP flag is set to limit the number of arithmetically encoded binary information per point and then to limit the latency to get the next point P next .
[0199] For each binary data g j , in step 320, a context is selected based on the index j associated with the current point P n and the sensor index l n and each binary data g j is context adaptively entropy encoded (step 330) in the bitstream B based on the selected context.
[0200] The context adaptive entropy encoding of the number of copy points Ndup is compared to other encoding techniques such as predictive tree encoding techniques.n This provides efficient compression performance because such prediction-based coding techniques do not capture the intrinsic structure of the representation (φ, λ) of point locations. An exemplary embodiment of this application selects a context and encodes a number Ndup based on the entropy of the selected context. n To capture this type of structure.
[0201] In an exemplary embodiment of step 310, a series of binary data g j (j>=0) to execute the number of Ndup n The binary representation. Binary data gj is equal to a specific value PV (e.g., g...). j =1) to indicate Ndup n It checks if the value is equal to j, and otherwise not equal to the specific value PV (e.g., gj = 0). Then, the first binary g0 is encoded. For example, if g0 = PV, then Ndup... n The encoding ends because Ndup n =1 has already been encoded; otherwise, if g0 ≠ PV, then the second binary data g1 is encoded. If g1 ≠ PV, then the third binary data g2 is encoded, and so on. This is essentially Ndup. n Unary encoding.
[0202] In one exemplary embodiment, the method further includes, in step 340, obtaining the quantity Ndup. n With the maximum limit (upper limit) NP flag The residual RP is the difference between them. Then, if the binary data g is reached... NPflag-1 And since it is not equal to PV, then Ndup must exist. n ≥NP flag And the residual RP is given by the following formula: RP = Ndup n -NP flag .
[0203] In one exemplary embodiment of step 340, the residual RP is encoded using exponential Golomb codes.
[0204] In an exemplary embodiment of step 310, binary data g j It is a flag, and PV = 1.
[0205] In an exemplary embodiment of step 330, binary data g is entropy encoded by a context-adaptive binary arithmetic codec (such as CABAC). j .
[0206] Figure 13 The diagram illustrates the entropy-encoded order index difference Δo according to at least one exemplary embodiment. nextA flowchart of the 400 steps of the method.
[0207] In step 410, by changing the sequence index difference Δo next Binary conversion to obtain at least one binary data f j .
[0208] For each binary data f j Based on binary data f j Associated azimuth angle φ j Distance C between the azimuth angle of the already encoded point and the azimuth angle j To select (step 420) the context, and based on the selected context, context-adaptive entropy encoding (step 430) of each binary data f in bitstream B. j As will become clear below, similar to the quantity φ next , φ j It is misused to call it azimuth, even though it is an index between 0 and I-1, pointing to φ. i The specific discrete angles within it.
[0209] Compared to other coding techniques such as predictive tree coding, context-adaptive entropy coding of the order index difference provides efficient compression performance because such prediction-based coding techniques do not capture the intrinsic structure of the representation (φ, λ) of point positions. Exemplary embodiments of this application capture this structure by selecting a context and encoding the order index difference based on the selected context entropy.
[0210] In an exemplary embodiment of step 410, a series of binary data f j (j>0) to perform the sequential index difference Δo next The binary representation. Binary data f0 is always equal to 0 because the sequential index difference Δo... next Strictly positive. The binary data f0 is not encoded.
[0211] binary data f j Equal to a specific value PV (e.g., f) j =1) to indicate Δo next It is determined whether it is equal to j, and otherwise not equal to the specific value PV (e.g., fj = 0). Then, the first binary f1 is encoded. For example, if f1 = PV, then Δo next The encoding ends because Δo next =1 has already been encoded; otherwise, if f1 ≠ PV, then the second binary data f2 is encoded. If f2 ≠ PV, then the third binary data f3 is encoded, and so on. This is essentially Δo. next Unary encoding.
[0212] In an exemplary embodiment of step 410, when points are sorted lexicographically first based on azimuth and then based on sensor index ( Figure 7 ), if j + c < K, the azimuth φ j associated with the binary data f j is the azimuth φ n associated with the current point P n , where c is the index of the current point modulo K (or equivalently, c is the sensor index λ n of the current point P n ); otherwise, the azimuth φ j associated with the binary data f j is the azimuth
[0213] φ j = φ next + s
[0214] where s is an integer such that sK ≤ j + c < (s + 1)K. Each binary data f j is also associated with a sensor index λ j that corresponds to the sensor index of the sensor that would have captured the point P j if f next were equal to PV, i.e., λ j = λ n + j mod K.
[0215] In Figure 7 , the sequential index difference Δo next is equal to 8 and is binary-coded into eight binary data f1 to f8, all of which are not equal to PV except for the last one f8 which is equal to PV. Note that f0 is always equal to 0 because by definition, the order of P next is different from the order of P n . Therefore, f0 does not need to be encoded and will be inferred by the decoder as 0. The azimuths φ 1 to φ 6 associated with the binary data f1 to f6 respectively are equal to the azimuth φ n , and the azimuths φ 7 and φ 8 associated with f7 and f8 respectively are equal to φ next .
[0216] In an exemplary embodiment of step 410, when points are sorted lexicographically first based on sensor index and then based on azimuth ( Figure 8 ), the azimuth φ j associated with the binary data f j is given by:
[0217] φ j = φ n + j
[0218] Each binary data f j is also associated with a sensor index λ j corresponding to the sensor that has captured the point P j in case of equality with PV, i.e. λ next = λ j . n .
[0219] In Figure 8 , the order index difference Δo next is equal to 4 and is binarized into five binary data f1 to f4, all of which are not equal to PV except the last one f4 which is equal to PV. The azimuth angles φ 1 to φ 4 associated respectively with the binary data f1 to f4 are respectively φ n +1, φ n +2, φ n +3 and φ n +4 = φ next .
[0220] In one exemplary embodiment, the method further comprises, in step 440, obtaining a residual R which is the difference between the order index difference Δo next and the maximum bound (upper bound) N flag . Then, if the binary data f NPflag-1 is reached and is not equal to PV, it is necessarily that Δo next ≥ N flag and the residual R is given by: R = Δo next - N flag .
[0221] The maximum number N flag of flags is set to limit the number of arithmetically encoded binary information per point and then to limit the latency to obtain the next point.
[0222] In one exemplary embodiment of step 440, the residual R is encoded by using an exponential Golomb code.
[0223] In one exemplary embodiment of step 410, the binary data f j is a flag and PV = 1.
[0224] In one exemplary embodiment of step 430, the binary data f j is entropy coded by a context adaptive binary arithmetic coding (such as CABAC).
[0225] Figure 14 A block diagram of a context-adaptive binary arithmetic encoder is schematically illustrated.
[0226] First, a context is selected based on already encoded information through some selection process to provide a context index ctxldx associated with each binary symbol f j (or gj). A context table with N ctx entries stores probabilities associated with contexts, and a probability p ctxIdx is obtained as the ctxldx-th entry of the context table. The probability p ctxIdx is used by the entropy encoder to encode the binary symbol f j in the bitstream.
[0227] The entropy encoder is typically an arithmetic encoder, but can also be any other type of entropy encoder, like Asymmetric Digital System. In any case, the optimal encoder adds -log2(p ctxIdx ) bits in the bitstream to encode f j = 1, or -log2(1 - p ctxIdx ) bits in the bitstream to encode f j = 0. Once the symbol f j is encoded, the probability p j is updated by using an update process that takes f ctxIdx and p ctxIdx as entries; the update process is typically performed by using an update table. The updated probability replaces the ctxldx-th entry of the context table. Then, another symbol can be encoded, and so on. The return to the update loop of the context table is a bottleneck in the encoding workflow, as another symbol can only be encoded after the update has been performed. To this end, the memory access to the context table must be as fast as possible, and minimizing the size of the context table helps to simplify its hardware implementation.
[0228] A context-adaptive binary arithmetic decoder performs essentially the same operations as a context-adaptive binary arithmetic encoder, except that a probability p ctxIdx is used by the entropy decoder to decode an encoded symbol f j from the bitstream.
[0229] Selecting the appropriate context, i.e. the probability p ctxIdx that best estimates the chance that a binary data f j equals PV, is essential to obtain good compression. Therefore, the context selection should use relevant already encoded information and associations to obtain this appropriate context.
[0230] In an exemplary embodiment of step 420, with binary data f j Associated distance C j Depends on the binary data f j Associated azimuth angle φ j The sum and the second-to-last already encoded point P penult Associated azimuth angle φ penult (index), the penultimate encoded point has the same binary data f j Associated sensor index λ j Same sensor index. From it, the second-to-last encoded point P is determined. penult In a set of already encoded points, the current point P is never considered. n .
[0231] In an exemplary embodiment of step 420, with binary data f j Associated distance C j It is given by the following formula:
[0232] C j =φ j -φ penult,j (4)
[0233] It should be noted that the two quantities φ j and φ penult,j It refers to a value φ that points to a set of discrete quantities. i Index of discrete angles in (i = 0 to I-1).
[0234] exist Figure 7 The distance C1 = 4, because on the one hand, it is associated with the penultimate already encoded point (gray circle) and has a sensor index λ associated with f1. 1 =λ n +1 = 3 azimuth φ penult,3 On the other hand φ 1 =φ n The difference between them is 4. Then, C2 = 3, because the sensor index λ associated with f2 is related to the second-to-last already encoded point. 2 =λ n +2 = 4 azimuth φ penult,4 With φ 2 =φ n The difference between them is 3, and so on. Furthermore, C7 = 3 because it is associated with the second-to-last already encoded point, which has a sensor index λ associated with f7. 7 =λ n +7=9=0 mod K (where K=9) azimuth φ penult,0 With φ 7 =φn The difference between +1 and 3 is equal to 3. Finally, the distance C8 = 2 because it is associated with the second-to-last encoded point and has the sensor index λ associated with f8. 8 =λ n +8=10=1 mod K azimuth φ penult,1 With φ 8 =φ next The difference between them is 2.
[0235] exist Figure 8 All binary data f j With the same sensor index λ j =λ n Associated. Distance C0 = 2, because of the azimuth associated with the second-to-last coded point (gray circle). With φ 0 =φ n The difference between them is 2. Distance C1 = 3, because the azimuth associated with the second-to-last encoded point is... With φ 1 =φ n The difference between +1 and 3 is equal to 3, and so on.
[0236] In an exemplary embodiment of step 420, with binary data f j Associated distance C j Depends on the binary data f j Associated azimuth angle φ j and the azimuth angle φ associated with any of the already encoded points. al (index), the already encoded point does not need to be related to the current point P. n The sensor index is the same as the sensor index for detection.
[0237] In an exemplary embodiment of step 420, with binary data f j Associated distance C j It is given by the following formula:
[0238] C j =φ j -φ al
[0239] In an exemplary embodiment of step 420, with binary data f j The context index ctxIdx of the associated context table is equal to the distance C. j .
[0240] In an exemplary embodiment of step 420, the context index ctxIdx is capped by a threshold th1 to limit the number of contexts:
[0241] ctxldx = min(Cj, thl) j
[0242] For example, thl can be equal to 6.
[0243] It is important to limit the number of contexts in order to implement, limit memory usage and also to ensure statistical relevance of the probabilities p ctxIdx , because high values of j can be rarely accessed.
[0244] In one exemplary embodiment of step 420, the context index ctxldx for a binary data f j depends on the rank j of said binary data in a series of binary data representing the order index difference Δ0 next .
[0245] Because for high j, the statistics of the binary data f j tend to become weakly dependent on the rank j, one can exploit this weak correlation to limit the number of contexts.
[0246] Moreover, the correlation between the context index ctxldx and the value j provides an advantage because the statistics of each binary flag f j to equal PV depends on the index j. Typically, the probability P(f j = PV | f0to f j-1 ≠ PV) decreases with j. Therefore, by making the index ctxldx dependent on j, one can obtain better probabilities p ctxIdx .
[0247] In one exemplary embodiment of step 420, the context index ctxldx is given by:
[0248] ctxldx = min(Cj, thl)*(th2 + l) + min(j, th2)
[0249] where th2 is a second threshold, such as to have (thl + l)*(th2 + l) contexts. For example, one can take th2 equal to 3.
[0250] In one exemplary embodiment of step 420, the context index ctxldx depends on the sensor index λj associated with the binary data f j .
[0251] The statistics of each binary data f j to equal or not equal PV also depends on if the binary data f j equal to PV, the sensor index of the position where the next point is probed. For example, sensors pointing at the ground almost always probe something (mainly the road), but sensors pointing at the sky tend to probe more objects less frequently, like buildings or trees. But the dependency between the context index ctxldx and the binary data f j the associated sensor index λ j The number of contexts is multiplied by K (the number of sensors), and can provide a very high number of contexts, as a typical lidar head has 16, 32 or even 64 laser beams.
[0252] In one exemplary embodiment of step 420, sensors with close elevation angles are recombined together into groups, as all sensors of the same group tend to probe similar objects.
[0253] Each sensor, whose index is λ, has a corresponding group index λ pack (λ), and the binary data f j associated with the sensor index λ j has a group index associated with the group index λ j,pack .
[0254] Grouping sensors limits the number of contexts.
[0255] In one exemplary embodiment of step 420, the context index ctxldx is given by:
[0256] ctxldx = (min(C j , th) * (th2 + 1) + min(j, th2)) * N pack + λ j,pack
[0257] where N pack is the number of groups.
[0258] The number of contexts becomes (th + 1) * (th2 + 1) * N 分组 .
[0259] In a variant, the group index λ j,pack is given by:
[0260] λ j,pack = floor(λ j * N pack / K)
[0261] so that λ j,pack belongs to [0, N 分组 - 1].
[0262] The number of contexts can then be tuned by setting appropriate values to th1 and / or th2 and / or N pack These values can be encoded in the bitstream B. For example, for the respective values 6, 3 and 4, one can get 7*4*4 = 112, which is an acceptable number of contexts.
[0263] Figure 15 A block diagram of steps of a method 500 of entropy decoding a number of duplication points Ndup n according to at least one example embodiment is shown.
[0264] Decoding from the bitstream B a number of duplication points Ndup n associated with a decoded current point P n comprises decoding from the bitstream B a series of binary data g j The series of binary data comprises a number of bits lower or equal to a maximum bound (upper limit) NP flag For each binary data g j At step 510, the method selects a context based on an index j associated with the current point P n and a sensor index l n Then, the method entropy decodes (step 520) said at least one binary data g j based on the selected context and probability information decoded from the bitstream B relative to the binary data g j Next, the number of duplication points Ndup j is obtained (step 530) from the binary data g n based on the context entropy decoding.
[0265] In one example embodiment, at step 530, if the binary data g NPflag-1 and is not equal to PV, a residual error RP is also decoded from the bitstream B and the number of duplication points Ndup n = RP + NP flag is obtained. n
[0266] In one example embodiment of step 530, the residual error RP is decoded by using an exponential Golomb code.
[0267] The context selection of steps 320 and 510 is identical. Therefore, all example embodiments and variants of step 320 apply to step 510.
[0268] In one example embodiment of step 520, the binary data g j . Context-based entropy decoding (step 520) of the binary data g j is based on the selected context. Figure 14 is the same as the context-based entropy encoding.
[0269] Basically, the entropy decoder decodes from the bitstream B -log2(p ctxIdx ) bits to decode the binary value g j = 1, or -log2(l - p ctxIdx ) bits to decode g j = 0. Once the symbol f j is decoded, the probability p j is updated by using an update process that takes g ctxIdx and p ctxIdx as entries; the update process is typically performed by using an update table. The updated probability replaces the ctxldx-th entry of the context table. Then, another symbol can be decoded, and so on. The return to the update loop of the context table is a bottleneck in the codec workflow, as another symbol can only be decoded after the update has been performed. To this end, the memory access to the context table must be as fast as possible, and minimizing the size of the context table helps to simplify its hardware implementation.
[0270] In one exemplary embodiment of step 530, the number of duplication points Ndup j is decoded by unary decoding of at least one decoded binary data g n .
[0271] For example, if the first g0= PV, the decoding ends as Ndup n = 0 has been decoded; otherwise, if g0≠ PV, the second binary data g1is decoded, otherwise Ndup n = 1, and the decoding ends. If f1≠ PV, the third binary data g2is decoded, and so on.
[0272] Figure 16 A block diagram showing steps of a method 600 of entropy decoding an order index difference Ao next according to at least one exemplary embodiment.
[0273] Decoding a point P next of a point cloud from a bitstream B includes decoding from the bitstream B an order index difference Ao next representing a difference between an order index o(P next ) associated with the point P next and another order index o(P n ) associated with a current point P n .
[0274] Decoding order index difference Δo next Includes decoding at least one binary data f from bitstream B. j For each binary data f j This method is based on binary data f j Associated azimuth angle φ j The azimuth angle (φ) of the already decoded point penult or φ al The distance C between them j To select (step 610) the context. Then, the method selects the context based on the chosen context and the binary data f. j And based on the probabilistic information decoded from bitstream B, the at least one binary data f is decoded (step 620) using context entropy. j Next, from the binary data f decoded based on context entropy... j Obtain the sequential index difference Δo (step 630) next .
[0275] In one exemplary embodiment, the method further includes, in step 630, if binary data f is reached... NPflag-1 And if it is not equal to PV, then the residual R is also decoded from bitstream B, and through Δo next =R+N flag Obtain the sequential index difference Δo next .
[0276] In one exemplary embodiment of step 630, the residual R is decoded using exponential Golomb codes.
[0277] The context selection in steps 420 and 610 is the same. Therefore, all exemplary embodiments and variations of step 420 apply to step 610.
[0278] In one exemplary embodiment of step 620, binary data f is entropy decoded by a context-adaptive binary arithmetic decoder (such as CABAC). j Decode the binary data f based on context entropy (step 620) according to the selected context. j Essentially with Figure 14 The context-entropy-based encoding is the same.
[0279] Basically, the entropy decoder decodes from the bitstream -log2(p) ctxIdx ) bits to decode binary value f j =1, or decode from the bitstream -log2(1-p) ctxIdx ) bits to decode f j =0. Once the symbol f j Decoded, by using f jand p ctxIdx Updating the probability p as an entry of the update process ctxIdx The updated probability replaces the ctxldx entry of the context table. Then, another symbol can be decoded, and so on. The return to the update loop of the context table is a bottleneck in the coding workflow, as another symbol can only be decoded after the update has been performed. For this reason, the memory access to the context table must be as fast as possible, and minimizing the size of the context table helps to simplify its hardware implementation.
[0280] In one exemplary embodiment of step 630, the order index difference Δ0 j is decoded by unary decoding of at least one decoded binary data f next .
[0281] For example, if the first binary data f1=PV, the decoding ends, as Δ0 next =0 has been decoded; otherwise, if f1≠PV, the second binary data f2is decoded, otherwise Δ0 next =1, and the decoding ends. If f2≠PV, the third binary data f3is decoded, and so on.
[0282] Figure 17 FIG. 1 shows a schematic block diagram illustrating an example of a system in which various aspects and exemplary embodiments are implemented.
[0283] The system 700 can be embedded as one or more devices including the various components described below. In various embodiments, the system 700 can be configured to implement one or more of the aspects described in this application.
[0284] Examples of equipment that can form all or part of system 700 include personal computers, laptops, smartphones, tablet computers, digital multimedia set top boxes, digital television receivers, personal video recording systems, connected home appliances, connected vehicles and their associated processing systems, head mounted display devices (HMDs, see-through glasses), projectors (beamers), "caves" (systems that include multiple displays), servers, video encoders, video decoders, post-processors that process output from video decoders, pre-processors that provide input to video encoders, web servers, set top boxes, and any other device for processing point clouds, video or images or other communication devices. The elements of system 700 can be embodied singly or in combination in a single integrated circuit (IC), multiple ICs, and / or discrete components. For example, in at least one embodiment, the processing elements and encoder / decoder elements of system 700 can be distributed across multiple ICs and / or discrete components. In various embodiments, system 700 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.
[0285] System 700 can include at least one processor 710 configured to execute instructions loaded therein for implementing the various aspects described in this application, for example. Processor 710 can include embedded memory, input output interface, and various other circuitries known in the art. System 700 can include at least one memory 720 (e.g., a volatile memory device and / or a non-volatile memory device). System 700 can include a storage device 740, 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. Storage device 740 can include, for example, an internal storage device, an attached storage device, and / or a network accessible storage device, as non-limiting examples.
[0286] The system 700 can include an encoder / decoder module 730 that is configured to, e.g., process data to provide encoded / decoded point cloud geometry data, and the encoder / decoder module 730 can include its own processor and memory. The encoder / decoder module 730 can represent the module(s) that can be included in a device to perform the encoding and / or decoding functions. As will be appreciated, a device can include one or both of the encoding and decoding modules. Additionally, the encoder / decoder module 730 can be implemented as a standalone element in the system 700, or can be incorporated in the processor 710 as a combination of hardware and software as known to those skilled in the art.
[0287] Program code to be loaded onto the processor 710 or the encoder / decoder 730 to perform various aspects described in this application can be stored in the storage device 740 and then loaded onto the memory 720 for execution by the processor 710. In accordance with various embodiments, one or more of the processor 710, the memory 720, the storage device 740, and the encoder / decoder module 730 can store one or more of various entries during the performance of processes described in this application. Such stored entries 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 from processing of equations, formulas, operations, and operational logic.
[0288] In several embodiments, memory internal to the processor 710 and / or the encoder / decoder module 730 can be used to store instructions and provide working memory for processing that can be performed during encoding or decoding.
[0289] However, in other embodiments, memory external to the processing device (e.g., the processing device can be the processor 710 or the encoder / decoder module 730) can be used for one or more of these functions. The external memory can be the memory 720 and / or the storage device 740, e.g., dynamic volatile memory and / or non-volatile flash memory. In several embodiments, external non-volatile flash memory can be used to store an operating system of a television. In at least one embodiment, fast external dynamic volatile memory, such as RAM, can be used as working memory for video coding and decoding operations, such as 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-1 Part 5 or Part 9.
[0290] As indicated in block 790, input to elements of system 700 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, by a broadcaster over the air, (ii) a composite input terminal, (iii) a USB input terminal, and / or (iv) an HDMI input terminal.
[0291] In various embodiments, the input devices of block 790 can have associated respective input processing elements as known in the art. For example, the RF portion can be associated with elements necessary (i) to select a desired frequency (also referred to as selecting a signal, or limiting the frequency band of a signal to a frequency band), (ii) to down-convert the selected signal, (iii) to band-limit again to a narrower frequency band, to select a frequency band of signal that can be referred to as a channel, for example, in certain embodiments, (iv) to demodulate the down-converted and band-limited signal, (v) to perform error correction, and (vi) to de-multiplex to select a desired stream of data packets. The RF portion of various embodiments can include one or more elements to perform these functions, for example, frequency selectors, signal selectors, band-limiters, channel selectors, filters, down-converters, demodulators, error correctors, and de-multiplexers. The RF portion can include a tuner to perform various ones of these functions, including, for example, down-converting the received signal to a lower frequency (for example, an intermediate frequency or a near baseband frequency) or baseband.
[0292] In one set-top box embodiment, the RF portion and its associated input processing elements can receive RF signals transmitted through a wired (for example, cable) medium. The RF portion can then perform frequency selection by filtering, down-converting, and filtering again to a desired frequency band.
[0293] 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.
[0294] 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 can include an antenna.
[0295] Additionally, the USB and / or HDMI terminals can include respective interface processors for connecting the system 700 to other electronic devices across USB and / or HDMI connections. It will be appreciated that various aspects of input processing, such as Reed-Solomon error correction, can be implemented as desired within, for example, a standalone input processing IC or within the processor 710. Similarly, aspects of USB or HDMI interface processing can be implemented within a standalone interface IC or within the processor 710 as desired. Demodulated, error corrected, and demultiplexed streams can be provided to various processing elements, including, for example, the processor 710 and the encoder / decoder 730, which operate in combination with memory and storage elements to process data streams as desired for presentation on output devices.
[0296] The various elements of the system 700 can be disposed within an integrated housing. Within the integrated housing, the various elements can be interconnected and send data between them using a suitable connection arrangement 790, such as an internal bus known in the art, including an I2C bus, wiring, and printed circuit boards.
[0297] The system 700 can include a communication interface 750 that enables communication with other devices via a communication channel 1100. The communication interface 750 can include, without limitation, a transceiver configured to transmit and receive data over the communication channel 1100. The communication interface 750 can include, without limitation, a modem or network card, and the communication channel 1100 can be implemented within, for example, a wired and / or wireless medium.
[0298] In various embodiments, data can be streamed to the system 700 using a Wi-Fi network, such as IEEE 802.11. The Wi-Fi signals of these embodiments can be received through the communication channel 1100 and the communication interface 750 adapted for Wi-Fi communication. The communication channel 1100 of these embodiments can typically be connected to an access point or router that provides access to external networks, including the Internet, for allowing streaming applications and other over-the-top (OTT) communication of application services provided over the Internet.
[0299] Other embodiments can provide streamed data to the system 700 using a set-top box that delivers data through the HDMI connection of the input block 790.
[0300] Still other embodiments can provide streamed data to the system 700 using the RF connection of the input block 790.
[0301] The streamed data can be used as a way for signaling information used by the system 700. The signaling information can include a bitstream B and / or a number of points, coordinates of a first point in a system of angular coordinates (f, l), or an order o(P1) of points of a point cloud n binary information BP n information of a difference of order index, and / or a sensor setup parameter such as a basic azimuth offset Df or an elevation angle Q associated with a sensor of the lidar head 10. k
[0302] It will be appreciated that signaling can be accomplished 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.
[0303] The system 700 can provide output signals to various output devices, including a display 800, speakers 900, and other peripheral devices 1000. In various examples of embodiments, the other peripheral devices 1000 can include one or more of the following: 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 700.
[0304] In various embodiments, control signals can be communicated between the system 700 and the display 800, speakers 900, or other peripheral devices 1000 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.
[0305] The output devices can be communicatively coupled to the system 700 via dedicated connections through respective interfaces 760, 770, and 780.
[0306] Alternatively, the output devices can be connected to the system 700 using the communication channel 1100 via the communication interface 750. The display 800 and speakers 900 can be integrated in a single unit with other components of the system 700 in an electronic device such as, for example, a television.
[0307] In various embodiments, the display interface 760 can include a display driver such as, for example, a timing controller (TCon) chip.
[0308] For example, if the RF portion of the input 790 is part of a stand-alone set-top box, the display 800 and speakers 900 can instead be separate from one or more of the other components. In various embodiments in which the display 800 and speakers 900 can be external components, the output signals can be provided via dedicated output connections including, for example, HDMI ports, USB ports, or COMP outputs.
[0309] exist Figures 1 to 17 This document describes various methods, and each method includes one or more steps or actions for implementing the described method. Unless the correct operation of the method requires a specific order of steps or actions, the order and / or use of specific steps and / or actions may be modified or combined.
[0310] Examples of block diagrams and / or operation flowcharts are described. Each block represents a circuit element, module, or section of code that includes one or more executable instructions for implementing one or more specified logical functions. It should also be noted that in other implementations, the functions indicated in a block may not occur in the indicated order. For example, two blocks shown consecutively may actually execute substantially simultaneously, or the blocks may sometimes execute in reverse order, depending on the functionality involved.
[0311] The implementations and aspects described herein can be implemented in, for example, methods or procedures, apparatus, computer programs, data streams, bit streams, or signals. Even if discussed only in the context of a single form of implementation (e.g., discussed only as a method), the features discussed can also be implemented in other forms (e.g., apparatus or computer programs).
[0312] The method can be implemented in, for example, a processor, which generally refers to a processing device, including, for example, a computer, microprocessor, integrated circuit, or programmable logic device. Processors also include communication devices.
[0313] Additionally, the method can be implemented by instructions executed by a processor, and such instructions (and / or data values generated by the implementation) can be stored on a computer-readable storage medium. The computer-readable storage medium may take the form of a computer-readable program product embodied in one or more computer-readable media and have computer-readable program code embodied thereon that is executable by a computer. As used herein, a computer-readable storage medium can be considered a non-transitory storage medium, given its inherent ability to store information therein and to provide the inherent ability to retrieve information therefrom. A computer-readable storage medium can be, for example, but not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, apparatuses, or devices, or any suitable combination thereof. It should be understood that although more specific examples of computer-readable storage media to which this embodiment may be applied are provided, the following are merely illustrative and not an exhaustive list, as will be readily understood by those skilled in the art: portable computer disks; hard disks; read-only memory (ROM); erasable programmable read-only memory (EPROM or flash memory); portable compact disc read-only memory (CD-ROM); optical storage devices; magnetic storage devices; or any suitable combination thereof.
[0314] The instructions can form an application program tangibly embodied on a processor-readable medium.
[0315] The instructions can be, for example, in hardware, firmware, software, or combinations thereof. The instructions can be found in, for example, an operating system, a utility program, a library of functions, a firmware, a stand-alone application, or combinations thereof. Accordingly, the processor can be characterized as, for example, a device configured to carry out a process and a device that comprises a processor-readable medium having instructions for carrying out a process. Additionally or in the alternative, the processor-readable medium can store a data value produced by an implementation, in addition to or in lieu of storing instructions.
[0316] 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 (beamers), "cave" (a 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 moving vehicle.
[0317] The computer software can be implemented by the processor 710 or by hardware or by a combination of hardware and software. The embodiments can also be implemented by one or more integrated circuits as a non-limiting example. The memory 720 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, fixed, removable, or circuit-based memory devices. The processor 710 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 multi-core architecture, as non-limiting examples.
[0318] As will be evident to one of ordinary skill in the art, implementations can produce a variety of signals including as process data, information, and / or control signals. Information can be represented as bit streams within the signals. The signals can be transmitted as part of a network that interacts with the described implementations. For example, the signals can be transmitted as E- waves (e.g., using the radio frequency portion of the spectrum), E-magnetic waves, E-light waves, E-holographic signals, or E-baseband signals. Thus, various transmission protocols can be employed, including digital transmission (e.g., Edge, Ethernet, and the like), optical transmission (e.g., using infrared signals), and the like. Although the signals can be transmitted by an electrical or optical medium, such as a copper cable, a fiber optic cable, etc., various forms of propagation, including E- waves, E-light waves, and the like can be used to carry the signals as part of the intended transmission.
[0319] 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 "includes," "including," "comprises," 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. Further, as used herein, when an element is referred to and / or claimed as "responsive to" or "connected to" another element, it can be directly responsive to or connected to the other element, or it can be indirectly responsive to or connected to the other element through one or more other elements. In contrast, when an element is referred to and / or claimed as "directly responsive to" or "directly connected to" another element, there are no intervening elements.
[0320] It will be understood that the use of any of the terms "or," "and," and "at least one of," for example, in the items "at least one of A and / or B" and "at least one of A and B," can be intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of both options (A and B). As a further example, in the item "at least one of A, B, and / or C" and in the item "at least one of A, B and C," such phrasing can be intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of the third listed option (C) only, or the selection of the first and the second listed options (A and B) only, or the selection of the first and third listed options (A and C) only, or the selection of the second and third listed options (B and C) only, or the selection of all three options (A and B and C). This can be extended, as is clear to one of ordinary skill in the art, for as many items as are listed.
[0321] Various numerical values can be used in this application. Particular values can be for purposes of example, and the aspects described are not limited to these particular values.
[0322] It should 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- wise or chronological- wise order is implied by such terms as first, second, etc.
[0323] Reference to “one example embodiment” or “an example embodiment” or “one implementation” or “an implementation” and other variations thereof, frequently appear throughout this application. These phrases generally refer to the particular structure, feature, characteristic, etc. being described with reference to an embodiment / implementation. Therefore, appearances of these phrases, as well as 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, are not necessarily all referring to the same embodiment.
[0324] Similarly, reference to “in accordance with an example embodiment / example / implementation” or “in an example embodiment / example / implementation” and other variations thereof, frequently appear throughout this application. These phrases generally refer to the particular feature, structure, or characteristic being described with reference to an example embodiment / example / implementation. Therefore, appearances of the phrases “in accordance with an example embodiment / example / implementation” or “in an example embodiment / example / implementation” at different places in the specification are not necessarily all referring to the same example embodiment / example / implementation, nor are independent or alternative example embodiments / examples / implementations necessarily mutually exclusive of other example embodiments / examples / implementations.
[0325] Reference signs appearing in the claims are only used for illustration and should not be construed as limiting the scope of the claims. Although not explicitly described, embodiments / examples and variations can be taken in any combination or sub-combination.
[0326] When the drawings are presented as flowcharts, it should be understood that each block in the flowchart also provides a block diagram for a corresponding apparatus. Similarly, when the drawings are presented as block diagrams, it should be understood that each block in the block diagram also provides a flowchart for a corresponding method / process.
[0327] Although some of the diagrams include arrows on communication paths to demonstrate the primary direction of communication, it is to be understood that communication can occur in the opposite direction to the depicted arrows.
[0328] Various implementations relate to decoding. As used in this application, “decoding” can encompass all or part of a process performed, for example, 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 suitable for 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 includes or alternatively includes a process performed, for example, by a decoder of various implementations described in this application,
[0329] As further examples, in one embodiment “decoding” can refer to dequantization only, in one embodiment “decoding” can refer to entropy decoding, in another embodiment “decoding” can refer to differential decoding only, and in another embodiment “decoding” can refer to a combination of dequantization, entropy decoding, and differential decoding. Based on the specific context of the description, whether the phrase “decoding process” is intended to refer specifically to a subset of operations or more broadly to a wider decoding process will be clear, and is believed to be well understood by those skilled in the art.
[0330] Various implementations relate to encoding. In a similar manner as discussed above with respect to “decoding,” as used in this application, “encoding” can encompass all or part of a process performed, for example, 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 includes or alternatively includes a process performed by an encoder of various implementations described in this application.
[0331] As further examples, in one embodiment “encoding” can refer to quantization only, in one embodiment “encoding” can refer to entropy encoding only, in another embodiment “encoding” can refer to differential encoding only, and in another embodiment “encoding” can refer to a combination of quantization, differential encoding, and entropy encoding. Based on the specific context of the description, whether the phrase “encoding process” is intended to refer specifically to a subset of operations or more broadly to a wider encoding process will be clear, and is believed to be well understood by those skilled in the art.
[0332] Further, the application can refer to “determining” a plurality of pieces of information. Determining information can include one or more of, for example, estimating information, calculating information, predicting information, or retrieving information from memory.
[0333] Further, the application can refer to “accessing” a plurality of pieces of information. Accessing information can include one or more of, for example, receiving information, retrieving information (e.g., from memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.
[0334] Additionally, the application can refer to "receiving" a plurality of pieces of information. As with "accessing," receiving is intended to be a broad term. Receiving information can include one or more of, for example, accessing information or retrieving information (e.g., from memory). Moreover, "receiving" is typically involved, in one way or another, during operations such as, for example, storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.
[0335] Moreover, as used herein, the word "signaling" in addition to this refers to indicating something to a corresponding decoder. For example, in certain embodiments, the encoder signals certain information such as the number of points of a point cloud, the coordinates of a first point in a 2D coordinate (φ, λ) system or the order o(Pi), the number of replicated points, the order index difference, or sensor setup parameters such as a basic azimuth offset Δφ or an elevation angle θk associated with a sensor k k In this way, in embodiments, the same parameters can be used at both the encoder side and the decoder side. Thus, for example, the encoder can send (explicit signaling) certain parameters to the decoder so that the decoder can use the same certain parameters. Conversely, if the decoder already has the certain parameters as well as other parameters, signaling can be used without sending (implicit signaling) to simply allow the decoder to know and select the certain parameters. By avoiding the transmission of any actual functionality, bit savings are achieved in various embodiments. It will be appreciated that signaling can be done 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 "signal," the word "signal" can also be used as a noun herein.
[0336] A number of implementations have been described. However, it is to 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 of encoding a point cloud captured by a set of sensors into a bitstream of encoded point cloud data, wherein, The method comprises: a) for a point of said point cloud, obtaining (110) a sensor index (i) associated with a sensor that captured said point , an azimuth angle (a) representative of a capturing angle of said sensor , each captured point being represented by a point in a 2D discrete angular plane in which said sensor index (i) is a coordinate of a first axis of said 2D discrete angular plane and said azimuth angle (a) is a coordinate of a second axis of said 2D discrete angular plane; b) obtaining (115) an ordered point list of the point cloud by ordering the points according to a lexicographic order, an order index being associated with each point of the point cloud according to the rank of the point in the ordered point list, by first ordering the points based on the azimuth angle ( ) and then based on the sensor index ( ) or first ordering the points based on the sensor index ( ) and then based on the azimuth angle ( ). c) obtaining (120) a next point (Pn) in the ordered list of points that is after the current point (Pc) and has a different order index (I n) than the order index (Ic) of the current point (Pc), and obtaining a number of duplicate points (Ndupn) equal to a number of points after the current point (Pc) that have an order index equal to the order index (Ic) of the current point (Pc); a number of points after the current point (Pc) that have an order index equal to the order index (Ic) of the current point (Pc); d) encoding (130) the number of duplication points (Ndupn) in the bitstream; e) obtain (140) and encode (145) in the bitstream to represent the next point ( The sequential index of ) ) and the current point ( The sequential index () The order index difference between the two () ); f) By saying the next point ( ) is considered the new current point ( ) to update (150) the current point ( );as well as repeating steps c), d), e) and f) until all points in the ordered point list have been considered; wherein the method further comprises: Encoding binary information (BP n ) in the bitstream, the binary information indicating whether the copy point of the current point ( ) has the same three-dimensional coordinates, and if the binary information indicates that the copy point of the current point ( ) has the same three-dimensional Cartesian coordinates, then steps e to f are bypassed.
2. The method of claim 1, wherein, encoding (130) the number of copies (Ndup n ) comprises: - binarizing said number of duplication points (Ndup n ) into a series of binary data whose number is lower than or equal to a maximum limit; and - entropy encoding each binary data of the series of binary data.
3. The method of claim 2, wherein, Each binary data is context adaptive arithmetically encoded such that the context used to encode the binary data depends on the sensor index associated with the current point.
4. The method of claim 2, wherein, coding the number of replication points (Ndup n ) also includes coding a residual obtained as a difference between the number of replication points (Ndup n ) and the maximum bound.
5. The method of claim 4, wherein, Encoding the residual comprises using an exponential Golomb code.
6. A method of decoding a point cloud captured by a set of sensors from a bitstream of encoded point cloud data, the method comprising: a) decoding (210), from said bitstream, information representative of a number (Ndup ) of duplicated points associated with a current point (Pcur n ) of said point cloud that has been decoded; b) reconstructing (220) a number of replicas equal to the number of decoded replicas (Ndup n ), each replica having a same azimuth angle equal to the azimuth angle of the already decoded current point ( ) and a sensor index equal to the sensor index of the already decoded current point ( ). c) Decode from the bitstream (230) for the next point ( The difference in the order index () The next point ( ) has the same as the currently decoded point ( The sequential index of ) Different sequential indices ( The sequential index is associated with points in the point cloud based on the rank of the point in the ordered point list, which is obtained by first basing the azimuth associated with the point in the point cloud and then basing it on the sensor index, or first basing it on the sensor index. And then based on the azimuth angle ( The points in the point cloud are obtained by sorting them according to lexicographical order. d) From the decoded sequence index difference ( ) and the currently decoded point ( The sequential index () ) obtain (240) for the next point ( The sequential index of ) ); e) from the next point ( The sequential index () ) obtain (250) and capture the next point ( The sensor index associated with the sensor () ) and the azimuth angle representing the capture angle of the sensor ( ); By the next point ( The already decoded current point is treated as the new, already decoded current point to update the already decoded current point. ), and repeat steps a) to e) until all information representing the number of currently decoded points associated with the point cloud has been decoded; wherein the method further comprises: decoding binary information (BP n ) from the bitstream, the binary information indicating whether the copy point of the already decoded current point ( ) has the same three-dimensional coordinates, and if the binary information indicates that the copy point of the current point ( ) has the same three-dimensional Cartesian coordinates, then steps c to e are bypassed.
7. The method of claim 6, wherein, decoding (210) the number of duplication points (Ndup n ) comprises: entropy decoding each binary data of the series of binary data whose number is lower than or equal to a maximum bound; and obtaining the number of duplicates (Ndup) by unary decoding of at least one decoded binary data of the series of binary data n ).
8. The method of claim 7, wherein, Each binary data is context adaptive arithmetically decoded such that the context used to decode the binary data depends on the sensor index associated with the current point that has been decoded.
9. The method of claim 7, wherein, decoding the number of copies (Ndup n ) further comprises decoding a residual obtained as a difference between the number of copies (Ndup n ) and the maximum limit.
10. The method of claim 9, wherein, Decoding the residual comprises using an exponential Golomb code.
11. An apparatus for encoding a point cloud captured by a set of sensors into a bitstream of encoded point cloud data, the apparatus comprising one or more processors configured to perform the method of any one of claims 1-5.
12. An apparatus for decoding a point cloud captured by a set of sensors from a bitstream of encoded point cloud data, the apparatus comprising one or more processors configured to perform the method of any one of claims 6-10.
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 the method of encoding a point cloud captured by a set of sensors into a bitstream of encoded point cloud data, wherein, The method comprises: a) for a point of said point cloud, obtaining a sensor index (i) associated with the sensor that captured said point, , an azimuth angle (a) representative of the capture angle of said sensor, , each captured point being represented by a point in a 2D discrete angular plane in which said sensor index (i) is the coordinate of a first axis of said 2D discrete angular plane and said azimuth angle (a) is the coordinate of a second axis of said 2D discrete angular plane; b) obtaining an ordered point list of the point cloud by ordering the points according to a lexicographic order, a sequential index being associated with each point of the point cloud according to the rank of the point in the ordered point list, by first ordering the points based on the azimuth angle ( ) and then based on the sensor index ( ) or first ordering the points based on the sensor index ( ) and then based on the azimuth angle ( ). c) Obtain the ordered point list described in (120) at the current point ( After that and having the same characteristics as the current point ( The sequential index of ) Different sequential indices ( The next point () ), and obtain the result at the current point ( The following has the same characteristics as the current point. The sequential index ( The number of points with equal sequential indices and the number of duplicate points (Ndup) are equal. n ); d) encoding the number of duplication points (Ndup n ) in the bitstream; e) Obtain and encode in the bitstream a representation of the next point ( The sequential index () ) and the current point ( The sequential index of ) The order index difference between the two () ); f) By saying the next point ( ) is considered the new current point ( To update the current point ( );as well as repeating steps c), d), e) and f) until all points in the ordered point list have been considered; wherein the method further comprises: Encoding binary information (BP n ) in the bitstream, the binary information indicating whether the copy point of the current point ( ) has the same three-dimensional coordinates, and if the binary information indicates that the copy point of the current point ( ) has the same three-dimensional Cartesian coordinates, then steps e to f are bypassed.
14. A non-transitory storage medium carrying instructions of program code that, when executed by a processor, implement a method of encoding a point cloud captured by a set of sensors into a bitstream of encoded point cloud data, wherein, The method comprises: a) for a point of said point cloud, obtaining a sensor index (i) associated with the sensor that captured said point, , an azimuth angle (a) representative of the capture angle of said sensor, , each captured point being represented by a point in a 2D discrete angular plane in which said sensor index (i) is the coordinate of a first axis of said 2D discrete angular plane and said azimuth angle (a) is the coordinate of a second axis of said 2D discrete angular plane; b) obtaining an ordered point list of the point cloud by ordering the points according to a lexicographic order, a sequential index being associated with each point of the point cloud according to the rank of the point in the ordered point list, by first ordering the points based on the azimuth angle ( ) and then based on the sensor index ( ) or first ordering the points based on the sensor index ( ) and then based on the azimuth angle ( ). c) Obtain the ordered point list described in (120) at the current point ( After that and having the same characteristics as the current point ( The sequential index of ) Different sequential indices ( The next point () ), and obtain the result at the current point ( The subsequent ones have the same characteristics as the current point ( The sequential index of ) The number of points with equal sequential indices and the number of duplicate points (Ndup) are equal. n ); d) encoding the number of duplication points (Ndup n ) in the bitstream; e) Obtain and encode in the bitstream a representation of the next point ( The sequential index of ) ) and the current point ( The sequential index of ) The order index difference between the two () ); f) By saying the next point ( ) is considered the new current point ( ) to update (150) the current point ( );as well as repeating steps c), d), e) and f) until all points in the ordered point list have been considered; wherein the method further comprises: Encoding binary information (BP n ) in the bitstream, the binary information indicating whether the copy point of the current point ( ) has the same three-dimensional coordinates, and if the binary information indicates that the copy point of the current point ( ) has the same three-dimensional Cartesian coordinates, then steps e to f are bypassed.
15. 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 captured by a set of sensors from a bitstream of encoded point cloud data, the method comprising: a) decoding from the bitstream information representative of a number of duplicate points (Ndup ) associated with a current point (Pcur n ) of the point cloud that has been decoded; b) reconstructing a number of replicas equal to the number of decoded replicas (Ndup n ), each replica having the same azimuth angle equal to the azimuth angle of the already decoded current point ( ) and the same sensor index equal to the sensor index of the already decoded current point ( ). c) Decode from the bitstream for the next point ( The difference in the order index () The next point ( ) has the same as the currently decoded point ( The sequential index of ) Different sequential indices ( The sequential index is associated with points in the point cloud based on the rank of the point in the ordered point list, which is obtained by first basing the azimuth associated with the point in the point cloud and then basing it on the sensor index, or first basing it on the sensor index. And then based on the azimuth angle ( The points in the point cloud are obtained by sorting them according to lexicographical order. d) obtaining an order index for the next point (Pn) from the decoded order index difference (Dn) and the order index (On) of the already decoded current point (Pn-1). e) from the next point ( The sequential index of ) ) to obtain and capture the next point ( The sensor index associated with the sensor () ) and the azimuth angle representing the capture angle of the sensor ( ); By the next point ( The current point that has already been decoded is considered as the new, already decoded current point to update the already decoded current point. ), and repeat steps a) to e) until all information representing the number of currently decoded points associated with the point cloud has been decoded; wherein the method further comprises: decoding binary information (BP n ) from the bitstream, the binary information indicating whether the copy point of the already decoded current point ( ) has the same three-dimensional coordinates, and if the binary information indicates that the copy point of the current point ( ) has the same three-dimensional Cartesian coordinates, then steps c to e are bypassed.
16. A non-transitory storage medium carrying instructions of a program which, when executed by a processor, implement a method of decoding a point cloud captured by a set of sensors from a bitstream of encoded point cloud data, the method comprising: a) decoding from the bitstream information representative of a number of duplicate points (Ndup n ) associated with a current point (Pcur ) of the point cloud that has been decoded; b) reconstructing a number of replicas equal to the number of decoded replicas (Ndup n ), each replica having the same azimuth angle equal to the azimuth angle of the already decoded current point ( ) and the same sensor index equal to the sensor index of the already decoded current point ( ). c) Decode from the bitstream for the next point ( The difference in the order index () The next point ( ) has the same as the currently decoded point ( The sequential index of ) Different sequential indices ( The sequential index is associated with points in the point cloud based on the rank of the point in the ordered point list, which is obtained by first basing the azimuth associated with the point in the point cloud and then basing it on the sensor index, or first basing it on the sensor index. And then based on the azimuth angle ( The points in the point cloud are obtained by sorting them according to lexicographical order. d) obtaining an order index for the next point (Pn) from the decoded order index difference (Dn) and the order index (On) of the already decoded current point (Pn-1). e) obtaining, from said sequential index (i) of said next point (Pn), a sensor index (j) associated with a sensor that captured said next point (Pn) and an azimuth angle (a) representing a capturing angle of said sensor; By the next point ( The current point that has already been decoded is considered as the new, already decoded current point to update the already decoded current point. ), and repeat steps a) to e) until all information representing the number of currently decoded points associated with the point cloud has been decoded; wherein the method further comprises: decoding binary information (BP n ) from the bitstream, the binary information indicating whether the copy point of the already decoded current point ( ) has the same three-dimensional coordinates, and if the binary information indicates that the copy point of the current point ( ) has the same three-dimensional Cartesian coordinates, then steps c to e are bypassed.