Method and system for azimuth prior and tree representation for cloud compression
Through the tree-based encoding and decoding method, combining the plane mode and the direct encoding and decoding mode, point cloud data compression is optimized, and the problem of low point cloud data compression efficiency in the existing technology is solved, and more efficient storage and transmission is achieved.
Patent Information
- Application Number
- CN201980101940.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2019-10-31
- Publication Date
- 2025-08-08
- Estimated Expiration
- 2039-10-31
AI Technical Summary
The prior art is difficult to efficiently compress point cloud data, especially to process point cloud data in isolated points and non-natural environments, resulting in high storage and transmission bandwidth requirements and serious waste of computing resources.
The tree-based codec method is adopted, combined with planar mode and direct codec mode (IDCM), and optimized the compression process of point cloud data by determining the azimuth prediction angle and angular azimuth context.
It improves the compression efficiency of point cloud data, reduces storage and transmission requirements, reduces computing resource consumption, and adapts to the point cloud data characteristics of different types of environments.
Smart Images

Figure CN114616592B_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates generally to point cloud compression, and in particular to methods and apparatus for improved compression of occupancy data in tree-based encoding and decoding of point clouds and point coordinate data. Background Art
[0002] Data compression is used in communications and computer networks to efficiently store, transmit, and reproduce information. There is growing interest in the representation of three-dimensional objects or spaces, which can involve large data sets and for which efficient and effective compression would be very useful and valuable. In some cases, a three-dimensional object or space can be represented using a point cloud, which is a set of points where each point has a three-dimensional coordinate position (X, Y, Z) and in some cases other properties like color data (e.g., brightness and chromaticity), transparency, reflectivity, normal vectors, etc. Point clouds can be static (a fixed object or a snapshot of an environment / object at a single point in time) or dynamic (a time-ordered sequence of point clouds).
[0003] Example applications of point clouds include topography and mapping applications. Autonomous vehicles and other machine vision applications can rely on point cloud sensor data in the form of 3D scans of the environment (such as from LiDAR scanners). Virtual reality simulations can rely on point clouds.
[0004] It will be appreciated that point clouds can involve large amounts of data and that compressing (encoding and decoding) this data quickly and accurately is of great interest. Therefore, it would be advantageous to provide methods and apparatus for more efficiently and / or effectively compressing point cloud data. Such methods can result in savings in storage requirements (memory) or bandwidth for transmission of compressed data through improved compression, thereby resulting in improved operation of 3D vision systems (such as those used in autonomous driving applications) or improved operation and rendering speeds of, for example, virtual reality systems. BRIEF DESCRIPTION OF THE DRAWINGS
[0005] Reference will now be made, by way of example, to the accompanying drawings which show example embodiments of the present application, and in which:
[0006] Figure 1 A simplified block diagram of an example point cloud encoder is shown;
[0007] Figure 2 shows a simplified block diagram of an example point cloud decoder;
[0008] Figure 3 and Figure 4 illustrates an example of a volume exhibiting planarity within its occupied child subvolumes;
[0009] Figure 5An example method for encoding point cloud data using a planar encoding / decoding mode is shown in flowchart form;
[0010] Figure 6 A simplified diagram showing an example of a beam assembly for acquiring a point cloud;
[0011] Figure 7 A simplified diagram showing an example of a single beam emitter in a beam assembly;
[0012] Figure 8 shows a diagram comprising points of an example point cloud expressed in the (r, θ) plane;
[0013] Figure 9 shows an example assignment of coordinate axes relative to points of a point cloud;
[0014] Figure 10 An example of an arrangement of a beam emitter of a beam assembly relative to a reference position of the beam assembly is shown;
[0015] Figure 11 Shown Figure 8 Details of the figure in;
[0016] Figure 12 shows a diagram comprising points of an example point cloud expressed in the (r, θ) plane after correction of the angle θ has been performed based on characteristics of the beam assembly;
[0017] Figure 13 An example of the angular size of a volume of point cloud data relative to the angular difference between beams emitted by a beam assembly is shown;
[0018] Figure 14 An example of angles of a group of sub-volumes of a volume of point cloud data relative to a beam emitter is shown;
[0019] Figure 15 An example prediction point tree is shown;
[0020] Figure 16 Shows spherical coordinates, azimuth and diagram of the elevation angle θ;
[0021] Figure 17 shows point sensing by a rotating LiDAR head;
[0022] Figure 18 A typical scanning sequence of a rotating LiDAR head is shown;
[0023] Figure 19 shows an example scan of the LiDAR head, where some points are not registered and the azimuth prior is essentially multiples of;
[0024] Figure 20 A diagram showing a process for decoding information indicating current node occupancy using an azimuth prediction angle;
[0025] Figure 21 shows the average predicted angle The construction of
[0026] Figure 22 A diagram is shown for establishing the eligibility of a node for azimuth encoding and decoding;
[0027] Figure 23 Example predictions for plane positioning are shown;
[0028] Figure 24 shows the current node identified by the predicted angle approaching the x-axis;
[0029] Figure 25 shows the current node identified by the predicted angle approaching the y-axis;
[0030] Figure 26 The right and left azimuth angles of the virtual plane of the x-plane node are shown;
[0031] Figure 27 A diagram showing a process for predicting the position of a plane in a planar pattern using an orientation prior;
[0032] Figure 28 A process diagram for using azimuth encoding and decoding mode in IDCM mode is shown;
[0033] Figure 29 shows the initial x interval obtained from the node size along the x direction;
[0034] Figure 30 shows the evolution of the previous x interval after decoding or encoding the bits of the coordinate x of the point;
[0035] Figure 31 A process diagram for using the azimuth encoding / decoding mode for prediction point trees is shown;
[0036] Figure 32 An example simplified block diagram of an encoder is shown; and
[0037] Figure 33 An example simplified block diagram of a decoder is shown.
[0038] Like reference numerals may have been used in different drawings to denote like components. DETAILED DESCRIPTION
[0039] The present application describes methods for encoding and decoding point clouds, as well as encoders and decoders for encoding and decoding point clouds.
[0040] In one aspect, the present disclosure describes a method for encoding a point cloud to generate a bitstream of compressed point cloud data representing a three-dimensional position of an object, wherein the point cloud is located in a volumetric space and is represented by a tree, the method comprising: determining at least one closest coded node relative to an orientation distance to a current node of the tree; determining an orientation prediction angle for each closest coded node of the at least one closest coded node; finding an average orientation prediction angle based on the orientation prediction angle for each closest determined coded node of the at least one closest coded node; selecting an angular orientation context based on the average orientation prediction angle; and encoding information representing the current node based on the orientation context to generate a bitstream of compressed point cloud data.
[0041] In one aspect, the present disclosure also describes a method for decoding a bit stream of compressed point cloud data representing a three-dimensional position of an object to generate point cloud data, the point cloud being located within a volumetric space and represented by a tree, the method comprising: determining at least one closest codec node relative to an orientation distance to a current node of the tree; determining an orientation prediction angle for each closest codec node among the at least one closest codec node; finding an average orientation prediction angle based on the orientation prediction angle for each closest determined codec node among the at least one closest codec node; selecting an angular orientation context based on the average orientation prediction angle; and decoding information representing the current node based on the orientation context to generate point cloud data.
[0042] In another aspect, the present disclosure describes that the prediction angle is determined based on the sum of the already encoded node azimuth angles divided by the errors, all divided by the sum of the inverses of the errors for the already encoded nodes.
[0043] In another aspect, the present disclosure describes that nodes that determine at least one closest codec do not include nodes that are larger than a current node and / or do not include nodes that are greater than a threshold bearing distance from the current node.
[0044] In another aspect, the present disclosure describes encoding or decoding using a planar mode, and wherein the method further includes determining a left azimuth angle and a right azimuth angle for a current node, wherein selecting the angle further includes: assigning a first bit based on whether the azimuth prediction angle minus the left azimuth angle has the same sign as the azimuth prediction angle minus the right azimuth angle; assigning a second bit based on which of the azimuth prediction angle minus the left azimuth angle and the azimuth prediction angle minus the right azimuth angle has the largest absolute magnitude; and providing a quantized context index based on the magnitude difference between the azimuth prediction angle minus the left azimuth angle and the azimuth prediction angle minus the right azimuth angle multiplied by the inverse of the radius to the current node.
[0045] In another aspect, the present disclosure describes that the method further includes selecting an x-plane location and / or a y-plane location for orientation prediction based on a position of the current node relative to the x-axis or the y-axis.
[0046] In another aspect, the present disclosure describes encoding or decoding in an inferred direct encoding and decoding mode ("IDCM"), and wherein the method further includes: initializing a coordinate interval; recursively splitting the interval by: determining a left azimuth angle and a right azimuth angle for a current node; selecting an angular orientation context by further using the left azimuth angle and the right azimuth angle and the average orientation prediction angle; and updating the coordinate interval after encoding or decoding.
[0047] In another aspect, the present disclosure describes that determining the left and right bearing angles is based on two points located at 1 / 4 and 3 / 4 of the interval.
[0048] In another aspect, the present disclosure describes determining the left and right bearing angles using a first order approximation from previous values of the left and right bearing angles and / or the bearing prediction angle.
[0049] In another aspect, the present disclosure describes encoding or decoding using a prediction point tree, and wherein the method further includes: determining a prediction of a point associated with a current node before determining an azimuth prediction angle; initializing a coordinate interval for a coordinate based on the prediction and the size of a residual; for each bit in the residual: determining a left azimuth angle and a right azimuth angle for the current; selecting an angular azimuth context by further using the left azimuth angle and the right azimuth angle together with an average azimuth prediction angle; performing encoding or decoding of the highest-order remaining bits for the coordinate; and updating the coordinate interval after encoding or decoding.
[0050] In another aspect, the present disclosure also describes updating the azimuth prediction angle after updating the coordinate interval.
[0051] In yet another aspect, the present application describes encoders and decoders configured to implement such encoding and decoding methods.
[0052] In yet another aspect, the present application describes a non-transitory computer-readable medium storing computer-executable program instructions that, when executed, cause one or more processors to perform the described encoding and / or decoding methods.
[0053] In yet another aspect, the present application describes a computer-readable signal comprising program instructions which, when executed by a computer, cause the computer to perform the described encoding and / or decoding method.
[0054] Any feature described in relation to one aspect or embodiment of the invention may also be used in relation to one or more other aspects / embodiments.These and other aspects of the invention will be apparent from and elucidated with reference to the embodiments described herein.
[0055] Sometimes in the description below, the terms "node," "volume," and "subvolume" may be used interchangeably. It will be appreciated that a node is associated with a volume or subvolume. The node is a specific point on the tree, which may be an internal node or a leaf node. A volume or subvolume is a bounded physical space represented by a node. The term "volume" may in some cases be used to refer to the largest bounded space defined to contain a point cloud. A volume may be recursively divided into subvolumes for use in constructing a tree structure of interconnected nodes for encoding and decoding point cloud data. The tree-like structure that partitions a volume into subvolumes may be referred to as a "parent" and "child" relationship, where a subvolume is a child node or child subvolume of a parent node or parent volume. Subvolumes within the same volume may be referred to as sibling nodes or sibling subvolumes.
[0056] In this application, the term "and / or" is intended to cover all possible combinations and subcombinations of the listed elements, including only any one of the listed elements, any subcombination of elements, or all of the elements, and not necessarily excluding additional elements.
[0057] In this application, the phrase "at least one of... or..." is intended to encompass any one or more of the listed elements, including only any one of the listed elements, any subcombination of elements, or all of them, and does not necessarily exclude any additional elements, and does not necessarily require all of the elements.
[0058] A point cloud is a collection of points in a three-dimensional coordinate system. Points are typically intended to represent the outer surface of one or more objects. Each point has a position (location) in a three-dimensional coordinate system. This location can be represented by three coordinates (X, Y, Z), which can be Cartesian or any other coordinate system. Points can have other associated attributes, such as color, which in some cases can also be a three-component value such as R, G, B or Y, Cb, Cr. Other associated attributes can include transparency, reflectivity, normal vectors, etc., depending on the desired application of the point cloud data.
[0059] Point clouds can be static or dynamic. For example, a detailed scan or map of an object or terrain can be static point cloud data. LiDAR-based scans of an environment for machine vision purposes can be dynamic, as the point cloud (at least potentially) changes over time, e.g., with each successive scan of a volume. A dynamic point cloud is therefore a time-ordered sequence of point clouds.
[0060] Point cloud data can be used in many applications, including conservation (scanning of historical or cultural objects), mapping, machine vision (such as autonomous or semi-autonomous vehicles), and virtual reality systems, to name a few. Dynamic point cloud data for applications like machine vision can be very different from static point cloud data, such as that used for conservation purposes. Autonomous driving vision, for example, typically involves relatively small resolution, colorless, highly dynamic point clouds obtained by LiDAR (or similar) sensors with a high capture frequency. Such point clouds are not intended for human consumption or viewing, but for machine object detection / classification in decision-making processes. As an example, a typical LiDAR frame contains on the order of tens of thousands of points, whereas high-quality virtual reality applications require millions of points. It is expected that over time as computing speeds increase and new applications are discovered, there will be a demand for higher resolution data.
[0061] While point cloud data is useful, the lack of effective and efficient compression (i.e., encoding and decoding processes) can hinder its utilization and deployment. A particular challenge in encoding and decoding point clouds is encoding and decoding the geometric structure of the point cloud, which does not occur in the case of other data compression like audio or video. Point clouds tend to be sparsely populated, which makes it even more challenging to efficiently encode and decode the positions of the points.
[0062] Tree-based structures
[0063] One of the more common mechanisms for encoding point cloud data is by using a tree-based structure. In a tree-based structure, the bounding three-dimensional volume for the point cloud is recursively divided into sub-volumes. The nodes of the tree correspond to sub-volumes. The decision whether to further divide the sub-volume can be based on the resolution of the tree and / or whether there are any points contained in the sub-volume. A node can have an occupancy flag indicating whether its associated sub-volume contains a point. A split flag can indicate whether a node has children (i.e., whether the current volume has been further split into sub-volumes). These flags can be entropy coded in some cases, and in some cases, predictive coding can be used.
[0064] The three-dimensional volume of a point cloud can also be defined using a bounding box. A quadtree plus binary tree (QTBT) structure for the bounding box allows for the segmentation of the point cloud in non-cubic volumes that can better represent the overall shape of the point cloud or objects within the point cloud. Quadtree (QT) segmentation splits the volume into four sub-volumes, for example, by using two planes that cut the volume into four parts. Binary tree (BT) segmentation splits the volume into two sub-volumes, for example, by using a plane that cuts the volume into two parts.
[0065] A commonly used tree structure is the octree. In this structure, volumes / subvolumes are all cubes (or more generally, cuboids) and each split of a subvolume results in eight further subvolumes / subcubes. Another commonly used tree structure is the KD-tree, in which the volume (cube or rectangular cuboid) is recursively divided into two halves by a plane orthogonal to one of the axes. An octree is a special case of a KD-tree, in which the volume is divided by three planes, each orthogonal to one of the three axes. A KD-tree can usually be obtained by recursively applying a binary tree (BT) partitioning.
[0066] The partitioning of the volume is not necessarily into two sub-volumes (KD-tree) or eight sub-volumes (octree), but may involve other partitionings, including partitioning into non-cuboid shapes or involving non-adjacent sub-volumes.
[0067] For ease of explanation, this application may refer to octrees and because they are a popular candidate tree structure for autonomous driving applications, but it will be understood that the methods and apparatus described herein may be implemented using other tree structures.
[0068] Now refer to Figure 1 , which shows a simplified block diagram of a point cloud encoder 10 according to aspects of the present application. The point cloud encoder 10 includes a tree construction module 12 for receiving point cloud data and generating a tree (in this example, an octree) that represents the geometry of the volumetric space containing the point cloud and indicates the positions or locations of points from the point cloud in the geometry.
[0069] In the case of a uniformly partitioned tree structure (such as an octree), each node can be represented by a sequence of occupied bits, where each occupied bit corresponds to a subvolume in the node and indicates whether the subvolume contains at least one point. The occupied subvolumes are recursively split up to the maximum depth of the tree. This can be called serialization or binarization of the tree. Figure 1 As shown in FIG, in this example, the point cloud encoder 10 includes a binarizer 14 for binarizing an octree to generate binarized data representing the tree.
[0070] The bit sequence can then be encoded using an entropy encoder 16 to produce a compressed bit stream. The entropy encoder 16 can encode the bit sequence using a context model 18, which specifies the probability of encoding the bit based on the context determined by the entropy encoder 16. The context model 18 can be adaptively updated after encoding each bit or a defined set of bits. The entropy encoder 16 can be a binary arithmetic encoder in some cases. The binary arithmetic encoder can adopt context-adaptive binary arithmetic coding (CAB AC) in some implementations. In some implementations, a codec other than an arithmetic codec can be used.
[0071] In some cases, the entropy encoder 16 may not be a binary codec, but may operate on non-binary data. The output octree data from the tree construction module 12 may not be evaluated in binary form, but may be encoded as non-binary data. For example, in the case of an octree, the eight flags (e.g., occupancy flags) within the subvolume in their scan order may be considered as 2 8 A -1 bit number (e.g., an integer with a value between 1 and 255, since the value 0 is impossible for a split subvolume, i.e., it would not be split if it were completely unoccupied). In some implementations, this number can be encoded by an entropy encoder using a multi-symbol arithmetic codec. Within a subvolume (e.g., a cube), the sequence of symbols defining this integer can be named a "pattern."
[0072] A convention commonly used in point cloud compression is that an occupied bit value of "1" indicates that the associated node or volume is "occupied," i.e., it contains at least one point, and an occupied bit value of "0" indicates that the associated node or volume is "unoccupied," i.e., it contains no points. More generally, an occupied bit can have a value indicating occupied or a value indicating unoccupied. In the following description, for ease of explanation, example embodiments may be described in which the convention of 1 = occupied and 0 = unoccupied is used; however, it will be understood that the present application is not limited to this convention.
[0073] exist Figure 2 A block diagram of an example point cloud decoder 50 corresponding to encoder 10 is shown in FIG. The point cloud decoder 50 includes an entropy decoder 52 that uses the same context model 54 used by encoder 10. The entropy decoder 52 receives an input bit stream of compressed data and entropy decodes the data to produce an output sequence of decompressed bits. This sequence is then converted into reconstructed point cloud data by a tree reconstructor 56. The tree reconstructor 56 reconstructs the tree structure based on knowledge of the scan order in which the decompressed data and the tree data were binarized. The tree reconstructor 56 is therefore able to reconstruct the positions of points from the point cloud (subject to the resolution of the tree codec).
[0074] In European patent application No. 18305037.6, the applicant describes a method and apparatus for selecting from available pattern distributions to use in encoding an occupancy pattern of a particular node based on some occupancy information from previously encoded nodes in the vicinity of the particular node. In one example implementation, the occupancy information is obtained from the occupancy pattern of the parent of the particular node. In another example implementation, the occupancy information is obtained from one or more nodes adjacent to the particular node. The contents of European patent application No. 18305037.6 are incorporated herein by reference. This is referred to as determining a "neighborhood configuration" and selecting a context (i.e., a pattern distribution) based at least in part on the neighbor configuration.
[0075] In European Patent Application No. 18305415.4, the present applicant describes a method and apparatus for binary entropy coding and decoding of occupancy patterns, the content of which is incorporated herein by reference.
[0076] Inferred Direct Codec Mode (IDCM)
[0077] One of the issues with using a tree structure to compress point cloud data is that it doesn't necessarily handle isolated points well. The recursive splitting of subvolumes and the location of points within the split subvolumes is computationally expensive and time-consuming, and signaling the recursive splitting of subvolumes to pinpoint the location of one or a few isolated points can be costly in terms of bandwidth / memory storage and computational time and resources. Furthermore, isolated points "pollute" the distribution of patterns, causing many patterns to have only one occupied child, thus changing the balance of the distribution and penalizing the encoding and decoding of other patterns.
[0078] Therefore, direct encoding and decoding of the location information of isolated points has been proposed. Direct encoding and decoding of the location of points (e.g., coordinates within a volume or subvolume) can be named direct encoding and decoding mode (DCM). Because using DCM for all points would be very inefficient, one option is to use a dedicated flag for each occupied node to indicate whether DCM will be used for any point within the node; however, this option can result in excessive overhead costs for the signaling, thereby resulting in worse compression performance.
[0079] Another option is to determine the eligibility of the occupied node to use DCM based on occupancy information from other nodes. If the occupied node is eligible to use DCM, a flag is inserted into the bitstream to indicate whether DCM is applied. This method can be named inferred direct coding mode (IDCM).
[0080] The qualifying conditions for an IDCM for a tree whose volume consists of adjacent cuboids can be: A) all six adjacent cuboids (upward, downward, forward, backward, left, and right) are unoccupied; or, if the occupancy of adjacent cuboids is unknown, B) the number of occupied nodes in the parent pattern is equal to one, i.e., the current node is isolated at the parent level. In some cases, it can be beneficial to apply either of conditions A) and B) together with condition C) that the number of occupied nodes in the grandparent pattern is equal to one, i.e., the current node is also isolated at the grandparent level. Furthermore, the threshold for the number of occupied parent or grandparent nodes can be different from one.
[0081] If a node is eligible for DCM, a flag is encoded to indicate whether DCM is applied. This flag can be determined by the encoder based on the number of points belonging to the volume attached to the node. If this number is less than or equal to a threshold, then DCM is activated, otherwise it is not activated.
[0082] Therefore, according to another aspect of the present application, the eligibility of an occupied node to use DCM is determined based on occupancy information from other nodes.If the occupied node is eligible to use DCM, a flag is inserted into the bitstream to indicate whether DCM is applied.
[0083] When DCM is applied, encoding and decoding of points can be performed by encoding the number of points using a truncated unary binarizer followed by a binary entropy codec, but other binarizations can be used depending on the threshold chosen for eligibility and by encoding and decoding the X, Y, and Z coordinates of each point independently with respect to the volume associated with the node. For example, if the volume is a node with side length 2 D If the cube is , then each coordinate of each point will require D bits.
[0084] The value of the threshold should be known implicitly by the decoder or as a codec parameter.
[0085] Plane Mode
[0086] Certain types of point cloud data tend to have strong directionality. Unnatural environments are particularly directional because they tend to feature uniform surfaces. For example, in the case of LiDAR, roads and the walls of adjacent buildings are generally horizontal or vertical planes. In the case of interior scanning within a room, the floor, ceiling, and walls are all flat. LiDAR used for autonomous driving vision and similar applications tends to have lower resolution and also needs to be compressed quickly and efficiently.
[0087] Octrees are efficient tree structures because they are based on a uniform segmentation process that uses three orthogonal planes to divide a cube into eight sub-cubes in each case, so it is efficient to signal their structure. However, octrees using current signaling processes cannot utilize the efficiency that can be obtained from the planar properties of identifying some unnatural environments. However, KD trees can make segmentation better adapt to the directionality of point clouds. This makes them a more efficient and effective structure for these types of environments. The disadvantage of KD trees is that the signaling of their structure requires significantly more data than octrees. The fact that KD trees are non-uniform means that some of the techniques used to improve octree compression are unavailable to KD trees or will be difficult to implement computationally.
[0088] Therefore, in some cases it is advantageous to have a mechanism for representing unnatural environments using a uniform partitioning based tree structure in a way that improves compression by exploiting horizontal and / or vertical directionality.
[0089] In some cases, point cloud compression can be improved by using planar codec mode. Planar mode is used to indicate that a volume meets certain requirements for planarity in terms of its occupancy. Specifically, a volume is planar if all of its occupied subvolumes are positioned or located in a common plane. The syntax used for signaling can indicate whether the volume is planar and, if so, the location of the common plane. By exploiting this knowledge of planarity, compression gains can be achieved. Applying criteria for enabling eligibility for planar mode and a mechanism for context-adaptive codec for planar mode signaling help improve compression performance.
[0090] Planarity is generally assumed to be relative to the Cartesian axes aligned with the structure of the volume and subvolumes. That is, a volume is planar if all occupied subvolumes of the volume are located in a common plane that is orthogonal to one of the axes. By convention, the z-axis is vertical, meaning that the (horizontal) plane is orthogonal to the z-axis.
[0091] For eligible nodes, a flag, referred to herein as "isPlanar," can be added to indicate whether the node is planar. This flag can be entropy-encoded using prediction techniques. Given the generalization to x-plane and y-plane modes, the syntax can consist of three flags, referred to herein as: isZPlanar, isXPlanar, and isYPlanar.
[0092] In some embodiments, a node is said to be planar if all of its occupied child nodes belong to the same horizontal plane. In the case of an octree, such a plane consists of four child nodes, one of which must be occupied. Figure 3 and Figure 4As shown in , the horizontal plane can be located at the bottom of the current node, corresponding to the first value of the flag "planePosition", such as 0, as shown by box 300, or at the top of the current node, corresponding to the second value of the flag "planePosition", such as 1, as shown by box 400.
[0093] Therefore, if the current node is planar, an extra bit, planePosition, is added to the syntax to indicate the plane position. This bit is also entropy coded.
[0094] Knowledge of the planar state of the current node helps in encoding and decoding the occupancy pattern. For example, if the node is z-planar, then the four occupancy bits associated with the child nodes belonging to the empty horizontal plane do not need to be encoded. Similarly, if the current node is not planar, it can be assumed that there is at least one occupied child node per horizontal plane, and this knowledge can be used to better compress the bitstream.
[0095] Various occupancy examples for the case where planePosition is bottom are in Figure 3 302, 304, 306, and 308. Similarly, various occupancy examples for the case where planePosition is top are shown in Figure 4 This is shown as blocks 402 , 404 , 406 , and 408 .
[0096] refer to Figure 5 A method for encoding nodes in planar mode is shown. Figure 5 The method reflects the process for encoding occupancy information for a volume. In this example, the volume is evenly divided into eight sub-volumes, each with an occupancy bit, according to an octree-based codec. For simplicity, this example assumes that only one (e.g., horizontal) planar mode is used.
[0097] At block 502, the encoder evaluates whether the volume qualifies for planar coding mode. In one example, eligibility can be based on cloud density, which can be evaluated using the average number of occupied child nodes. To improve local adaptation, eligibility can be tracked based on probabilistic factors. If planar coding mode is not eligible, the occupancy pattern for the volume is encoded without using planar coding mode, as indicated by block 504.
[0098] If planar mode is enabled, then in block 506 the encoder evaluates whether the volume is planar. If not, then in block 508 the process encodes a planar mode flag, e.g., isPlanar = 0. In block 510, the encoder then uses the fact that there is at least one occupied subvolume per plane to encode the occupancy pattern. That is, the occupancy pattern is encoded and if the first three bits encoded for any plane (upper or lower) are zero, then the last (fourth) bit for that plane is not encoded and is inferred to be one, since the corresponding subvolume must be occupied.
[0099] If planar mode is enabled and the volume is planar, then in box 512, the planar mode flag is encoded, for example isPlanar=1. Because the volume is planar, the encoder then also encodes the plane positioning flag, planePosition. The plane positioning flag indicates whether the occupied subvolume of the plane is in the upper half or the lower half of the volume. For example, planePosition=0 can correspond to the lower half (i.e., below the z-axis positioning) and planePosition=1 can correspond to the upper half. The plane positioning flag is then encoded at box 514. The occupancy bit is then encoded at box 516 based on the knowledge of the planarity of the volume and the positioning of the occupied subvolume. That is, up to four bits are encoded, because four can be inferred to be zero, and the fourth bit can be inferred to be one if the first three encoded bits are zero.
[0100] Point cloud acquired by LiDAR
[0101] Typically, the point cloud acquired by LiDAR is acquired by a group of rotating lasers. Figure 6 An exemplary LiDAR device is shown.
[0102] like Figure 6 As seen in FIG, a LiDAR device 601 comprises a vertically arranged laser array 604 mounted on a rotating head such that each laser rotates about a head axis 602. Each laser emits a laser beam 606.
[0103] Now refer to Figure 7 , which illustrates a single laser 704 rotated about a head axis 702 and having an angle θ relative to a plane 708. Plane 708 is perpendicular to the head axis 702. Naturally, due to noise and measurement accuracy, the points acquired by the laser will have an acquisition angle that will be very close to θ.
[0104] Figure 8 The points of the point cloud acquired by LiDAR are illustrated in the figure, where the vertical axis represents tan(θ) or z / r, and the horizontal axis represents r. Figure 9As shown in , r is the horizontal distance of the point from the LiDAR head (or generally, the beam assembly), and the tangent of the vertical angle, tan(θ), is defined as the ratio z / r, where z is the vertical height of point 905 relative to the LiDAR head.
[0105] The somewhat fixed laser angle tan(θ) can be clearly observed in the figure. A positive angle means that the laser is pointing above the horizontal plane (i.e., toward the sky), while a negative angle means that the laser is pointing below the horizontal plane (i.e., toward the ground). Note that the LiDAR lasers are intentionally oriented at different angles, for example, so that different lasers pick up different parts of the same tall object (such as a building, pillar, tree, etc.).
[0106] If you can Figure 8 As seen in , the points of a point cloud can be represented in a "quasi" 2D space. For example, it is theoretically possible to represent it in a finite set of 2D spaces (x, y) and vertical angles θ corresponding to the laser beams. Or equivalently in a 2D polar space and a finite set of vertical angles θ, where is the azimuth. In other words, we can use spherical coordinates to represent these points, where θ can take only a finite number of values. This is a consequence of occlusion, which can cause each There is only at most one point. This quasi-2D space is theoretical, but in practice, measurement noise / precision and time integration do not result in a strictly finite set of possible θ, which is a consequence of the mechanical setup of the laser. Instead, the values of θ are observed to be scattered over a finite number of values θ 激光 and have to deal with the problem of "noise" near these values.
[0107] The aforementioned quasi-2D structure depends primarily on the positioning / orientation of one or more LiDARs (or, in general, beam assemblies) and the intrinsic characteristics of the (multiple) LiDARs. As will be described in more detail below, it may therefore be advantageous to include syntax elements (e.g., parameters, flags) into the bitstream that describes the characteristics of the (multiple) LiDARs (or, in general, beam assemblies / multiple beam assemblies). These syntax elements may indicate at least one of the following: a reference position of the beam assembly, an origin position of a particular beam, or a beam angle of a particular beam. Including these syntax elements into the bitstream may be done at the frame or sequence level. In any case, the data should be presented as close to the compressed data bitstream as possible to ensure decodability of the bitstream and minimize the risk of losing data required for decodability.
[0108] Noting the above, some embodiments of the present application contemplate using the vertical laser angle θ obtained from LiDAR characteristics (or characteristics of related beam components) in an efficient representation of the point cloud. laserKnowledge of allows for improved compression.
[0109] Corrected elevation angle
[0110] Make (x Lidar ,y Lidar ,z Lidar ) is the position of the LiDAR head (or generally, the beam assembly) oriented vertically along the z-axis in the three-dimensional space XYZ (volume space) to which the point of the point cloud belongs. The tangent of the vertical angle θ of the point (x, y, z) is the height z Lidar The ratio of the distance r of the point relative to the head. This is shown, for example, in Equation 1.
[0111]
[0112] If you can Figure 11 As seen in the figure, it shows that Figure 8 Regarding the detailed view, the angle tan(θ) is somewhat constant for points probed by the same beam, but not strictly constant. In fact, for each beam, there is a corresponding envelope in the (r, tan(θ)) plot that encompasses the points acquired by that beam. The width of this envelope (in the tan(θ) direction) clearly depends on the distance r. The width of this envelope is due to noise and acquisition accuracy, and it widens as r decreases. Note that the envelopes for adjacent beams do not intersect each other.
[0113] The corrected angle θ presents a more stable value through a wide range of r corr This can be obtained by adding a correction term to the positioning of each laser relative to the head positioning.
[0114] Figure 10 Schematically illustrates the position of the beam emitter 1004 relative to a reference position of the beam assembly for interpreting the correction angle θ to obtain the corrected angle θ corr Specifically, the positioning of the light beam emitter 1004 is determined by positioning the coordinates (r L ,z L ) defined by the shift 1012 correction so that the beam 1006 is corrected from the vertical position z Lidar +z L The distance from the beam emitter 1004 is calibrated to become rr L , where L is the beam emitter index. Thus, the corrected position of the beam emitter 1004 can be referred to as the origin position or beam origin position for the beam 1006. The corrected angle θ corr depends on the beam emitter index L and is given by Equation 2 below.
[0115]
[0116] For points that are not too close to the beam assembly, ie for not too small values of the distance r, the angle can be approximated as shown in Equation 3.
[0117]
[0118] Only vertical correction z is required L , and the radial correction r L can be neglected. Therefore, the beam origin positioning can be done, starting from the reference position of the beam assembly, based on the (r t ,z L ) or just z L The relative displacement of expression is determined.
[0119] Figure 12 shows the vertical correction z for angle θ L Panel (a) corresponds to Figure 11 Panel (b) in , and panel (b) corresponds to Figure 11 The upper envelope in panel (a) and the lower envelope in panel (b) are associated with the uncorrected (i.e., initial) angle θ. The lower envelope in panel (a) and the upper envelope in panel (b) are associated with the corrected angle θ. corr As can be clearly seen, the corrected angle exhibits an average constant characteristic that is substantially independent of the distance r. The angle θ of the corresponding light beam or light beam emitter L L is defined as this constant.
[0120] To implement correction of the angle θ at both the encoder and decoder sides, the following values can be determined by or provided to the encoder and encoded into the bitstream so that the decoding process can use the same beam component information as the encoding process:
[0121] 1. Reference position of beam assembly, such as LiDAR head positioning (x Lidar ,y Lidar ,z Lidar )
[0122] 2. Relative positioning of each beam emitter (r L ,z L )
[0123] 3. Constant angle θ for each beam emitter L
[0124] Examples of syntax elements that describe characteristics of a beam component or components that have been used to obtain a point cloud to be encoded and decoded are described in more detail below.
[0125] As an example, a reference position of the beam assembly may be provided by a user, and the relative positioning and corrected angles of the beam emitters of the beam assembly may be found algorithmically. In one example, this may be performed as follows:
[0126] 1. First, by analyzing the histogram of the uncorrected angle θ, points belonging to the same laser beam L are extracted.
[0127] 2. Then, the relative positioning of the laser beam L (r L z L ) by making the corrected angle θ corr,L The standard deviation at the extracted points is minimized. This can be performed, for example, by a classical minimization algorithm. L In the case of , this is the minimization of the interval of candidate vertical relative positioning.
[0128] 3. Finally, the constant angle θ of the laser L L is the corrected angle θ corr,L The mean value at the extracted points.
[0129] As will be appreciated, if a node corresponds to a volume that can be intersected by more than one laser beam, then it becomes unclear which laser beam was used to acquire the points within that node. This introduces the concept of eligibility of nodes for angle encoding.
[0130] In one example, the angular eligibility of a volume (or its associated nodes) is determined as follows:
[0131] 1. Calculate the distance r of the center of the node from the reference position of the beam assembly.
[0132] 2. Calculate Δθ = E / r, where E is the length of the side of the cube associated with the node (or the vertical size of the volume of any shape).
[0133] 3. If KΔθ≤Δθ min =min|tan(θ Li )-tan(θ Li+1 )|, then the node qualifies, where the minimum value (min) is taken for all adjacent beam pairs. This ensures that the angular size of the node is less than the angular difference between the two beams that are angularly closest to each other. The factor K is used to provide a safety margin. In at least some embodiments, the value of K is 2.
[0134] Figure 13Examples of angularly qualified and non-angularly qualified volumes are shown. That is, the size of volume 1325 and its distance from beam assembly 1301 are such that it is sampled by multiple beams 1306 from multiple beam emitters 1304. On the other hand, the size of volume 1320 and its distance from the beam assembly are such that it is sampled by at most a single sample 1306.
[0135] In general, determining the angular qualification of a volume (or its associated node) may be performed by first determining a measure of the angular size of the volume as seen from a reference position of the beam assembly. The reference position may be the position of the head, as noted above. The measure of angular size may be related to the angle of the side of the volume as seen from the reference position, and may be determined, for example, based on the length of the side of the volume and the distance of the volume (of the reference position) to the reference position of the beam assembly. Thus, the measure of angular size may be, for example, the angular size Δθ defined above. The measure of angular size is then compared to a measure of the difference angle between adjacent beams of the beam assembly (such as the difference angle Δθ defined above). mm ). That is, the difference angle may be the difference angle of the closest adjacent beam of the beam assembly. Finally, a determination is made as to whether the volume is angle-qualified based on the result of the comparison. For example, the determination of angle qualification may be based on whether the angle magnitude is less than half the difference angle (or any other suitable fraction of the difference angle to provide an appropriate safety margin).
[0136] Once the angle qualification has been determined, the beam L to which the angle-qualified volume belongs can be determined, for example, by:
[0137] 1. Determine the position (x, y, z) relative to the beam assembly based on the position (x, y, z) of the reference position of the volume (e.g., the center of the volume) Lidar ,y Lidar ,z Lidar ) of z and r
[0138] 2. Calculate the uncorrected angle tan(θ) = z / r
[0139]
[0140] 3. By finding the value for |tan(θ)-tan(θ L )|The smallest beam index L determines which beam L the volume belongs to
[0141] Once the beam L has been determined, the corrected angle can be calculated using the formula in Equation 4:
[0142]
[0143] Or it can be calculated by using the formula in Equation 5:
[0144]
[0145] The second equation can be useful in practice because it avoids computing the reciprocal of another square root.
[0146] In general, the following method may then be followed for determining the corrected angle θ for the volume associated with the node: corr . Initially, for a reference position within the volume, a first angle (e.g., an elevation angle) relative to a reference position of the beam assembly is determined. For example, the reference position within the volume may be the center of the volume. For example, the reference position of the beam assembly may be a center position of the beam assembly. Based on the first elevation angle, a specific beam (or corresponding beam emitter) L that is assumed to have acquired (or has actually acquired) a point within the volume is determined. Next, an origin position (or beam origin position) for the specific beam is determined or acquired. This may be done by any suitable method as described above. With the origin position of the specific beam, a corrected elevation angle for a subvolume or group of subvolumes (e.g., a plane within the volume) may be determined relative to the origin position for the specific beam.
[0147] Angle encoding mode
[0148] Angle encoding mode has been introduced to benefit from the characteristics of LiDAR acquired points and obtain compression gains. It can be used to obtain the angle of the node by using tan(θ) for the angle-qualified nodes. corr,L ) to enhance or replace the predictive information of planeZPosition discussed above.
[0149] Specifically, the angle coding mode uses angle information to select context for improved compression. Figure 14 An angle encoding method is shown.
[0150] like Figure 14 , eligible node 1420 is divided into top horizontal plane 1430 and bottom horizontal plane 1440, which respectively include the volumes of the top four child nodes and the bottom four child nodes. In the middle of each of top horizontal plane 1430 and bottom horizontal plane 1440 are virtual planes 1432 and 1442. The top and bottom virtual planes do not occupy the complete volume of the child nodes, but instead are simply two-dimensional surfaces located in the middle of the child nodes.
[0151] Angle θ 顶部,L and θ 底部,L Angle θ is defined as the corrected angle of the light beam 1406 emitted by the laser 1404 to the center of the top and bottom virtual planes, respectively, with respect to the horizontal plane 1408.L is the corrected angle of the laser L for the point that is assumed to have acquired (or has actually acquired) the eligible node. The corrected angle is understood to be relative to the possible pass z through the beam generator. L and or r L The angle of the horizontal plane 1408 of the position corrected from the reference position of the beam assembly. In some embodiments, uncorrected angles can be used, however this can lead to the worst compression results. The uncorrected angles are understood to be angles relative to the horizontal plane 1408 passing through the reference position of the beam assembly. The context can then be determined based on these angles, as described below.
[0152] The context is determined based on the following criteria:
[0153] 1.Δ 顶部 =tan(θ L )-tan(θ top,L ) and Δ 底部 =tan(θ L )-tan(θ 底部,L ) have the same sign?
[0154] 2.|Δ 顶部 | and |Δ 底部 Which of | is greater?
[0155] 3.D=||Δ 顶部 |-|Δ 底部 What is the range of values for || / r? Where r is the distance between the laser and the eligible node in the horizontal plane. According to at least one embodiment, four different ranges can be used to select a context, for example, a value less than 0.5, a value between 0.5 and 1, a value between 1 and 1.5, or a value greater than 1.5.
[0156] From the above, we know that condition 1 allows two possibilities, condition 2 allows two possibilities, and condition 3 allows four possibilities. Therefore, the corner context can take one of 2×2×4=16 possible values.
[0157] The angular context determined as described above may be used independently or in combination with the plane context to select the context for the entropy encoder (or decoder).
[0158] Prediction Point Tree
[0159] exist Figure 15A prediction point tree is illustrated in FIG. Each node of the tree is represented by a circle, such as nodes 1510, 1512, and 1514, and is associated with a point in the point cloud. Each arrow 1520 corresponds to a predictive branch of the tree. The tip of the arrow indicates the node's parent node. Node 1510 is the root node of the tree because it has no parent nodes. Node 1512 is an internal node of the tree because it has a parent and at least one child. Node 1514 is a leaf node of the tree because it has no children.
[0160] The points associated with the nodes of the prediction point tree belong to the portion of the point cloud that is contained in the volume 1530. The structure of the prediction point tree is determined by the encoding process in order to generally obtain an optimal structure in terms of maximum compression of the geometry of the portion of the point cloud.
[0161] The coordinates (x, y, z) of a point associated with a node of a prediction point tree are encoded and decoded using the prediction point tree encoding and decoding structure by first determining the predicted coordinates (x, y, z) obtained from at least one point associated with an ancestor (parent, grandparent, etc.) or sibling node of the node. p ,y p ,z p ), then subtract the predicted coordinates from the coordinates to obtain the residual coordinates, and finally encode and decode the residual coordinates. The residual coordinates can be encoded and decoded using an entropy codec.
[0162] For example, a linear combination of the coordinates of the points associated with the ancestors and / or sibling nodes is used to obtain the predicted coordinates (x p ,y p ,z p ). The coefficients of the linear combination can be selected from a set of possible linear combinations, and the selection index can be indicated. For example, if p0 is the coordinate of the point associated with the parent node, p1 is the coordinate of the point associated with the grandparent node and p2 is the coordinate of the point associated with the great-grandparent node, then the possible linear combinations to obtain the predicted coordinates can be: 0*p0+0*p1+0*p2 (no prediction); 1*p0+0*p1+0*p2 (delta prediction); 2*p0-1*p1+0*p2 (linear prediction); or 2*p0+1*p1-1*p2 (parallelogram predictor).
[0163] Points associated with the root node (referred to herein as root points) may not be encoded using any predicted coordinates (or equivalently, may be encoded using only no prediction mode) and their coordinates are encoded in direct relation to the volume 1530 .
[0164] Golomb Rice coding, exp-Golomb coding or another variable length coding method can be used as the entropy codec for encoding and decoding the residual coordinates. Alternatively, context arithmetic coding can also be used. The parameters of the entropy codec can be selected depending on the exponent of the linear combination or the distance between ancestors (e.g., the average distance between parents and grandfather and between grandfather and great-grandfather).
[0165] The construction of the prediction point tree by the encoder for a point set can be performed as follows. In one embodiment, the encoder first selects a point from the point set to associate with the root node of the prediction point tree. This single root node is initially considered a leaf node because it has no child nodes. The selected point is removed from the point set. The encoder then recursively selects points from the point set, associates the selected points with nodes of the prediction point tree being constructed, and removes the selected points from the point set. The recursive process stops when the point set becomes empty.
[0166] In a variant, the encoder first identifies clusters of points and constructs a prediction point tree for each cluster of points by treating the point closest to the center of the cluster as a root point (e.g., the point associated with the root node) and associating the other points of the cluster as its children. The set of root points is then considered the new set of points to be clustered, and the process is recursively applied until the set of root points contains only one point. This variant is a bottom-up process that builds the tree from the leaf nodes up to the root node.
[0167] The predictive structure of the prediction point tree is completely determined by the prediction selection index associated with each node and the number of child nodes for each node. The point coordinates can then be obtained by the decoder from the predictive structure and the residual coordinates of each point. Therefore, the bitstream representing the prediction point tree consists of the number of child nodes, the prediction selection index, and the residual coordinates for each node.
[0168] The tree scan order may be performed in accordance with a predetermined encoding order. For example, the prediction point tree scan order may be performed in accordance with a depth-first traversal of the nodes. In another example, the prediction point tree scan order may be performed in accordance with a breadth-first traversal of the nodes.
[0169] In a variant, the number N of child nodes for a node is less than or equal to a maximum limit N_child_node (N child nodes). Knowing the maximum limit, the number N can be encoded in the bitstream for each node using, for example, Golomb Rice coding. The maximum limit can also be encoded and decoded in the bitstream.
[0170] In another variant, the number of points associated with a node's children is fixed or algorithmically derived from information available to the decoder. In such a case, there is no need to indicate the number of children for a node.
[0171] Azimuth
[0172] Azimuth and the elevation angle θ as Figure 16 . Specifically, if the principal axis of the rotating LiDAR head is the vertical axis 1610, then the elevation angle θ can be defined as zero for a point "P" at a point perpendicular to "O" shown as point 1620 (i.e., θ is the angle between the vertical axis and the line [OP]), or alternatively, θ can be defined as zero for a point that belongs to a horizontal plane passing through "O" (i.e., θ is the angle between the horizontal plane passing through "O" and the line passing through [OP]). In the latter case, the angle is typically referred to as the altitude angle.
[0173] Typically, the rotating head of a LiDAR probe scans the lowest laser beam one by one, for example, from the highest laser beam, at a somewhat constant rate while the head continues to rotate. Figure 17 .
[0174] exist Figure 17 In the embodiment of FIG. 1 , the LiDAR head 1710 rotates along an axis 1712 . A plurality of lasers 1714 can sense a plurality of points 1720 .
[0175] Because the head is moving, the scanning order is Follow the angle plane Figure 18 Due to the continuous and smooth rotation of the head, and the constant rate at which points are acquired, the azimuthal distances between the acquired points are constant.
[0176] Therefore, if Figure 18 The horizontal distance between two points detected by the same laser as shown in 1810 is constant, which is determined by some unavoidable noise and quantization acquisition. In addition, the azimuthal distance between two points probed by two adjacent lasers is is also constant (as shown by distance 1820. Although this is a horizontal distance, in this disclosure it is referred to as the vertical azimuth distance because the distance is determined based on two vertically displaced lasers.
[0177] However, LiDAR does not capture every point. Specifically, lasers often miss points because there is no object to reflect the laser. In fact, the azimuth distance between two points is the basic displacement or multiples of, such as Figure 19These shifts are called orientation priors.
[0178] like Figure 19 As seen in the figure, the distance between two points 1910 and 1912 is equal to
[0179] Using the above, one question is how to shift the base by using or The azimuth distance between points is a multiple of 1 to obtain better compression of the geometric structure of the point cloud acquired by LiDAR.
[0180] Improved compression using orientation priors
[0181] According to one embodiment of the present disclosure, the context is selected by using an entropy coder that encodes and decodes information representing the occupancy of the current node in the tree representing the geometry of the point cloud, and the azimuth prior can be used to improve the compression of this information. Such an entropy codec can be, for example, a CABAC codec.
[0182] Specifically, now refer to Figure 20 .exist Figure 20 In an embodiment, at the current node 2010, the process proceeds to block 2012 where the decoder determines the closest already decoded node with respect to bearing distance.
[0183] The process then proceeds to block 2020 where a determination is made whether at least one closest node exists. If not, the process proceeds to block 2022 where information is decoded or encoded based on information indicating current node occupancy without position prediction.
[0184] If there is at least one closest node, then the process proceeds from block 2020 to block 2030. At block 2030, the azimuth prediction angle for each closest node is calculated using the base shift or input to determine.
[0185] The process then proceeds to block 2032 where the average azimuth prediction angle is found. The average azimuth prediction angle is found as described below.
[0186] The process then proceeds to block 2034 where an angular orientation context is selected. This context is selected as described below.
[0187] The process then proceeds to block 2036 where information representing the current node occupancy is decoded using the context information.
[0188] The context at block 2034 may be selected in one example based on the position of the current node in the azimuth plane. For example, this may be the azimuth angle associated with the set of child nodes. The context may also be selected based on the azimuth prediction angle determined from the azimuth angle of the "closest" already decoded node.
[0189] Basically, the position prediction and location of the current node are compared to anticipate which subset of nodes is likely to be occupied, and the appropriate context is selected accordingly.
[0190] The determination of the average azimuth prediction angle is basically obtained from the azimuth angles associated with the closest already coded nodes by shifting these angles by the basis shift and / or The shifted angles are then averaged to obtain a unique mean azimuth prediction angle.
[0191] The details of the above contents are described below.
[0192] Azimuth prediction
[0193] In one embodiment, the predicted azimuth angle can be constructed based on the angle associated with the node that has been encoded. The center of the volume (such as a cuboid) associated with it is located at coordinates (x c ,y c ,z c The azimuth angle can be determined by an inverse trigonometric function according to the following formula 6, for example.
[0194]
[0195] In alternative embodiments, the angle may be determined by other trigonometric formulas such as Equations 7 and 8 below.
[0196]
[0197]
[0198] In the above equations 7 and 8, r c is the azimuth radius such that r c 2 =x c 2 +y c 2In practice, these inverse trigonometric functions can be approximated to obtain fast implementations. For example, these functions can be approximated using low-order polynomials by recursive methods such as the Coordinate Rotation Digital Computer (CORDIC) algorithm. In some cases, these approximations can be implemented in fixed point to obtain a faster and hardware-friendly implementation.
[0199] In some cases, for further simplicity, the use of trigonometric functions can be avoided in some implementations by using coordinate ratios rather than azimuths. For example, using the notation of Equation 9 below, Ψ space can be used instead of Priors in space.
[0200]
[0201] However, an adjustment to the basis shift may be needed and can generally be found using a first order approximation such as shown in Equation 10 below.
[0202]
[0203] Using Equation 10 above, the adjusted shift according to Equation 11 is obtained.
[0204]
[0205] In the above equation 11, n is an integer indicating the multiple of the base shift to be applied. space, but this is provided for illustration purposes only, and the embodiments can be generalized to Ψ space by the first-order approximation above, where Ψ is equal to x c / y c 、y c / r c and x c / r c .
[0206] refer to Figure 21 And based on the above, with azimuth The current node 2120 can be considered as a node with an azimuth 2112 of the decoded node 2120. These two nodes may have associated volumes with different shapes and sizes. cur is the beam index for getting the point in the current volume, and L al is to obtain the beam index of a point in the encoded volume, then the azimuth of the encoded volume is shifted as follows to obtain the predicted azimuth associated with the encoded node.
[0207] 1. If L cur and Lal is different, then The basic vertical displacement between the two lasers is shifted To obtain
[0208] 2. Can be displaced by base level n times, n is a positive or negative integer, so that the resulting angle Belong to the interval
[0209] The obtained angle is the predicted azimuth 2122 for the current node associated with the already coded node.
[0210] Additionally, in some embodiments, it may be desirable to combine several predicted angles into an average prediction. In this regard, according to another embodiment, all encoded nodes can potentially contribute to a predicted azimuth angle for the current node. One or more already encoded nodes can be used to predict the angle of the current node. The associated predicted azimuth angles are averaged to obtain a unique average azimuth prediction angle.
[0211] However, not all predicted bearings have the same "quality". For example, quality can refer to whether these nodes have the same ability to accurately predict the bearings of occupied child nodes or points belonging to the current node. Already decoded nodes that are far away from the current node in bearing are required to have a large n The shift, therefore amplification inaccuracy.
[0212] Furthermore, already coded nodes with large sizes have high uncertainty about the azimuth angles associated with the points they contain. For these reasons, the already coded nodes used for the predicted azimuth angle of the current node are selected among:
[0213] 1. An already encoded node that is smaller in size than the current node;
[0214] 2. Be sufficiently close to the current node in terms of orientation, for example, The absolute value of is lower than a given threshold;
[0215] 3. Optionally, the node that has been decoded is probed by the same laser as the current node. In this case, the vertical basis shift between lasers is Not used.
[0216] Depending on the order in which the nodes in the tree are scanned, the order can be depth-first or breadth-first, and the tree is pruned using IDCM nodes. Already coded nodes of various sizes may be available. The ability to accurately predict the azimuth angle can be determined as follows. If s is the size of the already coded node, then the azimuth angle Vulnerable to x al / y al The order error "s" on both makes the ratio x al / y al And the angle at the first order in s is shown by the following Equation 12.
[0217]
[0218] Equation 12 is susceptible to order error e al =s / min(|x al |,|y al |). By using this error estimator e al , which can quantify and predict the azimuth The quality associated with it. A corner with a higher quality, such as one with a lower order e al Those with higher weights can have higher weights in the weighted sum, resulting in the average predicted angle according to the following formula 13
[0219]
[0220] Without performing error estimation, it can be assumed that all errors e al have the same magnitude, and the average prediction angle is obtained by an unweighted sum.
[0221] Additionally, in some embodiments, a node may not be eligible for position encoding. Figure 22 .exist Figure 22 In the embodiment of FIG. 2 , a single laser 2210 is rotated about axis 2212. As described above, the angle between readings is
[0222] Ineligible nodes 2220 are shown along with eligible nodes 2230 .
[0223] Eligible node 2230 is eligible because it is intersected by at most one laser. This is the angle qualification described above.
[0224] Furthermore, the eligible node 2230 is eligible because it is small enough to ensure that it will not be probed twice by at most one laser. This is equivalent to saying that the azimuthal cross section is smaller than the base shift like Figure 22 Basically, when the inequality When holds, the orientation qualification is satisfied, where E is the length of the longest side of the cuboid associated with the node.
[0225] Context determination for entropy codecs based on azimuth prediction; planar mode embodiment
[0226] Vertical plane mode
[0227] With the planar mode codec described above, it has been observed that directly encoding and decoding the plane information without compression results in a very inefficient planar mode. Therefore, it is necessary to compress the syntax associated with the planar mode. Specifically, a bit called planePosition is compressed by selecting a context for the binary entropy codec based on the prediction method.
[0228] For z-plane mode, if the node is planar, such that the flag "isPlanar" is true, then the plane position (bottom or top) is indicated by an extra bit called planeZPosition. This bit is also encoded using the binary arithmetic codec (its context depends on the predictive information). For example, now refer to Figure 23 .exist Figure 23 In the embodiment of FIG, the predictive information consists of the following: the occupancy of the vertical neighbors of the parent node adjacent to the current node, and the distance d (shown as reference numeral 2310) to the nearest already decoded node 2312 at the same z 2320 and the same depth. The value d is discretized into three values, namely "near", "not too far", or "far".
[0229] The predictive information consists of the planar location (bottom or top, if any) of the closest already-encoded node at the same z and same depth as the current node.
[0230] The predictive information also consists of the vertical coordinate z of the current node relative to its parent node.
[0231] In the case where the closest already-decoded node at the same z and depth as the current node is a plane, this results in 2×3×2×2=24 possible predictive combinations. Otherwise, when the closest already-decoded node at the same z and depth is not a plane, an additional special context is used instead. Thus, 24+1=25 contexts are used by the binary arithmetic codec to encode and decode plane positioning.
[0232] The orientation prior may provide some useful information to better compress the plane positioning bits "planeXPosition" and "planeYPosition" for the "vertical" plane mode. planeYPosition The predictive information of can be enhanced or replaced by constructing an average orientation predictor using knowledge of the orientation angles of already coded nodes, and then deriving the context by compressing the two bits using a binary entropy codec such as CABAC.
[0233] Selection of horizontal x and / or y plane modes
[0234] Depending on the positioning of the projection of the current node in the azimuth xy plane, the azimuth prediction may predict either the x-plane positioning planeXPosition or the y-plane positioning planeYPosition or both, where the prediction may in some cases be better for one plane than the other. Figure 24 As shown in the figure, for x-plane positioning, due to the small azimuth angle, the predicted angle 2410 is not able to distinguish well between the two plane positions (left and right) of points 2420 and 2422 within the current node. In other words, the node is close to the x-axis and therefore the angle between points 2420 and 2422 has a small difference.
[0235] On the other hand, for nodes with an azimuth angle close to 90°, in other words, nodes close to the y-axis, discrimination is greatest. Figure 25 , the angle between points 2520 and 2522 is the largest because the node is close to the y-axis, allowing the prediction of the angle 2510 identifies between these points.
[0236] Therefore, the plane bits planeXPosition and planeYPosition are predicted depending on or independent of the current node's position in the azimuth plane. For example, the horizontal x and / or y plane modes can be selected as follows. If the current node's azimuth angle is less than 50° from the x-axis, then the y-plane position planeYPosition is encoded and decoded using azimuth prediction. Otherwise, it is not.
[0237] In other cases, if the current node's azimuth angle is less than 50° from the y-axis, then the x-plane positioning planeXPosition is encoded and decoded using azimuth prediction. Otherwise, it is not.
[0238] Other values less than 50° may be used in some cases. In this example, current nodes with azimuths between 40° and 50° may have both x-plane positioning and y-plane positioning using azimuth prediction codec. These nodes will be close to the xy diagonal.
[0239] Context determination
[0240] In the embodiments described below, the determination is performed in the context of x-plane positioning. The case for y-plane positioning will be similar to the case described below, with the x and y axes swapped and symmetry exploited.
[0241] Now refer to Figure 26 . According to the context determination, if the current node is eligible for orientation, the first angle and the second angle are calculated, namely the left orientation angle and the right orientation angle. These two angles correspond to the angle 2610 and 2612, corner 2610 and 2612 is associated with points 2620 and 2622 located at the center of the vertical plane.
[0242] Next, using these two angles and the predicted angle determined as described above 2630 determines the plane positioning context. By calculating the context index according to the following, the azimuth context index is calculated based on the left azimuth angle and right azimuth The first bit of the context index depends on and Do the differences have the same sign?
[0243] The second bit of the context index depends on and Which of has the highest magnitude.
[0244] The context index also depends on the difference quantization of . This quantization can be performed relative to an inverse radius r associated with the current node center. In other words, the value D*r is quantized.
[0245] In pseudo code, the determination of the orientation context index may be obtained according to Table 1 below.
[0246]
[0247] Table 1: Pseudocode for position context determination
[0248] In this implementation, the quantity D*r is quantized over four values {0, 1, 2, 3} corresponding to values of D*r less than 0.5, between 0.5 and 1, between 1 and 1.5, or greater than 1.5. Thus, the orientation context determination can take 2×2×4=16 values.
[0249] Finally, the orientation context may replace or enhance the predictive information used in planar mode context determination to create a new and larger set of planar / orientation contexts.
[0250] Now refer to Figure 27 , which shows a process diagram for the above-described method for predicting the positioning of a plane using orientation priors in a plane mode.
[0251] Specifically, for the current node 2710, a check is made at block 2712 to determine if the node is position eligible. If not, the process ends.
[0252] Otherwise, the process proceeds to block 2714 where a determination is made regarding the orientation of the azimuth plane.
[0253] After the determination of the bearing plane direction, a check is made at block 2720 to determine if the node is planar. If not, the process ends. Otherwise, the process proceeds from block 2720 to block 2722 where the closest decoded node relative to the bearing distance is determined.
[0254] From block 2722, the process proceeds to block 2730 where a check is made to determine if at least one current closest node has been previously decoded. If not, the process proceeds to block 2732 where the planar position is decoded without orientation prediction.
[0255] From block 2730, if there is at least one closest node, the process proceeds to block 2740 where the average azimuth prediction angle Utilize basic shifting and was determined.
[0256] From block 2740, the process proceeds to block 2742, where the azimuthal plane angle and was determined.
[0257] The process then proceeds to block 2744 where an angular orientation context is selected as described above.
[0258] From block 2744, the process then proceeds to block 2746 where the plane location is decoded.
[0259] Azimuth Coding Mode in IDCM Node
[0260] The above embodiments can be applied to IDCM. For example, in the current node, IDCM can be subject to the activation conditions described above. Basically, these conditions are met when the node is isolated, which is a good priori for predicting the isolation of subsequent nodes that can benefit from IDCM.
[0261] To ensure angle consistency in IDCM, which is required for efficient angular coding, an additional condition may be added to the list of conditions for IDCM eligibility. Figure 13 And also refer to Figure 22 If the dual-angle qualification condition is not met, IDCM is not applied to the current node.
[0262] Applying the above to LiDAR and assuming that the LiDAR main axis is vertical and parallel to the z-axis, once the angular IDCM is activated for the current node, the following information can be known. The first known information is the closest laser index L to the volume associated with the current node. The second known information is the direction x and / or y to which the orientation prior is applied to compress the coordinates x and / or y of the point belonging to the IDCM node.
[0263] In the following examples, it is assumed that the x coordinate of a point is compressed. However, the situation for the y coordinate is similar. For each point, the bits of the point's relative x coordinate are iteratively encoded and decoded. The relative coordinate is relative to a reference point of the volume. For example, such a relative point can be the corner of a cuboid volume.
[0264] The iterative encoding process of the coordinate x is based on a recursive splitting of the interval to which the coordinate belongs. Now refer to Figure 28 .
[0265] exist Figure 28 In the embodiment of the present invention, for each IDCM node 2810, the process proceeds to block 2812, where the input and To determine the mean azimuth prediction angle Prediction Angle Used to encode and decode all bits of the coordinates x of all points belonging to the IDCM node.
[0266] The process then proceeds to block 2814 where the points are picked in the nodes. For each point, its relative coordinate x is decoded according to the remaining process. Those skilled in the art will recognize that the processes involved are very similar.
[0267] The process then proceeds to block 2816 where the x interval is initialized. This is shown, for example, in Figure 29 where the x interval is based on the initial x 左 and the initial x 右 The node is initialized, the initial x 左 and the initial x 右 have 2910 and The initial azimuth value of 2912.
[0268] The initial x interval in the azimuthal xy plane is obtained from the horizontal position (along the x-axis) and size of the current node to which the IDCM is applied. This initial interval covers exactly all possible values of the coordinate x for points belonging to the volume associated with the node. The location y of the interval can be taken as the value y of the y coordinate of the center of the IDCM node c In the variant, the coordinate y of the point P is decoded first before decoding the coordinate x, and the position y of the interval is taken as the decoded coordinate y of the point P .
[0269] Then, 2910 and The angle of 2912 is for two points x located at 1 / 4 and 3 / 4 of the interval 左 and x 右 is calculated.
[0270] Reference again Figure 28 From block 2816, the process proceeds to block 2820 where a check is made to determine if coordinate X is complete. If so, the process proceeds to block 2822 where the other coordinates (ie, coordinates y and z) are decoded.
[0271] Conversely, if coordinate x is not complete, then the process proceeds from block 2820 to block 2830, where the angle and was determined.
[0272] The process then proceeds to block 2832 where the corner context is updated from and Sure.
[0273] The process then proceeds to block 2840 where the highest order residual bits for the coordinate x of the point are encoded / decoded.The process then proceeds to block 2842 where the x interval is updated.
[0274] Therefore, as described above, the orientation context is based on the angle and The knowledge of is selected. Knowing the context, the entropy encoder (decoder) encodes (decodes) the highest order remaining bits for the coordinate x of the point. Figure 30As shown in , the x interval is then updated by using the encoded (decoded) bit. For example, if the bit indicates (e.g., the bit is equal to 1) that the coordinate x of the point belongs to the right part of the x interval, then the newly updated x interval is regarded as the right part, and its length has become half. This thus updates 3010 and 3012 Both.
[0275] Determine the angle and The context, then encoding (decoding) the bits of the coordinate x of the point, and then updating the x interval are then iteratively performed until there are no more bits to be encoded (decoded). The stopping criterion may be that the length of the x interval becomes minimum (e.g., one).
[0276] For faster implementation, the and The calculation can be done by using a first-order approximation based on the older angle and and / or prediction angle to execute.
[0277] When calculating the average prediction angle When using the azimuths of points belonging to already (decoded) IDCM nodes, it is advantageous since the coordinates of these points are exactly known compared to the centers of the volumes associated with the nodes belonging to the tree, which are only approximations of the point location, thus obtaining an orientation with low error e al (Equivalently, high-quality) predicted azimuth And then get a more reliable average prediction angle
[0278] Optionally, the average prediction angle Can be updated after calculating the new x interval. Azimuth relative to the center of the IDCM current node is initially determined, and it can be shown that, after having narrowed the x interval, the additional additional basis shift or The average prediction angle can be Move closer to the center of the new x interval.
[0279] Therefore, the above provides efficient angular coding for IDCM.
[0280] Simple azimuth encoding and decoding mode in the prediction point tree
[0281] In another embodiment, the above azimuth encoding can be used with the prediction point tree. In the embodiments described below, it is assumed that the LiDAR main axis is vertical, or in other words, parallel to the z-axis. However, the main axis can be a different axis and the methods and embodiments described below can be adapted to such other axes.
[0282] Now refer to Figure 31 , which is a block diagram of the decoding process for the simple azimuth codec mode in the prediction point tree. The encoding process is directly derived from this decoding process.
[0283] For the prediction point tree 3110, the process proceeds to 3112 where a check is made to determine if there are any remaining nodes. If not, the process ends.
[0284] If there are remaining nodes, the process proceeds to block 3114 where a prediction is made for the point associated with the node (x pred ,y pred ,z pred ).
[0285] The process then proceeds to block 3120. At block 3120, the average predicted angle Relative to the prediction (x pred ,y pred ,z pred ) is determined, which can be obtained by To calculate the azimuth of the encoded point from the previous encoded node Then it is shifted to obtain the interval in For the predictive point tree, the position of a node in space is assimilated to the location of its uniquely associated point. Therefore, the closest decoded node from the current node is understood to mean the closest decoded node to the unique point associated with the current node. Closest is understood to mean the smallest bearing distance.
[0286] The syntax for signaling the magnitude can be encoded in the bitstream, such as for the residual x res The syntax is decoded and the length of the initial x interval is derived from the decoded amplitude, shown at box 3122. For example, for x res The number of bits required for encoding and decoding can be encoded and decoded using a unary variable length codec and / or an entropy codec.
[0287] The initial x interval location y can be regarded as the prediction (x pred ,y pred ,z pred )'s y-coordinate value y predIn one embodiment, the coordinates of the point y=y pred +y res Before decoding the coordinate x, y is decoded first, and the location y of the initial x interval is taken as the decoded coordinate y of the point.
[0288] Furthermore, in block 3122, the residual x res More specifically, the residual x can be initialized, for example, by using an exp-Golomb type variable length codec. res The codec is performed where the prefix indicates the size of the suffix (= number of bits). The suffix itself indicates the value of the residual, which can be signed. When initializing the x interval, the prefix can be decoded and the length of the interval can be deduced from the decoded prefix. The center of the interval can be determined by the value x of the predictor coordinate x pred The suffix is decoded by an iterative process over the x interval.
[0289] From block 3122, the process proceeds to block 3130 where a determination is made as to x res A check is made to see if the point is complete. If so, the process proceeds to block 3132 to determine the coordinates of the point x = x pred +x res .
[0290] The process then proceeds to block 3134 where the decoder may decode the other coordinates y and z of the point. From block 3134, the process may proceed to block 3112 to select the next remaining node.
[0291] Conversely, from block 3130, if x res Not completed, the process proceeds to block 3140. At block 3140, the decoder may determine the angle and
[0292] The process then proceeds to block 3142 where the and The corner context is determined.
[0293] The process then proceeds to block 3144 where the highest order residual bits for the coordinate x of the point are decoded.
[0294] The process then proceeds to block 3146 where the x interval is updated. From block 3146, the process may then proceed back to block 3130 to determine x res Is it completed? The stopping criterion in block 3130 may be that the length of the x interval becomes minimum (eg, one).
[0295] In targeting Figure 31 In the example of the embodiment, if x=32 and x pred =43, then xres =32-43=-11 is encoded in the bitstream. The residual -11 belongs to the interval [-15,16], which has 32=2 5 values, and can be encoded or decoded using 5 bits. The encoder therefore encodes the prefix 5 using a unary code, each bit of which is encoded or decoded by the CABAC entropy encoder in this example. In addition, the encoder encodes a bit indicating which subinterval the residual belongs to (0 = left, 1 = right):
[0296] 0->The interval becomes [-15,0]
[0297] 0->The interval becomes [-15,-8]
[0298] 1->The interval becomes [-11,-8]
[0299] 0->The interval becomes [-11,-10]
[0300] 0->The interval becomes [-11,-11]
[0301] Stop because the interval has length 1
[0302] These 5 bits are coded by an entropy codec (e.g. CABAC) using the angular context determined during the iterative process. Position x 左 and x 右 Use the position of the predictor (i.e. x pred =43). Therefore, the initial x interval is 43+[-15,16]=[28,59], and since the left and right positioning are located at 1 / 4 and 3 / 4 of the interval, the x interval is 左 =35 and x 右 =51, and so on.
[0303] The second bit can be inferred because the residual value x can be assumed to be res does not belong to [-7,8], since otherwise the number of bits indicated by the prefix would be 4 or less. This inference of the second bit is systematic, regardless of the sign of the residual to be encoded or decoded.
[0304] Since the sign of the residual value is usually unpredictable, a flag is usually used to indicate whether the residual is zero. If not, the sign is encoded and decoded by bypassing the codec, and then the magnitude |x is decoded. res -1| for encoding and decoding. The encoding and decoding process for the residual then becomes:
[0305] ·Whether to indicate whether x res =0 flag f0 for encoding and decoding
[0306] If f0 is false, then
[0307] ○ Usually by using bypass codecs (e.g. push sign bits) to res The symbols are encoded and decoded;
[0308] o Use a unary code to encode the prefix (= number of bits), and each bit of the unary code is encoded and decoded by the CABAC entropy codec;
[0309] o Encode and decode the bit indicating which subinterval the residual belongs to (0 = left, 1 = right).
[0310] Using the above example, flag f0 is false because x res The sign is then indicated as negative (eg 0 = negative, 1 = positive) by a bypass bit (eg 0). The first bit indicating the first subinterval is then explicitly inferred by the sign bit.
[0311] Optionally, the average prediction angle Can be updated after calculating the new x interval. Relative to the prediction (x pred ,y pred ,z pred ) is initially determined, and it can be shown that, after having narrowed the x interval, the additional additional basis shift or The average prediction angle can be Move closer to the center of the new x interval.
[0312] grammar
[0313] The embodiments described herein require that the decoder know the and / or These shifts can be sent to the decoder, for example, by being included in the bitstream compressed point cloud data. In this regard, Appendix A shows various syntaxes that can be specified, with the added syntax for the above embodiment highlighted in bold and italics.
[0314] Device
[0315] Now refer to Figure 32, which shows a simplified block diagram of an example embodiment of an encoder 3200. The encoder 3200 includes a processor 3202, a memory 3204, and an encoding application 3206. The encoding application 3206 may include a computer program or application stored in the memory 3204 and containing instructions that, when executed, cause the processor 3202 to perform operations such as those described herein. For example, the encoding application 3206 may encode a bit stream and output an encoded bit stream according to the process described herein. It will be understood that the encoding application 3206 may be stored on a non-transient computer-readable medium such as a compact disc, a flash memory device, a random access memory, a hard drive, etc. When the instructions are executed, the processor 3202 performs the operations and functions specified in the instructions so as to operate as a dedicated processor that implements the process(es) described. In some examples, such a processor may be referred to as a "processor circuit" or "processor circuitry."
[0316] Now also refer to Figure 33 , which shows a simplified block diagram of an example embodiment of a decoder 3300. The decoder 3300 includes a processor 3302, a memory 3304, and a decoding application 3306. The decoding application 3306 may include a computer program or application stored in the memory 3304 and containing instructions that, when executed, cause the processor 3302 to perform operations such as those described herein. It will be understood that the decoding application 3306 may be stored on a computer-readable medium such as a compact disc, a flash memory device, a random access memory, a hard drive, etc. When the instructions are executed, the processor 3302 performs the operations and functions specified in the instructions so as to operate as a dedicated processor that implements the described process(es). In some examples, such a processor may be referred to as a "processor circuit" or "processor circuitry."
[0317] It will be appreciated that decoders and / or encoders according to the present application can be implemented in many computing devices, including but not limited to servers, appropriately programmed general-purpose computers, machine vision systems, and mobile devices. A decoder or encoder can be implemented by software containing instructions for configuring a processor or processors to perform the functions described herein. The software instructions can be stored on any suitable non-transient computer-readable memory including CD, RAM, ROM, flash memory, etc.
[0318] It will be understood that the decoder and / or encoder described herein and the modules, routines, processes, threads or other software components implementing the described methods / processes for configuring the encoder or decoder can be implemented using standard computer programming techniques and languages. The application is not limited to specific processors, computer languages, computer programming conventions, data structures, other such implementation details. Those skilled in the art will appreciate that the described process can be implemented as part of a computer executable code stored in a volatile or non-volatile memory, as part of an application specific integrated circuit chip (ASIC), etc.
[0319] The present application also provides a computer readable signal encoding data produced by application of an encoding process according to the present application.
[0320] result
[0321] In the above embodiment, by using the average prediction angle Selecting the context of plane positioning planeXPosition and planeYPosition in planar mode, the lossless compression of LiDAR acquired data has been found to have been improved by approximately 15%, i.e. the resulting bitstream size has been reduced by 15% compared to the anchor of the MPEG test model currently being developed in standard work on point cloud compression.
[0322] Certain adaptations and modifications to the described embodiments may be made.Accordingly, the embodiments discussed above are considered to be illustrative rather than restrictive.
[0323] Appendix A – Syntax
[0324]
[0325] Table 2: Syntax
[0326] The following are the associated semantics of Table 2.
[0327] angular_flag equal to 0 indicates that the header and laser information are not present in the syntax. Angular_flag equal to 1 indicates that the header and laser information are present in the syntax. When equal to 0, the encoding method for the node does not use angle information. See IDF 50916.
[0328] num_of_heads_flag equal to 0 indicates that number_of_of(Lidar's) heads is inferred to be one. If num_of_heads_flag is equal to 1, it indicates that num_of_heads_minus2 is present in the syntax and the number of Lidars / heads is equal to num_of_heads_minus2 + 2. When not present in the bitstream, number_of_Lidars / heads is inferred to be zero.
[0329] head_absolute_is_000_flag equal to 1 indicates that the head absolute positioning is inferred as x=y=z=0. When head_absolute_is_000_flag is equal to 0, it indicates that head_absolute_x, head_absolute_y and head_absolute_z are present in the bitstream to indicate absolute head positioning. Absolute is understood as in the xyz coordinate system in which the point cloud is represented.
[0330] head_absolute_x indicates the absolute position of the head (capture device) on the x-axis as a 32-bit signed integer with 3 bits of fractional precision, so that the x-absolute position of the head is head_absolute_x / 8.
[0331] head_absolute_y indicates the absolute position of the head (capture device) on the x-axis as a 32-bit signed integer with 3 bits of fractional precision, so that the x-absolute position of the head is head_absolute_y / 8.
[0332] head_absolute_z indicates the absolute position of the head (capture device) on the x-axis as a 32-bit signed integer with 3 bits of fractional precision, so that the x-absolute position of the head is head_absolute_z / 8.
[0333] head_parallel_to_axis_flag equal to 1 indicates that the head is oriented parallel to the axis. In this case, axis_index is present in the stream. head_parallel_to_axis_flag equal to 0 indicates that the head is not oriented parallel to the axis, and in this case, head_orientation_phi and head_orientation_theta are present in the stream instead of axis_index.
[0334] axis_index indicates which axis the head is parallel to. axis_index equal to 0 indicates that the head is oriented parallel to the x-axis, equal to 1 indicates that the head is oriented parallel to the y-axis, and equal to 2 indicates that the head is oriented parallel to the z-axis.
[0335] head_orientation_phi and head_orientation_theta indicate the orientation in spherical coordinates. head_orientation_phi is the azimuth in the xy plane, and
[0336] head_orientation_theta is the polar angle relative to the z-axis. Both are signed 32-bit integers with 18 bits of fractional precision.
[0337] num_of_lasers specifies the number of lasers (or beams) for a given head. It is a 10-bit integer in the range 1 to 1023.
[0338] elementary_shift_H indicates the azimuthal elementary shift between two points probed consecutively by the same laser of the head
[0339] angle_is_tangent_flag equal to 1 indicates that the information provided by laser_angle is the tangent of the angle.
[0340] angle_is_tangent_flag equal to 0 indicates that the information provided by laser_angle is an angle.
[0341] elementary_shift_V[L] indicates the azimuthal elementary shift between two points successively probed by the first laser L and the next laser L+1
[0342] laser_angle is the (tangent of) the angle associated with a given laser, this is the altitude angle relative to the plane perpendicular to the head direction and in which the laser (or beam emitter) is positioned. It is a signed 32-bit integer with 18 bits of fractional precision.
[0343] laser_relative_position_to_head_flag equal to 0 indicates that the laser / beam emitter is positioned identically to the head. laser_relative_position_to_head_flag equal to 1 indicates that the laser / beam emitter is not positioned identically to the head; in this case,
[0344] laser_relative_position_dL and relative_position_rL_flag are present in the bitstream.
[0345] laser_relative_position_dL indicates the position of the laser (beam emitter) relative to the absolute position of the head along the direction of the head's orientation. It is a 16-bit signed integer with 3 bits of fractional precision.
[0346] relative_position_rL equal to 0 indicates that laser_relative_rL is not present in the bitstream and is inferred to be 0. relative_position_rL equal to 1 indicates that laser_relative_rL is present in the bitstream 0.
[0347] laser_relative_rL indicates the distance of the laser (beam emitter) from a line parallel to the direction of the orientation of the head by head absolute positioning. It is a 16-bit signed integer with 3 bits of fractional precision.
Claims
1. A method for encoding a point cloud to generate a bitstream of compressed point cloud data representing a three-dimensional position of an object, the point cloud being located in a volumetric space and represented by a tree, the method comprising: determining at least one closest codec node relative to a position distance to a current node of the tree; determining an azimuth prediction angle for each closest codec node of the at least one closest codec node; finding an average azimuth prediction angle based on the determined azimuth prediction angle for each closest codec node of the at least one closest codec node; selecting an angular orientation context based on the average orientation prediction angle; as well as Information representing the current node is encoded based on the position context to generate the bit stream of compressed point cloud data.
2. The method of claim 1 , wherein the average azimuth prediction angle is determined based on: in is the average azimuth prediction angle, is the corresponding azimuth prediction angle of each of the at least one closest codec node, and e al is the error in each of the at least one closest codec's node.
3. The method according to claim 1 or 2, wherein the node for determining at least one closest codec does not include a node larger than the current node and / or does not include a node at a distance greater than a threshold distance from the current node.
4. The method of claim 1 or 2, wherein the encoding is in planar mode, and wherein the method further comprises determining a left orientation angle and a right orientation angle for the current node, wherein the selecting the angular orientation context further comprises at least one of: assigning a first bit based on whether the mean azimuth prediction angle minus the left azimuth angle has the same sign as the mean azimuth prediction angle minus the right azimuth angle; assigning a second bit based on which of the average azimuth prediction angle minus the left azimuth angle and the average azimuth prediction angle minus the right azimuth angle has a largest absolute magnitude; and A quantized context index is provided based on a magnitude difference between the average azimuth prediction angle minus the left azimuth angle and the average azimuth prediction angle minus the right azimuth angle multiplied by an inverse of a radius to the current node.
5. The method according to claim 4, wherein the method further comprises: An x-plane location and / or a y-plane location is selected for orientation prediction based on the position of the current node relative to the x-axis or the y-axis.
6. The method of any one of claims 1 or 2, wherein the encoding is in an inferred direct coding mode (IDCM), and wherein the method further comprises: Initialize the coordinate interval; Recursively split the interval by: determining a left azimuth angle and a right azimuth angle for the interval; said selecting said angular azimuth context being performed by further using said left azimuth angle and said right azimuth angle together with said average azimuth prediction angle; performing encoding of information representing coordinates of a point belonging to said current node; as well as The coordinate interval is updated after the encoding.
7. The method according to claim 6, wherein the determining of the left azimuth angle and the right azimuth angle is based on the 1 / 4 and 3 Two points at / 4.
8. The method of claim 6, wherein the determining the left and right azimuth angles uses a first order approximation from previous values of the left and right azimuth angles, and / or the average azimuth prediction angle.
9. The method according to claim 6, further comprising: The average azimuth prediction angle is updated after the coordinate interval is updated.
10. The method according to any one of claims 1 or 2, wherein the encoding uses a prediction point tree, and wherein the method further comprises: determining a prediction of a point associated with the current node before determining the average azimuth prediction angle; Initializing a coordinate interval for a coordinate according to the prediction and the magnitude of the residual for the point; For each bit in the residual: determining a left azimuth angle and a right azimuth angle for the interval; said selecting said angular azimuth context being performed by further using said left azimuth angle and said right azimuth angle together with said average azimuth prediction angle; performing said encoding of the highest-order residual bits for said coordinates; as well as The coordinate interval is updated after the encoding.
11. The method of claim 10, further comprising: The average azimuth prediction angle is updated after the coordinate interval is updated.
12. A method for decoding a bitstream of compressed point cloud data representing a three-dimensional position of an object to generate point cloud data, the point cloud being located in a volumetric space and represented by a tree, the method comprising: determining at least one closest codec node relative to a position distance to a current node of the tree; determining an azimuth prediction angle for each closest codec node of the at least one closest codec node; finding an average azimuth prediction angle based on the determined azimuth prediction angle for each closest codec node of the at least one closest codec node; selecting an angular orientation context based on the average orientation prediction angle; as well as Information representing the current node is decoded from the bitstream based on the orientation context to generate the point cloud data.
13. The method of claim 12, wherein the average azimuth prediction angle is determined based on: in is the average azimuth prediction angle, is the corresponding azimuth prediction angle of each of the at least one closest codec node, and e al is the error in each of the at least one closest codec's node.
14. The method according to claim 12 or 13, wherein the node for determining at least one closest codec does not include a node larger than the current node and / or does not include a node at a distance greater than a threshold distance from the current node.
15. The method of claim 12 or 13, wherein the decoding is in planar mode, and wherein the method further comprises determining a left bearing angle and a right bearing angle for the current node, wherein the selecting the angular bearing context further comprises at least one of: assigning a first bit based on whether the mean azimuth prediction angle minus the left azimuth angle has the same sign as the mean azimuth prediction angle minus the right azimuth angle; assigning a second bit based on which of the average azimuth prediction angle minus the left azimuth angle and the average azimuth prediction angle minus the right azimuth angle has a largest absolute magnitude; and A quantized context index is provided based on a magnitude difference between the average azimuth prediction angle minus the left azimuth angle and the average azimuth prediction angle minus the right azimuth angle multiplied by an inverse of a radius to the current node.
16. The method according to claim 15, further comprising: An x-plane location and / or a y-plane location is selected for orientation prediction based on the position of the current node relative to the x-axis or the y-axis.
17. The method of claim 12 or 13, wherein the decoding is in an inferred direct coding mode (IDCM), and wherein the method further comprises: Initialize the coordinate interval; Recursively split the interval by: determining a left azimuth angle and a right azimuth angle for the interval; said selecting said angular azimuth context being performed by further using said left azimuth angle and said right azimuth angle together with said average azimuth prediction angle; performing decoding of information representing coordinates of a point belonging to said current node; as well as The coordinate interval is updated after the decoding.
18. The method according to claim 17, wherein the determining of the left azimuth angle and the right azimuth angle is based on the 1 / 4 and 3 Two points at / 4.
19. The method of claim 17, wherein the determining the left and right bearing angles uses a first order approximation from previous values of the left and right bearing angles, and / or the average bearing prediction angle.
20. The method of claim 17, further comprising: The average azimuth prediction angle is updated after the coordinate interval is updated.
21. The method of claim 12 or 13, wherein the decoding uses a prediction point tree, and wherein the method further comprises: determining a prediction of a point associated with the current node before determining the average azimuth prediction angle; Initializing a coordinate interval for a coordinate according to the prediction and the magnitude of the residual for the point; For each bit in the residual: determining a left azimuth angle and a right azimuth angle for the interval; said selecting said angular azimuth context being performed by further using said left azimuth angle and said right azimuth angle together with said average azimuth prediction angle; performing said decoding of the highest order residual bits for said coordinates; and The coordinate interval is updated after the decoding.
22. The method according to claim 21, further comprising: The average azimuth prediction angle is updated after the coordinate interval is updated.
23. An encoder for encoding a point cloud to generate a bitstream of compressed point cloud data representing three-dimensional positions of physical objects, the point cloud data being located in a volumetric space, the encoder comprising: processor; Memory; as well as A coding application comprising instructions executable by the processor, which instructions, when executed, cause the processor to perform the method according to any one of claims 1 to 11.
24. A decoder for decoding a bitstream of compressed point cloud data to produce a reconstructed point cloud representing a three-dimensional position of a physical object, the point cloud data being located within a volumetric space, the decoder comprising: processor; Memory; as well as A decoding application comprising instructions executable by the processor, which instructions, when executed, cause the processor to perform the method according to any one of claims 12 to 22.
25. A non-transitory processor-readable medium storing processor-executable instructions which, when executed by a processor, cause the processor to perform the method according to any one of claims 1 to 11.
26. A non-transitory processor-readable medium storing processor-executable instructions which, when executed by a processor, cause the processor to perform the method according to any one of claims 12 to 22.
Citation Information
Patent Citations
Method and system for entropy encoding and decoding of a scalable video bit stream
CN101032172A
Scattered point cloud compression method based on octree
CN106846425A