Method and apparatus for entropy encoding / decoding point cloud geometry data captured by a spin sensor head

CN116724212BActive Publication Date: 2026-09-04BEIJING XIAOMI MOBILE SOFTWARE CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202180086226.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-12-23
Filing Date
2021-10-13
Publication Date
2026-09-04
Estimated Expiration
2041-10-13

AI Technical Summary

Technical Problem

[0031]简而言之,在用于捕获点云的稀疏几何数据的自旋传感器头的框架中,现有技术没有解决结合编码和解码简单性、低时延和压缩性能的问题

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116724212B_ABST
    Figure CN116724212B_ABST
Patent Text Reader

Abstract

Methods and apparatuses for encoding / decoding a point cloud representing physical objects are provided. The points of the point cloud are ordered based on an azimuth angle representing a capture angle of a sensor and a sensor index associated with the sensor. The encoding method comprises encoding into a bitstream at least one order index difference of a difference between order indexes representing two consecutive ordered points by: obtaining at least one bin data by binarizing the at least one order index difference; and for each bin data, selecting a context based on a distance between an azimuth angle associated with the bin data and an azimuth angle of an already encoded point, and context-based entropy encoding the bin data in the bitstream based on the selected context.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references to related applications

[0002] This application claims priority to European Patent Application No. EP 20306673.3, filed on 23 December 2020, the contents of which are incorporated herein by reference in their entirety. Technical Field

[0003] This application generally relates to point cloud compression, and more particularly to methods and apparatus for entropy encoding / decoding point cloud geometric data captured by a spin sensor head. Background Technology

[0004] This section is intended to introduce the reader to various aspects of the art that may relate to aspects of at least one exemplary embodiment of the present application described below and / or claimed. This discussion is intended to help provide the reader with background information to facilitate a better understanding of the various aspects of the present application.

[0005] Point clouds, as a format for representing 3D data, have recently gained attention due to their versatility in representing all types of physical objects or scenes. Point clouds can be used for various purposes, such as cultural heritage / buildings, where objects like statues or buildings are scanned in 3D to share their spatial configuration without sending or accessing them. Furthermore, it is a way to ensure the preservation of knowledge about objects in the event of potential damage; for example, temples destroyed by earthquakes. Such point clouds are typically static, colored, and massive.

[0006] Another use case is in topology and cartography, where using 3D representation allows maps to be not limited to a plane and can include topography. Google Maps is now a good example of a 3D map, but it uses a grid instead of point clouds. However, point clouds can be a suitable data format for 3D maps, and such point clouds are typically static, colored, and huge.

[0007] Virtual reality (VR), augmented reality (AR), and immersive worlds have recently become hot topics and are envisioned by many as the future of 2D flat video. The basic idea is to immerse the viewer in their surrounding environment, whereas standard television only allows the viewer to see a virtual world directly in front of them. Immersion has several levels depending on the viewer's degree of freedom within the environment. Point clouds are a good candidate format for distributing VR / AR worlds.

[0008] The automotive industry, especially the foreseeable autonomous vehicles, is another area where point clouds can be used extensively. Autonomous vehicles should be able to "detect" their environment to make sound driving decisions based on the presence and nature of their nearest neighbors and road configurations.

[0009] A point cloud is a collection of points in three-dimensional (3D) space, with optional additional values ​​assigned to each point. These additional values ​​are often referred to as attributes. Attributes can be, for example, three-component color, material properties (such as reflectivity), and / or a two-component normal vector of the surface associated with the point.

[0010] Therefore, a point cloud is a combination of geometry (the position of a point in 3D space, usually represented by 3D Cartesian coordinates x, y, and z) and properties.

[0011] Point clouds can be captured by various types of devices, such as arrays of cameras, depth sensors, lasers (light detection and ranging, also known as lidar), radar, or can be generated by computers (e.g., in film post-production). Depending on the use case, a point cloud can have thousands to billions of points for mapping applications. The raw representation of a point cloud requires a very high number of bits per point, with at least a dozen bits for each Cartesian coordinate x, y, or z, and optionally even more bits for attributes(s), such as three times 10 bits for color.

[0012] In many applications, it is crucial to be able to distribute point clouds to end users or store them on servers while maintaining an acceptable (or preferably very good) quality of experience, consuming only a reasonable amount of bit rate or storage space. Efficient compression of these point clouds is key to making distribution chains practical for many immersive worlds.

[0013] For distribution and visualization by end users, such as on AR / VR glasses or any other 3D-enabled device, compression can be lossy (as in video compression). Other use cases do require lossless compression, such as medical applications or autonomous driving, to avoid altering the results of decisions derived from subsequent analysis of the compressed and transmitted point cloud.

[0014] Until recently, the mass market had not solved the problem of point cloud compression (also known as PCC), nor did it have a standardized point cloud codec available. In 2017, the standardization working group ISO / JCT1 / SC29 / WG11, also known as the Moving Picture Experts Group or MPEG, initiated a working project on point cloud compression. This resulted in two standards, namely...

[0015] • MPEG-I Part 5 (ISO / IEC 23090-5) or Video-Based Point Cloud Compression (V-PCC)

[0016] • MPEG-I Part 9 (ISO / IEC 23090-9) or Geometry-Based Point Cloud Compression (G-PCC)

[0017] The V-PCC encoding method compresses point clouds by performing multiple projections on 3D objects to obtain 2D tiles packed into an image (or video when processing dynamic point clouds). The resulting image or video is then compressed using an existing image / video codec, allowing full utilization of already deployed image and video solutions. By its very nature, V-PCC is only efficient on dense and continuous point clouds because image / video codecs cannot compress non-smooth tiles, such as those obtained by projecting sparse geometry data captured by LiDAR.

[0018] The G-PCC coding method has two schemes for compressing captured sparse geometric data.

[0019] The first approach is based on an occupancy tree, which can be any type of tree—octree, quadtree, or binary tree—to represent the point cloud geometry. Occupied nodes are split until a certain size is reached, and the occupied leaf nodes provide the 3D location of points, typically at the center of these nodes. Occupancy information is carried through occupancy flags, which signal the occupancy status of each child node of the node. High-level compression of occupancy flags for dense point clouds can be achieved by using neighbor-based prediction techniques. Sparse point clouds can also be addressed by directly encoding the location of points within a node that are not of the minimum size, stopping tree construction when only isolated points exist in the node; this technique is called Direct Encoding Mode (DCM).

[0020] The second approach is based on a prediction tree, where each node represents the 3D location of a point, and the parent / child relationship between nodes represents the spatial prediction from parent to child. Figure 1 The diagram illustrates a portion of the prediction tree, where points (nodes) are represented by black circles, and the relationship between parent and child points is indicated by arrows. Each child point has a unique parent point. Therefore, the current point P... n-1 It has a unique parent point, a unique grandparent point, and a unique great-grandparent point. The spatial predictor for the current point is constructed using these ancestor points; for example, the predictor could be the parent point itself, such as... Figure 2 The linear prediction from grandfather to parent point shown, or as... Figure 3 The parallelogram prediction of the three ancestors is shown. Then, a residual is constructed by subtracting the current point from the predictor. This residual is encoded in the bitstream using classical binarization and entropy coding techniques. This approach can only solve sparse point clouds and offers the advantages of lower latency and simpler decoding than occupancy-based methods. However, the compression performance is only slightly better than the first occupancy-based method, and the encoding is also complex because the encoder must focus on finding the best predictor (among a long list of potential predictors) when constructing the prediction tree.

[0021] In both schemes, attribute (decoding) encoding is performed after geometry (decoding) encoding, effectively resulting in two encodings. Therefore, the joint geometry / attribute low latency is achieved by slicing the 3D space into independently coded sub-volumes without requiring prediction between sub-volumes. When using many slices, this severely impacts compression performance.

[0022] Combining the requirements for simplicity, low latency, and compression performance in encoders and decoders remains a problem that existing point cloud codecs have yet to satisfactorily solve.

[0023] A key use case is the transmission of sparse geometric data captured by spin-based LiDAR mounted on moving vehicles. This typically requires a simple, low-latency embedded encoder. Simplicity is crucial because the encoder may be deployed on computing units performing other processing in parallel (such as (semi-)autonomous driving), limiting the processing power available to the point cloud encoder. Low latency is also required to allow for rapid transmission from the vehicle to the cloud, enabling real-time viewing of local traffic based on multi-vehicle data and making sufficiently fast decisions based on traffic information. While 5G can reduce transmission latency sufficiently, the encoder itself should not introduce excessive latency due to encoding. Furthermore, compression performance is extremely important, as the data stream from millions of vehicles to the cloud is expected to be enormous.

[0024] Specific priors associated with the sparse geometric data captured by spin lidar have been utilized in G-PCC, resulting in very significant compression gains.

[0025] First, G-PCC utilizes the acquisition elevation angle (relative to the horizontal ground) from the spin lidar head, such as... Figure 4 and 5 As shown in the diagram, the lidar head 10 includes a collection of sensors 11 (lasers), five of which are shown here. The lidar head 10 can spin about the vertical axis z to capture the geometric data of the physical object. The geometric data captured by the lidar is then processed using spherical coordinates (r... 3D ( , φ, θ) represents, where r 3D φ is the distance between point P and the center of the lidar head, φ is the azimuth angle of the lidar head's spin relative to the reference, and θ is the elevation angle of the lidar head's sensor k relative to the horizontal reference plane.

[0026] A regular distribution along the azimuth angle was observed in the data captured by the lidar, such as Figure 6 The regularity described above is used in G-PCC to obtain a quasi-1D representation of the point cloud, where, up to noise, only the radius r... 3D It falls within the range of continuous values, while angles φ and θ only use discrete values. Up to I-1, where I is the number of azimuth angles used to capture the point. Up to K-1, where K is the number of sensors in the lidar head 10. Essentially, G-PCC represents the sparse geometric data captured by the lidar on the 2D discrete angular plane (v, θ), such as... Figure 6 The above depicts the radius value r of each point. 3D .

[0027] This quasi-1D property has been utilized in occupancy trees and prediction trees in G-PCC by predicting the position of the current point based on already encoded points using the discrete properties of angles in spherical coordinate space.

[0028] More precisely, the occupancy tree heavily utilizes DCM and entropy-encodes the direct locations of points within a node using a context-adaptive entropy encoder. This is followed by a local transformation from point locations to angular coordinates (φ, θ) and these angular coordinates relative to the discrete angular coordinates (φ) obtained from the previously encoded points. i θ k The context is obtained from the position of the coordinate space. This is achieved using the quasi-1D properties of the coordinate space (r). 2D φ i θ k Prediction trees directly encode angular coordinates (r) 2D The first version of the midpoint position of (φ, θ), where r 2D It is the projected radius on the horizontal xy plane, such as Figure 7 As depicted above. Then, the angular coordinates (r) 2D The coordinates (x, y, z) are converted into 3D Cartesian coordinates (x, y, z), and the xyz residuals are encoded to address coordinate transformation errors, approximations of elevation and azimuth angles, and potential noise.

[0029] Elevation and azimuth angles, as well as potential noise.

[0030] G-PCC does use angle priors to better compress the sparse geometry data captured by spin lidar, but it doesn't adapt the coding structure to the order of capture. Essentially, the occupancy tree must be encoded up to its last depth before output points. This occupancy is encoded in a so-called breadth-first order: first, the occupancy of the root node is encoded, indicating its occupied child nodes; then the occupancy of each occupied child node is encoded, indicating its occupied grandchild nodes; this iteratively continues in the tree depth until leaf nodes can be determined and the corresponding points are provided / output to the application or one or more attribute coding schemes. Regarding the prediction tree, the encoder is free to choose the order of points in the tree, but for good compression performance and optimized prediction accuracy, G-PCC recommends encoding one tree per laser, such as... Figure 8As described above. This primarily suffers from the same drawback as using one encoding slice per laser, namely, suboptimal compression performance, because it does not allow for prediction between lasers (sensors) and does not provide low latency for the encoder. Worse still, each laser (sensor) should have its own encoding process and the number of core encoding units should equal the number of sensing lasers; this is impractical.

[0031] In short, within the framework of spin sensor heads used to capture sparse geometric data of point clouds, existing technologies have not solved the problem of combining encoding and decoding simplicity, low latency, and compression performance.

[0032] At least one exemplary embodiment of this application has been designed in consideration of the foregoing. Summary of the Invention

[0033] The following section presents a simplified outline of at least one exemplary embodiment to provide a basic understanding of some aspects of this application. This outline is not an exhaustive summary of the exemplary embodiments. It is not intended to identify key or essential elements of the embodiments. The following outline presents only some aspects of at least one of the exemplary embodiments in a simplified form as a prelude to a more detailed description provided elsewhere in the document.

[0034] According to a first aspect of this application, a method is provided for encoding a point cloud into a bit stream of encoded point cloud data representing physical objects, wherein the points of the point cloud are ordered based on azimuth angles representing the acquisition angles of a sensor and sensor indices associated with the sensor. The method includes encoding at least one order index difference, representing the difference between the order indices of two consecutive ordered points, into the bit stream by: obtaining at least one binary data by binarizing the at least one order index difference; and for each binary data, selecting a context based on the distance between the azimuth angle associated with the binary data and the azimuth angle of the encoded point; and performing context-based entropy encoding on the binary data in the bit stream based on the selected context.

[0035] According to an exemplary embodiment, the encoded point is the penultimate encoded point of the sensor index that is the same as the sensor index associated with the binary data.

[0036] The bitstream obtained in this application can be transmitted quickly to achieve low latency while obtaining a high level of compression.

[0037] According to an exemplary embodiment, the method further includes: transmitting the bit stream to the cloud.

[0038] According to a second aspect of this application, a method is provided for decoding a point cloud from a bitstream of encoded point cloud data representing a physical object. The method includes decoding at least one order index difference representing the difference between order indices of two consecutive ordered points based on at least one binary data decoded from the bitstream, each binary data being decoded by: selecting a context based on the distance between an azimuth associated with the binary data and the azimuth of the decoded point; performing context-based entropy decoding on the at least one binary data based on the selected context and probability information associated with the binary data decoded from the bitstream; and decoding the order index difference from the at least one context-based entropy-decoded binary data.

[0039] According to an exemplary embodiment, the decoded point is the penultimate decoded point having the same sensor index as the sensor index associated with the binary data.

[0040] According to an exemplary embodiment, the context used to decode binary data is selected from a context table indexed by a context index, and the context index used for binary data is equal to the distance between the azimuth associated with the binary data and the azimuth of the decoded point.

[0041] According to an exemplary embodiment, the context for decoding binary data is selected from a context table indexed by a context index, wherein the context index for the binary data depends on the specific rank of the binary data in a series of binary data representing the order index difference.

[0042] According to an exemplary embodiment, the context used for decoding binary data is selected from a context table indexed by a context index, wherein the context index used for binary data depends on the sensor index associated with the binary data.

[0043] According to an exemplary embodiment, the context used for decoding binary data is selected from a context table indexed by a context index, and the context index used for binary data depends on sensor packets that are regrouped with sensors having similar elevation angles.

[0044] According to an exemplary embodiment, the method further includes: obtaining a bit stream from the cloud.

[0045] According to an exemplary embodiment, the method further includes: obtaining a bit stream from the vehicle.

[0046] According to a third aspect of this application, an apparatus is provided for encoding point clouds into a bit stream of encoded point cloud data representing physical objects. The apparatus includes one or more processors configured to perform the method according to the first aspect of this application.

[0047] According to a fourth aspect of this application, an apparatus is provided for decoding a point cloud from a bitstream of encoded point cloud data representing a physical object. The apparatus includes one or more processors configured to perform the method according to a second aspect of this application.

[0048] According to a fifth aspect of this application, a bitstream of encoded point cloud data representing a physical object is provided. The bitstream includes probabilistic information associated with at least one binary data representing a difference in order indices, the difference representing the difference between the order indices of two consecutive ordered points in the point cloud.

[0049] 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 a first aspect of this application.

[0050] According to a seventh aspect of this application, a non-transitory storage medium is provided, the non-transitory storage medium carrying instructions for performing program code according to a first aspect of this application.

[0051] 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.

[0052] According to a ninth aspect of this application, a non-transitory storage medium is provided, the non-transitory storage medium carrying instructions for performing program code according to a second aspect of this application.

[0053] The specific properties of at least one of the exemplary embodiments, as well as other objects, advantages, features, and uses of at least one of the exemplary embodiments, will become apparent from the following description of the examples taken in conjunction with the accompanying drawings. Attached Figure Description

[0054] Reference will now be made to the accompanying drawings, which illustrate exemplary embodiments of this application, and wherein:

[0055] Figure 1 The illustration shows a portion of a prediction tree used for encoding point clouds according to existing techniques;

[0056] Figure 2 The illustration shows a linear prediction in a portion of a prediction tree used to encode a point cloud, according to existing techniques.

[0057] Figure 3 The illustration shows a parallelogram prediction in a portion of a prediction tree used for encoding point clouds, according to existing techniques.

[0058] Figure 4The illustration shows a side view of a sensor head and some of its parameters according to existing technology;

[0059] Figure 5 The illustration shows a top view of a sensor head and some of its parameters according to existing technology;

[0060] Figure 6 The illustration shows the regular distribution of data captured by a spin sensor head according to existing technology;

[0061] Figure 7 The diagram illustrates the representation of points in 3D space according to existing technology;

[0062] Figure 8 The diagram illustrates the encoding of a prediction tree based on existing technology;

[0063] Figure 9 The diagram illustrates the steps of a method 100 for encoding a point cloud into a bit stream of encoded point cloud data representing a physical object, according to at least one exemplary embodiment.

[0064] Figure 10 The illustration shows an example of an encoded ordered point according to an exemplary embodiment of this application;

[0065] Figure 11 The illustration shows an example of ordered capture points represented in 2D space according to an exemplary embodiment of this application;

[0066] Figure 12 The illustration shows another example of ordered capture points represented in 2D space according to an exemplary embodiment of this application;

[0067] Figure 13 An example of a capture point according to an exemplary embodiment of this application is illustrated;

[0068] Figure 14 An example of sorted and quantized capture points is illustrated according to an exemplary embodiment of this application;

[0069] Figure 15 The diagram illustrates the steps of a method 200 for decoding a point cloud from a bit stream of encoded point cloud data representing a physical object, according to at least one exemplary embodiment.

[0070] Figure 16 The diagram illustrates the steps of a method 800 for entropy encoding of order index differences according to at least one exemplary embodiment.

[0071] Figure 17 A block diagram of a context-adaptive arithmetic encoder according to at least one exemplary embodiment is illustrated;

[0072] Figure 18The illustration shows the drawbacks when the azimuth associated with binary data is the distance between the azimuth of the last encoded point and the azimuth of the last encoded point.

[0073] Figure 19 The illustration shows the drawbacks when the azimuth associated with binary data is the distance between the azimuth of the last encoded point and the azimuth of the last encoded point.

[0074] Figure 20 A block diagram illustrating the steps of a method 900 for entropy decoding of order index differences according to at least one exemplary embodiment is shown; and

[0075] Figure 21 A schematic block diagram illustrating an example of a system that implements various aspects and exemplary embodiments is shown.

[0076] Similar reference numerals can be used to represent similar components in different figures. Detailed Implementation

[0077] At least one of the exemplary embodiments will be described more fully below with reference to the accompanying drawings, which illustrate examples of at least one of the exemplary embodiments. However, the exemplary embodiments may be implemented in many alternative forms and should not be construed as limited to the examples set forth herein. Thus, it should be understood that the exemplary embodiments are not intended to be limited to the specific forms disclosed. Rather, this disclosure is intended to cover all modifications, equivalents, and alternatives falling within the spirit and scope of this application.

[0078] When the accompanying drawings are presented in the form of flowcharts, it should be understood that they also provide block diagrams of the corresponding devices. Similarly, when the accompanying drawings are presented in the form of block diagrams, it should be understood that they also provide flowcharts of the corresponding methods / processes.

[0079] At least one of these aspects generally relates to point cloud encoding and decoding, and at least one other aspect generally relates to the transmission of a bit stream generated or encoded.

[0080] Furthermore, this aspect is not limited to MPEG standards such as MPEG-I Part 5 or Part 9 related to point cloud compression, but can be applied to other standards and recommendations, whether pre-existing or future-developed, and any extensions to such standards and recommendations (including MPEG-I Part 5 and Part 9). Unless otherwise indicated or technically excluded, the aspects described in this application may be used individually or in combination.

[0081] Figure 9 The diagram illustrates the steps of a method 100 for encoding a point cloud into a bit stream of encoded point cloud data representing a physical object, according to at least one exemplary embodiment.

[0082] The geometric data of the point cloud, meaning the 3D position of the points in the point cloud, is captured by the spin sensor head.

[0083] The spin sensor head can be a spin lidar head 10 that includes multiple lasers (sensors), as explained above. However, the scope of this disclosure is not limited to spin lidar heads and can be applied to any sensor head capable of spinning about an axis and capturing a 3D position point representing a physical object for each capture angle. The sensor can be a camera, depth sensor, laser, lidar, or scanner.

[0084] The captured 3D position is represented in a 2D coordinate (φ, λ) system, such as... Figure 7 The description in the text, along with the radius value r 2D or r 3D Together. The coordinate φ is the azimuth angle of the sensor head's spin, and its discrete value is expressed as... The coordinate λ is the sensor index, and its discrete value is represented as: radius r 2D or r 3D It belongs to a continuous range of values.

[0085] Due to the regular spin (rotation) of the sensor head and continuous acquisition with fixed time intervals, the azimuth distance between two points detected by the same sensor is a multiple of the basic azimuth shift Δφ, such as... Figure 11 As described above. Then, for example, at the first capture time t1, five points P1(t1), ..., P k (t1), ...P5(t1) Figure 4 The five sensors of the lidar head 10 detect at an azimuth angle φ1, at the second acquisition time t2, five points P1(t2), ..., P k P(t2), ..., P5(t2) are detected by the sensor of the lidar head 10 at an azimuth angle φ2 = φ1 + Δφ, and so on. Therefore, the discrete value φ1 can be regarded as points P1(t1), ..., P k The azimuth angle φ of P1(t1), ..., P5(t1) is quantized; quantization is obtained by the quantization step size Δφ. Similarly, the discrete value φ2 can be regarded as the points P1(t2), ..., P5(t1). k The quantized values ​​of the azimuth angle φ of (t2), ... P5(t2).

[0086] In step 110, for each point P in the point cloud n Obtain and capture point P n The sensor index λ associated with the sensor k(n) (In the set of sensor indices, λ) k ( To K-1), φ represents the azimuth angle φ of the sensor's acquisition angle. i(n) (In the set of discrete angles, and point P n The radius value r in spherical coordinates n For simplicity, λ k(n) The index i(n) will be represented as λ in the following text. n and φ n Therefore, φ n It's not an angle, but rather a direction pointing to the angle φ. i index i( To I-1). However, because of index φ n Azimuth angle associated with the standard There is a clear relationship between them, so the quantity φ n It is still referred to as the azimuth.

[0087] According to the exemplary embodiment of step 110, the captured point P is represented by a transformation. n 3D Cartesian coordinates of the 3D position (x n y n , z n To obtain the sensor index λ n and azimuth φ n These 3D Cartesian coordinates (x... n y n , z n () can be the output of the sensor head.

[0088] In step 120, based on the azimuth angle φ n and sensor index λ n Sort the points in the point cloud.

[0089] According to the exemplary embodiment of step 120, the points are sorted first based on azimuth angle and then on lexicographical order of sensor index. See also Figure 11 The sorted captured points are P1(t1), ..., P k (t1),...P5(t1),P1(t2),...,P k (t2), ...P s (t2), ..., P1(tn), ..., P k (tn), ...P5(tn).

[0090] Point P n The order index o(P) n ) is obtained through the following formula:

[0091] o(P n )=φ n *K+λn

[0092] according to Figure 12 In another exemplary embodiment of step 120 shown, the points are sorted according to a dictionary order based first on the sensor index and then on the azimuth angle.

[0093] Point P n The order index o(P) n ) is obtained through the following formula:

[0094] o(P n )=λ n *U+φ n

[0095] In step 130, each represents two consecutive points P. n-1 With P n The difference between the order indices (for n = 2 to N) is the order index difference Δo. n Obtained through the following formula:

[0096] Δo n =o(P n )-o(P n-1 )

[0097] Encoding ordered points into bitstream B can include encoding at least one order index difference Δo. n Optionally, it may also include the encoded radius value r. n (essentially representing point P) n r 2D or r 3D Cartesian residuals (x) of the three-dimensional Cartesian coordinates of ordered points res,n y res,n , z res,n ) and angular residual φ res,n .

