WO2021232251A1 - 一种点云编解码方法、编码器、解码器及存储介质 - Google Patents
一种点云编解码方法、编码器、解码器及存储介质 Download PDFInfo
- Publication number
- WO2021232251A1 WO2021232251A1 PCT/CN2020/091106 CN2020091106W WO2021232251A1 WO 2021232251 A1 WO2021232251 A1 WO 2021232251A1 CN 2020091106 W CN2020091106 W CN 2020091106W WO 2021232251 A1 WO2021232251 A1 WO 2021232251A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- neighbor
- node
- current node
- child node
- child
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/001—Model-based coding, e.g. wire frame
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/40—Tree coding, e.g. quadtree, octree
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/012—Dimensioning, tolerancing
Definitions
- the embodiments of the present application relate to video image processing technology, and relate to, but are not limited to, point cloud coding and decoding methods, encoders, decoders, and storage media.
- the geometric information of the point cloud and the attribute information corresponding to each point are separately coded.
- the geometric information of the point cloud and the attribute information corresponding to each point are separately coded.
- quantization is performed. This step of quantization mainly plays a role of scaling. Due to quantization rounding, the geometric information of some points is the same. According to the parameters, it is determined whether to remove duplicate points. The process of quantization and removal of duplicate points is also called This is the voxelization process.
- the bounding box is divided into 8 sub-cubes, and the non-empty (including the points in the point cloud) sub-cubes are continued to be divided into 8 equal parts until the leaf nodes are divided.
- the division stops, and the points in the leaf nodes are coded to generate a binary code stream.
- the order of geometric division in the current point cloud coding and decoding standard includes the breadth-first traversal order. Specifically, when the geometry is divided into an octree, the nodes of the current same layer are first divided until all nodes on the current layer are divided. Continue to divide the nodes of the next layer, and finally stop dividing when the divided leaf nodes are 1x1x1 unit cubes.
- the embodiments of the present application provide a point cloud coding and decoding method, an encoder, a decoder, and a storage medium, which can make full use of the geometric spatial correlation between nodes to perform coding and decoding, so as to improve geometric coding and decoding performance.
- an embodiment of the present application provides a point cloud encoding method, which is applied to an encoder, and the method includes:
- this application provides a point cloud decoding method applied to a decoder, and the method includes:
- an encoder including:
- the first determining unit is configured to determine the bounding box of the point cloud to be encoded
- the first obtaining unit is configured to obtain the coordinate information of the current node when the bounding box of the point cloud to be coded is divided into an octree based on the Morton code sequence;
- a first processing unit configured to determine the first neighbor mode of the current node based on the coordinate information of the current node
- a first prediction unit configured to determine the entropy coding parameter of the current node based on the first neighbor mode of the current node
- the encoding unit is configured to perform entropy encoding on the occupancy information of the current node based on the entropy encoding parameter.
- an embodiment of the present application provides a decoder, including:
- the parsing unit is configured to parse the code stream and determine the bounding box of the point cloud to be decoded
- the second obtaining unit is configured to obtain coordinate information of the current node when dividing the bounding box of the point cloud to be decoded based on the Morton code sequence;
- a second processing unit configured to determine the first neighbor mode of the current node based on the coordinate information of the current node
- a second prediction unit configured to determine the entropy decoding parameter of the current node based on the first neighbor mode of the current node
- the decoding unit is configured to perform entropy decoding on the occupancy information of the current node based on the entropy decoding parameter.
- an embodiment of the present application also provides an encoder, including: a first memory and a first processor; the first memory stores a computer program that can run on the first processor, and the first memory When the processor executes the program, the point cloud coding method of the encoder is realized.
- an embodiment of the present application also provides a decoder, including: a second memory and a second processor; the second memory stores a computer program that can run on the second processor, and the second memory When the processor executes the program, the point cloud decoding method of the decoder is realized.
- an embodiment of the present application provides a storage medium, including: a computer program is stored thereon, and when the computer program is executed by a first processor, the point cloud encoding method of the encoder is implemented; or, the computer When the program is executed by the second processor, the point cloud decoding method of the decoder is realized.
- the embodiments of the present application provide a point cloud coding and decoding method, an encoder, a decoder, and a storage medium, including: determining a bounding box of a point cloud to be coded; During the octree division, the coordinate information of the current node is obtained; the first neighbor mode of the current node is determined based on the coordinate information of the current node; the first neighbor mode of the current node is determined based on the first neighbor mode of the current node Entropy coding parameters; performing entropy coding on the occupancy information of the current node based on the entropy coding parameters.
- FIG. 1 is a block diagram of an exemplary encoding process provided by an embodiment of the application
- FIG. 2 is a block diagram of an exemplary decoding process provided by an embodiment of the application.
- FIG. 3 is a schematic flowchart of a point cloud encoding method provided by an embodiment of the application
- FIG. 4 is a schematic diagram of an exemplary octree division provided by an embodiment of the application.
- Fig. 5 is a first schematic diagram of an exemplary current node neighbor mode provided by an embodiment of the application.
- Fig. 6 is a second schematic diagram of an exemplary current node neighbor mode provided by an embodiment of the application.
- FIG. 7 is an exemplary schematic diagram of the positional relationship of child nodes in the current node provided by an embodiment of the application.
- FIGS. 8a-8h are schematic diagrams 1 of an exemplary neighbor range from a first child node to an eighth child node provided by an embodiment of this application;
- FIG. 9 is a schematic diagram 1 of an exemplary neighbor mode of a second child node according to an embodiment of the application.
- FIG. 10 is a second schematic diagram of a neighbor range of a second child node according to an embodiment of the application.
- FIG. 11 is a schematic diagram 2 of an exemplary neighbor mode of a second child node according to an embodiment of the application.
- FIG. 12 is a third schematic diagram of an exemplary neighbor range of a second child node according to an embodiment of the application.
- FIG. 13 is a third schematic diagram of an exemplary neighbor mode of a second child node provided by an embodiment of the application.
- FIG. 14 is a schematic flowchart of a point cloud decoding method provided by an embodiment of the application.
- 15 is a schematic diagram of the first composition structure of an encoder in an embodiment of the application.
- FIG. 16 is a schematic diagram of a second composition structure of an encoder in an embodiment of the application.
- FIG. 17 is a schematic diagram of the first composition structure of a decoder in an embodiment of the application.
- FIG. 18 is a schematic diagram of the second composition structure of the decoder in an embodiment of the application.
- FIG. 1 is a block diagram of an exemplary encoding process provided by an embodiment of the application.
- the geometric information and the attribute information corresponding to each point cloud are separately encoded in the point cloud encoding process.
- coordinate transformation is performed on the geometric position, so that all the point clouds are contained in a bounding box (bounding box), and then quantized.
- This step of quantization mainly plays a role of scaling, due to quantization rounding , So that the geometric information of a part of the point cloud is the same, so it is determined whether to remove the duplicate points based on the parameters.
- the process of quantifying and removing the duplicate points is also called the voxelization process. Then divide the bounding box into an octree.
- the bounding box is divided into 8 sub-cubes, and the non-empty (containing points in the point cloud) sub-cubes are continued to be divided into eight equal parts until the leaf knots are obtained.
- the point is a 1x1x1 unit cube, the division is stopped, and the points in the leaf nodes are entropy coded to generate a geometric code stream.
- attribute coding is mainly carried out for color and reflectance information. First determine whether to perform color space conversion. If performing color space conversion, convert the color information from RGB color space to YUV color space. Then, the original point cloud is used to recolor the reconstructed point cloud, so that the uncoded attribute information corresponds to the reconstructed geometric information. In the color information coding, after the point cloud is sorted by Morton code, the subsequent differential prediction is directly performed, and finally the prediction residual is quantized and coded to generate the attribute code stream.
- the high-level syntax elements, geometric code stream and attribute code stream constitute the binary code stream of the three-dimensional image, and the encoder sends the binary code stream to the decoder.
- Fig. 2 is a block diagram of an exemplary decoding process provided by an embodiment of the application; as shown in Fig. 2, a decoder obtains a binary code stream, and independently decodes the geometric code stream and the attribute code stream in the binary code stream.
- a decoder obtains the geometric information of the point cloud through entropy decoding-octree reconstruction-inverse coordinate quantization-inverse coordinate translation;
- decoding the attribute code stream use entropy decoding-inverse quantization-attribute Reconstruction-inverse space conversion obtains the attribute information of the point cloud, and restores the three-dimensional image model of the point cloud data based on the geometric information and the attribute information.
- the point cloud coding and decoding method provided in the embodiment of the present application mainly acts on the entropy coding part and the entropy decoding part enclosed by the dashed frame in FIG. 1 and FIG. 2.
- the embodiment of the present application provides a point cloud encoding method, which is applied to an encoder. As shown in FIG. 3, the method may include:
- Step 101 Determine the bounding box of the point cloud to be encoded
- the point cloud data of the three-dimensional image model to be encoded is obtained, and the point cloud data contains geometric information and attribute information of the three-dimensional image model.
- the geometric information of the point cloud and the attribute information corresponding to each point are separately encoded.
- the geometric information encoding is implemented using the point cloud encoding method provided in the embodiments of the present application.
- the bounding box is quantized.
- This step of quantization mainly plays a role of scaling. Due to the rounding of quantization, the geometric information of some points is the same. According to the parameters, it is determined whether to remove duplicate points, quantize and remove duplicate points. The process is also called the voxelization process.
- multiple different points are quantified as repeated points.
- the multiple duplicate points will be treated as one point; if the parameter indicates not to remove duplicate points, multiple points with the same geometric coordinates , Still treated as multiple points.
- the processed bounding box is divided into octrees.
- Step 102 Obtain coordinate information of the current node when performing octree division on the bounding box of the point cloud to be encoded based on the Morton code sequence;
- the Morton code of the point cloud is first calculated, and then the Morton code from the root node is calculated according to the order of Morton code and Morton code.
- Level 0 Construct a geometric octree.
- the bounding box is divided into 8 sub-cubes in eight equal parts, and the non-empty (including points in the point cloud) sub-cubes are continued to be divided into eight equal parts until the leaf nodes obtained by the division are 1x1x1 unit cubes.
- the Morton code order may be breadth-first traversal order or depth-first convenience order, breadth-first convenience order: when the geometry is divided into an octree, the nodes of the current same layer are first divided until the current layer is divided. All the nodes of, will continue to divide the nodes of the next layer, and finally stop when the leaf nodes obtained by the division are 1x1x1 unit cubes; depth-first traversal order: when the geometry is divided into octrees, the current layer is first The first node of is continuously divided, until the divided leaf node is a 1x1x1 unit cube, stop dividing the current node. According to this sequence, the subsequent nodes of the current layer are divided until the node division on the current layer is completed and stops. That is to say, the point cloud coding method given in the embodiments of the present application may use the neighbor mode of the current node to predict the entropy coding parameters of the child node under the breadth-first traversal order or the depth-first convenience order.
- Figure 4 is a schematic diagram of an exemplary octree division provided by an embodiment of the application; as shown in Figure 4, the 0th layer is the root node, and the layer below the root node (ie the first layer) contains 8 child nodes. The child nodes of the (black solid circle) continue to be divided into eight equal parts to the second layer child nodes, and the division stops when the leaf node obtained by the division is a 1x1x1 unit cube.
- k-th is the k-th point in the point cloud
- the Morton code corresponding to the k-th point can be expressed as follows:
- the nodes of the first layer of the octree are composed of eight nodes.
- the coordinate information of the current node can be determined according to the coordinate information of the points contained in the current node to be encoded.
- Step 103 Determine the first neighbor mode of the current node based on the coordinate information of the current node;
- the entropy coding parameters of the eight child nodes in the current node can be predicted based on the occupancy information of the neighbor nodes that the current node has encoded, and the matching of the child nodes can be used.
- Entropy coding parameters perform entropy coding on child nodes, which can make full use of spatial correlation.
- the actual process of the encoder determining the neighbor node is: the encoder can determine the coordinate information of the neighbor node of the current node based on the three-dimensional Morton code, preset shift parameters, and the coordinate information of the current node. Then determine the occupancy information of neighbor nodes.
- the determining the first neighbor mode of the current node based on the coordinate information of the current node includes: determining the current node based on the coordinate information of the current node and the first neighbor range of the current node The coordinate information of the neighbor node corresponding to the node; determine the occupancy information of the neighbor node based on the coordinate information of the neighbor node; determine the occupancy information of the neighbor node based on the occupancy information of the neighbor node and the preset first neighbor node weight value The first neighbor mode of the current node.
- the first neighbor range defines which neighbor nodes the current node has.
- the first neighbor range includes at least one of the following: neighbor nodes that are coplanar with the current node, neighbor nodes that are collinear with the current node, and neighbor nodes that are coplanar with the current node.
- neighbor nodes that are coplanar with the current node
- neighbor nodes that are collinear with the current node
- neighbor nodes that are coplanar with the current node.
- the current node has 18 neighbor nodes that are coplanar and collinear, and there are 26 neighbor nodes that are coplanar and collinear with the current node.
- the occupancy information is used to characterize whether there is a cloud distribution in the neighbor nodes, and the occupancy information can be represented by a binary number. For example, 0 means empty, no point cloud distribution, 1 means non-empty, point cloud distribution.
- the first neighbor mode represents the location distribution of occupied neighbor nodes within the first neighbor range of the current node.
- the first neighbor node weight value defines the correlation of neighbor nodes at different positions of the current node. The higher the weight value, the higher the correlation with the current node, and the lower the weight value, the lower the correlation with the current node.
- Fig. 5 is a first schematic diagram of an exemplary current node neighbor mode provided by an embodiment of the application; as shown in Fig. 5, in the three-dimensional coordinate system xyz, the current node is a gray square in the figure, and the first neighbor range of the current node It is a neighbor node that is coplanar with the current node.
- the x direction includes the left and right neighbor nodes of the current node
- the y direction includes the upper and lower neighbor nodes of the current node
- the z direction includes the previous and back neighbors of the current node. node.
- set the weight value for the neighbor nodes in different positions according to the correlation between the neighbor node and the current node, set the weight value for the neighbor nodes in different positions.
- the weight value of the left neighbor node is 1, the weight value of the right neighbor node is 2, the weight value of the lower neighbor node is 4, the weight value of the upper neighbor node is 8, and the weight value of the former neighbor node is 16.
- the weight value of the rear neighbor node is 32.
- the neighbor pattern of the current node is calculated according to the spatial relationship shown in FIG. 5, and the neighbor pattern of the current node (neighborPattern) takes a value of 0-63.
- Fig. 6 is a second schematic diagram of an exemplary current node neighbor mode provided by an embodiment of the application.
- the neighbor nodes with occupancy information of 1 include left, right, front, and upper neighbor nodes. According to the weight values of different neighbor nodes in Figure 6, the neighbor mode of the current node is 27.
- Step 104 Determine the entropy coding parameter of the current node based on the first neighbor mode of the current node;
- the first neighbor mode represents the location distribution of occupied neighbor nodes within the first neighbor range of the current node.
- the determining the entropy coding parameter of the current node based on the first neighbor mode of the current node includes: determining the neutron of the current node based on the first neighbor mode of the current node Neighbor information of the node; determining the entropy coding parameter of the child node in the current node based on the neighbor information of the child node in the current node.
- the neighbor information of the child node when determining the context of a child node, first determine the neighbor information of the child node according to the first neighbor mode of the current node (also known as the parent node), and then select the corresponding entropy for the child node based on the neighbor information of the child node Encoding parameters.
- the entropy coding parameter is the child node context index. That is to say, when this application performs entropy coding on the current node, it predicts the context index corresponding to the child node in the current node according to the first neighbor mode of the current node, and determines the context corresponding to the child node according to the context index. Entropy coding is performed on the occupancy information of the sub-nodes, which can make full use of the spatial correlation of the nodes and improve the coding performance.
- the occupancy information of the eight child nodes of the current node respectively correspond to their own independent contexts, that is, the space occupancy code of the node contains eight bits Represents the occupation of the eight child nodes of the node, each bit uses a separate context (context) for entropy encoding, this method can only use 8 contexts for separate encoding when entropy encoding the current node, which is not fully utilized Spatial correlation reduces the coding efficiency of point clouds.
- this application by considering the occupancy information of neighbor nodes, multiple contexts can be set for different child nodes, so that a more appropriate context is selected for each child node to perform entropy coding, which can improve coding performance.
- FIG. 7 is an exemplary schematic diagram of the positional relationship of the child nodes in the current node provided by an embodiment of the application; as shown in FIG. 7, the current node is equally divided into 8 child nodes, and the child node serial numbers are from 0-7, and the encoding order of the child nodes Also from 0-7, the first child node b0 at the front of the lower left corner, and the eighth child node b7 at the rear of the upper right corner.
- the neighbor information is the number of neighbor nodes occupied by the child node or the second neighbor mode of the child node; wherein, the second neighbor mode characterizes that the child node is within the range of the second neighbor of the child node. Occupy the location distribution of neighbor nodes.
- the determining the neighbor information of the child node in the current node based on the first neighbor mode of the current node includes:
- the first mapping table From the preset first mapping table, obtain the number of neighbor nodes occupied by the child nodes corresponding to the first neighbor mode of the current node; wherein, the first mapping table includes at least one type of first neighbors of the current node The mapping relationship between the pattern and the number of neighbor nodes occupied by its child nodes.
- the occupancy information of the neighbor node corresponding to the current node determines the occupancy information of the neighbor node corresponding to the current node; determine the child node based on the occupancy information of the neighbor node corresponding to the current node and the second neighbor range of the child node The number of neighbor nodes occupied by the node.
- the second neighbor range includes at least one of the following: neighbor nodes of the current node coplanar with the child node, neighbor nodes of the current node collinear with the child node, and neighbor nodes of the current node collinear with the child node.
- the bounding box is divided into 8 child cubes in eight equal parts, there are 3 neighbor nodes of the current node (that is, the parent node) that are coplanar with the child nodes, and 3 neighbor nodes of the parent node that are collinear with the child nodes.
- the node has 1 neighbor node in common, 6 neighbor nodes of the parent node that are coplanar and collinear with the child node, and 7 neighbor nodes of the parent node that is coplanar and collinear with the child node.
- the second neighbor range of the child node belongs to a subset of the first neighbor range of the current node.
- the first mapping table can be preset to index the number of neighbor nodes occupied by 8 child nodes according to the first neighbor mode of the parent node.
- the first mapping table may be the two-dimensional neighborPatternToChildNeighborCount[64][8] table of Table 1, which stores the number of neighbor nodes occupied by 8 child nodes corresponding to different neighbor patterns in 64.
- the neighbor nodes here are 6 neighbor nodes whose range is coplanar with the current node, that is, there are 64 neighbor modes. If the range of neighbor nodes changes, the neighbor mode and the corresponding relationship will also change. Refer to the detailed corresponding relationship. Table 1 will not be repeated here.
- the amount of calculation can be reduced and the coding efficiency can be improved.
- This method does not need to establish and store the first mapping table in advance, and can directly determine the number of neighbor nodes occupied by the child node according to the first neighbor mode, and can ignore the impact of the calculation process on the processing performance when the processor has strong computing processing capabilities. Save the process of building a table in the early stage, and save storage space.
- the method for constructing the first mapping table also obtains in advance the number of neighbor nodes occupied by each of the eight child nodes of the current node in different first neighbor modes through the foregoing calculation process, thereby constructing the first mapping table.
- Figures 8a-8h are schematic diagrams 1 of an exemplary neighbor range from the first child node to the eighth child node provided by the embodiments of the application; wherein the second neighbor range of the child node is the neighbor of the parent node that is coplanar with the child node node.
- the first child node b0 to the eighth child node b7 all contain 3 neighbor nodes, and the number of neighbor nodes occupied by each child node is at most 3 and at least 0.
- the number of neighbor nodes occupied by the first child node b0 is 2 through lookup table 1 or calculation; the number of neighbor nodes occupied by the second child node b1 is 1; the third child node The number of occupied neighbor nodes of b2 is 3; the number of neighbor nodes occupied by the fourth child node b3 is 2; the number of neighbor nodes occupied by the fifth child node b4 is 2; the number of neighbor nodes occupied by the sixth node b5 is 1; the seventh child The number of neighbor nodes occupied by node b6 is 3; the number of neighbor nodes occupied by the eighth child node b7 is 2.
- the entropy encoding parameter of the current node is the context index of the child node in the current node; the determining the entropy encoding of the child node in the current node is based on the neighbor information of the child node in the current node
- the parameters include: determining the context index of the child node based on the number of neighbor nodes occupied by the child node in the current node. For example, the number of neighbor nodes occupied by the child node is used as the context index of the child node.
- each child node has 4 kinds of context indexes, that is, each child node corresponds to 4 kinds of contexts, and each child node can be found for each Matching context, thereby improving coding performance.
- the entropy encoding parameter of the current node is the context index of the child node in the current node; the determining the entropy encoding of the child node in the current node is based on the neighbor information of the child node in the current node
- the parameters include: determining the context index of the first child node based on the neighbor information of the first child node in the current node; determining the context index of the first child node based on the neighbor information of the target child node in the current node, and The occupancy information of the encoded child node is determined, and the context index of the target child node is determined; wherein the target child node and the first child node are different nodes.
- the method for determining the context index of a child node specifically includes: determining the context index of the first child node based on the number of neighbor nodes occupied by the first child node in the current node; and based on the current node The number of neighbor nodes occupied by the target child node and the occupancy information of the encoded child node in the current node determine the context index of the target child node; wherein, the target child node and the first child node The nodes are different nodes.
- the first child node when the current node is entropy-encoded, the first child node is first encoded, so the first child node can only determine the context index of the first child node by using the neighbor mode of the current node.
- the target child node is the second child node to the eighth child node.
- the coded child node can also be used as Neighbor nodes of uncoded child nodes. Therefore, using the number of occupied neighbor nodes of the child node to be coded (ie, the target child node) and the occupancy information of the child node to be coded, the context prediction of the child node to be coded is performed together to determine the context index of the child node to be coded, which can provide more information. In order to enrich the context, further improve the coding performance of the target sub-node.
- the method for determining the context index of the first child node specifically includes: using the neighbor information of the first child node as the context index of the first child node; and the occupancy of the coded child node in the current node
- the information and the neighbor information of the target child node constitute a binary index, and the binary index is used as the context index of the target child node.
- the binary index can be used directly to index the corresponding context. It is also possible to turn a binary index into a unary index to index the corresponding context, for example, taking the occupancy information of the encoded child node in the current node as the high order, and the number of neighbor nodes occupied by the target child node as the low order , Obtain the context index of the target child node; or take the second neighbor mode of the target child node as the high order and the occupancy information of the encoded child node as the low order, and calculate the context index of the first child node.
- the context index is the number of neighbor nodes occupied.
- the number of neighbor nodes occupied is 3, then its context index is 3.
- the occupancy information of the encoded child node and the number of occupied neighbor nodes are expressed in binary, and the occupancy information is taken as the high position and the number of occupied neighbor nodes is taken as the low position to obtain its context index. For example, if the number of occupied neighbor nodes is 3, the binary conversion is 0011, and the occupancy information of the encoded child node is 1, then the context index of the merged node is 0111, and the corresponding decimal is 7.
- Table 2 shows the number of contexts of each child node in the current node. Use the neighbor mode of the current node to get the number of occupied neighbors among the 3 neighbors coplanar with each child node in the current node, and save it in chilNeighborCount[8], the number of occupied neighbors among the 3 neighbors of each child node
- the range of values is 0-3.
- the context index of b0 is chilNeighborCount[0], the value range is 0-3, and the number of contexts is 4.
- the context index of b1 is (b0, chilNeighborCount[1]), there are 8 values, that is, the number of contexts is 8, and so on, a total of 1020 contexts are allocated.
- b1 (b0,chilNeighborCount[1]) 8 b2 (b1b0,chilNeighborCount[2]) 16 b3 (b2b1b0,chilNeighborCount[3]) 32 b4 (b3b2b1b0,chilNeighborCount[4]) 64 b5 (b4b3b2b1b0,chilNeighborCount[5]) 128 b6 (b5b4b3b2b1b0,chilNeighborCount[6]) 256 b7 (b6b5b4b3b2b1b0,chilNeighborCount[7]) 512
- Step 105 Perform entropy coding on the occupancy information of the current node based on the entropy coding parameter.
- the entropy encoding parameter is used to index the entropy encoder
- the entropy encoder indexed by the entropy encoding parameter is used to entropy encode the occupancy information of the child node.
- the entropy encoder is established according to the different contexts of the child nodes, and the context of the child node in the embodiment of the present application is equivalent to the entropy encoder of the child node.
- the entropy encoding parameter is the context index of the child node
- the entropy encoding the occupancy information of the current node based on the entropy encoding parameter includes: determining the context index of the child node in the current node The context corresponding to the child node in the current node; entropy coding the occupancy information of the child node in the context corresponding to the child node.
- the encoded occupancy information is written into the geometric code stream, so that the decoding end decodes the occupancy information of the child node in the current node from the geometric code stream.
- Table 3 shows 8 different context sets corresponding to 8 different child nodes. Each context set contains multiple contexts. According to the context index calculated above, determine the corresponding context set used when each child node is actually coded.
- the target context That is to say, the target context corresponding to the child node in Table 3 is determined according to the context index in Table 2, and the occupancy information of the child node is entropy-encoded using the target context to obtain a geometric code stream.
- Context collection Context context0 context0_0-context0_3 context1 context1_0-context1_7 context2 context2_0-context2_15 context3 context3_0-context3_31 context4 context4_0-context4_63 context5 context5_0-context5_127 context6 context6_0-context6_255 context7 context7_0-context7_511
- the determining the neighbor information of each child node in the current node based on the first neighbor mode of the current node includes:
- the second mapping table From the preset second mapping table, obtain the second neighbor mode of the child node corresponding to the first neighbor mode of the current node; wherein, the second mapping table includes at least one first neighbor mode of the current node The mapping relationship of the second neighbor mode of its child nodes.
- the occupancy information of the neighbor node corresponding to the current node based on the occupancy information of the neighbor node corresponding to the current node; based on the occupancy information of the neighbor node corresponding to the current node, the second neighbor range of the child node, and the child
- the second neighbor node weight value preset by the node determines the second neighbor mode of the child node.
- the second neighbor range includes at least one of the following: neighbor nodes of the current node coplanar with the child node, neighbor nodes of the current node collinear with the child node, and neighbors of the current node collinear with the child node.
- the bounding box is divided into 8 child cubes, there are 3 neighbor nodes of the parent node that are coplanar with the child nodes, 3 neighbor nodes of the parent node that are collinear with the child nodes, and neighbors that share the same point with the current node.
- There is 1 node 6 neighbor nodes of the parent node that are coplanar and co-linear with the child node, and 7 neighbor nodes of the parent node that are coplanar and co-linear with the child node.
- the correlation between the neighbor node of the child node and the child node is also considered, and the correlation between the neighbor node and the child node is characterized by setting the weight value for the neighbor node of the child node. The higher the correlation of the current node, the lower the weight value, the lower the correlation with the current node.
- the second neighbor range of the child node belongs to a subset of the first neighbor range of the current node.
- the second mapping table when determining the second neighbor mode of the child node, you can set the second mapping table in advance to index to the second neighbor mode of 8 child nodes according to the first neighbor mode of the parent node. If the current node has 64 neighbor modes, the second mapping table stores the second neighbor modes of the 8 child nodes corresponding to the 64 first neighbor modes. For example, the neighbor node is 6 neighbor nodes that are coplanar with the current node, that is, there are 64 neighbor modes. If the range of neighbor nodes changes, the neighbor mode will also change. The detailed corresponding relationship will not be repeated here.
- the amount of calculation can be reduced and the coding efficiency can be improved.
- the second neighbor mode of the child node can be determined directly according to the first neighbor mode.
- the processor has a strong computing power and can ignore the impact of the calculation process on the processing performance, eliminating the need for pre-construction. Table process and save storage space.
- the method for constructing the second mapping table also obtains in advance the second neighbor modes of the eight child nodes of the current node in different first neighbor modes through the foregoing calculation process, thereby constructing the second mapping table.
- FIG. 9 is a schematic diagram 1 of an exemplary neighbor mode of a second child node provided by an embodiment of the application; as shown in FIG. 9, the weight value of the neighbor node is set according to the direction of the neighbor node, and the weight value of the left neighbor node of the second child node It is 1, the weight value of the neighbor node under the second child node is 2, and the weight value of the back neighbor node is 4.
- the second child node has a total of 8 neighbor modes, and the value range is 0-7. For example, assuming that the first neighbor mode of the current node is 27, the neighbor mode of the second child node is 1.
- the entropy encoding parameter of the current node is the context index of the child node in the current node; the determining the entropy encoding of the child node in the current node is based on the neighbor information of the child node in the current node
- the parameter includes: determining the context index of the child node based on the second neighbor mode of the child node in the current node. For example, the second neighbor mode of the child node is used as the context index of the child node.
- the second child node has 8 neighbor modes
- the second child node has 8 context context indexes, that is, the second child node has 8 contexts
- other child nodes also have 8 contexts, which increases the number of child node contexts. , Can find the matching context for each of the 8 sub-nodes, thereby improving the coding performance.
- the entropy encoding parameter of the current node is the context index of the child node in the current node; the determining the entropy encoding of the child node in the current node is based on the neighbor information of the child node in the current node
- the parameters include: determining the context index of the first child node based on the neighbor information of the first child node in the current node; determining the context index of the first child node based on the neighbor information of the target child node in the current node, and The occupancy information of the encoded child node is determined, and the context index of the target child node is determined; wherein the target child node and the first child node are different nodes.
- the method for determining the context index of a child node specifically includes: determining the context index of the first child node based on the second neighbor mode of the first child node in the current node; The second neighbor mode of the target child node and the occupancy information of the encoded child node in the current node determine the context index of the target child node; wherein the target child node and the first child node are Different nodes.
- the first child node when the current node is entropy-coded, the first child node is first encoded, so the first child node can only determine the context index of the first child node with the help of the neighbor mode of the current node.
- the target child node is the second child node to the eighth child node.
- the coded child node can also be used as Neighbor nodes of uncoded child nodes. Therefore, using the second neighbor mode of the child node to be coded (that is, the target child node) and the occupancy information of the coded child node to jointly predict the context of the child node to be coded and determine the context index of the child node to be coded can provide more abundant information. Context to further improve the coding performance of the target sub-node.
- the method for determining the context index of the first child node specifically includes: using the neighbor information of the first child node as the context index of the first child node; and the occupancy of the coded child node in the current node
- the information and the neighbor information of the target child node constitute a binary index, and the binary index is used as the context index of the target child node.
- the binary index can be used directly to index the corresponding context. It is also possible to turn a binary index into a unary index to index the corresponding context, for example, taking the occupancy information of the encoded child node in the current node as the high order, and the second neighbor mode of the target child node as the low order.
- the context index of the first child node is calculated; or the second neighbor mode of the target child node is taken as the high order, and the occupancy information of the encoded child node is taken as the low order, and the context index of the first child node is calculated.
- the context index is the occupied second neighbor mode.
- the second neighbor mode is 7, and its context index is 7.
- the occupancy information of the encoded child node and the second neighbor mode are both expressed in binary, and the occupancy information is taken as the high position and the second neighbor mode is taken as the low position to obtain its context index, for example, the second Neighbor mode 7, converted to binary is 1111, and the occupancy information of the encoded child node is 1, then the context index of the merged is 11111, and the corresponding decimal is 15.
- Table 4 shows the number of contexts of each child node in the current node. Use the neighbor mode of the current node to obtain the second neighbor mode of each child node in the current node, and save it in chilNeighborMode[8].
- the value range of the second neighbor mode of each child node is 0-7.
- the context index of b0 is chilNeighborMode[0], the value range is 0-7, and the number of contexts is 8.
- the context index of b1 is (b0, chilNeighborMode[1]), there are 16 values, the number of contexts is 16, and so on, a total of 2040 contexts are allocated. Compared with considering the number of occupied neighbors, more context is obtained, which further improves the coding performance.
- Table 5 shows 8 different context sets corresponding to 8 different child nodes. Each context set contains multiple contexts. According to the context index calculated above, determine the corresponding context set used for actual encoding of each child node.
- the target context That is to say, the target context corresponding to the child node in Table 5 is determined according to the context index in Table 4, and the occupancy information of the child node is entropy-encoded using the target context to obtain a geometric code stream.
- Context collection Context context0 context0_0-context0_7 context1 context1_0-context1_15 context2 context2_0-context2_31 context3 context3_0-context3_63 context4 context4_0-context4_127 context5 context5_0-context5_255 context6 context6_0-context6_511 context7 context7_0-context7_1023
- Table 6 shows the performance comparison results of the point cloud coding method of this application and PCEMv1.
- the experimental results show that the algorithm described in this application can improve the coding performance.
- the point-to-point error of the reconstructed point cloud (BD- Rate, D1) performance becomes better, and point-to-surface error (BD-rate, D2) performance becomes better.
- the Peak Signal-to-Noise Ratio (PSNR) is an objective standard for image evaluation. The larger the PSNR, the better the image quality.
- BD-rate is a parameter used to measure performance. When BD-rate is negative, it means performance becomes better. On this basis, the greater the absolute value of BD-rate, the greater the performance gain.
- the neighbor information is the number of occupied neighbor nodes, and the number of neighbors that are coplanar and collinear with the child nodes in the current node's neighbor nodes are used to define the context. There are 7 types in total.
- the first neighbor node range is a neighbor node that is coplanar and collinear with the current node
- the second neighbor range is a neighbor node of the current node that is coplanar and collinear with the child node.
- FIG. 10 is a second schematic diagram of the neighbor range of the second child node provided by the embodiment of the application; as shown in FIG. 10, there are 6 neighbor nodes that are coplanar and collinear with the second child node, and each child node is occupied The maximum number of neighbor nodes is 6, and the minimum is 0, a total of 7 types. Then there are 7 kinds of contexts for each child node; or, the number of contexts for each child node is shown in Table 7.
- the neighbor information is the second neighbor mode of the child node, and the context is defined by the 6 neighbors that are coplanar and collinear with the child node in the neighbor node of the current node.
- the first neighbor node range is a neighbor node that is coplanar and collinear with the current node
- the second neighbor range is a neighbor node of the current node that is coplanar and collinear with the child node.
- FIG. 11 is a second schematic diagram of the neighbor mode of the second child node provided by the embodiment of the application; as shown in FIG. 11, there are 6 neighbor nodes that are coplanar and collinear with the second child node. The sum of the weight values is equal to 63, and the value range of the second neighbor mode of each child node is 0-63, a total of 64 kinds. Then there are 64 kinds of contexts for each child node; or, the number of contexts for each child node is shown in Table 8.
- the neighbor information is the number of occupied neighbor nodes, and the number of neighbors that are coplanar, collinear, and common to the child nodes among the neighbor nodes of the current node are used to define the context, and there are 8 types in total.
- the first neighbor node range is a neighbor node that is coplanar and colinear with the current node
- the second neighbor range is a neighbor node of a parent node that is coplanar and colinear with the current node.
- Fig. 12 is the third schematic diagram of the neighbor range of the second child node according to an embodiment of the application; as shown in Fig. 12, there are 7 neighbor nodes that are coplanar and co-linear with the second child node, so each child node The maximum number of occupied neighbor nodes is 7 and the minimum is 0, a total of 8 types. Then there are 8 kinds of contexts for each child node; or, the number of contexts for each child node is shown in Table 9.
- the neighbor information is the second neighbor mode of the child node, and the occupancy mode of 7 neighbors that are coplanar, collinear and common to the child node among the neighbor nodes of the current node are used to define the context. 128 kinds.
- the first neighbor node range is a neighbor node that is coplanar and colinear with the current node
- the second neighbor range is a neighbor node of the current node that is coplanar and colinear with the child node.
- Fig. 13 is a schematic diagram 3 of an exemplary neighbor mode of the second child node provided by an embodiment of the application; as shown in Fig. 13, there are 7 neighbor nodes that are coplanar and collinear with the second child node. The sum of the weight values is equal to 127, and the value range of the second neighbor mode of each child node is 0-127, a total of 128 kinds. Then there are 128 kinds of contexts for each child node; or, the number of contexts for each child node is shown in Table 10.
- Entropy coding can make good use of the geometric spatial correlation between adjacent nodes, thereby improving geometric coding performance.
- FIG. 14 is a schematic flowchart of a point cloud decoding method provided by an embodiment of the application, which is applied to a decoder. As shown in FIG. 14, the method includes:
- Step 201 Parse the code stream and determine the bounding box of the point cloud to be decoded
- the binary code stream received by the decoder includes high-level syntax elements, geometric code streams, and attribute code streams, and the decoder performs independent decoding for the geometric code streams and attribute code streams in the binary code stream.
- the decoder performs independent decoding for the geometric code streams and attribute code streams in the binary code stream.
- the decoder parses the code stream to obtain the description information of the point cloud bounding box. Further, the bounding box is quantized. This step of quantization mainly plays a role of scaling. Due to the rounding of quantization, the geometric information of some points is the same. According to the parameters, it is determined whether to remove duplicate points, quantize and remove duplicate points. The process is also called the voxelization process.
- multiple different points are quantified as repeated points.
- the multiple duplicate points will be treated as one point; if the parameter indicates not to remove duplicate points, multiple points with the same geometric coordinates , Still treated as multiple points.
- the processed bounding box is divided into octrees.
- Step 202 Obtain coordinate information of the current node when dividing the bounding box of the point cloud to be decoded based on the Morton code sequence;
- the Morton code order may be a breadth-first traversal order or a depth-first convenience order.
- the dividing method of the bounding box of the point cloud to be decoded at the decoding end is the same as that of the encoding end, and will not be repeated here.
- Step 203 Determine the first neighbor mode of the current node based on the coordinate information of the current node;
- this step may specifically include: determining the coordinate information of the neighbor node corresponding to the current node based on the coordinate information of the current node and the first neighbor range of the current node; The coordinate information of the neighbor node determines the occupancy information of the neighbor node; based on the occupancy information of the neighbor node and the preset first neighbor node weight value, the first neighbor mode of the current node is determined.
- the first neighbor range defines which neighbor nodes the current node has.
- the first neighbor range includes at least one of the following: neighbor nodes that are coplanar with the current node, neighbor nodes that are collinear with the current node, and neighbor nodes that are coplanar with the current node.
- neighbor nodes that are coplanar with the current node
- neighbor nodes that are collinear with the current node
- neighbor nodes that are coplanar with the current node.
- the current node has 18 neighbor nodes that are coplanar and collinear, and there are 26 neighbor nodes that are coplanar and collinear with the current node.
- the occupancy information is used to characterize whether there is a cloud distribution in the neighbor nodes, and the occupancy information can be represented by a binary number. For example, 0 means empty, no point cloud distribution, 1 means non-empty, point cloud distribution.
- the first neighbor mode represents the location distribution of occupied neighbor nodes within the first neighbor range of the current node.
- the first neighbor node weight value defines the correlation of neighbor nodes at different positions of the current node. The higher the weight value, the higher the correlation with the current node, and the lower the weight value, the lower the correlation with the current node.
- Step 204 Determine the entropy decoding parameter of the current node based on the first neighbor mode of the current node;
- the determining the entropy decoding parameter of the current node based on the first neighbor mode of the current node includes: determining the neutron of the current node based on the first neighbor mode of the current node Neighbor information of the node; based on the neighbor information of the child node in the current node, determine the entropy decoding parameter of the child node in the current node.
- the neighbor information of the child node when determining the context of a child node, first determine the neighbor information of the child node according to the first neighbor mode of the current node (also known as the parent node), and then select the corresponding entropy for the child node based on the neighbor information of the child node Decoding parameters.
- the entropy decoding parameter is the child node context index. That is to say, when this application performs entropy decoding on the current node, the context index corresponding to each child node in the current node is predicted according to the first neighbor mode of the current node, and the context corresponding to the child node is determined according to the context index. Entropy decoding is performed on the occupancy information of the child nodes in the context, which can make full use of the spatial correlation of the nodes and improve the decoding performance.
- the neighbor information is the number of neighbor nodes occupied by the child node or the second neighbor mode of the child node; wherein, the second neighbor mode characterizes that the child node is within the range of the second neighbor of the child node. Occupy the location distribution of neighbor nodes.
- the determining the neighbor information of the child node in the current node based on the first neighbor mode of the current node includes:
- the first mapping table From the preset first mapping table, obtain the number of neighbor nodes occupied by the child nodes corresponding to the first neighbor mode of the current node; wherein, the first mapping table includes at least one type of first neighbors of the current node The mapping relationship between the pattern and the number of neighbor nodes occupied by its child nodes.
- the occupancy information of the neighbor node corresponding to the current node determines the occupancy information of the neighbor node corresponding to the current node; determine the child node based on the occupancy information of the neighbor node corresponding to the current node and the second neighbor range of the child node The number of neighbor nodes occupied by the node.
- the second neighbor range includes at least one of the following: neighbor nodes of the current node coplanar with the child node, neighbor nodes of the current node collinear with the child node, and neighbors of the current node collinear with the child node.
- the bounding box is divided into 8 child cubes in eight equal parts, there are 3 neighbor nodes of the current node (that is, the parent node) that are coplanar with the child nodes, and 3 neighbor nodes of the parent node that are collinear with the child nodes.
- the node has 1 neighbor node in common, 6 neighbor nodes of the parent node that are coplanar and collinear with the child node, and 7 neighbor nodes of the parent node that is coplanar and collinear with the child node.
- the determining the neighbor information of each child node in the current node based on the first neighbor mode of the current node includes:
- the second mapping table From the preset second mapping table, obtain the second neighbor mode of the child node corresponding to the first neighbor mode of the current node; wherein, the second mapping table includes at least one first neighbor mode of the current node The mapping relationship of the second neighbor mode of its child nodes.
- the occupancy information of the neighbor node corresponding to the current node based on the occupancy information of the neighbor node corresponding to the current node; based on the occupancy information of the neighbor node corresponding to the current node, the second neighbor range of the child node, and the child
- the second neighbor node weight value preset by the node determines the second neighbor mode of the child node.
- the second neighbor range includes at least one of the following: neighbor nodes of the current node coplanar with the child node, neighbor nodes of the current node collinear with the child node, and neighbors of the current node collinear with the child node.
- the bounding box is divided into 8 child cubes, there are 3 neighbor nodes of the parent node that are coplanar with the child nodes, 3 neighbor nodes of the parent node that are collinear with the child nodes, and neighbors that share the same point with the current node.
- There is 1 node 6 neighbor nodes of the parent node that are coplanar and co-linear with the child node, and 7 neighbor nodes of the parent node that are coplanar and co-linear with the child node.
- the second neighbor range of the child node belongs to a subset of the first neighbor range of the current node.
- the entropy decoding parameter of the current node is the context index of the child node in the current node; and the entropy decoding parameter of the child node in the current node is determined based on the neighbor information of the child node in the current node
- the parameters include: determining the context index of the child node based on the number of neighbor nodes occupied by the child node in the current node. For example, the number of neighbor nodes occupied by the child node is used as the context index of the child node.
- each child node has 4 kinds of context indexes, that is, each child node corresponds to 4 kinds of contexts, and each child node can be found for each Matching context, thereby improving decoding performance.
- the entropy decoding parameter of the current node is the context index of the child node in the current node; the determining the entropy decoding of the child node in the current node is based on the neighbor information of the child node in the current node
- the parameters include: determining the context index of the first child node based on the neighbor information of the first child node in the current node; determining the context index of the first child node based on the neighbor information of the target child node in the current node, and The occupancy information of the child node has been decoded, and the context index of the target child node is determined; wherein the target child node and the first child node are different nodes.
- the first child node is first decoded when the current node is entropy decoded, so the first child node can only determine the context index of the first child node with the help of the neighbor mode of the current node.
- the target child node is the second child node to the eighth child node.
- the decoded child node can also be used as The neighbor node of the undecoded child node. Therefore, using the number of occupied neighbor nodes of the child node to be decoded (that is, the target child node) and the information about the occupancy of the decoded child node to jointly predict the context of the child node to be decoded and determine the context index of the child node to be decoded can provide more information. In order to enrich the context, further improve the decoding performance of the target child node.
- the method for determining the context index of the first child node specifically includes: using the neighbor information of the first child node as the context index of the first child node; and the position of the decoded child node in the current node
- the information and the neighbor information of the target child node constitute a binary index, and the binary index is used as the context index of the target child node.
- the binary index can be used directly to index the corresponding context. It is also possible to turn a binary index into a unary index to index the corresponding context, for example, taking the occupancy information of the decoded child node in the current node as the high order, and the number of neighbor nodes occupied by the target child node as the low order , Obtain the context index of the target child node; or take the second neighbor mode of the target child node as the high order and the occupancy information of the decoded child node as the low order, and calculate the context index of the first child node.
- the neighbor information is the second neighbor mode of the child node
- the determining the neighbor information of each child node in the current node based on the first neighbor mode of the current node includes:
- the second mapping table From the preset second mapping table, obtain the second neighbor mode of the child node corresponding to the first neighbor mode of the current node; wherein, the second mapping table includes at least one first neighbor mode of the current node The mapping relationship of the second neighbor mode of its child nodes.
- the occupancy information of the neighbor node corresponding to the current node based on the occupancy information of the neighbor node corresponding to the current node; based on the occupancy information of the neighbor node corresponding to the current node, the second neighbor range of the child node, and the child
- the second neighbor node weight value preset by the node determines the second neighbor mode of the child node.
- the second neighbor range includes at least one of the following: neighbor nodes of the current node coplanar with the child node, neighbor nodes of the current node collinear with the child node, and neighbors of the current node collinear with the child node.
- the bounding box is divided into 8 sub-cubes, there are 3 neighbor nodes of the current node that are coplanar with the child nodes, 3 neighbor nodes of the parent node that are collinear with the child nodes, and neighbors that share the same point with the current node.
- There is 1 node 6 neighbor nodes of the parent node that are coplanar and co-linear with the child node, and 7 neighbor nodes of the parent node that are coplanar and co-linear with the child node.
- the correlation between the neighbor node of the child node and the child node is also considered, and the correlation between the neighbor node and the child node is characterized by setting the weight value for the neighbor node of the child node. The higher the correlation of the current node, the lower the weight value, the lower the correlation with the current node.
- the second neighbor range of the child node belongs to a subset of the first neighbor range of the parent node.
- the entropy decoding parameter of the current node is the context index of the child node in the current node; the determining the entropy decoding of the child node in the current node is based on the neighbor information of the child node in the current node
- the parameter includes: determining the context index of the child node based on the second neighbor mode of the child node in the current node.
- the second neighbor mode of the child node is used as the context index of the child node.
- the second child node has 8 neighbor modes
- the second child node has 8 context context indexes, that is, the second child node has 8 contexts
- other child nodes also have 8 contexts, which increases the number of child node contexts. , It can find the matching context for each of the 8 sub-nodes, thereby improving the decoding performance.
- the entropy decoding parameter of the current node is the context index of the child node in the current node; and the entropy decoding parameter of the child node in the current node is determined based on the neighbor information of the child node in the current node
- the parameters include: determining the context index of the first child node based on the neighbor information of the first child node in the current node; determining the context index of the first child node based on the neighbor information of the target child node in the current node, and The occupancy information of the child node has been decoded, and the context index of the target child node is determined; wherein the target child node and the first child node are different nodes.
- the first child node is first decoded when the current node is entropy decoded, so the first child node can only determine the context index of the first child node with the help of the neighbor mode of the current node.
- the target child node is the second child node to the eighth child node.
- the decoded child node can also be used as The neighbor node of the undecoded child node. Therefore, using the second neighbor mode of the child node to be decoded (ie, the target child node) and the information about the occupancy of the decoded child node to jointly predict the context of the child node to be decoded and determine the context index of the child node to be decoded can provide more abundant information. Context, further improve the decoding performance of the target child node.
- the method for determining the context index of the first child node specifically includes: using the neighbor information of the first child node as the context index of the first child node; and the position of the decoded child node in the current node
- the information and the neighbor information of the target child node constitute a binary index, and the binary index is used as the context index of the target child node.
- the binary index can be used directly to index the corresponding context. It is also possible to turn the binary index into a unary index to index the corresponding context, for example, taking the occupancy information of the decoded child node in the current node as the high order, and the second neighbor mode of the target child node as the low order.
- the context index of the first child node is calculated; or the second neighbor mode of the target child node is taken as the high order, and the occupancy information of the decoded child node is taken as the low order, and the context index of the first child node is calculated.
- the decoding end according to the different neighbor information of each child node, it also contains another four different neighbor node context index determination schemes for each child node. These four schemes are the same as the decoding end and will not be repeated here.
- Step 205 Perform entropy decoding on the occupancy information of the current node based on the entropy decoding parameter.
- Entropy decoding can make good use of the geometric spatial correlation between adjacent nodes, thereby improving geometric decoding performance.
- FIG. 15 is a schematic diagram of the first composition structure of the encoder in an embodiment of the present application.
- the encoder 50 includes:
- the first determining unit 501 is configured to determine the bounding box of the point cloud to be encoded
- the first obtaining unit 502 is configured to obtain the coordinate information of the current node when the bounding box of the point cloud to be coded is divided into an octree based on the Morton code sequence;
- the first processing unit 503 is configured to determine the first neighbor mode of the current node based on the coordinate information of the current node;
- the first prediction unit 504 is configured to determine the entropy coding parameter of the current node based on the first neighbor mode of the current node;
- the encoding unit 505 is configured to perform entropy encoding on the occupancy information of the current node based on the entropy encoding parameter.
- the first processing unit 503 is configured to determine the coordinate information of the neighbor node corresponding to the current node based on the coordinate information of the current node and the first neighbor range of the current node;
- the coordinate information of the neighbor node determines the occupancy information of the neighbor node; and the first neighbor mode of the current node is determined based on the occupancy information of the neighbor node and a preset first neighbor node weight value.
- the first neighbor range includes at least one of the following: neighbor nodes that are coplanar with the current node, neighbor nodes that are collinear with the current node, and neighbor nodes that are coplanar with the current node.
- the first neighbor mode characterizes the location distribution of occupied neighbor nodes within the first neighbor range of the current node.
- the first prediction unit 504 is configured to determine the neighbor information of the child node in the current node based on the first neighbor mode of the current node; based on the neighbor information of the child node in the current node Information to determine the entropy coding parameters of the child nodes in the current node.
- the neighbor information is the number of neighbor nodes occupied by the child node or the second neighbor mode of the child node; wherein, the second neighbor mode represents the range of the second neighbor of the child node The location distribution of occupied neighbor nodes within.
- the first prediction unit 504 is configured to obtain the first mapping table of the current node from a preset first mapping table.
- the first prediction unit 504 is configured to determine the occupancy information of the neighbor node corresponding to the current node based on the first neighbor mode of the current node; based on the occupancy information and child nodes of the neighbor node corresponding to the current node
- the second neighbor range determines the number of neighbor nodes occupied by the child node.
- the neighbor information is the second neighbor mode of the child node
- the first prediction unit 504 is configured to obtain the second neighbor mode of the child node corresponding to the first neighbor mode of the current node from a preset second mapping table; wherein, the second mapping table includes at least one The mapping relationship between the first neighbor mode of the current node and the second neighbor mode of its child nodes.
- the first prediction unit 504 is configured to determine the occupancy information of the neighbor node corresponding to the current node based on the first neighbor mode of the current node;
- the second neighbor range of the node and the second neighbor node weight value preset by the child node determine the second neighbor mode of the child node.
- the second neighbor range includes at least one of the following: a neighbor node of the current node that is coplanar with the child node, a neighbor node of the current node that is collinear with the child node, and the child node Neighbors of the current node that are collinear.
- the entropy coding parameter of the current node is the context index of the child node in the current node;
- the first prediction unit 504 is configured to be based on neighbor information of the first child node in the current node, Determining the context index of the first child node; determining the context index of the target child node based on the neighbor information of the target child node in the current node and the occupancy information of the coded child node in the current node; Wherein, the target child node and the first child node are different nodes.
- the first prediction unit 504 is configured to use the neighbor information of the first child node as the context index of the first child node.
- the first prediction unit 504 is configured to use the occupancy information of the encoded child node in the current node and the neighbor information of the target child node to form a binary index, and the binary index As the context index of the target child node; or, taking the occupancy information of the encoded child node in the current node as the high order and the neighbor information of the target child node as the low order to obtain the context index of the target child node.
- the decoding unit 505 is configured to determine the context corresponding to the child node in the current node based on the context index of the child node in the current node; Bit information is entropy coded.
- the Morton code order is a breadth-first traversal order or a depth-first convenience order.
- FIG. 16 is a schematic diagram of the second composition structure of the encoder in an embodiment of the present application.
- the encoder 50 includes: a first memory 506 and a first processor 507;
- the first memory 506 stores a computer program that can be run on the first processor 507, and the point cloud encoding method on the encoder side when the first processor 507 executes the program.
- the encoder uses the neighbor mode of the current node during the entropy coding process, that is, the position distribution of the neighbor nodes occupied by the current node, and predicts the entropy coding parameters of the child nodes in the current node.
- Entropy coding parameters perform entropy coding on the occupancy information of child nodes, which can make good use of the geometric spatial correlation between adjacent nodes, thereby improving geometric decoding performance.
- FIG. 17 is a schematic diagram of the first composition structure of the decoder in an embodiment of the present application.
- the decoder 60 includes:
- the parsing unit 601 is configured to parse the code stream and determine the bounding box of the point cloud to be decoded;
- the second obtaining unit 602 is configured to obtain coordinate information of the current node when dividing the bounding box of the point cloud to be decoded based on the Morton code sequence;
- the second processing unit 603 is configured to determine the first neighbor mode of the current node based on the coordinate information of the current node;
- the second prediction unit 604 is configured to determine the entropy decoding parameter of the current node based on the first neighbor mode of the current node;
- the decoding unit 605 is configured to perform entropy decoding on the occupancy information of the current node based on the entropy decoding parameter.
- the second processing unit 603 is configured to determine the coordinate information of the neighbor node corresponding to the current node based on the coordinate information of the current node and the first neighbor range of the current node;
- the coordinate information of the neighbor node determines the occupancy information of the neighbor node; and the first neighbor mode of the current node is determined based on the occupancy information of the neighbor node and a preset first neighbor node weight value.
- the first neighbor range includes at least one of the following: neighbor nodes that are coplanar with the current node, neighbor nodes that are collinear with the current node, and neighbor nodes that are coplanar with the current node.
- the first neighbor mode characterizes the location distribution of occupied neighbor nodes within the first neighbor range of the current node.
- the second prediction unit 604 is configured to determine the neighbor information of the child node in the current node based on the first neighbor mode of the current node; based on the neighbor information of the child node in the current node Information to determine the entropy decoding parameters of the child nodes in the current node.
- the neighbor information is the number of neighbor nodes occupied by the child node or the second neighbor mode of the child node; wherein, the second neighbor mode represents the range of the second neighbor of the child node The location distribution of occupied neighbor nodes within.
- the second prediction unit 604 is configured to obtain the first mapping table of the current node from a preset first mapping table.
- the second prediction unit 604 is configured to determine the occupancy information of the neighbor node corresponding to the current node based on the first neighbor mode of the current node; based on the occupancy information and child nodes of the neighbor node corresponding to the current node The second neighbor range determines the number of neighbor nodes occupied by the child node.
- the second prediction unit 604 when the neighbor information is the second neighbor mode of the child node, the second prediction unit 604 is configured to obtain the first neighbor of the current node from a preset second mapping table The second neighbor mode of the child node corresponding to the mode; wherein the second mapping table includes at least one mapping relationship between the first neighbor mode of the current node and the second neighbor mode of its child nodes.
- the second prediction unit 604 is configured to determine the occupancy information of the neighbor node corresponding to the current node based on the first neighbor mode of the current node; The second neighbor range of the node and the second neighbor node weight value preset by the child node determine the second neighbor mode of the child node.
- the second neighbor range includes at least one of the following: a neighbor node of the current node that is coplanar with the child node, a neighbor node of the current node that is collinear with the child node, and the child node Neighbors of the current node that are collinear.
- the entropy decoding parameter of the current node is the context index of the child node in the current node;
- the second prediction unit 604 is configured to be based on the neighbor information of the first child node in the current node, Determining the context index of the first child node; determining the context index of the target child node based on the neighbor information of the target child node in the current node and the occupancy information of the decoded child node in the current node; Wherein, the target child node and the first child node are different nodes.
- the second prediction unit 604 is configured to use the neighbor information of the first child node as the context index of the first child node.
- the second prediction unit 604 is configured to use the occupancy information of the decoded child node in the current node and the neighbor information of the target child node to form a binary index, and the binary index As the context index of the target child node; or, taking the occupancy information of the decoded child node in the current node as the high order and the neighbor information of the target child node as the low order to obtain the context index of the target child node.
- the decoding unit 605 is configured to determine the context corresponding to the child node in the current node based on the context index of the child node in the current node; The bit information is entropy-decoded to obtain the occupancy information of the child node.
- the Morton code order is a breadth-first traversal order or a depth-first convenience order.
- FIG. 18 is a schematic diagram of the second composition structure of the decoder in the embodiment of the present application.
- the decoder 60 includes: a second memory 606 and a second processor 607;
- the second memory 606 stores a computer program that can be run on the second processor 607, and a point cloud decoding method on the decoder side when the second processor 607 executes the program.
- the decoder uses the neighbor mode of the current node, that is, the position distribution of the neighbor nodes occupied by the current node, to predict the entropy decoding parameters of the child nodes in the current node, and use the prediction obtained Entropy decoding parameters perform entropy decoding on the occupancy information of child nodes, which can make good use of the geometric spatial correlation between adjacent nodes, thereby improving geometric decoding performance.
- the functional modules in this embodiment may be integrated into one processing unit, or each unit may exist alone physically, or two or more units may be integrated into one unit.
- the above-mentioned integrated unit can be realized in the form of hardware or software function module.
- an embodiment of the present application provides a storage medium on which a computer program is stored.
- the computer program is executed by a first processor, the point cloud encoding method of the encoder is realized; or, the computer program is processed by the second processor.
- the decoder is executed, the point cloud decoding method of the decoder is realized.
- a point cloud coding and decoding method, encoder, decoder, and storage medium include: determining a bounding box of the point cloud to be encoded/decoded; and based on the Morton code sequence, the bounding box of the point cloud to be encoded/decoded
- obtain the coordinate information of the current node obtain the coordinate information of the current node; determine the first neighbor mode of the current node based on the coordinate information of the current node; determine the entropy coding parameter/entropy decoding parameter of the current node based on the first neighbor mode of the current node ; Entropy coding/entropy decoding is performed on the occupancy information of the current node based on the entropy coding parameter/entropy decoding parameter.
- Entropy coding/entropy decoding parameters for node occupancy information can make good use of the geometric spatial correlation between adjacent nodes for coding and decoding, so as to improve geometric coding and decoding performance.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请实施例提供了一种点云编解码方法、编码器、解码器及存储介质,包括:确定待编码/解码点云的包围盒;基于莫顿码顺序对待编码/解码点云的包围盒进行八叉树划分时,获取当前节点的坐标信息;基于坐标信息确定第一邻居模式;基于第一邻居模式,确定当前节点的熵编码参数/熵解码参数;基于熵编码参数/熵解码参数对当前节点的占位信息进行熵编码/熵解码。这样,利用第一邻居模式,即当前节点被占用邻居节点的位置分布,对当前节点中子节点的熵编码参数/熵解码参数进行预测,利用预测得到的熵编码参数/熵解码参数对子节点的占位信息进行熵编码/熵解码参数,很好地利用相邻节点之间的几何空间相关性进行编解码,来提升几何编解码性能。
Description
本申请实施例涉及视频图像处理技术,涉及但不限于点云编解码方法、编码器、解码器及存储介质。
在点云编解码器框架中,例如,信源编码标准(Audio Video coding Standard,AVS)、动态图像专家组(Motion Picture Expert Group,MPEG)的点云压缩(Geometry-based Point Cloud Compression,G-PCC)编码框架,点云的几何信息和每点所对应的属性信息是分开编码的。首先对几何信息进行坐标转换,使点云全都包含在一个bounding box(包围盒)中。然后再进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点的几何信息相同,根据参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化过程。接下来,对bounding box进行八叉树划分。在基于八叉树的几何信息编码框架中,将包围盒八等分为8个子立方体,对非空的(包含点云中的点)子立方体继续进行八等分,直到划分得到的叶子结点为1x1x1的单位立方体时停止划分,对叶子结点中的点进行编码,生成二进制码流。目前点云编解码标准中几何划分顺序包括广度优先遍历顺序,具体的,对几何进行八叉树划分时,首先对当前同一层的节点进行划分,直至划分完当前层上的所有节点,才会继续划分下一层的节点,最终当划分得到的叶子结点为1x1x1的单位立方体时停止划分。
然而,现有的点云编解码标准中在进行几何八叉树划分时,每个子节点的占位信息分别对应各自独立的上下文(context),没有充分利用空间相关性,降低了点云的编解码效率。
发明内容
本申请实施例提供了一种点云编解码方法、编码器、解码器及存储介质,能够充分利用节点之间的几何空间相关性进行编解码,来提升几何编解码性能。
第一方面,本申请实施例提供了一种点云编码方法,应用于编码器,所述方法包括:
确定待编码点云的包围盒;
基于莫顿码顺序对所述待编码点云的包围盒进行八叉树划分时,获取当前节点的坐标信息;
基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式;
基于所述当前节点的第一邻居模式,确定所述当前节点的熵编码参数;
基于所述熵编码参数对所述当前节点的占位信息进行熵编码。
第二方面,本申请提供了一种点云解码方法,应用于解码器,该方法包括:
解析码流,确定待解码点云的包围盒;
基于莫顿码顺序,对所述待解码点云的包围盒进行划分时,获取当前节点的坐标信息;
基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式;
基于所述当前节点的第一邻居模式,确定所述当前节点的熵解码参数;
基于所述熵解码参数对所述当前节点的占位信息进行熵解码。
第三方面,本申请实施例提供了一种编码器,包括:
第一确定单元,配置为确定待编码点云的包围盒;
第一获取单元,配置为基于莫顿码顺序对所述待编码点云的包围盒进行八叉树划分时,获取当前节点的坐标信息;
第一处理单元,配置为基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式;
第一预测单元,配置为基于所述当前节点的第一邻居模式,确定所述当前节点的熵编码参数;
编码单元,配置为基于所述熵编码参数对所述当前节点的占位信息进行熵编码。
第四方面,本申请实施例提供了一种解码器,包括:
解析单元,配置为解析码流,确定待解码点云的包围盒;
第二获取单元,配置为基于莫顿码顺序,对所述待解码点云的包围盒进行划分时,获取当前节点的坐标信息;
第二处理单元,配置为基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式;
第二预测单元,配置为基于所述当前节点的第一邻居模式,确定所述当前节点的熵解码参数;
解码单元,配置为基于所述熵解码参数对所述当前节点的占位信息进行熵解码。
第五方面,本申请实施例还提供了一种编码器,包括:第一存储器和第一处理器;所述第一存储器存储有可在第一处理器上运行的计算机程序,所述第一处理器执行所述程序时实现编码器的所述点云编码方法。
第六方面,本申请实施例还提供了一种解码器,包括:第二存储器和第二处理器;所述第二存储器存储有可在第二处理器上运行的计算机程序,所述第二处理器执行所述程序时实现解码器的所述点云解码方法。
第七方面,本申请实施例提供了一种存储介质,包括:其上存储有计算机程序,该计算机程序被第一处理器执行时,实现编码器的所述点云编码方法;或者,该计算机程序被第二处理器执行时,实现解码器的所述点云解码方法。
本申请实施例提供了一种点云编解码方法、编码器、解码器及存储介质,包括:确定待编码点云的包围盒;基于莫顿码顺序对所述待编码点云的包围盒进行八叉树划分时,获取当前节点的坐标信息;基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式;基于所述当前节点的第一邻居模式,确定所述当前节点的熵编码参数;基于所述熵编码参数对所述当前节点的占位信息进行熵编码。这样,利用当前节点的邻居模式,即当前节点被占用邻居节点的位置分布,对当前节点中子节点的熵编码参数进行预测,利用预测得到的熵编码参数对子节点的占位信息进行熵编码,可以很好地利用相邻节点之间的几何空间相关性进行编解码,来提升几何编解码性能。。
图1为本申请实施例提供的示例性的编码流程框图;
图2为本申请实施例提供的示例性的解码流程框图;
图3为本申请实施例提供的点云编码方法的流程示意图;
图4为本申请实施例提供的示例性的八叉树划分示意图;
图5为本申请实施例提供的示例性的当前节点邻居模式的第一示意图;
图6为本申请实施例提供的示例性的当前节点邻居模式的第二示意图;
图7为本申请实施例提供的示例性的当前节点中子节点的位置关系示意图;
图8a-图8h为本申请实施例提供的示例性的第一子节点到第八子节点的邻居范围示意图一;
图9为本申请实施例提供的示例性的第二子节点的邻居模式示意图一;
图10为本申请实施例提供的示例性的第二子节点的邻居范围示意图二;
图11为本申请实施例提供的示例性的第二子节点的邻居模式示意图二;
图12为本申请实施例提供的示例性的第二子节点的邻居范围示意图三;
图13为本申请实施例提供的示例性的第二子节点的邻居模式示意图三;
图14为本申请实施例提供的点云解码方法的流程示意图;
图15为本申请实施例中编码器的第一组成结构示意图;
图16为本申请实施例中编码器的第二组成结构示意图;
图17为本申请实施例中解码器的第一组成结构示意图;
图18为本申请实施例中解码器的第二组成结构示意图。
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
图1为本申请实施例提供的示例性的编码流程框图,如图1所示,点云的编码过程中对的几何信息和每个点云所对应的属性信息是分开进行编码的。在对几何信息的编码过程中,对几何位置进行坐标转换,使点云全都包含在一个bounding box(包围盒)中,然后再进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点云的几何信息相同,于是在基于参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化过程。接着对bounding box进行八叉树划分。在基于八叉树的几何位置编码流程中,将包围盒八等分为8个子立方体,对非空的(包含点云中的点)的子立方体继续进行八等分,直到划分得到的叶子结点为1x1x1的单位立方体时停止划分,对叶子结点中的点进行熵编码,生成几何码流。
在属性编码过程中,对几何信息进行重建。目前,属性编码主要针对颜色、反射率信息进行。首先判断是否进行颜色空间转换,若进行颜色空间转换,则将颜色信息从RGB颜色空间转换到YUV颜色空 间。然后,利用原始点云对重建点云进行重着色,使得未编码的属性信息与重建的几何信息对应起来。在颜色信息编码中,用莫顿码对点云进行一个排序后,直接进行后项差分预测,最后对预测残差进行量化并编码,生成属性码流。
高层语法元素、几何码流和属性码流组成三维图像的二进制码流,编码器发送二进制码流到解码器。
图2为本申请实施例提供的示例性的解码流程框图;如图2所示,解码器获取二进制码流,针对二进制码流中的几何码流和属性码流分别进行独立解码。在对几何码流的解码时,通过熵解码-八叉树重建-逆坐标量化-逆坐标平移,得到点云的几何信息;在对属性码流的解码时,通过熵解码-逆量化-属性重建-逆空间转换,得到点云的属性信息,基于几何信息和属性信息还原点云数据的三维图像模型。
在本申请实施例提供的一种点云编解码方法主要作用于图1和图2中虚线框围住的熵编码部分和熵解码部分。
基于上述介绍的背景下,下面分别介绍本申请实施例提供的点云编码方法和点云解码方法。
本申请实施例提供了一种点云编码方法,应用于编码器,如图3所示,该方法可以包括:
步骤101:确定待编码点云的包围盒;
在本申请实施例中,针对一个三维图像模型的编码处理过程中,获取待编码的三维图像模型在空间中点云数据,点云数据中包含了三维图像模型的几何信息和属性信息。在对三维图像模型进行编码的过程中,点云的几何信息和每个点所对应的属性信息是分开进行编码的。在几何信息编码时采用本申请实施例提供的点云编码方法实现。
具体的,在对几何信息的编码过程中,对几何位置进行坐标转换,使点云全都包含在一个bounding box(包围盒)中。
进一步的,对包围盒进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点的几何信息相同,根据参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化过程。
这里,对原始点云进行量化时,会将多个不同的点量化为重复点。当出现多个重复点时,若参数指示进行重复点移除时,则会将多个重复点当做一个点进行处理;若参数指示不进行重复点移除时,则多个几何坐标相同的点,仍然当做多个点来处理。接下来对处理后的包围盒进行八叉树划分。
步骤102:基于莫顿码顺序对所述待编码点云的包围盒进行八叉树划分时,获取当前节点的坐标信息;
本申请实施例中,对点云的包围盒进行八叉树划分时,首先计算点云的莫顿码,然后依据莫顿码和莫顿码顺序从根节点
(第0层)构建几何八叉树。包围盒八等分为8个子立方体,对非空的(包含点云中的点)的子立方体继续进行八等分,直到划分得到的叶子结点为1x1x1的单位立方体时停止划分。
这里,所述莫顿码顺序可以为广度优先遍历顺序或者深度优先便利顺序,广度优先便利顺序:对几何进行八叉树划分时,首先对当前同一层的节点进行划分,直至划分完当前层上的所有节点,才会继续划分下一层的节点,最终当划分得到的叶子结点为1x1x1的单位立方体时停止划分;深度优先遍历顺序:对几何进行八叉树划分时,首先会对当前层的第一个节点进行不断地划分,直到划分得到的叶子结点为1x1x1的单位立方体时停止划分当前节点。按照该顺序,对当前层后续的节点进行划分,直至当前层上的节点划分完成停止。也就是说,本申请实施例给出的点云编码方法,即可以在广度优先遍历顺序下,也可以在深度优先便利顺序下,利用当前节点的邻居模式预测子节点的熵编码参数。
图4为本申请实施例提供的示例性的八叉树划分示意图;如图4所示,第0层为根节点,根节点下一层(即第1层)包含8个子节点,对非空的(黑色实心圆)的子节点继续进行八等分的到第2层子节点,直到划分得到的叶子结点为1x1x1的单位立方体时停止划分。
假设点云中点的几何位置用三维笛卡尔坐标(X,Y,Z)表示。用N比特来表示每个坐标值,k-th点的坐标(X
k,Y
k,Z
k)可以表示成如下:
k-th为点云中第k个点,k-th点对应的莫顿码可以表示如下:
具体划分过程如下:
…
则,八叉树第一层的节点由此八个节点构成。
3、根据几何位置的莫顿码的第1个八进制数
对第一层中被占用的节点
进一步划分成八个子节点;并用八个比特
表示其子节点的占用信息(ln是被占用节点的序号,n=0,1,...,N
1-1,N
1表示第一层被占用的节点数。)
4、
再根据几何位置的莫顿码的第t个八进制数
对t=2,3,...,N-2层中被占用的节点进一步划分成八个子节点;并用八个比特
表示其子节点的占用信息(ln是被占用节点的序号,n=0,1,...,N
t-1,N
t表示第t层被占用的节点数。)
5、第t=N-1层所有的节点成为叶节点。如果编码器通过配置参数允许重复点,需要在码流中记录每个被占用的叶节点上的重复点数,如果编码器通过配置参数不允许重复点,则每个被占用的叶节点上的重复点当一个点来处理。
本申请实施例中,编码器在对点云的包围盒进行八叉树划分时,根据待编码当前节点中所包含点的坐标信息,可以确定当前节点的坐标信息。
步骤103:基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式;
由于空间中相邻节点之间具有高度相关性,因此可以根据当前节点已编码的邻居节点的占位信息,在对当前节点中的8个子节点的熵编码参数进行预测,利用与子节点匹配的熵编码参数对子节点进行熵编码,可以充分充分利用空间相关性。
在本申请的一些实施例中,编码器确定出邻居节点实际过程为:编码器可以基于三维莫顿码、预设移位参数和当前节点的坐标信息,确定当前节点的邻居节点的坐标信息,进而确定邻居节点的占位信息。
具体的,所述基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式,包括:基于所述当前节点的坐标信息和所述当前节点的第一邻居范围,确定所述当前节点对应的邻居节点的坐标信息;基于所述邻居节点的坐标信息,确定邻居节点的占位信息;基于所述邻居节点的占位信息,以及预设的第一邻居节点权重值,确定所述当前节点的第一邻居模式。
其中,第一邻居范围定义了当前节点有哪些邻居节点。比如,述第一邻居范围包括以下至少一项:与当前节点共面的邻居节点、与当前节点共线的邻居节点、与当前节点共点的邻居节点。对于将包围盒八等分为8个子立方体时,与当前节点共面的邻居节点有6个,与当前节点共线的邻居节点有12个,与当前节点共点的邻居节点有8个,与当前节点共面共线的邻居节点有18个,与当前节点共面共线及共点的邻居节点有26个。
占位信息用于表征邻居节点内是否有点云分布,占位信息可以由二进制数表示。例如,0表示空,无点云分布,1表示非空,有点云分布。
第一邻居模式表征在所述当前节点的所述第一邻居范围内被占用邻居节点的位置分布。第一邻居节点权重值定义了当前节点不同位置的邻居节点的相关性,权重值越高与当前节点的相关性越高,权重值越低与当前节点的相关性越低。
图5为本申请实施例提供的示例性的当前节点邻居模式的第一示意图;如图5所示,在三维坐标系xyz中,当前节点为图中灰色四方体,当前节点的第一邻居范围为与当前节点共面的邻居节点,x方向包含当前节点的左邻居节点和右邻居节点,y方向包含当前节点的上邻居节点和下邻居节点,z方向包含当前节点的前邻居节点和后邻居节点。并且按照邻居节点与当前节点的相关性,为不同位置的邻居节点设置权重值。比如,图5中左邻居节点的权重值为1,右邻居节点的权重值为2,下邻居节点的权重值为4,上邻居节点的权重值为8,前邻居节点的权重值为16,后邻居节点的权重值为32。根据如图5所示的空间关系计算当前节点的邻居模式,当前节点的邻居模式(neighborPattern)取值为0-63。
图6为本申请实施例提供的示例性的当前节点邻居模式的第二示意图,占位信息为1的邻居节点有 左、右、前、上邻居节点。根据图6中不同邻居节点的权重值,得到当前节点的邻居模式为27。
步骤104:基于所述当前节点的第一邻居模式,确定所述当前节点的熵编码参数;
本申请实施例中,第一邻居模式表征在所述当前节点的所述第一邻居范围内被占用邻居节点的位置分布。在对当前节点进行熵编码时,利用已编码的邻居节点占位信息对当前节点中的8个子节点的熵编码参数进行预测,即利用节点之间的相关性为不同节点选择对应的上下文,从而充分利用空间相关性。
本申请一些实施例中,所述基于所述当前节点的第一邻居模式,确定所述当前节点的熵编码参数,包括:基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息;基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵编码参数。
也就是说,在确定子节点的上下文时,先根据当前节点(也可以称为父节点)的第一邻居模式,确定子节点的邻居信息,再根据子节点的邻居信息为其选择对应的熵编码参数。
本申请一些实施例中,熵编码参数为子节点上下文索引。也就是说,本申请在对当前节点进行熵编码时,根据当前节点的第一邻居模式预测当前节点中子节点对应的上下文索引,根据上下文索引确定子节点对应的上下文,在子节点对应的上下文中子节点的占位信息进行熵编码,能够充分利用节点空间相关性,提高编码性能。
需要说明的是,现有技术中当前节点的八个子节点的占位信息分别对应各自独立的上下文(context),即节点的空间占用码包含八个比特
分别表示该节点的八个子节点占用的情况,对每个比特使用单独的上下文(context)进行熵编码,这种方法对当前节点进行熵编码时只能使用8个上下文进行单独编码,没有充分利用空间相关性,降低了点云的编码效率。然而本申请中通过考虑邻居节点的占位信息,可以为不同子节点设置多个上下文,从而为每个子节点选择更加合适的上下文进行熵编码,能够提高编码性能。
图7为本申请实施例提供的示例性的当前节点中子节点的位置关系示意图;如图7所示,当前节点等分为8个子节点,子节点序号从0-7,子节点的编码顺序也是从0-7,左下角靠前位置为第一个子节点b0,右上角靠后位置的第八个子节点b7。
本申请一些实施例中,所述邻居信息为子节点被占据的邻居节点数量或者子节点的第二邻居模式;其中,所述第二邻居模式表征在子节点的所述第二邻居范围内被占用邻居节点的位置分布。
具体的,所述邻居信息为被占据的邻居节点数量时;所述基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息,包括:
从预设的第一映射表中,获取所述当前节点的第一邻居模式对应的子节点被占据的邻居节点数量;其中,所述第一映射表中包括至少一种当前节点的第一邻居模式及其子节点被占据的邻居节点数量的映射关系。
或者,基于所述当前节点的第一邻居模式,确定所述当前节点对应的邻居节点的占位信息;基于所述当前节点对应的邻居节点的占位信息和子节点的第二邻居范围,确定子节点被占据的邻居节点数量。
这里,所述第二邻居范围包括以下至少一项:与子节点共面的当前节点的邻居节点、与子节点共线的当前节点的邻居节点、与子节点共线的当前节点的邻居节点。对于将包围盒八等分为8个子立方体时,与子节点共面的当前节点(即父节点)的邻居节点有3个,与子节点共线的父节点的邻居节点有3个,与当前节点共点的邻居节点有1个,与子节点共面共线的父节点的邻居节点有6个,与子节点共面共线共点的父节点的邻居节点有7个。
本申请一些实施例中,子节点第二邻居范围属于当前节点第一邻居范围的子集。
也就是说,在确定子节点被占据的邻居节点数量,可以通过预先设置第一映射表,根据父节点的第一邻居模式索引到8个子节点被占据的邻居节点数量。第一映射表可以为表1的二维neighborPatternToChildNeighborCount[64][8]表,里面存储了64中不同邻居模式对应的8个子节点被占据的邻居节点数量。需要说明的是,这里邻居节点是范围与当前节点共面的6个邻居节点,即有64中邻居模式,若邻居节点范围有变,则邻居模式及对应关系也会变化,详细的对应关系参照表1这里不再赘述。
表1
邻居模式 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
2 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
4 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
5 | 2 | 2 | 1 | 1 | 1 | 1 | 0 | 0 |
6 | 1 | 1 | 0 | 0 | 2 | 2 | 1 | 1 |
7 | 2 | 2 | 1 | 1 | 2 | 2 | 1 | 1 |
8 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
9 | 1 | 1 | 2 | 2 | 0 | 0 | 1 | 1 |
10 | 0 | 0 | 1 | 1 | 1 | 1 | 2 | 2 |
11 | 1 | 1 | 2 | 2 | 1 | 1 | 2 | 2 |
12 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
13 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 |
14 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 |
15 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
16 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
17 | 2 | 1 | 2 | 1 | 1 | 0 | 1 | 0 |
18 | 1 | 0 | 1 | 0 | 2 | 1 | 2 | 1 |
19 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 |
20 | 2 | 1 | 1 | 0 | 2 | 1 | 1 | 0 |
21 | 3 | 2 | 2 | 1 | 2 | 1 | 1 | 0 |
22 | 2 | 1 | 1 | 0 | 3 | 2 | 2 | 1 |
23 | 3 | 2 | 2 | 1 | 3 | 2 | 2 | 1 |
24 | 1 | 0 | 2 | 1 | 1 | 0 | 2 | 1 |
25 | 2 | 1 | 3 | 2 | 1 | 0 | 2 | 1 |
26 | 1 | 0 | 2 | 1 | 2 | 1 | 3 | 2 |
27 | 2 | 1 | 3 | 2 | 2 | 1 | 3 | 2 |
28 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 |
29 | 3 | 2 | 3 | 2 | 2 | 1 | 2 | 1 |
30 | 2 | 1 | 2 | 1 | 3 | 2 | 3 | 2 |
31 | 3 | 2 | 3 | 2 | 3 | 2 | 3 | 2 |
32 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
33 | 1 | 2 | 1 | 2 | 0 | 1 | 0 | 1 |
34 | 0 | 1 | 0 | 1 | 1 | 2 | 1 | 2 |
35 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
36 | 1 | 2 | 0 | 1 | 1 | 2 | 0 | 1 |
37 | 2 | 3 | 1 | 2 | 1 | 2 | 0 | 1 |
38 | 1 | 2 | 0 | 1 | 2 | 3 | 1 | 2 |
39 | 2 | 3 | 1 | 2 | 2 | 3 | 1 | 2 |
40 | 0 | 1 | 1 | 2 | 0 | 1 | 1 | 2 |
41 | 1 | 2 | 2 | 3 | 0 | 1 | 1 | 2 |
42 | 0 | 1 | 1 | 2 | 1 | 2 | 2 | 3 |
43 | 1 | 2 | 2 | 3 | 1 | 2 | 2 | 3 |
44 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
45 | 2 | 3 | 2 | 3 | 1 | 2 | 1 | 2 |
46 | 1 | 2 | 1 | 2 | 2 | 3 | 2 | 3 |
47 | 2 | 3 | 2 | 3 | 2 | 3 | 2 | 3 |
48 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
49 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 |
50 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 |
51 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
52 | 2 | 2 | 1 | 1 | 2 | 2 | 1 | 1 |
53 | 3 | 3 | 2 | 2 | 2 | 2 | 1 | 1 |
54 | 2 | 2 | 1 | 1 | 3 | 3 | 2 | 2 |
55 | 3 | 3 | 2 | 2 | 3 | 3 | 2 | 2 |
56 | 1 | 1 | 2 | 2 | 1 | 1 | 3 | 3 |
57 | 2 | 2 | 3 | 3 | 1 | 1 | 2 | 2 |
58 | 1 | 1 | 2 | 2 | 2 | 2 | 3 | 3 |
59 | 2 | 2 | 3 | 3 | 2 | 2 | 3 | 3 |
60 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
61 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | 2 |
62 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 |
63 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
通过查找第一映射表的方式可以减少计算量,提高编码效率。但实际应用中,也可以通过直接计算的方式,即根据第一邻居模式,确定邻居节点的占位信息;基于邻居节点的占位信息和子节点的第二邻居范围,确定子节点被占据的邻居节点数量。这种方式无需预先建立并存储第一映射表,可直接根据第 一邻居模式确定子节点被占据的邻居节点数量,在处理器计算处理能力强大的情况下可忽略计算过程对处理性能的影响,省去前期建表过程,并节约存储空间。
实际应用中,第一映射表的构建方法,也是通过上述计算过程预先得到当前节点在不同第一邻居模式下,其8个子节点各自被占据的邻居节点数量,从而构建第一映射表。
图8a-图8h为本申请实施例提供的示例性的第一子节点到第八子节点的邻居范围示意图一;其中子节点的第二邻居范围都为与子节点共面的父节点的邻居节点。第一子节点b0到第八子节点b7都包含3个邻居节点,每个子节点被占据的邻居节点数量最多为3,最少为0。
假设当前节点的第一邻居模式为27,通过查找表1或通过计算得到,第一子节点b0被占据的邻居节点数量2;第二子节点b1被占据的邻居节点数量1;第三子节点b2被占据的邻居节点数量3;第四子节点b3被占据的邻居节点数量2;第五子节点b4被占据的邻居节点数量2;第六节点b5被占据的邻居节点数量1;第七子节点b6被占据的邻居节点数量3;第八子节点b7被占据的邻居节点数量2。
本申请一些实施例中,所述当前节点的熵编码参数为当前节点中子节点的上下文索引;所述基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵编码参数,包括:基于所述当前节点中子节点被占据的邻居节点数量,确定子节点的上下文索引。比如,将子节点被占据的邻居节点数量作为子节点的上下文索引。图8a-图8h中每个子节点被占据的邻居节点数量的取值范围为0-3,则每个子节点有4种上下文索引,即每个子节点对应4种上下文,能够为8个子节点找到各自匹配的上下文,从而提高编码性能。
本申请一些实施例中,所述当前节点的熵编码参数为当前节点中子节点的上下文索引;所述基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵编码参数,包括:基于所述当前节点中第一个子节点的邻居信息,确定所述第一个子节点的上下文索引;基于所述当前节点中目标子节点的邻居信息,以及所述当前节点中已编码子节点的占位信息,确定所述目标子节点的上下文索引;其中,所述目标子节点与所述第一个子节点是不同节点。
示例性的,确定子节点的上下文索引的方法具体包括:基于所述当前节点中第一个子节点被占据的邻居节点数量,确定所述第一个子节点的上下文索引;基于所述当前节点中目标子节点被占据的邻居节点数量,以及所述当前节点中已编码子节点的占位信息,确定所述目标子节点的上下文索引;其中,所述目标子节点与所述第一个子节点是不同节点。
也就是说,对当前节点进行熵编码时首先对第一个子节点进行编码,所以第一个子节点只能借助当前节点的邻居模式来确定第一子节点的上下文索引。
目标子节点为第二个子节点至第八个子节点,对第二个子节点至第八个子节点进行熵编码时,由于已编码的子节点占位信息已经被编码,所以已编码子节点也可以作为未编码子节点的邻居节点。因此,利用待编码子节点(即目标子节点)的被占据的邻居节点数量和已编码子节点占位信息,共同对待编码子节点进行上下文预测,确定待编码子节点的上下文索引,能够提供更为丰富的上下文,进一步提高目标子节点的编码性能。
比如,确定第一子节点的上下文索引的方法具体包括:将所述第一个子节点的邻居信息作为所述第一个子节点的上下文索引;所述当前节点中已编码子节点的占位信息和所述目标子节点的邻居信息构成二元索引,将该二元索引作为所述目标子节点的上下文索引。
这里,可以直接利用二元索引来索引对应的上下文。也可以将二元索引变成为一元索引来索引对应的上下文,比如,将所述当前节点中已编码子节点的占位信息作为高位,将所述目标子节点被占据的邻居节点数量作为低位,得到所述目标子节点的上下文索引;或者将目标子节点的第二邻居模式作为高位,已编码子节点的占位信息作为低位,计算得到所述第一个子节点的上下文索引。
也就是说,对于第一个子节点来说,其上下文索引即为被占据的邻居节点数量,比如,计算第二个子节点的上下文索引时,被占据的邻居节点数量3,则其上下文索引为3。对于非第一个子节点来说,已编码子节点的占位信息和被占据的邻居节点数量均以二进制表示,将占位信息作为高位被占据的邻居节点数量作为低位,得到其上下文索引,比如,被占据的邻居节点数量3,转二进制为0011,已编码子节点的占位信息为1,则合并后其上下文索引为0111,对应十进制为7。
表2给出了当前节点中每个子节点的上下文个数。利用当前节点的邻居模式得到当前节点中每个子节点共面的3个邻居中已被占据的邻居个数,保存在chilNeighborCount[8]中,每个子节点3个邻居中已被占据的邻居个数的取值范围都为0-3。b0的上下文索引为chilNeighborCount[0],取值范围为0-3,上下文个数为4。b1的上下文索引为(b0,chilNeighborCount[1]),有8种取值,即上下文个数为8,以此类推,总共分配了1020个上下文。
表2
子节点 | 上下文索引 | 上下文的个数 |
b0 | chilNeighborCount[0] | 4 |
b1 | (b0,chilNeighborCount[1]) | 8 |
b2 | (b1b0,chilNeighborCount[2]) | 16 |
b3 | (b2b1b0,chilNeighborCount[3]) | 32 |
b4 | (b3b2b1b0,chilNeighborCount[4]) | 64 |
b5 | (b4b3b2b1b0,chilNeighborCount[5]) | 128 |
b6 | (b5b4b3b2b1b0,chilNeighborCount[6]) | 256 |
b7 | (b6b5b4b3b2b1b0,chilNeighborCount[7]) | 512 |
步骤105:基于所述熵编码参数对所述当前节点的占位信息进行熵编码。
这里,熵编码参数用于索引熵编码器,利用熵编码参数所索引的熵编码器对子节点的占位信息进行熵编码。熵编码器是根据子节点的不同上下文建立的,本申请实施例中子节点的上下文等同于子节点的熵编码器。
具体的,熵编码参数为子节点的上下文索引,所述基于所述熵编码参数对所述当前节点的占位信息进行熵编码,包括:基于所述当前节点中子节点的上下文索引确定所述当前节点中子节点对应的上下文;在子节点对应的上下文中对子节点的占位信息进行熵编码。这里,对子节点的占位信息进行熵编码之后,将编码后的占位信息写入几何码流中,以使解码端从几何码流中解码当前节点中子节点的占位信息。
表3给出了8个不同子节点对应的8个不同上下文集合,每个上下文集合中包含多个上下文,根据上面计算得到的上下文索引,确定每个子节点实际编码时所使用的对应上下文集合中的目标上下文。也就是说,根据表2中的上下文索引确定表3中子节点对应的目标上下文,使用目标上下文对子节点的占位信息进行熵编码,得到几何码流。
表3
上下文集合 | 上下文 |
context0 | context0_0-context0_3 |
context1 | context1_0-context1_7 |
context2 | context2_0-context2_15 |
context3 | context3_0-context3_31 |
context4 | context4_0-context4_63 |
context5 | context5_0-context5_127 |
context6 | context6_0-context6_255 |
context7 | context7_0-context7_511 |
具体的,所述邻居信息为子节点的第二邻居模式时;所述基于所述当前节点的第一邻居模式,确定所述当前节点中每个子节点的邻居信息,包括:
从预设的第二映射表中,获取所述当前节点的第一邻居模式对应的子节点的第二邻居模式;其中,所述第二映射表中包括至少一种当前节点的第一邻居模式及其子节点的第二邻居模式的映射关系。
或者,基于所述当前节点的第一邻居模式,确定所述当前节点对应的邻居节点的占位信息;基于所述当前节点对应的邻居节点的占位信息、子节点的第二邻居范围以及子节点预设的第二邻居节点权重值,确定子节点的第二邻居模式。
这里,所述第二邻居范围包括以下至少一项:与子节点共面的当前节点的邻居节点、与子节点共线的当前节点的邻居节点、与子节点共线的当前节点的邻居。对于将包围盒八等分为8个子立方体时,与子节点共面的父节点的邻居节点有3个,与子节点共线的父节点的邻居节点有3个,与当前节点共点的邻居节点有1个,与子节点共面共线的父节点的邻居节点有6个,与子节点共面共线共点的父节点的邻居节点有7个。
也就是说,本申请一些实施例中还考虑了子节点邻居节点与子节点的相关性,通过为子节点的邻居节点设置权重值来表征邻居节点与子节点的相关性,权重值越高与当前节点的相关性越高,权重值越低与当前节点的相关性越低。
本申请一些实施例中,子节点第二邻居范围属于当前节点第一邻居范围的子集。
也就是说,在确定子节点第二邻居模式时,可以通过预先设置第二映射表,根据父节点的第一邻居 模式索引到8个子节点第二邻居模式。若当前节点有64种邻居模式,则第二映射表里面存储了64种第一邻居模式分别对应的8个子节点的第二邻居模式。比如,邻居节点是与当前节点共面的6个邻居节点,即有64中邻居模式,若邻居节点范围有变,则邻居模式也会变化,详细的对应关系这里不再赘述。
通过查找第二映射表的方式可以减少计算量,提高编码效率。但实际应用中,也可以通过直接计算的方式,即根据第二邻居模式,确定邻居节点的占位信息;基于邻居节点的占位信息、子节点的第二邻居范围以及第二邻居节点权重值,确定子节点的第二邻居模式。这种方式无需预先建立并存储第二映射表,可直接根据第一邻居模式确定子节点的第二邻居模式,在处理器计算处理能力强大可忽略计算过程对处理性能的影响,省去前期建表过程,并节约存储空间。
实际应用中,第二映射表的构建方法,也是通过上述计算过程预先得到当前节点在不同第一邻居模式下,其8个子节点各自的第二邻居模式,从而构建第二映射表。
图9为本申请实施例提供的示例性的第二子节点的邻居模式示意图一;如图9所示,按照邻居节点的走向,设置邻居节点的权重值,第二子节点左邻居节点权重值为1,第二子节点下邻居节点权重值为2,后邻居节点权重值为4。第二子节点共有8种邻居模式,取值范围为0-7。比如,假设当前节点的第一邻居模式为27,则第二子节点的邻居模式为1。
本申请一些实施例中,所述当前节点的熵编码参数为当前节点中子节点的上下文索引;所述基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵编码参数,包括:基于所述当前节点中子节点的第二邻居模式,确定子节点的上下文索引。比如,将子节点的第二邻居模式作为子节点的上下文索引。图9中第二子节点有8种邻居模式,则第二子节点有8种上下文上下文索引,即第二子节点有8种上下文,其他子节点同样有8种上下文,增加了子节点上下文数量,能够为8个子节点找到各自匹配的上下文,从而提高编码性能。
本申请一些实施例中,所述当前节点的熵编码参数为当前节点中子节点的上下文索引;所述基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵编码参数,包括:基于所述当前节点中第一个子节点的邻居信息,确定所述第一个子节点的上下文索引;基于所述当前节点中目标子节点的邻居信息,以及所述当前节点中已编码子节点的占位信息,确定所述目标子节点的上下文索引;其中,所述目标子节点与所述第一个子节点是不同节点。
示例性的,确定子节点的上下文索引的方法具体包括:基于所述当前节点中第一个子节点的第二邻居模式,确定所述第一个子节点的上下文索引;基于所述当前节点中目标子节点的第二邻居模式,以及所述当前节点中已编码子节点的占位信息,确定所述目标子节点的上下文索引;其中,所述目标子节点与所述第一个子节点是不同节点。
也就是说,对当前节点进行熵编码时首先对第一个子节点进行编码,所以第一个子节点只能借助当前节点的邻居模式确定第一子节点的上下文索引。
目标子节点为第二个子节点至第八个子节点,对第二个子节点至第八个子节点进行熵编码时,由于已编码的子节点占位信息已经被编码,所以已编码子节点也可以作为未编码子节点的邻居节点。因此,利用待编码子节点(即目标子节点)的第二邻居模式和已编码子节点占位信息,共同对待编码子节点进行上下文预测,确定待编码子节点的上下文索引,能够提供更为丰富的上下文,进一步提高目标子节点的编码性能。
比如,确定第一子节点的上下文索引的方法具体包括:将所述第一个子节点的邻居信息作为所述第一个子节点的上下文索引;所述当前节点中已编码子节点的占位信息和所述目标子节点的邻居信息构成二元索引,将该二元索引作为所述目标子节点的上下文索引。
这里,可以直接利用二元索引来索引对应的上下文。也可以将二元索引变成为一元索引来索引对应的上下文,比如,将所述当前节点中已编码子节点的占位信息作为高位,将所述目标子节点的第二邻居模式作为低位,计算得到所述第一个子节点的上下文索引;或者将目标子节点的第二邻居模式作为高位,已编码子节点的占位信息作为低位,计算得到所述第一个子节点的上下文索引。
也就是说,对于第一个子节点来说,其上下文索引即为被占据的第二邻居模式,比如,计算第二个子节点的上下文索引时,第二邻居模式7,则其上下文索引为7。对于非第一个子节点来说,已编码子节点的占位信息和第二邻居模式均以二进制表示,将占位信息作为高位第二邻居模式作为低位,得到其上下文索引,比如,第二邻居模式7,转二进制为1111,已编码子节点的占位信息为1,则合并后其上下文索引为11111,对应十进制为15。
表4给出了当前节点中每个子节点的上下文个数。利用当前节点的邻居模式得到当前节点中每个子节点的第二邻居模式,保存在chilNeighborMode[8]中,每个子节点第二邻居模式的取值范围都为0-7。b0的上下文索引为chilNeighborMode[0],取值范围为0-7,上下文个数为8。b1的上下文索引为(b0,chilNeighborMode[1]),有16种取值,上下文个数为16,以此类推,总共分配了2040个上下文。相较于考虑被占据邻居个数,得到更多上下文,进一步提高编码性能。
表4
子节点 | 上下文索引 | 上下文的个数 |
b0 | chilNeighborMode[0] | 8 |
b1 | (b0,chilNeighborMode[1]) | 16 |
b2 | (b1b0,chilNeighborMode[2]) | 32 |
b3 | (b2b1b0,chilNeighborMode[3]) | 64 |
b4 | (b3b2b1b0,chilNeighborMode[4]) | 128 |
b5 | (b4b3b2b1b0,chilNeighborMode[5]) | 256 |
b6 | (b5b4b3b2b1b0,chilNeighborMode[6]) | 512 |
b7 | (b6b5b4b3b2b1b0,chilNeighborMode[7]) | 1024 |
表5给出了8个不同子节点对应的8个不同上下文集合,每个上下文集合中包含多个上下文,根据上面计算得到的上下文索引,确定每个子节点实际编码时所使用的对应上下文集合中的目标上下文。也就是说,根据表4中的上下文索引确定表5中子节点对应的目标上下文,使用目标上下文对子节点的占位信息进行熵编码,得到几何码流。
表5
上下文集合 | 上下文 |
context0 | context0_0-context0_7 |
context1 | context1_0-context1_15 |
context2 | context2_0-context2_31 |
context3 | context3_0-context3_63 |
context4 | context4_0-context4_127 |
context5 | context5_0-context5_255 |
context6 | context6_0-context6_511 |
context7 | context7_0-context7_1023 |
表6给出了本申请点云编码方法与PCEMv1的性能对比结果,实验结果表明,利用本申请描述的算法可以提升编码性能,如下表6所示,重建点云的点到点误差(BD-rate,D1)性能变好,点到面误差(BD-rate,D2)性能变好。这里,峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)是一种图像评价的客观标准,PSNR越大则图像的质量越好。BD-rate是用来衡量性能的好坏的参数,BD-rate为负时表示性能变好,在此基础上BD-rate的绝对值越大,则性能的增益越大。
表6
序列名 | BD-rate(D1) | BD-rate(D1_H) |
basketball_player_vox11 | -36.2% | -36.5% |
dancer_vox11 | -34.9% | -34.9% |
exercise_vox11 | -27.9% | -27.9% |
model_vox11 | -32.5% | -32.5% |
本申请实施例中,根据每个子节点不同的邻居信息还给出了另外4种不同邻居节点范围下每个子节点上下文索引的确定方案。
方案一、邻居信息为被占据的邻居节点数量,利用当前节点的邻居节点中与子节点共面、共线的6邻居的占位个数定义上下文,共有7种。这里,第一邻居节点范围为与当前节点共面共线的邻居节点,第二邻居范围为与子节点共面共线的当前节点的邻居节点。
图10为本申请实施例提供的示例性的第二子节点的邻居范围示意图二;如图10所示,与第二子节点共面共线的邻居节点共有6个,则每个子节点被占据的邻居节点数量最多为6,最少为0,共7种。则 每个子节点有7种上下文;或者,每个子节点的上下文个数如表7所示。
表7
子节点 | 上下文索引 | 上下文的个数 |
b0 | chilNeighborCount[0] | 7 |
b1 | (b0,chilNeighborCount[1]) | 14 |
b2 | (b1b0,chilNeighborCount[2]) | 28 |
b3 | (b2b1b0,chilNeighborCount[3]) | 56 |
b4 | (b3b2b1b0,chilNeighborCount[4]) | 112 |
b5 | (b4b3b2b1b0,chilNeighborCount[5]) | 224 |
b6 | (b5b4b3b2b1b0,chilNeighborCount[6]) | 448 |
b7 | (b6b5b4b3b2b1b0,chilNeighborCount[7]) | 896 |
方案二、在方案一的基础上,邻居信息为子节点的第二邻居模式,利用当前节点的邻居节点中与子节点共面、共线的6邻居的占位模式定义上下文,共有64种。这里,第一邻居节点范围为与当前节点共面共线的邻居节点,第二邻居范围为与子节点共面共线的当前节点的邻居节点。
图11为本申请实施例提供的示例性的第二子节点的邻居模式示意图二;如图11所示,与第二子节点共面共线的邻居节点共有6个,将6个邻居节点的权重值相加等于63,则每个子节点第二邻居模式取值范围为0-63,共64种。则每个子节点有64种上下文;或者,每个子节点的上下文个数如表8所示。
表8
子节点 | 上下文索引 | 上下文的个数 |
b0 | chilNeighborMode[0] | 64 |
b1 | (b0,chilNeighborMode[1]) | 128 |
b2 | (b1b0,chilNeighborMode[2]) | 256 |
b3 | (b2b1b0,chilNeighborMode[3]) | 512 |
b4 | (b3b2b1b0,chilNeighborMode[4]) | 1024 |
b5 | (b4b3b2b1b0,chilNeighborMode[5]) | 2048 |
b6 | (b5b4b3b2b1b0,chilNeighborMode[6]) | 4096 |
b7 | (b6b5b4b3b2b1b0,chilNeighborMode[7]) | 8192 |
方案三、邻居信息为被占据的邻居节点数量,利用当前节点的邻居节点中与子节点共面、共线及共点的7邻居的占位个数定义上下文,共有8种。这里,第一邻居节点范围为与当前节点共面共线共点的邻居节点,第二邻居范围为与当前节点共面共线共点的父节点的邻居节点。
图12为本申请实施例提供的示例性的第二子节点的邻居范围示意图三;如图12所示,与第二子节点共面共线共点的邻居节点共有7个,则每个子节点被占据的邻居节点数量最多为7,最少为0,共8种。则每个子节点有8种上下文;或者,每个子节点的上下文个数如表9所示。
表9
子节点 | 上下文索引 | 上下文的个数 |
b0 | chilNeighborCount[0] | 8 |
b1 | (b0,chilNeighborCount[1]) | 16 |
b2 | (b1b0,chilNeighborCount[2]) | 32 |
b3 | (b2b1b0,chilNeighborCount[3]) | 64 |
b4 | (b3b2b1b0,chilNeighborCount[4]) | 128 |
b5 | (b4b3b2b1b0,chilNeighborCount[5]) | 256 |
b6 | (b5b4b3b2b1b0,chilNeighborCount[6]) | 512 |
b7 | (b6b5b4b3b2b1b0,chilNeighborCount[7]) | 1024 |
方案四、在方案三的基础上,邻居信息为子节点的第二邻居模式,利用当前节点的邻居节点中与子节点共面、共线及共点的7邻居的占位模式定义上下文,共有128种。这里,第一邻居节点范围为与当前节点共面共线共点的邻居节点,第二邻居范围为与子节点共面共线共点的当前节点的邻居节点。
图13为本申请实施例提供的示例性的第二子节点的邻居模式示意图三;如图13所示,与第二子节点共面共线的邻居节点共有7个,将7个邻居节点的权重值相加等于127,则每个子节点第二邻居模式取值范围为0-127,共128种。则每个子节点有128种上下文;或者,每个子节点的上下文个数如表10所示。
表10
子节点 | 上下文索引 | 上下文的个数 |
b0 | chilNeighborMode[0] | 128 |
b1 | (b0,chilNeighborMode[1]) | 256 |
b2 | (b1b0,chilNeighborMode[2]) | 512 |
b3 | (b2b1b0,chilNeighborMode[3]) | 1024 |
b4 | (b3b2b1b0,chilNeighborMode[4]) | 2048 |
b5 | (b4b3b2b1b0,chilNeighborMode[5]) | 4096 |
b6 | (b5b4b3b2b1b0,chilNeighborMode[6]) | 8192 |
b7 | (b6b5b4b3b2b1b0,chilNeighborMode[7]) | 16384 |
采用上述技术方案,利用当前节点的邻居模式,即当前节点被占用邻居节点的位置分布,对当前节点中子节点的熵编码参数进行预测,利用预测得到的熵编码参数对子节点的占位信息进行熵编码,可以很好地利用相邻节点之间的几何空间相关性,从而提升几何编码性能。
图14为本申请实施例提供的点云解码方法的流程示意图,应用于解码器,如图14所示,该方法包括:
步骤201:解析码流,确定待解码点云的包围盒;
实际应用中,解码器接收到的二进制码流中包括高层语法元素、几何码流和属性码流,解码器针对二进制码流中的几何码流和属性码流分别进行独立解码。在对几何码流的解码时,通过熵解码-八叉树重建-逆坐标量化-逆坐标平移,得到点云的几何信息;在对属性码流的解码时,通过熵解码-逆量化-属性重建-逆空间转换,得到点云的属性信息,基于几何信息和属性信息还原点云数据的三维图像模型。本申请实施例提供的一种点云解码方法主要作用熵解码部分。
具体的,解码器解析码流获取点云包围盒的描述信息。进一步的,对包围盒进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点的几何信息相同,根据参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化过程。
这里,对原始点云进行量化时,会将多个不同的点量化为重复点。当出现多个重复点时,若参数指示进行重复点移除时,则会将多个重复点当做一个点进行处理;若参数指示不进行重复点移除时,则多个几何坐标相同的点,仍然当做多个点来处理。接下来对处理后的包围盒进行八叉树划分。
步骤202:基于莫顿码顺序,对所述待解码点云的包围盒进行划分时,获取当前节点的坐标信息;
本申请实施例中,所述莫顿码顺序可以为广度优先遍历顺序或者深度优先便利顺序。解码端对待解码点云的包围盒的划分方式与编码端相同,这里不再赘述。
步骤203:基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式;
在本申请的一些实施例中,该步骤具体可以包括:基于所述当前节点的坐标信息和所述当前节点的第一邻居范围,确定所述当前节点对应的邻居节点的坐标信息;基于所述邻居节点的坐标信息,确定邻居节点的占位信息;基于所述邻居节点的占位信息,以及预设的第一邻居节点权重值,确定所述当前节点的第一邻居模式。
其中,第一邻居范围定义了当前节点有哪些邻居节点。比如,述第一邻居范围包括以下至少一项:与当前节点共面的邻居节点、与当前节点共线的邻居节点、与当前节点共点的邻居节点。对于将包围盒八等分为8个子立方体时,与当前节点共面的邻居节点有6个,与当前节点共线的邻居节点有12个,与当前节点共点的邻居节点有8个,与当前节点共面共线的邻居节点有18个,与当前节点共面共线及共点的邻居节点有26个。
占位信息用于表征邻居节点内是否有点云分布,占位信息可以由二进制数表示。例如,0表示空,无点云分布,1表示非空,有点云分布。
第一邻居模式表征在所述当前节点的所述第一邻居范围内被占用邻居节点的位置分布。第一邻居节点权重值定义了当前节点不同位置的邻居节点的相关性,权重值越高与当前节点的相关性越高,权重值越低与当前节点的相关性越低。
步骤204:基于所述当前节点的第一邻居模式,确定所述当前节点的熵解码参数;
本申请一些实施例中,所述基于所述当前节点的第一邻居模式,确定所述当前节点的熵解码参数,包括:基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息;基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵解码参数。
也就是说,在确定子节点的上下文时,先根据当前节点(也可以称为父节点)的第一邻居模式,确定子节点的邻居信息,再根据子节点的邻居信息为其选择对应的熵解码参数。
本申请一些实施例中,熵解码参数为子节点上下文索引。也就是说,本申请在对当前节点进行熵解码时,根据当前节点的第一邻居模式预测当前节点中每个子节点对应的上下文索引,根据上下文索引确定子节点对应的上下文,在子节点对应的上下文中子节点的占位信息进行熵解码,能够充分利用节点空间相关性,提高解码性能。
本申请一些实施例中,所述邻居信息为子节点被占据的邻居节点数量或者子节点的第二邻居模式;其中,所述第二邻居模式表征在子节点的所述第二邻居范围内被占用邻居节点的位置分布。
具体的,所述邻居信息为被占据的邻居节点数量时;所述基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息,包括:
从预设的第一映射表中,获取所述当前节点的第一邻居模式对应的子节点被占据的邻居节点数量;其中,所述第一映射表中包括至少一种当前节点的第一邻居模式及其子节点被占据的邻居节点数量的映射关系。
或者,基于所述当前节点的第一邻居模式,确定所述当前节点对应的邻居节点的占位信息;基于所述当前节点对应的邻居节点的占位信息和子节点的第二邻居范围,确定子节点被占据的邻居节点数量。
这里,所述第二邻居范围包括以下至少一项:与子节点共面的当前节点的邻居节点、与子节点共线的当前节点的邻居节点、与子节点共线的当前节点的邻居。对于将包围盒八等分为8个子立方体时,与子节点共面的当前节点(即父节点)的邻居节点有3个,与子节点共线的父节点的邻居节点有3个,与当前节点共点的邻居节点有1个,与子节点共面共线的父节点的邻居节点有6个,与子节点共面共线共点的父节点的邻居节点有7个。
具体的,所述邻居信息为子节点的第二邻居模式时;所述基于所述当前节点的第一邻居模式,确定所述当前节点中每个子节点的邻居信息,包括:
从预设的第二映射表中,获取所述当前节点的第一邻居模式对应的子节点的第二邻居模式;其中,所述第二映射表中包括至少一种当前节点的第一邻居模式及其子节点的第二邻居模式的映射关系。
或者,基于所述当前节点的第一邻居模式,确定所述当前节点对应的邻居节点的占位信息;基于所述当前节点对应的邻居节点的占位信息、子节点的第二邻居范围以及子节点预设的第二邻居节点权重值,确定子节点的第二邻居模式。
这里,所述第二邻居范围包括以下至少一项:与子节点共面的当前节点的邻居节点、与子节点共线的当前节点的邻居节点、与子节点共线的当前节点的邻居。对于将包围盒八等分为8个子立方体时,与子节点共面的父节点的邻居节点有3个,与子节点共线的父节点的邻居节点有3个,与当前节点共点的邻居节点有1个,与子节点共面共线的父节点的邻居节点有6个,与子节点共面共线共点的父节点的邻居节点有7个。
本申请一些实施例中,子节点第二邻居范围属于当前节点第一邻居范围的子集。
本申请一些实施例中,所述当前节点的熵解码参数为当前节点中子节点的上下文索引;所述基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵解码参数,包括:基于所述当前节点中子节点被占据的邻居节点数量,确定子节点的上下文索引。比如,将子节点被占据的邻居节点数量作为子节点的上下文索引。图8a-图8h中每个子节点被占据的邻居节点数量的取值范围为0-3,则每个子节点有4种上下文索引,即每个子节点对应4种上下文,能够为8个子节点找到各自匹配的上下文,从而提高解码性能。
本申请一些实施例中,所述当前节点的熵解码参数为当前节点中子节点的上下文索引;所述基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵解码参数,包括:基于所述当前节点中第一个子节点的邻居信息,确定所述第一个子节点的上下文索引;基于所述当前节点中目标子节点的邻居信息,以及所述当前节点中已解码子节点的占位信息,确定所述目标子节点的上下文索引;其中,所述目标子节点与所述第一个子节点是不同节点。
也就是说,对当前节点进行熵解码时首先对第一个子节点进行解码,所以第一个子节点只能借助当前节点的邻居模式来确定第一子节点的上下文索引。
目标子节点为第二个子节点至第八个子节点,对第二个子节点至第八个子节点进行熵解码时,由于已解码的子节点占位信息已经被解码,所以已解码子节点也可以作为未解码子节点的邻居节点。因此,利用待解码子节点(即目标子节点)的被占据的邻居节点数量和已解码子节点占位信息,共同对待解码子节点进行上下文预测,确定待解码子节点的上下文索引,能够提供更为丰富的上下文,进一步提高目标子节点的解码性能。
比如,确定第一子节点的上下文索引的方法具体包括:将所述第一个子节点的邻居信息作为所述第一个子节点的上下文索引;所述当前节点中已解码子节点的占位信息和所述目标子节点的邻居信息构成二元索引,将该二元索引作为所述目标子节点的上下文索引。
这里,可以直接利用二元索引来索引对应的上下文。也可以将二元索引变成为一元索引来索引对应的上下文,比如,将所述当前节点中已解码子节点的占位信息作为高位,将所述目标子节点被占据的邻居节点数量作为低位,得到所述目标子节点的上下文索引;或者将目标子节点的第二邻居模式作为高位,已解码子节点的占位信息作为低位,计算得到所述第一个子节点的上下文索引。
在另一些实施例中,所述邻居信息为子节点的第二邻居模式;
所述基于所述当前节点的第一邻居模式,确定所述当前节点中每个子节点的邻居信息,包括:
从预设的第二映射表中,获取所述当前节点的第一邻居模式对应的子节点的第二邻居模式;其中,所述第二映射表中包括至少一种当前节点的第一邻居模式及其子节点的第二邻居模式的映射关系。
或者,基于所述当前节点的第一邻居模式,确定所述当前节点对应的邻居节点的占位信息;基于所述当前节点对应的邻居节点的占位信息、子节点的第二邻居范围以及子节点预设的第二邻居节点权重值,确定子节点的第二邻居模式。
这里,所述第二邻居范围包括以下至少一项:与子节点共面的当前节点的邻居节点、与子节点共线的当前节点的邻居节点、与子节点共线的当前节点的邻居。对于将包围盒八等分为8个子立方体时,与子节点共面的当前节点的邻居节点有3个,与子节点共线的父节点的邻居节点有3个,与当前节点共点的邻居节点有1个,与子节点共面共线的父节点的邻居节点有6个,与子节点共面共线共点的父节点的邻居节点有7个。
也就是说,本申请一些实施例中还考虑了子节点邻居节点与子节点的相关性,通过为子节点的邻居节点设置权重值来表征邻居节点与子节点的相关性,权重值越高与当前节点的相关性越高,权重值越低与当前节点的相关性越低。
本申请一些实施例中,子节点第二邻居范围属于其父节点第一邻居范围的子集。
本申请一些实施例中,所述当前节点的熵解码参数为当前节点中子节点的上下文索引;所述基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵解码参数,包括:基于所述当前节点中子节点的第二邻居模式,确定子节点的上下文索引。比如,将子节点的第二邻居模式作为子节点的上下文索引。图9中第二子节点有8种邻居模式,则第二子节点有8种上下文上下文索引,即第二子节点有8种上下文,其他子节点同样有8种上下文,增加了子节点上下文数量,能够为8个子节点找到各自匹配的上下文,从而提高解码性能。
本申请一些实施例中,所述当前节点的熵解码参数为当前节点中子节点的上下文索引;所述基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵解码参数,包括:基于所述当前节点中第一个子节点的邻居信息,确定所述第一个子节点的上下文索引;基于所述当前节点中目标子节点的邻居信息,以及所述当前节点中已解码子节点的占位信息,确定所述目标子节点的上下文索引;其中,所述目标子节点与所述第一个子节点是不同节点。
也就是说,对当前节点进行熵解码时首先对第一个子节点进行解码,所以第一个子节点只能借助当前节点的邻居模式来确定第一子节点的上下文索引。
目标子节点为第二个子节点至第八个子节点,对第二个子节点至第八个子节点进行熵解码时,由于已解码的子节点占位信息已经被解码,所以已解码子节点也可以作为未解码子节点的邻居节点。因此,利用待解码子节点(即目标子节点)的第二邻居模式和已解码子节点占位信息,共同对待解码子节点进行上下文预测,确定待解码子节点的上下文索引,能够提供更为丰富的上下文,进一步提高目标子节点的解码性能。
比如,确定第一子节点的上下文索引的方法具体包括:将所述第一个子节点的邻居信息作为所述第一个子节点的上下文索引;所述当前节点中已解码子节点的占位信息和所述目标子节点的邻居信息构成二元索引,将该二元索引作为所述目标子节点的上下文索引。
这里,可以直接利用二元索引来索引对应的上下文。也可以将二元索引变成为一元索引来索引对应的上下文,比如,将所述当前节点中已解码子节点的占位信息作为高位,将所述目标子节点的第二邻居 模式作为低位,计算得到所述第一个子节点的上下文索引;或者将目标子节点的第二邻居模式作为高位,已解码子节点的占位信息作为低位,计算得到所述第一个子节点的上下文索引。
同样在解码端,根据每个子节点的不同邻居信息也包含另外4种不同邻居节点范围下每个子节点上下文索引的确定方案,该4种方案与解码端相同,这里也不再赘述。
步骤205:基于所述熵解码参数对所述当前节点的占位信息进行熵解码。
采用上述技术方案,利用当前节点的邻居模式,即当前节点被占用邻居节点的位置分布,对当前节点中子节点的熵解码参数进行预测,利用预测得到的熵解码参数对子节点的占位信息进行熵解码,可以很好地利用相邻节点之间的几何空间相关性,从而提升几何解码性能。
本申请实施例提供一种编码器,图15为本申请实施例中编码器的第一组成结构示意图,如图15所示,该编码器50包括:
第一确定单元501,配置为确定待编码点云的包围盒;
第一获取单元502,配置为基于莫顿码顺序对所述待编码点云的包围盒进行八叉树划分时,获取当前节点的坐标信息;
第一处理单元503,配置为基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式;
第一预测单元504,配置为基于所述当前节点的第一邻居模式,确定所述当前节点的熵编码参数;
编码单元505,配置为基于所述熵编码参数对所述当前节点的占位信息进行熵编码。
在本申请的一些实施例中,第一处理单元503,配置为基于所述当前节点的坐标信息和所述当前节点的第一邻居范围,确定所述当前节点对应的邻居节点的坐标信息;基于所述邻居节点的坐标信息,确定邻居节点的占位信息;基于所述邻居节点的占位信息,以及预设的第一邻居节点权重值,确定所述当前节点的第一邻居模式。
在本申请的一些实施例中,所述第一邻居范围包括以下至少一项:与当前节点共面的邻居节点、与当前节点共线的邻居节点、与当前节点共点的邻居节点。
在本申请的一些实施例中,所述第一邻居模式表征在所述当前节点的所述第一邻居范围内被占用邻居节点的位置分布。
在本申请的一些实施例中,第一预测单元504,配置为基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息;基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵编码参数。
在本申请的一些实施例中,所述邻居信息为子节点被占据的邻居节点数量或者子节点的第二邻居模式;其中,所述第二邻居模式表征在子节点的所述第二邻居范围内被占用邻居节点的位置分布。
在本申请的一些实施例中,所述邻居信息为子节点被占据的邻居节点数量时,第一预测单元504,配置为从预设的第一映射表中,获取所述当前节点的第一邻居模式对应的子节点被占据的邻居节点数量;其中,所述第一映射表中包括至少一种当前节点的第一邻居模式及其子节点被占据的邻居节点数量的映射关系。
或者,第一预测单元504,配置为基于所述当前节点的第一邻居模式,确定所述当前节点对应的邻居节点的占位信息;基于所述当前节点对应的邻居节点的占位信息和子节点的第二邻居范围,确定子节点被占据的邻居节点数量。
在本申请的一些实施例中,所述邻居信息为子节点的第二邻居模式时,
第一预测单元504,配置为从预设的第二映射表中,获取所述当前节点的第一邻居模式对应的子节点的第二邻居模式;其中,所述第二映射表中包括至少一种当前节点的第一邻居模式及其子节点的第二邻居模式的映射关系。
或者,第一预测单元504,配置为基于所述当前节点的第一邻居模式,确定所述当前节点对应的邻居节点的占位信息;基于所述当前节点对应的邻居节点的占位信息、子节点的第二邻居范围以及子节点预设的第二邻居节点权重值,确定子节点的第二邻居模式。
在本申请的一些实施例中,其中,所述第二邻居范围包括以下至少一项:与子节点共面的当前节点的邻居节点、与子节点共线的当前节点的邻居节点、与子节点共线的当前节点的邻居。
在本申请的一些实施例中,所述当前节点的熵编码参数为当前节点中子节点的上下文索引;第一预测单元504,配置为基于所述当前节点中第一个子节点的邻居信息,确定所述第一个子节点的上下文索引;基于所述当前节点中目标子节点的邻居信息,以及所述当前节点中已编码子节点的占位信息,确定所述目标子节点的上下文索引;其中,所述目标子节点与所述第一个子节点是不同节点。
在本申请的一些实施例中,第一预测单元504,配置为将所述第一个子节点的邻居信息作为所述第一个子节点的上下文索引。
在本申请的一些实施例中,第一预测单元504,配置为利用所述当前节点中已编码子节点的占位信息和所述目标子节点的邻居信息构成二元索引,将该二元索引作为所述目标子节点的上下文索引;或者, 将所述当前节点中已编码子节点的占位信息作为高位,将目标子节点的邻居信息作为低位,得到所述目标子节点的上下文索引。
在本申请的一些实施例中,解码单元505,配置为基于所述当前节点中子节点的上下文索引确定所述当前节点中子节点对应的上下文;在子节点对应的上下文中对子节点的占位信息进行熵编码。
在本申请的一些实施例中,所述莫顿码顺序为广度优先遍历顺序或者深度优先便利顺序。
在实际应用中,本申请实施例还提供了一种编码器,图16为本申请实施例中编码器的第二组成结构示意图,编码器50包括:第一存储器506和第一处理器507;第一存储器506存储有可在第一处理器507上运行的计算机程序,第一处理器507执行程序时编码器侧的点云编码方法。
采用上述技术方案,编码器在进行熵编码的过程中,利用当前节点的邻居模式,即当前节点被占用邻居节点的位置分布,对当前节点中子节点的熵编码参数进行预测,利用预测得到的熵编码参数对子节点的占位信息进行熵编码,可以很好地利用相邻节点之间的几何空间相关性,从而提升几何解码性能。
本申请实施例提供一种解码器,图17为本申请实施例中解码器的第一组成结构示意图,如图17所示,该解码器60包括:
解析单元601,配置为解析码流,确定待解码点云的包围盒;
第二获取单元602,配置为基于莫顿码顺序,对所述待解码点云的包围盒进行划分时,获取当前节点的坐标信息;
第二处理单元603,配置为基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式;
第二预测单元604,配置为基于所述当前节点的第一邻居模式,确定所述当前节点的熵解码参数;
解码单元605,配置为基于所述熵解码参数对所述当前节点的占位信息进行熵解码。
在本申请的一些实施例中,第二处理单元603,配置为基于所述当前节点的坐标信息和所述当前节点的第一邻居范围,确定所述当前节点对应的邻居节点的坐标信息;基于所述邻居节点的坐标信息,确定邻居节点的占位信息;基于所述邻居节点的占位信息,以及预设的第一邻居节点权重值,确定所述当前节点的第一邻居模式。
在本申请的一些实施例中,所述第一邻居范围包括以下至少一项:与当前节点共面的邻居节点、与当前节点共线的邻居节点、与当前节点共点的邻居节点。
在本申请的一些实施例中,所述第一邻居模式表征在所述当前节点的所述第一邻居范围内被占用邻居节点的位置分布。
在本申请的一些实施例中,第二预测单元604,配置为基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息;基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵解码参数。
在本申请的一些实施例中,所述邻居信息为子节点被占据的邻居节点数量或者子节点的第二邻居模式;其中,所述第二邻居模式表征在子节点的所述第二邻居范围内被占用邻居节点的位置分布。
在本申请的一些实施例中,所述邻居信息为子节点被占据的邻居节点数量时,第二预测单元604,配置为从预设的第一映射表中,获取所述当前节点的第一邻居模式对应的子节点被占据的邻居节点数量;其中,所述第一映射表中包括至少一种当前节点的第一邻居模式及其子节点被占据的邻居节点数量的映射关系。
或者,第二预测单元604,配置为基于所述当前节点的第一邻居模式,确定所述当前节点对应的邻居节点的占位信息;基于所述当前节点对应的邻居节点的占位信息和子节点的第二邻居范围,确定子节点被占据的邻居节点数量。
在本申请的一些实施例中,所述邻居信息为子节点的第二邻居模式时,第二预测单元604,配置为从预设的第二映射表中,获取所述当前节点的第一邻居模式对应的子节点的第二邻居模式;其中,所述第二映射表中包括至少一种当前节点的第一邻居模式及其子节点的第二邻居模式的映射关系。
或者,第二预测单元604,配置为基于所述当前节点的第一邻居模式,确定所述当前节点对应的邻居节点的占位信息;基于所述当前节点对应的邻居节点的占位信息、子节点的第二邻居范围以及子节点预设的第二邻居节点权重值,确定子节点的第二邻居模式。
在本申请的一些实施例中,其中,所述第二邻居范围包括以下至少一项:与子节点共面的当前节点的邻居节点、与子节点共线的当前节点的邻居节点、与子节点共线的当前节点的邻居。
在本申请的一些实施例中,所述当前节点的熵解码参数为当前节点中子节点的上下文索引;第二预测单元604,配置为基于所述当前节点中第一个子节点的邻居信息,确定所述第一个子节点的上下文索引;基于所述当前节点中目标子节点的邻居信息,以及所述当前节点中已解码子节点的占位信息,确定所述目标子节点的上下文索引;其中,所述目标子节点与所述第一个子节点是不同节点。
在本申请的一些实施例中,第二预测单元604,配置为将所述第一个子节点的邻居信息作为所述第一个子节点的上下文索引。
在本申请的一些实施例中,第二预测单元604,配置为利用所述当前节点中已解码子节点的占位信息和所述目标子节点的邻居信息构成二元索引,将该二元索引作为所述目标子节点的上下文索引;或者,将所述当前节点中已解码子节点的占位信息作为高位,将目标子节点的邻居信息作为低位,得到所述目标子节点的上下文索引。
在本申请的一些实施例中,解码单元605,配置为基于所述当前节点中子节点的上下文索引确定所述当前节点中子节点对应的上下文;在子节点对应的上下文中对子节点的占位信息进行熵解码,得到子节点的占位信息。
在本申请的一些实施例中,所述莫顿码顺序为广度优先遍历顺序或者深度优先便利顺序。
在实际应用中,本申请实施例还提供了一种解码器,图18为本申请实施例中解码器的第二组成结构示意图,解码器60包括:第二存储器606和第二处理器607;第二存储器606存储有可在第二处理器607上运行的计算机程序,第二处理器607执行程序时解码器侧的点云解码方法。
可以理解的是,解码器在进行熵解码的过程中,利用当前节点的邻居模式,即当前节点被占用邻居节点的位置分布,对当前节点中子节点的熵解码参数进行预测,利用预测得到的熵解码参数对子节点的占位信息进行熵解码,可以很好地利用相邻节点之间的几何空间相关性,从而提升几何解码性能。
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
相应的,本申请实施例提供了一种存储介质,其上存储有计算机程序,该计算机程序被第一处理器执行时,实现编码器的点云编码方法;或者,该计算机程序被第二处理器执行时,实现解码器的点云解码方法。
这里需要指出的是:以上存储介质和装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
以上,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
本申请实施例中,一种点云编解码方法、编码器、解码器及存储介质,包括:确定待编码/解码点云的包围盒;基于莫顿码顺序对待编码/解码点云的包围盒进行八叉树划分时,获取当前节点的坐标信息;基于当前节点的坐标信息,确定当前节点的第一邻居模式;基于当前节点的第一邻居模式,确定当前节点的熵编码参数/熵解码参数;基于熵编码参数/熵解码参数对当前节点的占位信息进行熵编码/熵解码。这样,利用当前节点的邻居模式,即当前节点被占用邻居节点的位置分布,对当前节点中子节点的熵编码参数/熵解码参数进行预测,利用预测得到的熵编码参数/熵解码参数对子节点的占位信息进行熵编码/熵解码参数,可以很好地利用相邻节点之间的几何空间相关性进行编解码,来提升几何编解码性能。
Claims (37)
- 一种点云编码方法,应用于编码器,所述方法包括:确定待编码点云的包围盒;基于莫顿码顺序对所述待编码点云的包围盒进行八叉树划分时,获取当前节点的坐标信息;基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式;基于所述当前节点的第一邻居模式,确定所述当前节点的熵编码参数;基于所述熵编码参数对所述当前节点的占位信息进行熵编码。
- 根据权利要求1所述的方法,其中,所述基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式,包括:基于所述当前节点的坐标信息和所述当前节点的第一邻居范围,确定所述当前节点对应的邻居节点的坐标信息;基于所述邻居节点的坐标信息,确定邻居节点的占位信息;基于所述邻居节点的占位信息,以及预设的第一邻居节点权重值,确定所述当前节点的第一邻居模式。
- 根据权利要求2所述的方法,其中,所述第一邻居范围包括以下至少一项:与当前节点共面的邻居节点、与当前节点共线的邻居节点、与当前节点共点的邻居节点。
- 根据权利要求2所述的方法,其中,所述第一邻居模式表征在所述当前节点的所述第一邻居范围内被占用邻居节点的位置分布。
- 根据权利要求1-4任一项所述的方法,其中,所述基于所述当前节点的第一邻居模式,确定所述当前节点的熵编码参数,包括:基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息;基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵编码参数。
- 根据权利要求5所述的方法,其中,所述邻居信息为子节点被占据的邻居节点数量或者子节点的第二邻居模式;其中,所述第二邻居模式表征在子节点的所述第二邻居范围内被占用邻居节点的位置分布。
- 根据权利要求6所述的方法,其中,所述邻居信息为子节点被占据的邻居节点数量时,所述基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息,包括:从预设的第一映射表中,获取所述当前节点的第一邻居模式对应的子节点被占据的邻居节点数量;其中,所述第一映射表中包括至少一种当前节点的第一邻居模式及其子节点被占据的邻居节点数量的映射关系。
- 根据权利要求6所述的方法,其中,所述邻居信息为子节点被占据的邻居节点数量时,所述基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息,包括:基于所述当前节点的第一邻居模式,确定所述当前节点对应的邻居节点的占位信息;基于所述当前节点对应的邻居节点的占位信息和子节点的第二邻居范围,确定子节点被占据的邻居节点数量。
- 根据权利要求6所述的方法,其中,所述邻居信息为子节点的第二邻居模式时,所述基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息,包括:从预设的第二映射表中,获取所述当前节点的第一邻居模式对应的子节点的第二邻居模式;其中,所述第二映射表中包括至少一种当前节点的第一邻居模式及其子节点的第二邻居模式的映射关系。
- 根据权利要求6所述的方法,其中,所述邻居信息为子节点的第二邻居模式时,所述基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息,包括:基于所述当前节点的第一邻居模式,确定所述当前节点对应的邻居节点的占位信息;基于所述当前节点对应的邻居节点的占位信息、子节点的第二邻居范围以及子节点预设的第二邻居节点权重值,确定子节点的第二邻居模式。
- 根据权利要求6、8或10所述的方法,其中,所述第二邻居范围包括以下至少一项:与子节点共面的当前节点的邻居节点、与子节点共线的当前节点的邻居节点、与子节点共线的当前节点的邻居节点。
- 根据权利要求5所述的方法,其中,所述当前节点的熵编码参数为所述当前节点中子节点的上下文索引;所述基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵编码参数,包括:基于所述当前节点中第一个子节点的邻居信息,确定所述第一个子节点的上下文索引;基于所述当前节点中目标子节点的邻居信息,以及所述当前节点中已编码子节点的占位信息,确定所述目标子节点的上下文索引;其中,所述目标子节点与所述第一个子节点是不同节点。
- 根据权利要求12所述的方法,其中,所述基于所述当前节点中第一个子节点的邻居信息,确定所述第一个子节点的上下文索引,包括:将所述第一个子节点的邻居信息作为所述第一个子节点的上下文索引。
- 根据权利要求12所述的方法,其中,所述基于所述当前节点中目标子节点的邻居信息,以及所述当前节点中已编码子节点的占位信息,确定所述目标子节点的上下文索引,包括:利用所述当前节点中已编码子节点的占位信息和所述目标子节点的邻居信息构成二元索引,将该二元索引作为所述目标子节点的上下文索引;或者,将所述当前节点中已编码子节点的占位信息作为高位,将目标子节点的邻居信息作为低位,得到所述目标子节点的上下文索引。
- 根据权利要求12所述的方法,其中,所述基于所述熵编码参数对所述当前节点的占位信息进行熵编码,包括:基于所述当前节点中子节点的上下文索引确定所述当前节点中子节点对应的上下文;在子节点对应的上下文中对子节点的占位信息进行熵编码。
- 根据权利要求1所述的方法,其中,所述莫顿码顺序为广度优先遍历顺序或者深度优先便利顺序。
- 一种点云解码方法,应用于解码器,所述方法包括:解析码流,确定待解码点云的包围盒;基于莫顿码顺序,对所述待解码点云的包围盒进行划分时,获取当前节点的坐标信息;基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式;基于所述当前节点的第一邻居模式,确定所述当前节点的熵解码参数;基于所述熵解码参数对所述当前节点的占位信息进行熵解码。
- 根据权利要求17所述的方法,其中,所述基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式,包括:基于所述当前节点的坐标信息和所述当前节点的第一邻居范围,确定所述当前节点对应的邻居节点的坐标信息;基于所述邻居节点的坐标信息,确定邻居节点的占位信息;基于所述邻居节点的占位信息,以及预设的第一邻居节点权重值,确定所述当前节点的第一邻居模式。
- 根据权利要求18所述的方法,其中,所述第一邻居范围包括以下至少一项:与当前节点共面的邻居节点、与当前节点共线的邻居节点、与当前节点共点的邻居节点。
- 根据权利要求18所述的方法,其中,所述第一邻居模式表征在所述当前节点的所述第一邻居范围内被占用邻居节点的位置分布。
- 根据权利要求17-20任一项所述的方法,其中,所述基于所述当前节点的第一邻居模式,确定所述当前节点的熵解码参数,包括:基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息;基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵解码参数。
- 根据权利要求21所述的方法,其中,所述邻居信息为子节点被占据的邻居节点数量或者子节点的第二邻居模式;其中,所述第二邻居模式表征在子节点的所述第二邻居范围内被占用邻居节点的位置分布。
- 根据权利要求22所述的方法,其中,所述邻居信息为子节点被占据的邻居节点数量时,所述基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息,包括:从预设的第一映射表中,获取所述当前节点的第一邻居模式对应的子节点被占据的邻居节点数量;其中,所述第一映射表中包括至少一种当前节点的第一邻居模式及其子节点被占据的邻居节点数量的映射关系。
- 根据权利要求22所述的方法,其中,所述邻居信息为子节点被占据的邻居节点数量时,所述基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息,包括:基于所述当前节点的第一邻居模式,确定所述当前节点对应的邻居节点的占位信息;基于所述当前节点对应的邻居节点的占位信息和子节点的第二邻居范围,确定子节点被占据的邻居节点数量。
- 根据权利要求22所述的方法,其中,所述邻居信息为子节点的第二邻居模式时,所述基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息,包括:从预设的第二映射表中,获取所述当前节点的第一邻居模式对应的子节点的第二邻居模式;其中,所述第二映射表中包括至少一种当前节点的第一邻居模式及其子节点的第二邻居模式的映射关系。
- 根据权利要求22所述的方法,其中,所述邻居信息为子节点的第二邻居模式时,所述基于所述当前节点的第一邻居模式,确定所述当前节点中子节点的邻居信息,包括:基于所述当前节点的第一邻居模式,确定所述当前节点对应的邻居节点的占位信息;基于所述当前节点对应的邻居节点的占位信息、子节点的第二邻居范围以及子节点预设的第二邻居节点权重值,确定子节点的第二邻居模式。
- 根据权利要求22、24或26所述的方法,其中,所述第二邻居范围包括以下至少一项:与子节点共面的当前节点的邻居节点、与子节点共线的当前节点的邻居节点、与子节点共线的当前节点的邻居节点。
- 根据权利要求21所述的方法,其中,所述当前节点的熵解码参数为所述当前节点中子节点的上下文索引;所述基于所述当前节点中子节点的邻居信息,确定所述当前节点中子节点的熵解码参数,包括:基于所述当前节点中第一个子节点的邻居信息,确定所述第一个子节点的上下文索引;基于所述当前节点中目标子节点的邻居信息,以及所述当前节点中已解码子节点的占位信息,确定所述目标子节点的上下文索引;其中,所述目标子节点与所述第一个子节点是不同节点。
- 根据权利要求28所述的方法,其中,所述基于所述当前节点中第一个子节点的邻居信息,确定所述第一个子节点的上下文索引,包括:将所述第一个子节点的邻居信息作为所述第一个子节点的上下文索引。
- 根据权利要求28所述的方法,其中,所述基于所述当前节点中目标子节点的邻居信息,以及所述当前节点中已解码子节点的占位信息,确定所述目标子节点的上下文索引,包括:利用所述当前节点中已解码子节点的占位信息和所述目标子节点的邻居信息构成二元索引,将该二元索引作为所述目标子节点的上下文索引;或者,将所述当前节点中已解码子节点的占位信息作为高位,将目标子节点的邻居信息作为低位,得到所述目标子节点的上下文索引。
- 根据权利要求28所述的方法,其中,所述基于所述熵解码参数对所述当前节点的占位信息进行熵解码,包括:基于所述当前节点中子节点的上下文索引确定所述当前节点中子节点对应的上下文;在子节点对应的上下文中对子节点的占位信息进行熵解码,得到子节点的占位信息。
- 根据权利要求17所述的方法,其中,所述莫顿码顺序为广度优先遍历顺序或者深度优先便利顺序。
- 一种编码器,其中,所述编码器包括:第一确定单元,配置为确定待编码点云的包围盒;第一获取单元,配置为基于莫顿码顺序对所述待编码点云的包围盒进行八叉树划分时,获取当前节点的坐标信息;第一处理单元,配置为基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式;第一预测单元,配置为基于所述当前节点的第一邻居模式,确定所述当前节点的熵编码参数;编码单元,配置为基于所述熵编码参数对所述当前节点的占位信息进行熵编码。
- 一种解码器,其中,所述解码器包括:解析单元,配置为解析码流,确定待解码点云的包围盒;第二获取单元,配置为基于莫顿码顺序,对所述待解码点云的包围盒进行划分时,获取当前节点的坐标信息;第二处理单元,配置为基于所述当前节点的坐标信息,确定所述当前节点的第一邻居模式;第二预测单元,配置为基于所述当前节点的第一邻居模式,确定所述当前节点的熵解码参数;解码单元,配置为基于所述熵解码参数对所述当前节点的占位信息进行熵解码。
- 一种编码器,其中,所述编码器包括:第一存储器和第一处理器;所述第一存储器存储有可在第一处理器上运行的计算机程序,所述第一处理器执行所述程序时实现权利要求1至16任一项所述点云编码方法。
- 一种解码器,其中,包括:第二存储器和第二处理器;所述第二存储器存储有可在第二处理器上运行的计算机程序,所述第二处理器执行所述程序时实现权利要求17-32任一项所述点云解码方法。
- 一种存储介质,其中,其上存储有计算机程序,该计算机程序被第一处理器执行时,实现权利要求1至16任一项所述点云编码方法;或者,该计算机程序被第二处理器执行时,实现权利要求17-32任一项所述点云解码方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP20936384.5A EP4149114A4 (en) | 2020-05-19 | 2020-05-19 | METHOD OF ENCODING/DECODING A POINT CLOUD, ENCODER, DECODER AND STORAGE MEDIUM |
PCT/CN2020/091106 WO2021232251A1 (zh) | 2020-05-19 | 2020-05-19 | 一种点云编解码方法、编码器、解码器及存储介质 |
CN202080100932.7A CN115606188A (zh) | 2020-05-19 | 2020-05-19 | 一种点云编解码方法、编码器、解码器及存储介质 |
US17/981,661 US20230065156A1 (en) | 2020-05-19 | 2022-11-07 | Point cloud encoding/decoding method, encoder, decoder, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/091106 WO2021232251A1 (zh) | 2020-05-19 | 2020-05-19 | 一种点云编解码方法、编码器、解码器及存储介质 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/981,661 Continuation US20230065156A1 (en) | 2020-05-19 | 2022-11-07 | Point cloud encoding/decoding method, encoder, decoder, and storage medium |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021232251A1 true WO2021232251A1 (zh) | 2021-11-25 |
Family
ID=78709011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2020/091106 WO2021232251A1 (zh) | 2020-05-19 | 2020-05-19 | 一种点云编解码方法、编码器、解码器及存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230065156A1 (zh) |
EP (1) | EP4149114A4 (zh) |
CN (1) | CN115606188A (zh) |
WO (1) | WO2021232251A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116233388A (zh) * | 2021-12-03 | 2023-06-06 | 维沃移动通信有限公司 | 点云编、解码处理方法、装置、编码设备及解码设备 |
WO2023098805A1 (zh) * | 2021-12-03 | 2023-06-08 | 维沃移动通信有限公司 | 点云编码方法、解码方法、装置及电子设备 |
WO2023131126A1 (en) * | 2022-01-04 | 2023-07-13 | Beijing Bytedance Network Technology Co., Ltd. | Method, apparatus, and medium for point cloud coding |
WO2023173237A1 (zh) * | 2022-03-12 | 2023-09-21 | Oppo广东移动通信有限公司 | 编解码方法、码流、编码器、解码器以及存储介质 |
WO2023197337A1 (zh) * | 2022-04-16 | 2023-10-19 | Oppo广东移动通信有限公司 | 索引确定方法、装置、解码器以及编码器 |
WO2024120431A1 (zh) * | 2022-12-09 | 2024-06-13 | 维沃移动通信有限公司 | 点云编码方法、点云解码方法及相关设备 |
WO2024148488A1 (zh) * | 2023-01-09 | 2024-07-18 | Oppo广东移动通信有限公司 | 编解码方法、码流、编码器、解码器以及存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12118758B2 (en) | 2020-06-22 | 2024-10-15 | Qualcomm Incorporated | Planar and azimuthal mode in geometric point cloud compression |
WO2024197680A1 (zh) * | 2023-03-29 | 2024-10-03 | Oppo广东移动通信有限公司 | 点云编解码方法、装置、设备及存储介质 |
CN117893412B (zh) * | 2024-03-15 | 2024-06-11 | 北京理工大学 | 一种点云数据滤除方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109345619A (zh) * | 2018-08-10 | 2019-02-15 | 华北电力大学(保定) | 基于类八叉树编码的海量点云空间管理方法 |
EP3514969A1 (en) * | 2018-01-18 | 2019-07-24 | BlackBerry Limited | Methods and devices using direct coding in point cloud compression |
WO2019140510A1 (en) * | 2018-01-18 | 2019-07-25 | Blackberry Limited | Methods and devices for entropy coding point clouds |
WO2020075862A1 (ja) * | 2018-10-12 | 2020-04-16 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
-
2020
- 2020-05-19 WO PCT/CN2020/091106 patent/WO2021232251A1/zh unknown
- 2020-05-19 EP EP20936384.5A patent/EP4149114A4/en not_active Withdrawn
- 2020-05-19 CN CN202080100932.7A patent/CN115606188A/zh active Pending
-
2022
- 2022-11-07 US US17/981,661 patent/US20230065156A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3514969A1 (en) * | 2018-01-18 | 2019-07-24 | BlackBerry Limited | Methods and devices using direct coding in point cloud compression |
WO2019140510A1 (en) * | 2018-01-18 | 2019-07-25 | Blackberry Limited | Methods and devices for entropy coding point clouds |
CN109345619A (zh) * | 2018-08-10 | 2019-02-15 | 华北电力大学(保定) | 基于类八叉树编码的海量点云空间管理方法 |
WO2020075862A1 (ja) * | 2018-10-12 | 2020-04-16 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
Non-Patent Citations (2)
Title |
---|
See also references of EP4149114A4 * |
ZINK MICHAEL, TONI LAURA, BEGEN ALI C., LASSERRE SÉBASTIEN, FLYNN DAVID, QU SHOUXING: "Using neighbouring nodes for the compression of octrees representing the geometry of point clouds", PROCEEDINGS OF THE 10TH ACM MULTIMEDIA SYSTEMS CONFERENCE, 18 June 2019 (2019-06-18), New York, NY, USA , pages 145 - 153, XP055870050, ISBN: 978-1-4503-6297-9, DOI: 10.1145/3304109.3306224 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116233388A (zh) * | 2021-12-03 | 2023-06-06 | 维沃移动通信有限公司 | 点云编、解码处理方法、装置、编码设备及解码设备 |
WO2023098807A1 (zh) * | 2021-12-03 | 2023-06-08 | 维沃移动通信有限公司 | 点云编、解码处理方法、装置、编码设备及解码设备 |
WO2023098805A1 (zh) * | 2021-12-03 | 2023-06-08 | 维沃移动通信有限公司 | 点云编码方法、解码方法、装置及电子设备 |
WO2023131126A1 (en) * | 2022-01-04 | 2023-07-13 | Beijing Bytedance Network Technology Co., Ltd. | Method, apparatus, and medium for point cloud coding |
WO2023173237A1 (zh) * | 2022-03-12 | 2023-09-21 | Oppo广东移动通信有限公司 | 编解码方法、码流、编码器、解码器以及存储介质 |
WO2023197337A1 (zh) * | 2022-04-16 | 2023-10-19 | Oppo广东移动通信有限公司 | 索引确定方法、装置、解码器以及编码器 |
WO2024120431A1 (zh) * | 2022-12-09 | 2024-06-13 | 维沃移动通信有限公司 | 点云编码方法、点云解码方法及相关设备 |
WO2024148488A1 (zh) * | 2023-01-09 | 2024-07-18 | Oppo广东移动通信有限公司 | 编解码方法、码流、编码器、解码器以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP4149114A4 (en) | 2023-04-12 |
US20230065156A1 (en) | 2023-03-02 |
EP4149114A1 (en) | 2023-03-15 |
CN115606188A (zh) | 2023-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021232251A1 (zh) | 一种点云编解码方法、编码器、解码器及存储介质 | |
CN113615181B (zh) | 用于点云编解码的方法、装置 | |
WO2021000658A1 (zh) | 点云编解码方法、编码器、解码器及计算机存储介质 | |
US9171383B2 (en) | Apparatus and method of scalable encoding of 3D mesh, and apparatus and method of scalable decoding of 3D mesh | |
WO2020010446A1 (en) | Predictor-copy coding mode for coding of point clouds | |
WO2019195921A1 (en) | Methods and devices for predictive coding of point clouds | |
WO2020123469A1 (en) | Hierarchical tree attribute coding by median points in point cloud coding | |
CN113632142B (zh) | 点云编解码的方法和装置 | |
WO2019195922A1 (en) | Methods and devices for predictive coding of point clouds | |
WO2021184380A1 (zh) | 点云编码方法和解码方法、编码器、解码器、及存储介质 | |
EP2723071A1 (en) | Encoder, decoder and method | |
KR20220127837A (ko) | Haar 기반 포인트 클라우드 코딩을 위한 방법 및 장치 | |
EP4088261A1 (en) | Context determination for planar mode in octree-based point cloud coding | |
JP7564348B2 (ja) | 2次元正則化平面投影に基づくポイントクラウド符号化及び復号方法並びに装置 | |
WO2020010445A1 (en) | Methods and devices for lossy coding of point cloud occupancy | |
WO2023241107A1 (zh) | 点云处理方法、装置及计算机设备、存储介质 | |
JP2024050705A (ja) | 属性情報の予測方法、エンコーダ、デコーダ及び記憶媒体 | |
CN112514397A (zh) | 点云的编解码方法和装置 | |
EP4040793A1 (en) | Transform method, inverse transform method, encoder, decoder and storage medium | |
CN117440158A (zh) | 基于三维几何失真的miv沉浸式视频编码率失真优化方法 | |
KR20230119690A (ko) | 대규모 포인트 클라우드-지향형 2 차원 정규화된 평면투영, 및 인코딩 및 디코딩 방법 | |
KR20230074504A (ko) | 포인트 클라우드 인코딩 방법, 포인트 클라우드 디코딩 방법 및 관련 장치 | |
CN114915793A (zh) | 基于二维规则化平面投影的点云编解码方法及装置 | |
WO2024212043A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2024212038A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20936384 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2020936384 Country of ref document: EP Effective date: 20221206 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |