A method and device for decoding geometric isolated points of point cloud

By introducing an additional 1-bit identifier and context model in point cloud geometric encoding, the problem of inefficient coding of isolated points is solved, and the code flow overhead is reduced and the effective expression of isolated point position information is realized.

CN114078170BActive Publication Date: 2025-06-24ZHEJIANG UNIV
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202010822353.5
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-08-16
Publication Date
2025-06-24
Estimated Expiration
2040-08-16

AI Technical Summary

Technical Problem

When the prior art performs geometric encoding of point clouds, there are problems such as low efficiency of isolated point encoding and large bit waste.

Method used

A new point cloud geometric isolated point decoding method is proposed. By decoding an additional 1-bit identifier when specific conditions are met, combining the occupancy information of surrounding nodes and their parent nodes, a reasonable context model is designed to reduce the code flow overhead of isolated point encoding, and allow the depreciation of isolated point position information.

Benefits of technology

The code stream overhead occupied by isolated point position information is significantly reduced, the relationship between distortion and code rate is weighed, and encoding efficiency is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114078170B_ABST
    Figure CN114078170B_ABST
Patent Text Reader

Abstract

The present invention proposes a new method for decoding geometric outliers in point clouds. When decoding geometric information from a bitstream, for an octree node that needs to be decoded currently, when the node meets the condition single_condition of the outlier mode, it enters the outlier decoding mode. By adding an additional 1 binary symbol single_flag as a flag bit to indicate whether the next thing to be decoded is an outlier, the essence is that the method of identifying the occurrence of outliers is different. Combining with the occupancy information of surrounding nodes and the surrounding nodes of their parent nodes, a context model for entropy coding of the single_flag flag bit is reasonably designed, effectively reducing the bitstream of outlier coding. At the same time, it allows a reduced-precision representation of the outlier position information, better balancing the relationship between distortion and bitrate.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention patent belongs to the field of point cloud encoding and decoding, and particularly relates to a method and device for point cloud geometry encoding. Background Art

[0002] The next important challenge in media technology is to support the applications of virtual reality technology and augmented reality technology. These applications, together with computer vision, 3D rendering, and 3D camera technology, make emerging immersive media experiences possible. As an ideal form of representing 3D scenes or 3D objects, point cloud is a set of points that are irregularly distributed and unconnected in space. This set of points expresses position information through three-dimensional coordinates x, y, z, and expresses the structural and surface attribute information of 3D scenes or 3D objects through one or more attribute values associated with each point. A set of point clouds often contains tens of thousands to billions of points. In order to make the storage, processing, and transmission of 3D point clouds possible, it is very necessary to efficiently compress point cloud data.

[0003] When performing geometric encoding on point cloud, that is, encoding the xyz coordinates of point cloud, the usual practice is to continuously use the method of recursively dividing the bounding box (2 MaxGeometryOctreeDepth , 2 MaxGeometryOctreeDepth , 2 MaxGeometryoctreeDepth ) of the point cloud with an octree. Each cube is recursively divided into 8 sub-cubes, corresponding to 8 nodes of the octree. At each octree node division, the space occupancy code of this node contains 8 binary numbers (b7b6b5b4b3b2b1b0), respectively representing the occupancy situations of the 8 sub-nodes of this node. If at least one of the sub-nodes is occupied, then this sub-node will be further divided until it is divided into the smallest unit (1×1×1). MaxGeometryOctreeDepth is the total number of layers of the octree. The layer where the root node of the octree is located is recorded as the 0th layer, and the layer where the leaf node is located is recorded as the MaxGeometryOctreeDepth layer. During the geometric decoding of the point cloud, the space occupancy code is decoded and restored from the bitstream in sequence to reconstruct the complete octree.

[0004] In fact, there are a large number of isolated points in the point cloud. An isolated point refers to a situation where, during the continuous division starting from node A, there is only one point under this node, and this node A is called an isolated node. If an isolated point appears at a certain node in the L-th layer (L < MaxGeometryOctreeDepth) of the octree, the isolated point single coding mode is entered. That is, the local coordinates of the isolated point (each of the x, y, and z directions has (MaxGeometryOctreeDepth - L) binary symbols) are used to replace the space occupancy code (a total of 8 * (MaxGeometryOctreeDepth - L) binary symbols). After the decoding end decodes an identifier of an isolated point coding, such as a special identifier where all 8 symbols are '0', the code stream is then decoded in the way of local coordinates. Otherwise, the code stream is decoded in the way of the space occupancy code. When decoding the isolated point identifier of 8 '0's, the decoding end still decodes these 8 symbols according to the context of the space occupancy code and creates a context model for each symbol separately. In fact, using this method to identify isolated points mixes the space occupancy code and the isolated point identification code, resulting in inefficient coding and causing a certain waste of bit positions.

[0005] Syntax table of the existing method:

[0006]

[0007] Note: The variables NodeX[depth][idx], NodeY[depth][idx], and NodeZ[depth][idx] represent the x, y, and z coordinates of the idx node in the decoding order at a given depth; the variable NumNodesAtDepth[depth] represents the number of nodes to be decoded at a given depth, which can be obtained by analyzing the occupancy number in the occupancy code of the previous layer; MaxGeometryOctreeDepth refers to the maximum depth of the octree, single_mode is the isolated point coding mode, by decoding 3 symbols per layer, decoding the relative coordinates of the x, y, and z of the isolated point for each layer, and finally obtaining the complete coordinates according to the octree level where the current node is located. geometry_node is the octree node mode, decoding the space occupancy code of 8 symbols and determining the positions of the child nodes according to the octree level where the current node is located.

[0008]

[0009] Summary of the Invention

[0010] In order to further improve the encoding efficiency of isolated points, the present invention proposes a new method for decoding geometric isolated points in point clouds. When decoding geometric information from the bitstream, for the octree node to be decoded currently, when the single_condition for the isolated point mode is satisfied, it enters the isolated point decoding mode. By adding an additional 1-bit binary symbol single_flag as a flag bit to indicate whether the next thing to be decoded is an isolated point, the essence is that the method of identifying the occurrence of isolated points is different. Combining and utilizing the occupancy information of surrounding nodes and the surrounding nodes of their parent nodes, a context model for entropy encoding of the single_flag flag bit is reasonably designed, effectively reducing the bitstream of isolated point encoding, and at the same time allowing a reduced-precision expression of the isolated point position information, better balancing the relationship between distortion and bitrate.

[0011] The first object of the present invention is to provide a method for decoding geometric isolated points, including the following content:

[0012] For a node that satisfies the single_condition of the isolated point mode, an additional 1-bit identifier single_flag is decoded, and according to the value of the identifier, it is determined whether the local coordinates or the space occupancy code of the isolated point to be decoded next is identified;

[0013] The decoded local coordinates are to decode a 1-bit binary symbol representing the position coordinates in the xyz directions respectively for each layer of the next octree;

[0014] The decoded space occupancy code is to decode consecutive 8-bit binary symbols as the occupancy code of the octree node.

[0015] The syntax table of the method:

[0016]

[0017] Preferably, the single_condition of the isolated point mode in this method further includes whether the number of occupied nodes parentNeighbourCount among the 6 neighboring nodes adjacent to the parent node of the node to be decoded currently exceeds T. For parentNeighbourCount less than or equal to T, it is considered to satisfy the isolated point mode condition, and for parentNeighbourCount greater than T, it is considered not to satisfy the isolated point mode condition. T is a natural number greater than or equal to 0. After analyzing a large amount of point cloud data, it is more optimal to take T as 1.

[0018] Preferably, when decoding the additional 1-bit identifier single_flag in this method, context-based adaptive binary arithmetic decoding is used. A context model is established based on the number of occupied nodes parentNeighbourCount among the 6 neighboring nodes adjacent to the parent node of the node to be decoded currently, or a context model is established based on the number of occupied nodes childNeighbourCount among the 3 decoded neighboring nodes adjacent to the node to be decoded currently, or a context model is established by combining the two pieces of information of parentNeighbourCount and childNeighbourCount. Finally, different context combinations are selected. The context model establishment method shown in Table 1 below is superior. It is also possible to use only the information of parentNeighbourCount, and the context model establishment method shown in Table 2 is superior.

[0019] Table 1

[0020] ctx_id parentNeighbourCount childNeighbourCount 0 0 0 1 0 1 2 0 2,3 3 1 0 4 1 1 5 1 2,3

[0021] Table 2

[0022] ctx_id parentNeighbourCount 0 0 1 1

[0023] Preferably, the method for decoding the local coordinates in this method further includes decoding the local coordinates with a certain reduced precision expression. The decoding bit width depthMax of the local coordinates is obtained from the bitstream header and is used to control the precision of the isolated point position. Each of the x, y, and z directions decodes at most depthMax binary symbols, that is, the first depthMax bits of the local coordinates are decoded from the bitstream information, and the bits after the depthMax bits are directly decoded as 0.

[0024] The syntax table of the preferred method:

[0025]

[0026] The second object of the present invention is to provide a geometric isolated point decoding device, including the following:

[0027] Isolated point decoding module: For nodes that meet the isolated point mode condition single_condition, an additional 1-bit identifier single_flag is decoded, and according to the value of the identifier, it is selected whether to enter the local coordinate decoding module or the space occupancy code decoding module of the isolated point next;

[0028] The isolated point local coordinate decoding module decodes a 1-bit binary symbol representing the position coordinate in each of the x, y, and z directions for each layer of the octree next;

[0029] The described space occupancy code decoding module decodes consecutive 8-bit binary symbols as occupancy codes for octree nodes.