[0098] The order index o(P1) of the first point P1 can be directly encoded into the bitstream B. This is equivalent to arbitrarily setting the order index of the virtual 0th point to 0, that is, o(P0) = 0, and encoding Δo1 = o(P1) - o(P0) = o(P1).

[0099] Given the order index o(P1) of the first point and the order difference Δo n Any point P can be recursively reconstructed using the following formula. n The order index o(P) n ):

[0100] o(P n )=o(P n-1 )+Δo n

[0101] Then, the sensor index λ is obtained using the following formula. n and azimuth φ n :

[0102] λ n =o(P n ) modulo K (1)

[0103] φ n =o(P n ) / K (2)

[0104] Where division / K is integer division (also known as Euclidean division). Therefore, o(P1) and Δo n It is λ n and φ n Alternative representation of .

[0105] In step 140, the (N-1) order index differences Ao are encoded. n ( To N), in bit stream B, the order index o(P) associated with the ordered point. n Encode the ordered points, where N is the number of ordered points. Each ordered index o(P) n This represents the difference between the order indices associated with two consecutive ordered points. Figure 10 Above, five ordered points (black circles) are represented: two points P. n and P n+1 In time t1, angle φ c (in φ) i Captured in 's', three points at time t2 with angle φ c +Δφ capture. Assume the first point P. n The coordinates of the first order index Δo in the 2D coordinate (φ, λ) system are known in advance. n+1 It is as a point P n+1 Associated order index o(P) n+1 and point P n Associated order index o(P) n The difference between the two indices is obtained. The second order index difference Δo is... n+2 It is as another ordered point P n+2 Associated order index o(P) n+2 ) and P n+1 Associated order index o(P) n+1 The difference between ) is obtained, and so on.

[0106] The sorting of capture points provides for the interaction between points captured by different sensors in the spin sensor head. Therefore, a single code is required to encode those ordered points, resulting in very simple and low-latency coding.

[0107] From the order index difference Δo n The requirements for reconstructing points include the number of points N in the point cloud, the index o(P1) of the first point in the 2D coordinate (φ, λ) system, and sensor setup parameters (such as the basic azimuth shift Δφ or elevation angle θ associated with each sensor). n Information such as (e.g., bitstream B). This information can also be encoded in bitstream B, signaled in another way, or known in advance by the decoder.

[0108] Order index difference Δo n Entropy encoding, as referenced later. Figure 16 The explanation given.

[0109] Optionally, the method further includes encoding, in step 150, the radius value r of the spherical coordinates associated with the ordered points of the point cloud in the bit stream B. n .

[0110] According to the exemplary embodiment of step 150, the radius value r n Quantified.

[0111] According to the exemplary embodiment of step 150, the radius value r n Quantified.

[0112] According to the exemplary embodiment of step 150, the radius value r n Quantized and entropy encoded.

[0113] According to the exemplary embodiment of step 150, the radius value r n Indicates radius r 3D .

[0114] According to the exemplary embodiment of step 150, the radius value r n Indicates as Figure 7 The projected radius r on the horizontal xy plane depicted in the figure 2D .

[0115] Optionally, the method further includes, in step 160, determining their three-dimensional Cartesian coordinates (x... n y n , z n ), based on the decoded azimuth angle φ dec,n Based on the radius value r n The obtained decoded radius value r dec,n And based on sensor index λ n Encoding ordered point P n The residuals (x) of the three-dimensional Cartesian coordinates res,n y res,n , z res,n ).

[0116] According to the exemplary embodiment of step 160, the residual (x) res,n y res,n , z res,n ) is the three-dimensional Cartesian coordinate (x, y) of a point in a point cloud. n y n , z n ) and estimated three-dimensional coordinates (x) estim,n y estim,n , z estim,n The difference between them.

[0117] According to the exemplary embodiment of step 160, the residual (x) res,n y res,n , z res,n The following formula is given:

[0118]

[0119] According to the exemplary embodiment of step 160, with ordered point P n Associated estimated coordinates (x) estim,n y estim,n Based on point P n The associated decoding azimuth angle φ dec,n and the radius value r of the decoded value dec,n .

[0120] According to the exemplary embodiment of step 160, the residual (x) res,n y res,n , z res,n Entropy encoding is performed.

[0121] According to the exemplary embodiment of step 160, the estimated coordinates (x) estim,n y estim,n The following formula is given:

[0122]

[0123] According to the exemplary embodiment of step 160, the estimated coordinates (z) associated with the ordered points estim,n Based on the decoded radius value r associated with that point dec,n and the elevation angle θ of the sensor that captures that point. n .

[0124] According to the exemplary embodiment of step 160, the estimated coordinates (z) estim,n It is also based on the sensor index λ n .

[0125] According to the exemplary embodiment of step 160, the estimated coordinates (z) estim,n The following formula is given:

[0126] z estim,n =r dec,n tanθ n

[0127] Optionally, the method further includes encoding the residual azimuth angle φ associated with the ordered point in the bit stream B in step 170. res,n According to the exemplary embodiment of step 170, the azimuth angle φ n Quantified by the following formula:

[0128] φ n =round(φ(P) n ) / Δφ)

[0129] Where φ(P) n () is point P n The original azimuth angle. In this case, the discrete angle φ i The set of (0≤i<I) is basically composed of φ i =i*Δφ is defined, and φ is obtained. i(n) =φ n *Δφ.

[0130] Therefore, point P n The order index o(P) n The following formula is given:

[0131] o(P n )=φ n *K+λ n =round(φ(P) n ) / Δφ)*K+λ n

[0132] residual azimuth φ res,n It is given by the following formula:

[0133] φ res,n =φ(P n )-φ n *Δφ (3)

