Point cloud encoding and decoding method, code stream, encoder, decoder and storage medium
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2023-08-18
- Publication Date
- 2026-03-27
AI Technical Summary
In the existing point cloud encoding technology, there is redundancy of syntax elements transmitted in the code stream, which reduces encoding efficiency and fails to effectively explain hash information, increasing the complexity and inconsistency of encoding and decoding processing.
A point cloud encoding and decoding method is proposed, which stores identification information by determining the geometric encoding and decoding state through the decoding code stream, and determines the encoding and decoding state of the current macroblock in a specified situation dependent identification information and identification information of hash information, and optimizes the storage and use of hash table information.
Improves the encoding and decoding efficiency, reduces the complexity of the encoding and decoding processing, and ensures the consistency and accuracy of the encoding and decoding.
Smart Images

Figure CN121753342A_ABST
Abstract
Description
Point cloud encoding and decoding method, code stream, encoder, decoder and storage medium Technical Field
[0001] The embodiments of the present application relate to the field of point cloud coding technology, and in particular to a point cloud encoding and decoding method, bit stream, encoder, decoder, and storage medium. Background Art
[0002] In the Point Cloud Compression (PCC) framework, based on the AVS-PCC framework provided by the Audio Video Coding Standard (AVS), the geometric information of the point cloud and the attribute information corresponding to each point are encoded separately. The geometric information encoding methods can be divided into octree-based geometry coding and prediction tree-based geometry coding.
[0003] In the encoding process of geometric information, different syntax elements are generally used. However, on the one hand, some syntax elements transmitted in the code stream are redundant, which reduces the encoding efficiency. On the other hand, common syntax elements do not provide specific descriptions and instructions for hash information, which greatly increases the complexity of the encoding and decoding process and cannot guarantee the consistency of encoding and decoding.
[0004] Summary of the Invention
[0005] The embodiments of the present application provide a point cloud encoding and decoding method, code stream, encoder, decoder and storage medium, which can improve encoding and decoding efficiency while reducing the complexity of encoding and decoding processing.
[0006] The technical solution of the embodiment of the present application can be implemented as follows:
[0007] In a first aspect, an embodiment of the present application provides a decoding method, applied to a decoder, the method comprising:
[0008] Decode the code stream and determine the geometric codec state storage identification information;
[0009] In a case where the geometric coding state storage identification information indicates that the coding and decoding state is stored, decoding the code stream to determine the coding and decoding state corresponding to the current macroblock, depending on the identification information and the identification information of the hash information;
[0010] When the codec state dependency identification information indicates that the current macroblock is not independently coded or decoded, after the decoding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
[0011] In a second aspect, an embodiment of the present application provides an encoding method, applied to an encoder, the method comprising:
[0012] Determine geometric codec state storage identification information, and write the geometric codec state storage identification information into a bitstream;
[0013] When the geometric coding state storage identification information indicates that the coding state is stored, determining the coding state dependency identification information and the identification information of the hash information corresponding to the current macroblock, and writing the coding state dependency identification information and the identification information of the hash information corresponding to the current macroblock into a bitstream;
[0014] When the coding state dependency identification information indicates that the current macroblock is not independently coded or decoded, after the coding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
[0015] In a third aspect, an embodiment of the present application provides a code stream, wherein the code stream is generated by bit encoding based on information to be encoded; wherein the information to be encoded includes at least one of the following:
[0016] The geometric codec state stores identification information, the codec state corresponding to the current macroblock depends on the identification information and the identification information of the hash information, the codec state corresponding to the next macroblock depends on the identification information, and the codec state corresponding to the previous macroblock depends on the identification information.
[0017] In a fourth aspect, an embodiment of the present application provides an encoder, comprising: a first determining unit, an encoding unit, and a first storage unit; wherein,
[0018] The first determining unit is configured to determine the geometric coding state storage identification information;
[0019] The encoding unit is configured to write the geometric encoding and decoding state storage identification information into a bitstream;
[0020] The first determining unit is further configured to determine identification information of the codec state dependency identification information and the hash information corresponding to the current macroblock when the geometric coding state storage identification information indicates that the codec state is stored;
[0021] The encoding unit is further configured to write the encoding and decoding state dependency identification information and the identification information of the hash information corresponding to the current macroblock into the bitstream;
[0022] The first storage unit is configured to store the hash table information corresponding to the current macroblock according to the identification information of the hash information after completing the encoding process of the current macroblock when the encoding and decoding state dependency identification information indicates that the current macroblock is not independently encoded and decoded.
[0023] In a fifth aspect, an embodiment of the present application provides an encoder, comprising a first memory and a first processor; wherein,
[0024] a first memory for storing a computer program capable of running on the first processor;
[0025] The first processor is configured to execute the method according to the second aspect when running the computer program.
[0026] In a sixth aspect, an embodiment of the present application provides a decoder, comprising: a decoding unit, a second determining unit, and a second storage unit; wherein,
[0027] The decoding unit is configured to decode the code stream;
[0028] The second determining unit is configured to determine the geometric coding state storage identification information;
[0029] The decoding unit is further configured to decode the code stream if the geometric coding state storage identification information indicates that the coding and decoding state is stored;
[0030] The second determining unit is further configured to determine the identification information of the coding and decoding state dependency identification information and the hash information corresponding to the current macroblock;
[0031] The second storage unit is configured to store the hash table information corresponding to the current macroblock according to the identification information of the hash information after completing the decoding process of the current macroblock when the encoding and decoding state dependency identification information indicates that the current macroblock is not independently encoded and decoded.
[0032] In a seventh aspect, an embodiment of the present application provides a decoder, comprising a second memory and a second processor; wherein:
[0033] a second memory for storing a computer program capable of running on the second processor;
[0034] The second processor is configured to execute the method according to the first aspect when running the computer program.
[0035] In an eighth aspect, an embodiment of the present application provides a computer-readable storage medium storing a computer program, which implements the method described in the first aspect when executed by a first processor, or implements the method described in the second aspect when executed by a second processor.
[0036] The present invention provides a point cloud encoding and decoding method, a code stream, an encoder, a decoder, and a storage medium. The decoder decodes the code stream and determines geometric code state storage identification information. If the geometric code state storage identification information indicates that the code state is stored, the decoder decodes the code stream and determines code state dependency identification information and hash information identification information corresponding to the current macroblock. If the code state dependency identification information indicates that the current macroblock is not independently encoded and decoded, after completing the decoding process of the current macroblock, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information. The encoder determines geometric code state storage identification information and writes the geometric code state storage identification information into the code stream. If the geometric code state storage identification information indicates that the code state is stored, the decoder determines code state dependency identification information and hash information identification information corresponding to the current macroblock, and writes the code state dependency identification information and hash information identification information corresponding to the current macroblock into the code stream. If the code state dependency identification information indicates that the current macroblock is not independently encoded and decoded, after completing the encoding process of the current macroblock, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information. It can be seen that in the embodiments of the present application, on the one hand, the codec can choose to determine the coding and decoding state of the geometric macroblock only when the geometric coding state storage identification information indicates the storage of the coding and decoding state, thereby overcoming the defect of redundant syntax elements and improving the coding and decoding efficiency; on the other hand, the codec can use the identification information of the hash information of the geometric macroblock to describe and indicate the hash table information that needs to be stored, thereby reducing the complexity of coding and decoding, ensuring the consistency of coding and decoding, and thus improving the accuracy of coding and decoding. BRIEF DESCRIPTION OF THE DRAWINGS
[0037] FIG1A is a schematic diagram of a three-dimensional point cloud image;
[0038] FIG1B is a partially enlarged view of a three-dimensional point cloud image;
[0039] FIG2A is a schematic diagram of six viewing angles of a point cloud image;
[0040] FIG2B is a schematic diagram of a data storage format corresponding to a point cloud image;
[0041] FIG3 is a schematic diagram of the positions of reference nodes selected by each sub-node;
[0042] FIG4 is a schematic diagram showing the positions of four groups of reference neighbor nodes of a current node;
[0043] FIG5 is a schematic diagram showing the positions of six adjacent parent blocks corresponding to each child block;
[0044] FIG6 is a schematic diagram showing the positions of 18 adjacent blocks around a current block and their Morton sequence numbers;
[0045] FIG7 is a schematic diagram of a simplified prediction tree structure;
[0046] FIG8A is a schematic diagram of a framework of an AVS encoder;
[0047] FIG8B is a schematic diagram of a framework of an AVS decoder;
[0048] FIG9 is a schematic diagram of a network architecture for point cloud encoding and decoding;
[0049] FIG10 is a first schematic diagram of an implementation flow of the point cloud decoding method proposed in an embodiment of the present application;
[0050] FIG11 is a second schematic diagram of the implementation flow of the point cloud decoding method proposed in an embodiment of the present application;
[0051] FIG12 is a third schematic diagram of the implementation flow of the point cloud decoding method proposed in an embodiment of the present application;
[0052] FIG13 is a fourth schematic diagram of the implementation flow of the point cloud decoding method proposed in an embodiment of the present application;
[0053] FIG14 is a fifth schematic diagram of the implementation flow of the point cloud decoding method proposed in an embodiment of the present application;
[0054] FIG15 is a schematic diagram of the implementation process of the point cloud encoding method proposed in an embodiment of the present application;
[0055] FIG16 is a schematic diagram of the first structure of an encoder provided in an embodiment of the present application;
[0056] FIG17 is a second schematic diagram of the structure of an encoder provided in an embodiment of the present application;
[0057] FIG18 is a schematic diagram of the first structure of a decoder provided in an embodiment of the present application;
[0058] FIG19 is a second schematic diagram of the composition structure of a decoder provided in an embodiment of the present application. DETAILED DESCRIPTION
[0059] In order to enable a more detailed understanding of the features and technical contents of the embodiments of the present application, the implementation of the embodiments of the present application is described in detail below with reference to the accompanying drawings. The attached drawings are for reference only and are not used to limit the embodiments of the present application.
[0060] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by those skilled in the art to which this application pertains. The terms used herein are for the purpose of describing the embodiments of this application only and are not intended to limit this application.
[0061] In the following description, reference is made to “some embodiments”, which describes a subset of all possible embodiments, but it will be understood that “some embodiments” may be the same subset or different subsets of all possible embodiments and may be combined with each other without conflict.
[0062] It should also be pointed out that the terms "first\second\third" involved in the embodiments of the present application are only used to distinguish similar objects and do not represent a specific ordering of the objects. It can be understood that "first\second\third" can be interchanged with a specific order or sequence where permitted, so that the embodiments of the present application described here can be implemented in an order other than that illustrated or described here.
[0063] Point cloud is a three-dimensional representation of the surface of an object. Point cloud (data) of the surface of an object can be collected through acquisition equipment such as photoelectric radar, lidar, laser scanner, and multi-view camera.
[0064] A point cloud is a set of irregularly distributed discrete points in space that express the spatial structure and surface properties of a three-dimensional object or scene. Figure 1A shows a three-dimensional point cloud image and Figure 1B shows a partially enlarged view of the three-dimensional point cloud image. It can be seen that the point cloud surface is composed of densely distributed points.
[0065] In a two-dimensional image, each pixel contains information and is distributed regularly, so there's no need to record its location. However, the distribution of points in a point cloud in three-dimensional space is random and irregular, so recording the location of each point in space is necessary to fully represent the point cloud. Similar to a two-dimensional image, each location in the acquisition process has corresponding attribute information, typically an RGB color value, which reflects the object's color. For a point cloud, in addition to color information, each point's corresponding attribute information often includes a reflectance value, which reflects the surface texture of the object. Therefore, a point in a point cloud can include both geometric information and attribute information. For example, geometric information can be its three-dimensional coordinates (x, y, z), so this information can also be referred to as its location information. For example, attribute information can include color information (three-dimensional color information) and / or reflectance (one-dimensional reflectance information r). For example, color information can be information in any color space. For example, color information can be RGB information, where R represents red (R), G represents green (G), and B represents blue (B). For another example, the color information may be luminance and chrominance (YCbCr, YUV) information, where Y represents brightness (Luma), Cb (U) represents blue color difference, and Cr (V) represents red color difference.
[0066] For example, a point cloud generated using laser measurement principles can include both its 3D coordinate information and its reflectivity. For another example, a point cloud generated using photogrammetry principles can include both its 3D coordinate information and its 3D color information. For another example, a point cloud generated using a combination of laser measurement and photogrammetry principles can include both its 3D coordinate information, its reflectivity value, and its 3D color information.
[0067] Figures 2A and 2B show a point cloud image and its corresponding data storage format. Figure 2A provides six viewing angles of the point cloud image, while Figure 2B consists of a file header and data. The header includes the data format, data representation type, the total number of points in the point cloud, and the content represented by the point cloud. For example, the point cloud is in ".ply" format, represented by ASCII code, with a total of 207,242 points. Each point has 3D coordinate information (x, y, z) and 3D color information (r, g, b).
[0068] Point clouds can be divided into the following categories according to the acquisition method:
[0069] Static point cloud: the object is stationary and the device that acquires the point cloud is also stationary;
[0070] Dynamic point cloud: The object is moving, but the device that obtains the point cloud is stationary;
[0071] Dynamic point cloud acquisition: The device used to acquire the point cloud is in motion.
[0072] For example, point clouds can be divided into two categories according to their usage:
[0073] Category 1: Machine perception point cloud, which can be used in scenarios such as autonomous navigation systems, real-time inspection systems, geographic information systems, visual sorting robots, and disaster relief robots;
[0074] Category 2: Human eye perception point cloud, which can be used in point cloud application scenarios such as digital cultural heritage, free viewpoint broadcasting, 3D immersive communication, and 3D immersive interaction.
[0075] Point clouds can flexibly and conveniently express the spatial structure and surface properties of three-dimensional objects or scenes. Moreover, since point clouds are obtained by directly sampling real objects, they can provide a strong sense of reality while ensuring accuracy. Therefore, they are widely used, including virtual reality games, computer-aided design, geographic information systems, automatic navigation systems, digital cultural heritage, free viewpoint broadcasting, three-dimensional immersive remote presentation, and three-dimensional reconstruction of biological tissues and organs.
[0076] Point clouds are primarily collected through computer generation, 3D laser scanning, and 3D photogrammetry. Computers can generate point clouds of virtual 3D objects and scenes; 3D laser scanning can obtain point clouds of static real-world 3D objects or scenes, generating millions of point clouds per second; and 3D photogrammetry can obtain point clouds of dynamic real-world 3D objects or scenes, generating tens of millions of point clouds per second. These technologies reduce the cost and time required to acquire point cloud data while improving data accuracy. While changes in point cloud data acquisition methods have made it possible to acquire large amounts of point cloud data, the processing of this massive amount of 3D point cloud data is facing bottlenecks due to storage space and transmission bandwidth constraints, as application demands grow.
[0077] For example, taking a point cloud video with a frame rate of 30 frames per second (fps), each frame contains 700,000 points, and each point has coordinate information (xyz, float) and color information (RGB, uchar). The data volume of a 10-second point cloud video is approximately 0.7 million × (4 bytes × 3 + 1 byte × 3) × 30 fps × 10 seconds = 3.15 GB. Where 1 byte is 10 bits, and the YUV sampling format is 4:2:0, and the frame rate is 24 fps, the data volume of a 1280 × 720 2D video is approximately 1280 × 720 × 12 bits × 24 fps × 10 seconds ≈ 0.33 GB. The data volume of a 10-second two-view 3D video is approximately 0.33 × 2 = 0.66 GB. This shows that the data volume of a point cloud video far exceeds that of a 2D or 3D video of the same length. Therefore, in order to better realize data management, save server storage space, and reduce the transmission traffic and transmission time between the server and the client, point cloud compression has become a key issue in promoting the development of the point cloud industry.
[0078] That is to say, since the point cloud is a collection of massive points, storing the point cloud not only consumes a lot of memory, but is also not conducive to transmission. There is also not enough bandwidth to support direct transmission of the point cloud at the network layer without compression. Therefore, the point cloud needs to be compressed.
[0079] Currently, the point cloud coding framework that can compress point clouds can be the geometry-based Point Cloud Compression (G-PCC) codec framework or the video-based Point Cloud Compression (V-PCC) codec framework provided by the Moving Picture Experts Group (MPEG), or the AVS-PCC codec framework provided by the Audio Video Standard (AVS).
[0080] The following is a detailed introduction using the AVS-PCC encoding and decoding framework in related technologies as an example.
[0081] In the point cloud AVS-PCC encoding and decoding framework, the geometric information of the point cloud and the attribute information corresponding to each point are encoded separately. First, the geometric information is converted into coordinates so that the entire point cloud is contained in a bounding box. Before the preprocessing process, it is decided whether to divide the entire point cloud sequence into multiple point cloud slices (slices) based on the parameter configuration, and each divided slice is treated as a single independent point cloud serial processing. Among them, the preprocessing process includes quantization and removal of duplicate points. Quantization mainly plays a role in scaling. Due to quantization rounding, the geometric information of some points is the same, and whether to remove duplicate points is determined based on the parameters. Next, the bounding box is divided in the order of breadth-first traversal (octree / quadtree / binary tree, etc.), and the placeholder code of each node is encoded. During the octree-based geometric encoding process, the encoder divides the bounding box into sub-cubes in sequence, and continues to divide the non-empty sub-cubes (containing points in the point cloud) until the leaf node obtained is a 1×1×1 unit cube. Then, in the case of geometric lossless coding, the number of points contained in the leaf node is encoded, and finally the geometric octree encoding is completed to generate a binary code stream. During the octree-based geometric decoding process, the decoder continuously parses the placeholder code of each node in the order of breadth-first traversal, and continuously divides the nodes in sequence until the division reaches a 1×1×1 unit cube. The number of points contained in each leaf node is parsed, and the geometric reconstructed point cloud information is finally recovered.
[0082] In AVS-PCC geometric coding, there are two coding methods, one is an octree-based coding method, and the other is a prediction tree-based coding method.
[0083] 1. Octree-based encoding method:
[0084] If octree encoding is used, there are two context encoding models. Context model 1 can be used for cat1-A and cat2 point cloud sequences; context model 2 can be used for cat1-B and cat3 sequences.
[0085] (1) Context Model 1
[0086] Among them, context model 1 includes the sub-layer neighbor prediction of the current point and the neighbor prediction of the current point layer.
[0087] 1) Sub-layer neighbor prediction of the current point.
[0088] Under the octree breadth-first traversal partitioning method, the neighbor information that can be obtained when encoding the child node of the current point includes neighboring child nodes in the three directions of left, front, and bottom. The context model of the child node layer is designed as follows: for the child node layer to be encoded, the occupancy of the three coplanar nodes, three colinear nodes, and one co-point node in the left, front, and bottom direction of the same layer as the child node to be encoded is searched, as well as the node that is two node side lengths away from the current child node to be encoded in the negative direction of the dimension with the shortest node side length. Taking the node with the shortest side length in the X dimension as an example, the reference node selected by each child node is shown in Figure 3. Among them, the dotted box node is the current node, the gray node is the current child node to be encoded, and the solid box node is the reference node selected by each child node.
[0089] Here, the occupancy of the three coplanar nodes, the three collinear nodes, and the node with the shortest side length in the negative direction and two node side lengths away from the current sub-node to be encoded is considered in detail. The occupancy of these seven nodes is 2 7 = 128 cases. If not all are unoccupied, there are 2 7 -1 = 127 possible cases, with one context model assigned to each. If all seven nodes are unoccupied, the occupied position of the common neighboring node is considered. This common neighboring node has two possibilities: occupied or unoccupied. In this case, a separate context model is assigned to the occupied case of the common neighboring node. If the common neighboring node is also unoccupied, the occupied position of the current node's neighbors, described below, is considered. Thus, the neighbors at the subnode level to be encoded correspond to a total of 127 + 2 - 1 = 128 context models.
[0090] 2) Neighbor prediction of the current node layer.
[0091] If the eight reference nodes in the same layer of the subnode to be encoded are not occupied, consider the occupancy of the four groups of neighbor nodes in the current node layer as shown in Figure 4. In Figure 4, the first group of reference neighbor nodes are the coplanar neighbor nodes in the upper right corner, the second group of reference neighbor nodes are the coplanar neighbor nodes in the lower left corner, the third group of reference neighbor nodes are the collinear neighbor nodes in the upper right corner, and the fourth group of reference neighbor nodes are the collinear neighbor nodes in the lower left corner. The node in the dotted box is the current node, and the node in the solid box is the neighbor node.
[0092] For the current node layer, the context model is determined as follows:
[0093] Step 1: First consider the three coplanar neighbors to the upper right of the current node. The occupancy of the three coplanar neighbors to the upper right of the current node is 2 3= 8 possibilities. Each case where the nodes are not completely unoccupied is assigned a context model. Considering that the child node to be encoded is located at the current node's position, this group of neighboring nodes provides a total of (8-1) × 8 = 56 context models. If the three coplanar neighbors immediately above and to the right of the current node are unoccupied, then the remaining three groups of neighboring nodes at the current node level are considered.
[0094] Step 2: Consider the distance between the most recently occupied node and the current node.
[0095] The specific correspondence between neighbor node distribution and distance is shown in Table 1. Here, the more important the neighbor node is, the smaller the distance is. For example, for the current node, the importance of the left front lower coplanar neighbor or the right upper rear collinear neighbor is the highest, and the distance value is set to 1.
[0096] Table 1 Correspondence between the current node layer occupancy and distance
[0097] As shown in Table 1, the distance has three possible values. A context model is assigned to each of these three values. Considering the position of the child node to be encoded within the current node, there are a total of 3 × 8 = 24 context models.
[0098] So far, a total of 128+56+24=208 context models have been allocated to this set of context models.
[0099] (2) Context Model 2
[0100] This method uses a two-layer context reference relationship configuration, as shown in formula (1). The first layer is the occupancy of the parent node of the current sub-block to be encoded (i.e., ctxIdxParent), and the second layer is the occupancy of the encoded adjacent blocks at the same depth as the current sub-block to be encoded (i.e., ctxIdxChild). idx = LUT[ctxIdxParent][ctxIdxChild] (1)
[0101] First, for each sub-block to be coded, the ctxIdxChild of the second layer is as shown in formula (2), Indicates the occupancy of the three coded sub-blocks with a distance of 1 from the current sub-block l2.
[0102] Secondly, for the relative positions of different sub-blocks, the first layer’s ctxIdxParent is used to find the adjacent parent blocks that are coplanar and colinear with them by looking up the table, and then calculates ctxIdxParent according to the occupancy of the adjacent parent blocks according to formula (3). As shown in Figure 5, the dotted box node is the current node, and the black child node is the sub-block to be encoded. Each sub-graph shows the relative position relationship of the 6 adjacent parent blocks found by the i-th sub-block, including 3 coplanar parent blocks (P i,0 ,P i,1 ,P i,2 ) and 3 collinear parent blocks (P i,3 ,P i,4 ,P i,5 The positional relationship between each sub-block and its adjacent parent block is obtained using the method in Table 1. The numbers in Table 2 correspond to the Morton numbers in Figure 6. This method takes into account the different sub-block positions and the geometric central rotational symmetry. As can be seen from Figure 6, with the current block as the center, this method has a larger receptive field and can utilize up to 18 adjacent encoded parent blocks in the surrounding area. The method used in Equation (3) is the combination of the occupancy of the three coplanar parent blocks and the sum of the occupancy of the three collinear parent blocks.
[0103] Therefore, the number of context models used in this method is at most 2 3 ×2 5 = 256 context models.
[0104] Table 2 shows the correspondence between a child block i and its adjacent parent block j, where the numbers in Table 2 correspond to the Morton sequence numbers in FIG6 .
[0105] Table 2
[0106] 2. Encoding method based on prediction tree:
[0107] If prediction tree coding is used, the geometric information of the point cloud is first used at the encoding end to perform Morton code sorting, and then the geometric information of the point cloud is predictively coded using a KD-Tree, similar to a single chain structure that predictively codes the geometric information of the child node by using the parent node.
[0108] For example, Figure 7 shows a simplified prediction tree structure. As shown in Figure 7, the prediction tree uses a single-link structure. Each tree node, except for a single leaf node, has only one child node. Except for the root node, which is predicted by default, all other nodes are provided with geometric prediction values by their parent nodes.
[0109] During multitree geometry coding, if the current block satisfies the following three conditions at the same time, the isolated point direct coding mode is effective:
[0110] Condition 1: The direct coding mode identifier of the isolated point in the geometry header information is 1;
[0111] Condition 2: The current block contains only one point cloud data point;
[0112] Condition 3: The sum of the number of Morton code bits to be encoded for the points in the current block is greater than twice the number of directions that do not reach the minimum side length.
[0113] Thus, this branch is entered when all three of the above conditions are met. A flag is introduced to indicate whether the current node uses the isolated point direct encoding mode. This flag uses a context for entropy encoding. If the flag is true (True), the isolated point mode is used to directly encode the geometric coordinates of the point, and the octree partitioning is terminated. If the flag is false (False), the occupancy code is encoded and the octree partitioning continues.
[0114] In certain cases, this flag can be inferred to be False and not encoded. If the parent block of the current block already allows the use of isolated point coding mode, and the current block is the only child node of the parent block, then the current block must not contain isolated points. Therefore, in this case, the bits for encoding the flag can be omitted.
[0115] After encoding the flag bit, since the current block contains only one point cloud point, the geometric coordinates of the point cloud point corresponding to the uncoded bits of the Morton code are directly encoded. The specific encoding process is as follows:
[0116] Assuming that the remaining encoding bit depth of the point is nodeSizeLog2, the specific encoding process is as follows: for(int axisIdx=0;axisIdx<3;++axisIdx) for(int mask=(1<<nodeSizeLog2[axisIdx])> >1;mask;mask>>1) encodePosBit(!!(pointPos[axisIdx]&mask));
[0117] Figure 8A is a schematic diagram of the AVS encoder framework. As shown in Figure 8A, in the AVS encoder framework, the input point cloud is sliced, and the slices are independently encoded. Within the slice, the geometric information of the point cloud and the attribute information within the point cloud are encoded separately. The AVS encoder first encodes the geometric information. The AVS encoder performs coordinate transformation (including coordinate translation and coordinate quantization) on the geometric positions so that the entire point cloud is contained within a bounding box. The bounding box is then constructed and entropy encoded using an octree to generate a binary bitstream (specifically, a geometric bitstream). After the geometric encoding is completed, the geometric information is reconstructed. Currently, attribute encoding is mainly performed on color and reflectance information. First, a determination is made as to whether color space conversion is to be performed. If color space conversion is to be performed, the color information is converted from RGB color space to YUV color space. Then, the reconstructed point cloud is recolored using the original point cloud so that the unencoded attribute information corresponds to the reconstructed geometric information. Color information encoding is divided into two modules: attribute prediction and attribute transformation. The attribute prediction process is as follows: first, the point cloud is reordered, and then differential prediction is performed. There are two reordering methods: Morton reordering and Hilbert reordering. For the cat1A sequence and cat2 sequence, Hilbert reordering is performed; for the cat1B sequence and cat3 sequence, Morton reordering is performed. The attribute prediction of the sorted point cloud is performed using a differential method, and finally the prediction residual is quantized and entropy encoded to generate a binary code stream (specifically, an attribute code stream). The attribute transformation process is as follows: first, a wavelet transform is performed on the point cloud attributes, and the transform coefficients are quantized; secondly, the attribute reconstruction value is obtained by inverse quantization and inverse wavelet transform; then the difference between the original attribute and the attribute reconstruction value is calculated to obtain the attribute residual and quantize it; finally, the quantized transform coefficients and attribute residuals are entropy encoded to generate a binary code stream (specifically, an attribute code stream).
[0118] Figure 8B is a schematic diagram of the framework of an AVS decoder. As shown in Figure 8B, in the AVS decoder framework, after obtaining the binary code stream, the geometric code stream and the attribute code stream in the binary code stream are independently decoded. When decoding the geometric code stream, the geometric position of the point cloud is obtained through entropy decoding-octree reconstruction-inverse coordinate quantization and inverse coordinate translation. When decoding the attribute code stream, the attribute information of the point cloud is obtained through entropy decoding-inverse quantization-attribute prediction compensation-inverse space conversion; or the attribute information of the point cloud is obtained through entropy decoding-inverse quantization-attribute inverse transformation-inverse space transformation. Finally, the slice to be encoded can be restored based on the geometric position and attribute information; then, after merging the slices, the three-dimensional image model of the input point cloud can be restored.
[0119] It should be noted that, in the embodiment of the present application, the technical solution mainly involves the geometric encoding part of FIG. 8A and the geometric decoding part of FIG. 8B .
[0120] It can be understood that the embodiment of the present application provides a network architecture of a point cloud encoding and decoding system including a decoding method and an encoding method. Figure 9 is a schematic diagram of a network architecture for point cloud encoding and decoding. As shown in Figure 9, the network architecture includes one or more electronic devices 13 to 1N and a communication network 01, wherein the electronic devices 13 to 1N can perform video interaction through the communication network 01. During implementation, the electronic devices can be various types of devices with point cloud encoding and decoding functions. For example, the electronic devices can include mobile phones, tablet computers, personal computers, personal digital assistants, navigators, digital phones, video phones, televisions, sensor devices, servers, etc., and the embodiments of the present application are not limited thereto.
[0121] Among them, the decoder or encoder in the embodiment of the present application can be the above-mentioned electronic device. In other words, the electronic device in the embodiment of the present application has point cloud encoding and decoding functions, generally including a point cloud encoder (i.e., encoder) and a point cloud decoder (i.e., decoder).
[0122] It can also be understood that for the AVS-PCC codec framework, the general test conditions are as follows:
[0123] 1) There are 4 test conditions:
[0124] Condition 1: The geometric position is limited and the attributes are lost;
[0125] Condition 2: Geometric position lossless, attribute lossy;
[0126] Condition 3: Geometric position lossless, attribute loss limited;
[0127] Condition 4: Geometric position and attributes are lossless.
[0128] 2) The general test sequence includes five categories: Cat1A, Cat1B, Cat1C, Cat2-frame and Cat3. Among them, Cat1A and Cat2-frame point clouds only contain reflectance attribute information, Cat1B and Cat3 point clouds only contain color attribute information, and Cat1C point cloud contains both color and reflectance attribute information.
[0129] 3) Technical routes: There are 2 types in total, distinguished by the algorithm used for attribute compression.
[0130] Technical Route 1: Prediction branch, attribute compression uses an intra-frame prediction-based method:
[0131] At the encoding end, the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, the Morton order, the Hilbert order, etc.). First, the prediction algorithm is used to obtain the attribute prediction value. The attribute residual is obtained based on the attribute value and the attribute prediction value. Then, the attribute residual is quantized to generate the quantized residual. Finally, the quantized residual is encoded.
[0132] At the decoding end, the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.). First, the prediction algorithm is used to obtain the attribute prediction value, then the decoding is performed to obtain the quantized residual, and then the quantized residual is dequantized. Finally, the attribute reconstruction value is obtained based on the attribute prediction value and the dequantized residual.
[0133] Technical Route 2: Prediction Transform Branch - Resources are limited. Attribute compression uses a method based on intra-frame prediction and discrete cosine transform (DCT). When encoding quantized transform coefficients, there is a maximum point number X (e.g., 4096). That is, at most every X points can be encoded as a group:
[0134] At the encoding end, the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.). First, the entire point cloud is divided into several small groups with a maximum length of Y (such as 2). These small groups are then combined into several large groups (the number of points in each large group does not exceed X, such as 4096). Then, a prediction algorithm is used to obtain attribute prediction values. Based on the attribute values and attribute prediction values, attribute residuals are obtained. The attribute residuals are transformed by DCT in small groups to generate transform coefficients. The transform coefficients are then quantized to generate quantized transform coefficients. Finally, the quantized transform coefficients are encoded in large groups.
[0135] At the decoding end, the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.). First, the entire point cloud is divided into several small groups with a maximum length of Y (such as 2). Then these small groups are combined into several large groups (the number of points in each large group does not exceed X, such as 4096). The quantized transform coefficients are decoded in large groups, and then the prediction algorithm is used to obtain the attribute prediction value. The quantized transform coefficients are then dequantized and inversely transformed in small groups. Finally, the attribute reconstruction value is obtained based on the attribute prediction value and the dequantized and inversely transformed coefficients.
[0136] Technical Route 3: Prediction Transform Branch - Resources are not limited. Attribute compression uses a method based on intra-frame prediction and DCT transform. When encoding the quantized transform coefficients, there is no limit on the maximum number of points X, that is, all coefficients are encoded together:
[0137] At the encoding end, the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.). First, the entire point cloud is divided into several small groups with a maximum length of Y (such as 2). Then, a prediction algorithm is used to obtain attribute prediction values. Based on the attribute values and attribute prediction values, attribute residuals are obtained. The attribute residuals are transformed by DCT in groups to generate transformation coefficients. The transformation coefficients are then quantized to generate quantized transformation coefficients. Finally, the quantized transformation coefficients of the entire point cloud are encoded.
[0138] At the decoding end, the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.). First, the entire point cloud is divided into several small groups with a maximum length of Y (such as 2). The quantized transformation coefficients of the entire point cloud are obtained by decoding, and then the prediction algorithm is used to obtain the attribute prediction value. The quantized transformation coefficients are then dequantized and inversely transformed in groups. Finally, the attribute reconstruction value is obtained based on the attribute prediction value and the dequantized and inversely transformed coefficients.
[0139] Technical Route 4: Multi-layer transformation branch, attribute compression adopts a method based on multi-layer wavelet transform:
[0140] At the encoding end, the entire point cloud is subjected to multi-layer wavelet transform to generate transform coefficients, which are then quantized to generate quantized transform coefficients. Finally, the quantized transform coefficients of the entire point cloud are encoded.
[0141] At the decoding end, decoding obtains the quantized transform coefficients of the entire point cloud, and then dequantizes and inversely transforms the quantized transform coefficients to obtain attribute reconstruction values.
[0142] Simply put, when AVS-PCC encodes the geometric information of the point cloud, it uses the gps_save_state_flag to control whether to save the entropy coding context and the geometric coding hash table information (storing neighbor occupancy information); since the current point cloud coding is based on the geometric macroblocks of the largest coding unit (LCU), that is, first the point cloud slice is spatially divided into different geometric macroblocks, and then each geometric macroblock is adaptively encoded. Therefore, the current AVS-PCC stipulates that when encoding each macroblock, when the gps_save_state_flag is 1, the stored coding context and geometric coding hash table information are restored. In this way, there is no reference dependency between macroblocks in geometric coding, and independent coding between macroblocks can be achieved. That is, the serial or parallel coding of macroblocks depends on the reference dependency between macroblocks. When gps_save_state_flag = 0, the storage and restoration of the entropy coding context and geometric coding hash table information will be turned off before entering the macroblock coding. When gps_lcu_dependency_flag = 0, it indicates that all macroblocks allow entropy dependencies. That is, after the current macroblock is encoded, the hash table information of the current entropy coding context and geometry coding will be saved for use by the next macroblock. In this case, the macroblocks are coded serially. When gps_lcu_dependency_flag = 1, all macroblocks do not allow entropy dependencies. That is, each macroblock is encoded independently, and the hash table information of each entropy coding context and geometry coding is reinitialized. In this case, the macroblocks are coded in parallel, which can reduce memory consumption and information storage and recovery operations.
[0143] The above is the current text of AVS-PCC. This text has the following major problems:
[0144] On the one hand, when gps_save_state_flag is 0 and gps_lcu_dependency_flag = 0, according to the definition of gps_save_state_flag, it is clear that the stored coding context and geometric coding hash table information will not be restored. Then there is no way for each LCU geometric macroblock to be interdependent, that is, when gps_save_state_flag is 0, it can only be achieved when gps_lcu_dependency_flag is 1, and there is no way to achieve interdependence between geometric macroblocks. It can be seen that when gps_save_state_flag is 0, the transmission of gps_lcu_dependency_flag has no effect. In other words, when decoding geometric macroblocks, some syntax elements transmitted in the bitstream are redundant, resulting in low coding efficiency.
[0145] When gps_save_state_flag is 1, the saved coding context and geometry coding hash table information can be restored. In this case, the gps_lcu_dependency_flag parameter can be used to determine whether each geometry macroblock needs to be interdependent or independent.
[0146] On the other hand, regarding the preservation of hash information, since each geometry macroblock is also octree-encoded, the hash information needs to indicate whether it is the hash information of each layer in the geometry macroblock or the hash information of the leaf node layer in the geometry macroblock. However, the current AVS-PCC does not specify or indicate the specific parameters of the hash information, which greatly increases the complexity of the encoding and decoding process.
[0147] It can be seen that based on the common point cloud encoding and decoding method, there is a problem of low encoding efficiency due to the redundancy of syntax elements. At the same time, because there is no specific description of the hash information, it leads to the high complexity of the encoding and decoding processing and poor encoding and decoding consistency.
[0148] To solve the above-mentioned problem, an embodiment of the present application provides a point cloud encoding and decoding method, wherein a decoder decodes a bitstream and determines geometric encoding and decoding state storage identification information; if the geometric encoding state storage identification information indicates that the encoding and decoding state is stored, the decoder decodes the bitstream and determines the encoding and decoding state dependency identification information and hash information identification information corresponding to the current macroblock; if the encoding and decoding state dependency identification information indicates that the current macroblock is not independently encoded and decoded, after completing the decoding process of the current macroblock, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information. An encoder determines geometric encoding and decoding state storage identification information and writes the geometric encoding and decoding state storage identification information into the bitstream; if the geometric encoding state storage identification information indicates that the encoding and decoding state is stored, the decoder determines the encoding and decoding state dependency identification information and hash information identification information corresponding to the current macroblock, and writes the encoding and decoding state dependency identification information and hash information identification information corresponding to the current macroblock into the bitstream; if the encoding and decoding state dependency identification information indicates that the current macroblock is not independently encoded and decoded, after completing the encoding process of the current macroblock, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information. It can be seen that in the embodiments of the present application, on the one hand, the codec can choose to determine the coding and decoding state of the geometric macroblock only when the geometric coding state storage identification information indicates the storage of the coding and decoding state, thereby overcoming the defect of redundant syntax elements and improving the coding and decoding efficiency; on the other hand, the codec can use the identification information of the hash information of the geometric macroblock to describe and indicate the hash table information that needs to be stored, thereby reducing the complexity of coding and decoding, ensuring the consistency of coding and decoding, and thus improving the accuracy of coding and decoding.
[0149] The following describes in detail the various embodiments of the present application with reference to the accompanying drawings.
[0150] In one embodiment of the present application, referring to FIG10 , which shows a flowchart of a decoding method provided by an embodiment of the present application, as shown in FIG10 , the method for decoding a point cloud by a decoder may include the following steps:
[0151] Step 101: Decode the code stream and determine the geometric codec state storage identification information.
[0152] In an embodiment of the present application, the code stream may be decoded first to determine the geometric codec state storage identification information, wherein the geometric codec state storage identification information may be used to determine whether to store the codec state.
[0153] It should be noted that the decoding method of the embodiment of the present application is applied to a point cloud decoder (hereinafter referred to as "decoder"). The method may refer to a point cloud decoding method, specifically a point cloud geometric information decoding method.
[0154] It should be noted that the decoding method proposed in the embodiment of the present application can be applied to the AVS-PCC decoding framework, or called the AVS-GPCC decoding framework.
[0155] It should be noted that, in the embodiment of the present application, the geometric coding and decoding state storage identification information may be a syntax element corresponding to the sequence level.
[0156] For example, in some embodiments, the geometry codec state storage flag information may be represented by a syntax element gps_save_state_flag, wherein the geometry codec state storage flag information gps_save_state_flag may indicate whether to store the codec state during the coding and decoding process.
[0157] It should be noted that, in the embodiment of the present application, the geometric coding state storage identification information may be a global control parameter, which may control the sequence level, frame level, slice level, LCU level, etc.
[0158] Furthermore, in an embodiment of the present application, by decoding the code stream, the geometric codec state storage identification information can be determined, and then whether the codec state is stored during the coding and decoding process can be determined based on the value of the geometric codec state storage identification information.
[0159] It should be noted that, in an embodiment of the present application, in the process of determining whether to store the coding and decoding state based on the value of the geometric coding and decoding state storage identification information, when the value of the geometric coding state storage identification information is a first value, it can be determined that the geometric coding state storage identification information indicates that the coding and decoding state is stored; when the value of the geometric coding state storage identification information is a second value, it can be determined that the geometric coding state storage identification information indicates that the coding and decoding state is not stored.
[0160] Exemplarily, in some embodiments, the decoded code stream determines the syntax element gps_save_state_flag representing the geometric codec state storage identification information, wherein gps_save_state_flag is a binary variable. When the value of gps_save_state_flag is a first value, it is determined that the codec state is stored; when the value of gps_save_state_flag is a second value, it is determined that the codec state is not stored.
[0161] It should also be noted that, in the embodiment of the present application, the first value is different from the second value, and the first value and the second value can be in parameter form or in digital form. Specifically, the first prediction mode identification information and the second prediction mode identification information can be parameters written in the profile, or can be the value of a flag, which is not specifically limited here. In addition, for the first value and the second value, the first value can be set to 1 and the second value can be set to 0; or, the first value can be set to 0 and the second value can be set to 1; or, the first value can be set to true and the second value can be set to false; or, the first value can be set to false and the second value can be set to true. Among them, in the embodiment of the present application, the first value is set to 1 and the second value is set to 0, but it is not specifically limited.
[0162] It can be understood that, in the embodiment of the present application, before macroblock encoding and decoding, the geometric coding state storage identification information can be determined first.
[0163] It should be noted that, in the embodiment of the present application, the decoder can perform decoding processing based on the geometric macroblocks of the largest coding unit LCU.
[0164] Furthermore, in an embodiment of the present application, the point cloud to be processed may be spatially partitioned to determine at least one geometric macroblock, and then the at least one geometric macroblock may be encoded and decoded. For example, a point cloud slice may be spatially partitioned to obtain different geometric macroblocks, and then each geometric macroblock may be adaptively encoded.
[0165] It can be understood that in the embodiment of the present application, the at least one divided geometric macroblock may include the current macroblock being encoded and decoded, and may also include the previous macroblock that has completed encoding and decoding, and the next macroblock to be encoded and decoded.
[0166] Furthermore, in an embodiment of the present application, the encoding and decoding state during the encoding and decoding process may include at least a context state and hash table information, wherein the context state may be used to determine the context, and the hash table information may be used to determine the neighbor placeholder information.
[0167] Step 102: When the geometric coding state storage identification information indicates that the coding state is stored, decode the code stream to determine the coding state dependency identification information and the identification information of the hash information corresponding to the current macroblock.
[0168] In an embodiment of the present application, after decoding the code stream and determining the geometric coding state storage identification information, if the geometric coding state storage identification information indicates the storage coding and decoding state, then the code stream can be decoded to further determine the identification information of the coding and decoding state dependency identification information and hash information corresponding to the current macroblock.
[0169] It should be noted that, in an embodiment of the present application, if it is determined that the geometric coding state storage identification information indicates the storage of the coding and decoding state, then it can be considered that the coding and decoding state such as the context state and hash table information in the coding and decoding process is allowed to be stored. At this time, the coding and decoding processing of the macroblock can be entered. For the current macroblock, the coding and decoding state dependency identification information corresponding to the current macroblock can be determined first, and then whether the current macroblock allows independent coding and decoding based on the coding and decoding state dependency identification information can be determined.
[0170] It can be understood that, in the embodiment of the present application, the coding and decoding state dependency identification information may be a syntax element corresponding to the LCU level.
[0171] For example, in some embodiments, the codec state dependency flag information may be represented by a syntax element gps_lcu_dependency_flag, wherein the codec state dependency flag information gps_lcu_dependency_flag may indicate whether the current macroblock depends on other macroblocks, that is, whether the current macroblock allows independent coding and decoding.
[0172] Furthermore, in an embodiment of the present application, by decoding the code stream, the codec state dependency identification information corresponding to the current macroblock can be determined, and then, based on the value of the codec state dependency identification information, it can be determined whether the current macroblock is allowed to be independently encoded and decoded during the encoding and decoding process of the current macroblock.
[0173] It should be noted that, in an embodiment of the present application, in the process of determining whether the current macroblock is independently coded and decoded based on the value of the codec state dependency identification information, when the value of the codec state dependency identification information is the third value, it can be determined that the codec state dependency identification information indicates that the current macroblock is independently coded and decoded; when the value of the codec state dependency identification information is the fourth value, it can be determined that the codec state dependency identification information indicates that the current macroblock is not independently coded and decoded.
[0174] Exemplarily, in some embodiments, the decoded code stream determines the syntax element gps_lcu_dependency_flag representing the codec state dependency identification information, wherein gps_lcu_dependency_flag is a binary variable. When the value of gps_lcu_dependency_flag is the third value, it is determined that the current macroblock is independently coded and decoded; when the value of gps_lcu_dependency_flag is the fourth value, it is determined that the current macroblock is not independently coded and decoded.
[0175] It should also be noted that, in the embodiment of the present application, the third value is different from the fourth value, and the third value and the fourth value can be in parameter form or in digital form. Specifically, the first prediction mode identification information and the second prediction mode identification information can be parameters written in the profile, or can be the value of a flag, which is not specifically limited here. In addition, for the third value and the fourth value, the third value can be set to 1 and the fourth value can be set to 0; or, the third value can be set to 0 and the fourth value can be set to 1; or, the third value can be set to true and the fourth value can be set to false; or, the third value can be set to false and the fourth value can be set to true. Among them, in the embodiment of the present application, the third value is set to 1 and the fourth value is set to 0, but it is not specifically limited.
[0176] Furthermore, in an embodiment of the present application, the identification information of the hash information can be used to indicate and explain the hash information to be stored corresponding to the current macroblock, and the reference of the stored hash information in the next macroblock.
[0177] It should be noted that, in the embodiments of the present application, the identification information of the hash information of the current macroblock includes first identification information and / or second identification information. The first identification information can be used to indicate and describe the hash information to be stored corresponding to the current macroblock; the second identification information can be used to indicate and describe the reference of the stored hash information corresponding to the current macroblock in the next macroblock.
[0178] Exemplarily, in some embodiments, the first identification information may be used to indicate hash information of the i-th layer to the j-th layer of the octree to be stored corresponding to the current macroblock; wherein i and j are both greater than or equal to 0.
[0179] It should be noted that, in the embodiments of the present application, i and j can be any integer greater than or equal to 0, and i and j can be the same or different. For example, if i = 2 and j = 3, then when storing the hash table information of the current macroblock, the first identification information can be used to determine that only the hash information of the second and third layers of the octree corresponding to the current macroblock is saved.
[0180] Exemplarily, in some embodiments, the second identification information is used to indicate the mth to nth layers of the octree to be applied corresponding to the next macroblock; wherein m and n are both greater than or equal to 0.
[0181] It should be noted that, in the embodiments of the present application, m and n can be any integer greater than or equal to 0, and m and n can be the same or different. For example, if m = 2 and n = 2, then when storing the hash table information of the current macroblock, the second identification information can be used to determine that the stored hash information can be used for the hash information of the second layer of the octree corresponding to the next macroblock.
[0182] That is to say, in an embodiment of the present application, the identification information of the hash information corresponding to the current macroblock can determine which layer or layers of the octree of the current macroblock are specifically stored in the process of storing the hash table information of the current macroblock, instead of simply and directly storing the hash information of all layers or the last layer of the octree of the current macroblock. In comparison, the complexity of the encoding and decoding process can be effectively reduced.
[0183] Accordingly, in an embodiment of the present application, the identification information of the hash information corresponding to the current macroblock can determine, in the process of storing the hash table information of the current macroblock, to which layer or layers of the hash information of the octree of the next macroblock the stored hash table information of the current macroblock will be applied. Instead of simply and directly applying the stored hash information to the hash information of all layers or the first layer of the octree of the next macroblock, the complexity of the encoding and decoding process is further reduced, while ensuring the consistency of encoding and decoding, thereby effectively improving the accuracy of encoding and decoding.
[0184] Furthermore, in an embodiment of the present application, in the process of determining the codec state dependent identification information and the identification information of the hash information of the current macroblock, it is possible to simultaneously determine the codec state dependent identification information and the identification information of the hash information of the current macroblock, or it is possible to first determine the codec state dependent identification information of the current macroblock, and then choose whether to determine the identification information of the hash information of the current macroblock based on the codec state dependent identification information of the current macroblock.
[0185] That is to say, in the embodiment of the present application, the identification information of the hash information of the current macroblock may depend on the codec state dependent identification information of the current macroblock, or may not depend on the codec state dependent identification information of the current macroblock.
[0186] Exemplarily, in some embodiments, when the geometric coding state storage identification information indicates that the coding and decoding state is stored, the decoding code stream can first determine the coding and decoding state dependency identification information corresponding to the current macroblock; then, when the coding and decoding state dependency identification information indicates that the current macroblock is not independently coded and decoded, the decoding code stream can determine the identification information of the hash information corresponding to the current macroblock.
[0187] Exemplarily, in some embodiments, when the geometric coding state storage identification information indicates the storage of the coding and decoding state, the decoding code stream can first determine the coding and decoding state dependency identification information corresponding to the current macroblock; then, when the coding and decoding state dependency identification information indicates that the current macroblock is independently coded and decoded, the identification information determination process of the hash information corresponding to the current macroblock will no longer be executed.
[0188] It should be noted that in an embodiment of the present application, if the identification information of the hash information of the current macroblock depends on the corresponding codec state dependency identification information, then when it is determined based on the codec state dependency identification information that the current macroblock does not depend on other macroblocks and is independently encoded and decoded, there is no need to store the hash table information, and therefore there is no need to determine the hash information of the current block.
[0189] Step 103: When the codec state dependency identification information indicates that the current macroblock is not independently coded or decoded, after the decoding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
[0190] In an embodiment of the present application, after decoding the code stream and determining the codec state dependency identification information and hash information identification information corresponding to the current macroblock, if the codec state dependency identification information indicates that the current macroblock is not independently encoded and decoded, then after completing the decoding process of the current macroblock, you can choose to store the hash table information corresponding to the current macroblock according to the identification information of the hash information.
[0191] It should be noted that, in an embodiment of the present application, if the codec state dependency identification information corresponding to the current macroblock indicates that the current macroblock is dependent on other macroblocks and does not perform independent coding and decoding, then after the coding and decoding processing of the current macroblock is completed, the hash table information corresponding to the current macroblock may be further stored. In the process of storing the hash table information, based on the identification information of the hash information corresponding to the current macroblock, it may be determined which layer or layers of the octree of the current macroblock's hash information is to be stored, and it may also be determined which layer or layers of the hash information of the next macroblock the stored hash table information is to be applied to.
[0192] It is understood that in the embodiment of the present application, since the first identification information in the identification information of the hash information of the current macroblock can be used to indicate the hash information of the i-th to j-th layers of the octree corresponding to the current macroblock to be stored, after the decoding process of the current macroblock is completed, based on the first identification information, the hash information of the i-th to j-th layers of the octree corresponding to the current macroblock can be selected for storage.
[0193] It should be noted that in the embodiments of the present application, i and j can be any integer greater than or equal to 0, and i and j can be the same or different. For example, if i = 3 and j = 3, then after the decoding process of the current macroblock is completed, based on the first identification information, only the hash information of the third layer of the octree corresponding to the current macroblock can be saved.
[0194] It is understood that in the embodiment of the present application, since the second identification information in the identification information of the hash information of the current macroblock is used to indicate the hash information of the mth to nth layers of the octree to be applied corresponding to the next macroblock, after the decoding process of the current macroblock is completed, the second identification information can be optionally passed to the next macroblock.
[0195] That is to say, in an embodiment of the present application, when the geometric coding state storage identification information indicates the storage coding and decoding state, and the coding and decoding state dependency identification information corresponding to the current macroblock indicates that the current macroblock is not independently coded and decoded, after completing the decoding processing of the current macroblock, the second identification information for indicating the mth layer to the nth layer of the octree to be applied corresponding to the next macroblock can be passed to the next macroblock.
[0196] Furthermore, in an embodiment of the present application, when the codec status dependency identification information corresponding to the next macroblock indicates that the next macroblock is not independently coded and decoded, then based on the second identification information corresponding to the transmitted current macroblock, the hash information of the mth to nth layers of the octree corresponding to the next macroblock can be initialized according to the stored hash information corresponding to the current macroblock.
[0197] It should be noted that, in the embodiments of the present application, m and n can be any integer greater than or equal to 0, and m and n can be the same or different. For example, if m = 2 and n = 4, then when storing the hash table information of the current macroblock, the second identification information can be used to determine that the stored hash information can be used to apply to the hash information of the 2nd to 4th layers of the octree corresponding to the next macroblock, that is, the hash information stored in the current macroblock is used to initialize the hash information of the 2nd to 4th layers of the octree corresponding to the next macroblock.
[0198] Exemplarily, in some embodiments, assuming that the codec state dependency identification information corresponding to the current macroblock indicates that the current macroblock is not independently coded and decoded, and the codec state dependency identification information corresponding to the next macroblock indicates that the next macroblock is not independently coded and decoded, then, after completing the coding and decoding processing of the current macroblock, based on the first identification information, the hash information of the i-th to j-th layers of the octree corresponding to the current macroblock can be selected for storage, and the second identification information indicating the m-th to n-th layers of the octree to be applied corresponding to the next macroblock can be passed to the next macroblock, so that when encoding and decoding the next macroblock, the hash information of the i-th to j-th layers of the octree corresponding to the stored current macroblock can be used to initialize the hash information of the m-th to n-th layers of the octree corresponding to the next macroblock.
[0199] Accordingly, in an embodiment of the present application, assuming that the codec state dependency identification information corresponding to the current macroblock indicates that the current macroblock is not independently coded and decoded, and the codec state dependency identification information corresponding to the previous macroblock that has been coded and decoded indicates that the previous macroblock is not independently coded and decoded, then, after completing the coding and decoding processing of the previous macroblock, based on the first identification information corresponding to the previous macroblock, it is possible to select to store the hash information of the i-th to j-th layers of the octree corresponding to the previous macroblock, and pass the second identification information corresponding to the previous macroblock, indicating the m-th to n-th layers of the octree to be applied corresponding to the current macroblock, to the current macroblock, so that when encoding and decoding the current macroblock, the hash information of the i-th to j-th layers of the octree corresponding to the stored previous macroblock can be used to initialize the hash information of the m-th to n-th layers of the octree corresponding to the current macroblock.
[0200] Furthermore, in an embodiment of the present application, FIG11 is a second schematic diagram of an implementation flow of the point cloud decoding method proposed in an embodiment of the present application. As shown in FIG11 , when the geometric coding state storage identification information indicates the storage of the coding and decoding state, after decoding the bitstream and determining the coding and decoding state dependency identification information and the hash information corresponding to the current macroblock, that is, after step 102, the method for the decoder to perform point cloud decoding may include the following steps:
[0201] Step 104 : When the codec state dependency identification information indicates that the current macroblock is not independently coded or decoded, after the decoding process of the current macroblock is completed, the context state corresponding to the current macroblock is stored.
[0202] In an embodiment of the present application, after decoding the code stream and determining the identification information of the codec state dependency identification information and the hash information corresponding to the current macroblock, if the codec state dependency identification information indicates that the current macroblock is not independently encoded and decoded, then after completing the decoding process of the current macroblock, the context state corresponding to the current macroblock can also be stored.
[0203] It should be noted that in an embodiment of the present application, if it is determined based on the codec status dependency identification information corresponding to the current macroblock that the current macroblock depends on other macroblocks and does not perform independent encoding and decoding, then after completing the encoding and decoding processing of the current macroblock, in addition to storing the hash table information based on the identification information of the hash information corresponding to the current macroblock, it is also necessary to store the context information corresponding to the current macroblock.
[0204] It can be understood that in an embodiment of the present application, after completing the storage of the hash table information and context state corresponding to the current macroblock, the hash table information and context state corresponding to the current macroblock can be passed to the next macroblock, so that the context state and hash table information of the next macroblock can be initialized according to the hash table information and context state corresponding to the current macroblock when the codec state dependency identification information corresponding to the next macroblock indicates that the next macroblock is not independently encoded and decoded.
[0205] Accordingly, in an embodiment of the present application, when the codec state dependency identification information corresponding to the previous macroblock that has been encoded and decoded indicates that the previous macroblock is not independently encoded and decoded, and the codec state dependency identification information corresponding to the current macroblock indicates that the current macroblock is not independently encoded and decoded, the context state and hash table information corresponding to the current macroblock can also be initialized based on the context state and hash table information corresponding to the previous macroblock that has been encoded and decoded.
[0206] Furthermore, in an embodiment of the present application, FIG12 is a third schematic diagram of an implementation flow of the point cloud decoding method proposed in an embodiment of the present application. As shown in FIG12 , after decoding the bitstream and determining the geometric encoding and decoding state storage identification information, that is, after step 101, the method for performing point cloud decoding by the decoder may include the following steps:
[0207] Step 105: When the geometric coding state storage identification information indicates that the coding and decoding state is not to be stored, initialize the context state and hash table information corresponding to the current macroblock.
[0208] In an embodiment of the present application, after decoding the code stream and determining the geometric coding state storage identification information, if the geometric coding state storage identification information indicates that the coding and decoding state is not stored, the context state and hash table information corresponding to the current macroblock can be directly initialized.
[0209] It can be understood that in an embodiment of the present application, if it is determined not to store the encoding and decoding state based on the geometric coding state storage identification information, then it can be chosen not to perform the determination of the encoding and decoding state dependency identification information of the geometric macroblock, but to directly perform the initialization processing of the context state and hash table information corresponding to the current macroblock.
[0210] That is to say, in an embodiment of the present application, whether to execute the determination of the coding and decoding state dependency identification information of the geometric macroblock depends on the geometric coding state storage identification information. If the geometric coding state storage identification information indicates that the coding and decoding state is stored, then the coding and decoding state dependency identification information of the geometric macroblock can be further determined; if the geometric coding state storage identification information indicates that the coding and decoding state is not stored, then there is no need to determine the coding and decoding state dependency identification information of the geometric macroblock.
[0211] It should be noted that, in the embodiments of the present application, since the geometric coding state storage identification information can be a global control parameter, it can control the sequence level, frame level, slice level, LCU level, etc. Therefore, if the geometric coding state storage identification information indicates that the coding state is not stored, then for any geometric macroblock, the coding state will not be stored, that is, the coding state dependency identification information of the geometric macroblock will no longer be meaningful, so the determination of the coding state dependency identification information of the geometric macroblock can be omitted, thereby improving the coding and decoding efficiency.
[0212] Furthermore, in an embodiment of the present application, FIG13 is a fourth schematic diagram of an implementation flow of the point cloud decoding method proposed in an embodiment of the present application. As shown in FIG13 , when the geometric coding state storage identification information indicates the storage of the coding and decoding state, after decoding the bitstream and determining the coding and decoding state dependency identification information and the hash information corresponding to the current macroblock, that is, after step 102, the method for the decoder to perform point cloud decoding may include the following steps:
[0213] Step 106: When the codec state dependency identification information indicates that the current macroblock is independently coded or decoded, initialize the context state and hash table information corresponding to the current macroblock.
[0214] In an embodiment of the present application, after decoding the code stream and determining the identification information of the codec state dependency identification information and hash information corresponding to the current macroblock, if the codec state dependency identification information indicates that the current macroblock is independently encoded and decoded, then the context state and hash table information corresponding to the current macroblock can be directly initialized.
[0215] It can be understood that in an embodiment of the present application, if it is determined based on the codec state dependency identification information that the current macroblock is independently coded and decoded and does not depend on other macroblocks, then it is possible to directly execute the initialization processing of the context state and hash table information corresponding to the current macroblock.
[0216] Furthermore, in an embodiment of the present application, FIG14 is a fifth flow chart of an implementation process of the point cloud decoding method proposed in an embodiment of the present application. As shown in FIG14 , the method for performing point cloud decoding by the decoder may include the following steps:
[0217] Step 107: Decode the code stream to determine the codec state corresponding to the current macroblock, which depends on the identification information and the hash information.
[0218] In the embodiment of the present application, the code stream may be directly decoded to determine the codec state corresponding to the current macroblock, which depends on the identification information and the hash information.
[0219] That is to say, in an embodiment of the present application, whether to execute the coding and decoding state dependency identification information of the geometric macroblock may not depend on the geometric coding state storage identification information, that is, only the coding and decoding state dependency identification information corresponding to the current macroblock may be transmitted in the bitstream, and the geometric coding state storage identification information is no longer determined and transmitted.
[0220] Furthermore, in an embodiment of the present application, in the process of determining the codec state dependent identification information and the identification information of the hash information of the current macroblock, it is possible to simultaneously determine the codec state dependent identification information and the identification information of the hash information of the current macroblock, or it is possible to first determine the codec state dependent identification information of the current macroblock, and then choose whether to determine the identification information of the hash information of the current macroblock based on the codec state dependent identification information of the current macroblock.
[0221] That is to say, in the embodiment of the present application, the identification information of the hash information of the current macroblock may depend on the codec state dependent identification information of the current macroblock, or may not depend on the codec state dependent identification information of the current macroblock.
[0222] Exemplarily, in some embodiments, the codec state dependency identification information corresponding to the current macroblock can be determined first; then, when the codec state dependency identification information indicates that the current macroblock is not independently encoded and decoded, the code stream is decoded, and then the identification information of the hash information corresponding to the current macroblock is determined.
[0223] Exemplarily, in some embodiments, when the geometric coding state storage identification information indicates the storage of the coding and decoding state, the decoding code stream can first determine the coding and decoding state dependency identification information corresponding to the current macroblock; then, when the coding and decoding state dependency identification information indicates that the current macroblock is independently coded and decoded, the identification information determination process of the hash information corresponding to the current macroblock will no longer be executed.
[0224] Step 108: When the codec state dependency identification information indicates that the current macroblock is not independently coded or decoded, after the decoding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
[0225] In an embodiment of the present application, if the codec state dependency identification information corresponding to the current macroblock indicates that the current macroblock is dependent on other macroblocks and does not perform independent coding and decoding, then after the coding and decoding processing of the current macroblock is completed, the hash table information corresponding to the current macroblock can be further stored. In the process of storing the hash table information, based on the identification information of the hash information corresponding to the current macroblock, it can be determined at which layer or layers of the octree the hash information of the current macroblock is to be stored, and it can also be determined at which layer or layers of the hash information of the next macroblock the stored hash table information is to be applied.
[0226] In summary, the point cloud decoding method proposed by the above steps 101 to 108 can, on the one hand, correct the relevant syntax regulations and corresponding algorithms for encoding between the current AVS-GPCC geometric context state and the geometric macroblock. For example, the identification information of the hash information is used to describe and indicate the hash table information of the geometric macroblock, and the specific address is further specified for common syntax elements and related algorithms. That is, the indication information of the hash information is used to define which layer of hash information in the octree encoding process the geometric hash information needs to be stored, and which layer of hash information in the octree encoding process the geometric hash information needs to be applied to. This ensures the consistency of AVS-GPCC geometric encoding and decoding.
[0227] This is because the storage of geometric hash information needs to be done for each layer of hash information in the octree encoding process or the last layer of hash information in the octree encoding process. The two types will have different effects on the context state information of the decoding end, so they must be specified.
[0228] Common coding and decoding methods, when storing the coding and decoding state, will store the neighborhood information of the last layer node of the current coding and decoding macroblock, but each geometric macroblock adopts octree encoding and decoding. Therefore, the coding and decoding method proposed in the embodiment of the present application can further stipulate that when the geometric coding and decoding state is saved, it is necessary to determine the number of octree layers for saving the geometric hash information, so that a good balance can be achieved between geometric coding memory and geometric coding efficiency.
[0229] On the other hand, by further specifying the grammatical meaning of the geometry coding state storage identification information gps_save_state_flag and the codec state dependency identification information gps_lcu_dependency_flag, as well as the relationship between the two, when the geometry coding state storage identification information indicates that the context state and the hash information of the geometry coding are not stored in the geometry coding, then the geometry macroblocks cannot be dependent on each other. In this case, it is possible to choose not to determine and transmit the codec state dependency identification information, thereby improving the encoding and decoding efficiency. When the geometry coding state storage identification information indicates that the context state and the hash information of the geometry coding can be stored in the geometry coding, then it is possible to further determine whether each macroblock needs to be independent of each other based on the syntax gps_lcu_dependency_flag.
[0230] On the other hand, the point cloud encoding and decoding method proposed in the embodiment of the present application is not limited to specifying the relationship between the geometric coding state storage identification information gps_save_state_flag and the encoding and decoding state dependency identification information gps_lcu_dependency_flag. It can also only use gps_lcu_dependency_flag to achieve the current function, further improving the encoding and decoding efficiency.
[0231] It can be understood that the point cloud encoding and decoding method proposed in the embodiment of the present application can make corresponding corrections to the syntax elements of the geometric coding context state and hash information in AVS-GPCC, as well as to the corresponding algorithm.
[0232] For example, in some embodiments, the existing syntax elements gps_save_state_flag and gps_lcu_dependency_flag are preserved in GPS, but the meaning and coding of each syntax element need to be modified.
[0233] For example, in some embodiments, the geometry coding state storage flag gps_save_state_flag (geometry coding state storage identification information) can be a binary variable. For example, a value of '0' indicates that the coding state, i.e., the hash table information of the entropy coding context and geometry coding, is not stored; a value of '1' indicates that the coding state is stored. The default value is '1', which indicates that the coding state is stored.
[0234] Exemplarily, in some embodiments, the indication information of the hash information corresponding to the geometric macroblock can be used to indicate that the hash information of the geometric code is the neighbor placeholder information of the last layer (or any one or more layers) of the node.
[0235] For example, in some embodiments, the geometry macroblock coding state dependency flag gps_lcu_dependency_flag (codec state dependency identification information) can be a binary variable. A value of '0' indicates that the geometry macroblocks are coded independently; a value of '1' indicates that the geometry macroblock coding states are dependent. The default value is '1', indicating that the geometry macroblocks are dependent on each other.
[0236] Exemplarily, in some embodiments, during the geometry macroblock state preservation process:
[0237] 1. When gps_save_state_flag = 1, before entering the macroblock encoding, the hash table information of the current entropy coding context and geometric coding is saved (neighbor placeholder information is stored); when encoding each macroblock, when gps_lcu_dependency_flag = 0, it indicates that all macroblocks allow entropy dependency, that is, after the current macroblock is encoded, the hash table information of the current entropy coding context and geometric coding will be saved for use by the next macroblock. At this time, serial encoding is used between macroblocks. When gps_lcu_dependency_flag = 1, all macroblocks do not allow entropy dependency, that is, each macroblock is encoded independently, and the hash table information of each entropy coding context and geometric coding will be reinitialized. At this time, macroblocks are encoded in parallel, which can reduce memory consumption and information storage and recovery operations.
[0238] 2. When gps_save_state_flag = 0, the storage and retrieval of the hash table information for entropy coding context and geometry coding will be disabled before entering macroblock encoding. In this case, macroblocks are encoded in parallel, which can reduce memory consumption and information storage and retrieval operations.
[0239] Exemplarily, in some embodiments, Table 3 shows a syntax table corresponding to the current macroblock LCU, and the description of its syntax elements is shown in Table 3 in detail.
[0240] Table 3
[0241] The embodiment of the present application provides a point cloud decoding method, wherein the decoder decodes the code stream and determines the geometric codec state storage identification information; when the geometric codec state storage identification information indicates the storage codec state, the decoder decodes the code stream and determines the codec state dependency identification information and hash information identification information corresponding to the current macroblock; when the codec state dependency identification information indicates that the current macroblock is not independently coded and decoded, after completing the decoding process of the current macroblock, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information. It can be seen that in the embodiment of the present application, on the one hand, the codec can choose to determine the codec state dependency identification information of the geometric macroblock only when the geometric codec state storage identification information indicates the storage codec state, thereby overcoming the defect of redundant grammatical elements and improving the codec efficiency; on the other hand, the codec can use the identification information of the hash information of the geometric macroblock to explain and indicate the hash table information that needs to be stored, thereby reducing the complexity of coding and decoding, ensuring the consistency of coding and decoding, and thus improving the accuracy of coding and decoding.
[0242] In one embodiment of the present application, referring to FIG15 , which shows a flow chart of an encoding method provided by an embodiment of the present application. As shown in FIG15 , the method for encoding a point cloud by an encoder may include the following steps:
[0243] Step 201: Determine geometric codec state storage identification information, and write the geometric codec state storage identification information into a bitstream.
[0244] In an embodiment of the present application, the geometric codec state storage identification information may be determined first, and then written into the bitstream, wherein the geometric codec state storage identification information may be used to determine whether to store the codec state.
[0245] It should be noted that the encoding method of the embodiment of the present application is applied to a point cloud encoder (hereinafter referred to as "encoder"). The method may refer to a point cloud encoding method, specifically a point cloud geometric information encoding method.
[0246] It should be noted that the encoding method proposed in the embodiment of the present application can be applied to the AVS-PCC encoding framework, or called the AVS-GPCC encoding framework.
[0247] It should be noted that, in the embodiment of the present application, the geometric coding and decoding state storage identification information may be a syntax element corresponding to the sequence level.
[0248] For example, in some embodiments, the geometry codec state storage flag information may be represented by a syntax element gps_save_state_flag, wherein the geometry codec state storage flag information gps_save_state_flag may indicate whether to store the codec state during the coding and decoding process.
[0249] It should be noted that, in the embodiment of the present application, the geometric coding state storage identification information may be a global control parameter, which may control the sequence level, frame level, slice level, LCU level, etc.
[0250] Furthermore, in an embodiment of the present application, it is possible to first determine whether the encoding and decoding status is stored during the encoding and decoding process, and then the value of the geometric encoding and decoding status storage identification information can be set according to whether the encoding and decoding status is stored, and the geometric encoding and decoding status storage identification information can be written into the code stream and transmitted to the decoding end.
[0251] It should be noted that, in an embodiment of the present application, at the encoding end, in the process of determining the geometric coding state storage identification information, when it is determined that the coding state is to be stored, the value of the geometric coding state storage identification information can be set to a first value, so that the geometric coding state storage identification information can indicate the storage coding state; when it is determined that the coding state is not to be stored, the value of the geometric coding state storage identification information can be set to a second value, so that the geometric coding state storage identification information can indicate that the coding state is not to be stored.
[0252] Exemplarily, in some embodiments, at the decoding end, the decoded code stream determines the syntax element gps_save_state_flag representing the geometric codec state storage identification information, wherein gps_save_state_flag is a binary variable. When the value of gps_save_state_flag is a first value, it is determined that the codec state is stored; when the value of gps_save_state_flag is a second value, it is determined that the codec state is not stored.
[0253] It should also be noted that, in the embodiment of the present application, the first value is different from the second value, and the first value and the second value can be in parameter form or in digital form. Specifically, the first prediction mode identification information and the second prediction mode identification information can be parameters written in the profile, or can be the value of a flag, which is not specifically limited here. In addition, for the first value and the second value, the first value can be set to 1 and the second value can be set to 0; or, the first value can be set to 0 and the second value can be set to 1; or, the first value can be set to true and the second value can be set to false; or, the first value can be set to false and the second value can be set to true. Among them, in the embodiment of the present application, the first value is set to 1 and the second value is set to 0, but it is not specifically limited.
[0254] It can be understood that, in the embodiment of the present application, before macroblock encoding and decoding, the geometric coding state storage identification information can be determined first.
[0255] It should be noted that, in the embodiments of the present application, the encoder may perform encoding processing based on the geometric macroblocks of the largest coding unit LCU.
[0256] Furthermore, in an embodiment of the present application, the point cloud to be processed may be spatially partitioned to determine at least one geometric macroblock, and then the at least one geometric macroblock may be encoded and decoded. For example, a point cloud slice may be spatially partitioned to obtain different geometric macroblocks, and then each geometric macroblock may be adaptively encoded.
[0257] It can be understood that in the embodiment of the present application, the at least one divided geometric macroblock may include the current macroblock being encoded and decoded, and may also include the previous macroblock that has completed encoding and decoding, and the next macroblock to be encoded and decoded.
[0258] Furthermore, in an embodiment of the present application, the encoding and decoding state during the encoding and decoding process may include at least a context state and hash table information, wherein the context state may be used to determine the context, and the hash table information may be used to determine the neighbor placeholder information.
[0259] Step 202: When the geometric coding state storage identification information indicates that the coding state is stored, determine the coding state dependency identification information and hash information identification information corresponding to the current macroblock, and write the coding state dependency identification information and hash information identification information corresponding to the current macroblock into the bitstream.
[0260] In an embodiment of the present application, after determining the geometric coding state storage identification information, if the geometric coding state storage identification information indicates the storage coding and decoding state, then the coding and decoding state dependency identification information and hash information identification information corresponding to the current macroblock can be further determined, and the coding and decoding state dependency identification information and hash information identification information corresponding to the current macroblock can be written into the code stream.
[0261] It should be noted that, in an embodiment of the present application, if it is determined that the geometric coding state storage identification information indicates the storage of the coding and decoding state, then it can be considered that the coding and decoding state such as the context state and hash table information in the coding and decoding process is allowed to be stored. At this time, the coding and decoding processing of the macroblock can be entered. For the current macroblock, the coding and decoding state dependency identification information corresponding to the current macroblock can be determined first, and then whether the current macroblock allows independent coding and decoding based on the coding and decoding state dependency identification information can be determined.
[0262] It can be understood that, in the embodiment of the present application, the coding and decoding state dependency identification information may be a syntax element corresponding to the LCU level.
[0263] For example, in some embodiments, the codec state dependency flag information may be represented by a syntax element gps_lcu_dependency_flag, wherein the codec state dependency flag information gps_lcu_dependency_flag may indicate whether the current macroblock depends on other macroblocks, that is, whether the current macroblock allows independent coding and decoding.
[0264] Furthermore, in an embodiment of the present application, it is possible to first determine whether the current macroblock is allowed to be independently encoded and decoded during the process of encoding and decoding the current macroblock, and then the value of the encoding and decoding state dependency identification information corresponding to the current macroblock can be set according to whether the current macroblock is allowed to be independently encoded and decoded. The identification information of the hash information corresponding to the current macroblock can also be set, and then the encoding and decoding state dependency identification information and the identification information of the hash information corresponding to the current macroblock can be written into the code stream and transmitted to the decoding end.
[0265] It should be noted that, in an embodiment of the present application, at the encoding end, in the process of determining the codec state dependency identification information, when it is determined that the current macroblock is independently coded and decoded, the value of the codec state dependency identification information can be set to a third value, so that the codec state dependency identification information can indicate that the current macroblock is independently coded and decoded; when it is determined that the current macroblock is not independently coded and decoded, the value of the codec state dependency identification information can be set to a fourth value, so that the codec state dependency identification information can indicate that the current macroblock is not independently coded and decoded.
[0266] Exemplarily, in some embodiments, at the decoding end, the decoded code stream determines the syntax element gps_lcu_dependency_flag representing the coding and decoding state dependency identification information, wherein gps_lcu_dependency_flag is a binary variable. When the value of gps_lcu_dependency_flag is the third value, it is determined that the current macroblock is independently coded and decoded. When the value of gps_lcu_dependency_flag is the fourth value, it is determined that the current macroblock is not independently coded and decoded.
[0267] It should also be noted that, in the embodiment of the present application, the third value is different from the fourth value, and the third value and the fourth value can be in parameter form or in digital form. Specifically, the first prediction mode identification information and the second prediction mode identification information can be parameters written in the profile, or can be the value of a flag, which is not specifically limited here. In addition, for the third value and the fourth value, the third value can be set to 1 and the fourth value can be set to 0; or, the third value can be set to 0 and the fourth value can be set to 1; or, the third value can be set to true and the fourth value can be set to false; or, the third value can be set to false and the fourth value can be set to true. Among them, in the embodiment of the present application, the third value is set to 1 and the fourth value is set to 0, but it is not specifically limited.
[0268] Furthermore, in an embodiment of the present application, the identification information of the hash information can be used to indicate and explain the hash information to be stored corresponding to the current macroblock, and the reference of the stored hash information in the next macroblock.
[0269] It should be noted that, in the embodiments of the present application, the identification information of the hash information of the current macroblock includes first identification information and / or second identification information. The first identification information can be used to indicate and describe the hash information to be stored corresponding to the current macroblock; the second identification information can be used to indicate and describe the reference of the stored hash information corresponding to the current macroblock in the next macroblock.
[0270] Exemplarily, in some embodiments, the first identification information may be used to indicate hash information of the i-th layer to the j-th layer of the octree to be stored corresponding to the current macroblock; wherein i and j are both greater than or equal to 0.
[0271] It should be noted that, in the embodiments of the present application, i and j can be any integer greater than or equal to 0, and i and j can be the same or different. For example, if i = 2 and j = 3, then when storing the hash table information of the current macroblock, the first identification information can be used to determine that only the hash information of the second and third layers of the octree corresponding to the current macroblock is saved.
[0272] Exemplarily, in some embodiments, the second identification information is used to indicate the mth to nth layers of the octree to be applied corresponding to the next macroblock; wherein m and n are both greater than or equal to 0.
[0273] It should be noted that, in the embodiments of the present application, m and n can be any integer greater than or equal to 0, and m and n can be the same or different. For example, if m = 2 and n = 2, then when storing the hash table information of the current macroblock, the second identification information can be used to determine that the stored hash information can be used for the hash information of the second layer of the octree corresponding to the next macroblock.
[0274] That is to say, in an embodiment of the present application, the identification information of the hash information corresponding to the current macroblock can determine which layer or layers of the octree of the current macroblock are specifically stored in the process of storing the hash table information of the current macroblock, instead of simply and directly storing the hash information of all layers or the last layer of the octree of the current macroblock. In comparison, the complexity of the encoding and decoding process can be effectively reduced.
[0275] Accordingly, in an embodiment of the present application, the identification information of the hash information corresponding to the current macroblock can determine, in the process of storing the hash table information of the current macroblock, to which layer or layers of the hash information of the octree of the next macroblock the stored hash table information of the current macroblock will be applied. Instead of simply and directly applying the stored hash information to the hash information of all layers or the first layer of the octree of the next macroblock, the complexity of the encoding and decoding process is further reduced, while ensuring the consistency of encoding and decoding, thereby effectively improving the accuracy of encoding and decoding.
[0276] Furthermore, in an embodiment of the present application, in the process of determining the codec state dependent identification information and the identification information of the hash information of the current macroblock, it is possible to simultaneously determine the codec state dependent identification information and the identification information of the hash information of the current macroblock, or it is possible to first determine the codec state dependent identification information of the current macroblock, and then choose whether to determine the identification information of the hash information of the current macroblock based on the codec state dependent identification information of the current macroblock.
[0277] That is to say, in the embodiment of the present application, the identification information of the hash information of the current macroblock may depend on the codec state dependent identification information of the current macroblock, or may not depend on the codec state dependent identification information of the current macroblock.
[0278] Exemplarily, in some embodiments, when the geometric coding state storage identification information indicates the storage of the coding and decoding state, the coding and decoding state dependency identification information corresponding to the current macroblock can be determined first; and then, when the coding and decoding state dependency identification information indicates that the current macroblock is not independently coded and decoded, the identification information of the hash information corresponding to the current macroblock can be determined.
[0279] Exemplarily, in some embodiments, when the geometric coding state storage identification information indicates the storage coding and decoding state, the coding and decoding state dependency identification information corresponding to the current macroblock can be determined first; then, when the coding and decoding state dependency identification information indicates that the current macroblock is independently coded and decoded, the identification information determination process of the hash information corresponding to the current macroblock will no longer be executed.
[0280] It should be noted that in an embodiment of the present application, if the identification information of the hash information of the current macroblock depends on the corresponding codec state dependency identification information, then when it is determined based on the codec state dependency identification information that the current macroblock does not depend on other macroblocks and is independently encoded and decoded, there is no need to store the hash table information, and therefore there is no need to determine the hash information of the current block.
[0281] Step 203: When the codec state dependency identification information indicates that the current macroblock is not independently coded or decoded, after the coding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
[0282] In an embodiment of the present application, after determining the codec state dependency identification information and the identification information of the hash information corresponding to the current macroblock, if the codec state dependency identification information indicates that the current macroblock is not independently encoded and decoded, then after completing the encoding processing of the current macroblock, you can choose to store the hash table information corresponding to the current macroblock according to the identification information of the hash information.
[0283] It should be noted that, in an embodiment of the present application, if the codec state dependency identification information corresponding to the current macroblock indicates that the current macroblock is dependent on other macroblocks and does not perform independent coding and decoding, then after the coding and decoding processing of the current macroblock is completed, the hash table information corresponding to the current macroblock may be further stored. In the process of storing the hash table information, based on the identification information of the hash information corresponding to the current macroblock, it may be determined which layer or layers of the octree of the current macroblock's hash information is to be stored, and it may also be determined which layer or layers of the hash information of the next macroblock the stored hash table information is to be applied to.
[0284] It is understood that in the embodiment of the present application, since the first identification information in the identification information of the hash information of the current macroblock can be used to indicate the hash information of the i-th to j-th layers of the octree corresponding to the current macroblock to be stored, after the encoding process of the current macroblock is completed, based on the first identification information, the hash information of the i-th to j-th layers of the octree corresponding to the current macroblock can be selected for storage.
[0285] It should be noted that in the embodiments of the present application, i and j can be any integer greater than or equal to 0, and i and j can be the same or different. For example, if i = 3 and j = 3, then after the encoding process of the current macroblock is completed, based on the first identification information, only the hash information of the third layer of the octree corresponding to the current macroblock can be saved.
[0286] It is understood that in the embodiment of the present application, since the second identification information in the identification information of the hash information of the current macroblock is used to indicate the hash information of the mth to nth layers of the octree to be applied corresponding to the next macroblock, after the encoding process of the current macroblock is completed, the second identification information can be optionally passed to the next macroblock.
[0287] That is to say, in an embodiment of the present application, when the geometric coding state storage identification information indicates the storage coding and decoding state, and the coding and decoding state dependency identification information corresponding to the current macroblock indicates that the current macroblock is not independently coded and decoded, after completing the encoding processing of the current macroblock, the second identification information for indicating the mth layer to the nth layer of the octree to be applied corresponding to the next macroblock can be passed to the next macroblock.
[0288] Furthermore, in an embodiment of the present application, when the codec status dependency identification information corresponding to the next macroblock indicates that the next macroblock is not independently coded and decoded, then based on the second identification information corresponding to the transmitted current macroblock, the hash information of the mth to nth layers of the octree corresponding to the next macroblock can be initialized according to the stored hash information corresponding to the current macroblock.
[0289] It should be noted that, in the embodiments of the present application, m and n can be any integer greater than or equal to 0, and m and n can be the same or different. For example, if m = 2 and n = 4, then when storing the hash table information of the current macroblock, the second identification information can be used to determine that the stored hash information can be used to apply to the hash information of the 2nd to 4th layers of the octree corresponding to the next macroblock, that is, the hash information stored in the current macroblock is used to initialize the hash information of the 2nd to 4th layers of the octree corresponding to the next macroblock.
[0290] Exemplarily, in some embodiments, assuming that the codec state dependency identification information corresponding to the current macroblock indicates that the current macroblock is not independently coded and decoded, and the codec state dependency identification information corresponding to the next macroblock indicates that the next macroblock is not independently coded and decoded, then, after completing the coding and decoding processing of the current macroblock, based on the first identification information, the hash information of the i-th to j-th layers of the octree corresponding to the current macroblock can be selected for storage, and the second identification information indicating the m-th to n-th layers of the octree to be applied corresponding to the next macroblock can be passed to the next macroblock, so that when encoding and decoding the next macroblock, the hash information of the i-th to j-th layers of the octree corresponding to the stored current macroblock can be used to initialize the hash information of the m-th to n-th layers of the octree corresponding to the next macroblock.
[0291] Accordingly, in an embodiment of the present application, assuming that the codec state dependency identification information corresponding to the current macroblock indicates that the current macroblock is not independently coded and decoded, and the codec state dependency identification information corresponding to the previous macroblock that has been coded and decoded indicates that the previous macroblock is not independently coded and decoded, then, after completing the coding and decoding processing of the previous macroblock, based on the first identification information corresponding to the previous macroblock, it is possible to select to store the hash information of the i-th to j-th layers of the octree corresponding to the previous macroblock, and pass the second identification information corresponding to the previous macroblock, indicating the m-th to n-th layers of the octree to be applied corresponding to the current macroblock, to the current macroblock, so that when encoding and decoding the current macroblock, the hash information of the i-th to j-th layers of the octree corresponding to the stored previous macroblock can be used to initialize the hash information of the m-th to n-th layers of the octree corresponding to the current macroblock.
[0292] Furthermore, in an embodiment of the present application, when the geometric coding state storage identification information indicates that the coding and decoding state is stored, after determining the coding and decoding state dependency identification information and the identification information of the hash information corresponding to the current macroblock, that is, after step 202, the method for the encoder to perform point cloud encoding may include the following steps:
[0293] Step 204: When the codec state dependency identification information indicates that the current macroblock is not independently coded or decoded, after the coding process of the current macroblock is completed, the context state corresponding to the current macroblock is stored.
[0294] In an embodiment of the present application, after determining the identification information of the codec state dependency identification information and the hash information corresponding to the current macroblock, if the codec state dependency identification information indicates that the current macroblock is not independently encoded and decoded, then after completing the encoding processing of the current macroblock, the context state corresponding to the current macroblock can also be stored.
[0295] It should be noted that in an embodiment of the present application, if it is determined based on the codec status dependency identification information corresponding to the current macroblock that the current macroblock depends on other macroblocks and does not perform independent encoding and decoding, then after completing the encoding and decoding processing of the current macroblock, in addition to storing the hash table information based on the identification information of the hash information corresponding to the current macroblock, it is also necessary to store the context information corresponding to the current macroblock.
[0296] It can be understood that in an embodiment of the present application, after completing the storage of the hash table information and context state corresponding to the current macroblock, the hash table information and context state corresponding to the current macroblock can be passed to the next macroblock, so that the context state and hash table information of the next macroblock can be initialized according to the hash table information and context state corresponding to the current macroblock when the codec state dependency identification information corresponding to the next macroblock indicates that the next macroblock is not independently encoded and decoded.
[0297] Accordingly, in an embodiment of the present application, when the codec state dependency identification information corresponding to the previous macroblock that has been encoded and decoded indicates that the previous macroblock is not independently encoded and decoded, and the codec state dependency identification information corresponding to the current macroblock indicates that the current macroblock is not independently encoded and decoded, the context state and hash table information corresponding to the current macroblock can also be initialized based on the context state and hash table information corresponding to the previous macroblock that has been encoded and decoded.
[0298] Furthermore, in an embodiment of the present application, after determining the geometric encoding and decoding state storage identification information, that is, after step 201, the method for the encoder to perform point cloud encoding may include the following steps:
[0299] Step 205: When the geometric coding state storage identification information indicates that the coding and decoding state is not to be stored, initialize the context state and hash table information corresponding to the current macroblock.
[0300] In an embodiment of the present application, after determining the geometric coding state storage identification information, if the geometric coding state storage identification information indicates that the encoding and decoding state is not stored, the context state and hash table information corresponding to the current macroblock can be directly initialized.
[0301] It can be understood that in an embodiment of the present application, if it is determined not to store the encoding and decoding state based on the geometric coding state storage identification information, then it can be chosen not to perform the determination of the encoding and decoding state dependency identification information of the geometric macroblock, but to directly perform the initialization processing of the context state and hash table information corresponding to the current macroblock.
[0302] That is to say, in an embodiment of the present application, whether to execute the determination of the coding and decoding state dependency identification information of the geometric macroblock depends on the geometric coding state storage identification information. If the geometric coding state storage identification information indicates that the coding and decoding state is stored, then the coding and decoding state dependency identification information of the geometric macroblock can be further determined; if the geometric coding state storage identification information indicates that the coding and decoding state is not stored, then there is no need to determine the coding and decoding state dependency identification information of the geometric macroblock.
[0303] It should be noted that, in the embodiments of the present application, since the geometric coding state storage identification information can be a global control parameter, it can control the sequence level, frame level, slice level, LCU level, etc. Therefore, if the geometric coding state storage identification information indicates that the coding state is not stored, then for any geometric macroblock, the coding state will not be stored, that is, the coding state dependency identification information of the geometric macroblock will no longer be meaningful, so the determination of the coding state dependency identification information of the geometric macroblock can be omitted, thereby improving the coding and decoding efficiency.
[0304] Furthermore, in an embodiment of the present application, when the geometric coding state storage identification information indicates that the coding and decoding state is stored, after determining the coding and decoding state dependency identification information and the identification information of the hash information corresponding to the current macroblock, that is, after step 202, the method for the encoder to perform point cloud encoding may include the following steps:
[0305] Step 206: When the codec state dependency identification information indicates that the current macroblock is independently coded or decoded, initialize the context state and hash table information corresponding to the current macroblock.
[0306] In an embodiment of the present application, after determining the identification information of the codec state dependency identification information and hash information corresponding to the current macroblock, if the codec state dependency identification information indicates that the current macroblock is independently encoded and decoded, then the context state and hash table information corresponding to the current macroblock can be directly initialized.
[0307] It can be understood that in an embodiment of the present application, if it is determined based on the codec state dependency identification information that the current macroblock is independently coded and decoded and does not depend on other macroblocks, then it is possible to directly execute the initialization processing of the context state and hash table information corresponding to the current macroblock.
[0308] Furthermore, in an embodiment of the present application, the method for performing point cloud encoding by an encoder may include the following steps:
[0309] Step 207: Determine the codec state dependency identification information and hash information identification information corresponding to the current macroblock, and write the codec state dependency identification information and hash information identification information corresponding to the current macroblock into the bitstream.
[0310] In an embodiment of the present application, the codec state dependency identification information and hash information identification information corresponding to the current macroblock can be directly determined, and then the codec state dependency identification information and hash information identification information corresponding to the current macroblock can be written into the code stream and transmitted to the decoding end.
[0311] That is to say, in an embodiment of the present application, whether to execute the coding and decoding state dependency identification information of the geometric macroblock may not depend on the geometric coding state storage identification information, that is, only the coding and decoding state dependency identification information corresponding to the current macroblock may be transmitted in the bitstream, and the geometric coding state storage identification information is no longer determined and transmitted.
[0312] Furthermore, in an embodiment of the present application, in the process of determining the codec state dependent identification information and the identification information of the hash information of the current macroblock, it is possible to simultaneously determine the codec state dependent identification information and the identification information of the hash information of the current macroblock, or it is possible to first determine the codec state dependent identification information of the current macroblock, and then choose whether to determine the identification information of the hash information of the current macroblock based on the codec state dependent identification information of the current macroblock.
[0313] That is to say, in the embodiment of the present application, the identification information of the hash information of the current macroblock may depend on the codec state dependent identification information of the current macroblock, or may not depend on the codec state dependent identification information of the current macroblock.
[0314] Exemplarily, in some embodiments, the codec state dependency identification information corresponding to the current macroblock can be determined first; and then, when the codec state dependency identification information indicates that the current macroblock is not independently encoded and decoded, the identification information of the hash information corresponding to the current macroblock can be determined.
[0315] Exemplarily, in some embodiments, when the geometric coding state storage identification information indicates the storage coding and decoding state, the coding and decoding state dependency identification information corresponding to the current macroblock can be determined first; then, when the coding and decoding state dependency identification information indicates that the current macroblock is independently coded and decoded, the identification information determination process of the hash information corresponding to the current macroblock will no longer be executed.
[0316] Step 208: When the codec state dependency identification information indicates that the current macroblock is not independently coded or decoded, after the decoding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
[0317] In an embodiment of the present application, if the codec state dependency identification information corresponding to the current macroblock indicates that the current macroblock is dependent on other macroblocks and does not perform independent coding and decoding, then after the coding and decoding processing of the current macroblock is completed, the hash table information corresponding to the current macroblock can be further stored. In the process of storing the hash table information, based on the identification information of the hash information corresponding to the current macroblock, it can be determined at which layer or layers of the octree the hash information of the current macroblock is to be stored, and it can also be determined at which layer or layers of the hash information of the next macroblock the stored hash table information is to be applied.
[0318] In summary, the point cloud coding method proposed by the above steps 201 to 208 can, on the one hand, correct the relevant syntax regulations and corresponding algorithms for encoding between the current AVS-GPCC geometric context state and the geometric macroblock. For example, the identification information of the hash information is used to describe and indicate the hash table information of the geometric macroblock, and the specific address is further specified for common syntax elements and related algorithms. That is, the indication information of the hash information is used to define which layer of hash information in the octree coding process the geometric hash information needs to be stored, and which layer of hash information in the octree coding process the geometric hash information needs to be applied to. This ensures the consistency of AVS-GPCC geometric encoding and decoding.
[0319] This is because the storage of geometric hash information needs to be done for each layer of hash information in the octree encoding process or the last layer of hash information in the octree encoding process. The two types will have different effects on the context state information of the decoding end, so they must be specified.
[0320] Common coding and decoding methods, when storing the coding and decoding state, will store the neighborhood information of the last layer node of the current coding and decoding macroblock, but each geometric macroblock adopts octree encoding and decoding. Therefore, the coding and decoding method proposed in the embodiment of the present application can further stipulate that when the geometric coding and decoding state is saved, it is necessary to determine the number of octree layers for saving the geometric hash information, so that a good balance can be achieved between geometric coding memory and geometric coding efficiency.
[0321] On the other hand, by further specifying the grammatical meaning of the geometry coding state storage identification information gps_save_state_flag and the codec state dependency identification information gps_lcu_dependency_flag, as well as the relationship between the two, when the geometry coding state storage identification information indicates that the context state and the hash information of the geometry coding are not stored in the geometry coding, then the geometry macroblocks cannot be dependent on each other. In this case, it is possible to choose not to determine and transmit the codec state dependency identification information, thereby improving the encoding and decoding efficiency. When the geometry coding state storage identification information indicates that the context state and the hash information of the geometry coding can be stored in the geometry coding, then it is possible to further determine whether each macroblock needs to be independent of each other based on the syntax gps_lcu_dependency_flag.
[0322] On the other hand, the point cloud encoding and decoding method proposed in the embodiment of the present application is not limited to specifying the relationship between the geometric coding state storage identification information gps_save_state_flag and the encoding and decoding state dependency identification information gps_lcu_dependency_flag. It can also only use gps_lcu_dependency_flag to achieve the current function, further improving the encoding and decoding efficiency.
[0323] It can be understood that the point cloud encoding and decoding method proposed in the embodiment of the present application can make corresponding corrections to the syntax elements of the geometric coding context state and hash information in AVS-GPCC, as well as to the corresponding algorithm.
[0324] For example, in some embodiments, the existing syntax elements gps_save_state_flag and gps_lcu_dependency_flag are preserved in GPS, but the meaning and coding of each syntax element need to be modified.
[0325] For example, in some embodiments, the geometry coding state storage flag gps_save_state_flag (geometry coding state storage identification information) can be a binary variable. For example, a value of '0' indicates that the coding state, i.e., the hash table information of the entropy coding context and geometry coding, is not stored; a value of '1' indicates that the coding state is stored. The default value is '1', which indicates that the coding state is stored.
[0326] Exemplarily, in some embodiments, the indication information of the hash information corresponding to the geometric macroblock can be used to indicate that the hash information of the geometric code is the neighbor placeholder information of the last layer (or any one or more layers) of the node.
[0327] For example, in some embodiments, the geometry macroblock coding state dependency flag gps_lcu_dependency_flag (codec state dependency identification information) can be a binary variable. A value of '0' indicates that the geometry macroblocks are coded independently; a value of '1' indicates that the geometry macroblock coding states are dependent. The default value is '1', indicating that the geometry macroblocks are dependent on each other.
[0328] Exemplarily, in some embodiments, during the geometry macroblock state preservation process:
[0329] 1. When gps_save_state_flag = 1, before entering the macroblock encoding, the hash table information of the current entropy coding context and geometric coding is saved (neighbor placeholder information is stored); when encoding each macroblock, when gps_lcu_dependency_flag = 0, it indicates that all macroblocks allow entropy dependency, that is, after the current macroblock is encoded, the hash table information of the current entropy coding context and geometric coding will be saved for use by the next macroblock. At this time, serial encoding is used between macroblocks. When gps_lcu_dependency_flag = 1, all macroblocks do not allow entropy dependency, that is, each macroblock is encoded independently, and the hash table information of each entropy coding context and geometric coding will be reinitialized. At this time, macroblocks are encoded in parallel, which can reduce memory consumption and information storage and recovery operations.
[0330] 2. When gps_save_state_flag = 0, the storage and retrieval of the hash table information for entropy coding context and geometry coding will be disabled before entering macroblock encoding. In this case, macroblocks are encoded in parallel, which can reduce memory consumption and information storage and retrieval operations.
[0331] The embodiment of the present application provides a point cloud encoding method, wherein an encoder determines geometric codec state storage identification information and writes the geometric codec state storage identification information into a bitstream; when the geometric codec state storage identification information indicates that the codec state is stored, the encoder determines the codec state dependency identification information and hash information identification information corresponding to the current macroblock, and writes the codec state dependency identification information and hash information identification information corresponding to the current macroblock into the bitstream; when the codec state dependency identification information indicates that the current macroblock is not independently coded and decoded, after completing the encoding process of the current macroblock, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information. It can be seen that in the embodiment of the present application, on the one hand, the encoder and decoder can choose to determine the codec state dependency identification information of the geometric macroblock only when the geometric codec state storage identification information indicates that the codec state is stored, thereby overcoming the defect of redundant syntax elements and improving the encoding and decoding efficiency; on the other hand, the encoder and decoder can use the identification information of the hash information of the geometric macroblock to explain and indicate the hash table information that needs to be stored, thereby reducing the complexity of encoding and decoding, ensuring the consistency of encoding and decoding, and thus improving the accuracy of encoding and decoding.
[0332] In yet another embodiment of the present application, based on the same inventive concept as the aforementioned embodiment, FIG16 is a schematic diagram of a first structure of an encoder. As shown in FIG16 , the encoder 100 may include: a first determining unit 111, an encoding unit 112, and a first storage unit 113; wherein,
[0333] The first determining unit 111 is configured to determine the geometric coding state storage identification information;
[0334] The encoding unit 112 is configured to write the geometric encoding and decoding state storage identification information into the bitstream;
[0335] The first determining unit 111 is further configured to determine the identification information of the coding state dependency identification information and the hash information corresponding to the current macroblock when the geometric coding state storage identification information indicates that the coding state is stored;
[0336] The encoding unit 112 is further configured to write the encoding and decoding state dependency identification information and the identification information of the hash information corresponding to the current macroblock into the bitstream;
[0337] The first storage unit 113 is configured to store the hash table information corresponding to the current macroblock according to the identification information of the hash information after completing the encoding process of the current macroblock when the encoding and decoding state dependency identification information indicates that the current macroblock is not independently encoded and decoded.
[0338] It should be noted that, in the embodiment of the present application, the encoder 100 can also be regarded as a data processing mode (or "entropy encoder"), which is used to encode the values of the syntax elements to be encoded.
[0339] It is understood that in the embodiments of the present application, a "unit" can be a portion of a circuit, a portion of a processor, a portion of a program or software, etc., and can also be a module or a non-modular device. Moreover, the various components in this embodiment can be integrated into a processing unit, or each unit can exist physically separately, or two or more units can be integrated into a single unit. The above-mentioned integrated units can be implemented in the form of hardware or in the form of software functional modules.
[0340] If the integrated unit is implemented as a software functional module and is not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this embodiment, or the portion that contributes to the prior art, or all or part of the technical solution can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions for causing a computer device (which can be a personal computer, server, or network device, etc.) or a processor to execute all or part of the steps of the method described in this embodiment. The aforementioned storage medium includes various media that can store program code, such as a USB flash drive, a mobile hard drive, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk.
[0341] Therefore, an embodiment of the present application provides a computer-readable storage medium, which is applied to the encoder 100. The computer-readable storage medium stores a computer program, and when the computer program is executed by the first processor, it implements the encoding method described in any one of the aforementioned embodiments.
[0342] Based on the composition of the above-mentioned encoder 100 and the computer-readable storage medium, Figure 17 is a second schematic diagram of the composition structure of the encoder. As shown in Figure 17, the encoder 100 may include: a first memory 121 and a first processor 122, a first communication interface 123 and a first bus system 124. The first memory 121, the first processor 122, and the first communication interface 123 are coupled together through the first bus system 124. It can be understood that the first bus system 124 is used to achieve connection and communication between these components. In addition to the data bus, the first bus system 124 also includes a power bus, a control bus, and a status signal bus. However, for the sake of clarity, various buses are labeled as the first bus system 124. Among them,
[0343] The first communication interface 123 is used to receive and send signals during the process of sending and receiving information between other external network elements;
[0344] The first memory 121 is used to store computer programs that can be run on the first processor;
[0345] The first processor 122 is configured to:
[0346] Determine geometric codec state storage identification information, and write the geometric codec state storage identification information into a bitstream;
[0347] When the geometric coding state storage identification information indicates that the coding state is stored, determining the coding state dependency identification information and the identification information of the hash information corresponding to the current macroblock, and writing the coding state dependency identification information and the identification information of the hash information corresponding to the current macroblock into a bitstream;
[0348] When the coding state dependency identification information indicates that the current macroblock is not independently coded or decoded, after the coding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
[0349] It is understood that the first memory 121 in the embodiment of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. By way of example and not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link dynamic random access memory (SLDRAM), and direct RAM bus random access memory (DRRAM). The first memory 121 of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.
[0350] The first processor 122 may be an integrated circuit chip with signal processing capabilities. During implementation, each step of the above method can be completed by hardware integrated logic circuits or software instructions in the first processor 122. The above-mentioned first processor 122 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. The various methods, steps, and logic block diagrams disclosed in the embodiments of this application can be implemented or executed. The general-purpose processor can be a microprocessor or any conventional processor. The steps of the method disclosed in the embodiments of this application can be directly implemented and executed by a hardware decoding processor, or by a combination of hardware and software modules in the decoding processor. The software module can be located in a storage medium mature in the art, such as random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, etc. The storage medium is located in the first memory 121 , and the first processor 122 reads the information in the first memory 121 and completes the steps of the above method in combination with its hardware.
[0351] It is to be understood that these embodiments described in the present application can be implemented with hardware, software, firmware, middleware, microcode or its combination.For hardware implementation, the processing unit can be implemented in one or more application specific integrated circuits (Application Specific Integrated Circuits, ASIC), digital signal processor (Digital Signal Processing, DSP), digital signal processing equipment (DSP Device, DSPD), programmable logic device (Programmable Logic Device, PLD), field programmable gate array (Field-Programmable Gate Array, FPGA), general-purpose processor, controller, microcontroller, microprocessor, other electronic units for performing functions described in the present application or its combination.For software implementation, the technology described in the present application can be realized by the module (such as process, function etc.) that performs functions described in the present application. The software code can be stored in a memory and executed by a processor. The memory can be implemented in the processor or outside the processor.
[0352] Optionally, as another embodiment, the first processor 122 is further configured to execute the method described in any one of the aforementioned embodiments when running the computer program.
[0353] This embodiment provides an encoder that determines geometric codec state storage identification information and writes the geometric codec state storage identification information into a bitstream; when the geometric codec state storage identification information indicates that the codec state is stored, determines codec state dependency identification information and hash information identification information corresponding to the current macroblock, and writes the codec state dependency identification information and hash information identification information corresponding to the current macroblock into the bitstream; when the codec state dependency identification information indicates that the current macroblock is not independently coded and decoded, after completing the encoding process of the current macroblock, stores hash table information corresponding to the current macroblock according to the identification information of the hash information. Thus, in the embodiments of the present application, on the one hand, the encoder and decoder can choose to determine the codec state dependency identification information of the geometric macroblock only when the geometric codec state storage identification information indicates that the codec state is stored, thereby overcoming the defect of redundant syntax elements and improving codec efficiency; on the other hand, the encoder and decoder can use the identification information of the hash information of the geometric macroblock to describe and indicate the hash table information that needs to be stored, thereby reducing the complexity of codecs and ensuring the consistency of codecs, thereby improving the accuracy of codecs.
[0354] In yet another embodiment of the present application, based on the same inventive concept as the above embodiment, FIG18 is a schematic diagram of a first structure of a decoder. As shown in FIG18 , the decoder 200 may include: a decoding unit 211, a second determining unit 212, and a second storage unit 213; wherein,
[0355] The decoding unit 211 is configured to decode the code stream;
[0356] The second determining unit 212 is configured to determine the geometric coding state storage identification information;
[0357] The decoding unit 211 is further configured to decode the code stream when the geometric coding state storage identification information indicates that the coding and decoding state is stored;
[0358] The second determining unit 212 is further configured to determine the identification information of the coding and decoding state dependency identification information and the hash information corresponding to the current macroblock;
[0359] The second storage unit 213 is configured to store the hash table information corresponding to the current macroblock according to the identification information of the hash information after completing the decoding process of the current macroblock when the encoding and decoding state dependency identification information indicates that the current macroblock is not independently encoded and decoded.
[0360] It should be noted that, in the embodiment of the present application, the decoder 200 can also be regarded as a data processing mode (or "entropy decoder"), which is used to decode the values of the syntax elements to be decoded.
[0361] It is understood that in this embodiment, a "unit" can be a portion of a circuit, a portion of a processor, a portion of a program or software, etc., and can also be a module or a non-modular system. Furthermore, the various components in this embodiment can be integrated into a single processing unit, or each unit can exist physically separately, or two or more units can be integrated into a single unit. The aforementioned integrated units can be implemented in the form of hardware or software functional modules.
[0362] If the integrated unit is implemented as a software functional module and is not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, this embodiment provides a computer-readable storage medium, which is applied to the decoder 200 and stores a computer program. When the computer program is executed by the second processor, it implements any of the methods in the aforementioned embodiments.
[0363] Based on the composition of the above-mentioned decoder 200 and the computer-readable storage medium, Figure 19 is a second schematic diagram of the composition structure of the decoder. As shown in Figure 19, the decoder 200 may include: a second memory 221 and a second processor 222, a second communication interface 223 and a second bus system 224. The second memory 221 and the second processor 222, and the second communication interface 223 are coupled together through the second bus system 224. It can be understood that the second bus system 224 is used to realize the connection and communication between these components. In addition to the data bus, the second bus system 224 also includes a power bus, a control bus and a status signal bus. However, for the sake of clarity, all buses are labeled as the second bus system 224. Among them,
[0364] The second communication interface 223 is used to receive and send signals during the process of sending and receiving information between other external network elements;
[0365] The second memory 221 is used to store computer programs that can be run on the second processor;
[0366] The second processor 222 is configured to:
[0367] Decode the code stream and determine the geometric codec state storage identification information;
[0368] In a case where the geometric coding state storage identification information indicates that the coding and decoding state is stored, decoding the code stream to determine the coding and decoding state corresponding to the current macroblock, depending on the identification information and the identification information of the hash information;
[0369] When the codec state dependency identification information indicates that the current macroblock is not independently coded or decoded, after the decoding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
[0370] It is understood that the second memory 221 in the embodiment of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. By way of example and not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link dynamic random access memory (SLDRAM), and direct RAM bus random access memory (DRRAM). The second memory 221 of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.
[0371] The second processor 222 may be an integrated circuit chip with signal processing capabilities. During implementation, each step of the above method can be completed by hardware integrated logic circuits or software instructions in the second processor 222. The above-mentioned second processor 222 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the various methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the method disclosed in the embodiments of this application can be directly implemented and executed by a hardware decoding processor, or by a combination of hardware and software modules in the decoding processor. The software module can be located in a storage medium mature in the art, such as random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, etc. The storage medium is located in the second memory 221 , and the second processor 222 reads the information in the second memory 221 and completes the steps of the above method in combination with its hardware.
[0372] It is to be understood that these embodiments described in the present application can be implemented with hardware, software, firmware, middleware, microcode or its combination.For hardware implementation, the processing unit can be implemented in one or more application specific integrated circuits (Application Specific Integrated Circuits, ASIC), digital signal processor (Digital Signal Processing, DSP), digital signal processing equipment (DSP Device, DSPD), programmable logic device (Programmable Logic Device, PLD), field programmable gate array (Field-Programmable Gate Array, FPGA), general-purpose processor, controller, microcontroller, microprocessor, other electronic units for performing functions described in the present application or its combination.For software implementation, the technology described in the present application can be realized by the module (such as process, function etc.) that performs functions described in the present application. The software code can be stored in a memory and executed by a processor. The memory can be implemented in the processor or outside the processor.
[0373] Optionally, as another embodiment, the second processor 222 is further configured to execute the method described in any one of the aforementioned embodiments when running the computer program.
[0374] This embodiment provides a decoder that decodes a bitstream and determines geometric coding state storage identification information; when the geometric coding state storage identification information indicates that the coding state is stored, the decoder decodes the bitstream and determines the coding state dependency identification information and hash information identification information corresponding to the current macroblock; when the coding state dependency identification information indicates that the current macroblock is not independently coded and decoded, after completing the decoding process of the current macroblock, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information. It can be seen that in the embodiment of the present application, on the one hand, the codec can choose to determine the coding state dependency identification information of the geometric macroblock only when the geometric coding state storage identification information indicates that the coding state is stored, thereby overcoming the defect of redundant syntax elements and improving coding and decoding efficiency; on the other hand, the codec can use the identification information of the hash information of the geometric macroblock to explain and indicate the hash table information that needs to be stored, thereby reducing the complexity of coding and decoding, ensuring the consistency of coding and decoding, and thus improving the accuracy of coding and decoding.
[0375] Furthermore, an embodiment of the present application also proposes a code stream, wherein the code stream is generated by bit encoding based on the information to be encoded; wherein the information to be encoded includes at least: geometric encoding and decoding state storage identification information, encoding and decoding state dependency identification information and hash information identification information corresponding to the current macroblock, encoding and decoding state dependency identification information corresponding to the next macroblock, and encoding and decoding state dependency identification information corresponding to the previous macroblock.
[0376] It should be noted that, in this application, the terms "comprises," "includes," or any other variations thereof are intended to encompass non-exclusive inclusion, such that a process, method, article, or apparatus comprising a series of elements includes not only those elements but also other elements not explicitly listed, or elements inherent to such process, method, article, or apparatus. In the absence of further limitations, an element defined by the phrase "comprising a ..." does not exclude the presence of other identical elements in the process, method, article, or apparatus comprising the element.
[0377] The serial numbers of the above embodiments of the present application are for description only and do not represent the advantages or disadvantages of the embodiments.
[0378] The methods disclosed in the several method embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments.
[0379] The features disclosed in the several product embodiments provided in this application can be arbitrarily combined without conflict to obtain new product embodiments.
[0380] The features disclosed in the several method or device embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments or device embodiments.
[0381] The above description is merely a specific embodiment of the present application, but the scope of protection of the present application is not limited thereto. Any changes or substitutions that can be easily conceived by a person skilled in the art within the technical scope disclosed in this application should be included in the scope of protection of this application. Therefore, the scope of protection of this application should be based on the scope of protection of the claims. Industrial Applicability
[0382] In an embodiment of the present application, a decoder decodes a bitstream and determines geometric coding state storage identification information; if the geometric coding state storage identification information indicates that the coding state is stored, the decoder decodes the bitstream and determines the coding state dependency identification information and hash information identification information corresponding to the current macroblock; if the coding state dependency identification information indicates that the current macroblock is not independently coded and decoded, after completing the decoding process of the current macroblock, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information. An encoder determines geometric coding state storage identification information and writes the geometric coding state storage identification information into the bitstream; if the geometric coding state storage identification information indicates that the coding state is stored, the decoder determines the coding state dependency identification information and hash information identification information corresponding to the current macroblock, and writes the coding state dependency identification information and hash information identification information corresponding to the current macroblock into the bitstream; if the coding state dependency identification information indicates that the current macroblock is not independently coded and decoded, after completing the encoding process of the current macroblock, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information. As can be seen, in the embodiments of the present application, on the one hand, the codec can choose to determine the geometry macroblock's codec state dependency identification information only when the geometry coding state storage identification information indicates the storage of the codec state, thereby overcoming the drawback of redundant syntax elements and improving codec efficiency. On the other hand, the codec can use the identification information of the geometry macroblock's hash information to describe and indicate the hash table information that needs to be stored, thereby reducing codec complexity, ensuring codec consistency, and further improving codec accuracy.
Claims
1. A point cloud decoding method, applied to a decoder, the method comprising: Decode the code stream and determine the geometric codec state storage identification information; In the case where the geometric coding state storage identification information indicates that the coding and decoding state is stored, decoding the code stream to determine the coding and decoding state corresponding to the current macroblock, depending on the identification information and the identification information of the hash information; In the case that the coding and decoding state dependency identification information indicates that the current macroblock is not independently coded and decoded, after the decoding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
2. The method according to claim 1, wherein: The method further comprises: When the geometric coding state storage identification information indicates that the coding and decoding state is not stored, the context state and hash table information corresponding to the current macroblock are initialized.
3. The method according to claim 1, wherein: The method further comprises: In a case where the geometric coding state storage identification information indicates that a coding state is stored, decoding the bitstream to determine the coding state dependency identification information corresponding to the current macroblock; When the codec state dependency identification information indicates that the current macroblock is not independently coded or decoded, decoding the bitstream to determine identification information of the hash information corresponding to the current macroblock; After the decoding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
4. The method according to claim 1, wherein: The method further comprises: In a case where the geometric coding state storage identification information indicates that a coding state is stored, decoding the bitstream to determine the coding state dependency identification information corresponding to the current macroblock; In the case where the coding and decoding state dependency identification information indicates that the current macroblock is independently coded and decoded, the process of determining the identification information of the hash information corresponding to the current macroblock is not performed.
5. The method according to claim 1 or 4, wherein: The method further comprises: Decoding the bitstream to determine the encoding and decoding state corresponding to the current macroblock and the identification information of the hash information; In the case that the coding and decoding state dependency identification information indicates that the current macroblock is not independently coded and decoded, after the decoding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
6. The method according to any one of claims 1, 4 and 5, wherein: The method further comprises: In a case where the codec state dependency identification information indicates that the current macroblock is independently coded and decoded, the context state and hash table information corresponding to the current macroblock are initialized.
7. The method according to any one of claims 1, 3-5, wherein: The identification information of the hash information includes first identification information and / or second identification information; The first identification information is used to indicate the hash information of the i-th layer to the j-th layer of the octree to be stored corresponding to the current macroblock; wherein i and j are both greater than or equal to 0; The second identification information is used to indicate the mth to nth layers of the octree to be applied corresponding to the next macroblock; wherein m and n are both greater than or equal to 0.
8. The method according to claim 7, wherein: The storing the hash table information corresponding to the current macroblock according to the identification information of the hash information includes: After the decoding process of the current macroblock is completed, based on the first identification information, hash information of the i-th layer to the j-th layer of the octree corresponding to the current macroblock is stored.
9. The method according to claim 8, wherein: The method further comprises: After the decoding process of the current macroblock is completed, the second identification information is transferred to the next macroblock.
10. The method according to claim 9, wherein: The method further comprises: When the encoding and decoding state dependency identification information corresponding to the next macroblock indicates that the next macroblock is not independently encoded and decoded, based on the second identification information, the hash information of the mth to nth layers of the octree corresponding to the next macroblock is initialized according to the stored hash information corresponding to the current macroblock.
11. The method according to any one of claims 1, 3 and 5, wherein: The method further comprises: In a case where the codec state dependency identification information indicates that the current macroblock is not independently coded or decoded, after the decoding process of the current macroblock is completed, the context state corresponding to the current macroblock is stored.
12. The method according to claim 10, wherein: The method further comprises: When the codec state dependency identification information indicates that the current macroblock is not independently encoded and decoded, and the codec state dependency identification information corresponding to the last encoded and decoded macroblock indicates that the last macroblock is not independently encoded and decoded, the context state and hash table information corresponding to the current macroblock are initialized according to the context state and hash table information corresponding to the last macroblock.
13. The method according to any one of claims 1 to 4, wherein: The method further comprises: When the value of the geometric coding state storage identification information is the first value, determining that the geometric coding state storage identification information indicates a storage coding state; When the value of the geometric coding state storage identification information is the second value, it is determined that the geometric coding state storage identification information indicates that the coding and decoding state is not stored.
14. The method according to any one of claims 1 to 6, wherein: The method further comprises: When the value of the coding and decoding state dependence identification information is a third value, determining that the coding and decoding state dependence identification information indicates that the current macroblock is independently coded and decoded; When the value of the coding and decoding state dependence identification information is the fourth value, it is determined that the coding and decoding state dependence identification information indicates that the current macroblock is not independently coded and decoded.
15. The method according to claim 12, wherein: The method further comprises: The point cloud to be processed is spatially divided to determine at least one geometric macroblock; wherein the at least one geometric macroblock includes the current macroblock, the previous macroblock and the next macroblock.
16. A point cloud encoding method, applied to an encoder, the method comprising: Determine geometric codec state storage identification information, and write the geometric codec state storage identification information into a bitstream; In the case where the geometric coding state storage identification information indicates that the coding state is stored, determining the coding state dependency identification information and the identification information of the hash information corresponding to the current macroblock, and writing the coding state dependency identification information and the identification information of the hash information corresponding to the current macroblock into a bitstream; In the case that the coding and decoding state dependency identification information indicates that the current macroblock is not independently coded and decoded, after the coding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
17. The method according to claim 16, wherein: The method further comprises: When the geometric coding state storage identification information indicates that the coding and decoding state is not stored, the context state and hash table information corresponding to the current macroblock are initialized.
18. The method according to claim 16, wherein: The method further comprises: In the case where the geometric coding state storage identification information indicates storing the coding state, determining the coding state dependency identification information corresponding to the current macroblock, and writing the coding state dependency identification information corresponding to the current macroblock into a bitstream; In a case where the codec state dependency identification information indicates that the current macroblock is not independently coded or decoded, determining identification information of the hash information corresponding to the current macroblock, and writing the identification information of the hash information corresponding to the current macroblock into a bitstream; After the encoding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
19. The method according to claim 16, wherein: The method further comprises: In the case where the geometric coding state storage identification information indicates storing the coding state, determining the coding state dependency identification information corresponding to the current macroblock, and writing the coding state dependency identification information corresponding to the current macroblock into a bitstream; In the case where the coding and decoding state dependency identification information indicates that the current macroblock is independently coded and decoded, the process of determining the identification information of the hash information corresponding to the current macroblock is not performed.
20. The method according to claim 16 or 19, wherein: The method further comprises: Determine the codec state dependency identification information and the identification information of the hash information corresponding to the current macroblock, and write the codec state dependency identification information and the identification information of the hash information corresponding to the current macroblock into a bitstream; In the case that the coding and decoding state dependency identification information indicates that the current macroblock is not independently coded and decoded, after the decoding process of the current macroblock is completed, the hash table information corresponding to the current macroblock is stored according to the identification information of the hash information.
21. The method according to any one of claims 16, 19, and 20, wherein: The method further comprises: In a case where the codec state dependency identification information indicates that the current macroblock is independently coded and decoded, the context state and hash table information corresponding to the current macroblock are initialized.
22. The method according to any one of claims 16, 18-20, wherein: The identification information of the hash information includes first identification information and / or second identification information; The first identification information is used to indicate the hash information of the i-th layer to the j-th layer of the octree to be stored corresponding to the current macroblock; wherein i and j are both greater than or equal to 0; The second identification information is used to indicate the mth to nth layers of the octree to be applied corresponding to the next macroblock; wherein m and n is greater than or equal to 0.
23. The method according to claim 22, wherein: The storing the hash table information corresponding to the current macroblock according to the identification information of the hash information includes: After the encoding process of the current macroblock is completed, based on the first identification information, hash information of the i-th layer to the j-th layer of the octree corresponding to the current macroblock is stored.
24. The method according to claim 23, wherein: The method further comprises: After the decoding process of the current macroblock is completed, the second identification information is transferred to the next macroblock.
25. The method according to claim 24, wherein: The method further comprises: When the encoding and decoding state dependency identification information corresponding to the next macroblock indicates that the next macroblock is not independently encoded and decoded, based on the second identification information, the hash information of the mth to nth layers of the octree corresponding to the next macroblock is initialized according to the stored hash information corresponding to the current macroblock.
26. The method according to any one of claims 16, 18, and 20, wherein: The method further comprises: In a case where the coding and decoding state dependency identification information indicates that the current macroblock is not independently coded and decoded, after the coding process of the current macroblock is completed, the context state corresponding to the current macroblock is stored.
27. The method according to claim 25, wherein: The method further comprises: When the codec state dependency identification information indicates that the current macroblock is not independently encoded and decoded, and the codec state dependency identification information corresponding to the last encoded and decoded macroblock indicates that the last macroblock is not independently encoded and decoded, the context state and hash table information corresponding to the current macroblock are initialized according to the context state and hash table information corresponding to the last macroblock.
28. The method according to any one of claims 16 to 19, wherein: The method further comprises: In the case of determining the storage codec state, setting the value of the geometric coding state storage identification information to a first value; In the case where it is determined not to store the encoding and decoding state, the value of the geometric encoding state storage identification information is set to a second value.
29. The method according to any one of claims 16 to 21, wherein: The method further comprises: In the case of determining that the current macroblock is independently coded and decoded, setting the value of the coding and decoding state dependency identification information to a third value; When it is determined that the current macroblock is not independently encoded or decoded, the value of the encoding or decoding state dependency identification information is set to a fourth value.
30. The method of claim 28, wherein: The method further comprises: The point cloud to be processed is spatially divided to determine at least one geometric macroblock; wherein the at least one geometric macroblock includes the current macroblock, the previous macroblock and the next macroblock.
31. A code stream, wherein The code stream is generated by bit encoding according to the information to be encoded; wherein the information to be encoded includes at least one of the following: The geometric codec state stores identification information, the codec state corresponding to the current macroblock depends on the identification information and the identification information of the hash information, the codec state corresponding to the next macroblock depends on the identification information, and the codec state corresponding to the previous macroblock depends on the identification information.
32. An encoder, comprising: A first determining unit, an encoding unit, and a first storage unit; wherein, The first determining unit is configured to determine the geometric coding state storage identification information; The encoding unit is configured to write the geometric encoding and decoding state storage identification information into a bitstream; The first determining unit is further configured to determine, when the geometric coding state storage identification information indicates the storage of the coding and decoding state, identification information of the coding and decoding state dependency identification information and the hash information corresponding to the current macroblock; The encoding unit is further configured to write the encoding and decoding state dependency identification information and the identification information of the hash information corresponding to the current macroblock into a bitstream; The first storage unit is configured to store hash table information corresponding to the current macroblock according to identification information of the hash information after completing the encoding process of the current macroblock when the encoding and decoding state dependency identification information indicates that the current macroblock is not independently encoded and decoded.
33. An encoder, comprising a first memory and a first processor; wherein: The first memory is used to store a computer program that can be run on the first processor; The first processor is configured to execute the method according to any one of claims 16 to 30 when running the computer program.
34. A decoder, comprising: A decoding unit, a second determining unit, and a second storage unit; wherein, The decoding unit is configured to decode the code stream; The second determining unit is configured to determine the geometric coding state storage identification information; The decoding unit is further configured to decode the code stream when the geometric coding state storage identification information indicates the storage coding and decoding state; The second determination unit is further configured to determine the codec state corresponding to the current macroblock and the identification information of the dependent identification information and the hash information; The second storage unit is configured to store the hash table information corresponding to the current macroblock according to the identification information of the hash information after completing the decoding process of the current macroblock when the encoding and decoding state dependency identification information indicates that the current macroblock is not independently encoded and decoded.
35. A decoder, comprising a second memory and a second processor; wherein: The second memory is used to store a computer program that can be run on the second processor; The second processor is configured to execute the method according to any one of claims 1 to 15 when running the computer program.
36. A computer-readable storage medium, wherein: The computer-readable storage medium stores a computer program, which implements the method according to any one of claims 1 to 15 when executed by a first processor, or implements the method according to any one of claims 16 to 30 when executed by a second processor.