[0030] Preferably, the single_condition of the isolated point mode in this device further includes whether the number of occupied nodes parentNeighbourCount among the 6 neighboring nodes adjacent to the parent node of the node to be decoded currently exceeds T. For parentNeighbourCount less than or equal to T, it satisfies the isolated point mode condition, and for parentNeighbourCount greater than T, it does not satisfy the isolated point mode condition. T is a natural number greater than or equal to 0. After analyzing a large amount of point cloud data, it is preferable to take T as 1.

[0031] Preferably, the single_flag decoding module of this device uses context-based adaptive binary arithmetic decoding. It establishes a context model according to the information of the number of occupied nodes parentNeighbourCount among the 6 neighboring nodes adjacent to the parent node of the node to be decoded currently, or establishes a context model according to the number of occupied nodes childNeighbourCount among the 3 neighboring decoded nodes adjacent to the node to be decoded currently, or combines the two pieces of information of parentNeighbourCount and childNeighbourCount to establish a context model. Finally, different context combinations are screened. The context model establishment method shown in Table 3 below is preferable, or only the information of parentNeighbourCount can be used, and the context model establishment method shown in Table 4 is preferable.

[0032]

[0033]

[0034] Preferably, the method of the local coordinate decoding module of this device further includes an isolated point reduced-precision representation module, which decodes the local coordinates with a certain reduced precision representation. The decoding bit width depthMax of the local coordinates is obtained from the code stream header and is used to control the precision of the isolated point position. Each of the x, y, and z directions decodes at most depthMax binary symbols, that is, the first depthMax bits of the local coordinates are decoded from the code stream information, and the bits after the depthMax bits are directly decoded as 0.

[0035] When certain isolated point pattern conditions are met, the present invention decodes an additional isolated point identifier, which changes the method of identifying isolated points. A reasonable context model is designed for this identifier, significantly reducing the bitstream overhead occupied by the isolated point position information. At the same time, it allows for a reduced-precision representation of the isolated point position information, better balancing the relationship between distortion and bitrate. Brief Description of the Drawings

[0036] In order to more clearly illustrate the technical solutions in the embodiments of the present application or the prior art, the following will briefly introduce the drawings required for the description of the embodiments or the prior art. Obviously, the drawings described below form a part of the present application. The schematic embodiments of the present invention and their descriptions are used to explain the present invention and do not constitute an improper limitation to the present invention. For those of ordinary skill in the art, other drawings can be obtained based on these drawings without creative efforts.

[0037] Figure 1 is a flowchart of geometric information decoding in the existing coding framework;

[0038] Figure 2 is a flowchart of geometric decoding after adding the geometric isolated point decoding method of the present invention;

[0039] Figure 3 is a flowchart of geometric decoding after adding the reduced-precision representation of the isolated point position information of the present invention. Detailed Embodiments

[0040] To further understand the present invention, the following describes the preferred implementation schemes of the present invention in combination with embodiments. However, it should be understood that these descriptions are only for further explaining the features and advantages of the present invention and do not limit the claims of the present invention.

[0041] Embodiment 1

[0042] A method for decoding geometric isolated points in this embodiment includes the following steps:

[0043] Before starting geometric decoding, decode the local coordinate bit width depthMax of the isolated point used to represent the position coordinate accuracy of the isolated point from the bitstream header. Decode the geometric information of the point cloud from the bitstream. For the current node to be decoded, the maximum depth of the octree is denoted as MaxGeometryOctreeDepth, and the depth of the octree where the current node is located is denoted as L. If it does not meet the condition single_condition, then next, decode 8 bits of the space occupancy code from the bitstream and send the current node to the octree node queue. If it meets the condition single_condition, then next, an additional 1-bit identifier single_flag needs to be decoded, and according to the value of single_flag, select whether to decode the local coordinates of the isolated point or the space occupancy code next. Specifically:

[0044] · Count the number of occupied nodes parentNeighbourCount among the 6 adjacent neighbor nodes around the parent node of the current node to be decoded. If parentNeighbourCount <= 1, it is considered that the current node meets the single_condition and enters the isolated point decoding mode. Otherwise, it does not meet the single_condition;

[0045] · For the isolated point decoding mode, a 1-bit flag single_flag needs to be decoded. In addition to parentNeighbourCount, count the number of occupied nodes childNeighbourCount among the 3 adjacent decoded neighbor nodes of the current node. Select a context model from the following table according to these two values, and use the probability of this model to decode single_flag and update the probability accordingly;

[0046]

[0047]

[0048] · If single_flag = 0, it means that the current node is not actually an isolated node. Then enter the spatial occupancy code decoding mode. If single_flag = 0, the current node is an isolated node. According to the local coordinate bit width depthMax of the isolated point decoded from the bitstream header before, the first depthMax bits of the local coordinates xyz are decoded sequentially from the bitstream in the bypass decoding manner. The bits after the depthMax bits cannot be decoded from the information in the bitstream and are directly decoded as 0. Taking depthMax = MaxGeometryOctreeDepth - L as an example, each coordinate of xyz needs to decode (MaxGeometryOctreeDepth - L) symbols from the bitstream. At this time, the position coordinates of the isolated point can be accurately decoded, which is lossless.