[0134] This exemplary embodiment of step 170 offers an advantage because, in practice, not all points are captured at every capture time, perhaps due to noise, misalignment of the sensor, or failure to reflect at least one laser beam from the lidar sensor head. The captured points can then appear as follows: Figure 13 The above describes the quantized azimuth angle φ(P). n This makes it easier to discretize points in a 2D coordinate (φ, λ) system, such as Figure 14 As described above, it allows for a simpler path to sort the points in the point cloud.

[0135] residual azimuth φres,n Encoded into bitstream B, preferably by quantization and / or entropy encoding.

[0136] This exemplary embodiment of step 170 also reduces the dynamics of the angles to be encoded in the bitstream because only the residuals are encoded instead of the full range of values, achieving high compression performance.

[0137] Optionally, the method further includes, in step 180, obtaining φ based on the azimuth angle. n Obtain the azimuth angle φ of the decoded image. dec,n .

[0138] According to the embodiment of step 180, the decoded azimuth angle φ dec,n It is given by the following formula:

[0139] φ dec,n =φ n *Δφ

[0140] According to the embodiment of step 180, based on the azimuth angle φ n The basic azimuth shift Δφ and the residual azimuth φ res,n Obtain the decoded azimuth angle φ dec,n .

[0141] According to the embodiment of step 180, the decoded azimuth angle φ dec,n It is given by the following formula:

[0142] φ dec,n =φ n *Δφ+φ res,n

[0143] According to the embodiment of step 180, the decoded azimuth angle φ dec,n Based on azimuth angle φ n The basic azimuth shift Δφ and the quantized residual azimuth φ given by Equation 3 res,n The decoding angle residual φ obtained by dequantization dec,res,n Obtained.

[0144] According to the embodiment of step 180, the decoded azimuth angle φ dec,n It is given by the following formula:

[0145] φ dec,n =φ n *Δφ+φ dec,res,n

[0146] Optionally, in step 190, based on the encoded radius value r n Obtain the decoded radius value r dec,n .

[0147] According to the exemplary embodiment of step 190, the decoded radius value rdec,n It is through the quantized radius value r n Obtained through dequantification.

[0148] Figure 15 The diagram illustrates the steps of a method 200 for decoding a point cloud from a bit stream of encoded point cloud data representing a physical object, according to at least one exemplary embodiment.

[0149] Decode the point cloud's point requirement information from bit stream B, such as the number of points N in the point cloud, the index o(P1) of the first point in the 2D coordinate (φ, λ) system, and sensor setup parameters (such as the basic azimuth shift Δφ or elevation angle θ associated with each sensor k). k This information can also be decoded from bitstream B or received by any other means, or it can be known in advance by the decoder.

[0150] Recursively decode N points of a point cloud.

[0151] In step 210, at least one order index difference Δo is decoded from bit stream B. n (n = 2 to N). The difference Δo between each order index. n For the current point P n decoding.

[0152] In step 220, the current point P is obtained using the following formula. n The order index o(P) n ):

[0153] o(P n )=o(P n-1 )+Δo n

[0154] Order index difference Δo n Indicates the relationship with the current point P n The associated order index and the point P (already) decoded n-1 Another associated ordinal index o(P) n-1 The difference between them.

[0155] In step 230, the current point P is captured. n The sensor index λ associated with the sensor n and the azimuth angle φ representing the capture angle of the sensor. n From the order index o(P) n (Obtained)

[0156] According to the exemplary embodiment of step 230, the sensor index λ n and azimuth φ n It is obtained from equations (1) and (2).

[0157] Optionally, in step 240, the decoded azimuth angle φ dec,n Based on azimuth angle φ n Obtained.

[0158] According to the embodiment of step 240, based on the azimuth angle φ n The decoded azimuth angle φ is obtained by shifting the basic azimuth angle by Δφ. dec,n .

[0159] According to the embodiment of step 240, the decoded azimuth angle φ dec,n It is given by the following formula:

[0160] φ dec,n =φ n *Δφ

[0161] According to the embodiment of step 240, the decoded azimuth angle φ dec,n Based on the residual azimuth angle φ decoded from bit stream B res,n Obtained.

[0162] According to the embodiment of step 240, the decoded azimuth angle φ dec,n It is given by the following formula:

[0163] φ dec,n =φ n *Δφ+φ res,n

[0164] Optionally, in step 250, the current point P is decoded from bit stream B. n The radius value r in spherical coordinates n .

[0165] According to the exemplary embodiment of step 250, the radius value r n Dequantization is performed to obtain the decoded radius value r. dec,n .

[0166] According to the exemplary embodiment of step 250, the radius value r n Entropy decoding and dequantization are used to obtain the decoded radius value r. dec,n .

[0167] Optionally, in step 260, the current point P is decoded from bit stream B. n The residuals (x) of the three-dimensional Cartesian coordinates res,n y res,n , z res,n ).

[0168] According to the exemplary embodiment of step 260, the residual (x) res,n y res,n , z res,n Entropy decoding is performed.

[0169] Optionally, in step 270, based on the current point P n The residual (x) of decoding three-dimensional Cartesian coordinates res,n y res,n , z res,n ), radius value r n , the azimuth angle φ of the decoder dec,n and sensor index λ n For the current point P n The three-dimensional Cartesian coordinates (x, y, z) are decoded.

[0170] According to the exemplary embodiment of step 270, the current point P n The three-dimensional Cartesian coordinates (x, y, z) are the residuals (x, y, z). res,n y res,n , z res,n ) and estimated three-dimensional coordinates (x estim y estim , z estim ) and:

[0171]

[0172] According to the exemplary embodiment of step 270, with the current point P n Associated estimated coordinates (x) estim y estim Based on azimuth angle φ n and radius value r n .

[0173] According to the exemplary embodiment of step 270, the estimated coordinates (x) estim y estim The following formula is given:

[0174]

[0175] According to another exemplary embodiment of step 270, the estimated coordinates (x) estim,n y estim,n The following formula is given:

[0176]

[0177] Where r dec,n From the radius value r n The obtained decoded radius value. For example, the decoded radius value r. dec,n By adjusting the radius value r n It is obtained by dequantization.

[0178] According to the exemplary embodiment of step 270, with the current point P n Associated estimated coordinates (z) estimBased on the current point P n The associated radius value r n And capture the current point P n The elevation angle θ of sensor k k .

[0179] According to the exemplary embodiment of step 270, the estimated coordinates (z) estim The following formula is given:

[0180] z estim =r n tanθ k

[0181] According to the exemplary embodiment of step 270, the estimated coordinates (z) estim It is also based on the sensor index λ n .

[0182] According to the exemplary embodiment of step 270, the estimated coordinates (z) estim The following formula is given:

[0183] z estim =r n tanθ λn

[0184] Figure 16 The order index difference Δo is shown according to at least one exemplary embodiment. n A flowchart illustrating the steps of entropy coding method 800.

[0185] In step 810, by at least one order index difference Δo n Binarization is used to obtain at least one binary data f. j .

[0186] For each binary data f j Based on binary data f j Associated azimuth angle φ j Distance C between the azimuth angle of the coded point and the coded point j Select (step 820) the context, and in bit stream B, for each binary data f, based on the selected context. j Perform context-adaptive entropy coding (830). As will become clear below, with the quantity φ n Similarly, this quantity φ j It is misused to call it azimuth, even though it is an index between 0 and I-1, pointing to φ. i A specific discrete angle in the equation.

[0187] Compared to other coding techniques (such as predictive tree coding), context-adaptive entropy coding of the order index difference provides efficient compression performance because this prediction-based coding technique does not capture the intrinsic structure of the representation (φ, λ) of the point positions. This structure is captured by exemplary embodiments of this application by selecting a context and entropy coding the order index difference based on the selected context.

[0188] According to the exemplary embodiment of step 810, the order index difference Δo n The binarization is achieved by a series of binary data f j Execute, where j≥0. Binary data f j Equal to a specific value PV (e.g., f) j =1) To indicate whether Δo n It is equal to j, otherwise it is not equal to the specific value PV (e.g., f). j =0). Then, the first binary value f0 is encoded. For example, if f0 = PV, then for Δo n The encoding is complete because Δo n =0 has already been encoded; otherwise, if f0 ≠ PV, then the second binary data f1 is encoded. If f1 ≠ PV, then the third binary data f2 is encoded, and so on. This is essentially Δo n Unary encoding.

