WO2025217844A1 - 编解码方法、码流、编码器、解码器以及存储介质 - Google Patents

编解码方法、码流、编码器、解码器以及存储介质

Info

Publication number
WO2025217844A1
WO2025217844A1 PCT/CN2024/088399 CN2024088399W WO2025217844A1 WO 2025217844 A1 WO2025217844 A1 WO 2025217844A1 CN 2024088399 W CN2024088399 W CN 2024088399W WO 2025217844 A1 WO2025217844 A1 WO 2025217844A1
Authority
WO
WIPO (PCT)
Prior art keywords
vertex
current vertex
context state
information
inter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
PCT/CN2024/088399
Other languages
English (en)
French (fr)
Inventor
杨付正
霍俊彦
马彦卓
李明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to PCT/CN2024/088399 priority Critical patent/WO2025217844A1/zh
Publication of WO2025217844A1 publication Critical patent/WO2025217844A1/zh
Pending legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding

Definitions

  • the embodiments of the present application relate to the field of point cloud encoding and decoding technology, and in particular to an encoding and decoding method, a bit stream, an encoder, a decoder, and a storage medium.
  • G-PCC geometry-based point cloud compression
  • the embodiments of the present application provide a coding and decoding method, a code stream, an encoder, a decoder, and a storage medium, which can improve the efficiency of geometric coding and thereby enhance the coding and decoding performance of point clouds.
  • an embodiment of the present application provides a decoding method, applied to a decoder, the method comprising:
  • the first bit information of the current vertex indicates that the inter-frame prediction mode is used according to the prediction identification information, determining the inter-frame context state type of the current vertex, and determining the context state and decoder group corresponding to the current vertex according to the reference information of the current vertex and the inter-frame context state type;
  • the target decoder decodes the code stream and determines the first bit information of the current vertex.
  • an embodiment of the present application provides an encoding method, applied to an encoder, the method comprising:
  • the first bit information of the current vertex indicates that the inter-frame prediction mode is used according to the prediction identification information, determining the inter-frame context state type of the current vertex, and determining the context state and encoder group corresponding to the current vertex according to the reference information of the current vertex and the inter-frame context state type;
  • the first bit of information of the current vertex is encoded according to the target encoder, and the obtained encoded bit is written into the code stream.
  • an embodiment of the present application provides a code stream, which is generated by bit encoding based on information to be encoded; wherein the information to be encoded includes at least one of the following: the first bit information of the current vertex and the value of the inter-frame enable identification information.
  • an encoder comprising a first determining unit and an encoding unit, wherein:
  • a first determining unit configured to determine prediction identification information of a current vertex; and when the first bit information of the current vertex indicates that an inter-frame prediction mode is used according to the prediction identification information, determine an inter-frame context state type of the current vertex, and determine a context state and an encoder group corresponding to the current vertex according to the reference information of the current vertex and the inter-frame context state type;
  • the first determining unit is further configured to determine a target encoder corresponding to the current vertex in the encoder group according to the context state;
  • the encoding unit is configured to encode the first bit information of the current vertex according to the target encoder, and write the obtained encoded bits into the code stream.
  • an encoder comprising a first memory and a first processor, wherein:
  • a first memory for storing a computer program capable of running on the first processor
  • the first processor is configured to execute the method according to the second aspect when running a computer program.
  • an embodiment of the present application provides a decoder, comprising a second determining unit and a decoding unit, wherein:
  • a second determining unit configured to determine prediction identification information of a current vertex; and when the first bit information of the current vertex indicates that the inter-frame prediction mode is used according to the prediction identification information, determine an inter-frame context state type of the current vertex, and determine a context state and a decoder group corresponding to the current vertex according to the reference information of the current vertex and the inter-frame context state type;
  • the second determining unit is further configured to determine a target decoder corresponding to the current vertex in the decoder group according to the context state;
  • the decoding unit is configured to determine the first bit information of the current vertex according to the decoding code stream of the target decoder.
  • an embodiment of the present application provides a decoder, comprising a second memory and a second processor, wherein:
  • a second memory for storing a computer program capable of running on the second processor
  • the second processor is configured to execute the method according to the first aspect when running a computer program.
  • an embodiment of the present application provides a computer-readable storage medium having a computer program stored thereon, which, when executed by a processor, implements the method as described in the first aspect or the method as described in the second aspect.
  • an embodiment of the present application provides a computer program product, comprising a computer program or instructions, which, when executed by a processor, implements the method described in the first aspect, or implements the method described in the second aspect.
  • the embodiments of the present application provide a coding and decoding method, a code stream, an encoder, a decoder, and a storage medium.
  • the prediction identification information of the current vertex is determined; when the first bit information of the current vertex is indicated to use the inter-frame prediction mode according to the prediction identification information, the inter-frame context state type of the current vertex is determined, and the context state and encoder group corresponding to the current vertex are determined according to the reference information and the inter-frame context state type of the current vertex; according to the context state, the target encoder corresponding to the current vertex is determined in the encoder group; the first bit information of the current vertex is encoded according to the target encoder, and the obtained encoded bit is written into the code stream.
  • the prediction identification information of the current vertex is determined; when the first bit information of the current vertex is indicated to use the inter-frame prediction mode according to the prediction identification information, the inter-frame context state type of the current vertex is determined, and the context state and decoder group corresponding to the current vertex are determined according to the reference information and the inter-frame context state type of the current vertex; according to the context state, the target decoder corresponding to the current vertex is determined in the decoder group; the code stream is decoded according to the target decoder to determine the first bit information of the current vertex.
  • the prediction identification information of the current vertex is first determined; then, when the first bit of the prediction identification information indicates that the current vertex uses an inter-frame prediction mode, the inter-frame context state type of the current vertex is determined, and the context state and encoder group/decoder group corresponding to the current vertex are determined based on the reference information and the inter-frame context state type of the current vertex; then, based on the context state, the target codec corresponding to the current vertex is determined from the encoder group/decoder group.
  • independent context states are used for different inter-frame context state types, and different context states correspond to their own encoder group/decoder group, which solves the probability update problem caused by different context states sharing the same encoder group/decoder group in the related art, and can select a more appropriate encoder group/decoder group, thereby improving the accuracy of target codec selection.
  • different context states correspond to their own encoder group/decoder group
  • some inter-frame context states can also be merged, thereby solving the problem of slow convergence of the probability corresponding to the inter-frame context state when inter-frame prediction is rarely used, and can improve the inter-frame prediction effect. This improves the geometric coding efficiency of the point cloud, thereby improving the encoding and decoding performance.
  • Figure 1 is a schematic diagram of a point cloud encoding and decoding network architecture
  • FIG2 is a schematic diagram of a composition framework of a G-PCC encoder
  • FIG3 is a schematic diagram of a composition framework of a G-PCC decoder
  • FIG4 is a schematic diagram of a trisoup geometric representation
  • Fig. 5 is a schematic diagram of an application architecture of an OBUF block diagram
  • FIG6 is a schematic diagram of neighbor vertices of an edge to be encoded
  • FIG7 is a schematic diagram of an encoding process based on inter-frame prediction of Trisoup
  • FIG8 is a schematic diagram of the classification of secondary information in a context
  • FIG9 is a flowchart diagram of a decoding method provided in an embodiment of the present application.
  • FIG10 is a second flow chart of a decoding method provided in an embodiment of the present application.
  • FIG11 is a third flow chart of a decoding method provided in an embodiment of the present application.
  • FIG12 is a schematic diagram of a flow chart of an encoding method provided in an embodiment of the present application.
  • FIG13 is a schematic diagram of a detailed flow chart of an encoding method provided in an embodiment of the present application.
  • FIG14 is a schematic diagram of a detailed flow chart of a decoding method provided in an embodiment of the present application.
  • FIG15 is a schematic diagram of the structure of an encoder provided in an embodiment of the present application.
  • FIG16 is a schematic diagram of a specific hardware structure of an encoder provided in an embodiment of the present application.
  • FIG17 is a schematic diagram of the structure of a decoder provided in an embodiment of the present application.
  • FIG18 is a schematic diagram of a specific hardware structure of a decoder provided in an embodiment of the present application.
  • FIG19 is a schematic diagram of the composition structure of a coding and decoding system provided in an embodiment of the present application.
  • G-PCC Geometry-based Point Cloud Compression
  • V-PCC Video-based Point Cloud Compression
  • Geometry-based solid content test model (GeS-TM);
  • FIFO First In First Out
  • Encoded point cloud group (Group of Point cloud, GOP);
  • LOD Level of Detail
  • RAHT Region Adaptive Hierarchal Transform
  • CABAC Context-based Adaptive Binary Arithmetic Coding
  • 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.
  • Point Cloud refers to a collection of massive three-dimensional points.
  • the points in the point cloud can include the location information and attribute information of the points.
  • the location information of the point can be the three-dimensional coordinate information of the point.
  • the location information of the point can also be called the geometric information of the point.
  • the attribute information of the point may include color information and/or reflectivity, etc.
  • color information can be information in any color space.
  • color information can be RGB information. Among them, R represents red (Red, R), G represents green (Green, G), and B represents blue (Blue, B).
  • color information can be brightness and chromaticity (YCbCr, YUV) information. Among them, Y represents brightness, Cb (U) represents blue chromaticity, and Cr (V) represents red chromaticity.
  • a point cloud obtained based on the principle of laser measurement can include the three-dimensional coordinate information of the point and the laser reflection intensity (reflectance) of the point.
  • a point cloud obtained based on the principle of photogrammetry can include the three-dimensional coordinate information of the point and the color information of the point.
  • a point cloud obtained by combining the principles of laser measurement and photogrammetry can include the three-dimensional coordinate information of the point, the laser reflection intensity (reflectance) of the point, and the color information of the point.
  • Point clouds can be divided into the following categories according to the acquisition method:
  • the first type of static point cloud the object is stationary and the device used to obtain the point cloud is also stationary;
  • the second type of dynamic point cloud the object is moving, but the device that obtains the point cloud is stationary;
  • the third type of dynamic point cloud acquisition the device that acquires the point cloud is moving.
  • point clouds can be divided into two categories according to their usage:
  • 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;
  • 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.
  • point clouds are a collection of massive points, storing point clouds 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 point clouds at the network layer without compression. Therefore, point clouds need to be compressed.
  • point cloud coding frameworks that can compress point clouds can be the G-PCC or V-PCC codec frameworks provided by the Moving Picture Experts Group (MPEG), or the AVS-PCC codec framework provided by the Audio Video Standard (AVS).
  • MPEG Moving Picture Experts Group
  • AVS-PCC codec framework provided by the Audio Video Standard (AVS).
  • the G-PCC codec framework can be used to compress the first type of static point clouds and the third type of dynamically acquired point clouds, while the V-PCC codec framework can be used to compress the second type of dynamic point clouds.
  • the G-PCC codec framework is primarily described.
  • FIG1 is a point cloud Schematic diagram of the network architecture for encoding and decoding.
  • 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.
  • the electronic devices can be various types of devices with point cloud encoding and decoding functions.
  • 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.
  • the decoder or encoder in the embodiments of the present application can be the above-mentioned electronic devices.
  • the electronic device in the embodiment of the present application has a point cloud encoding and decoding function, generally including a point cloud encoder (ie, encoder) and a point cloud decoder (ie, decoder).
  • a point cloud encoder ie, encoder
  • a point cloud decoder ie, decoder
  • the point cloud data to be encoded is first divided into multiple slices through slice partitioning. In each slice, the geometric information and attribute information of the point cloud are encoded separately.
  • Figure 2 shows a schematic diagram of the G-PCC encoder architecture.
  • the geometric information is transformed so that the entire point cloud is contained within a bounding box.
  • Quantization is then performed. This quantization step primarily serves a scaling purpose. Due to quantization rounding, the geometric information of some point clouds remains identical. Parameters are then used to determine whether to remove duplicate points. This process of quantization and removing duplicate points is also known as voxelization.
  • the bounding box is then partitioned into an octree or a prediction tree is constructed. During this process, entropy encoding is performed on the points in the leaf nodes of the partition to generate a binary geometry bitstream.
  • entropy encoding is performed on the intersection points (vertices) generated by the partition (surface fitting is performed based on the intersections) to generate a binary geometry bitstream.
  • color conversion is performed to convert the color information (i.e., attribute information) from RGB color space to YUV color space.
  • the reconstructed geometry information is then used to recolor the point cloud, aligning the unencoded attribute information with the reconstructed geometry information.
  • Attribute encoding is mainly performed on color information. In the process of color information encoding, there are two main transformation methods.
  • Figure 3 is a schematic diagram of the composition framework of a G-PCC decoder.
  • the geometric code stream and attribute code stream in the binary code stream are first decoded independently.
  • entropy decoding is first performed, and then one of the following methods is selected: octree partitioning-reconstructed surface estimation or prediction tree construction, and then through geometric reconstruction-coordinate inverse transformation, the geometric information of the point cloud can be obtained; when decoding the attribute code stream, entropy decoding and inverse quantization are first performed, and then one of the following methods is selected: RAHT transformation or LOD partitioning-lifting transformation, and finally through color inverse transformation, the attribute information of the point cloud can be obtained; based on the geometric information and attribute information, the point cloud data to be encoded can be restored.
  • the current geometric coding and decoding of G-PCC can be divided into octree-based geometric coding and decoding, triangle soup (Trisoup)-based geometric coding and decoding, and prediction tree-based geometric coding and decoding, as follows:
  • the geometric information is first transformed so that the entire point cloud is contained within a bounding box defined by two extreme points (0,0,0) and ( 2d , 2d , 2d ).
  • Voxelization is then performed, i.e., quantization, rounding, and removal of duplicate points (determined by parameters).
  • the non-empty sub-cubes (those containing points in the point cloud) in the bounding box are then continuously partitioned into octrees in a breadth-first traversal order.
  • a node is divided into 8 sub-nodes until the resulting leaf node is a 1 ⁇ 1 ⁇ 1 unit cube.
  • the 8-bit binary code generated to indicate whether a point in the sub-cube is occupied (1 for occupied, 0 for unoccupied) is called an ocupancy code.
  • the occupancy code of each node is encoded to generate a binary code stream.
  • the placeholder code of each node is obtained by continuous parsing in the order of breadth-first traversal, and the nodes are continuously divided in turn until a 1 ⁇ 1 ⁇ 1 unit cube is obtained. The division is stopped and the number of points contained in each leaf node is parsed, and finally the geometric reconstructed point cloud information is restored.
  • the octree is first partitioned. Unlike geometric information encoding based on an octree structure, this method does not require the point cloud to be partitioned into bottom-level leaf nodes with side lengths of 1 ⁇ 1 ⁇ 1. Instead, it partitions leaf nodes with specified side lengths.
  • the surface information composed of voxels within the node is then represented by a series of triangle meshes.
  • the parameter Trisoup node size can be used to indicate the size of the block containing the triangle patch. When Trisoup node size is greater than 0, the voxel set within the node is represented by a geometric patch. The up to twelve intersections of the geometric patch with the twelve edges of the block are called vertices.
  • each node has a centroid vertex that encodes the offset value between the final centroid coordinates and the initial centroid coordinates (in the direction of the surface normal vector n), further improving the representation of the surface curvature within each node.
  • surface vertices can also be created and labeled. As shown in Figure 4, a schematic diagram of the trisoup geometric representation is provided here.
  • V1, V2, V3 V4 represents the four vertices
  • n represents the normal vector
  • C represents the centroid vertex
  • Cmean represents the center of mass
  • drift represents the convexity of the point cloud plane in a certain direction. Ray tracing is then used to voxelize these triangles into points to reconstruct the point cloud.
  • the centroid vertex C is encoded as the drift value of the mean of the centers of mass of all vertices.
  • the vector n represents the normal of the triangle surface.
  • the input point cloud is first sorted.
  • the sorting methods currently used include disorder, Morton order, azimuth order, and radial distance order.
  • the prediction tree structure is established by using two different methods, including: high-latency slow mode (KD-Tree, KD tree) and low-latency fast mode (using lidar calibration information to divide each point into different lasers (Laser), and establish a prediction structure according to different Lasers).
  • KD-Tree, KD tree high-latency slow mode
  • Laser low-latency fast mode
  • each node in the prediction tree is traversed, and the geometric position information of the node is predicted by selecting different prediction modes to obtain the prediction residual, and the prediction residual is quantized using the quantization parameter.
  • the prediction residual of the prediction tree node position information, the prediction tree structure, and the quantization parameters are encoded to generate a binary code stream.
  • the decoding end reconstructs the prediction tree structure by continuously parsing the bit stream. Secondly, the geometric position prediction residual information and quantization parameters of each prediction node are obtained through parsing, and the prediction residual is dequantized to restore the reconstructed geometric position information of each node, finally completing the geometric reconstruction at the decoding end.
  • OBUF Optimal Binarization with Update on the Fly
  • the application architecture may include: an OBUF context preprocessing module 51, an OBUF block diagram 52, an actual encoder index module 53, and an encoder group 54.
  • the OBUF block diagram 52 includes an encoder mapping module 521 and an encoder index update module 522, and the encoder group 54 includes a binary entropy encoder 1, a binary entropy encoder 2, a binary entropy encoder 3, ..., a binary entropy encoder N.
  • channel B is used to provide a symbol s to be encoded, which is an occupied bit to be encoded and has a value of 1 or 0;
  • the encoder mapping module 521 is used to perform coder mapping according to the OBUF context preprocessing module 51 and the context state D, and the mapped encoder index value is [1, 2, ..., N], where N is a positive integer.
  • the OBUF technology can be divided into the following three steps:
  • Step 1 Get the context state D of the symbol to be encoded.
  • the context state D of the symbol to be encoded is the input information of the OBUF block diagram, which is composed of the neighbor vertex information that has been encoded in the space.
  • the OBUF block diagram which is composed of the neighbor vertex information that has been encoded in the space.
  • Step 2 Obtain the binary encoder i corresponding to the context state D based on the mapping relationship.
  • each state is mapped to a small number of N coders through a table lookup.
  • each state D is mapped to one of 32 coderi (i is [1, 2, ..., 32]), as shown in the binary entropy encoder i in Figure 5.
  • Step 3 Use entropy encoder i to entropy encode the symbol S.
  • the symbol S to be encoded is sent to the binary arithmetic encoder corresponding to its corresponding context state D for entropy encoding.
  • the encoding process please refer to Related Technology 3.
  • the dynamic OBUF technology no longer uses a fixed number of context states during the encoding process, and can dynamically adjust the number of context states.
  • the dynamic OBUF technology is divided into two stages: 1 Dynamically determine the context and context state; 2 Map the context state to a small number of binary encoder sets (OBUF technology).
  • context information can be divided into primary information and secondary information. Whether some of the secondary information is dynamically adjusted as context, the context consisting of the primary information and selected secondary information is used as the OBUF technology context.
  • FIG. 6 an example of neighbor vertices of the edge to be encoded is shown when the vertices are parallel to the x- axis , y -axis , and z-axis.
  • the context vertex of the vertex to be encoded can be found from the following 12 neighbor nodes (e.g., nodes e1, e2, e3 , e4 , b1 , b2 , b3 , b4 , a1 , a2 , a3 , a4 ), including the following categories:
  • the edge to be encoded corresponds to the vertex on the negative side of the axis (such as the dot-dash line);
  • Contexts are constructed for the vertices to be encoded in a certain order.
  • the first N context vertices in the context are primary information, and the last M context vertices are secondary information.
  • M can be dynamically adjusted during the encoding process. Where M and N are positive integers.
  • Each context vertex can be present or absent, i.e., in state 0 or 1.
  • the context state can be represented by N+M binary bits, with N representing primary information and M representing secondary information.
  • T the number of times each context state is used is recorded.
  • T a preset threshold
  • a new context node is added to the scanning sequence, subdividing the context state by introducing a new context node.
  • Subsequent vertices to be encoded are encoded using this updated set of context states.
  • both intra-frame and inter-frame coding of trisoup vertex information uses OBUF technology for entropy coding.
  • the context construction method for inter-frame coding is different from that for intra-frame coding.
  • the inter-frame context state is actually the union of the intra-frame context state (Intra State) of the current symbol to be encoded and the prediction information of the current vertex to be encoded obtained from the reference frame.
  • FIG7 is a schematic diagram of the coding process based on inter-frame prediction of Trisoup, which specifically provides a schematic diagram of the coding process of the high bit of Trisoup vertex based on inter-frame prediction when the vertex exists in the related art.
  • the process may include:
  • S715 Determine the type as inter-frame context four.
  • S729 Encoding is performed based on the encoder group Coder3.
  • each gray module includes the process of S716 to S722.
  • the encoder group Coder1 includes multiple entropy encoders, for example, Coder1 includes coders1, 2, ..., 32.
  • the encoder group Coder2 includes multiple entropy encoders, for example Coder2 includes coder1, 2, ..., 32, and at this time, one of the encoders is selected for encoding according to the state of inter-frame context one;
  • the encoder group Coder3 includes multiple entropy encoders, for example, Coder3 includes coder1, 2, ..., 32, and at this time, one of the encoders is selected for encoding according to the state of inter-frame context two;
  • the encoder group Coder4 includes multiple entropy encoders, for example, Coder4 includes coder1, 2, ..., 32, and at this time, one of the encoders is selected for encoding according to the state of inter-frame context three;
  • the encoder group Coder5 includes multiple entropy encoders, for example, Coder5 includes coder1, 2, ..., 32, and at this time, one of the encoders is selected for encoding according to the state of the intra-frame context
  • nBadPredComp1 ⁇ 4), that is, the value of isInterGood is determined by isInter, colocatedVertex, nBadPredRef1 and nBadPredComp1.
  • colocatedVertex represents the uncompensated reference vertex information (high bit and low bit)
  • nBadPredRef1 is the number of inaccurate predictions when the neighbor uncompensated reference vertex predicts the neighbor vertex high bit
  • nBadPredComp1 is the number of inaccurate predictions when the neighbor compensated reference vertex predicts the neighbor vertex high bit.
  • isInter is controlled by the syntax element gbh.interPredictionEnabledFlag, which is used to indicate whether the high-level (such as slice level, image level, sequence level, etc.) inter-frame prediction of the vertex to be encoded is enabled. If inter-frame prediction is enabled, it is called a P frame, and isInter is 1; otherwise, if it is not enabled, it is called an I frame, and isInter is 0.
  • gbh.interPredictionEnabledFlag is used to indicate whether the high-level (such as slice level, image level, sequence level, etc.) inter-frame prediction of the vertex to be encoded is enabled. If inter-frame prediction is enabled, it is called a P frame, and isInter is 1; otherwise, if it is not enabled, it is called an I frame, and isInter is 0.
  • the information determined to be inter-frame prediction is divided into the following categories:
  • Prediction is 0 (Pred0): When the neighbor uncompensated reference vertex predicts the neighbor vertex high bit is good, if the uncompensated reference vertex high bit is 0, then the prediction is 0;
  • Prediction is 1 (Pred1): When the neighbor uncompensated reference vertex predicts the neighbor vertex high bit is well predicted, if the uncompensated reference vertex high bit is 1, then the prediction is 1.
  • the secondary information of the intra context contains 15 bits of information.
  • the secondary information of the inter context contains 17 bits of information and is divided into the following four cases: intra secondary information, inter secondary information 1 (not predicted), inter secondary information 2 (predicted to 0), and inter secondary information 3 (predicted to 1), as shown in Figure 8.
  • an embodiment of the present application provides a coding and decoding method, which first determines the prediction identification information of the current vertex; then, when the first bit information of the current vertex is indicated to use the inter-frame prediction mode according to the prediction identification information, the inter-frame context state type of the current vertex is determined, and the context state and encoder group/decoder group corresponding to the current vertex are determined according to the reference information and the inter-frame context state type of the current vertex; then, based on the context state, the target codec corresponding to the current vertex is determined from the encoder group/decoder group; finally, the first bit information of the current vertex is encoded/decoded according to the target codec.
  • independent context states are used for different inter-frame context state types, and different context states correspond to their own encoder groups/decoder groups, respectively, which solves the probability update problem caused by different context states sharing the same encoder group/decoder group in the related technology, and can select a more suitable encoder group/decoder group, thereby improving the accuracy of target codec selection; and because different context states correspond to their own encoder groups/decoder groups, some inter-frame context states can also be merged at the same time, thereby solving the problem of slow convergence of the probability corresponding to the inter-frame context state when inter-frame prediction is rarely used, and can improve the inter-frame prediction effect; thus, the geometric coding efficiency of the point cloud is improved, thereby improving the encoding and decoding performance.
  • FIG9 is a flowchart of a decoding method provided by the embodiment of the present application. As shown in FIG9 , the method may include:
  • S901 Determine the predicted identification information of the current vertex.
  • the decoding method can be applied to the decoder or decoding end in the G-PCC codec framework.
  • the decoding method here can be an inter-frame decoding method, more specifically, an inter-frame decoding method for point cloud geometric information.
  • determining the prediction identification information of the current vertex may include: determining the uncompensated reference vertex information of the current vertex, the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex, the compensation information of the current vertex, and the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex.
  • the prediction identification information of the current vertex is determined according to the uncompensated reference vertex information, the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices, the number of inaccurate predictions of the first bit information of the compensated neighbor vertices, and the value of the inter-frame enabling identification information.
  • whether the current vertex uses the inter-frame prediction mode can be determined based on the values of the uncompensated reference vertex information, uncompensated neighbor vertex information, compensated neighbor vertex information and inter-frame enable identification information.
  • the prediction identification information of the current vertex can be represented by isInterGood.
  • isInterGood specifically refers to whether the compensated neighbor vertex information and uncompensated neighbor vertex information of the current vertex are judged to be good or bad predictions after the inter-frame is turned on. If it is judged to be a good prediction, it means that the value of isInterGood is equal to 1. At this time, the prediction identification information indicates that the first bit information of the current vertex uses the inter-frame prediction mode; if it is judged to be a bad prediction, it means that the value of isInterGood is equal to 0. At this time, the prediction identification information indicates that the first bit information of the current vertex uses the intra-frame prediction mode. In other words, according to the value of isInterGood (0 or 1), it can be divided into two major sets: intra-frame context and inter-frame context.
  • the uncompensated reference vertex information of the current vertex can be represented by colocatedVertex
  • the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex can be represented by nBadPredRef1
  • the number of inaccurate predictions of the first bit information of the compensated neighboring vertices of the current vertex can be represented by nBadPredComp1
  • the inter-frame enable identification information can be represented by isInter.
  • nBadPredRef1 can specifically refer to the number of inaccurate predictions when the neighboring uncompensated reference vertex predicts the first bit information of the neighboring vertex
  • nBadPredComp1 can specifically refer to the number of inaccurate predictions when the neighboring compensated reference vertex predicts the first bit information of the neighboring vertex
  • the value of "isInter” can be controlled by the syntax element gbh.interPredictionEnabledFlag, which is used to indicate whether the upper-layer inter-frame prediction is enabled, specifically whether the high-level (such as slice level, image level, sequence level, etc.) inter-frame prediction of the current vertex is enabled.
  • determining the value of the inter-frame enable flag information may include: decoding a bitstream to determine the value of the inter-frame enable flag information.
  • the method may include: decoding the bitstream to determine the value of the syntax element gbh.interPredictionEnabledFlag; and determining the value of the inter-frame enable flag information based on the value of the syntax element gbh.interPredictionEnabledFlag.
  • the value of the syntax element gbh.interPredictionEnabledFlag is 1, indicating that inter-frame prediction is enabled, it is called a P frame, and the value of isInter is 1 at this time; conversely, if the value of the syntax element gbh.interPredictionEnabledFlag is 1, indicating that inter-frame prediction is not enabled, it is called an I frame, and the value of isInter is 0 at this time.
  • the prediction identification information of the current vertex it can be determined whether inter-frame prediction is enabled for the current vertex based on the uncompensated reference vertex information, the neighbor uncompensated reference vertex information, the neighbor uncompensated reference vertex information and the value of the syntax element gbh.interPredictionEnabledFlag.
  • vertex information may include whether the vertex exists, high-bit values and low-bit values, etc.
  • the decoding of whether the vertex exists, high-bit values and low-bit values is performed separately.
  • both intra-frame prediction and inter-frame prediction use OBUF technology for entropy decoding, but the context state construction of inter-frame prediction is different from that of intra-frame prediction.
  • the inter-frame context state (Inter State) is actually the union of the intra-frame context state (Intra State) of the symbol to be decoded and the current vertex prediction information obtained through the reference point cloud.
  • the reference point cloud may include an uncompensated reference point cloud (i.e., the original reference point cloud obtained by decoding) and a compensated reference point cloud (i.e., the reference point cloud obtained after motion compensation).
  • the vertex information obtained using the uncompensated reference point cloud is the uncompensated reference vertex information
  • the vertex information obtained using the compensated reference point cloud is the compensated reference vertex information.
  • the decoding method is mainly a method for decoding the first bit information of the current vertex.
  • the first bit information can be a high-bit value, or it can be a low-bit value. The following description will be made using the example of the first bit information being a high-bit value.
  • the method may further include: when the value of the inter-frame enable identification information is a first value, and the value of the uncompensated reference vertex information is greater than or equal to the second value, and the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices is less than or equal to a third value or the number of inaccurate predictions of the first bit information of the compensated neighbor vertices is less than or equal to the third value, determining that the prediction identification information indicates that the first bit information of the current vertex uses the inter-frame prediction mode.
  • the first value can be set to 1, the second value can be set to 0, and the third value can be set to 4.
  • nBadPredComp1 ⁇ 4), that is, the value of isInterGood can be determined by isInter, colocatedVertex, nBadPredRef1 and nBadPredComp1.
  • colocatedVertex represents the uncompensated reference vertex information (high bit and low bit)
  • nBadPredRef1 is the number of inaccurate predictions when the neighbor uncompensated reference vertex predicts the high bit information of the neighbor vertex
  • nBadPredComp1 is the number of inaccurate predictions when the neighbor compensated reference vertex predicts the high bit information of the neighbor vertex.
  • the value of isInter is controlled by the syntax element gbh.interPredictionEnabledFlag, which is used to indicate whether the high-level (such as slice level, image level, sequence level, etc.) inter-frame prediction of the vertex to be encoded is enabled. If inter-frame prediction is enabled, it is called a P frame, and the value of isInter is 1; otherwise, if it is not enabled, it is called an I frame, and the value of isInter is 0.
  • S903 Determine a target decoder corresponding to the current vertex in the decoder group according to the context state.
  • determining the inter-frame context state type of the current vertex may include: determining the position information of the compensation reference vertex of the current vertex; and determining the inter-frame context state type of the current vertex based on the position information of the compensation reference vertex.
  • the inter-frame context state type of the current vertex can be determined based on the value of the vertex identification information.
  • the vertex identification information can be represented by TriSoupVerticesPred.
  • the inter-frame context can be divided into four types: the first inter-frame context state (or called “inter-frame context one state”, referred to as “inter-frame context one”), the second inter-frame context state (or called “inter-frame context two state”, referred to as “inter-frame context two”), the third inter-frame context state (or called “inter-frame context three state”, referred to as “inter-frame context three”) and the fourth inter-frame context state (or called "inter-frame context four state”, referred to as "inter-frame context four").
  • TriSoupVerticesPred represents the position information of the compensated reference vertex, that is, the value of TriSoupVerticesPred can be determined based on the position information of the compensated reference vertex.
  • the method further includes: determining a value of TriSoupVerticesPred; and determining an inter-frame context state type of a current vertex according to the value of TriSoupVerticesPred.
  • TriSoupVerticesPred 0
  • TriSoupVerticesPred 1
  • this step may include:
  • S1002 Determine a target decoder corresponding to the current vertex from the decoder group according to the decoder index.
  • a mapping relationship exists between the context state and the decoder index.
  • a target decoder corresponding to the current vertex can be selected from the decoder group.
  • the decoder group may include decoder 1, decoder 2, ..., decoder N. If the decoder index is i, decoder i in the decoder group can be determined as the target decoder.
  • the reference information of the current vertex includes at least one of the following: the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex, the uncompensated reference vertex information of the current vertex, and the decoded vertex information of the current vertex.
  • determining the context state and decoder group corresponding to the current vertex based on the reference information of the current vertex and the inter-frame context state type may include: when the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is greater than a second value, determining the first context state and the first decoder group corresponding to the inter-frame context state type.
  • determining the target decoder corresponding to the current vertex in the decoder group according to the context state may include: determining the decoder index of the current vertex according to the first context state; and determining the target decoder corresponding to the current vertex from the first decoder group according to the decoder index.
  • the second value can be set to 0. Among them, if the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is greater than 0, it indicates that the uncompensated neighboring vertex prediction is not good. At this time, the uncompensated reference vertex prediction is not used.
  • the first context state and the first decoder group corresponding to the current inter-frame context state type can be determined; then the decoder index of the current vertex is determined according to the first context state; according to the decoder index, the corresponding target decoder is determined from the first decoder group. It should be noted that there is a mapping relationship between the context state and the decoder index. In addition, assuming that the first decoder group includes decoder 1, decoder 2, ..., decoder N, if the decoder index is i, decoder i in the first decoder group can be determined as the target decoder.
  • determining the context state and decoder group corresponding to the current vertex based on the reference information of the current vertex and the inter-frame context state type may include: when the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be a fourth value, determining the second context state and the second decoder group corresponding to the inter-frame context state type.
  • determining the target decoder corresponding to the current vertex in the decoder group according to the context state may include: determining the decoder index of the current vertex according to the second context state; determining the current vertex from the second decoder group according to the decoder index; The target decoder corresponding to the vertex.
  • the second value can be set to 0, and the fourth value can be set to 0.
  • the fourth value can be set to 0. Among them, if the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to 0, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be 0, then when the first bit information is high-bit information, it indicates that the uncompensated neighboring vertex is well predicted and the high-bit prediction of the uncompensated reference vertex is 0.
  • the corresponding second context state and the second decoder group under the current inter-frame context state type can be determined; then the decoder index of the current vertex is determined according to the second context state; according to the decoder index, the corresponding target decoder is determined from the second decoder group.
  • the second decoder group includes decoder 1, decoder 2, ..., decoder N. If the decoder index is i, decoder i in the second decoder group can be determined as the target decoder.
  • determining the context state and decoder group corresponding to the current vertex based on the reference information of the current vertex and the inter-frame context state type may include: when the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be the fifth value, determining the third context state and the third decoder group corresponding to the inter-frame context state type.
  • determining the target decoder corresponding to the current vertex in the decoder group based on the context state may include: determining the decoder index of the current vertex based on the third context state; and determining the target decoder corresponding to the current vertex from the third decoder group based on the decoder index.
  • the second value can be set to 0, and the fifth value can be set to 1.
  • the fifth value can be set to 1.
  • the corresponding third context state and the third decoder group under the current inter-frame context state type can be determined; then the decoder index of the current vertex is determined according to the third context state; according to the decoder index, the corresponding target decoder is determined from the third decoder group.
  • the third decoder group includes decoder 1, decoder 2, ..., decoder N. If the decoder index is i, decoder i in the third decoder group can be determined as the target decoder.
  • the inter-frame context state type of the current vertex is the first inter-frame context state (i.e., inter-frame context state one)
  • the first context state and the first decoder group e.g., Decoder2
  • the second context state and the second decoder group e.g., Decoder3
  • the third context state and the third decoder group e.g., Decoder4
  • the inter-frame context state type of the current vertex is the second inter-frame context state (i.e., inter-frame context state two)
  • the first context state and the first decoder group e.g., Decoder5
  • the second context state and the second decoder group e.g., Decoder6
  • the third context state and the third decoder group e.g., Decoder7
  • the inter-frame context state type of the current vertex is the third inter-frame context state (i.e., inter-frame context state three)
  • the first context state and the first decoder group (e.g., Decoder8) in the third inter-frame context state are determined; when the uncompensated neighbor vertex of the current vertex is predicted well and the high bit in the uncompensated reference vertex information of the current vertex is predicted to be 0, the second context state and the second decoder group (e.g., Decoder9) in the third inter-frame context state are determined; when the uncompensated neighbor vertex of the current vertex is predicted well and the high bit in the uncompensated reference vertex information of the current vertex is predicted to be 1, the third context state and the third decoder group (e.g., Decoder10) in the third inter-frame context state are determined.
  • the third context state and the third decoder group (e.g., Decoder10) in the third inter-frame context state are determined.
  • the inter-frame context state type of the current vertex is the fourth inter-frame context state (i.e., inter-frame context state four)
  • the first context state and the first decoder group (e.g., Decoder11) in the fourth inter-frame context state are determined; when the uncompensated neighbor vertex of the current vertex is predicted well and the high bit in the uncompensated reference vertex information of the current vertex is predicted to be 0, the second context state and the second decoder group (e.g., Decoder12) in the fourth inter-frame context state are determined; when the uncompensated neighbor vertex of the current vertex is predicted well and the high bit in the uncompensated reference vertex information of the current vertex is predicted to be 1, the third context state and the third decoder group (e.g., Decoder13) in the fourth inter-frame context state are determined.
  • the method Laws may include:
  • S1102 Determine an intermediate result according to the first cumulative sum value and the second cumulative sum value.
  • the first cumulative sum value corresponding to the first bit information in the decoded vertex information and the second cumulative sum value corresponding to the first bit information predicted in the decoded vertex information can be determined based on the decoded vertex information of the current vertex; then the intermediate result is determined based on the first cumulative sum value and the second cumulative sum value; and based on the intermediate result, it is determined whether to adjust the context state.
  • the first cumulative sum can be represented by CoNum
  • the second cumulative sum can be represented by PredNum.
  • PredNum is used as the cumulative sum value determined as the prediction in the high bits of the decoded vertices
  • CoNum is used as the cumulative sum value of the high bits of the decoded vertices.
  • the ratio between the second cumulative sum and the first cumulative sum that is, PredNum/CoNum
  • the comparison result between PredNum/CoNum and the preset threshold (th) is used to determine whether to adjust the context state.
  • the ratio between K times the second cumulative sum and the first cumulative sum can be used as an intermediate result, and then the comparison result between K*PredNum/CoNum and the preset threshold (th) is used to determine whether to adjust the context state.
  • the coefficient K and the preset threshold (th) are both preset constants.
  • the method may include: when the intermediate result is less than or equal to a preset threshold, adjusting a portion of the context state in the context state to merge the portion of the context state into the first context state. Otherwise, when the intermediate result is greater than the preset threshold, continuing to perform the step of determining whether the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be 0 or 1.
  • determining the context state and decoder group corresponding to the current vertex based on the reference information and inter-frame context state type of the current vertex may include: when an intermediate result is less than or equal to a preset threshold, or the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is greater than a second value, determining the first context state and the first decoder group corresponding to the inter-frame context state type.
  • determining the target decoder corresponding to the current vertex in the decoder group based on the context state may include: determining a decoder index of the current vertex based on the first context state; and determining the target decoder corresponding to the current vertex from the first decoder group based on the decoder index.
  • determining the context state and decoder group corresponding to the current vertex based on the reference information and inter-frame context state type of the current vertex may include: when an intermediate result is greater than a preset threshold, the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to a second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be a fourth value, determining the second context state and second decoder group corresponding to the inter-frame context state type.
  • determining the target decoder corresponding to the current vertex in the decoder group based on the context state may include: determining the decoder index of the current vertex based on the second context state; and determining the target decoder corresponding to the current vertex from the second decoder group based on the decoder index.
  • determining the context state and decoder group corresponding to the current vertex based on the reference information and inter-frame context state type of the current vertex may include: when an intermediate result is greater than a preset threshold, the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to a second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be a fifth value, determining a third context state and a third decoder group corresponding to the inter-frame context state type.
  • determining the target decoder corresponding to the current vertex in the decoder group based on the context state may include: determining a decoder index of the current vertex based on the third context state; and determining the target decoder corresponding to the current vertex from the third decoder group based on the decoder index.
  • the second value can be set to 0, the fourth value can be set to 0, and the fifth value can be set to 1.
  • K*PredNum/CoNum ⁇ th, or the uncompensated neighbor vertex prediction is not good, the uncompensated reference vertex prediction is not used at this time, and the first context state and the first decoder group corresponding to the current inter-frame context state type can be determined at this time; then the decoder index of the current vertex is determined according to the first context state; according to the decoder index, the corresponding target decoder is determined from the first decoder group.
  • the second context state and the second decoder group corresponding to the current inter-frame context state type can be determined; then the decoder index of the current vertex is determined according to the second context state; according to the decoder index, the corresponding target decoder is determined from the second decoder group.
  • the third context state and the third decoder group corresponding to the current inter-frame context state type can be determined; then according to the third context state, the decoder index of the current vertex is determined; according to the decoder index, the corresponding target decoder is determined from the second decoder group.
  • the context state determines the decoder index of the current vertex; and according to the decoder index, determines the corresponding target decoder from the third decoder group.
  • S904 Decode the code stream according to the target decoder to determine the first bit information of the current vertex.
  • the target decoder is a binary decoder. After determining the target decoder, adaptive arithmetic decoding can be performed based on the probability of the selected target decoder to determine the first bit information of the current vertex, such as the high bit information of the current vertex.
  • the decoder index of the current vertex is then determined based on the intra-frame context state; based on the decoder index, the corresponding target decoder is determined from the fourth decoder group.
  • the fourth decoder group includes decoder 1, decoder 2, ..., decoder N. If the decoder index is i, decoder i in the fourth decoder group can be determined as the target decoder.
  • N is a positive integer
  • i is an integer greater than 0 and less than or equal to N.
  • the value of N can be 32, that is, each decoder group includes 32 decoders, one of which is selected as the target decoder, and then the target decoder decodes the bitstream to determine the high-bit information of the current vertex.
  • This embodiment provides a decoding method for determining prediction identification information of a current vertex; when the prediction identification information indicates that the first bit of the current vertex uses an inter-frame prediction mode, determining the inter-frame context state type of the current vertex, and determining the context state and decoder group corresponding to the current vertex based on the reference information and the inter-frame context state type of the current vertex; determining the target decoder corresponding to the current vertex in the decoder group based on the context state; and determining the first bit information of the current vertex based on the decoded bitstream of the target decoder.
  • independent context states are used for different inter-frame context state types, and different context states correspond to their own decoder groups, which solves the probability update problem caused by different context states sharing the same decoder group in the related art, and can select a more appropriate decoder group, thereby improving the accuracy of target decoder selection;
  • some inter-frame context states can also be merged, thereby solving the problem of slow convergence of the probability corresponding to the inter-frame context state when inter-frame prediction is rarely used, and can also improve the inter-frame prediction effect; thus, the geometric coding efficiency of the point cloud is improved, thereby improving the encoding and decoding performance.
  • FIG12 is a flow chart of an encoding method provided in an embodiment of the present application. As shown in FIG12 , the method may include:
  • S1201 Determine the predicted identification information of the current vertex.
  • the encoding method can be applied to the encoder or encoding end in the G-PCC codec framework.
  • the encoding method here can be an inter-frame encoding method, more specifically, an inter-frame encoding method for point cloud geometric information.
  • inter-frame prediction information By fully utilizing inter-frame prediction information, the encoding efficiency of the point cloud can be improved.
  • determining the prediction identification information of the current vertex may include: determining the uncompensated reference vertex information of the current vertex, the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices of the current vertex, the number of inaccurate predictions of the first bit information of the compensated neighbor vertices of the current vertex, and the value of the inter-frame enabling identification information; determining the prediction identification information of the current vertex based on the uncompensated reference vertex information, the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices, the number of inaccurate predictions of the first bit information of the compensated neighbor vertices, and the value of the inter-frame enabling identification information.
  • whether the current vertex uses the inter-frame prediction mode can be determined based on the values of the uncompensated reference vertex information, uncompensated neighbor vertex information, compensated neighbor vertex information and inter-frame enable identification information.
  • the prediction identification information of the current vertex can be represented by isInterGood.
  • isInterGood specifically refers to whether the compensated neighbor vertex information and uncompensated neighbor vertex information of the current vertex are judged to be good or bad predictions after the inter-frame is turned on. If it is judged to be a good prediction, it means that the value of isInterGood is equal to 1. At this time, the prediction identification information indicates that the first bit information of the current vertex uses the inter-frame prediction mode; if it is judged to be a bad prediction, it means that the value of isInterGood is equal to 0. At this time, the prediction identification information indicates that the first bit information of the current vertex uses the intra-frame prediction mode. In other words, according to the value of isInterGood (0 or 1), it can be divided into two major sets: intra-frame context and inter-frame context.
  • the uncompensated reference vertex information of the current vertex can be represented by colocatedVertex
  • the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex can be represented by nBadPredRef1
  • the number of inaccurate predictions of the first bit information of the compensated neighboring vertices of the current vertex can be represented by nBadPredComp1
  • the inter-frame enable identification information can be represented by isInter.
  • nBadPredRef1 can specifically refer to the number of inaccurate predictions when the neighboring uncompensated reference vertex predicts the first bit information of the neighboring vertex
  • nBadPredComp1 can specifically refer to the number of inaccurate predictions when the neighboring compensated reference vertex predicts the first bit information of the neighboring vertex
  • the value of "isInter” can be controlled by the syntax element gbh.interPredictionEnabledFlag, which is used to indicate whether the upper-layer inter-frame prediction is enabled, specifically whether the high-level (such as slice level, image level, sequence level, etc.) inter-frame prediction of the current vertex is enabled.
  • determining the value of the inter-frame enable flag information may include: determining the value of the inter-frame enable flag information to be a first value when the inter-frame prediction mode is enabled at the upper layer of the current vertex; and determining the value of the inter-frame enable flag information to be a second value when the inter-frame prediction mode is not enabled at the upper layer of the current vertex. Furthermore, the method further includes encoding the value of the inter-frame enable flag information and writing the resulting encoded bits into the bitstream. In this way, the value of the inter-frame enable flag information can be subsequently determined by decoding the bitstream at the decoding end.
  • the value of the inter-frame enable identification information can be controlled by the syntax element gbh.interPredictionEnabledFlag. Therefore, the method may further include: when the inter-frame prediction mode is enabled at the high-level layer of the current vertex, determining that the value of gbh.interPredictionEnabledFlag is a first value; when the inter-frame prediction mode is not enabled at the high-level layer of the current vertex, determining that the value of gbh.interPredictionEnabledFlag is a second value. Furthermore, the method also includes: encoding the value of gbh.interPredictionEnabledFlag and writing the obtained coded bits into the bitstream. In this way, the value of the inter-frame enable identification information can also be determined by decoding the bitstream at the decoding end.
  • the value of the syntax element gbh.interPredictionEnabledFlag is 1, indicating that inter-frame prediction is enabled, it is called a P frame, and the value of isInter is 1 at this time; conversely, if the value of the syntax element gbh.interPredictionEnabledFlag is 1, indicating that inter-frame prediction is not enabled, it is called an I frame, and the value of isInter is 0 at this time.
  • the prediction identification information of the current vertex it can be determined whether inter-frame prediction is enabled for the current vertex based on the uncompensated reference vertex information, the neighbor uncompensated reference vertex information, the neighbor uncompensated reference vertex information and the value of the syntax element gbh.interPredictionEnabledFlag.
  • vertex information may include whether the vertex exists, high-bit values and low-bit values, etc.
  • the encoding of whether the vertex exists, high-bit values and low-bit values is performed separately.
  • both intra-frame prediction and inter-frame prediction use OBUF technology for entropy coding, but the context state construction of inter-frame prediction is different from that of intra-frame prediction.
  • the inter-frame context state (Inter State) is actually the union of the intra-frame context state (Intra State) of the symbol to be encoded and the current vertex prediction information obtained through the reference point cloud.
  • the reference point cloud may include an uncompensated reference point cloud (i.e., the original reference point cloud) and a compensated reference point cloud (i.e., the reference point cloud obtained after motion compensation).
  • the vertex information obtained using the uncompensated reference point cloud is the uncompensated reference vertex information
  • the vertex information obtained using the compensated reference point cloud is the compensated reference vertex information.
  • the encoding method is mainly a method for encoding the first bit information of the current vertex.
  • the first bit information can be a high-bit value, or it can be a low-bit value. The following description will be made using the example of the first bit information being a high-bit value.
  • the method may further include: when the value of the inter-frame enable identification information is a first value, and the value of the uncompensated reference vertex information is greater than or equal to the second value, and the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices is less than or equal to a third value or the number of inaccurate predictions of the first bit information of the compensated neighbor vertices is less than or equal to the third value, determining that the prediction identification information indicates that the first bit information of the current vertex uses the inter-frame prediction mode.
  • the first value can be set to 1, the second value can be set to 0, and the third value can be set to 4.
  • nBadPredComp1 ⁇ 4), that is, the value of isInterGood can be determined by isInter, colocatedVertex, nBadPredRef1 and nBadPredComp1.
  • colocatedVertex represents the uncompensated reference vertex information (high bit and low bit)
  • nBadPredRef1 is the number of inaccurate predictions when the neighbor uncompensated reference vertex predicts the high bit information of the neighbor vertex
  • nBadPredComp1 is the number of inaccurate predictions when the neighbor compensated reference vertex predicts the high bit information of the neighbor vertex.
  • the value of isInter is controlled by the syntax element gbh.interPredictionEnabledFlag, which is used to indicate whether the high-level (such as slice level, image level, sequence level, etc.) inter-frame prediction of the vertex to be encoded is enabled. If inter-frame prediction is enabled, it is called a P frame, and the value of isInter is 1; otherwise, if it is not enabled, it is called an I frame, and the value of isInter is 0.
  • S1203 Determine a target encoder corresponding to the current vertex in the encoder group according to the context state.
  • determining the inter-frame context state type of the current vertex may include: determining the position information of the compensation reference vertex of the current vertex; and determining the inter-frame context state type of the current vertex based on the position information of the compensation reference vertex.
  • the inter-frame context state type of the current vertex can be determined based on the value of the vertex identification information.
  • the vertex identification information can be represented by TriSoupVerticesPred.
  • the inter-frame context can be divided into four types: the first inter-frame context state (or called “inter-frame context one state”, referred to as “inter-frame context one”), the second inter-frame context state (or called “inter-frame context two state”, referred to as “inter-frame context two”), the third inter-frame context state (or called “inter-frame context three state”, referred to as “inter-frame context three”) and the fourth inter-frame context state (or called "inter-frame context four state”, referred to as "inter-frame context four").
  • TriSoupVerticesPred represents Compensating the position information of the reference vertex, that is, determining the value of TriSoupVerticesPred based on the position information of the compensated reference vertex.
  • the method further includes: determining the value of TriSoupVerticesPred; and determining the inter-frame context state type of the current vertex based on the value of TriSoupVerticesPred.
  • TriSoupVerticesPred 0
  • TriSoupVerticesPred 1
  • determining the target encoder corresponding to the current vertex in the encoder group based on the context state may include: determining the encoder index of the current vertex based on the context state; and determining the target encoder corresponding to the current vertex from the encoder group based on the encoder index.
  • a mapping relationship exists between the context state and the encoder index.
  • a target encoder corresponding to the current vertex can be selected from the encoder group.
  • the encoder group may include encoder 1, encoder 2, ..., encoder N. If the encoder index is i, encoder i in the encoder group can be determined as the target encoder.
  • the reference information of the current vertex includes at least one of the following: the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex, the uncompensated reference vertex information of the current vertex, and the encoded vertex information of the current vertex.
  • determining the context state and encoder group corresponding to the current vertex based on the reference information of the current vertex and the inter-frame context state type may include: when the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is greater than a second value, determining the first context state and the first encoder group corresponding to the inter-frame context state type.
  • determining the target encoder corresponding to the current vertex in the encoder group based on the context state may include: determining the encoder index of the current vertex based on the first context state; and determining the target encoder corresponding to the current vertex from the first encoder group based on the encoder index.
  • the second value can be set to 0. Among them, if the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is greater than 0, it indicates that the uncompensated neighboring vertex prediction is not good. At this time, the uncompensated reference vertex prediction is not used.
  • the first context state and the first encoder group corresponding to the current inter-frame context state type can be determined; then the encoder index of the current vertex is determined according to the first context state; according to the encoder index, the corresponding target encoder is determined from the first encoder group. It should be noted that there is a mapping relationship between the context state and the encoder index. In addition, assuming that the first encoder group includes encoder 1, encoder 2, ..., encoder N, if the encoder index is i, encoder i in the first encoder group can be determined as the target encoder.
  • determining the context state and encoder group corresponding to the current vertex based on the reference information of the current vertex and the inter-frame context state type may include: when the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be a fourth value, determining the second context state and the second encoder group corresponding to the inter-frame context state type.
  • determining the target encoder corresponding to the current vertex in the encoder group based on the context state may include: determining the encoder index of the current vertex based on the second context state; and determining the target encoder corresponding to the current vertex from the second encoder group based on the encoder index.
  • the second value can be set to 0, and the fourth value can be set to 0.
  • the fourth value can be set to 0. Among them, if the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to 0, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be 0, then when the first bit information is high-bit information, it indicates that the uncompensated neighboring vertex is well predicted and the high-bit prediction of the uncompensated reference vertex is 0.
  • the corresponding second context state and the second encoder group under the current inter-frame context state type can be determined; then the encoder index of the current vertex is determined according to the second context state; according to the encoder index, the corresponding target encoder is determined from the second encoder group.
  • the second encoder group includes encoder 1, encoder 2, ..., encoder N. If the encoder index is i, encoder i in the second encoder group can be determined as the target encoder.
  • determining the context state and encoder group corresponding to the current vertex based on the reference information of the current vertex and the inter-frame context state type may include: when the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be the fifth value, determining the third context state and the third encoder group corresponding to the inter-frame context state type.
  • the target encoder corresponding to the current vertex is determined in the encoder group, which can be The method comprises: determining an encoder index of a current vertex according to a third context state; and determining a target encoder corresponding to the current vertex from a third encoder group according to the encoder index.
  • the second value can be set to 0, and the fifth value can be set to 1.
  • the fifth value can be set to 1.
  • the corresponding third context state and the third encoder group under the current inter-frame context state type can be determined; then the encoder index of the current vertex is determined according to the third context state; according to the encoder index, the corresponding target encoder is determined from the third encoder group.
  • the third encoder group includes encoder 1, encoder 2, ..., encoder N. If the encoder index is i, encoder i in the third encoder group can be determined as the target encoder.
  • the inter-frame context state type of the current vertex is the first inter-frame context state (i.e., inter-frame context state one)
  • the first context state and the first encoder group e.g., Coder2
  • the second context state and the second encoder group e.g., Coder3
  • the third context state and the third encoder group e.g., Coder4
  • the inter-frame context state type of the current vertex is the second inter-frame context state (i.e., inter-frame context state two)
  • the first context state and the first encoder group e.g., Coder5
  • the second context state and the second encoder group e.g., Coder6
  • the third context state and the third encoder group e.g., Coder7
  • the inter-frame context state type of the current vertex is the third inter-frame context state (i.e., inter-frame context state three)
  • the first context state and the first encoder group (e.g., Coder8) in the third inter-frame context state are determined; when the uncompensated neighbor vertex of the current vertex is predicted well and the high bit in the uncompensated reference vertex information of the current vertex is predicted to be 0, the second context state and the second encoder group (e.g., Coder9) in the third inter-frame context state are determined; when the uncompensated neighbor vertex of the current vertex is predicted well and the high bit in the uncompensated reference vertex information of the current vertex is predicted to be 1, the third context state and the third encoder group (e.g., Coder10) in the third inter-frame context state are determined.
  • the third context state and the third encoder group (e.g., Coder10) in the third inter-frame context state are determined.
  • the inter-frame context state type of the current vertex is the fourth inter-frame context state (i.e., inter-frame context state four)
  • the first context state and the first encoder group (e.g., Coder11) in the fourth inter-frame context state are determined; when the uncompensated neighbor vertex of the current vertex is predicted well and the high bit in the uncompensated reference vertex information of the current vertex is predicted to be 0, the second context state and the second encoder group (e.g., Coder12) in the fourth inter-frame context state are determined; when the uncompensated neighbor vertex of the current vertex is predicted well and the high bit in the uncompensated reference vertex information of the current vertex is predicted to be 1, the third context state and the third encoder group (e.g., Coder13) in the fourth inter-frame context state are determined.
  • the method can also include: determining, based on the encoded vertex information of the current vertex, a first cumulative sum value corresponding to the first bit information in the encoded vertex information and a second cumulative sum value corresponding to the first bit information predicted in the encoded vertex information; determining an intermediate result based on the first cumulative sum value and the second cumulative sum value; when the intermediate result is less than or equal to a preset threshold, adjusting part of the context states in the context state to merge the part of the context states into the first context state.
  • the first cumulative sum value corresponding to the first bit information in the encoded vertex information and the second cumulative sum value corresponding to the predicted first bit information in the encoded vertex information can be determined based on the encoded vertex information of the current vertex; then, an intermediate result is determined based on the first cumulative sum value and the second cumulative sum value; and based on the intermediate result, it is determined whether to adjust the context state.
  • the first cumulative sum value can be represented by CoNum
  • the second cumulative sum value can be represented by PredNum.
  • PredNum is used as the predicted cumulative sum value in the high bits of the encoded vertices
  • CoNum is used as the cumulative sum value of the high bits of the encoded vertices.
  • the ratio between the second cumulative sum value and the first cumulative sum value that is, PredNum/CoNum, can be used as an intermediate result, and then, based on the comparison result between PredNum/CoNum and the preset threshold (th), it is determined whether to adjust the context state.
  • the ratio between the K times the second cumulative sum value and the first cumulative sum value can be used as an intermediate result, and then Then, based on the comparison result between K*PredNum/CoNum and the preset threshold (th), it is determined whether to adjust the context state.
  • the coefficient K and the preset threshold (th) are both preset constants.
  • the method may include: when the intermediate result is less than or equal to a preset threshold, adjusting a portion of the context state in the context state to merge the portion of the context state into the first context state. Otherwise, when the intermediate result is greater than the preset threshold, continuing with the step of determining whether the first bit of information in the uncompensated reference vertex information of the current vertex is predicted to be 0 or 1.
  • determining the context state and encoder group corresponding to the current vertex based on the reference information and inter-frame context state type of the current vertex may include: when an intermediate result is less than or equal to a preset threshold, or the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is greater than a second value, determining the first context state and the first encoder group corresponding to the inter-frame context state type.
  • determining the target encoder corresponding to the current vertex in the encoder group based on the context state may include: determining the encoder index of the current vertex based on the first context state; and determining the target encoder corresponding to the current vertex from the first encoder group based on the encoder index.
  • determining the context state and encoder group corresponding to the current vertex based on the reference information and inter-frame context state type of the current vertex may include: when the intermediate result is greater than a preset threshold, the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be a fourth value, determining the second context state and the second encoder group corresponding to the inter-frame context state type.
  • determining the target encoder corresponding to the current vertex in the encoder group based on the context state may include: determining the encoder index of the current vertex based on the second context state; and determining the target encoder corresponding to the current vertex from the second encoder group based on the encoder index.
  • determining the context state and encoder group corresponding to the current vertex based on the reference information and inter-frame context state type of the current vertex may include: when an intermediate result is greater than a preset threshold, the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be a fifth value, determining the corresponding third context state and third encoder group under the inter-frame context state type.
  • determining the target encoder corresponding to the current vertex in the encoder group based on the context state may include: determining the encoder index of the current vertex based on the third context state; and determining the target encoder corresponding to the current vertex from the third encoder group based on the encoder index.
  • the second value can be set to 0, the fourth value can be set to 0, and the fifth value can be set to 1.
  • the first context state and the first encoder group corresponding to the current inter-frame context state type can be determined; then the encoder index of the current vertex is determined according to the first context state; according to the encoder index, the corresponding target encoder is determined from the first encoder group.
  • the second context state and the second encoder group corresponding to the current inter-frame context state type can be determined; then the encoder index of the current vertex is determined according to the second context state; according to the encoder index, the corresponding target encoder is determined from the second encoder group.
  • the third context state and the third encoder group corresponding to the current inter-frame context state type can be determined; then the encoder index of the current vertex is determined according to the third context state; according to the encoder index, the corresponding target encoder is determined from the third encoder group.
  • S1204 Encode the first bit of information of the current vertex according to the target encoder, and write the obtained encoded bits into the bitstream.
  • the target encoder is a binary encoder. After determining the target encoder, adaptive arithmetic coding can be performed based on the probability of the selected target encoder, for example, adaptive arithmetic coding is performed on the high-bit information of the current vertex based on the probability of the target encoder.
  • the encoder index of the current vertex is determined according to the intra-frame context state; according to the encoder index, the corresponding target encoder is determined from the fourth encoder group.
  • the fourth encoder group includes encoder 1, encoder 2, ..., encoder N. If the encoder index is i, encoder i in the fourth encoder group can be determined as the target encoder.
  • N is a positive integer
  • i is an integer greater than 0 and less than or equal to N.
  • the value of N can be 32, that is, each encoder group includes 32 encoders, one of which is selected as the target encoder, and then the high-bit information of the current vertex is encoded according to the target encoder, and the obtained encoded bits are written into the bitstream.
  • an embodiment of the present application further provides a code stream, which is generated by bit encoding based on the information to be encoded; wherein the information to be encoded includes at least one of the following: the first bit information of the current vertex and the value of the inter-frame enable identification information.
  • This embodiment provides an encoding method for determining prediction identification information of a current vertex; when the prediction identification information indicates that the first bit of information of the current vertex uses an inter-frame prediction mode, determining the inter-frame context state type of the current vertex, and determining the context state and encoder group corresponding to the current vertex based on the reference information and the inter-frame context state type of the current vertex; determining a target encoder corresponding to the current vertex in the encoder group based on the context state; encoding the first bit of information of the current vertex according to the target encoder, and writing the resulting encoded bits into a bitstream.
  • independent context states are used for different inter-frame context state types, and different context states correspond to their own encoder groups, which solves the probability update problem caused by different context states sharing the same encoder group in the related art, and can select a more appropriate encoder group, thereby improving the accuracy of target encoder selection.
  • some inter-frame context states can also be merged, thereby solving the problem of slow convergence of probabilities corresponding to inter-frame context states when inter-frame prediction is rarely used, and can also improve the inter-frame prediction effect. This improves the geometric coding efficiency of the point cloud, thereby improving the encoding and decoding performance.
  • FIG13 is a detailed flow diagram of an encoding method provided by the embodiment of the present application. As shown in FIG13 , the detailed flow may include:
  • S1312 Determine the type as inter-frame context state one.
  • each grayscale module includes the process from S1316 to S1323.
  • each encoder group includes multiple entropy encoders. Taking Coder j as an example, Coder j can include coders 1, 2, ..., 32, where j is a positive integer. At this time, one encoder can be selected from the corresponding encoding group for encoding based on the intra-frame context state or inter-frame context state.
  • the secondary information of the intra-frame context state contains 15 bits of information.
  • the secondary information of the inter-frame context state contains 17 bits of information and is divided into the following four cases (consistent with the anchor): intra-frame secondary information, inter-frame secondary information Information 1 (not predicted), inter-frame minor information 2 (predicted to be 0) and inter-frame minor information 3 (predicted to be 1) are specifically shown in the aforementioned FIG. 8 .
  • the technical solution of the embodiment of the present application mainly includes: merging some inter-frame context states; and selecting encoder groups suitable for the respective states for the inter-frame context states, as specifically shown in FIG13 .
  • the specific algorithm details may include:
  • the intra-frame context state adopts an independent state set, and for example, the construction method of the existing solution in the related technology can be adopted.
  • Inter-frame context state 1, inter-frame context state 2, inter-frame context state 3, and inter-frame context state 4 all use independent state sets.
  • PredNum is used as the cumulative sum value of the predicted high bits of the encoded vertex
  • CoNum is used as the cumulative sum value of the high bits of the encoded vertex
  • K is the coefficient
  • th is the threshold
  • the intra-frame context state (Intra State) can be mapped to the encoder group Coder1;
  • Inter state can be mapped to 12 encoder groups:
  • Inter-frame context state 1 When the uncompensated neighbor vertex is not predicted well, the uncompensated reference vertex prediction is not used and is mapped to encoder group Coder2; when the uncompensated neighbor vertex is predicted well and the high bit of the uncompensated reference vertex is predicted to be 0, it is mapped to encoder group Coder3; when the uncompensated neighbor vertex is predicted well and the high bit of the uncompensated reference vertex is predicted to be 1, it is mapped to encoder group Coder4;
  • Inter-frame context state 2 When the uncompensated neighbor vertex is not predicted well, the uncompensated reference vertex prediction is not used and is mapped to encoder group Coder5; when the uncompensated neighbor vertex is predicted well and the high bit of the uncompensated reference vertex is predicted to be 0, it is mapped to encoder group Coder6; when the uncompensated neighbor vertex is predicted well and the high bit of the uncompensated reference vertex is predicted to be 1, it is mapped to encoder group Coder7;
  • the multi-frame point cloud entropy coding process based on the intra-frame/inter-frame context state in the technical solution is mainly divided into two steps:
  • Step 1 inter-frame prediction determination:
  • Whether to enable inter-frame prediction is determined based on the uncompensated reference vertex information, the neighbor uncompensated reference vertex information, the neighbor compensated reference vertex information, and the inter-frame prediction enabling syntax element gbh.interPredictionEnabledFlag.
  • Step 2 encoder selection:
  • a context state set and an encoder group are determined based on the above information, and the context state of the symbol to be encoded is determined in the context state set and mapped to the binary encoder in the encoder group.
  • the context state set here refers to the situation shown in Figure 8.
  • the context state set may include: 0 0 and 15 bits of non-inter-frame information; taking inter-frame secondary information 2 as an example, the context state set may include: 1 0 and 15 bits of non-inter-frame information; taking inter-frame secondary information 3 as an example, the context state set may include: 1 1 and 15 bits of non-inter-frame information.
  • Step 3 adaptive arithmetic coding
  • Adaptive arithmetic coding is performed based on the probability of the selected binary encoder.
  • FIG14 is a detailed flowchart of a decoding method provided by the embodiment of the present application. As shown in FIG14 , the detailed flowchart may include:
  • decoding is performed based on the decoder group Decoder4.
  • decoding is performed based on decoder groups Decoder5, 6, and 7.
  • decoding is performed based on the decoder group Decoder8, 9, and 10.
  • each grayscale module includes the process from S1416 to S1423.
  • each decoder group includes multiple entropy decoders. Taking Decoder j as an example, Decoder j can include decoders 1, 2, ..., 32, where j is a positive integer. At this time, a decoder can be selected from the corresponding decoding group for decoding based on the intra-frame context state/inter-frame context state.
  • the secondary information of the intra-frame context state contains 15 bits of information.
  • the secondary information of the inter-frame context state contains 17 bits of information and is divided into the following four cases (consistent with the anchor): intra-frame secondary information, inter-frame secondary information 1 (not predicted), inter-frame secondary information 2 (predicted to be 0) and inter-frame secondary information 3 (predicted to be 1), as shown in the aforementioned Figure 8.
  • the technical solution of the embodiment of the present application mainly includes: merging some inter-frame context states; and selecting decoder groups suitable for the respective states for the inter-frame context states, as specifically shown in FIG14 .
  • the specific algorithm details may include:
  • the intra-frame context state adopts an independent state set, and for example, the construction method of the existing solution in the related technology can be adopted.
  • Inter-frame context state 1, inter-frame context state 2, inter-frame context state 3, and inter-frame context state 4 all use independent state sets.
  • PredNum is used as the cumulative sum value of the predicted high bits of the decoded vertex
  • CoNum is used as the cumulative sum value of the high bits of the decoded vertex
  • K is the coefficient
  • th is the threshold
  • the intra-frame context state (Intra State) can be mapped to the decoder group Decoder1;
  • Inter state can be mapped to 12 decoder groups:
  • Inter-frame context state 1 When the uncompensated neighbor vertex is not predicted well, the uncompensated reference vertex prediction is not used and is mapped to decoder group Decoder2; when the uncompensated neighbor vertex is predicted well and the high bit of the uncompensated reference vertex is predicted to be 0, it is mapped to decoder group Decoder3; when the uncompensated neighbor vertex is predicted well and the high bit of the uncompensated reference vertex is predicted to be 1, it is mapped to decoder group Decoder4;
  • Inter-frame context state 2 When the uncompensated neighbor vertex is not predicted well, the uncompensated reference vertex prediction is not used and is mapped to decoder group Decoder5; when the uncompensated neighbor vertex is predicted well and the high bit of the uncompensated reference vertex is predicted to be 0, it is mapped to decoder group Decoder6; when the uncompensated neighbor vertex is predicted well and the high bit of the uncompensated reference vertex is predicted to be 1, it is mapped to decoder group Decoder7;
  • the multi-frame point cloud entropy decoding process based on the intra-frame/inter-frame context state in the technical solution is mainly divided into two steps:
  • Step 1 inter-frame prediction determination:
  • Whether to enable inter-frame prediction is determined based on the uncompensated reference vertex information, the neighbor uncompensated reference vertex information, the neighbor compensated reference vertex information, and the inter-frame prediction enabling syntax element gbh.interPredictionEnabledFlag.
  • Step 2 decoder selection:
  • a context state set and a decoder group are determined based on the above information, and the context state of the symbol to be decoded is determined in the context state set and mapped to the binary decoder in the decoder group.
  • Step 3 adaptive arithmetic decoding
  • Adaptive arithmetic decoding is performed based on the probability of the selected binary decoder.
  • this technical solution makes more effective use of inter-frame prediction information, further improving the geometric coding efficiency of G-PCC.
  • the BD-Rate under lossy compression of geometric information indicates that compared with related technologies, while achieving the same coding quality, the encoding bit rate of this technical solution is saved (BD-Rate is a negative value) or increased (BD-Rate is a positive value) by a percentage compared with the encoding bit rate of related technologies. See Table 1 for details, which shows the BD-Rate of GES-TM-v5.0-Trisoup RAHT inter lossy compression under C2 conditions.
  • the C2 condition represents lossy geometry and lossy attributes (lossy geometry, lossy attributes), End-to-End BD-AttrRate represents the BD-Rate of the end-to-end attribute value for the attribute code stream, the Cat2 data set is a multi-frame dense point cloud, and Overall average is the average value of the test results of all sequences.
  • FIG15 is a schematic diagram of the composition structure of an encoder provided in an embodiment of the present application.
  • the encoder 150 includes a first determining unit 1501 and an encoding unit 1502, wherein:
  • the first determining unit 1501 is configured to determine prediction identification information of a current vertex; and when the first bit information of the current vertex indicates that the inter-frame prediction mode is used according to the prediction identification information, determine the inter-frame context state type of the current vertex, and determine the context state and encoder group corresponding to the current vertex according to the reference information of the current vertex and the inter-frame context state type;
  • the first determining unit 1501 is further configured to determine a target encoder corresponding to the current vertex in the encoder group according to the context state;
  • the encoding unit 1502 is configured to encode the first bit information of the current vertex according to the target encoder, and write the obtained encoded bits into the bitstream.
  • the first determining unit 1501 is further configured to determine an encoder index of the current vertex according to the context state; and determine a target encoder corresponding to the current vertex from the encoder group according to the encoder index.
  • the first determination unit 1501 is further configured to determine the uncompensated reference vertex information of the current vertex, the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices of the current vertex, the number of inaccurate predictions of the first bit information of the compensated neighbor vertices of the current vertex, and the value of the inter-frame enabling identification information; and determine the predicted identification information of the current vertex based on the uncompensated reference vertex information, the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices, the number of inaccurate predictions of the first bit information of the compensated neighbor vertices, and the value of the inter-frame enabling identification information.
  • the first determination unit 1501 is further configured to determine that the prediction identification information indicates that the first bit information of the current vertex uses the inter-frame prediction mode when the value of the inter-frame enabling identification information is the first value, the value of the uncompensated reference vertex information is greater than or equal to the second value, and the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices is less than or equal to the third value or the number of inaccurate predictions of the first bit information of the compensated neighbor vertices is less than or equal to the third value.
  • the first determination unit 1501 is further configured to determine that the value of the inter-frame enable identification information is a first value when the inter-frame prediction mode is enabled at the high level of the current vertex; and to determine that the value of the inter-frame enable identification information is a second value when the inter-frame prediction mode is not enabled at the high level of the current vertex.
  • the encoding unit 1502 is further configured to encode the value of the inter-frame enable identification information and write the obtained coded bits into the bitstream.
  • the first determining unit 1501 is further configured to determine position information of a compensation reference vertex of the current vertex; and determine the inter-frame context state type of the current vertex according to the position information of the compensation reference vertex.
  • the reference information of the current vertex includes at least one of the following: the amount of inaccurate prediction of the first bit information of the uncompensated neighboring vertices of the current vertex, the uncompensated reference vertex information of the current vertex, and the encoded vertex information of the current vertex.
  • the first determination unit 1501 is further configured to determine the first context state and the first encoder group corresponding to the inter-frame context state type when the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is greater than a second value; and is also configured to determine the encoder index of the current vertex based on the first context state; and determine the target encoder corresponding to the current vertex from the first encoder group based on the encoder index.
  • the first determination unit 1501 is further configured to determine the corresponding second context state and second encoder group under the inter-frame context state type when the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be a fourth value; and is also configured to determine the encoder index of the current vertex based on the second context state; and determine the target encoder corresponding to the current vertex from the second encoder group based on the encoder index.
  • the first determination unit 1501 is further configured to determine the corresponding third context state and third encoder group under the inter-frame context state type when the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be the fifth value; and is also configured to determine the encoder index of the current vertex based on the third context state; and determine the target encoder corresponding to the current vertex from the third encoder group based on the encoder index.
  • the encoder 150 further includes a first adjustment unit 1503; the first determination unit 1501 is further configured to determine, based on the encoded vertex information of the current vertex, a first cumulative sum value corresponding to the first bit information in the encoded vertex information and a second cumulative sum value corresponding to the first bit information predicted in the encoded vertex information when the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices of the current vertex is less than or equal to a second value; and determine an intermediate result based on the first cumulative sum value and the second cumulative sum value; the first adjustment unit 1503 is configured to determine whether to adjust the context state based on the intermediate result.
  • the first adjusting unit 1503 is further configured to adjust part of the context state in the context state when the intermediate result is less than or equal to a preset threshold, so as to merge the part of the context state into the first context state.
  • the first determination unit 1501 is further configured to determine the first context state and the first encoder group corresponding to the inter-frame context state type when the intermediate result is less than or equal to a preset threshold, or the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is greater than a second value; and is also configured to determine the encoder index of the current vertex based on the first context state; and determine the target encoder corresponding to the current vertex from the first encoder group based on the encoder index.
  • the first determination unit 1501 is further configured to determine the corresponding second context state and second encoder group under the inter-frame context state type when the intermediate result is greater than a preset threshold, the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be a fourth value; and is also configured to determine the encoder index of the current vertex based on the second context state; and determine the target encoder corresponding to the current vertex from the second encoder group based on the encoder index.
  • the first determination unit 1501 is further configured to determine the corresponding third context state and the third encoder group under the inter-frame context state type when the intermediate result is greater than a preset threshold, the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be the fifth value; and is also configured to determine the encoder index of the current vertex based on the third context state; and determine the target encoder corresponding to the current vertex from the third encoder group based on the encoder index.
  • a "unit" can be a portion of a circuit, a portion of a processor, a portion of a program or software, etc., and of course it can also be a module, or it can be non-modular.
  • 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.
  • FIG16 is a schematic diagram of a specific hardware structure of an encoder provided in an embodiment of the present application.
  • the encoder 150 may include: a first communication interface 1601, a first memory 1602, and a first processor 1603; each component The first bus system 1604 is coupled together. It is understood that the first bus system 1604 is used to realize the connection and communication between these components.
  • the first bus system 1604 also includes a power bus, a control bus, and a status signal bus. However, for the sake of clarity, in FIG16, various buses are labeled as the first bus system 1604.
  • the first communication interface 1601 is used to receive and send signals when sending and receiving information with other external network elements;
  • a first memory 1602 is used to store computer programs that can be run on the first processor 1603;
  • the first processor 1603 is configured to, when running the computer program, execute:
  • the first memory 1602 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.
  • 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.
  • RAM static RAM
  • DRAM dynamic RAM
  • SDRAM synchronous DRAM
  • DDR SDRAM double data rate SDRAM
  • ESDRAM enhanced SDRAM
  • SLDRAM synchronized DRAM
  • DRRAM direct RAM
  • the first processor 1603 may be an integrated circuit chip with signal processing capabilities. During implementation, each step of the above method can be completed by the hardware integrated logic circuit in the first processor 1603 or by software instructions.
  • the above-mentioned first processor 1603 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.
  • DSP digital signal processor
  • ASIC application-specific integrated circuit
  • FPGA field programmable gate array
  • 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 embodied as being executed by a hardware decoding processor, or can be executed 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, or electrically erasable programmable memory, registers, etc.
  • the storage medium is located in the first memory 1602 , and the first processor 1603 reads the information in the first memory 1602 and completes the steps of the above method in combination with its hardware.
  • the embodiments described in this application can be implemented in hardware, software, firmware, middleware, microcode, or a combination thereof.
  • the processing unit can be implemented in one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described in this application, or a combination thereof.
  • ASICs application specific integrated circuits
  • DSPs digital signal processors
  • DSPDs digital signal processing devices
  • PLDs programmable logic devices
  • FPGAs field programmable gate arrays
  • the technology described in this application can be implemented by modules (such as processes, functions, etc.) that perform the functions described in this 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.
  • the first processor 1603 is further configured to execute the method described in any one of the aforementioned embodiments when running the computer program.
  • An embodiment of the present application provides an encoder that uses independent context states for different inter-frame context state types, and different context states correspond to their own encoder groups, which solves the probability update problem caused by different context states sharing the same encoder group in the related art, and can select a more suitable encoder group, thereby improving the accuracy of target encoder selection; and because different context states correspond to their own encoder groups, some inter-frame context states can also be merged at the same time, thereby solving the problem of slow convergence of the probability corresponding to the inter-frame context state when inter-frame prediction is rarely used, and can improve the inter-frame prediction effect; thereby improving the geometric coding efficiency of the point cloud, and thus improving the encoding and decoding performance.
  • FIG17 is a schematic diagram of the composition structure of a decoder provided in an embodiment of the present application.
  • the decoder 170 includes a second determination unit 1701 and a decoding unit 1702, wherein:
  • the second determining unit 1701 is configured to determine prediction identification information of a current vertex; and when the first bit information of the current vertex indicates that the inter-frame prediction mode is used according to the prediction identification information, determine the inter-frame context state type of the current vertex, and determine the context state and decoder group corresponding to the current vertex according to the reference information of the current vertex and the inter-frame context state type;
  • the second determining unit 1701 is further configured to determine a target decoder corresponding to the current vertex in the decoder group according to the context state;
  • the decoding unit 1702 is configured to decode the code stream according to the target decoder and determine the first bit information of the current vertex.
  • the second determining unit 1701 is further configured to determine a decoder index of the current vertex according to the context state; and determine a target decoder corresponding to the current vertex from the decoder group according to the decoder index.
  • the second determination unit 1701 is further configured to determine the uncompensated reference vertex information of the current vertex, the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices of the current vertex, the number of inaccurate predictions of the first bit information of the compensated neighbor vertices of the current vertex, and the value of the inter-frame enabling identification information; and determine the predicted identification information of the current vertex based on the uncompensated reference vertex information, the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices, the number of inaccurate predictions of the first bit information of the compensated neighbor vertices, and the value of the inter-frame enabling identification information.
  • the second determination unit 1701 is further configured to determine that the prediction identification information indicates that the first bit information of the current vertex uses the inter-frame prediction mode when the value of the inter-frame enabling identification information is the first value, the value of the uncompensated reference vertex information is greater than or equal to the second value, and the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices is less than or equal to the third value or the number of inaccurate predictions of the first bit information of the compensated neighbor vertices is less than or equal to the third value.
  • the second determining unit 1701 is further configured to determine position information of a compensation reference vertex of the current vertex; and determine the inter-frame context state type of the current vertex according to the position information of the compensation reference vertex.
  • the reference information of the current vertex includes at least one of the following: the number of inaccurate predictions of first bit information of uncompensated neighboring vertices of the current vertex, uncompensated reference vertex information of the current vertex, and decoded vertex information of the current vertex.
  • the second determination unit 1701 is further configured to determine the first context state and the first decoder group corresponding to the inter-frame context state type when the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is greater than a second value; and is also configured to determine the decoder index of the current vertex based on the first context state; and determine the target decoder corresponding to the current vertex from the first decoder group based on the decoder index.
  • the second determination unit 1701 is further configured to determine the corresponding second context state and second decoder group under the inter-frame context state type when the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be a fourth value; and is also configured to determine the decoder index of the current vertex based on the second context state; and determine the target decoder corresponding to the current vertex from the second decoder group based on the decoder index.
  • the second determination unit 1701 is further configured to determine the corresponding third context state and third decoder group under the inter-frame context state type when the number of inaccurate predictions of the first bit information of the uncompensated neighboring vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be the fifth value; and is also configured to determine the decoder index of the current vertex according to the third context state; and determine the target decoder corresponding to the current vertex from the third decoder group according to the decoder index.
  • the decoder 170 further includes a second adjustment unit 1703; the second determination unit 1701 is further configured to determine, based on the decoded vertex information of the current vertex, a first cumulative sum value corresponding to the first bit information in the decoded vertex information and a second cumulative sum value corresponding to the first bit information predicted in the decoded vertex information when the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices of the current vertex is less than or equal to a second value; and determine an intermediate result based on the first cumulative sum value and the second cumulative sum value; the second adjustment unit 1703 is configured to determine whether to adjust the context state based on the intermediate result.
  • the second adjusting unit 1703 is further configured to adjust part of the context state in the context state when the intermediate result is less than or equal to a preset threshold, so as to merge the part of the context state into the first context state.
  • the second determination unit 1701 is further configured to determine the first context state and the first decoder group corresponding to the inter-frame context state type when the intermediate result is less than or equal to a preset threshold, or the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices of the current vertex is greater than a second value; and is also configured to determine the decoder index of the current vertex based on the first context state; and determine the target decoder corresponding to the current vertex from the first decoder group based on the decoder index.
  • the second determination unit 1701 is further configured to determine the corresponding second context state and second decoder group under the inter-frame context state type when the intermediate result is greater than a preset threshold, the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be a fourth value; and is also configured to determine the decoder index of the current vertex according to the second context state; and determine the target decoder corresponding to the current vertex from the second decoder group according to the decoder index.
  • the second determination unit 1701 is further configured to determine the corresponding third context state and third decoder group under the inter-frame context state type when the intermediate result is greater than a preset threshold, the number of inaccurate predictions of the first bit information of the uncompensated neighbor vertices of the current vertex is less than or equal to the second value, and the first bit information in the uncompensated reference vertex information of the current vertex is predicted to be the fifth value; and is also configured to determine the decoder index of the current vertex according to the third context state; and determine the target decoder corresponding to the current vertex from the third decoder group according to the decoder index.
  • a "unit" can be a part of a circuit, a part of a processor, a part of a program or software, etc., and can also be a module or a non-modular one.
  • the 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 one unit.
  • the above-mentioned integrated units can be It can be implemented in the form of hardware or in the form of software functional modules.
  • FIG18 is a schematic diagram of the specific hardware structure of a decoder provided in an embodiment of the present application.
  • the decoder 170 may include: a second communication interface 1801, a second memory 1802, and a second processor 1803; each component is coupled together through a second bus system 1804.
  • the second bus system 1804 is used to achieve connection and communication between these components.
  • the second bus system 1804 also includes a power bus, a control bus, and a status signal bus.
  • various buses are labeled as the second bus system 1804 in FIG18. Among them,
  • the second communication interface 1801 is used to receive and send signals when sending and receiving information with other external network elements;
  • the second memory 1802 is used to store computer programs that can be run on the second processor 1803;
  • the second processor 1803 is configured to, when running the computer program, execute:
  • the second processor 1803 is further configured to execute any one of the methods described in the foregoing embodiments when running the computer program.
  • the hardware functions of the second memory 1802 are similar to those of the first memory 1602, and the hardware functions of the second processor 1803 are similar to those of the first processor 1603; they will not be described in detail here.
  • This embodiment provides a decoder that uses independent context states for different inter-frame context state types, and different context states correspond to their own decoder groups, which solves the probability update problem caused by different context states sharing the same decoder group in the related technology, and can select a more suitable decoder group, thereby improving the accuracy of target decoder selection; and because different context states correspond to their own decoder groups, some inter-frame context states can also be merged at the same time, thereby solving the problem of slow convergence of the probability corresponding to the inter-frame context state when inter-frame prediction is rarely used, and can improve the inter-frame prediction effect; thus, the geometric coding efficiency of the point cloud is improved, and thus the encoding and decoding performance is improved.
  • FIG19 is a schematic diagram of the structure of a coding and decoding system provided in an embodiment of the present application.
  • the coding and decoding system 190 may include an encoder 1901 and a decoder 1902 .
  • the encoder 1901 may be the encoder described in any one of the aforementioned embodiments
  • the decoder 1902 may be the decoder described in any one of the aforementioned embodiments.
  • the present application further provides a computer-readable storage medium having a computer program stored thereon, wherein the computer program, when executed by a processor (eg, the first processor or the second processor), implements the method as described in any of the aforementioned embodiments.
  • a processor eg, the first processor or the second processor
  • embodiments of the present application further provide a computer program product, including a computer program or instructions.
  • a processor e.g., a first processor or a second processor
  • the method described in any one of the aforementioned embodiments is implemented.
  • the embodiments of the present application further provide a computer program, which, when executed by a processor (eg, a first processor or a second processor), implements the method as described in any one of the aforementioned embodiments.
  • a processor eg, a first processor or a second processor
  • the disclosed devices and methods can be implemented in other ways.
  • the device embodiments described above are merely schematic.
  • the division of the units is merely a logical function division.
  • Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be through some interfaces, indirect coupling or communication connection of devices or units, which can be electrical, mechanical or other forms.
  • the units described as separate components may or may not be physically separate, and the components shown as units may or may not be physical units, that is, they may be located in one place or distributed across multiple network units. Some or all of these units may be selected to achieve the purpose of this embodiment according to actual needs.
  • each functional unit in each embodiment of the present application may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit.
  • the functions are implemented in the form of software functional units and sold or used as independent products, they can be stored in a computer-readable storage medium.
  • the technical solution of this application is essentially or partially contributed to the existing technology.
  • Part of this technical solution can be embodied in the form of a software product, which is stored in a storage medium and includes a number of instructions for causing a computer device (which can be a personal computer, server, or network device, etc.) to execute all or part of the steps of the method described in each embodiment of this application.
  • the aforementioned storage medium includes: 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, etc., various media that can store program code.
  • the prediction identification information of the current vertex is first determined; then, when the first bit information of the current vertex is indicated to use the inter-frame prediction mode according to the prediction identification information, the inter-frame context state type of the current vertex is determined, and the context state and encoder group/decoder group corresponding to the current vertex are determined according to the reference information and the inter-frame context state type of the current vertex; then, based on the context state, the target codec corresponding to the current vertex is determined from the encoder group/decoder group; finally, the first bit information of the current vertex is encoded/decoded according to the target codec.
  • independent context states are used for different inter-frame context state types, and different context states correspond to their own encoder groups/decoder groups, which solves the probability update problem caused by different context states sharing the same encoder group/decoder group in the related art, and can select a more appropriate encoder group/decoder group, thereby improving the accuracy of target codec selection; and because different context states correspond to their own encoder groups/decoder groups, some inter-frame context states can also be merged, thereby solving the problem of slow convergence of the probability corresponding to the inter-frame context state when inter-frame prediction is used less, which can improve the prediction effect; thus, the geometric coding efficiency of the point cloud is improved, thereby improving the encoding and decoding performance.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请公开了一种编解码方法、码流、编码器、解码器以及存储介质,该方法包括:确定当前顶点的预测标识信息;在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及解码器组;根据上下文状态,在解码器组中确定当前顶点对应的目标解码器;根据目标解码器解码码流,确定当前顶点的第一比特信息。如此可以提高几何编码效率,进而提升点云的编解码性能。

Description

编解码方法、码流、编码器、解码器以及存储介质 技术领域
本申请实施例涉及点云编解码技术领域,尤其涉及一种编解码方法、码流、编码器、解码器以及存储介质。
背景技术
在基于几何的点云压缩(Geometry-based Point Cloud Compression,G-PCC)编解码框架中,点云的几何信息和点云中的点所对应的属性信息是分开进行编码的。其中,G-PCC的几何编解码可以分为:基于八叉树的几何编解码、基于三角面片集(Trisoup)的几何编解码和基于预测树的几何编解码。
目前,在基于Trisoup的几何编解码过程中,由于相关技术中的帧间预测考虑不全面,不同上下文状态之间会互相影响编码器(Coder)的概率更新,而且预测效果不好,降低了点云的编解码性能。
发明内容
本申请实施例提供一种编解码方法、码流、编码器、解码器以及存储介质,可以提高几何编码效率,进而提升点云的编解码性能。
本申请实施例的技术方案可以如下实现:
第一方面,本申请实施例提供了一种解码方法,应用于解码器,该方法包括:
确定当前顶点的预测标识信息;
在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及解码器组;
根据上下文状态,在解码器组中确定当前顶点对应的目标解码器;
根据目标解码器解码码流,确定当前顶点的第一比特信息。
第二方面,本申请实施例提供了一种编码方法,应用于编码器,该方法包括:
确定当前顶点的预测标识信息;
在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组;
根据上下文状态,在编码器组中确定当前顶点对应的目标编码器;
根据目标编码器对当前顶点的第一比特信息进行编码处理,将所得到的编码比特写入码流。
第三方面,本申请实施例提供了一种码流,该码流是根据待编码信息进行比特编码生成的;其中,待编码信息包括下述至少一项:当前顶点的第一比特信息和帧间使能标识信息的取值。
第四方面,本申请实施例提供了一种编码器,该编码器包括第一确定单元和编码单元,其中:
第一确定单元,配置为确定当前顶点的预测标识信息;以及在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组;
第一确定单元,还配置为根据上下文状态,在编码器组中确定当前顶点对应的目标编码器;
编码单元,配置为根据目标编码器对当前顶点的第一比特信息进行编码处理,将所得到的编码比特写入码流。
第五方面,本申请实施例提供了一种编码器,该编码器包括第一存储器和第一处理器,其中:
第一存储器,用于存储能够在第一处理器上运行的计算机程序;
第一处理器,用于在运行计算机程序时,执行如第二方面所述的方法。
第六方面,本申请实施例提供了一种解码器,该解码器包括第二确定单元和解码单元,其中:
第二确定单元,配置为确定当前顶点的预测标识信息;以及在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及解码器组;
第二确定单元,还配置为根据上下文状态,在解码器组中确定当前顶点对应的目标解码器;
解码单元,配置为根据目标解码器解码码流,确定当前顶点的第一比特信息。
第七方面,本申请实施例提供了一种解码器,该解码器包括第二存储器和第二处理器,其中:
第二存储器,用于存储能够在第二处理器上运行的计算机程序;
第二处理器,用于在运行计算机程序时,执行如第一方面所述的方法。
第八方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的方法、或者实现如第二方面所述的方法。
第九方面,本申请实施例提供了一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现如第一方面所述的方法、或者实现如第二方面所述的方法。
本申请实施例提供了一种编解码方法、码流、编码器、解码器以及存储介质,在编码端,确定当前顶点的预测标识信息;在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组;根据上下文状态,在编码器组中确定当前顶点对应的目标编码器;根据目标编码器对当前顶点的第一比特信息进行编码处理,将所得到的编码比特写入码流。在解码端,确定当前顶点的预测标识信息;在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及解码器组;根据上下文状态,在解码器组中确定当前顶点对应的目标解码器;根据目标解码器解码码流,确定当前顶点的第一比特信息。也就是说,无论是在编码端还是解码端,首先确定当前顶点的预测标识信息;然后在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组/解码器组;然后再根据上下文状态,从编码器组/解码器组中确定当前顶点对应的目标编解码器。这样,针对不同的帧间上下文状态类型均采用独立的上下文状态,而且不同的上下文状态分别对应各自的编码器组/解码器组,解决了相关技术中不同的上下文状态共用同一个编码器组/解码器组所造成的概率更新问题,能够选择更合适的编码器组/解码器组,从而提升了目标编解码器选择的准确性;而且由于不同的上下文状态分别对应各自的编码器组/解码器组,同时还可以将部分帧间上下文状态进行合并,从而解决了在使用帧间预测的情况较少时帧间上下文状态对应的概率收敛缓慢问题,能够提升帧间预测效果;如此提高了点云的几何编码效率,进而提升了编解码性能。
附图说明
图1为一种点云编解码的网络架构示意图;
图2为一种G-PCC编码器的组成框架示意图;
图3为一种G-PCC解码器的组成框架示意图;
图4为一种trisoup几何表示的示意图;
图5为一种OBUF框图的应用架构示意图;
图6为一种待编码边的邻居顶点示意图;
图7为一种基于Trisoup的帧间预测的编码流程示意图;
图8为一种上下文中的次要信息分类示意图;
图9为本申请实施例提供的一种解码方法的流程示意图一;
图10为本申请实施例提供的一种解码方法的流程示意图二;
图11为本申请实施例提供的一种解码方法的流程示意图三;
图12为本申请实施例提供的一种编码方法的流程示意图;
图13为本申请实施例提供的一种编码方法的详细流程示意图;
图14为本申请实施例提供的一种解码方法的详细流程示意图;
图15为本申请实施例提供的一种编码器的组成结构示意图;
图16为本申请实施例提供的一种编码器的具体硬件结构示意图;
图17为本申请实施例提供的一种解码器的组成结构示意图;
图18为本申请实施例提供的一种解码器的具体硬件结构示意图;
图19为本申请实施例提供的一种编解码系统的组成结构示意图。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。还需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅是用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
对本申请实施例进行进一步详细说明之前,先对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释:
基于几何的点云压缩(Geometry-based Point Cloud Compression,G-PCC或GPCC);
基于视频的点云压缩(Video-based Point Cloud Compression,V-PCC或VPCC);
基于几何的稠密点云测试模型(Geometry-based Solid content Test Model,GeS-TM);
几何块头信息(Geometry Brick Header,GBH);
先入先出队列(First In First Out,FIFO);
编码点云组(Group of Point cloud,GOP);
细节层次(Level of Detail,LOD);
区域自适应分层变换(Region Adaptive Hierarchal Transform,RAHT);
基于上下文的自适应二进制算术编码(Context-based Adaptive Binary Arithmetic Coding,CABAC);
即时更新的最佳二值化(Optimal Binarization with Update on the Fly,OBUF)。
点云是物体表面的三维表现形式,通过光电雷达、激光雷达、激光扫描仪、多视角相机等采集设备,可以采集得到物体表面的点云(数据)。
点云(Point Cloud)是指海量三维点的集合,点云中的点可以包括点的位置信息和点的属性信息。例如,点的位置信息可以是点的三维坐标信息。点的位置信息也可称为点的几何信息。例如,点的属性信息可包括颜色信息和/或反射率等等。例如,颜色信息可以是任意一种色彩空间上的信息。例如,颜色信息可以是RGB信息。其中,R表示红色(Red,R),G表示绿色(Green,G),B表示蓝色(Blue,B)。再如,颜色信息可以是亮度色度(YCbCr,YUV)信息。其中,Y表示明亮度,Cb(U)表示蓝色色度,Cr(V)表示红色色度。
根据激光测量原理得到的点云,点云中的点可以包括点的三维坐标信息和点的激光反射强度(reflectance)。再如,根据摄影测量原理得到的点云,点云中的点可以可包括点的三维坐标信息和点的颜色信息。再如,结合激光测量和摄影测量原理得到点云,点云中的点可以可包括点的三维坐标信息、点的激光反射强度(reflectance)和点的颜色信息。
点云可以按获取的途径分为:
第一类静态点云:即物体是静止的,获取点云的设备也是静止的;
第二类动态点云:物体是运动的,但获取点云的设备是静止的;
第三类动态获取点云:获取点云的设备是运动的。
例如,按点云的用途分为两大类:
类别一:机器感知点云,其可以用于自主导航系统、实时巡检系统、地理信息系统、视觉分拣机器人、抢险救灾机器人等场景;
类别二:人眼感知点云,其可以用于数字文化遗产、自由视点广播、三维沉浸通信、三维沉浸交互等点云应用场景。
由于点云是海量点的集合,存储点云不仅会消耗大量的内存,而且不利于传输,也没有这么大的带宽可以支持将点云不经过压缩直接在网络层进行传输,因此,需要对点云进行压缩。
截止目前,可对点云进行压缩的点云编码框架可以是运动图像专家组(Moving Picture Experts Group,MPEG)提供的G-PCC编解码框架或V-PCC编解码框架,也可以是音视频编码标准(Audio Video Standard,AVS)提供的AVS-PCC编解码框架。其中,G-PCC编解码框架可用于针对第一类静态点云和第三类动态获取点云进行压缩,V-PCC编解码框架可用于针对第二类动态点云进行压缩。在本申请实施例中,这里主要是针对G-PCC编解码框架进行描述。
本申请实施例提供了一种包含解码方法和编码方法的点云编解码系统的网络架构,图1为一种点云 编解码的网络架构示意图。如图1所示,该网络架构包括一个或多个电子设备13至1N和通信网络01,其中,电子设备13至1N可以通过通信网络01进行视频交互。电子设备在实施的过程中可以为各种类型的具有点云编解码功能的设备,例如,所述电子设备可以包括手机、平板电脑、个人计算机、个人数字助理、导航仪、数字电话、视频电话、电视机、传感设备、服务器等,本申请实施例不作限制。其中,本申请实施例中的解码器或编码器就可以为上述电子设备。
其中,本申请实施例中的电子设备具有点云编解码功能,一般包括点云编码器(即编码器)和点云解码器(即解码器)。
下面以G-PCC编解码框架为例进行相关技术的说明。
可以理解,在点云G-PCC编解码框架中,针对待编码的点云数据,首先通过片(slice)划分,将点云数据划分为多个slice。在每一个slice中,点云的几何信息和属性信息是分开进行编码的。
图2为一种G-PCC编码器的组成框架示意图。如图2所示,在几何编码过程中,对几何信息进行坐标转换,使点云全都包含在一个包围盒(Bounding Box)中,然后再进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点云的几何信息相同,于是再基于参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化过程。接着对Bounding Box进行八叉树划分或者预测树构建。在该过程中,针对划分的叶子结点中的点进行熵编码,生成二进制的几何码流;或者,针对划分产生的交点(Vertex)进行熵编码(基于交点进行表面拟合),生成二进制的几何码流。在属性编码过程中,几何编码完成以及对几何信息进行重建后,需要先进行颜色转换,将颜色信息(即属性信息)从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色,使得未编码的属性信息与重建的几何信息对应起来。属性编码主要针对颜色信息进行,在颜色信息编码过程中,主要有两种变换方法,一是依赖于LOD划分的基于距离的提升变换,二是直接进行RAHT变换,这两种方法都会将颜色信息从空间域转换到频域,通过变换得到高频系数和低频系数,最后对系数进行量化,再对量化系数进行熵编码,可以生成二进制的属性码流。
图3为一种G-PCC解码器的组成框架示意图。如图3所示,针对所获取的二进制比特流,首先对二进制码流中的几何码流和属性码流分别进行独立解码。在对几何码流进行解码时,首先进行熵解码,然后选择下述其中一种方式:八叉树划分-重构表面估计或者预测树构建,再通过几何重建-坐标反变换后,可以得到点云的几何信息;在对属性码流进行解码时,首先进行熵解码和反量化,然后选择下述其中一种方式:RAHT变换或者LOD划分-提升变换,最后通过颜色反变换,可以得到点云的属性信息;基于几何信息和属性信息能够还原待编码的点云数据。
需要说明的是,如图2或图3所示,目前G-PCC的几何编解码可以分为基于八叉树的几何编解码、基于三角面片集(Triangle soup,Trisoup)的几何编解码和基于预测树的几何编解码,具体如下:
(a)基于八叉树的几何编解码:
在编码端,首先对几何信息进行坐标转换,使点云全都包含在一个由两个极值点(0,0,0)和(2d,2d,2d)决定的包围盒(Bounding Box)中,然后进行体素化,即:量化、取整、移除重复点(根据参数来决定)。接着按照广度优先遍历的顺序不断对包围盒中对非空的(包含点云中的点)的子立方体进行八叉树划分;在同一八叉树深度下,一个节点将被划分为8个子节点,直到划分得到的叶子结点为1×1×1的单位立方体时停止划分,子立方体中是否有点占据(1表示占据,0表示无占据)所生成的8个比特(8-bits)的二进制码被称为占位码(Occupancy Code),对每个节点的占位码进行编码,生成二进制码流。
在解码端,按照广度优先遍历的顺序,通过不断解析得到每个节点的占位码,并且依次不断划分节点,直至划分得到1×1×1的单位立方体时停止划分,解析得到每个叶子节点中包含的点数,最终恢复得到几何重构点云信息。
(b)基于Trisoup几何编解码:
在编码端,首先划分八叉树,区别于基于八叉树结构的几何信息编码,该方法不需要将点云逐级划分到边长为1×1×1的底层叶子节点,而是划分指定边长的叶子节点;再将节点内体素构成的表面信息用一系列三角网格(Triangle Mesh)表示。GPCC中可以用参数Trisoup node size表示三角面片所在块(Block)尺寸大小,当Trisoup node size大于0时,通过一个几何面片表示节点内的体素集合,几何面片与Block的十二条边产生的至多十二个交点称为顶点(Vertex)。
每个节点边上顶点的存在以及它们在边上的量化位置将分别表示为1bit和2bit,依次编码每个Block的vertex相关信息,生成二进制码流。在每个节点内部,重构表面由通过这些顶点形成的非平面多边形构造,组织为三角形的集合。此外,每个节点还有一个质心顶点,编码最终质心坐标与初始质心坐标之间的偏移值(沿表面法向量n的方向),进一步提高了对每个节点内表面曲率的表示。另外,还可以创建和标记表面顶点。如图4所示,这里提供了trisoup几何表示的示意图。如图4所示,V1、V2、V3 和V4表示四个顶点,n表示法向量,C表示质心顶点,Cmean表示质心,drift表示点云平面向某一方向的凸起。随后,使用光线追踪技术将这些三角形体素化为点,以重建点云。其中,质心顶点C被编码为所有顶点的重心平均值的漂移值。向量n表示三角形表面的法线。
在解码端,为了从节点的三角面片中解码出点云的几何坐标,需要检查节点立方体内的每个体素是否与三角面片相交,该技术称为三角光栅化,利用6个单位向量(0,0,1)、(0,0,1)、(0,0,1)、(0,0,1)、(0,0,1)、(0,0,1)进行相交检验,检验各单位向量与三角面片是否相交,若相交,则计算交点并输出解码的立方体,解码器中生成点的数量由网格距离d决定。
(c)基于预测树的几何编解码:
在编码端,首先对输入点云进行排序,目前采用的排序方法包括无序、莫顿序、方位角序和径向距离序。在编码端通过利用两种不同的方式建立预测树结构,其中包括:高时延慢速模式(KD-Tree,KD树)和低时延快速模式(利用激光雷达标定信息,将每个点划分到不同的激光器(Laser)上,按照不同的Laser建立预测结构)。接下来基于预测树结构,遍历预测树中的每个节点,通过选取不同的预测模式对节点的几何位置信息进行预测得到预测残差,并且利用量化参数对预测残差进行量化。最终通过不断迭代,对预测树节点位置信息的预测残差、预测树结构以及量化参数等进行编码,生成二进制码流。
在解码端,解码端通过不断解析码流,重构预测树结构,其次通过解析得到每个预测节点的几何位置预测残差信息以及量化参数,并且对预测残差进行反量化,恢复得到每个节点的重构几何位置信息,最终完成解码端的几何重构。
可以理解地,在相关技术1的可能实现方式中,对于即时更新的最佳二值化(Optimal Binarization with Update on the Fly,OBUF)技术来说,OBUF就是快速准确地通过一个映射关系查找表(Look Up Table,LUT)将领域信息的一系列离散状态(states)映射到一组固定数量N的自适应熵编码器(coder)中。这样,上下文信息状态不再与概率模型一一对应,随着当前编码的语法元素更新固定数量的概率模型,并且在每次占位码编码完成之后,其映射关系会被更新。
如图5所示,这里提供了OBUF框图的应用架构示意图。其中,该应用架构可以包括:OBUF上下文预处理模块51、OBUF框图52、实际编码器索引模块53和编码器组54。OBUF框图52包括编码器映射模块521和编码器索引更新模块522,编码器组54包括二进制熵编码器1、二进制熵编码器2、二进制熵编码器3、…、二进制熵编码器N。具体地,信道B用于提供待编码符号s,待编码符号s是待编码的占用比特(bit),取值为1或0;编码器映射模块521用于根据OBUF上下文预处理模块51以及上下文状态D进行coder映射,映射后的编码器索引取值为[1,2,…,N],N为正整数。
在一种具体的实施例中,OBUF技术可分为以下三个步骤:
步骤1,得到待编码符号的上下文状态D。
待编码符号的上下文状态D是OBUF框图的输入信息,由空间中已经编码的邻居顶点信息构成,具体操作详见相关技术2。
步骤2,基于映射关系得到上下文状态D对应的二进制编码器i。
在所有的待编码符号还未编码之前,将每个状态通过查表映射到少量N个coder。如每个状态D映射成32个coderi(即i取值为[1,2,…,32])中的一个,如图5中的二进制熵编码器i。
步骤3,使用熵编码器i对符号S进行熵编码。
将待编码符号S送入由其对应上下文状态D对应的二进制算术编码器中进行熵编码,编码过程详见相关技术3。
可以理解地,在相关技术2的可能实现方式中,对于动态OBUF技术来说,相比于OBUF技术,动态OBUF技术随着编码过程,不再采用固定的上下文状态数量,可以动态地调整上下文状态数量。
动态OBUF技术分为两个阶段:①动态确定上下文及上下文状态;②将上下文状态映射到数量较少的二进制编码器集合中(OBUF技术)。
下面介绍上下文构建与动态调整。在动态OBUF中,上下文信息可以分为主要信息与次要信息两部分。其中,次要信息中的部分信息是否作为上下文被动态调整,将主要信息与选中的部分次要信息组成的上下文作为OBUF技术的上下文。
(1)上下文构建过程。
示例性地,如图6所示,这里示出了平行于x轴、y轴、z轴时待编码边的邻居顶点示例。其中,待编码顶点(位于k边)的上下文顶点可以从以下12个邻居节点(如节点e1、e2、e3、e4、b1、b2、b3、b4、a1、a2、a3、a4)中寻找,包括以下几类:
①待编码边(加粗黑色)对应轴负方向边上的顶点(如点划线);
②与待编码边(加粗黑色)垂直的邻居边(直接接触)上的顶点(如点线);
③与待编码边(加粗黑色)垂直的邻居边(非直接接触)上的顶点(如非加粗实线);
④与待编码边(加粗黑色)平行的邻居边上的顶点(如虚线);
按照一定的顺序,为待编码顶点构建上下文,上下文的前N个上下文顶点为主要信息,后M个上下文顶点为次要信息,M在编码过程中可以动态调整。其中,M、N为正整数。
(2)动态调整过程。
每个上下文顶点都可以为不存在或存在,即0、1状态。上下文状态可以由N+M个二进制比特表示,其中N个主要信息,M个次要信息。随着编码过程,记录被使用的每个上下文状态的次数,当某种上下文状态被使用的次数大于预设门限值T时,按扫描顺序增加一个上下文节点,即通过引入新的上下文节点对该上下文状态进行细分。后续待编码顶点,使用更新后的上下文状态集合编码。
可以理解地,在相关技术3的可能实现方式中,对于G-PCC稠密点云帧间编码来说,可以包括如下两方面:
(1)基于Trisoup的帧间几何熵编码。
在G-PCC中,Trisoup顶点信息(包括:顶点是否存在、高bit取值、低bit取值)的帧内和帧间编码,都采用OBUF技术进行熵编码。然而,帧间编码的上下文构建方法与帧内编码不同。具体来说,帧间上下文状态(Inter State)实际上是当前待编码符号的帧内上下文状态(Intra State)与通过参考帧获得的当前待编码顶点预测信息的联合。
(2)基于帧间预测的Trisoup几何编码
图7为基于Trisoup的帧间预测的编码流程示意图,这里具体提供了相关技术中当顶点存在时基于帧间预测的Trisoup顶点高bit的编码流程示意图。如图7所示,该流程可以包括:
S701,isInter&&colocatedVertex>=0?
S702,nBadPredRef1<=4||nBadPredComp1<=4?
S703,isInterGood=0。
S704,isInterGood=1。
S705,确定TriSoupVerticesPred。
S706,TriSoupVerticesPred<0?
S707,TriSoupVerticesPred==0?
S708,TriSoupVerticesPred==1?
S709,TriSoupVerticesPred==2?
S710,TriSoupVerticesPred==3?
S711,确定类型为帧内上下文。
S712,确定类型为帧间上下文一。
S713,确定类型为帧间上下文二。
S714,确定类型为帧间上下文三。
S715,确定类型为帧间上下文四。
S716,nBadPredRef1<=0?
S717,根据未补偿帧间信息确定不预测。
S718,根据未补偿帧间信息确定预测。
S719,(colocatedVertex>>1&1)==1?
S720,确定不预测。
S721,确定预测为0。
S722,确定预测为1。
S723,合并帧间上下文一。
S724,合并帧间上下文二。
S725,合并帧间上下文三。
S726,合并帧间上下文四。
S727,基于编码器组Coder1进行编码。
S728,基于编码器组Coder2进行编码。
S729,基于编码器组Coder3进行编码。
S730,基于编码器组Coder4进行编码。
S731,基于编码器组Coder5进行编码。
需要说明的是,图7中灰色模块代表的流程与虚线框内的流程一致,即每个灰度模块内均包括S716~S722的流程。另外,编码器组Coder1包括多个熵编码器,例如Coder1包括coder1、2、…、32,此时根据帧内上下文的状态选择其中一个编码器进行编码;编码器组Coder2包括多个熵编码器,例如 Coder2包括coder1、2、…、32,此时根据帧间上下文一的状态选择其中一个编码器进行编码;编码器组Coder3包括多个熵编码器,例如Coder3包括coder1、2、…、32,此时根据帧间上下文二的状态选择其中一个编码器进行编码;编码器组Coder4包括多个熵编码器,例如Coder4包括coder1、2、…、32,此时根据帧间上下文三的状态选择其中一个编码器进行编码;编码器组Coder5包括多个熵编码器,例如Coder5包括coder1、2、…、32,此时根据帧间上下文四的状态选择其中一个编码器进行编码。
还需要说明的是,“isInterGood”指开启帧间后待编码顶点的邻居补偿顶点和邻居未补偿顶点信息判定为预测好或坏。根据isInterGood=1取值(0或1),划分为帧内上下文和帧间上下文两大集合。进一步地,根据TriSoupVerticesPred取值,还可以将帧间上下文划分为帧间上下文一、帧间上下文二、帧间上下文三、帧间上下文四,其中TriSoupVerticesPred代表补偿参考顶点的位置信息。
另外,isInterGood=isInter&&colocatedVertex>=0&&(nBadPredRef1<=4||nBadPredComp1<=4),即isInterGood的值由isInter、colocatedVertex、nBadPredRef1和nBadPredComp1共同决定。其中,colocatedVertex表示未补偿参考顶点信息(高bit和低bit),nBadPredRef1为邻居未补偿参考顶点预测邻居顶点高bit时预测不准的数量,nBadPredComp1为邻居补偿参考顶点预测邻居顶点高bit时预测不准的数量。另外,isInter的取值由语法元素gbh.interPredictionEnabledFlag控制,该语法元素用于指示待编码顶点的高层(例如slice级、图像级、序列级等)帧间预测是否启用。如果帧间预测启用,则称为P帧,此时isInter为1;反之,如果不启用,则称为I帧,此时isInter为0。
根据邻居未补偿参考顶点预测邻居顶点高bit时预测不准的数量信息和待编码顶点的未补偿参考顶点信息(colocatedVertex)将判定为帧间预测的信息分为以下几类:
①不预测(NoPred):当邻居未补偿参考顶点预测邻居顶点高bit预测得不好时,不利用未补偿参考顶点信息;
②预测为0(Pred0):当邻居未补偿参考顶点预测邻居顶点高bit预测得好时,若未补偿参考顶点高bit为0,则预测为0;
③预测为1(Pred1):当邻居未补偿参考顶点预测邻居顶点高bit预测得好时,若未补偿参考顶点高bit为1,则预测为1。
还需要说明的是,帧内上下文的次要信息包含了15bit信息,对于帧间上下文来说,以帧间上下文一和帧间上下文二为例,帧间上下文的次要信息都包含了17bit信息,并分为以下四种情况:帧内次要信息、帧间次要信息1(不预测)、帧间次要信息2(预测为0)和帧间次要信息3(预测为1),具体如图8所示。其中,对于帧间次要信息来说,在高bit(用斜线填充)为指示goodRef=1时,表示未补偿帧间信息预测的好;在低bit(用网格填充)为指示pred=1时,表示未补偿帧间信息预测为1。
也就是说,在相关技术的几种实现方式中,当使用帧间预测的情况较少时,帧间上下文状态对应的概率收敛缓慢,没有很好的预测效果;而且不同上下文状态共用同一个Coder,会互相影响Coder的概率更新,降低了编解码性能。
基于此,本申请实施例提供了一种编解码方法,首先确定当前顶点的预测标识信息;然后在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组/解码器组;然后再根据上下文状态,从编码器组/解码器组中确定当前顶点对应的目标编解码器;最后根据目标编解码器对当前顶点的第一比特信息进行编码/解码处理。这样,针对不同的帧间上下文状态类型均采用独立的上下文状态,而且不同的上下文状态分别对应各自的编码器组/解码器组,解决了相关技术中不同的上下文状态共用同一个编码器组/解码器组所造成的概率更新问题,能够选择更合适的编码器组/解码器组,从而提升了目标编解码器选择的准确性;而且由于不同的上下文状态分别对应各自的编码器组/解码器组,同时还可以将部分帧间上下文状态进行合并,从而解决了在使用帧间预测的情况较少时帧间上下文状态对应的概率收敛缓慢问题,能够提升帧间预测效果;如此提高了点云的几何编码效率,进而提升了编解码性能。
下面将结合附图对本申请各实施例进行详细说明。
在本申请的一实施例中,图9为本申请实施例提供的一种解码方法的流程示意图一。如图9所示,该方法可以包括:
S901,确定当前顶点的预测标识信息。
需要说明的是,在本申请实施例中,该解码方法可以应用于G-PCC编解码框架中的解码器或者说是解码端。其中,这里的解码方法具体可以是一种帧间解码方法,更具体地,是一种点云几何信息的帧间解码方法。通过充分利用帧间预测信息,能够提高点云的编解码效率。
还需要说明的是,在本申请实施例中,对于确定当前顶点的预测标识信息,可以包括:确定当前顶点的未补偿参考顶点信息、当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量、当前顶点的补 偿邻居顶点的第一比特信息预测不准的数量以及帧间使能标识信息的取值;根据未补偿参考顶点信息、未补偿邻居顶点的第一比特信息预测不准的数量、补偿邻居顶点的第一比特信息预测不准的数量和帧间使能标识信息的取值,确定当前顶点的预测标识信息。
可以理解地,在本申请实施例中,可以是根据未补偿参考顶点信息、未补偿邻居顶点信息、补偿邻居顶点信息以及帧间使能标识信息的取值,来确定当前顶点是否使用帧间预测模式。
在这里,当前顶点的预测标识信息可以用isInterGood表示。其中,“isInterGood”具体是指开启帧间后当前顶点的补偿邻居顶点信息和未补偿邻居顶点信息判定为预测好或坏。如果判定为预测的好,则表示isInterGood的取值等于1,这时候预测标识信息指示当前顶点的第一比特信息使用帧间预测模式;如果判定为预测的不好,则表示isInterGood的取值等于0,这时候预测标识信息指示当前顶点的第一比特信息使用帧内预测模式。也就是说,根据isInterGood的取值(0或1),可以划分为帧内上下文和帧间上下文两大集合。
在这里,当前顶点的未补偿参考顶点信息可以用colocatedVertex表示,当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量可以用nBadPredRef1表示,当前顶点的补偿邻居顶点的第一比特信息预测不准的数量可以用nBadPredComp1表示,帧间使能标识信息可以用isInter表示。其中,“nBadPredRef1”具体可以是指邻居未补偿参考顶点预测邻居顶点的第一比特信息时预测不准的数量,“nBadPredComp1”具体可以是指邻居补偿参考顶点预测邻居顶点的第一比特信息时预测不准的数量,“isInter”的取值可以是由语法元素gbh.interPredictionEnabledFlag控制,该语法元素用于指示上层的帧间预测是否启用,具体为当前顶点的高层(例如slice级、图像级、序列级等)帧间预测是否启用。
在一些实施例中,对于确定帧间使能标识信息的取值,可以包括:解码码流,确定帧间使能标识信息的取值。具体地,该方法可以包括:解码码流,确定语法元素gbh.interPredictionEnabledFlag的取值;根据语法元素gbh.interPredictionEnabledFlag的取值,确定帧间使能标识信息的取值。
在本申请实施例中,如果语法元素gbh.interPredictionEnabledFlag的取值为1,表明帧间预测启用,则称为P帧,此时isInter的取值为1;反之,如果语法元素gbh.interPredictionEnabledFlag的取值为1,表明帧间预测不启用,则称为I帧,此时isInter的取值为0。
也就是说,在本申请实施例中,对于当前顶点的预测标识信息来说,可以是根据未补偿参考顶点信息、邻居未补偿参考顶点信息、邻居未补偿参考顶点信息以及语法元素gbh.interPredictionEnabledFlag的取值,确定当前顶点是否启用帧间预测。
还可以理解地,在本申请实施例中,顶点信息可以包括顶点是否存在、高比特取值和低比特取值等。其中,对于顶点是否存在、高比特取值和低比特取值等解码是分开进行的。在解码过程中,帧内预测和帧间预测都是采用OBUF技术进行熵解码,但是帧间预测的上下文状态构建与帧内预测不同。具体地,帧间上下文状态(Inter State)实际上是待解码符号的帧内上下文状态(Intra State)与通过参考点云获得的当前顶点预测信息的联合。
在本申请实施例中,参考点云可以包括未补偿参考点云(即解码获得的原始参考点云)和补偿参考点云(即经过运动补偿后获得的参考点云),利用未补偿参考点云得到的顶点信息为未补偿参考顶点信息,利用补偿参考点云得到的顶点信息为补偿参考顶点信息。另外,在本申请实施例中,该解码方法主要是针对当前顶点的第一比特信息进行解码的方法。在这里,第一比特信息可以是高比特取值,或者也可以是低比特取值。下文将以第一比特信息为高比特取值为例进行相关描述。
在一些实施例中,该方法还可以包括:在帧间使能标识信息的取值为第一值,且未补偿参考顶点信息的取值大于或等于第二值,且未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第三值或者补偿邻居顶点的第一比特信息预测不准的数量小于或等于第三值时,确定预测标识信息指示当前顶点的第一比特信息使用帧间预测模式。
在本申请实施例中,第一值可以设置为1,第二值可以设置为0,第三值可以设置为4。这样,对于帧间预测模式的判定,可以是:isInterGood=isInter&&colocatedVertex>=0&&(nBadPredRef1<=4||nBadPredComp1<=4),即isInterGood的取值可以由isInter、colocatedVertex、nBadPredRef1和nBadPredComp1共同确定。其中,colocatedVertex表示未补偿参考顶点信息(高比特和低比特),nBadPredRef1为邻居未补偿参考顶点预测邻居顶点的高比特信息时预测不准的数量,nBadPredComp1为邻居补偿参考顶点预测邻居顶点的高比特信息时预测不准的数量。另外,isInter的取值是由语法元素gbh.interPredictionEnabledFlag控制,该语法元素用于指示待编码顶点的高层(例如slice级、图像级、序列级等)帧间预测是否启用。如果帧间预测启用,则称为P帧,此时isInter的取值为1;反之,如果不启用,则称为I帧,此时isInter的取值为0。
S902,在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状 态以及解码器组。
S903,根据上下文状态,在解码器组中确定当前顶点对应的目标解码器。
需要说明的是,在本申请实施例中,如果isInterGood=1,表明预测标识信息指示当前顶点的第一比特信息使用帧间预测模式,那么需要继续确定当前顶点的帧间上下文状态类型。在一些实施例中,确定当前顶点的帧间上下文状态类型,可以包括:确定当前顶点的补偿参考顶点的位置信息;根据补偿参考顶点的位置信息,确定当前顶点的帧间上下文状态类型。
还需要说明的是,在本申请实施例中,可以根据顶点标识信息的取值来确定当前顶点的帧间上下文状态类型。其中,顶点标识信息可以用TriSoupVerticesPred表示。根据TriSoupVerticesPred的取值,可以将帧间上下文划分为四种类型:第一种帧间上下文状态(或者称为“帧间上下文一状态”,简称为“帧间上下文一”)、第二种帧间上下文状态(或者称为“帧间上下文二状态”,简称为“帧间上下文二”)、第三种帧间上下文状态(或者称为“帧间上下文三状态”,简称为“帧间上下文三”)和第四种帧间上下文状态(或者称为“帧间上下文四状态”,简称为“帧间上下文四”)。其中,TriSoupVerticesPred代表补偿参考顶点的位置信息,也就是说,根据补偿参考顶点的位置信息可以确定出TriSoupVerticesPred的取值。在一种具体的实施例中,该方法还包括:确定TriSoupVerticesPred的取值;根据TriSoupVerticesPred的取值,确定当前顶点的帧间上下文状态类型。
在本申请实施例中,在根据补偿参考顶点的位置信息确定出TriSoupVerticesPred的取值之后,判断TriSoupVerticesPred的取值是否等于0,即TriSoupVerticesPred==0?若TriSoupVerticesPred的取值等于0,则确定当前顶点的帧间上下文状态类型为第一种帧间上下文状态(即“帧间上下文一”);判断TriSoupVerticesPred的取值是否等于1,即TriSoupVerticesPred==1?若TriSoupVerticesPred的取值等于1,则确定当前顶点的帧间上下文状态类型为第二种帧间上下文状态(即“帧间上下文二”);判断TriSoupVerticesPred的取值是否等于2,即TriSoupVerticesPred==2?若TriSoupVerticesPred的取值等于2,则确定当前顶点的帧间上下文状态类型为第三种帧间上下文状态(即“帧间上下文三”);判断TriSoupVerticesPred的取值是否等于3,即TriSoupVerticesPred==3?若TriSoupVerticesPred的取值等于3,则确定当前顶点的帧间上下文状态类型为第四种帧间上下文状态(即“帧间上下文四”)。
还需要说明的是,在本申请实施例中,在根据帧间上下文状态类型确定出其对应的上下文状态以及解码器组之后,可以进一步从解码器组中选取合适的目标解码器。在一些实施例中,对于步骤S903来说,参见图10,该步骤可以包括:
S1001,根据上下文状态,确定当前顶点的解码器索引。
S1002,根据解码器索引,从解码器组中确定当前顶点对应的目标解码器。
在本申请实施例中,上下文状态与解码器索引之间具有映射关系。在确定出当前顶点对应的上下文状态之后,可以从解码器组中选取当前顶点对应的目标解码器。示例性地,解码器组可以包括解码器1、解码器2、…、解码器N,若解码器索引为i,则可以将解码器组中的解码器i确定为目标解码器。
可以理解地,在本申请实施例中,当前顶点的参考信息包括下述至少一项:当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量、当前顶点的未补偿参考顶点信息和当前顶点的已解码顶点信息。
在一种可能的实现方式中,根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及解码器组,可以包括:在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量大于第二值时,确定在帧间上下文状态类型下对应的第一上下文状态以及第一解码器组。
相应地,在一些实施例中,根据上下文状态,在解码器组中确定当前顶点对应的目标解码器,可以包括:根据第一上下文状态确定当前顶点的解码器索引;根据解码器索引,从第一解码器组中确定当前顶点对应的目标解码器。
在本申请实施例中,第二值可以设置为0。其中,如果当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量大于0,表明未补偿邻居顶点预测得不好,此时不使用未补偿参考顶点预测,这时候可以确定出在当前的帧间上下文状态类型下对应的第一上下文状态以及第一解码器组;然后根据第一上下文状态确定当前顶点的解码器索引;根据解码器索引,从第一解码器组中确定对应的目标解码器。需要注意的是,上下文状态与解码器索引之间具有映射关系。另外,假设第一解码器组包括解码器1、解码器2、…、解码器N,若解码器索引为i,则可以将第一解码器组中的解码器i确定为目标解码器。
在一种可能的实现方式中,根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及解码器组,可以包括:在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第四值时,确定在帧间上下文状态类型下对应的第二上下文状态以及第二解码器组。
相应地,在一些实施例中,根据上下文状态,在解码器组中确定当前顶点对应的目标解码器,可以包括:根据第二上下文状态确定当前顶点的解码器索引;根据解码器索引,从第二解码器组中确定当前 顶点对应的目标解码器。
在本申请实施例中,第二值可以设置为0,第四值可以设置为0。其中,如果当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于0,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为0,那么在第一比特信息为高比特信息时,则表明未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为0,这时候可以确定出在当前的帧间上下文状态类型下对应的第二上下文状态以及第二解码器组;然后根据第二上下文状态确定当前顶点的解码器索引;根据解码器索引,从第二解码器组中确定对应的目标解码器。在这里,假设第二解码器组包括解码器1、解码器2、…、解码器N,若解码器索引为i,则可以将第二解码器组中的解码器i确定为目标解码器。
在一种可能的实现方式中,根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及解码器组,可以包括:在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第五值时,确定在帧间上下文状态类型下对应的第三上下文状态以及第三解码器组。
相应地,在一些实施例中,根据上下文状态,在解码器组中确定当前顶点对应的目标解码器,可以包括:根据第三上下文状态确定当前顶点的解码器索引;根据解码器索引,从第三解码器组中确定当前顶点对应的目标解码器。
在本申请实施例中,第二值可以设置为0,第五值可以设置为1。其中,如果当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于0,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为1,那么在第一比特信息为高比特信息时,则表明未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为1,这时候可以确定出在当前的帧间上下文状态类型下对应的第三上下文状态以及第三解码器组;然后根据第三上下文状态确定当前顶点的解码器索引;根据解码器索引,从第三解码器组中确定对应的目标解码器。在这里,假设第三解码器组包括解码器1、解码器2、…、解码器N,若解码器索引为i,则可以将第三解码器组中的解码器i确定为目标解码器。
示例性地,假设当前顶点的帧间上下文状态类型为第一种帧间上下文状态(即帧间上下文一状态),那么在当前顶点的未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,确定在第一种帧间上下文状态下的第一上下文状态以及第一解码器组(例如Decoder2);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为0时,确定在第一种帧间上下文状态下的第二上下文状态以及第二解码器组(例如Decoder3);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为1时,确定在第一种帧间上下文状态下的第三上下文状态以及第三解码器组(例如Decoder4)。
示例性地,假设当前顶点的帧间上下文状态类型为第二种帧间上下文状态(即帧间上下文二状态),那么在当前顶点的未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,确定在第二种帧间上下文状态下的第一上下文状态以及第一解码器组(例如Decoder5);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为0时,确定在第二种帧间上下文状态下的第二上下文状态以及第二解码器组(例如Decoder6);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为1时,确定在第二种帧间上下文状态下的第三上下文状态以及第三解码器组(例如Decoder7)。
示例性地,假设当前顶点的帧间上下文状态类型为第三种帧间上下文状态(即帧间上下文三状态),那么在当前顶点的未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,确定在第三种帧间上下文状态下的第一上下文状态以及第一解码器组(例如Decoder8);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为0时,确定在第三种帧间上下文状态下的第二上下文状态以及第二解码器组(例如Decoder9);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为1时,确定在第三种帧间上下文状态下的第三上下文状态以及第三解码器组(例如Decoder10)。
示例性地,假设当前顶点的帧间上下文状态类型为第四种帧间上下文状态(即帧间上下文四状态),那么在当前顶点的未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,确定在第四种帧间上下文状态下的第一上下文状态以及第一解码器组(例如Decoder11);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为0时,确定在第四种帧间上下文状态下的第二上下文状态以及第二解码器组(例如Decoder12);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为1时,确定在第四种帧间上下文状态下的第三上下文状态以及第三解码器组(例如Decoder13)。
还可以理解地,在本申请实施例中,在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值时,还可以将其中的部分帧间上下文状态合并。在一些实施例中,参见图11,该方 法可以包括:
S1101,根据当前顶点的已解码顶点信息,确定已解码顶点信息中的第一比特信息对应的第一累计和值以及已解码顶点信息中进行预测的第一比特信息对应的第二累计和值。
S1102,根据第一累计和值以及第二累计和值确定中间结果。
S1103,在中间结果小于或等于预设阈值时,对上下文状态中的部分上下文状态进行调整,以将部分上下文状态合并到第一上下文状态中。
在本申请实施例中,如果当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,那么可以根据当前顶点的已解码顶点信息,确定已解码顶点信息中的第一比特信息对应的第一累计和值以及已解码顶点信息中进行预测的第一比特信息对应的第二累计和值;然后根据第一累计和值以及第二累计和值确定中间结果;根据中间结果,确定是否对上下文状态进行调整。
在本申请实施例中,第一累计和值可以用CoNum表示,第二累计和值可以用PredNum表示。示例性地,PredNum作为已解码顶点高比特中判定为预测的累计和值,CoNum作为已解码顶点高比特的累计和值,这样,可以将第二累计和值与第一累计和值之间的比值,即PredNum/CoNum作为中间结果,然后根据PredNum/CoNum与预设阈值(th)之间的比较结果,确定是否对上下文状态进行调整。或者,也可以将K倍的第二累计和值与第一累计和值之间的比值,即K*PredNum/CoNum作为中间结果,然后根据K*PredNum/CoNum与预设阈值(th)之间的比较结果,确定是否对上下文状态进行调整。在这里,系数K与预设阈值(th)均为预设常数。
在本申请实施例中,对于确定是否对上下文状态进行调整,该方法可以包括:在中间结果小于或等于预设阈值时,对上下文状态中的部分上下文状态进行调整,以将部分上下文状态合并到第一上下文状态中。否则,在中间结果大于预设阈值时,继续执行判断当前顶点的未补偿参考顶点信息中的第一比特信息预测为0或1的步骤。
示例性地,如果K*PredNum/CoNum<=th,则将部分上下文状态合并到第一上下文状态中;如果K*PredNum/CoNum>th,则继续判断当前顶点的未补偿参考顶点信息中的第一比特信息预测为0或1,以便在预测为0时确定当前顶点的第二上下文状态以及第二解码器组,在预测为1时确定当前顶点的第三上下文状态以及第三解码器组。
在一种可能的实现方式中,根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及解码器组,可以包括:在中间结果小于或等于预设阈值,或者当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量大于第二值时,确定在帧间上下文状态类型下对应的第一上下文状态以及第一解码器组。相应地,在一些实施例中,根据上下文状态,在解码器组中确定当前顶点对应的目标解码器,可以包括:根据第一上下文状态确定当前顶点的解码器索引;根据解码器索引,从第一解码器组中确定当前顶点对应的目标解码器。
在一种可能的实现方式中,根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及解码器组,可以包括:在中间结果大于预设阈值,且当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第四值时,确定在帧间上下文状态类型下对应的第二上下文状态以及第二解码器组。相应地,在一些实施例中,根据上下文状态,在解码器组中确定当前顶点对应的目标解码器,可以包括:根据第二上下文状态确定当前顶点的解码器索引;根据解码器索引,从第二解码器组中确定当前顶点对应的目标解码器。
在一种可能的实现方式中,根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及解码器组,可以包括:在中间结果大于预设阈值,且当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第五值时,确定在帧间上下文状态类型下对应的第三上下文状态以及第三解码器组。相应地,在一些实施例中,根据上下文状态,在解码器组中确定当前顶点对应的目标解码器,可以包括:根据第三上下文状态确定当前顶点的解码器索引;根据解码器索引,从第三解码器组中确定当前顶点对应的目标解码器。
在本申请实施例中,第二值可以设置为0,第四值可以设置为0,第五值可以设置为1。示例性地,如果K*PredNum/CoNum<=th,或者未补偿邻居顶点预测得不好,此时不使用未补偿参考顶点预测,这时候可以确定出在当前的帧间上下文状态类型下对应的第一上下文状态以及第一解码器组;然后根据第一上下文状态确定当前顶点的解码器索引;根据解码器索引,从第一解码器组中确定对应的目标解码器。如果K*PredNum/CoNum>th,且未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为0,这时候可以确定出在当前的帧间上下文状态类型下对应的第二上下文状态以及第二解码器组;然后根据第二上下文状态确定当前顶点的解码器索引;根据解码器索引,从第二解码器组中确定对应的目标解码器。如果K*PredNum/CoNum>th,且未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为1,这时候可以确定出在当前的帧间上下文状态类型下对应的第三上下文状态以及第三解码器组;然后根据第三上下 文状态确定当前顶点的解码器索引;根据解码器索引,从第三解码器组中确定对应的目标解码器。
S904,根据目标解码器解码码流,确定当前顶点的第一比特信息。
需要说明的是,在本申请实施例中,目标解码器为二进制解码器。在确定出目标解码器之后,可以根据所选择的目标解码器的概率进行自适应算术解码,以确定出当前顶点的第一比特信息,例如当前顶点的高比特信息。
还需要说明的是,在本申请实施例中,对于当前顶点的第一比特信息不使用帧间预测模式的情况,这时候可以确定当前顶点对应的帧内上下文状态以及对应的第四解码器组。示例性地,如果TriSoupVerticesPred<0,或者isInterGood=0,或者isInter=0,或者colocatedVertex<0,那么可以确定当前顶点的第一比特信息不使用帧间预测模式,这时候可以确定当前顶点对应的帧内上下文状态以及对应的第四解码器组(例如Decoder1)。然后根据帧内上下文状态确定当前顶点的解码器索引;根据解码器索引,从第四解码器组中确定对应的目标解码器。在这里,假设第四解码器组包括解码器1、解码器2、…、解码器N,若解码器索引为i,则可以将第四解码器组中的解码器i确定为目标解码器。
还需要说明的是,在本申请实施例中,N为正整数,i为大于0且小于或等于N的整数。示例性地,N的取值可以为32,即每一个解码器组中包括32个解码器,从中选择其中一个作为目标解码器,然后根据目标解码器解码码流,确定当前顶点的高比特信息。
本实施例提供了一种解码方法,确定当前顶点的预测标识信息;在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及解码器组;根据上下文状态,在解码器组中确定当前顶点对应的目标解码器;根据目标解码器解码码流,确定当前顶点的第一比特信息。也就是说,针对不同的帧间上下文状态类型均采用独立的上下文状态,而且不同的上下文状态分别对应各自的解码器组,解决了相关技术中不同的上下文状态共用同一个解码器组所造成的概率更新问题,能够选择更合适的解码器组,从而提升了目标解码器选择的准确性;另外,由于不同的上下文状态分别对应各自的解码器组,同时还可以将部分帧间上下文状态进行合并,从而解决了在使用帧间预测的情况较少时帧间上下文状态对应的概率收敛缓慢问题,还能够提升帧间预测效果;如此提高了点云的几何编码效率,进而提升了编解码性能。
在本申请的另一实施例中,图12为本申请实施例提供的一种编码方法的流程示意图。如图12所示,该方法可以包括:
S1201,确定当前顶点的预测标识信息。
需要说明的是,在本申请实施例中,该编码方法可以应用于G-PCC编解码框架中的编码器或者说是编码端。其中,这里的编码方法具体可以是一种帧间编码方法,更具体地,是一种点云几何信息的帧间编码方法。通过充分利用帧间预测信息,能够提高点云的编码效率。
还需要说明的是,在本申请实施例中,对于确定当前顶点的预测标识信息,可以包括:确定当前顶点的未补偿参考顶点信息、当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量、当前顶点的补偿邻居顶点的第一比特信息预测不准的数量以及帧间使能标识信息的取值;根据未补偿参考顶点信息、未补偿邻居顶点的第一比特信息预测不准的数量、补偿邻居顶点的第一比特信息预测不准的数量和帧间使能标识信息的取值,确定当前顶点的预测标识信息。
可以理解地,在本申请实施例中,可以是根据未补偿参考顶点信息、未补偿邻居顶点信息、补偿邻居顶点信息以及帧间使能标识信息的取值,来确定当前顶点是否使用帧间预测模式。
在这里,当前顶点的预测标识信息可以用isInterGood表示。其中,“isInterGood”具体是指开启帧间后当前顶点的补偿邻居顶点信息和未补偿邻居顶点信息判定为预测好或坏。如果判定为预测的好,则表示isInterGood的取值等于1,这时候预测标识信息指示当前顶点的第一比特信息使用帧间预测模式;如果判定为预测的不好,则表示isInterGood的取值等于0,这时候预测标识信息指示当前顶点的第一比特信息使用帧内预测模式。也就是说,根据isInterGood的取值(0或1),可以划分为帧内上下文和帧间上下文两大集合。
在这里,当前顶点的未补偿参考顶点信息可以用colocatedVertex表示,当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量可以用nBadPredRef1表示,当前顶点的补偿邻居顶点的第一比特信息预测不准的数量可以用nBadPredComp1表示,帧间使能标识信息可以用isInter表示。其中,“nBadPredRef1”具体可以是指邻居未补偿参考顶点预测邻居顶点的第一比特信息时预测不准的数量,“nBadPredComp1”具体可以是指邻居补偿参考顶点预测邻居顶点的第一比特信息时预测不准的数量,“isInter”的取值可以是由语法元素gbh.interPredictionEnabledFlag控制,该语法元素用于指示上层的帧间预测是否启用,具体为当前顶点的高层(例如slice级、图像级、序列级等)帧间预测是否启用。
在一些实施例中,对于确定帧间使能标识信息的取值,可以包括:在当前顶点的高层启用帧间预测模式时,确定帧间使能标识信息的取值为第一值;在当前顶点的高层不启用帧间预测模式时,确定帧间使能标识信息的取值为第二值。进一步地,该方法还包括:对帧间使能标识信息的取值进行编码处理,将所得到的编码比特写入码流。这样,后续在解码端通过解码码流就可以确定帧间使能标识信息的取值。
在本申请实施例中,帧间使能标识信息的取值可以由语法元素gbh.interPredictionEnabledFlag控制,因此,该方法还可以包括:在当前顶点的高层启用帧间预测模式时,确定gbh.interPredictionEnabledFlag的取值为第一值;在当前顶点的高层不启用帧间预测模式时,确定gbh.interPredictionEnabledFlag的取值为第二值。进一步地,该方法还包括:对gbh.interPredictionEnabledFlag的取值进行编码处理,将所得到的编码比特写入码流。这样,后续在解码端通过解码码流也可以确定帧间使能标识信息的取值。
具体地,在本申请实施例中,如果语法元素gbh.interPredictionEnabledFlag的取值为1,表明帧间预测启用,则称为P帧,此时isInter的取值为1;反之,如果语法元素gbh.interPredictionEnabledFlag的取值为1,表明帧间预测不启用,则称为I帧,此时isInter的取值为0。
也就是说,在本申请实施例中,对于当前顶点的预测标识信息来说,可以是根据未补偿参考顶点信息、邻居未补偿参考顶点信息、邻居未补偿参考顶点信息以及语法元素gbh.interPredictionEnabledFlag的取值,确定当前顶点是否启用帧间预测。
还可以理解地,在本申请实施例中,顶点信息可以包括顶点是否存在、高比特取值和低比特取值等。其中,对于顶点是否存在、高比特取值和低比特取值等编码是分开进行的。在编码过程中,帧内预测和帧间预测都是采用OBUF技术进行熵编码,但是帧间预测的上下文状态构建与帧内预测不同。具体地,帧间上下文状态(Inter State)实际上是待编码符号的帧内上下文状态(Intra State)与通过参考点云获得的当前顶点预测信息的联合。
在本申请实施例中,参考点云可以包括未补偿参考点云(即原始参考点云)和补偿参考点云(即经过运动补偿后获得的参考点云),利用未补偿参考点云得到的顶点信息为未补偿参考顶点信息,利用补偿参考点云得到的顶点信息为补偿参考顶点信息。另外,在本申请实施例中,该编码方法主要是针对当前顶点的第一比特信息进行编码的方法。在这里,第一比特信息可以是高比特取值,或者也可以是低比特取值。下文将以第一比特信息为高比特取值为例进行相关描述。
在一些实施例中,该方法还可以包括:在帧间使能标识信息的取值为第一值,且未补偿参考顶点信息的取值大于或等于第二值,且未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第三值或者补偿邻居顶点的第一比特信息预测不准的数量小于或等于第三值时,确定预测标识信息指示当前顶点的第一比特信息使用帧间预测模式。
在本申请实施例中,第一值可以设置为1,第二值可以设置为0,第三值可以设置为4。这样,对于帧间预测模式的判定,可以是:isInterGood=isInter&&colocatedVertex>=0&&(nBadPredRef1<=4||nBadPredComp1<=4),即isInterGood的取值可以由isInter、colocatedVertex、nBadPredRef1和nBadPredComp1共同确定。其中,colocatedVertex表示未补偿参考顶点信息(高比特和低比特),nBadPredRef1为邻居未补偿参考顶点预测邻居顶点的高比特信息时预测不准的数量,nBadPredComp1为邻居补偿参考顶点预测邻居顶点的高比特信息时预测不准的数量。另外,isInter的取值是由语法元素gbh.interPredictionEnabledFlag控制,该语法元素用于指示待编码顶点的高层(例如slice级、图像级、序列级等)帧间预测是否启用。如果帧间预测启用,则称为P帧,此时isInter的取值为1;反之,如果不启用,则称为I帧,此时isInter的取值为0。
S1202,在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组。
S1203,根据上下文状态,在编码器组中确定当前顶点对应的目标编码器。
需要说明的是,在本申请实施例中,如果isInterGood=1,表明预测标识信息指示当前顶点的第一比特信息使用帧间预测模式,那么需要继续确定当前顶点的帧间上下文状态类型。在一些实施例中,确定当前顶点的帧间上下文状态类型,可以包括:确定当前顶点的补偿参考顶点的位置信息;根据补偿参考顶点的位置信息,确定当前顶点的帧间上下文状态类型。
还需要说明的是,在本申请实施例中,可以根据顶点标识信息的取值来确定当前顶点的帧间上下文状态类型。其中,顶点标识信息可以用TriSoupVerticesPred表示。根据TriSoupVerticesPred的取值,可以将帧间上下文划分为四种类型:第一种帧间上下文状态(或者称为“帧间上下文一状态”,简称为“帧间上下文一”)、第二种帧间上下文状态(或者称为“帧间上下文二状态”,简称为“帧间上下文二”)、第三种帧间上下文状态(或者称为“帧间上下文三状态”,简称为“帧间上下文三”)和第四种帧间上下文状态(或者称为“帧间上下文四状态”,简称为“帧间上下文四”)。其中,TriSoupVerticesPred代表 补偿参考顶点的位置信息,也就是说,根据补偿参考顶点的位置信息可以确定出TriSoupVerticesPred的取值。在一种具体的实施例中,该方法还包括:确定TriSoupVerticesPred的取值;根据TriSoupVerticesPred的取值,确定当前顶点的帧间上下文状态类型。
在本申请实施例中,在根据补偿参考顶点的位置信息确定出TriSoupVerticesPred的取值之后,判断TriSoupVerticesPred的取值是否等于0,即TriSoupVerticesPred==0?若TriSoupVerticesPred的取值等于0,则确定当前顶点的帧间上下文状态类型为第一种帧间上下文状态(即“帧间上下文一”);判断TriSoupVerticesPred的取值是否等于1,即TriSoupVerticesPred==1?若TriSoupVerticesPred的取值等于1,则确定当前顶点的帧间上下文状态类型为第二种帧间上下文状态(即“帧间上下文二”);判断TriSoupVerticesPred的取值是否等于2,即TriSoupVerticesPred==2?若TriSoupVerticesPred的取值等于2,则确定当前顶点的帧间上下文状态类型为第三种帧间上下文状态(即“帧间上下文三”);判断TriSoupVerticesPred的取值是否等于3,即TriSoupVerticesPred==3?若TriSoupVerticesPred的取值等于3,则确定当前顶点的帧间上下文状态类型为第四种帧间上下文状态(即“帧间上下文四”)。
还需要说明的是,在本申请实施例中,在根据帧间上下文状态类型确定出其对应的上下文状态以及编码器组之后,可以进一步从编码器组中选取合适的目标编码器。在一种具体的实施例中,根据上下文状态,在编码器组中确定当前顶点对应的目标编码器,可以包括:根据上下文状态,确定当前顶点的编码器索引;根据编码器索引,从编码器组中确定当前顶点对应的目标编码器。
在本申请实施例中,上下文状态与编码器索引之间具有映射关系。在确定出当前顶点对应的上下文状态之后,可以从编码器组中选取当前顶点对应的目标编码器。示例性地,编码器组可以包括编码器1、编码器2、…、编码器N,若编码器索引为i,则可以将编码器组中的编码器i确定为目标编码器。
可以理解地,在本申请实施例中,当前顶点的参考信息包括下述至少一项:当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量、当前顶点的未补偿参考顶点信息和当前顶点的已编码顶点信息。
在一种可能的实现方式中,根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组,可以包括:在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量大于第二值时,确定在帧间上下文状态类型下对应的第一上下文状态以及第一编码器组。
相应地,在一些实施例中,根据上下文状态,在编码器组中确定当前顶点对应的目标编码器,可以包括:根据第一上下文状态确定当前顶点的编码器索引;根据编码器索引,从第一编码器组中确定当前顶点对应的目标编码器。
在本申请实施例中,第二值可以设置为0。其中,如果当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量大于0,表明未补偿邻居顶点预测得不好,此时不使用未补偿参考顶点预测,这时候可以确定出在当前的帧间上下文状态类型下对应的第一上下文状态以及第一编码器组;然后根据第一上下文状态确定当前顶点的编码器索引;根据编码器索引,从第一编码器组中确定对应的目标编码器。需要注意的是,上下文状态与编码器索引之间具有映射关系。另外,假设第一编码器组包括编码器1、编码器2、…、编码器N,若编码器索引为i,则可以将第一编码器组中的编码器i确定为目标编码器。
在一种可能的实现方式中,根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组,可以包括:在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第四值时,确定在帧间上下文状态类型下对应的第二上下文状态以及第二编码器组。
相应地,在一些实施例中,根据上下文状态,在编码器组中确定当前顶点对应的目标编码器,可以包括:根据第二上下文状态确定当前顶点的编码器索引;根据编码器索引,从第二编码器组中确定当前顶点对应的目标编码器。
在本申请实施例中,第二值可以设置为0,第四值可以设置为0。其中,如果当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于0,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为0,那么在第一比特信息为高比特信息时,则表明未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为0,这时候可以确定出在当前的帧间上下文状态类型下对应的第二上下文状态以及第二编码器组;然后根据第二上下文状态确定当前顶点的编码器索引;根据编码器索引,从第二编码器组中确定对应的目标编码器。在这里,假设第二编码器组包括编码器1、编码器2、…、编码器N,若编码器索引为i,则可以将第二编码器组中的编码器i确定为目标编码器。
在一种可能的实现方式中,根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组,可以包括:在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第五值时,确定在帧间上下文状态类型下对应的第三上下文状态以及第三编码器组。
相应地,在一些实施例中,根据上下文状态,在编码器组中确定当前顶点对应的目标编码器,可以 包括:根据第三上下文状态确定当前顶点的编码器索引;根据编码器索引,从第三编码器组中确定当前顶点对应的目标编码器。
在本申请实施例中,第二值可以设置为0,第五值可以设置为1。其中,如果当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于0,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为1,那么在第一比特信息为高比特信息时,则表明未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为1,这时候可以确定出在当前的帧间上下文状态类型下对应的第三上下文状态以及第三编码器组;然后根据第三上下文状态确定当前顶点的编码器索引;根据编码器索引,从第三编码器组中确定对应的目标编码器。在这里,假设第三编码器组包括编码器1、编码器2、…、编码器N,若编码器索引为i,则可以将第三编码器组中的编码器i确定为目标编码器。
示例性地,假设当前顶点的帧间上下文状态类型为第一种帧间上下文状态(即帧间上下文一状态),那么在当前顶点的未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,确定在第一种帧间上下文状态下的第一上下文状态以及第一编码器组(例如Coder2);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为0时,确定在第一种帧间上下文状态下的第二上下文状态以及第二编码器组(例如Coder3);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为1时,确定在第一种帧间上下文状态下的第三上下文状态以及第三编码器组(例如Coder4)。
示例性地,假设当前顶点的帧间上下文状态类型为第二种帧间上下文状态(即帧间上下文二状态),那么在当前顶点的未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,确定在第二种帧间上下文状态下的第一上下文状态以及第一编码器组(例如Coder5);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为0时,确定在第二种帧间上下文状态下的第二上下文状态以及第二编码器组(例如Coder6);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为1时,确定在第二种帧间上下文状态下的第三上下文状态以及第三编码器组(例如Coder7)。
示例性地,假设当前顶点的帧间上下文状态类型为第三种帧间上下文状态(即帧间上下文三状态),那么在当前顶点的未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,确定在第三种帧间上下文状态下的第一上下文状态以及第一编码器组(例如Coder8);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为0时,确定在第三种帧间上下文状态下的第二上下文状态以及第二编码器组(例如Coder9);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为1时,确定在第三种帧间上下文状态下的第三上下文状态以及第三编码器组(例如Coder10)。
示例性地,假设当前顶点的帧间上下文状态类型为第四种帧间上下文状态(即帧间上下文四状态),那么在当前顶点的未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,确定在第四种帧间上下文状态下的第一上下文状态以及第一编码器组(例如Coder11);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为0时,确定在第四种帧间上下文状态下的第二上下文状态以及第二编码器组(例如Coder12);在当前顶点的未补偿邻居顶点预测得好且当前顶点的未补偿参考顶点信息中的高比特预测为1时,确定在第四种帧间上下文状态下的第三上下文状态以及第三编码器组(例如Coder13)。
还可以理解地,在本申请实施例中,在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值时,还可以将其中的部分帧间上下文状态合并。在一些实施例中,该方法还可以包括:根据当前顶点的已编码顶点信息,确定已编码顶点信息中的第一比特信息对应的第一累计和值以及已编码顶点信息中进行预测的第一比特信息对应的第二累计和值;根据第一累计和值以及第二累计和值确定中间结果;在中间结果小于或等于预设阈值时,对上下文状态中的部分上下文状态进行调整,以将部分上下文状态合并到第一上下文状态中。
需要说明的是,在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值时,可以根据当前顶点的已编码顶点信息,确定已编码顶点信息中的第一比特信息对应的第一累计和值以及已编码顶点信息中进行预测的第一比特信息对应的第二累计和值;然后根据第一累计和值以及第二累计和值确定中间结果;根据中间结果,确定是否对上下文状态进行调整。
在本申请实施例中,第一累计和值可以用CoNum表示,第二累计和值可以用PredNum表示。示例性地,PredNum作为已编码顶点高比特中判定为预测的累计和值,CoNum作为已编码顶点高比特的累计和值,这样,可以将第二累计和值与第一累计和值之间的比值,即PredNum/CoNum作为中间结果,然后根据PredNum/CoNum与预设阈值(th)之间的比较结果,确定是否对上下文状态进行调整。或者,也可以将K倍的第二累计和值与第一累计和值之间的比值,即K*PredNum/CoNum作为中间结果,然 后根据K*PredNum/CoNum与预设阈值(th)之间的比较结果,确定是否对上下文状态进行调整。在这里,系数K与预设阈值(th)均为预设常数。
还需要说明的是,对于根据中间结果,确定是否对上下文状态进行调整,该方法可以包括:在中间结果小于或等于预设阈值时,对上下文状态中的部分上下文状态进行调整,以将部分上下文状态合并到第一上下文状态中。否则,在中间结果大于预设阈值时,继续执行判断当前顶点的未补偿参考顶点信息中的第一比特信息预测为0或1的步骤。
示例性地,如果K*PredNum/CoNum<=th,则将部分上下文状态合并到第一上下文状态中;如果K*PredNum/CoNum>th,则继续判断当前顶点的未补偿参考顶点信息中的第一比特信息预测为0或1,以便在预测为0时确定当前顶点的第二上下文状态以及第二编码器组,在预测为1时确定当前顶点的第三上下文状态以及第三编码器组。
在一种可能的实现方式中,根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组,可以包括:在中间结果小于或等于预设阈值,或者当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量大于第二值时,确定在帧间上下文状态类型下对应的第一上下文状态以及第一编码器组。相应地,在一些实施例中,根据上下文状态,在编码器组中确定当前顶点对应的目标编码器,可以包括:根据第一上下文状态确定当前顶点的编码器索引;根据编码器索引,从第一编码器组中确定当前顶点对应的目标编码器。
在一种可能的实现方式中,根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组,可以包括:在中间结果大于预设阈值,且当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第四值时,确定在帧间上下文状态类型下对应的第二上下文状态以及第二编码器组。相应地,在一些实施例中,根据上下文状态,在编码器组中确定当前顶点对应的目标编码器,可以包括:根据第二上下文状态确定当前顶点的编码器索引;根据编码器索引,从第二编码器组中确定当前顶点对应的目标编码器。
在一种可能的实现方式中,根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组,可以包括:在中间结果大于预设阈值,且当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第五值时,确定在帧间上下文状态类型下对应的第三上下文状态以及第三编码器组。相应地,在一些实施例中,根据上下文状态,在编码器组中确定当前顶点对应的目标编码器,可以包括:根据第三上下文状态确定当前顶点的编码器索引;根据编码器索引,从第三编码器组中确定当前顶点对应的目标编码器。
在本申请实施例中,第二值可以设置为0,第四值可以设置为0,第五值可以设置为1。示例性地,如果K*PredNum/CoNum<=th,或者未补偿邻居顶点预测得不好,此时不使用未补偿参考顶点预测,这时候可以确定出在当前的帧间上下文状态类型下对应的第一上下文状态以及第一编码器组;然后根据第一上下文状态确定当前顶点的编码器索引;根据编码器索引,从第一编码器组中确定对应的目标编码器。如果K*PredNum/CoNum>th,且未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为0,这时候可以确定出在当前的帧间上下文状态类型下对应的第二上下文状态以及第二编码器组;然后根据第二上下文状态确定当前顶点的编码器索引;根据编码器索引,从第二编码器组中确定对应的目标编码器。如果K*PredNum/CoNum>th,且未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为1,这时候可以确定出在当前的帧间上下文状态类型下对应的第三上下文状态以及第三编码器组;然后根据第三上下文状态确定当前顶点的编码器索引;根据编码器索引,从第三编码器组中确定对应的目标编码器。
S1204,根据目标编码器对当前顶点的第一比特信息进行编码处理,将所得到的编码比特写入码流。
需要说明的是,在本申请实施例中,目标编码器为二进制编码器。在确定出目标编码器之后,可以根据所选择的目标编码器的概率进行自适应算术编码,例如根据目标编码器的概率对当前顶点的高比特信息进行自适应算术编码。
还需要说明的是,在本申请实施例中,对于当前顶点的第一比特信息不使用帧间预测模式的情况,这时候可以确定当前顶点对应的帧内上下文状态以及对应的第四编码器组。示例性地,如果TriSoupVerticesPred<0,或者isInterGood=0,或者isInter=0,或者colocatedVertex<0,那么可以确定当前顶点的第一比特信息不使用帧间预测模式,这时候可以确定当前顶点对应的帧内上下文状态以及对应的第四编码器组(例如Coder1)。然后根据帧内上下文状态确定当前顶点的编码器索引;根据编码器索引,从第四编码器组中确定对应的目标编码器。在这里,假设第四编码器组包括编码器1、编码器2、…、编码器N,若编码器索引为i,则可以将第四编码器组中的编码器i确定为目标编码器。
还需要说明的是,在本申请实施例中,N为正整数,i为大于0且小于或等于N的整数。示例性地,N的取值可以为32,即每一个编码器组中包括32个编码器,从中选择其中一个作为目标编码器,然后根据目标编码器对当前顶点的高比特信息进行编码,并将所得到的编码比特写入码流。
也就是说,本申请实施例还提供了一种码流,该码流是根据待编码信息进行比特编码生成的;其中,待编码信息包括下述至少一项:当前顶点的第一比特信息和帧间使能标识信息的取值。
本实施例提供了一种编码方法,确定当前顶点的预测标识信息;在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组;根据上下文状态,在编码器组中确定当前顶点对应的目标编码器;根据目标编码器对当前顶点的第一比特信息进行编码处理,将所得到的编码比特写入码流。也就是说,针对不同的帧间上下文状态类型均采用独立的上下文状态,而且不同的上下文状态分别对应各自的编码器组,解决了相关技术中不同的上下文状态共用同一个编码器组所造成的概率更新问题,能够选择更合适的编码器组,从而提升了目标编码器选择的准确性;另外,由于不同的上下文状态分别对应各自的编码器组,同时还可以将部分帧间上下文状态进行合并,从而解决了在使用帧间预测的情况较少时帧间上下文状态对应的概率收敛缓慢问题,还能够提升帧间预测效果;如此提高了点云的几何编码效率,进而提升了编解码性能。
在本申请的又一实施例中,基于前述实施例的编码方法,图13为本申请实施例提供的一种编码方法的详细流程示意图。如图13所示,该详细流程可以包括:
S1301,isInter&&colocatedVertex>=0?
S1302,nBadPredRef1<=4||nBadPredComp1<=4?
S1303,isInterGood=0。
S1304,isInterGood=1。
S1305,确定TriSoupVerticesPred。
S1306,TriSoupVerticesPred<0?
S1307,TriSoupVerticesPred==0?
S1308,TriSoupVerticesPred==1?
S1309,TriSoupVerticesPred==2?
S1310,TriSoupVerticesPred==3?
S1311,确定类型为帧内上下文状态。
S1312,确定类型为帧间上下文一状态。
S1313,确定类型为帧间上下文二状态。
S1314,确定类型为帧间上下文三状态。
S1315,确定类型为帧间上下文四状态。
S1316,nBadPredRef1<=0?
S1317,根据未补偿帧间信息确定不预测。
S1318,根据未补偿帧间信息确定预测。
S1319,K*PredNum/CoNum>th?
S1320,(colocatedVertex>>1&1)==1?
S1321,确定不预测。
S1322,确定预测为0。
S1323,确定预测为1。
S1324,基于编码器组Coder1进行编码。
S1325,基于编码器组Coder2进行编码。
S1326,基于编码器组Coder3进行编码。
S1327,基于编码器组Coder4进行编码。
S1328,基于编码器组Coder5、6、7进行编码。
S1329,基于编码器组Coder8、9、10进行编码。
S1330,基于编码器组Coder11、12、13进行编码。
需要说明的是,图13中灰色模块代表的流程与虚线框内的流程一致,即每个灰度模块内均包括S1316~S1323的流程。另外,每一个编码器组均包括多个熵编码器。以Coder j为例,Coder j可以包括coder1、2、…、32,j为正整数。此时可以根据帧内上下文状态/帧间上下文状态从对应的编码组中选择其中一个编码器进行编码。
还需要说明的是,帧内上下文状态的次要信息包含了15bit信息,对于帧间上下文状态来说,无论是帧间上下文一状态、帧间上下文二状态、帧间上下文三状态或者是帧间上下文四状态,帧间上下文状态的次要信息都包含了17bit信息,并分为以下四种情况(与anchor一致):帧内次要信息、帧间次要 信息1(不预测)、帧间次要信息2(预测为0)和帧间次要信息3(预测为1),具体如前述的图8所示。
可以理解地,本申请实施例的技术方案主要包括:将部分帧间上下文状态合并;帧间上下文状态选用适合各自状态的编码器组,具体如图13所示。
在一种可能的实现方式中,结合图13,该具体算法细节可以包括:
(1)上下文状态信息。
帧内上下文状态采用独立的状态集,如都可以采用相关技术中已有方案的构建方法。
帧间上下文一状态、帧间上下文二状态、帧间上下文三状态、帧间上下文四状态均采用独立的状态集,在图13中,若将PredNum作为已编码顶点高bit中判定为预测的累计和值,CoNum作为已编码顶点高bit的累计和值,K为系数,th为阈值,则当K*PredNum/CoNum<=th时,可以将帧间上下文状态合并。
(2)编码器组映射。
帧内上下文状态(Intra State)可以映射到编码器组Coder1;
帧间上下文状态(Inter state)可以映射到12个编码器组:
(a)帧间上下文一状态:当未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,映射到编码器组Coder2;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为0时,映射到编码器组Coder3;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为1时,映射到编码器组Coder4;
(b)帧间上下文二状态:当未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,映射到编码器组Coder5;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为0时,映射到编码器组Coder6;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为1时,映射到编码器组Coder7;
(c)帧间上下文三状态:当未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,映射到编码器组Coder8;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为0时,映射到编码器组Coder9;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为1时,映射到编码器组Coder10;
(d)帧间上下文四状态:当未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,映射到编码器组Coder11;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为0时,映射到编码器组Coder12;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为1时,映射到编码器组Coder13。
也就是说,在本申请实施例中,本技术方案中基于帧内/帧间上下文状态的多帧点云熵编码过程,主要分为两个步骤:
步骤1,帧间预测判定:
根据未补偿参考顶点信息、邻居未补偿参考顶点信息、邻居补偿参考顶点信息以及帧间预测使能的语法元素gbh.interPredictionEnabledFlag,决定是否启用帧间预测。
步骤2,编码器选择:
根据上述信息确定上下文状态集以及编码器组,在上下文状态集中确定待编码符号的上下文状态,映射到编码器组中的二进制编码器。
需要注意的是,这里的上下文状态集是指如图8所示的情况,以帧间次要信息1为例,上下文状态集可以包括:0 0以及15bit-非帧间信息;以帧间次要信息2为例,上下文状态集可以包括:1 0以及15bit-非帧间信息;以帧间次要信息3为例,上下文状态集可以包括:1 1以及15bit-非帧间信息。
步骤3,自适应算术编码:
根据选定二进制编码器的概率,进行自适应算术编码。
在本申请的又一实施例中,基于前述实施例的解码方法,图14为本申请实施例提供的一种解码方法的详细流程示意图。如图14所示,该详细流程可以包括:
S1401,isInter&&colocatedVertex>=0?
S1402,nBadPredRef1<=4||nBadPredComp1<=4?
S1403,isInterGood=0。
S1404,isInterGood=1。
S1405,确定TriSoupVerticesPred。
S1406,TriSoupVerticesPred<0?
S1407,TriSoupVerticesPred==0?
S1408,TriSoupVerticesPred==1?
S1409,TriSoupVerticesPred==2?
S1410,TriSoupVerticesPred==3?
S1411,确定类型为帧内上下文状态。
S1412,确定类型为帧间上下文一状态。
S1413,确定类型为帧间上下文二状态。
S1414,确定类型为帧间上下文三状态。
S1415,确定类型为帧间上下文四状态。
S1416,nBadPredRef1<=0?
S1417,根据未补偿帧间信息确定不预测。
S1418,根据未补偿帧间信息确定预测。
S1419,K*PredNum/CoNum>th?
S1420,(colocatedVertex>>1&1)==1?
S1421,确定不预测。
S1422,确定预测为0。
S1423,确定预测为1。
S1424,基于解码器组Decoder1进行解码。
S1425,基于解码器组Decoder2进行解码。
S1426,基于解码器组Decoder3进行解码。
S1427,基于解码器组Decoder4进行解码。
S1428,基于解码器组Decoder5、6、7进行解码。
S1429,基于解码器组Decoder8、9、10进行解码。
S1430,基于解码器组Decoder11、12、13进行解码。
需要说明的是,图14中灰色模块代表的流程与虚线框内的流程一致,即每个灰度模块内均包括S1416~S1423的流程。另外,每一个解码器组均包括多个熵解码器。以Decoder j为例,Decoder j可以包括decoder1、2、…、32,j为正整数。此时可以根据帧内上下文状态/帧间上下文状态从对应的解码组中选择其中一个解码器进行解码。
还需要说明的是,帧内上下文状态的次要信息包含了15bit信息,对于帧间上下文状态来说,无论是帧间上下文一状态、帧间上下文二状态、帧间上下文三状态或者是帧间上下文四状态,帧间上下文状态的次要信息都包含了17bit信息,并分为以下四种情况(与anchor一致):帧内次要信息、帧间次要信息1(不预测)、帧间次要信息2(预测为0)和帧间次要信息3(预测为1),具体如前述的图8所示。
可以理解地,本申请实施例的技术方案主要包括:将部分帧间上下文状态合并;帧间上下文状态选用适合各自状态的解码器组,具体如图14所示。
在一种可能的实现方式中,结合图14,该具体算法细节可以包括:
(1)上下文状态信息。
帧内上下文状态采用独立的状态集,如都可以采用相关技术中已有方案的构建方法。
帧间上下文一状态、帧间上下文二状态、帧间上下文三状态、帧间上下文四状态均采用独立的状态集,在图14中,若将PredNum作为已解码顶点高bit中判定为预测的累计和值,CoNum作为已解码顶点高bit的累计和值,K为系数,th为阈值,则当K*PredNum/CoNum<=th时,可以将帧间上下文状态合并。
(2)解码器组映射。
帧内上下文状态(Intra State)可以映射到解码器组Decoder1;
帧间上下文状态(Inter state)可以映射到12个解码器组:
(a)帧间上下文一状态:当未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,映射到解码器组Decoder2;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为0时,映射到解码器组Decoder3;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为1时,映射到解码器组Decoder4;
(b)帧间上下文二状态:当未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,映射到解码器组Decoder5;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为0时,映射到解码器组Decoder6;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为1时,映射到解码器组Decoder7;
(c)帧间上下文三状态:当未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,映射到解码器组Decoder8;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为0时,映射到解码器组Decoder9;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为1时,映射到解码器组Decoder10;
(d)帧间上下文四状态:当未补偿邻居顶点预测得不好时,不使用未补偿参考顶点预测,映射到 解码器组Decoder11;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为0时,映射到解码器组Decoder12;当未补偿邻居顶点预测得好且未补偿参考顶点的高比特预测为1时,映射到解码器组Decoder13。
也就是说,在本申请实施例中,本技术方案中基于帧内/帧间上下文状态的多帧点云熵解码过程,主要分为两个步骤:
步骤1,帧间预测判定:
根据未补偿参考顶点信息、邻居未补偿参考顶点信息、邻居补偿参考顶点信息以及帧间预测使能的语法元素gbh.interPredictionEnabledFlag,决定是否启用帧间预测。
步骤2,解码器选择:
根据上述信息确定上下文状态集以及解码器组,在上下文状态集中确定待解码符号的上下文状态,映射到解码器组中的二进制解码器。
步骤3,自适应算术解码:
根据选定二进制解码器的概率,进行自适应算术解码。
也就是说,本技术方案更加充分的利用了帧间预测信息,使得G-PCC的几何编码效率进一步提高。几何信息有损压缩条件下的BD-Rate表示:与相关技术相比,在获得相同编码质量的情况下,本技术方案的编码码率比相关技术的编码码率节省(BD-Rate为负值)或增加(BD-Rate为正值)的百分比。详见表1,其示出了C2条件下GES-TM-v5.0-Trisoup RAHT inter有损压缩的BD-Rate。其中,C2条件表示几何有损、属性有损(lossy geometry,lossy attributes),End-to-End BD-AttrRate表示端到端属性值针对属性码流的BD-Rate,Cat2数据集为多帧稠密点云,Overall average为所有序列测试效果的平均值。
表1
由此可以看出,由于表1中的BD-Rate为负值,那么相比于相关技术,本技术方案能够节省编码码率,从而能够提高几何编码效率。
通过上述实施例对前述实施例的具体实现进行了详细阐述,从中可以看出,根据前述实施例的技术方案,这里不仅可以实现合并部分帧间上下文状态,而且针对不同的帧间上下文状态选用合适的编码器组,从而不仅解决了相关技术中不同的上下文状态共用同一个编码器组/解码器组所造成的概率更新问题,而且还解决了在使用帧间预测的情况较少时帧间上下文状态对应的概率收敛缓慢问题,如此不仅能够提升帧间预测效果,而且还能够提高点云的几何编码效率,进而提升了编解码性能。
在本申请的再一实施例中,基于前述实施例相同的发明构思,图15为本申请实施例提供的一种编码器的组成结构示意图。如图15所示,该编码器150包括第一确定单元1501和编码单元1502,其中:
第一确定单元1501,配置为确定当前顶点的预测标识信息;以及在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组;
第一确定单元1501,还配置为根据上下文状态,在编码器组中确定当前顶点对应的目标编码器;
编码单元1502,配置为根据目标编码器对当前顶点的第一比特信息进行编码处理,将所得到的编码比特写入码流。
在一些实施例中,第一确定单元1501,还配置为根据上下文状态,确定当前顶点的编码器索引;以及根据编码器索引,从编码器组中确定当前顶点对应的目标编码器。
在一些实施例中,第一确定单元1501,还配置为确定当前顶点的未补偿参考顶点信息、当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量、当前顶点的补偿邻居顶点的第一比特信息预测不准的数量以及帧间使能标识信息的取值;并根据未补偿参考顶点信息、未补偿邻居顶点的第一比特信息预测不准的数量、补偿邻居顶点的第一比特信息预测不准的数量和帧间使能标识信息的取值,确定当前顶点的预测标识信息。
在一些实施例中,第一确定单元1501,还配置为在帧间使能标识信息的取值为第一值,且未补偿参考顶点信息的取值大于或等于第二值,且未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第三值或者补偿邻居顶点的第一比特信息预测不准的数量小于或等于第三值时,确定预测标识信息指示当前顶点的第一比特信息使用帧间预测模式。
在一些实施例中,第一确定单元1501,还配置为在当前顶点的高层启用帧间预测模式时,确定帧间使能标识信息的取值为第一值;在当前顶点的高层不启用帧间预测模式时,确定帧间使能标识信息的取值为第二值。
在一些实施例中,编码单元1502,还配置为对帧间使能标识信息的取值进行编码处理,将所得到的编码比特写入码流。
在一些实施例中,第一确定单元1501,还配置为确定当前顶点的补偿参考顶点的位置信息;以及根据补偿参考顶点的位置信息,确定当前顶点的帧间上下文状态类型。
在一些实施例中,当前顶点的参考信息包括下述至少一项:当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量、当前顶点的未补偿参考顶点信息和当前顶点的已编码顶点信息。
在一些实施例中,第一确定单元1501,还配置为在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量大于第二值时,确定在帧间上下文状态类型下对应的第一上下文状态以及第一编码器组;以及还配置为根据第一上下文状态确定当前顶点的编码器索引;根据编码器索引,从第一编码器组中确定当前顶点对应的目标编码器。
在一些实施例中,第一确定单元1501,还配置为在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第四值时,确定在帧间上下文状态类型下对应的第二上下文状态以及第二编码器组;以及还配置为根据第二上下文状态确定当前顶点的编码器索引;根据编码器索引,从第二编码器组中确定当前顶点对应的目标编码器。
在一些实施例中,第一确定单元1501,还配置为在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第五值时,确定在帧间上下文状态类型下对应的第三上下文状态以及第三编码器组;以及还配置为根据第三上下文状态确定当前顶点的编码器索引;根据编码器索引,从第三编码器组中确定当前顶点对应的目标编码器。
在一些实施例中,参见图15,该编码器150还包括第一调整单元1503;第一确定单元1501,还配置为在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值时,根据当前顶点的已编码顶点信息,确定已编码顶点信息中的第一比特信息对应的第一累计和值以及已编码顶点信息中进行预测的第一比特信息对应的第二累计和值;以及根据第一累计和值以及第二累计和值确定中间结果;第一调整单元1503,配置为根据中间结果,确定是否对上下文状态进行调整。
在一些实施例中,第一调整单元1503,还配置为在中间结果小于或等于预设阈值时,对上下文状态中的部分上下文状态进行调整,以将部分上下文状态合并到第一上下文状态中。
在一些实施例中,第一确定单元1501,还配置为在中间结果小于或等于预设阈值,或者当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量大于第二值时,确定在帧间上下文状态类型下对应的第一上下文状态以及第一编码器组;以及还配置为根据第一上下文状态确定当前顶点的编码器索引;根据编码器索引,从第一编码器组中确定当前顶点对应的目标编码器。
在一些实施例中,第一确定单元1501,还配置为在中间结果大于预设阈值,且当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第四值时,确定在帧间上下文状态类型下对应的第二上下文状态以及第二编码器组;以及还配置为根据第二上下文状态确定当前顶点的编码器索引;根据编码器索引,从第二编码器组中确定当前顶点对应的目标编码器。
在一些实施例中,第一确定单元1501,还配置为在中间结果大于预设阈值,且当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第五值时,确定在帧间上下文状态类型下对应的第三上下文状态以及第三编码器组;以及还配置为根据第三上下文状态确定当前顶点的编码器索引;根据编码器索引,从第三编码器组中确定当前顶点对应的目标编码器。
可以理解地,在本申请实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
在本申请的再一实施例中,图16为本申请实施例提供的一种编码器的具体硬件结构示意图。如图16所示,编码器150可以包括:第一通信接口1601、第一存储器1602和第一处理器1603;各个组件 通过第一总线系统1604耦合在一起。可理解,第一总线系统1604用于实现这些组件之间的连接通信。第一总线系统1604除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图16中将各种总线都标为第一总线系统1604。其中,
第一通信接口1601,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
第一存储器1602,用于存储能够在第一处理器1603上运行的计算机程序;
第一处理器1603,用于在运行所述计算机程序时,执行:
确定当前顶点的预测标识信息;在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组;根据上下文状态,在编码器组中确定当前顶点对应的目标编码器;根据目标编码器对当前顶点的第一比特信息进行编码处理,将所得到的编码比特写入码流。
可以理解,本申请实施例中的第一存储器1602可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请描述的系统和方法的第一存储器1602旨在包括但不限于这些和任意其它适合类型的存储器。
而第一处理器1603可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过第一处理器1603中的硬件的集成逻辑电路或者软件形式的指令完成。上述的第一处理器1603可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于第一存储器1602,第一处理器1603读取第一存储器1602中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本申请描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(Application Specific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable Logic Device,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。对于软件实现,可通过执行本申请所述功能的模块(例如过程、函数等)来实现本申请所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
可选地,作为另一个实施例,第一处理器1603还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法。
本申请实施例提供了一种编码器,针对不同的帧间上下文状态类型均采用独立的上下文状态,而且不同的上下文状态分别对应各自的编码器组,解决了相关技术中不同的上下文状态共用同一个编码器组所造成的概率更新问题,能够选择更合适的编码器组,从而提升了目标编码器选择的准确性;而且由于不同的上下文状态分别对应各自的编码器组,同时还可以将部分帧间上下文状态进行合并,从而解决了在使用帧间预测的情况较少时帧间上下文状态对应的概率收敛缓慢问题,能够提升帧间预测效果;如此提高了点云的几何编码效率,进而提升了编解码性能。
在本申请的再一实施例中,基于前述实施例相同的发明构思,图17为本申请实施例提供的一种解码器的组成结构示意图。如图17所示,该解码器170包括第二确定单元1701和解码单元1702,其中:
第二确定单元1701,配置为确定当前顶点的预测标识信息;以及在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及解码器组;
第二确定单元1701,还配置为根据上下文状态,在解码器组中确定当前顶点对应的目标解码器;
解码单元1702,配置为根据目标解码器解码码流,确定当前顶点的第一比特信息。
在一些实施例中,第二确定单元1701,还配置为根据上下文状态,确定当前顶点的解码器索引;以及根据解码器索引,从解码器组中确定当前顶点对应的目标解码器。
在一些实施例中,第二确定单元1701,还配置为确定当前顶点的未补偿参考顶点信息、当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量、当前顶点的补偿邻居顶点的第一比特信息预测不准的数量以及帧间使能标识信息的取值;并根据未补偿参考顶点信息、未补偿邻居顶点的第一比特信息预测不准的数量、补偿邻居顶点的第一比特信息预测不准的数量和帧间使能标识信息的取值,确定当前顶点的预测标识信息。
在一些实施例中,第二确定单元1701,还配置为在帧间使能标识信息的取值为第一值,且未补偿参考顶点信息的取值大于或等于第二值,且未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第三值或者补偿邻居顶点的第一比特信息预测不准的数量小于或等于第三值时,确定预测标识信息指示当前顶点的第一比特信息使用帧间预测模式。
在一些实施例中,第二确定单元1701,还配置为确定当前顶点的补偿参考顶点的位置信息;以及根据补偿参考顶点的位置信息,确定当前顶点的帧间上下文状态类型。
在一些实施例中,当前顶点的参考信息包括下述至少一项:当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量、当前顶点的未补偿参考顶点信息和当前顶点的已解码顶点信息。
在一些实施例中,第二确定单元1701,还配置为在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量大于第二值时,确定在帧间上下文状态类型下对应的第一上下文状态以及第一解码器组;以及还配置为根据第一上下文状态确定当前顶点的解码器索引;根据解码器索引,从第一解码器组中确定当前顶点对应的目标解码器。
在一些实施例中,第二确定单元1701,还配置为在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第四值时,确定在帧间上下文状态类型下对应的第二上下文状态以及第二解码器组;以及还配置为根据第二上下文状态确定当前顶点的解码器索引;根据解码器索引,从第二解码器组中确定当前顶点对应的目标解码器。
在一些实施例中,第二确定单元1701,还配置为在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第五值时,确定在帧间上下文状态类型下对应的第三上下文状态以及第三解码器组;以及还配置为根据第三上下文状态确定当前顶点的解码器索引;根据解码器索引,从第三解码器组中确定当前顶点对应的目标解码器。
在一些实施例中,参见图17,该解码器170还包括第二调整单元1703;第二确定单元1701,还配置为在当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值时,根据当前顶点的已解码顶点信息,确定已解码顶点信息中的第一比特信息对应的第一累计和值以及已解码顶点信息中进行预测的第一比特信息对应的第二累计和值;以及根据第一累计和值以及第二累计和值确定中间结果;第二调整单元1703,配置为根据中间结果,确定是否对上下文状态进行调整。
在一些实施例中,第二调整单元1703,还配置为在中间结果小于或等于预设阈值时,对上下文状态中的部分上下文状态进行调整,以将部分上下文状态合并到第一上下文状态中。
在一些实施例中,第二确定单元1701,还配置为在中间结果小于或等于预设阈值,或者当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量大于第二值时,确定在帧间上下文状态类型下对应的第一上下文状态以及第一解码器组;以及还配置为根据第一上下文状态确定当前顶点的解码器索引;根据解码器索引,从第一解码器组中确定当前顶点对应的目标解码器。
在一些实施例中,第二确定单元1701,还配置为在中间结果大于预设阈值,且当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第四值时,确定在帧间上下文状态类型下对应的第二上下文状态以及第二解码器组;以及还配置为根据第二上下文状态确定当前顶点的解码器索引;根据解码器索引,从第二解码器组中确定当前顶点对应的目标解码器。
在一些实施例中,第二确定单元1701,还配置为在中间结果大于预设阈值,且当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且当前顶点的未补偿参考顶点信息中的第一比特信息预测为第五值时,确定在帧间上下文状态类型下对应的第三上下文状态以及第三解码器组;以及还配置为根据第三上下文状态确定当前顶点的解码器索引;根据解码器索引,从第三解码器组中确定当前顶点对应的目标解码器。
可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以 采用硬件的形式实现,也可以采用软件功能模块的形式实现。
在本申请的再一实施例中,图18为本申请实施例提供的一种解码器的具体硬件结构示意图。如图18所示,解码器170可以包括:第二通信接口1801、第二存储器1802和第二处理器1803;各个组件通过第二总线系统1804耦合在一起。可理解,第二总线系统1804用于实现这些组件之间的连接通信。第二总线系统1804除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图18中将各种总线都标为第二总线系统1804。其中,
第二通信接口1801,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
第二存储器1802,用于存储能够在第二处理器1803上运行的计算机程序;
第二处理器1803,用于在运行所述计算机程序时,执行:
确定当前顶点的预测标识信息;在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及解码器组;根据上下文状态,在解码器组中确定当前顶点对应的目标解码器;根据目标解码器解码码流,确定当前顶点的第一比特信息。
可选地,作为另一个实施例,第二处理器1803还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法。
可以理解,第二存储器1802与第一存储器1602的硬件功能类似,第二处理器1803与第一处理器1603的硬件功能类似;这里不再详述。
本实施例提供了一种解码器,针对不同的帧间上下文状态类型均采用独立的上下文状态,而且不同的上下文状态分别对应各自的解码器组,解决了相关技术中不同的上下文状态共用同一个解码器组所造成的概率更新问题,能够选择更合适的解码器组,从而提升了目标解码器选择的准确性;而且由于不同的上下文状态分别对应各自的解码器组,同时还可以将部分帧间上下文状态进行合并,从而解决了在使用帧间预测的情况较少时帧间上下文状态对应的概率收敛缓慢问题,能够提升帧间预测效果;如此提高了点云的几何编码效率,进而提升了编解码性能。
在本申请的再一实施例中,图19为本申请实施例提供的一种编解码系统的组成结构示意图。如图18所示,编解码系统190可以包括编码器1901和解码器1902。
在本申请实施例中,编码器1901可以为前述实施例中任一项所述的编码器,解码器1902可以为前述实施例中任一项所述的解码器。
在一些实施例中,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序。该计算机程序被处理器(例如第一处理器或第二处理器)执行时实现如前述实施例中任一项所述的方法。
在一些实施例中,本申请实施例还提供了一种计算机程序产品,包括计算机程序或指令。该计算机程序或指令被处理器(例如第一处理器或第二处理器)执行时实现如前述实施例中任一项所述的方法。
在一些实施例中,本申请实施例还提供了一种计算机程序,该计算机程序被处理器(例如第一处理器或第二处理器)执行时实现如前述实施例中任一项所述的方法。
本领域普通技术人员可以意识到,结合本申请所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者 该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
工业实用性
本申请实施例中,首先确定当前顶点的预测标识信息;然后在根据预测标识信息指示当前顶点的第一比特信息使用帧间预测模式时,确定当前顶点的帧间上下文状态类型,并根据当前顶点的参考信息和帧间上下文状态类型确定当前顶点对应的上下文状态以及编码器组/解码器组;然后再根据上下文状态,从编码器组/解码器组中确定当前顶点对应的目标编解码器;最后根据目标编解码器对当前顶点的第一比特信息进行编码/解码处理。这样,针对不同的帧间上下文状态类型均采用独立的上下文状态,而且不同的上下文状态分别对应各自的编码器组/解码器组,解决了相关技术中不同的上下文状态共用同一个编码器组/解码器组所造成的概率更新问题,能够选择更合适的编码器组/解码器组,从而提升了目标编解码器选择的准确性;而且由于不同的上下文状态分别对应各自的编码器组/解码器组,同时还可以将部分帧间上下文状态进行合并,从而解决了在使用帧间预测的情况较少时帧间上下文状态对应的概率收敛缓慢问题,能够提升预测效果;如此提高了点云的几何编码效率,进而提升了编解码性能。

Claims (37)

  1. 一种解码方法,应用于解码器,所述方法包括:
    确定当前顶点的预测标识信息;
    在根据所述预测标识信息指示所述当前顶点的第一比特信息使用帧间预测模式时,确定所述当前顶点的帧间上下文状态类型,并根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及解码器组;
    根据所述上下文状态,在所述解码器组中确定所述当前顶点对应的目标解码器;
    根据所述目标解码器解码码流,确定所述当前顶点的第一比特信息。
  2. 根据权利要求1所述的方法,其中,所述根据所述上下文状态,在所述解码器组中确定所述当前顶点对应的目标解码器,包括:
    根据所述上下文状态,确定所述当前顶点的解码器索引;
    根据所述解码器索引,从所述解码器组中确定所述当前顶点对应的目标解码器。
  3. 根据权利要求1所述的方法,其中,所述确定当前顶点的预测标识信息,包括:
    确定所述当前顶点的未补偿参考顶点信息、所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量、所述当前顶点的补偿邻居顶点的第一比特信息预测不准的数量以及帧间使能标识信息的取值;
    根据所述未补偿参考顶点信息、所述未补偿邻居顶点的第一比特信息预测不准的数量、所述补偿邻居顶点的第一比特信息预测不准的数量和所述帧间使能标识信息的取值,确定所述当前顶点的预测标识信息。
  4. 根据权利要求3所述的方法,其中,所述方法还包括:
    在所述帧间使能标识信息的取值为第一值,且所述未补偿参考顶点信息的取值大于或等于第二值,且所述未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第三值或者所述补偿邻居顶点的第一比特信息预测不准的数量小于或等于第三值时,确定所述预测标识信息指示所述当前顶点的第一比特信息使用帧间预测模式。
  5. 根据权利要求1所述的方法,其中,所述确定所述当前顶点的帧间上下文状态类型,包括:
    确定所述当前顶点的补偿参考顶点的位置信息;
    根据所述补偿参考顶点的位置信息,确定所述当前顶点的帧间上下文状态类型。
  6. 根据权利要求1至5中任一项所述的方法,其中,所述当前顶点的参考信息包括下述至少一项:所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量、所述当前顶点的未补偿参考顶点信息和所述当前顶点的已解码顶点信息。
  7. 根据权利要求6所述的方法,其中,所述根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及解码器组,包括:
    在所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量大于第二值时,确定在所述帧间上下文状态类型下对应的第一上下文状态以及第一解码器组;
    所述根据所述上下文状态,在所述解码器组中确定所述当前顶点对应的目标解码器,包括:根据所述第一上下文状态确定所述当前顶点的解码器索引;根据所述解码器索引,从所述第一解码器组中确定所述当前顶点对应的目标解码器。
  8. 根据权利要求6所述的方法,其中,所述根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及解码器组,包括:
    在所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且所述当前顶点的未补偿参考顶点信息中的第一比特信息预测为第四值时,确定在所述帧间上下文状态类型下对应的第二上下文状态以及第二解码器组;
    所述根据所述上下文状态,在所述解码器组中确定所述当前顶点对应的目标解码器,包括:根据所述第二上下文状态确定所述当前顶点的解码器索引;根据所述解码器索引,从所述第二解码器组中确定所述当前顶点对应的目标解码器。
  9. 根据权利要求6所述的方法,其中,所述根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及解码器组,包括:
    在所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且所述当前顶点的未补偿参考顶点信息中的第一比特信息预测为第五值时,确定在所述帧间上下文状态类型下对应的第三上下文状态以及第三解码器组;
    所述根据所述上下文状态,在所述解码器组中确定所述当前顶点对应的目标解码器,包括:根据所 述第三上下文状态确定所述当前顶点的解码器索引;根据所述解码器索引,从所述第三解码器组中确定所述当前顶点对应的目标解码器。
  10. 根据权利要求7所述的方法,其中,所述方法还包括:
    在所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值时,根据所述当前顶点的已解码顶点信息,确定所述已解码顶点信息中的第一比特信息对应的第一累计和值以及所述已解码顶点信息中进行预测的第一比特信息对应的第二累计和值;
    根据所述第一累计和值以及所述第二累计和值确定中间结果;
    根据所述中间结果,确定是否对所述上下文状态进行调整。
  11. 根据权利要求10所述的方法,其中,所述根据所述中间结果,确定是否对所述上下文状态进行调整,包括:
    在所述中间结果小于或等于预设阈值时,对所述上下文状态中的部分上下文状态进行调整,以将所述部分上下文状态合并到所述第一上下文状态中。
  12. 根据权利要求11所述的方法,其中,所述根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及解码器组,包括:
    在所述中间结果小于或等于预设阈值,或者所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量大于第二值时,确定在所述帧间上下文状态类型下对应的第一上下文状态以及第一解码器组;
    所述根据所述上下文状态,在所述解码器组中确定所述当前顶点对应的目标解码器,包括:根据所述第一上下文状态确定所述当前顶点的解码器索引;根据所述解码器索引,从所述第一解码器组中确定所述当前顶点对应的目标解码器。
  13. 根据权利要求11所述的方法,其中,所述根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及解码器组,包括:
    在所述中间结果大于预设阈值,且所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且所述当前顶点的未补偿参考顶点信息中的第一比特信息预测为第四值时,确定在所述帧间上下文状态类型下对应的第二上下文状态以及第二解码器组;
    所述根据所述上下文状态,在所述解码器组中确定所述当前顶点对应的目标解码器,包括:根据所述第二上下文状态确定所述当前顶点的解码器索引;根据所述解码器索引,从所述第二解码器组中确定所述当前顶点对应的目标解码器。
  14. 根据权利要求11所述的方法,其中,所述根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及解码器组,包括:
    在所述中间结果大于预设阈值,且所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且所述当前顶点的未补偿参考顶点信息中的第一比特信息预测为第五值时,确定在所述帧间上下文状态类型下对应的第三上下文状态以及第三解码器组;
    所述根据所述上下文状态,在所述解码器组中确定所述当前顶点对应的目标解码器,包括:根据所述第三上下文状态确定所述当前顶点的解码器索引;根据所述解码器索引,从所述第三解码器组中确定所述当前顶点对应的目标解码器。
  15. 一种编码方法,应用于编码器,所述方法包括:
    确定当前顶点的预测标识信息;
    在根据所述预测标识信息指示所述当前顶点的第一比特信息使用帧间预测模式时,确定所述当前顶点的帧间上下文状态类型,并根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及编码器组;
    根据所述上下文状态,在所述编码器组中确定所述当前顶点对应的目标编码器;
    根据所述目标编码器对所述当前顶点的第一比特信息进行编码处理,将所得到的编码比特写入码流。
  16. 根据权利要求15所述的方法,其中,所述根据所述上下文状态,在所述编码器组中确定所述当前顶点对应的目标编码器,包括:
    根据所述上下文状态,确定所述当前顶点的编码器索引;
    根据所述编码器索引,从所述编码器组中确定所述当前顶点对应的目标编码器。
  17. 根据权利要求15所述的方法,其中,所述确定当前顶点的预测标识信息,包括:
    确定所述当前顶点的未补偿参考顶点信息、所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量、所述当前顶点的补偿邻居顶点的第一比特信息预测不准的数量以及帧间使能标识信息的取值;
    根据所述未补偿参考顶点信息、所述未补偿邻居顶点的第一比特信息预测不准的数量、所述补偿邻居顶点的第一比特信息预测不准的数量和所述帧间使能标识信息的取值,确定所述当前顶点的预测标识信息。
  18. 根据权利要求17所述的方法,其中,所述方法还包括:
    在所述帧间使能标识信息的取值为第一值,且所述未补偿参考顶点信息的取值大于或等于第二值,且所述未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第三值或者所述补偿邻居顶点的第一比特信息预测不准的数量小于或等于第三值时,确定所述预测标识信息指示所述当前顶点的第一比特信息使用帧间预测模式。
  19. 根据权利要求17所述的方法,其中,所述方法还包括:
    在所述当前顶点的高层启用帧间预测模式时,确定所述帧间使能标识信息的取值为第一值;
    在所述当前顶点的高层不启用帧间预测模式时,确定所述帧间使能标识信息的取值为第二值。
  20. 根据权利要求17所述的方法,其中,所述方法还包括:
    对所述帧间使能标识信息的取值进行编码处理,将所得到的编码比特写入码流。
  21. 根据权利要求15所述的方法,其中,所述确定所述当前顶点的帧间上下文状态类型,包括:
    确定所述当前顶点的补偿参考顶点的位置信息;
    根据所述补偿参考顶点的位置信息,确定所述当前顶点的帧间上下文状态类型。
  22. 根据权利要求15至21中任一项所述的方法,其中,所述当前顶点的参考信息包括下述至少一项:所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量、所述当前顶点的未补偿参考顶点信息和所述当前顶点的已编码顶点信息。
  23. 根据权利要求22所述的方法,其中,所述根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及编码器组,包括:
    在所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量大于第二值时,确定在所述帧间上下文状态类型下对应的第一上下文状态以及第一编码器组;
    所述根据所述上下文状态,在所述编码器组中确定所述当前顶点对应的目标编码器,包括:根据所述第一上下文状态确定所述当前顶点的编码器索引;根据所述编码器索引,从所述第一编码器组中确定所述当前顶点对应的目标编码器。
  24. 根据权利要求22所述的方法,其中,所述根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及编码器组,包括:
    在所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且所述当前顶点的未补偿参考顶点信息中的第一比特信息预测为第四值时,确定在所述帧间上下文状态类型下对应的第二上下文状态以及第二编码器组;
    所述根据所述上下文状态,在所述编码器组中确定所述当前顶点对应的目标编码器,包括:根据所述第二上下文状态确定所述当前顶点的编码器索引;根据所述编码器索引,从所述第二编码器组中确定所述当前顶点对应的目标编码器。
  25. 根据权利要求22所述的方法,其中,所述根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及编码器组,包括:
    在所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且所述当前顶点的未补偿参考顶点信息中的第一比特信息预测为第五值时,确定在所述帧间上下文状态类型下对应的第三上下文状态以及第三编码器组;
    所述根据所述上下文状态,在所述编码器组中确定所述当前顶点对应的目标编码器,包括:根据所述第三上下文状态确定所述当前顶点的编码器索引;根据所述编码器索引,从所述第三编码器组中确定所述当前顶点对应的目标编码器。
  26. 根据权利要求23所述的方法,其中,所述方法还包括:
    在所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值时,根据所述当前顶点的已编码顶点信息,确定所述已编码顶点信息中的第一比特信息对应的第一累计和值以及所述已编码顶点信息中进行预测的第一比特信息对应的第二累计和值;
    根据所述第一累计和值以及所述第二累计和值确定中间结果;
    根据所述中间结果,确定是否对所述上下文状态进行调整。
  27. 根据权利要求26所述的方法,其中,所述根据所述中间结果,确定是否对所述上下文状态进行调整,包括:
    在所述中间结果小于或等于预设阈值时,对所述上下文状态中的部分上下文状态进行调整,以将所述部分上下文状态合并到所述第一上下文状态中。
  28. 根据权利要求27所述的方法,其中,所述根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及编码器组,包括:
    在所述中间结果小于或等于预设阈值,或者所述当前顶点的未补偿邻居顶点的第一比特信息预测不 准的数量大于第二值时,确定在所述帧间上下文状态类型下对应的第一上下文状态以及第一编码器组;
    所述根据所述上下文状态,在所述编码器组中确定所述当前顶点对应的目标编码器,包括:根据所述第一上下文状态确定所述当前顶点的编码器索引;根据所述编码器索引,从所述第一编码器组中确定所述当前顶点对应的目标编码器。
  29. 根据权利要求27所述的方法,其中,所述根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及编码器组,包括:
    在所述中间结果大于预设阈值,且所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且所述当前顶点的未补偿参考顶点信息中的第一比特信息预测为第四值时,确定在所述帧间上下文状态类型下对应的第二上下文状态以及第二编码器组;
    所述根据所述上下文状态,在所述编码器组中确定所述当前顶点对应的目标编码器,包括:根据所述第二上下文状态确定所述当前顶点的编码器索引;根据所述编码器索引,从所述第二编码器组中确定所述当前顶点对应的目标编码器。
  30. 根据权利要求27所述的方法,其中,所述根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及编码器组,包括:
    在所述中间结果大于预设阈值,且所述当前顶点的未补偿邻居顶点的第一比特信息预测不准的数量小于或等于第二值,且所述当前顶点的未补偿参考顶点信息中的第一比特信息预测为第五值时,确定在所述帧间上下文状态类型下对应的第三上下文状态以及第三编码器组;
    所述根据所述上下文状态,在所述编码器组中确定所述当前顶点对应的目标编码器,包括:根据所述第三上下文状态确定所述当前顶点的编码器索引;根据所述编码器索引,从所述第三编码器组中确定所述当前顶点对应的目标编码器。
  31. 一种码流,其中,所述码流是根据待编码信息进行比特编码生成的;其中,待编码信息至少包括:当前顶点的第一比特信息和帧间使能标识信息的取值。
  32. 一种编码器,所述编码器包括第一确定单元和编码单元,其中:
    所述第一确定单元,配置为确定当前顶点的预测标识信息;以及在根据所述预测标识信息指示所述当前顶点的第一比特信息使用帧间预测模式时,确定所述当前顶点的帧间上下文状态类型,并根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及编码器组;
    所述第一确定单元,还配置为根据所述上下文状态,在所述编码器组中确定所述当前顶点对应的目标编码器;
    所述编码单元,配置为根据所述目标编码器对所述当前顶点的第一比特信息进行编码处理,将所得到的编码比特写入码流。
  33. 一种编码器,所述编码器包括第一存储器和第一处理器,其中:
    所述第一存储器,用于存储能够在所述第一处理器上运行的计算机程序;
    所述第一处理器,用于在运行所述计算机程序时,执行如权利要求15至30中任一项所述的方法。
  34. 一种解码器,所述解码器包括第二确定单元和解码单元,其中:
    所述第二确定单元,配置为确定当前顶点的预测标识信息;以及在根据所述预测标识信息指示所述当前顶点的第一比特信息使用帧间预测模式时,确定所述当前顶点的帧间上下文状态类型,并根据所述当前顶点的参考信息和所述帧间上下文状态类型确定所述当前顶点对应的上下文状态以及解码器组;
    所述第二确定单元,还配置为根据所述上下文状态,在所述解码器组中确定所述当前顶点对应的目标解码器;
    所述解码单元,配置为根据所述目标解码器解码码流,确定所述当前顶点的第一比特信息。
  35. 一种解码器,所述解码器包括第二存储器和第二处理器,其中:
    所述第二存储器,用于存储能够在所述第二处理器上运行的计算机程序;
    所述第二处理器,用于在运行所述计算机程序时,执行如权利要求1至14中任一项所述的方法。
  36. 一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至14中任一项所述的方法、或者实现如权利要求15至30中任一项所述的方法。
  37. 一种计算机程序产品,包括计算机程序或指令,其中,所述计算机程序或指令被处理器执行时实现如权利要求1至14中任一项所述的方法、或者实现如权利要求15至30中任一项所述的方法。
PCT/CN2024/088399 2024-04-17 2024-04-17 编解码方法、码流、编码器、解码器以及存储介质 Pending WO2025217844A1 (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2024/088399 WO2025217844A1 (zh) 2024-04-17 2024-04-17 编解码方法、码流、编码器、解码器以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2024/088399 WO2025217844A1 (zh) 2024-04-17 2024-04-17 编解码方法、码流、编码器、解码器以及存储介质

Publications (1)

Publication Number Publication Date
WO2025217844A1 true WO2025217844A1 (zh) 2025-10-23

Family

ID=97402786

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2024/088399 Pending WO2025217844A1 (zh) 2024-04-17 2024-04-17 编解码方法、码流、编码器、解码器以及存储介质

Country Status (1)

Country Link
WO (1) WO2025217844A1 (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116711313A (zh) * 2020-12-29 2023-09-05 高通股份有限公司 用于几何体点云压缩的帧间预测编解码
US20240015324A1 (en) * 2022-07-08 2024-01-11 Tencent America LLC Vertex position coding in mesh compression
CN117678219A (zh) * 2022-05-25 2024-03-08 腾讯美国有限责任公司 基于时间预测的顶点位置压缩

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116711313A (zh) * 2020-12-29 2023-09-05 高通股份有限公司 用于几何体点云压缩的帧间预测编解码
CN117678219A (zh) * 2022-05-25 2024-03-08 腾讯美国有限责任公司 基于时间预测的顶点位置压缩
US20240015324A1 (en) * 2022-07-08 2024-01-11 Tencent America LLC Vertex position coding in mesh compression

Similar Documents

Publication Publication Date Title
CN116530021A (zh) 点云编解码方法、编码器、解码器以及计算机存储介质
WO2022109885A1 (zh) 点云编解码方法、编码器、解码器以及计算机存储介质
WO2022141461A1 (zh) 点云编解码方法、编码器、解码器以及计算机存储介质
US20260046451A1 (en) Point cloud encoding and decoding methods and decoder
WO2024221458A9 (zh) 点云编解码方法、装置、设备及存储介质
WO2025217844A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
CN120731591A (zh) 用于点云编解码的方法、装置和介质
WO2024145904A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2024145910A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2022170511A1 (zh) 点云解码方法、解码器及计算机存储介质
CN116830579A (zh) 几何重构方法、解码器以及计算机存储介质
US20260113485A1 (en) Encoding method, decoding method, code stream, encoder, decoder, and storage medium
WO2025217849A1 (zh) 编解码方法、点云编码器、点云解码器以及存储介质
US20260046450A1 (en) Encoding and decoding method, code stream, encoder, decoder and storage medium
WO2025223041A1 (en) Method, apparatus, and medium for point cloud coding
US20260113436A1 (en) Coding method, decoding method, bit stream, coder, decoder, and storage medium
US20260046395A1 (en) Encoding and decoding methods, encoder, decoder, bitstream, and storage medium
WO2025011598A1 (en) Method, apparatus, and medium for point cloud coding
WO2025218753A1 (en) Method, apparatus, and medium for point cloud coding
WO2025208368A9 (zh) 编解码方法、点云编码器、点云解码器以及存储介质
WO2025217772A1 (zh) 编解码方法、点云编码器、点云解码器以及存储介质
WO2026007039A1 (zh) 编解码方法、码流、点云编码器、点云解码器以及存储介质
WO2024212038A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2025138030A1 (zh) 编解码方法、点云编码器、点云解码器以及存储介质
WO2024212042A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 24935396

Country of ref document: EP

Kind code of ref document: A1