[0049] Embodiment 2

[0050] A method for decoding geometric isolated points in this embodiment includes the following steps:

[0051] Before starting geometric decoding, decode the local coordinate bit width depthMax of the isolated point used to express the accuracy of the isolated point position coordinates from the bitstream header. Decode the geometric information of the point cloud from the bitstream. For the current node to be decoded, the maximum depth of the octree is denoted as MaxGeometryOctreeDepth, and the depth of the octree where the current node is located is denoted as L. If it does not meet the condition single_condition, then next decode 8 bits of the spatial occupancy code from the bitstream and send the current node to the octree node queue. If it meets the condition single_condition, then next an additional 1-bit identifier single_flag needs to be decoded. According to the value of single_flag, select whether to decode the local coordinates of the isolated point or the spatial occupancy code next. Specifically:

[0052] · Count the number of occupied nodes parentNeighbourCount among the 6 adjacent neighbor nodes around the parent node of the current node to be decoded. If parentNeighbourCount == 0, it is considered that the current node meets the single_condition and enters the isolated point decoding mode. Otherwise, it does not meet the single_condition;

[0053] · For the isolated point decoding mode, it is necessary to decode a 1-bit identifier single_flag. In addition to parentNeighbourCount, count the number of occupied nodes childNeighbourCount among the 3 adjacent decoded neighbour nodes of the current node. Select a context model from the following table based on these two values, and use the probability of this model to decode single_flag and update the probability accordingly;

[0054] ctx_id parentNeighbourCount childNeighbourCount 0 0 0 1 0 1 2 0 2,3

[0055] · If single_flag = 0, it means that the current node is not actually an isolated node, then enter the space occupancy code decoding mode. If single_flag = 0, the current node is an isolated node. According to the isolated point local coordinate bit width depthMax decoded from the bitstream header before, decode the first depthMax bits of the local coordinates xyz from the bitstream in the bypass decoding manner. The bits after depthMax cannot be decoded from the information in the bitstream and are directly decoded as 0. Taking depthMax = MaxGeometryOctreeDepth - L as an example, each coordinate of xyz needs to decode (MaxGeometryOctreeDepth - L) symbols from the bitstream. At this time, the position coordinates of the isolated point can be accurately decoded, which is lossless.

[0056] Example 3

[0057] A method for decoding geometric isolated points in this embodiment includes the following steps:

[0058] Before starting geometric decoding, decode the isolated point local coordinate bit width depthMax used to express the accuracy of the isolated point position coordinates from the bitstream header. Decode the geometric information of the point cloud from the bitstream. For the current node to be decoded, the maximum depth of the octree is denoted as MaxGeometryOctreeDepth, and the depth of the octree where the current node is located is denoted as L. If it does not meet the condition single_condition, then next decode 8 bits of the space occupancy code from the bitstream and send the current node to the octree node queue. If it meets the condition single_condition, then next an additional 1-bit identifier single_flag needs to be decoded, and according to the value of single_flag, select whether to decode the local coordinates of the isolated point or the space occupancy code next. Specifically:

[0059] · Count the number of occupied nodes parentNeighbourCount among the 6 adjacent neighbor nodes around the parent node of the currently to-be-decoded node. If parentNeighbourCount <= 2, it is considered that the current node meets the single_condition and enters the isolated point decoding mode; otherwise, it does not meet the single_condition.

[0060] · For the isolated point decoding mode, a 1-bit flag single_flag needs to be decoded. In addition to parentNeighbourCount, also count the number of occupied nodes childNeighbourCount among the 3 adjacent decoded neighbor nodes of the current node. Select a context model from the following table based on these two values, and use the probability of this model to decode single_flag and update the probability accordingly.

[0061] ctx_id parentNeighbourCount childNeighbourCount 0 0 0 1 0 1 2 0 2,3 3 1 0 4 1 1 5 1 2,3 6 2 0 7 2 1 8 2 2,3

[0062] · If single_flag = 0, it means that the current node is actually not an isolated node, then enter the space occupancy code decoding mode. If single_flag = 0, the current node is an isolated node. According to the isolated point local coordinate bit width depthMax decoded from the bitstream header before, use the bypass decoding method to sequentially decode the first depthMax bits of the local coordinates xyz from the bitstream. The bits after the depthMax bits cannot be decoded from the information in the bitstream and are directly decoded as 0. Taking depthMax = MaxGeometryOctreeDepth - L as an example, each coordinate of xyz needs to decode (MaxGeometryOctreeDepth - L) symbols from the bitstream. At this time, the position coordinates of the isolated point can be accurately decoded, which is lossless.

[0063] Example 4

[0064] A method for decoding geometric isolated points of a point cloud in this example includes the following steps:

[0065] Before starting geometric decoding, decode the local coordinate bit width depthMax of the isolated point used to express the position coordinate accuracy of the isolated point from the bitstream header. Decode the geometric information of the point cloud from the bitstream. For the current node to be decoded, the maximum depth of the octree is denoted as MaxGeometryOctreeDepth, and the depth of the octree where the current node is located is denoted as L. If it does not meet the condition single_condition, then next decode 8-bit space occupancy code from the bitstream and send the current node to the octree node queue. If it meets the condition single_condition, then an additional 1-bit identifier single_flag needs to be decoded next. According to the value of single_flag, choose to decode the local coordinates of the isolated point or the space occupancy code next. Specifically:

[0066] · Count the number of occupied nodes parentNeighbourCount among the 6 adjacent neighbor nodes around the parent node of the current node to be decoded. If parentNeighbourCount <= 1, it is considered that the current node meets single_condition and enters the isolated point decoding mode. Otherwise, it does not meet single_condition;

[0067] · For the isolated point decoding mode, a 1-bit flag single_flag needs to be decoded. Select a context model from the following table according to the value of parentNeighbourCount, and use the probability of this model to decode single_flag and update the probability accordingly;

[0068] ctx_id parentNeighbourCount 0 0 1 1

[0069] · If single_flag = 0, it means that the current node is actually not an isolated node, then enter the space occupancy code decoding mode. If single_flag = 0, the current node is an isolated node. According to the local coordinate bit width depthMax of the isolated point decoded from the bitstream header before, use the bypass decoding method to sequentially decode the first depthMax bits of the local coordinates xyz from the bitstream. The bits after depthMax cannot be decoded from the information in the bitstream and are directly decoded as 0. Taking depthMax = MaxGeometryOctreeDepth - L as an example, each coordinate of xyz needs to decode (MaxGeometryOctreeDepth - L) symbols from the bitstream, and at this time, the position coordinates of the isolated point can be accurately decoded, which is lossless.

[0070] Example 5

[0071] A point cloud geometric isolated point decoding method according to this embodiment includes the following steps:

[0072] Before starting geometric decoding, decode the isolated point local coordinate bit width depthMax used to express the accuracy of the isolated point position coordinates from the bitstream header. Decode the geometric information of the point cloud from the bitstream. For the current node to be decoded, the maximum depth of the octree is denoted as MaxGeometryOctreeDepth, and the depth of the octree where the current node is located is denoted as L. If it does not meet the condition single_condition, then next decode 8-bit spatial occupancy codes from the bitstream and send the current node to the octree node queue. If it meets the condition single_condition, then next an additional 1-bit identifier single_flag needs to be decoded, and according to the value of single_flag, select whether to decode the local coordinates of the isolated point or the spatial occupancy code next. Specifically:

[0073] · Count the number of occupied nodes parentNeighbourCount among the 6 adjacent neighbor nodes around the parent node of the current node to be decoded. If parentNeighbourCount <= 2, it is considered that the current node meets single_condition and enters the isolated point decoding mode. Otherwise, it does not meet single_condition;

[0074] · For the isolated point decoding mode, a 1-bit flag single_flag needs to be decoded. Select a context model from the following table according to the value of parentNeighbourCount, and use the probability of this model to decode single_flag and update the probability accordingly;

[0075] ctx_id parentNeighbourCount 0 0 1 1 2 2

[0076] · If single_flag = 0, it means that the current node is actually not an isolated node, then enter the spatial occupancy code decoding mode. If single_flag = 0, the current node is an isolated node. According to the isolated point local coordinate bit width depthMax decoded from the bitstream header before, decode the first depthMax bits of the local coordinates xyz in sequence from the bitstream in a bypass decoding manner. The bits after depthMax cannot be decoded from the information in the bitstream and are directly decoded as 0. Taking depthMax = MaxGeometryOctreeDepth - L as an example, each coordinate of xyz needs to decode (MaxGeometryOctreeDepth - L) symbols from the bitstream, and at this time, the position coordinates of the isolated point can be accurately decoded, which is lossless.

[0077] Example 6

[0078] A method for decoding geometric isolated points in this embodiment includes the following steps:

[0079] Before starting geometric decoding, decode the local coordinate width depthMax of the isolated points used to express the accuracy of the isolated point position coordinates from the bitstream header. Decode the geometric information of the point cloud from the bitstream. For the current node to be decoded, the maximum depth of the octree is denoted as MaxGeometryOctreeDepth, and the depth of the octree where the current node is located is denoted as L. If it does not meet the condition single_condition, then next decode 8-bit spatial occupancy codes from the bitstream and send the current node to the octree node queue. If it meets the condition single_condition, then next an additional 1-bit identifier single_flag needs to be decoded, and according to the value of single_flag, select whether to decode the local coordinates of the isolated points or the spatial occupancy codes next. Specifically:

[0080] · Count the number of occupied nodes parentNeighbourCount among 6 adjacent neighbor nodes around the parent node of the current node to be decoded. If parentNeighbourCount <= 1, it is considered that the current node meets the single_condition and enters the isolated point decoding mode. Otherwise, it does not meet the single_condition;

[0081] · For the isolated point decoding mode, a 1-bit flag single_flag needs to be decoded. In addition to parentNeighbourCount, count the number of occupied nodes childNeighbourCount among 3 adjacent decoded neighbor nodes of the current node. Select a context model from the following table according to these two values, and use the probability of this model to decode single_flag and update the probability accordingly;

[0082] ctx_id parentNeighbourCount childNeighbourCount 0 0 0 1 0 1 2 0 2,3 3 1 0 4 1 1 5 1 2,3

[0083] · If single_flag = 0, it means that the current node is not actually an isolated node, then enter the spatial occupancy code decoding mode. If single_flag = 0, the current node is an isolated node. According to the local coordinate bit width depthMax of the isolated point decoded from the bitstream header before, the first depthMax bits of the local coordinates xyz are decoded sequentially from the bitstream in the bypass decoding method. The bits after the depthMax bits cannot be decoded from the information in the bitstream and are directly decoded as 0. Taking depthMax = 0 as an example, each coordinate of xyz does not need to be decoded from the bitstream, and the local coordinates are all default decoded as 0. At this time, the decoded position coordinates of the isolated point have geometric distortion, but it can greatly save the bitstream.

[0084] Embodiment 7

[0085] A method for decoding geometric isolated points in this embodiment includes the following steps:

[0086] Before starting geometric decoding, decode the local coordinate bit width depthMax of the isolated point used to express the accuracy of the isolated point position coordinates from the bitstream header. Decode the geometric information of the point cloud from the bitstream. For the current node to be decoded, the maximum depth of the octree is denoted as MaxGeometryOctreeDepth, and the depth of the octree where the current node is located is denoted as L. If it does not meet the condition single_condition, then next decode 8 bits of the spatial occupancy code from the bitstream and send the current node to the octree node queue. If it meets the condition single_condition, then next an additional 1-bit identifier single_flag needs to be decoded, and according to the value of single_flag, select whether to decode the local coordinates of the isolated point or the spatial occupancy code next. Specifically:

[0087] · Count the number of occupied nodes parentNeighbourCount among the 6 adjacent neighbor nodes around the parent node of the current node to be decoded. If parentNeighbourCount <= 2, it is considered that the current node meets the single_condition and enters the isolated point decoding mode; otherwise, it does not meet the single_condition.

[0088] · For the isolated point decoding mode, a 1-bit flag single_flag needs to be decoded. In addition to parentNeighbourCount, count the number of occupied nodes childNeighbourCount among the 3 adjacent decoded neighbor nodes of the current node. Select a context model from the following table according to these two values, and use the probability of this model to decode single_flag and update the probability accordingly;

[0089] ctx_id parentNeighbourCount childNeighbourCount 0 0 0 1 0 1 2 0 2,3 3 1 0 4 1 1 5 1 2,3 6 2 0 7 2 1 8 2 2,3

[0090] · If single_flag = 0, it means that the current node is not actually an isolated node, then enter the space occupancy code decoding mode. If single_flag = 0, the current node is an isolated node. According to the local coordinate bit width depthMax of the isolated point decoded from the bitstream header before, the first depthMax bits of the local coordinates xyz are decoded in sequence from the bitstream by the bypass decoding method. The bits after the depthMax bits cannot be decoded from the information in the bitstream and are directly decoded as 0. Taking depthMax = 0 as an example, each coordinate of xyz does not need to be decoded from the bitstream, and the local coordinates are all default decoded as 0. At this time, the decoded position coordinates of the isolated point have geometric distortion, but it can greatly save the bitstream.

[0091] Example 8

[0092] A point cloud geometric isolated point decoding device in this embodiment includes the following steps:

[0093] Before starting geometric decoding, decode the local coordinate bit width depthMax of the isolated point used to express the accuracy of the isolated point position coordinates from the bitstream header. Decode the geometric information of the point cloud from the bitstream. For the current node to be decoded, the maximum depth of the octree is denoted as MaxGeometryOctreeDepth, and the depth of the octree where the current node is located is denoted as L.

[0094] Isolated point decoding module: For the current node to be decoded, if it does not meet the condition single_condition, then next decode 8 bits of the space occupancy code from the bitstream and send the current node to the octree node queue. If it meets the condition single_condition, then next an additional 1-bit identifier single_flag needs to be decoded, and according to the value of single_flag, select whether to enter the isolated point decoding module or the space occupancy code decoding module next:

[0095] Isolated point decoding module: Count the number of occupied nodes parentNeighbourCount among the 6 adjacent neighbor nodes around the parent node of the current node to be decoded. If parentNeighbourCount <= 1, it is considered that the current node meets the single_condition and enters the single_flag decoding module. Otherwise, it does not meet the single_condition;