[0189] According to an exemplary embodiment of step 810, when the points are sorted according to a dictionary order based first on azimuth and then on sensor index ( Figure 11 When j+c < K, then with binary data f j Associated azimuth angle φ j Is it related to the current point P? n-1 Associated azimuth angle φ n-1 Where c is the index of the current point modulus K (or equivalently, c is the sensor index λ of the current point). n-1 Otherwise, it is related to the binary data f. j Associated azimuth angle φ j It is the azimuth angle.

[0190] φ j =φ n +s

[0191] Where s is an integer such that sK≤j+c<(s+1)K. If f j If PV equals 1, then each binary data point f j Also related to sensor index λ j Relatedly, the sensor index λ j Capture the next ordered point P n The sensor index corresponds to the sensor index of the sensor, that is, λ. j=λ n-1 +j mod K.

[0192] exist Figure 11 Above, the order index difference Δo n The value equals 8 and is binarized into nine binary data points f0 to f8. Except for the last one, f8, which equals PV, the others are not equal to PV. The azimuth angles φ are associated with the binary data points f0 to f6 respectively. 0 To φ 6 equal to φ n-1 And the azimuth angles φ associated with f7 and f8 respectively. 7 and φ 8 equal to φ n .

[0193] According to an exemplary embodiment of step 810, when the points are sorted according to a dictionary order based first on sensor index and then on azimuth angle ( Figure 12 When ), with binary data f j The associated azimuth angle φ is given by the following formula:

[0194] φ j =φ n-1 +j

[0195] If f j If PV equals 1, then each binary data point f j Also related to sensor index λ j Relatedly, the sensor index λ j Capture the next ordered point P n The sensor index corresponds to the sensor index of the sensor, that is, λ. j =λ n-1 .

[0196] exist Figure 12 Above, the order index difference Δo n The value equals 4 and is binarized into five binary data points f0 to f4. Except for the last one, f4, which equals PV, all others do not equal PV. The azimuth angles φ are associated with the binary data points f0 to f4 respectively. 0 To φ 4 They are φ n-1 , φ n-1 +1, φ n-1 +2, φ n-1 +3 and φ n-1 +4=φ n .

[0197] Optionally, in step 840, the residual R is obtained as the order index difference Δo. n The maximum number (upper limit) of binary data N flag The difference between them. Then, if the binary data f is reached. Nflag-1. And since it is not equal to PV, then Δo is necessary. n ≥N flag And the residual R is given by the following formula: R = Δo n -N flag .

[0198] Maximum number of flags N flag It is set to define the number of binary information in the arithmetic code of each point, and then the time delay to obtain the next point is defined.

[0199] According to the embodiment of step 840, the residual R is encoded using exp-Golomb codes.

[0200] According to the exemplary embodiment of step 810, the binary data f j It is a flag and PV = 1.

[0201] According to the exemplary embodiment of step 830, the binary data f j Entropy coding is performed by a context-adaptive binary arithmetic encoder (such as CABAC).

[0202] Figure 17 A block diagram of a context-adaptive binary arithmetic encoder is schematically illustrated.

[0203] First, a selection process chooses the context based on encoded information to provide context for each binary data f. j The context index ctxIdx associated with the (binary symbol). It has N ctx The context table of an entry stores the probability associated with the context, and the probability p ctxIdx It is obtained as the ctxIdxth entry in the context table. Binary symbol f j The probability p is used by the entropy encoder ctxIdx The encoding is in a bitstream.

[0204] Entropy encoders are typically arithmetic encoders, but can also be any other type of entropy encoder, such as in asymmetric digital systems. In any case, the optimal encoder adds -log2(p) to the bitstream. ctxIdx ) bits to be encoded in a bit stream f j =1 or -log2(1-p) ctxIdx ) bits to encode f j =0. Once the symbol f j Encoded, by using f j and p ctxIdx Update probability p for the update process of entries. ctxIdxThe update process is typically performed using an update table. The updated probability replaces the ctxIdx-th entry in the context table. Then, another symbol can be encoded, and so on. The update loop back to the context table is a bottleneck in the encoding workflow because another symbol can only be encoded after an update has been performed. Therefore, memory access to the context table must be as fast as possible, and minimizing the size of the context table helps simplify its hardware implementation.

[0205] The context-adaptive binary arithmetic decoder performs essentially the same operations as the context-adaptive binary arithmetic encoder, the difference being the encoded symbol f. j The probability p is used by the entropy decoder ctxIdx Decode from a bitstream.

[0206] Choose sufficient context (i.e., the best estimate of the binary data f). j The probability p of the chance equal to PV ctxIdx ) is essential for achieving good compression. Therefore, context selection should use relevant, already encoded information and relevance to obtain sufficient context.

[0207] According to the exemplary embodiment of step 820, with binary data f j Associated distance C j Depends on the binary data f j Associated azimuth angle φ j The sum and the penultimate encoded point P penult Associated azimuth angle φ penult (index), the penultimate encoded point P penult Having and binary data f j Associated sensor index λ j Same sensor index. In determining the penultimate encoded point P. penult In the set of already encoded points, the current point P is never considered. n-1 .

[0208] According to the exemplary embodiment of step 820, with binary data f j Associated distance C j It is given by the following formula:

[0209] C j =φ j -φ penult,j (13)

[0210] It should be noted that these two quantities φ j and φ penult,j It is a value φ that points to a discrete quantity. i Index of discrete angles in the set (i = 0 to I-1).

[0211] exist Figure 11 Above, distance C0 = 0, because the sensor index equals λ. 0 =λ n-1 =2 The last and second-to-last encoded points are located at the current point P. n-1 same angular position φ 0 =φ n-1 This can happen in a specific sensor configuration. Then, C1 = 4, because on the one hand, it relates to the sensor index λ associated with f1. 1 =λ n-1 The second-to-last coded point (gray circle) with +1 = 3 is associated with the azimuth angle φ. renult,3 On the other hand φ 1 =φ n-1 The difference between them is 4. Then, C2 = 3, because it has the sensor index λ associated with f2. 2 =λ n-1 The azimuth φ associated with the second-to-last encoded point (+2=4) penult,,4 With φ 2 =φ n-1 The difference between them is 3, and so on. Additionally, C7 = 3, because it is related to the sensor index λ associated with f7. 7 =λ n-1 +7=9=0 mod K (where K=9) is the azimuth φ associated with the second-to-last encoded point. penult,0 With φ 7 =φ n-1 The difference between +1 and 3 is equal to 3. Finally, C8 = 2, because it is related to the sensor index λ associated with f8. 8 =λ n-1 +8=10=1 mod K is the azimuth φ associated with the second-to-last encoded point. penult,1 With φ 8 =φ n-1 The difference between them is 2.

[0212] exist Figure 12 Above, all binary data f j With the same sensor index λ j =λ n-1 Associated. Distance C0 = 2, because of the azimuth associated with the second-to-last encoded point (gray circle). With φ 0 =φ n-1 The difference between them is equal to 2. Distance C1 = 3, because the azimuth angle associated with the second-to-last encoded point is... With φ 1 =φ n-1The difference between +1 and 3 is equal to 3, and so on.

[0213] Out of respect for Figure 18 and 19 The following reasons are given regarding the distance C compared to other alternative dependencies (such as dependencies on the last, last three, or any other last encoded point). j With the second to last encoded point P penult The dependency provides an advantage.

[0214] When probing a physical object, the probe laser typically provides reflected signals from several successively captured angles. In this case, the points are ordered lexicographically first based on the sensor index and then based on the azimuth angle. Figure 12 When ), it is expected that the difference Δo between several successive indexes equal to one will be obtained. n ,like Figure 18 As shown in the image.

[0215] The upward line depicts the area at its angular position φ = φ(P) n Point P) n The following text shows how to quantize φ to φ c =φ i(n) =φ n The common points after *Δφ. Each quantization interval is occupied by only one point, resulting in a succession order index difference Δo. n =+1. However, when sensing noise is added, some points will jump from one interval to an adjacent interval, such as... Figure 19 As seen above, the second point has shifted slightly to the left. Therefore, Δo n The pattern has changed from +1+1+1+1 to +1 0+2+1. Similarly, if the point moves to the right, it can also change to +1+2+0+1.

[0216] Distance C j Equation 13 can detect this pattern and predict the following Δo n Basically, if C j If the value equals 2 (obtained from the pattern +1+1, +20, or +0+2), then it is possible to be related to f. j =The point corresponding to PV exists and is related to C j The context corresponding to =2 will provide the encoding of PV as f j The high probability of the value of C. On the other hand, if C j If the value equals 1 (obtained from +1+0), then the expected compensation is "late" and more likely to be related to f. j =The point corresponding to PV does not exist and is related to C j The context corresponding to =1 will provide the encoding of PV as f j The low probability of the value.

[0217] Clearly, and as the tests show, by φ j -φ lasti The given distance C j This means using the last point instead of the second-to-last point in predicting Δo. n This is less efficient. For example, in the patterns +1 0+2+1 and +1+20+1, +1 or 0 can follow +2.

[0218] A frame from the QNX test sequence and the Ford test sequence taken from the MPEG test set of G-PCC have been tested. The azimuth and sensor index of the points captured by the spin sensor head are represented by: 1) G-PCC point cloud encoding, where the 2D input point cloud is formed from the azimuth and sensor index; 2) by utilizing distance-independent C... j Context-to-order index difference Δo n Entropy encoding is performed to encode the azimuth and sensor index, and 3) by utilizing distance-dependent C j The context is determined by the difference in order index Δo n Entropy encoding is used to encode the azimuth and sensor index. In 2) and 3), f has already been used... j And R performed Δo as described above n Binarization.

[0219] Table 1 shows the sorting of points according to a lexicographical order, first based on azimuth and then on sensor index. Figure 11 The compression ratios obtained when points are sorted lexicographically first based on sensor index and then based on azimuth angle are shown in Table 2. Figure 12 The compression ratio obtained when using lexicographical ordering. For lossless compression used for both lexicographical orders, the results are presented in bits per point (bpp). A lower bpp value indicates better compression.

[0220] Table 1

[0221] QNX 0.73813 0.64338 0.58621 Ford 1.5916 1.7655 1.2756

[0222] Table 2

[0223] QNX 0.73813 0.61897 0.58181 Ford 1.5916 1.5374 1.0623

[0224] Solution 3) provides 5% to 30% compression gain and is significantly better than Solution 1 (G-PCC).

[0225] Achieve distance C j The dependency requirement is to access the penultimate encoded point P. penult Associated azimuth angle φ penult The penultimate encoded point P penultHaving binary data f j Sensor index λ j The same sensor index. Achieving this dependency using a rolling buffer results in low-complexity encoding / decoding.

[0226] For example, the rolling buffer could be a 2D array that stores the K values ​​φ of the second-to-last encoded point at sensor index k in the first column. penult (k)( Up to K-1), and in another column store the K values ​​φ of the last encoded point whose sensor index is equal to k. last (k)( Up to K-1). When it must be binary data f j Assessment distance C j At that time, for the sensor index λ j (with f) j (related) azimuth angle φ penult (λ j The index difference Δo is obtained directly from the rolling buffer. n Then, the azimuth angle φ is obtained. n And roll the buffer as shown below φ penult (k)=φ last (k) and φ last (k)=φ n

[0227] Where φ n The next point P n The azimuth angle, with the order index o(P) n )=o(P n-1 )+ΔO n .

[0228] According to the exemplary embodiment of step 820, with binary data f j Associated distance C j Depends on the binary data f j Associated azimuth angle φ j The sum and not necessarily determined by the current point P n-1 The azimuth angle φ associated with any encoded point detected by the same sensor index as the sensor index. al (index).

[0229] According to the exemplary embodiment of step 820, with binary data f j Associated distance C i It is given by the following formula:

[0230] C j =φ j -φ al

[0231] According to the exemplary embodiment of step 820, with binary data f j The context index ctxIdx of the associated context table is equal to the distance C. j .

[0232] According to the exemplary embodiment of step 320, the context index ctxIdx is capped by a threshold th1 to limit the number of contexts:

[0233] ctxIdx=min(C j ,th1)

[0234] For example, th1 can be equal to 6.

[0235] Limiting the number of contexts is beneficial for simplifying implementation, limiting memory usage, and ensuring probability p. ctxIdx The statistical correlation is important because high values ​​of j may not be accessed frequently.

[0236] According to the exemplary embodiment of step 820, the binary data f j The context index ctxIdx depends on the difference Δo in the representation order index of the binary data. n The ranking j in a series of binary data.

[0237] Because of the binary data f j The statistics tend to become weakly dependent on the ranking j used for high j, so this weak dependency can be used to limit the number of contexts.

[0238] Furthermore, the dependency between the context index ctxIdx and the value j provides an advantage for the following reason: each binary flag f j Whether the statistic equals PV depends on index j. Typically, the probability P(f) is... j =PV|f0 to f j-1 ≠Pv) As j decreases. Therefore, by making the index ctxIdx dependent on j, a better probability p is obtained. ctxIdx .

[0239] According to the exemplary embodiment of step 820, the context index ctxIdx is given by the following formula:

[0240] ctxIdx=min(C j ,th1)*(th2+1)+min(j,th2)

[0241] Here, th2 is the second threshold, such as having (thl+1)*(th2+1) contexts. For example, th2 can be set to 3.

[0242] According to the exemplary embodiment of step 820, the context index ctxIdx depends on the binary data f j Associated sensor index λ j .

[0243] If binary data f j If PV equals 1, then each binary data point f j Whether the PV is equal to or not depends on the sensor (laser) index used to detect where the next point will be. For example, a sensor pointing towards the ground almost always detects something (mainly roads), but a sensor pointing towards the sky tends to detect more objects less frequently, such as buildings or trees. However, the context index ctxIdx and the binary data f j Associated sensor index λ j The dependencies between them multiply the number of contexts by K (the number of sensors) and can provide a very large number of contexts, since a typical lidar head has 16, 32 or even 64 laser beams.

[0244] According to an exemplary embodiment of step 820, sensors with similar elevation angles are regrouped into a bag because all sensors in the same bag tend to detect similar objects.

[0245] Each sensor with index λ has a corresponding packet index λ. pack (λ), and with sensor index λ j Associated binary data f j It has an associated package index, where the package index is λ. j,pack .

[0246] Grouping sensors into packets limits the number of contexts.

[0247] According to the exemplary embodiment of step 820, the context index ctxIdx is given by the following formula:

[0248] ctxIdx=(min(C j ,th)*(th2+1)+min(j,th2))*N pack +λ j,pack

[0249] Where N pack It refers to the number of bags.

[0250] The number of contexts becomes (th+1)*(th2+1)*N pack .

[0251] In the variant example, the package index λ j,pack It is given by the following formula:

[0252] λj,pack =floor(λ) j *N pack / K)

[0253] Make λ j,pack Belongs to [0, N] pack -1].

[0254] Then it can be done by setting th1 and / or th2 and / or N. pack Set sufficient values ​​to tune the number of contexts. These values ​​can be encoded in bitstream B. For example, for the corresponding values ​​6, 3, and 4, we get 7*4*4 = 112, which is the acceptable number of contexts.

[0255] Figure 20 The order index difference Δo is shown according to at least one exemplary embodiment. n The steps of entropy decoding method 900.

[0256] Decode point P representing the point cloud of a physical object from bitstream B. n Including decoding the representation from bitstream B and point P n Related order index difference o(P) n ) and the current point P n-1 Another associated ordinal index o(P) n-1 The order index difference ΔO between the two n .

[0257] Decoding order index difference Δo n Includes decoding at least one binary data f from bit stream 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 decoded point penult or φ al The distance C between them j Select (step 910) the context. Then, the method is based on the selected context and the binary data f. j The probabilistic information related to and decoded from bit stream B for the at least one binary data f j Perform context-based entropy decoding (step 920). Next, from the context-based entropy decoding of the binary data f j Obtain the order index difference Δo (step 930) n .

[0258] Optionally, in step 930, if the binary data f is reached... Nflag-1 And since it is not equal to PV, the residual R is also decoded from the bitstream B and passed through Δo. n =R+Nflag Obtain the order index difference Δo n .

[0259] According to the embodiment of step 930, the residual R is decoded by using exp-Golomb codes.

[0260] The context selection in steps 820 and 910 is the same. Therefore, all exemplary embodiments and variations of step 820 apply to step 910.

[0261] According to the exemplary embodiment of step 920, the binary data f j Entropy decoding is performed using a context-adaptive binary arithmetic decoder (such as CABAC). The binary data f is processed based on the selected context. j Performing context-based entropy decoding (step 920) is essentially the same as... Figure 17 The context-based entropy encoding is the same.

[0262] Basically, the entropy decoder decodes -log2(p) from bitstream B. ctxIdx ) bits to decode binary value f from bit stream B j =1 or -log2(1-p) ctxIdx ) position to f j =0 for decoding. Once the symbol f j Decoded, by using f j and p ctxIdx Update probability p for the update process of entries. ctxIdx The update process is typically performed using an update table. The updated probability replaces the ctxIdx-th entry in the context table. Then, another symbol can be decoded, and so on. The update loop back to the context table is a bottleneck in the encoding workflow because another symbol is only decoded after an update has been performed. Therefore, memory access to the context table must be as fast as possible, and minimizing the size of the context table helps simplify its hardware implementation.

[0263] According to the embodiment of step 930, through at least one decoded binary data f j Unary decoding to decode order index difference Δo n .

[0264] For example, if the first f0 = PV, then decoding is complete because Δo n =0 has been decoded; otherwise, if f0≠PV, then decode the second binary data f1, otherwise Δo n =1 and decoding ends. If f1 ≠ PV, then decode the third binary data f2, and so on.

[0265] Figure 21A schematic block diagram illustrating an example of a system in which various aspects and exemplary embodiments are implemented is shown.

[0266] System 300 can be embedded as one or more devices, including the various components described below. In various embodiments, system 300 can be configured to implement one or more aspects described in this application.

[0267] Examples of equipment that may constitute all or part of system 300 include personal computers, laptop computers, 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, "caves" (systems including multiple displays), servers, video encoders, video decoders, post-processors that process the output from the video decoder, pre-processors that provide input to the video encoder, web servers, set-top boxes, and any other devices for processing point clouds, video, or images, or other communication devices. The elements of system 300 may be implemented individually or in combination in a single integrated circuit (IC), multiple ICs, and / or discrete components. For example, in at least one embodiment, the processing and encoder / decoder elements of system 300 may be distributed across multiple ICs and / or discrete components. In various embodiments, system 300 may be communicatively coupled to other similar systems or other electronic devices via, for example, a communication bus or through dedicated input and / or output ports.

[0268] System 300 may include at least one processor 310 configured to execute instructions loaded therein for implementing various aspects, such as those described in this application. Processor 310 may include embedded memory, input / output interfaces, and various other circuitry known in the art. System 300 may include at least one memory 320 (e.g., a volatile memory device and / or a non-volatile memory device). System 300 may include a storage device 340, which may 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 memory, disk drives, and / or optical disk drives. As a non-limiting example, storage device 340 may include internal storage devices, attached storage devices, and / or network-accessible storage devices.

[0269] System 300 may include an encoder / decoder module 330 configured to, for example, process data to provide encoded / decoded point cloud geometric data, and the encoder / decoder module 330 may include its own processor and memory. The encoder / decoder module 330 may represent one or more modules that can be included in a device to perform encoding and / or decoding functions. As is known, a device may include one or both of the encoding and decoding modules. Furthermore, the encoder / decoder module 330 may be implemented as a separate element of system 300, or may be incorporated into processor 310 as a combination of hardware and software known to those skilled in the art.

[0270] Program code to be loaded onto processor 310 or encoder / decoder 330 to execute the various aspects described in this application may be stored in storage device 340 and subsequently loaded onto memory 320 for execution by processor 310. According to various embodiments, during execution of the processes described in this application, one or more of processor 310, memory 320, storage device 340, and encoder / decoder module 330 may store one or more of various items. Such stored items may include, but are not limited to, point cloud frames, encoded / decoded geometry / attribute video / images or portions of encoded / decoded geometry / attribute video / images, bit streams, matrices, variables, and intermediate or final results of equations, formulas, operations, and arithmetic logic processing.

[0271] In several embodiments, the memory within the processor 310 and / or encoder / decoder module 330 can be used to store instructions and provide working memory for processing that can be performed during encoding or decoding.

[0272] However, in other embodiments, external memory (e.g., the processing device may be processor 310 or encoder / decoder module 330) is used for one or more of these functions. External memory may be memory 320 and / or storage device 340, such as dynamic volatile memory and / or non-volatile flash memory. In several embodiments, external non-volatile flash memory is used to store the television's operating system. In at least one embodiment, fast external dynamic volatile memory, such as RAM, may be used as working memory for video encoding and decoding operations, for example, 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 (Various Video Coding), or MPEG-I Part 5 or Part 9.

[0273] As indicated in box 390, input to the components of system 300 can be provided through various input devices. Such input devices include, but are not limited to, (i) an RF section capable of receiving, for example, RF signals transmitted over the air by broadcasting equipment, (ii) a composite input terminal, (iii) a USB input terminal, and / or (iv) an HDMI input terminal.

[0274] In various embodiments, the input device of block 390 has associated corresponding input processing elements, as known in the art. For example, the RF section may be associated with elements necessary for: (i) selecting a desired frequency (also known as selecting a signal, or limiting the signal band to a specific band), (ii) down-converting the selected signal, (iii) further limiting the band to a narrower band to select, for example, the signal band that may be referred to as a channel in some embodiments, (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select the desired data packet stream. The RF section in various embodiments may include one or more elements performing these functions, such as frequency selectors, signal selectors, band limiters, channel selectors, filters, downconverters, demodulators, error correctors, and demultiplexers. The RF section may include tuners performing various functions among these functions, including, for example, down-converting a received signal to a lower frequency (e.g., intermediate frequency or near-baseband frequency) or baseband.

[0275] In one set-top box embodiment, the RF section and its associated input processing elements can receive RF signals transmitted over a wired (e.g., cable) medium. The RF section can then perform frequency selection by filtering, down-converting, and re-filtering to the desired frequency band.

[0276] Various embodiments rearrange the order of the above (and other) elements, remove some of these elements, and / or add other elements that perform similar or different functions.

[0277] Adding components may include inserting components between existing components, such as, for example, inserting amplifiers and analog-to-digital converters. In various embodiments, the RF portion includes an antenna.

[0278] Furthermore, the USB and / or HDMI terminals may include corresponding interface processors for connecting system 300 to other electronic devices via USB and / or HDMI connections. It should be understood that various aspects of input processing (e.g., Reed-Solomon error correction) may be implemented, for example, within a separate input processing IC or within processor 310, when necessary. Similarly, various aspects of USB or HDMI interface processing may be implemented within a separate interface IC or within processor 310, when necessary. The demodulated, error-corrected, and demultiplexed streams may be provided to various processing elements, including, for example, processor 310 and encoder / decoder 330, which operate in conjunction with memory and storage elements to process the data streams for presentation on an output device when necessary.

[0279] Various components of system 300 can be provided within an integrated housing. Within the integrated housing, suitable connection arrangements 390, such as internal buses (including I2C buses), wiring, and printed circuit boards known in the art, can be used to interconnect various components and transfer data between them.

[0280] System 300 may include a communication interface 350 that enables communication with other devices via a communication channel 700. The communication interface 350 may include, but is not limited to, a transceiver configured to send and receive data on the communication channel 700. The communication interface 350 may include, but is not limited to, a modem or network interface card (NIC), and the communication channel 700 may be implemented, for example, within a wired and / or wireless medium.

[0281] In various embodiments, data can be streamed to system 300 using a Wi-Fi network such as IEEE 802.11. The Wi-Fi signals in these embodiments can be received via a communication channel 700 and a communication interface 350 suitable for Wi-Fi communication. The communication channel 700 in these embodiments can typically be connected to an access point or router that provides access to external networks, including the Internet, to allow streaming applications and other over-the-top cloud communications.

[0282] Other embodiments may use a set-top box to provide streaming data to system 300, which delivers data via an HDMI connection in input box 390.

[0283] Other embodiments may use the RF connection of input block 390 to provide streaming data to system 300.

[0284] Streamed data can be used as signaling information by system 300. Signaling information may include bit stream B and / or information such as the number of points in the point cloud, the coordinates or order of the first point in the 2D coordinate (φ, λ) system (P1), and / or sensor setting parameters (such as the basic azimuth shift Δφ or elevation angle θ associated with the sensor of lidar head 10). k ).

[0285] It should be recognized that signaling can be implemented in a variety of ways. For example, in various embodiments, one or more syntax elements, flags, etc., can be used to signal information to the corresponding decoder.

[0286] System 300 can provide output signals to various output devices, including display 400, speaker 500, and other peripheral devices 600. In various examples of embodiments, other peripheral devices 600 may include one or more of a standalone DVR, disc player, stereo system, lighting system, and other devices that provide functionality based on the output of system 300.

[0287] In various embodiments, control signals may be communicated between system 300 and display 400, speaker 500 or other peripheral devices 600 using signaling such as AV.Link (audio / video link), CEC (consumer electronics control), or other communication protocols that enable device-to-device control with or without user intervention.

[0288] Output devices can be communicatively coupled to system 300 via dedicated connections through the corresponding interfaces 360, 370 and 380.

[0289] Alternatively, the output device can be connected to the system 300 via the communication interface 350 using the communication channel 700. The display 400 and speaker 500 can be integrated into a single unit with other components of the system 300 in electronic devices such as, for example, televisions.

[0290] In various embodiments, the display interface 360 ​​may include a display driver, such as, for example, a timing controller (TCon) chip.

[0291] For example, if the RF portion of input 390 is part of a separate set-top box, then display 400 and speaker 500 can alternatively be separate from one or more of the other components. In various embodiments where display 400 and speaker 500 can be external components, output signals can be provided via dedicated output connections, including, for example, HDMI ports, USB ports, or COMP outputs.

[0292] exist Figure 1-21This document describes various methods, each comprising one or more steps or actions to implement 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.

[0293] Examples of block diagrams and / or operation flowcharts are described. Each block represents a portion of circuitry, a module, or code, which 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 (one or more) marked in the blocks may occur out of order. For example, depending on the functions involved, two blocks shown sequentially may actually execute substantially concurrently, or sometimes these blocks may be executed in reverse order.

[0294] The embodiments and aspects described herein may be implemented in, for example, methods or processes, 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), implementations of the discussed features may be implemented in other forms (e.g., apparatus or computer programs).

[0295] 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.

[0296] Furthermore, 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 can take the form of a computer-readable program product implemented in one or more computer-readable media and having computer-executable computer-readable program code implemented thereon. Considering the inherent ability to store information therein and the inherent ability to retrieve information provided therefrom, the computer-readable storage medium as used herein can be considered a non-transitory storage medium. The 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 of the foregoing. It should be understood that while more specific examples of computer-readable storage media to which this embodiment can be applied are provided below, they are merely illustrative and not an exhaustive list, as will be readily recognized by those skilled in the art: portable computer floppy disks; hard disks; read-only memory (ROM); erasable programmable read-only memory (EPROM or flash memory); portable optical disc read-only memory (CD-ROM); optical storage devices; magnetic storage devices; or any suitable combination of the foregoing.

[0297] Instructions can form applications that are tangibly implemented on processor-readable media.

[0298] For example, instructions can be found in hardware, firmware, software, or a combination thereof. Instructions can be found, for example, in an operating system, a standalone application, or a combination of both. Therefore, a processor can be characterized as, for example, a device configured to execute a process and a device including a processor-readable medium (such as a storage device) having instructions for executing the process. Additionally, in addition to or instead of instructions, the processor-readable medium can store data values ​​generated by the implementation.

[0299] The device can be implemented, for example, in appropriate hardware, software, and firmware. Examples of such devices include personal computers, laptops, smartphones, tablets, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected home appliances, head-mounted display devices (HMDs, see-through glasses), projectors, "caves" (systems comprising multiple displays), servers, video encoders, video decoders, post-processors that process the output from the video decoder, pre-processors that provide input to the video encoder, web servers, set-top boxes, and any other devices or communication devices used to process point clouds, video, or images. It should be clear that the equipment can be mobile and even mounted in mobile vehicles.

[0300] The computer software can be implemented by processor 310 or by hardware, or by a combination of hardware and software. As a non-limiting example, embodiments can also be implemented using one or more integrated circuits. Memory 320 can be of any type suitable for the technical environment and can be implemented using any suitable data storage technology, such as optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory, as non-limiting examples. Processor 310 can be of any type suitable for the technical environment and can encompass one or more of microprocessors, general-purpose computers, special-purpose computers, and processors based on multi-core architectures, as non-limiting examples.

[0301] As will be apparent to those skilled in the art, implementations can generate various signals formatted to carry information, such as information that can be stored or transmitted. The information may include, for example, instructions for performing a method or data generated by one of the described implementations. For example, the signal may be formatted to carry a bit stream of the described embodiments. Such a signal may be formatted as, for example, electromagnetic waves (e.g., using the radio frequency portion of a spectrum) or baseband signals. Formatting may include, for example, encoding the data stream and modulating a carrier wave with the encoded data stream. The information carried by the signal may be, for example, analog or digital information. As is known, the signal can be transmitted via various wired or wireless links. The signal may be stored on a processor-readable medium.

[0302] 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 “an,” “a,” and “the” may also be intended to include the plural forms unless the context clearly indicates otherwise. It will be further understood that, when used in this specification, the terms “include / comprise” and / or “including / comprising” may 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. Furthermore, when an element is referred to as “responding” or “connected” to another element, it may directly respond to or connect to the other element, or there may be intermediate elements. Conversely, when an element is referred to as “directly responding” or “directly connected” to another element, there are no intermediate elements.

[0303] It should be recognized that, for example, in the cases of “A / B,” “A and / or B,” and “at least one of A and B,” the use of any of the symbols / terms “ / ,” “and / or,” and “at least one” can be intended to cover the selection of only the first listed option (A), or only the second listed option (B), or the selection of both options (A and B). As a further example, in the cases of “A, B, and / or C” and “at least one of A, B, and C,” such wording is intended to cover the selection of only the first listed option (A), or only the second listed option (B), or only the third listed option (C), or only the first and second listed options (A and B), or only the first and third listed options (A and C), or only the second and third listed options (B and C), or the selection of all three options (A, B, and C). As will be apparent to those skilled in the art and related fields, this can be extended to as many items as are listed.

[0304] Various numerical values ​​may be used in this application. Specific values ​​may be used for illustrative purposes and the aspects described are not limited to these specific values.

[0305] It will be understood that while the terms first, second, etc., may be used herein to describe various elements, these elements are not limited by these terms. These terms are used only to distinguish one element from another. For example, without departing from the teachings of this application, a first element may be referred to as a second element, and similarly, a second element may be referred to as a first element. There is no implied order between the first element and the second element.

[0306] The references to “an exemplary embodiment” or “an exemplary embodiment” or “an implementation” or “implementation” and other variations thereof are frequently used to convey that a particular feature, structure, characteristic, etc. (described in connection with the embodiment / implementation) is included in at least one embodiment / implementation. Therefore, the phrases “in an exemplary embodiment” or “in an exemplary embodiment” or “in one implementation” or “in one implementation” appearing throughout this application, as well as any other variations, do not necessarily refer to the same embodiment.

[0307] Similarly, the references to "according to an exemplary embodiment / example / implementation" or "in an exemplary embodiment / example / implementation" and their variations are frequently used herein to convey that a particular feature, structure, or characteristic (described in conjunction with an exemplary embodiment / example / implementation) may be included in at least one exemplary embodiment / example / implementation. Therefore, the expressions "according to an exemplary embodiment / example / implementation" or "in an exemplary embodiment / example / implementation" appearing throughout the specification do not necessarily refer to the same exemplary embodiment / example / implementation, nor are individual or alternative exemplary embodiments / examples / implementations necessarily mutually exclusive with other exemplary embodiments / examples / implementations.