[0096] single_flag decoding module: It is necessary to additionally decode a 1-bit identifier single_flag. In addition to parentNeighbourCount, count the number of occupied nodes childNeighbourCount among the 3 adjacent decoded neighbour nodes of the current node. Select a context model from the following table based on these two values, and use the probability of this model to decode single_flag and update the probability accordingly;

[0097] ctx_id parentNeighbourCount childNeighbourCount 0 0 0 1 0 1 2 0 2,3 3 1 0 4 1 1 5 1 2,3

[0098] Isolated point precision reduction expression module: If single_flag = 0, it means that the current node is not actually an isolated node, then enter the space occupancy code decoding mode. If single_flag = 0, the current node is an isolated node. According to the isolated point local coordinate bit width depthMax decoded from the bitstream header before, use the bypass decoding method to sequentially decode the first depthMax bits of the local coordinates xyz from the bitstream. The bits after depthMax cannot be decoded from the information in the bitstream and are directly decoded as 0. Taking depthMax = MaxGeometryOctreeDepth - L as an example, each coordinate of xyz needs to decode (MaxGeometryOctreeDepth - L) symbols from the bitstream, and at this time, the position coordinates of the isolated point can be accurately decoded, which is lossless.

[0099] Embodiment 9

[0100] A point cloud geometry isolated point decoding device in this embodiment includes the following steps:

[0101] Before starting geometry decoding, decode the isolated point local coordinate bit width depthMax used to express the precision of the isolated point position coordinates from the bitstream header. Decode the geometric information of the point cloud from the bitstream. For the current node to be decoded, the maximum depth of the octree is denoted as MaxGeometryOctreeDepth, and the depth of the octree where the current node is located is denoted as L.

[0102] Isolated point decoding module: For the current node to be decoded, if it does not meet the condition single_condition, then next decode 8 bits of the space occupancy code from the bitstream and send the current node to the octree node queue. If it meets the condition single_condition, then next an additional 1-bit identifier single_flag needs to be decoded. According to the value of single_flag, select whether to enter the isolated point decoding module or the space occupancy code decoding module next:

[0103] Isolated point decoding module: Count the number of occupied nodes parentNeighbourCount among the 6 adjacent neighbor nodes around the parent node of the node to be decoded currently. If parentNeighbourCount <= 2, it is considered that the current node meets single_condition and enters the single_flag decoding module; otherwise, it does not meet single_condition.

[0104] single_flag decoding module: An additional 1-bit flag single_flag needs to be decoded. In addition to parentNeighbourCount, also count the number of occupied nodes childNeighbourCount among the 3 adjacent decoded neighbor nodes of the current node. Select a context model from the following table based on these two values, and use the probability of this model to decode single_flag and update the probability accordingly.

[0105]

[0106]

[0107] Isolated point precision reduction expression module: If single_flag = 0, it means that the current node is not actually an isolated node, then enter the spatial occupancy code decoding mode. If single_flag = 0, the current node is an isolated node. According to the isolated point local coordinate bit width depthMax decoded from the bitstream header before, use the bypass decoding method to decode the first depthMax bits of the local coordinates xyz from the bitstream in sequence. The bits after depthMax cannot be decoded from the information in the bitstream and are directly decoded as 0. Taking depthMax = MaxGeometryOctreeDepth - L as an example, each coordinate of xyz needs to decode (MaxGeometryOctreeDepth - L) symbols from the bitstream, and at this time, the position coordinates of the isolated point can be accurately decoded, which is lossless.

[0108] Example 10

[0109] A point cloud geometry isolated point decoding device in this example includes the following steps:

[0110] Before starting geometry decoding, decode the isolated point local coordinate bit width depthMax used to express the precision of the isolated point position coordinates from the bitstream header. Decode the geometric information of the point cloud from the bitstream. For the node to be decoded currently, the maximum depth of the octree is denoted as MaxGeometryOctreeDepth, and the depth of the octree where the current node is located is denoted as L.

[0111] Isolated point decoding module: For the current node to be decoded, if it does not meet the condition single_condition, then next, decode 8-bit spatial occupancy codes from the bitstream and send the current node to the octree node queue. If it meets the condition single_condition, then an additional 1-bit identifier single_flag needs to be decoded next. According to the value of single_flag, choose whether to enter the isolated point decoding module or the spatial occupancy code decoding module next:

[0112] Isolated point decoding module: Count the number of occupied nodes parentNeighbourCount among the 6 adjacent neighbor nodes around the parent node of the current node to be decoded. If parentNeighbourCount <= 1, it is considered that the current node meets the single_condition and enters the single_flag decoding module; otherwise, it does not meet the single_condition.

[0113] single_flag decoding module: An additional 1-bit flag single_flag needs to be decoded. According to the value of parentNeighbourCount, select a context model from the following table, and use the probability of this model to decode single_flag and update the probability accordingly;