[0308] The reference numerals appearing in the claims are for illustrative purposes only and do not limit the scope of the claims. Although not explicitly described, these embodiments / examples and variations may be employed in any combination or sub-combination.

[0309] When a diagram is presented as a flowchart, it should be understood that it also provides a block diagram of the corresponding apparatus. Similarly, when a diagram is presented as a block diagram, it should be understood that it also provides a flowchart of the corresponding method / process.

[0310] While some diagrams include arrows along the communication path to indicate the main direction of communication, it should be understood that communication can occur in the opposite direction to the arrows depicted.

[0311] Various implementations involve decoding. As used herein, "decoding" can encompass all or part of a process performed, for example, on a received point cloud frame (which may include a received bitstream encoded with one or more point cloud frames) to produce a final output suitable for display or further processing in a reconstructed point cloud domain. In various embodiments, such a process includes one or more processes typically performed by a decoder. In various embodiments, such a process may also, or alternatively, include processes performed by a decoder of the various embodiments described herein.

[0312] As a further example, in one embodiment "decoding" may refer only to dequantization, in another embodiment "decoding" may refer to entropy decoding, in yet another embodiment "decoding" may refer only to differential decoding, and in still another embodiment "decoding" may refer to a combination of dequantization, entropy decoding, and differential decoding. It will be clear, and believed to be well understood, by those skilled in the art, that the phrase "decoding process" may be intended to specifically refer to a subset of operations or generally to a broader decoding process, depending on the context of the specific description.

[0313] Various implementations involve encoding. Similar to the above discussion of "decoding," the term "encoding" as used herein can encompass all or part of a process, such as performing an input point cloud frame to generate an encoded bitstream. In various embodiments, such processes include one or more processes typically performed by an encoder. In various embodiments, such processes also, or alternatively, include processes performed by an encoder of the various embodiments described herein.

[0314] As a further example, in one embodiment, "encoding" may refer only to quantization; in another embodiment, "encoding" may refer only to entropy encoding; in yet another embodiment, "encoding" may refer only to differential encoding; and in still another embodiment, "encoding" may refer to a combination of quantization, differential encoding, and entropy encoding. It will be clear, and believed to be well understood, by those skilled in the art, that the phrase "encoding process" may be intended to specifically refer to a subset of operations or generally to a broader encoding process, depending on the context of the particular description.

[0315] Furthermore, this application may refer to "determining" various types of information. Determining information may include one or more of the following: estimated information, calculated information, predicted information, or information retrieved from memory.

[0316] Additionally, this application may refer to "accessing" various types of information. Accessing information may include one or more of the following: receiving information, retrieving information (e.g., from memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.

[0317] Furthermore, this application may refer to "receiving" various types of information. Like "accessing," receiving is a broad term. Receiving information may include one or more of the following: for example, accessing information or (e.g., retrieving information from memory). Additionally, "receiving" generally refers to actions such as storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information, in one or more ways.

[0318] Moreover, as used herein, the term "signal" specifically refers to the corresponding decoder indicating something. For example, in some embodiments, the encoder signals specific information, such as at least one binary data f. j The residual R, the number of points in the point cloud, or the coordinates or order of the first point in the 2D coordinate (φ, λ) system (P1), or sensor setup parameters (such as the basic azimuth shift Δφ or elevation angle θ associated with sensor k). k In this way, in embodiments, the same parameter can be used on both the encoder and decoder sides. Thus, for example, the encoder can transmit (explicit signaling) a specific parameter to the decoder so that the decoder can use the same specific parameter. Conversely, if the decoder already has the specific parameter along with other parameters, then signaling can be used without transmission (implicit signaling) to simply allow the decoder to know and select the specific parameter. Bit savings are achieved in various embodiments by avoiding the transmission of any actual functionality. It should be recognized that signaling can be accomplished in various ways. For example, in various embodiments, one or more syntax elements, flags, etc., are used to signal information to the corresponding decoder. Although the verb form of the word "signal" has been used above, the word "signal" can also be used as a noun herein.

[0319] Several implementations have been described. However, it should 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. Furthermore, those skilled in the art will understand that other structures and processes can replace the disclosed structures and processes, and the resulting implementations will perform at least substantially the same functions in at least substantially the same manner to achieve at least substantially the same results as the disclosed implementations. Therefore, these and other implementations are contemplated in this application.

Claims

1. A method for encoding a point cloud into a bitstream of encoded point cloud data representing physical objects, wherein the points of the point cloud are ordered based on an azimuth angle representing a sensor's acquisition angle and a sensor index associated with the sensor, wherein the method includes encoding at least one order index difference representing the difference between the order indices of two consecutive ordered points into the bitstream by: At least one binary data is obtained by binarizing the at least one order index difference; and For each binary data, a context is selected based on the distance between the azimuth associated with the binary data and the azimuth of a previously encoded point, and the binary data in the bit stream is entropy encoded based on the selected context.

2. The method of claim 1, wherein the encoded point is the penultimate encoded point having the same sensor index as the sensor index associated with the binary data.

3. A method for decoding a point cloud from a bitstream of encoded point cloud data representing a physical object, wherein the method includes decoding at least one order index difference representing the difference between order indices of two consecutive ordered points based on at least one binary data decoded from the bitstream, each binary data being decoded by: The context is selected based on the distance between the azimuth associated with the binary data and the azimuth of previously decoded points; Based on the selected context and probability information associated with the binary data decoded from the bitstream, context-based entropy decoding is performed on the at least one binary data; and Decode the order index difference from at least one context-based entropy-decoded binary data.

4. The method of claim 3, wherein the decoded point is the penultimate decoded point having the same sensor index as the sensor index associated with the binary data.

5. The method of claim 3, wherein the context for decoding the binary data is selected from a context table indexed by a context index, and wherein the context index for the binary data is equal to the distance between the azimuth associated with the binary data and the azimuth of the previously decoded point.

6. The method of claim 3, wherein the context for decoding the binary data is selected from a context table indexed by a context index, and wherein the context index for the binary data depends on the rank of the binary data in a series of binary data representing the order index difference.

7. The method of claim 3, wherein the context for decoding the binary data is selected from a context table indexed by a context index, and wherein the context index for the binary data depends on a sensor index associated with the binary data.

8. The method of claim 3, wherein the context for decoding binary data is selected from a context table indexed by a context index, and the context index for binary data depends on sensor packets that are regrouped to have similar elevation angles.

9. An apparatus for encoding a point cloud into a bit stream of encoded point cloud data representing a physical object, wherein the points of the point cloud are ordered based on an azimuth angle representing a sensor's acquisition angle and a sensor index associated with the sensor, wherein the apparatus includes one or more processors configured to encode at least one order index difference representing the difference between the order indices of two consecutive ordered points into the bit stream by: At least one binary data is obtained by binarizing the at least one order index difference; and For each binary data, a context is selected based on the distance between the azimuth associated with the binary data and the azimuth of a previously encoded point, and the binary data in the bit stream is entropy encoded based on the selected context.

10. An apparatus for decoding points representing a point cloud of a physical object from a bit stream, wherein the apparatus includes one or more processors configured to decode at least one order index difference representing a difference between order indices of two consecutive ordered points based on at least one binary data decoded from the bit stream, each binary data being decoded by: The context is selected based on the distance between the azimuth associated with the binary data and the azimuth of previously decoded points; Context-based entropy decoding of the at least one binary data is performed based on the selected context and probabilistic information associated with the binary data decoded from the bitstream; and Decode the order index difference from at least one context-based entropy-decoded binary data.

11. A method for storing a bit stream, characterized in that, Generate a bit stream by performing the method according to any one of claims 1 to 2; and store the bit stream.

12. A method for transmitting a bit stream, characterized in that, Generate a bit stream by performing the method according to any one of claims 1 to 2; and transmit the bit stream.

13. A computer program product including instructions that, when executed by one or more processors, cause the one or more processors to perform a method for encoding a point cloud into a bit stream of encoded point cloud data representing physical objects, wherein the points of the point cloud are ordered based on an azimuth angle representing a sensor's acquisition angle and a sensor index associated with the sensor, the method comprising encoding at least one order index difference representing the difference between the order indices of two consecutive ordered points into the bit stream by: At least one binary data is obtained by binarizing the at least one order index difference; and For each binary data, a context is selected based on the distance between the azimuth associated with the binary data and the azimuth of a previously encoded point, and the binary data in the bit stream is entropy encoded based on the selected context.

14. A non-transitory storage medium carrying instructions for program code to perform a method of encoding a point cloud into a bit stream of encoded point cloud data representing physical objects, wherein the points of the point cloud are ordered based on an azimuth angle representing a sensor's acquisition angle and a sensor index associated with the sensor, the method comprising encoding at least one order index difference representing the difference between the order indices of two consecutive ordered points into the bit stream by: At least one binary data is obtained by binarizing the at least one order index difference; and For each binary data, a context is selected based on the distance between the azimuth associated with the binary data and the azimuth of a previously encoded point, and the binary data in the bit stream is entropy encoded based on the selected context.

15. A computer program product including instructions that, when executed by one or more processors, cause the one or more processors to perform a method for decoding points representing a point cloud of physical objects from a bit stream, the method comprising decoding at least one order index difference representing a difference between order indices of two consecutive ordered points based on at least one binary data decoded from the bit stream, each binary data being decoded by: The context is selected based on the distance between the azimuth associated with the binary data and the azimuth of previously decoded points; Context-based entropy decoding of the at least one binary data is performed based on the selected context and probabilistic information associated with the binary data decoded from the bitstream; and Decode the order index difference from at least one context-based entropy-decoded binary data.

16. A non-transitory storage medium carrying instructions for performing program code to perform a method of decoding points representing a point cloud of physical objects from a bit stream, the method comprising decoding at least one order index difference representing a difference between order indices of two consecutive ordered points based on at least one binary data decoded from the bit stream, each binary data being decoded by: The context is selected based on the distance between the azimuth associated with the binary data and the azimuth of previously decoded points; Context-based entropy decoding of the at least one binary data is performed based on the selected context and probabilistic information associated with the binary data decoded from the bitstream; and Decode the order index difference from at least one context-based entropy-decoded binary data.

Citation Information

Patent Citations

  • Method and appartus for compression of point cloud data

    US20200175725A1