[0114]

[0115]

[0116] Isolated point downscaled representation module: If single_flag = 0, it means that the current node is not actually an isolated node, then enter the spatial occupancy code decoding mode. If single_flag = 0, the current node is an isolated node. According to the isolated point local coordinate bit width depthMax decoded from the bitstream header before, use the bypass decoding method to sequentially decode the first depthMax bits of the local coordinates xyz from the bitstream. The bits after depthMax cannot be decoded from the information in the bitstream and are directly decoded as 0. Taking depthMax = MaxGeometryOctreeDepth - L as an example, each coordinate of xyz needs to decode (MaxGeometryOctreeDepth - L) symbols from the bitstream. At this time, the position coordinates of the isolated point can be accurately decoded, which is lossless.

Claims

1. A decoding method for geometric isolated points of point cloud, characterized in that including: For nodes that meet the isolated point pattern condition, an additional 1-bit identifier single_flag is decoded. According to the value of single_flag, either the local coordinates of the isolated point or the space occupancy code obtained from the bitstream information is selected next; The local coordinates are to decode a 1-bit binary symbol for the position coordinates in the xyz directions respectively for each layer of the subsequent octree; The space occupancy code is to decode consecutive 8-bit binary symbols as the occupancy code of the octree node. The isolated point pattern condition is whether the number of occupied nodes parentNeighbourCount among the 6 neighboring nodes adjacent to the parent node of the currently decoded node exceeds T. For parentNeighbourCount less than or equal to T, it meets the isolated point pattern condition, and for parentNeighbourCount greater than T, it does not meet the isolated point pattern condition. T is a natural number greater than or equal to 0.

2. The decoding method of the geometric isolated point according to claim 1, further characterized in that including: When decoding the additional 1-bit identifier single_flag, context-based adaptive binary arithmetic decoding is used. A context model is established based on the information of the number of occupied nodes parentNeighbourCount among the 6 neighboring nodes adjacent to the parent node of the currently decoded node, or a context model is established based on the number of occupied nodes childNeighbourCount among the 3 neighboring decoded nodes adjacent to the currently decoded node, or a context model is established by combining the two pieces of information of parentNeighbourCount and childNeighbourCount.

3. The decoding method of the geometric isolated point according to claim 1, further characterized in that including: The local coordinates can decode local coordinates with a certain reduced precision. The decoding bit width depthMax of the local coordinates is obtained from the bitstream header. Each of the xyz directions decodes depthMax binary symbols, that is, the first depthMax bits of the local coordinates are decoded from the bitstream information, and the bits after the depthMax bits are directly decoded as 0.

4. A decoding device for geometric isolated points of a point cloud, characterized in that including: Isolated point decoding module: For nodes that meet the isolated point pattern condition, an additional 1-bit identifier single_flag is decoded. According to the value of single_flag, the subsequent local coordinate decoding module of the isolated point or the decoding module of the space occupancy code is selected; The local coordinate decoding module of the isolated point is to decode a 1-bit binary symbol for the position coordinates in the xyz directions respectively for each layer of the subsequent octree; The space occupancy code decoding module is to decode consecutive 8-bit binary symbols as the occupancy code of the octree node.

5. The decoding device for geometric isolated points according to claim 4, further characterized in that including: The isolated point mode condition is whether the number of occupied nodes parentNeighbourCount among the 6 neighboring nodes adjacent to the parent node of the node currently to be decoded exceeds T. If parentNeighbourCount is less than or equal to T, the isolated point mode condition is met; if parentNeighbourCount is greater than T, the isolated point mode condition is not met, and T is a natural number greater than or equal to 0.

6. The decoding device for geometric isolated points according to claim 4, further characterized in that include: single_flag decoding module: When an additional 1-bit identifier single_flag is decoded, context-based adaptive binary arithmetic decoding is used to establish a context model based on the parentNeighbourCount information of the number of occupied nodes among the 6 adjacent neighboring nodes of the parent node of the node currently to be decoded, or a context model is established based on the childNeighbourCount information of the number of occupied nodes among the 3 adjacent decoded neighboring nodes of the node currently to be decoded, or a context model is established by combining the parentNeighbourCount and childNeighbourCount information.

7. The decoding device for geometric isolated points according to claim 4, characterized in that: The local coordinate decoding module of the isolated point also includes an isolated point reduced precision expression module: the local coordinates are decoded with a certain reduced precision expression, the decoding bit width depthMax of the local coordinates is obtained from the bit stream header, and depthMax binary symbols are decoded in each xyz direction, that is, the first depthMax bits of the local coordinates are decoded from the bit stream information, and the bits after the depthMax bits are directly decoded to 0.

Citation Information

Patent Citations

  • Three-dimensional point cloud compression storage method and system based on spatial-temporal data fusion

    CN108009979A

  • Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device

    US20210012538A1