WO2023246686A1 - 无损编码方法、无损解码方法、装置及设备 - Google Patents
无损编码方法、无损解码方法、装置及设备 Download PDFInfo
- Publication number
- WO2023246686A1 WO2023246686A1 PCT/CN2023/101020 CN2023101020W WO2023246686A1 WO 2023246686 A1 WO2023246686 A1 WO 2023246686A1 CN 2023101020 W CN2023101020 W CN 2023101020W WO 2023246686 A1 WO2023246686 A1 WO 2023246686A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- vertex
- grid
- code stream
- sub
- information
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 122
- 238000013507 mapping Methods 0.000 claims description 13
- 238000000354 decomposition reaction Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000007774 longterm Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241001166737 Menticirrhus nasus Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
- G06T17/205—Re-meshing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
Definitions
- This application belongs to the field of coding and decoding technology, and specifically relates to a lossless encoding method, lossless decoding method, device and equipment.
- Three-dimensional mesh can be considered the most popular representation method of three-dimensional models in the past many years, and it plays an important role in many applications. Its expression is simple, so it is widely integrated into the graphics processing units of computers, tablets and smartphones with hardware algorithms, specifically used to render three-dimensional meshes.
- the encoding end needs to split the non-manifold grid into a manifold grid, and then convection
- the decoder will not merge the split manifold grids, which makes the number of grids output by the decoder exceed the number of grids input by the encoder, making it impossible to detect the existence of non-manifold structures. Lossless encoding of three-dimensional meshes.
- Embodiments of the present application provide a lossless encoding method, lossless decoding method, device and equipment, which can solve the problem that existing solutions cannot realize lossless encoding of three-dimensional grids with non-manifold structures.
- the first aspect provides a lossless coding method, including:
- the encoding end splits the first grid into a second grid;
- the first grid is a three-dimensional network including a non-manifold structure, and the second grid is a three-dimensional grid including a manifold structure;
- the encoding end encodes the grid information corresponding to the second grid and the vertex information of the first vertex respectively, and obtains the first code stream corresponding to the grid information and the second code stream corresponding to the vertex information of the first vertex.
- Code stream, the first vertex is a new vertex of the second grid relative to the first grid;
- the encoding end generates a target code stream based on the first code stream and the second code stream.
- the second aspect provides a lossless decoding method, including:
- the decoding end decomposes the target code stream to obtain the third code stream and the fourth code stream;
- the decoding end decodes the third code stream and the fourth code stream respectively, and obtains the grid information corresponding to the third code stream and the vertex information of the second vertex corresponding to the fourth code stream;
- the decoder reconstructs the second grid based on the grid information
- the decoding end merges the second vertices in the second grid according to the vertex information of the second vertex to obtain the first grid;
- the first grid is a three-dimensional grid including a non-manifold structure
- the second grid is a three-dimensional grid including a manifold structure
- the second vertex is based on splitting the first grid. is obtained for the second grid.
- a lossless encoding device including:
- a splitting module used to split the first grid into a second grid;
- the first grid is a three-dimensional network including a non-manifold structure
- the second grid is a three-dimensional grid including a manifold structure.
- An encoding module configured to respectively encode the grid information corresponding to the second grid and the vertex information of the first vertex, and obtain the first code stream corresponding to the grid information and the third code stream corresponding to the vertex information of the first vertex.
- Two code streams, the first vertex is a new vertex of the second grid relative to the first grid;
- a generating module configured to generate a target code stream according to the first code stream and the second code stream.
- a lossless decoding device including:
- the decomposition module is used to decompose the target code stream to obtain the third code stream and the fourth code stream;
- a decoding module configured to decode the third code stream and the fourth code stream respectively, and obtain the grid information corresponding to the third code stream and the vertex information of the second vertex corresponding to the fourth code stream;
- a reconstruction module configured to reconstruct the second grid according to the grid information
- a merging module configured to merge the second vertices in the second grid according to the vertex information of the second vertex to obtain the first grid
- the first grid is a three-dimensional grid including a non-manifold structure
- the second grid is a three-dimensional grid including a manifold structure
- the second vertex is based on splitting the first grid. is obtained for the second grid.
- a terminal in a fifth aspect, includes a processor and a memory.
- the memory stores programs or instructions that can be run on the processor.
- the program or instructions are executed by the processor, the following implementations are implemented: The steps of the method described in one aspect, or the steps of implementing the method described in the second aspect.
- a readable storage medium is provided. Programs or instructions are stored on the readable storage medium. When the programs or instructions are executed by a processor, the steps of the method described in the first aspect are implemented, or the steps of the method are implemented as described in the first aspect. mentioned in the second aspect Method steps.
- a chip in a seventh aspect, includes a processor and a communication interface.
- the communication interface is coupled to the processor.
- the processor is used to run programs or instructions to implement the method described in the first aspect. , or implement the method described in the second aspect.
- a computer program/program product is provided, the computer program/program product is stored in a storage medium, and the computer program/program product is executed by at least one processor to implement the method described in the first aspect The steps of a method, or steps of implementing a method as described in the second aspect.
- a system in a ninth aspect, includes an encoding end and a decoding end.
- the encoding end performs the steps of the method described in the first aspect.
- the decoding end performs the steps of the method described in the second aspect. step.
- the decoder receives a target code stream obtained by encoding a three-dimensional grid including a non-manifold structure; decodes the third code stream and the fourth code stream in the target code stream to obtain grid information and Vertex information of the second vertex, where the second vertex is obtained based on splitting the first mesh into a second mesh.
- the first mesh is a three-dimensional mesh including a non-manifold structure
- the second mesh is a three-dimensional mesh including a manifold.
- the three-dimensional grid of the structure based on the grid information, the second grid is reconstructed. Further, according to the vertex information of the second vertex, the second vertex in the second grid is merged to obtain the first grid.
- the manifold grid generated by splitting is processed.
- the second vertices are merged so that the number of grids output by the decoder is the same as the number of grids input by the encoder, thereby achieving lossless encoding of three-dimensional grids with non-manifold structures.
- Figure 1 is a schematic flow chart of a lossless encoding method in an embodiment of the present application
- Figure 2 is a schematic diagram of the manifold grid in the embodiment of the present application.
- Figure 3 is a schematic diagram of CornerTable in the embodiment of the present application.
- Figure 4 is a schematic diagram of the five operating modes defined in EB in the embodiment of the present application.
- Figure 5 is a schematic diagram of the prediction of the geometric coordinate parallelogram in the embodiment of the present application.
- Figure 6 is a schematic diagram of prediction of similar triangles with texture coordinates in the embodiment of the present application.
- Figure 7 is a schematic flow chart of the lossless decoding method in the embodiment of the present application.
- Figure 8 is a structural diagram of a lossless encoding device provided by an embodiment of the present application.
- Figure 9 is a structural diagram of a lossless decoding device provided by an embodiment of the present application.
- Figure 10 is a structural diagram of a communication device provided by an embodiment of the present application.
- Figure 11 is a schematic diagram of the hardware structure of a terminal provided by an embodiment of the present application.
- first, second, etc. in the description and claims of this application are used to distinguish similar objects and are not used to describe a specific order or sequence. It is to be understood that the terms so used are interchangeable under appropriate circumstances so that the embodiments of the present application can be practiced in sequences other than those illustrated or described herein, and that "first" and “second” are distinguished objects It is usually one type, and the number of objects is not limited.
- the first object can be one or multiple.
- “and/or” in the description and claims indicates at least one of the connected objects, and the character “/" generally indicates that the related objects are in an "or” relationship.
- LTE Long Term Evolution
- LTE-Advanced, LTE-A Long Term Evolution
- CDMA Code Division Multiple Access
- TDMA Time Division Multiple Access
- FDMA Frequency Division Multiple Access
- OFDMA Orthogonal Frequency Division Multiple Access
- SC-FDMA Single-carrier Frequency Division Multiple Access
- system and “network” in the embodiments of this application are often used interchangeably, and the described technology can be used not only for the above-mentioned systems and radio technologies, but also for other systems and radio technologies.
- NR New Radio
- the following description describes a New Radio (NR) system for example purposes, and uses NR terminology in much of the following description, but these techniques can also be applied to applications other than NR system applications, such as 6th Generation , 6G) communication system.
- NR New Radio
- FIG. 1 is a flow chart of a lossless encoding method in an embodiment of the present application.
- the lossless coding method provided in this embodiment includes the following steps:
- the above-mentioned first grid is a three-dimensional network including a non-manifold structure
- the second grid is a three-dimensional grid including a manifold structure.
- the process of splitting the first grid into the second grid can be divided into two parts, splitting non-manifold edges and splitting non-manifold points.
- the first step in splitting non-manifold edges is to find the non-manifold edges.
- An optional implementation method is to establish a data structure, such as a mapping table or a hash table, and use the data structure to store the first grid.
- the non-manifold edges are determined by querying the number of triangles where each edge is located.
- Another optional implementation method is to establish the corresponding relationship between each side and the diagonal corner by constructing a CornerTable. system, the edges corresponding to at least three diagonals are determined as non-manifold edges.
- the second step in splitting non-manifold edges is to add new vertices and modify the corresponding connection relationships of the first mesh.
- the first step in splitting non-manifold points is to find the non-manifold points.
- the second step in splitting non-manifold points is to split the non-manifold points.
- S102 respectively encode the grid information corresponding to the second grid and the vertex information of the first vertex, and obtain the first code stream corresponding to the grid information and the second code stream corresponding to the vertex information of the first vertex.
- the grid information corresponding to the second grid is encoded to obtain the first code stream, where the grid information includes but is not limited to connection relationships, geometric information, and attribute information. Encode the vertex information of the first vertex to obtain the second code stream.
- the above-mentioned first vertex is a newly added vertex of the second grid relative to the first grid, where the first vertex includes a newly added vertex after dividing the geometric coordinates of each vertex of the first grid, and a new vertex of the first grid.
- the texture coordinates of each vertex are divided into new vertices.
- the first code stream and the second code stream are mixed to generate a target code stream.
- the first grid is split into a second grid, where the first grid includes a three-dimensional network with a non-manifold structure, and the second grid is a three-dimensional grid that includes a manifold structure; the encoding The grid information corresponding to the two grids and the vertex information of the first vertex are used to obtain the first code stream and the second code stream respectively, where the first vertex is a new vertex of the second grid relative to the first grid; according to The first code stream and the second code stream generate the target code stream.
- encode the vertex information of the first vertex to obtain a second code corresponding to the vertex information of the first vertex.
- Streams include:
- the target identifier is used to indicate that the first grid includes a non-manifold structure.
- a target identifier is generated.
- an identifier that is associated with whether the first mesh includes a non-manifold structure.
- the identifier is set. If set to 1, the above identifier can be understood as the target identifier. In the case where the first mesh only contains manifold structures, that is, the number of first vertices is equal to 0, set this flag to 0.
- the vertex information of the first vertex includes the corresponding index of the first vertex in the first grid.
- a preset threshold is set. When the number of first vertices is less than or equal to the preset threshold, which means that the number of first vertices is small, entropy coding can be performed on the index corresponding to the first vertex, Obtain the first sub-code stream, thereby reducing the code rate of the first sub-code stream. Further, the above target identifier and the first sub-code stream are combined to generate a second code stream.
- encoding the vertex information of the first vertex and obtaining the second code stream corresponding to the vertex information of the first vertex includes:
- the target identifier is used to indicate that the first grid includes a non-manifold structure.
- a target identifier is generated.
- the vertex information of the first vertex may also be a flag bit corresponding to each vertex, and the flag bit is used to indicate whether the corresponding vertex is the first vertex. For example, if a vertex is the first vertex newly added due to splitting the first grid, the flag corresponding to the vertex is 1; if a vertex is not the first new vertex added due to splitting the first grid. vertex, the flag corresponding to the vertex is 0.
- a preset threshold is set. When the number of first vertices is greater than the preset threshold, it means that the number of first vertices is greater, and the flag bit corresponding to each vertex is processed. Entropy coding is performed to obtain the second sub-stream. Further, the above target identifier and the second sub-code stream are combined to generate a second code stream.
- the second code stream can be stored in the target code stream in various ways.
- An optional implementation manner is to use the second code stream as a separate sub-code stream.
- Another optional implementation method is to store the code stream corresponding to the newly added attribute vertex into the sub-code stream corresponding to the attribute information, and store the code stream corresponding to the newly added geometric vertex into the sub-code stream corresponding to the geometry information. in the code stream.
- Another optional implementation is to use the code stream corresponding to the newly added attribute vertex and the code stream corresponding to the newly added geometric vertex as two separate sub-code streams.
- encoding the grid information corresponding to the second grid and obtaining the first code stream corresponding to the grid information includes:
- the attribute information corresponding to the second grid is encoded to generate the fifth sub-stream.
- the grid information includes connection relationships, geometric information and attribute information.
- the first code stream in this embodiment includes the third sub-code stream corresponding to the connection relationship, the fourth sub-code stream corresponding to the geometric information and the corresponding attribute information.
- the fifth sub-stream includes the third sub-code stream corresponding to the connection relationship, the fourth sub-code stream corresponding to the geometric information and the corresponding attribute information.
- connection relationship corresponding to the second grid is encoded to generate the third sub-code stream; the geometric information corresponding to the second grid is geometrically coded to generate the fourth sub-code stream; the corresponding The attribute information is attribute encoded to generate the fifth sub-code stream.
- encoding the connection relationship corresponding to the second grid and generating the third sub-code stream includes:
- Entropy encoding is performed on the target character string to generate the third sub-code stream.
- a compression coding technology may be used to encode the connection relationship of the second grid, wherein the compression coding technology may be a compression algorithm (Edgebreaker, EB).
- the compression coding technology may be a compression algorithm (Edgebreaker, EB).
- the specific implementation method is: number each corner of each triangle patch in the second grid in counterclockwise order to obtain the index of each corner. If the second mesh includes f triangle patches, then the second mesh includes 3f corners.
- formula 1 can be used to calculate the sequence number of the triangle where the current angle is located.
- c is the index of the current corner
- fi is the sequence number of the triangle where the current corner is located.
- the index of the previous angle of the current angle can be calculated through Formula 2.
- c is the index of the current angle
- fi is the serial number of the triangle where the current angle is located
- c p is the index of the previous angle of the current angle
- the % symbol represents the modulo operation
- the index of the next corner of the current corner can be calculated through Formula 3.
- c is the index of the current angle
- fi is the serial number of the triangle where the current angle is located
- c p is the index of the next angle after the current angle
- the % symbol represents the modulo operation
- the CornerTable includes a V table, an O table, a U table, and an M table.
- the V table stores the index of the vertex corresponding to each corner
- the O table stores the index of the diagonal corner corresponding to each corner
- the U table stores the identification of whether each triangle has been traversed
- the M table stores each vertex. Identification of whether it has been traversed.
- c in Figure 3 represents the current corner
- cp represents the previous corner of current corner c
- cn represents the next corner of current corner c.
- co is the opposite angle of the current angle c, which can be obtained by querying the O table.
- ct is the serial number of the triangle where c is located, which can be calculated by union one.
- cv represents the vertex of the current angle, which can be obtained by querying the V table.
- cl represents the angle to the left of the current angle c, which is obtained by querying the opposite angle of cp in the O table.
- cr means The angle to the right of the current angle c is obtained by querying the opposite angle of cn in the O table.
- the currently traversed angle is x. If the vertex v corresponding to x has not been traversed, determine that the current triangle is in C mode, and determine that the next triangle to be traversed is the triangle where r is located. If the vertex v corresponding to x has not been traversed, and the triangle where l is located has been traversed, determine that the current triangle is in L mode, and determine that the next triangle to be traversed is the triangle where r is located. If the vertex v corresponding to x has not been traversed, and the triangle where r is located has been traversed, determine that the current triangle is in R mode, and determine that the next triangle to be traversed is the triangle where l is located.
- the vertex v corresponding to The triangle where l is located is stored in the stack, and after the triangle where r is located is traversed, the triangle where l is located is traversed again. If the vertex v corresponding to x has been traversed, and the triangle where l is located and the triangle where r is located have both been traversed, it is determined that the mode of the current triangle is E, and the end point of the current traversal path branch is reached at this time.
- encoding the geometric information corresponding to the second grid and generating the fourth sub-code stream includes:
- Entropy coding is performed on the geometric prediction residual corresponding to each vertex to generate the fourth sub-code stream.
- a parallelogram predictive coding algorithm is used to perform geometric coding on the second grid. It should be understood that in other implementations, a difference predictive coding algorithm, a multi-parallelogram predictive coding algorithm, etc. may also be used to perform geometric coding. There are no specific limitations here.
- the second grid includes four vertices a, b, c, and d. These four vertices form two triangles as shown in Figure 5.
- d′(x,y,z) is the predicted geometric coordinate corresponding to point d
- a(x,y,z) is the real geometric coordinate corresponding to point a
- b(x,y,z) is the corresponding geometric coordinate of point b.
- Real geometric coordinates, c(x,y,z) are the real geometric coordinates corresponding to point c.
- ⁇ d(x,y,z) is the geometric prediction residual corresponding to point d
- d′(x,y,z) is the predicted geometric coordinate corresponding to point d
- d(x,y,z) is the predicted geometric coordinate of point d.
- encoding the attribute information corresponding to the second grid and generating the fifth sub-code stream includes:
- Entropy encoding is performed on the attribute prediction residual corresponding to each vertex in the second grid to generate the first target sub-code stream; the attribute prediction residual corresponding to each vertex is based on the Carry out attribute prediction coding determination;
- the texture map of the second grid is encoded to generate the second target sub-stream.
- the attribute information includes texture coordinates and texture maps
- the fifth sub-stream includes a first target sub-stream corresponding to the texture coordinates and a second target sub-stream corresponding to the texture map.
- determining the attribute prediction residual corresponding to each vertex based on performing attribute prediction coding on each vertex in the second grid, determining the attribute prediction residual corresponding to each vertex, performing entropy coding on the attribute prediction residual corresponding to each vertex, and generating the first target sub- code stream.
- For specific implementation methods on how to generate the first target sub-stream please refer to subsequent embodiments.
- the texture map of the second grid is encoded to generate the second target sub-stream.
- the first target sub-stream and the second target sub-stream are mixed to obtain the fifth sub-stream.
- the attribute information does not include texture maps.
- the fifth sub-stream can be generated by entropy coding only the attribute prediction residual corresponding to each vertex.
- encoding the attribute information corresponding to the second grid and generating the first target sub-code stream includes:
- attribute prediction coding is used to obtain the predicted texture coordinates corresponding to each vertex
- Entropy coding is performed on the attribute prediction residual corresponding to each vertex to generate the first target sub-code stream.
- the initial edge set is obtained as follows:
- an initial triangle is selected, the texture coordinates of the three vertices of the initial triangle are encoded, and the three edges of the initial triangle are stored in the edge set.
- the vertices are not predicted, but the texture coordinates are directly encoded. After encoding the texture coordinates of each vertex of the initial triangle, each edge of the initial triangle is stored. Set to form an initial set of edges, and then predict subsequent vertices based on this initial set of edges.
- the predicted texture coordinates can be And the real texture coordinates are used to obtain the residuals of the vertices to be encoded, and the coding of the vertices to be encoded is achieved by encoding the residuals, thereby reducing the number of bits for texture coordinate encoding.
- the residual can be the difference between the real texture coordinates of the vertex to be encoded and the predicted texture coordinates of the vertex of the target triangle. It can be the real texture coordinates of the vertex to be encoded minus the predicted texture of the vertex of the target triangle.
- the coordinates can also be obtained by subtracting the predicted texture coordinates of the vertices of the target triangle from the real texture coordinates of the vertices to be encoded.
- the implementation method of obtaining the predicted texture coordinates of the vertices of the target triangle corresponding to the first side may be:
- the encoding end obtains the texture coordinates of the projection point of the vertex on the first side based on the geometric coordinates of each vertex of the target triangle;
- edge NP is an edge selected from the edge set, which can be regarded as the first edge mentioned above.
- Vertex N and vertex P are respectively the two vertices of the first edge.
- C is the vertex to be encoded.
- Vertex N, vertex P and vertex C form the above target triangle.
- Point X is the projection of vertex C on the NP edge.
- Vertex O is the encoded point, and vertex O, vertex N and vertex The triangle formed by P shares NP sides with the triangle formed by vertex N, vertex P and vertex C.
- the specific method of obtaining the texture coordinates of the projection point of the vertex on the first side mentioned in the embodiment of this application is:
- X uv is the texture coordinate of the projection point of the pair of vertices on the first side
- N uv is the texture coordinate of the vertex N on the first side of the target triangle
- in is the vector of the geometric coordinates of vertex N and vertex P on the first edge
- the encoding end obtains the predicted texture coordinates of the vertex based on the texture coordinates of the projection point;
- Pred C is the predicted texture coordinate of the vertex, is the first vector value for the vector of the texture coordinates of the vertex and the first side corresponding to the first vertex O, O uv is the texture coordinate of the first vertex corresponding to the first side of the target triangle, and the first vertex O is the first The opposite vertex of the first side of the triangle, the first triangle and the target triangle have a common first side; is the vector from the projection point X of the vertex on the first edge to the texture coordinates of the vertex; It is the second type of vector value for the vector of the texture coordinates of the vertex and the first edge corresponding to the first vertex O.
- the predicted texture coordinates of the point to be encoded are obtained, and based on the predicted texture coordinates, the encoding point to be encoded can be implemented; optionally, the encoding point to be encoded is based on an edge in the edge set
- the encoding end stores the second edge in the target triangle into the edge set and deletes the first edge from the edge set.
- the second edge is the unused edge in the target triangle.
- the edges contained in the set of edges are implemented by Updates to edge collections.
- the residuals of the vertices to be encoded can be obtained while encoding, or all the residuals can be obtained first, and then the residuals can be encoded uniformly.
- UV coordinates texture coordinates
- Step S1 Select an initial triangle from the reconstructed connection relationship, directly encode the UV coordinates of the three vertices of the initial triangle without prediction, and then store the edges of the initial triangle into the edge set.
- Step S2 Select edge ⁇ from the edge set according to the access criteria, encode the UV coordinates of the vertices of the new triangle formed by ⁇ , and use the projection relationship of the triangle from three dimensions to two dimensions to calculate the predicted UV coordinates of the point to be encoded according to the above method. , subtract the predicted UV coordinate from the original value of the UV coordinate of the point to be encoded (that is, the real UV coordinate) to obtain the residual.
- Step S3 Add the two edges of the new triangle to the edge set, remove the edge ⁇ at the top of the edge set; then take the next edge from the edge set, continue to encode the predicted UV coordinates of the vertices of the triangle adjacent to the edge, and obtain the residual difference, return to step S3, and execute step S3 in a loop until the residuals of all vertices are obtained.
- Step S4 Entropy encode the UV coordinate residual and output the UV coordinate code stream.
- FIG. 7 is a flow chart of a lossless decoding method in an embodiment of the present application.
- the lossless decoding method provided in this embodiment includes the following steps:
- S701 Decompose the target code stream to obtain the third code stream and the fourth code stream.
- the decoder decomposes the target code stream to obtain the third code stream and the fourth code stream.
- S702 Decode the third code stream and the fourth code stream respectively, and obtain the grid information corresponding to the third code stream and the vertex information of the second vertex corresponding to the fourth code stream.
- the third code stream is decoded to obtain mesh information; the fourth code stream is decoded to obtain vertex information of the second vertex.
- the above-mentioned second vertex is obtained based on splitting the first grid into a second grid.
- the above-mentioned second vertex is a new vertex of the second grid relative to the first grid, wherein the second vertex includes a new vertex of the first grid. Vertices are added after dividing the geometric coordinates of each vertex, and new vertices are added after dividing the texture coordinates of each vertex of the first grid.
- S703 Reconstruct the second grid according to the grid information.
- grid information includes connection relationships, geometric information and attribute information.
- the second grid can be directly reconstructed using the connection relationship, geometric information and attribute information of the second grid.
- S704 Merge the second vertices in the second grid according to the vertex information of the second vertex to obtain a first grid.
- the decoder receives a target code stream obtained by encoding a three-dimensional grid including a non-manifold structure; decodes the third code stream and the fourth code stream in the target code stream to obtain grid information and Vertex information of the second vertex, where the second vertex is obtained based on splitting the first mesh into a second mesh.
- the first mesh is a three-dimensional mesh including a non-manifold structure
- the second mesh is a three-dimensional mesh including a manifold.
- the three-dimensional grid of the structure; based on the grid information, the second grid is reconstructed.
- the second vertices in the second grid are merged to obtain the first grid, and then the third grid is obtained.
- the second vertices generated by splitting the manifold grid are merged, so that the number of grids output by the decoder is the same as the number of grids input by the encoder, thus realizing the detection of non-manifolds. Lossless encoding of structured three-dimensional meshes.
- decoding the fourth code stream and obtaining the vertex information of the second vertex corresponding to the fourth code stream includes:
- the sixth sub-code stream is decoded to obtain the vertex information of the second vertex.
- the fourth code stream includes a target identifier.
- the target identifier is used to represent the first grid as a three-dimensional grid including a non-manifold structure
- the sixth sub-code stream is decoded to obtain the vertex information of the second vertex.
- the fourth code stream includes a flag. If the flag is 1, it indicates that the first grid is a three-dimensional grid including a non-manifold structure. In this case, the sixth sub-code stream is decoded. If the flag is 0, it indicates that the first grid is a three-dimensional grid including only a manifold structure, and the sixth sub-code stream does not need to be decoded.
- merging the second vertices in the second grid according to the vertex information of the second vertex to obtain the first grid includes:
- connection relationship corresponding to the second grid is updated to obtain the first grid.
- the vertex information of the second vertex is parsed to determine the second vertex, where the second vertex can be understood as a new vertex obtained by splitting the first grid into a second grid. It should be understood that the vertices in the second grid other than the second vertex may be referred to as non-new vertices.
- mapping table can be obtained based on the decoding result.
- the mapping table stores the mapping relationship between the geometric coordinates corresponding to each vertex and the index corresponding to each vertex.
- the mapping table can be a hash table.
- the current vertex is a newly added second vertex
- query the geometric coordinates of the second vertex in the mapping table to obtain the target vertex, where the geometric coordinates corresponding to the target vertex are the same as the geometric coordinates corresponding to the second vertex; and the The index corresponding to the second vertex is updated to the index corresponding to the target vertex. If it is found through querying the mapping table that there are multiple vertices with the same geometric coordinates as the second vertex, then one vertex may be randomly determined as the target vertex from the plurality of vertices. In this embodiment, the second vertex is merged by updating the index of the second vertex.
- the index corresponding to the current vertex will not be updated.
- the corresponding connection relationship of the second grid is updated, the geometric information list and the texture coordinate list are updated, and the first grid is obtained.
- decoding the third code stream and obtaining grid information corresponding to the third code stream includes:
- grid information includes connection relationships, geometric information and attribute information.
- the third code stream includes a seventh sub-code stream corresponding to the connection relationship, an eighth sub-code stream corresponding to the geometric information, and a ninth sub-code stream corresponding to the attribute information.
- decoding the seventh sub-stream to obtain the connection relationship corresponding to the second grid includes:
- the decoding end uses a decoding method corresponding to the way the encoding end encodes the connection relationship to decode the seventh sub-code stream to obtain the target string, which will not be repeated here.
- decoding the eighth sub-stream to obtain geometric information corresponding to the second grid includes:
- the real geometric coordinates corresponding to each vertex are obtained.
- the decoding end decodes the eighth sub-code stream using a decoding method corresponding to the way the encoding end encodes the geometric information, and obtains the geometric information corresponding to the second grid, which will not be repeated here.
- decoding the ninth sub-stream to obtain attribute information corresponding to the second grid includes:
- the real texture coordinates corresponding to each vertex are obtained; the attribute prediction residual corresponding to each vertex is based on decoding the third target sub-code flow determined;
- the attribute information includes texture coordinates and texture maps
- the ninth sub-stream includes a third target sub-stream corresponding to the texture coordinates and a fourth target sub-stream corresponding to the texture map.
- the third target sub-stream is decoded to determine the attribute prediction residual corresponding to each vertex, and then based on the attribute prediction residual corresponding to each vertex, the real texture coordinates corresponding to each vertex are obtained.
- the ninth sub-stream does not include the fourth target sub-stream, that is, the attribute information does not include the texture map.
- the attribute information does not include the texture map.
- only the third target sub-stream is decoded to obtain the attribute information corresponding to the second grid.
- obtaining the real texture coordinates corresponding to each vertex based on the attribute prediction residuals corresponding to each vertex in the second grid includes:
- the real texture coordinates corresponding to each vertex are obtained.
- the decoder uses a decoding method corresponding to the encoding method of the encoding end to decode the third target sub-stream to obtain the real texture coordinates corresponding to each vertex, which will not be repeated here.
- the execution subject may be a lossless encoding device.
- the lossless encoding device provided by the embodiment of the present application is explained by taking the encoding method performed by the lossless encoding device as an example.
- this embodiment of the present application also provides a lossless encoding device 800, which includes:
- Splitting module 801 used to split the first grid into a second grid
- Encoding module 802 configured to respectively encode the grid information corresponding to the second grid and the vertex information of the first vertex, and obtain the first code stream corresponding to the grid information and the vertex information corresponding to the first vertex. Second code stream;
- Generating module 803 configured to generate a target code stream according to the first code stream and the second code stream.
- the encoding module 802 is specifically used for:
- the encoding module 802 is also specifically used for:
- the encoding module 802 is also specifically used for:
- the attribute information corresponding to the second grid is encoded to generate the fifth sub-stream.
- the encoding module 802 is also specifically used for:
- Entropy encoding is performed on the target character string to generate the third sub-code stream.
- the encoding module 802 is also specifically used for:
- Entropy coding is performed on the geometric prediction residual corresponding to each vertex to generate the fourth sub-code stream.
- the encoding module 802 is also specifically used for:
- the texture map of the second grid is encoded to generate the second target sub-stream.
- the encoding module 802 is also specifically used for:
- attribute prediction coding is used to obtain the predicted texture coordinates corresponding to each vertex
- Entropy coding is performed on the attribute prediction residual corresponding to each vertex to generate the first target sub-code stream.
- the first grid is split into a second grid, where the first grid includes a three-dimensional network with a non-manifold structure, and the second grid is a three-dimensional grid that includes a manifold structure; the encoding The grid information corresponding to the two grids and the vertex information of the first vertex are used to obtain the first code stream and the second code stream respectively, where the first vertex is a new vertex of the second grid relative to the first grid; according to The first code stream and the second code stream generate the target code stream.
- This device embodiment corresponds to the above-mentioned lossless encoding method embodiment shown in Figure 1.
- Each implementation process and implementation method on the coding end in the above-mentioned method embodiment can be applied to this device embodiment, and can achieve the same technical effect.
- the execution subject may be a lossless decoding device.
- a lossless decoding device performing a lossless decoding method is used as an example to illustrate the lossless decoding device provided by the embodiment of the present application.
- this embodiment of the present application also provides a lossless decoding device 900, which includes:
- Decomposition module 901 is used to decompose the target code stream to obtain the third code stream and the fourth code stream;
- Decoding module 902 configured to decode the third code stream and the fourth code stream respectively, and obtain the grid information corresponding to the third code stream and the vertex information of the second vertex corresponding to the fourth code stream;
- Reconstruction module 903 configured to reconstruct the second grid according to the grid information
- the merging module 904 is configured to merge the second vertices in the second grid according to the vertex information of the second vertex to obtain the first grid.
- the decoding module 902 is specifically used to:
- the sixth sub-code stream is decoded to obtain the vertex information of the second vertex.
- the merging module 904 is specifically used to:
- connection relationship corresponding to the second grid is updated to obtain the first grid.
- the third code stream includes a seventh sub-code stream, an eighth sub-code stream and a ninth sub-code stream;
- the decoding module 902 is also specifically used for:
- the decoding module 902 is also specifically used to:
- the decoding module 902 is also specifically used to:
- the real geometric coordinates corresponding to each vertex are obtained.
- the decoding module 902 is also specifically used to:
- the decoder predicts the residual based on the attributes corresponding to each vertex in the second grid, and obtains the real texture coordinates corresponding to each vertex;
- the decoding end decodes the fourth target sub-stream to obtain the texture map of the second grid.
- the decoding module 902 is also specifically used to:
- the real texture coordinates corresponding to each vertex are obtained.
- the decoder receives a target code stream obtained by encoding a three-dimensional grid including a non-manifold structure; decodes the third code stream and the fourth code stream in the target code stream to obtain grid information and Vertex information of the second vertex, where the second vertex is obtained based on splitting the first mesh into a second mesh.
- the first mesh is a three-dimensional mesh including a non-manifold structure
- the second mesh is a three-dimensional mesh including a manifold.
- the three-dimensional grid of the structure based on the grid information, the second grid is reconstructed. Further, according to the vertex information of the second vertex, the second vertex in the second grid is merged to obtain the first grid.
- the manifold grid generated by splitting is processed.
- the second vertices are merged so that the number of grids output by the decoder is the same as the number of grids input by the encoder, thereby achieving lossless encoding of three-dimensional grids with non-manifold structures.
- the lossless encoding device and the lossless decoding device in the embodiment of the present application may be electronic equipment, such as an electronic equipment with an operating system, or may be components in the electronic equipment, such as integrated circuits or chips.
- the electronic device may be a terminal or other devices other than the terminal.
- terminals may include but are not limited to the types of terminals listed above, and other devices may be servers, network attached storage (Network Attached Storage, NAS), etc., which are not specifically limited in the embodiments of this application.
- the lossless decoding device provided by the embodiment of the present application can implement each process implemented by the method embodiment in Figure 7, and achieve To achieve the same technical effect, to avoid repetition, we will not repeat them here.
- this embodiment of the present application also provides a communication device 1000, which includes a processor 1001 and a memory 1002.
- the memory 1002 stores programs or instructions that can be run on the processor 1001, such as , when the communication device 1000 is a terminal, when the program or instruction is executed by the processor 1001, each step of the above lossless encoding method embodiment is implemented, and the same technical effect can be achieved, or each step of the above lossless decoding method embodiment is realized, And can achieve the same technical effect.
- An embodiment of the present application also provides a terminal, including a processor 1001 and a communication interface.
- the processor 1001 is configured to perform the following operations:
- a target code stream is generated according to the first code stream and the second code stream.
- processor 1001 is configured to perform the following operations:
- the second vertices in the second mesh are merged to obtain the first mesh.
- FIG. 11 is a schematic diagram of the hardware structure of a terminal that implements an embodiment of the present application.
- the terminal 1100 includes but is not limited to: a radio frequency unit 1101, a network module 1102, an audio output unit 1103, an input unit 1104, a sensor 1105, a display unit 1106, a user input unit 1107, an interface unit 1107, a memory 1109, a processor 1110 and other components. .
- the terminal 1100 may also include a power supply (such as a battery) that supplies power to various components.
- the power supply may be logically connected to the processor 1110 through a power management system, thereby managing charging, discharging, and power consumption through the power management system. Management and other functions.
- the terminal structure shown in FIG. 11 does not constitute a limitation on the terminal.
- the terminal may include more or fewer components than shown in the figure, or some components may be combined or arranged differently, which will not be described again here.
- the input unit 1104 may include a graphics processor (Graphics Processing Unit, GPU) 11041 and a microphone 11042.
- the graphics processor 11041 is responsible for the image capture device (GPU) in the video capture mode or the image capture mode. Process the image data of still pictures or videos obtained by cameras (such as cameras).
- the display unit 1106 may include a display panel 11061, and the display panel 11071 may be configured in the form of a liquid crystal display, an organic light emitting diode, or the like.
- the user input unit 1107 includes at least one of a touch panel 11071 and other input devices 11072 .
- Touch panel 11071 also called touch screen.
- the touch panel 11071 may include a touch detection device and a touch
- the controller has two parts.
- Other input devices 11072 may include but are not limited to physical keyboards, function keys (such as volume control keys, switch keys, etc.), trackballs, mice, and joysticks, which will not be described again here.
- the radio frequency unit 1101 after receiving downlink data from the network side device, the radio frequency unit 1101 can transmit it to the processor 1110 for processing; the radio frequency unit 1101 can send uplink data to the network side device.
- the radio frequency unit 1101 includes, but is not limited to, an antenna, amplifier, transceiver, coupler, low noise amplifier, duplexer, etc.
- Memory 1109 may be used to store software programs or instructions as well as various data.
- the memory 1109 may mainly include a first storage area for storing programs or instructions and a second storage area for storing data, wherein the first storage area may store an operating system, an application program or instructions required for at least one function (such as a sound playback function, Image playback function, etc.) etc.
- memory 1109 may include volatile memory or nonvolatile memory, or memory 1109 may include both volatile and nonvolatile memory.
- non-volatile memory can be read-only memory (Read-Only Memory, ROM), programmable read-only memory (Programmable ROM, PROM), erasable programmable read-only memory (Erasable PROM, EPROM), electrically removable memory.
- Volatile memory can be random access memory (Random Access Memory, RAM), static random access memory (Static RAM, SRAM), dynamic random access memory (Dynamic RAM, DRAM), synchronous dynamic random access memory (Synchronous DRAM, SDRAM), double data rate synchronous dynamic random access memory (Double Data Rate SDRAM, DDRSDRAM), enhanced synchronous dynamic random access memory (Enhanced SDRAM, ESDRAM), synchronous link dynamic random access memory (Synch link DRAM) , SLDRAM) and direct memory bus random access memory (Direct Rambus RAM, DRRAM).
- RAM Random Access Memory
- SRAM static random access memory
- DRAM dynamic random access memory
- synchronous dynamic random access memory Synchronous DRAM, SDRAM
- Double data rate synchronous dynamic random access memory Double Data Rate SDRAM, DDRSDRAM
- Enhanced SDRAM, ESDRAM synchronous link dynamic random access memory
- Synch link DRAM synchronous link dynamic random access memory
- SLDRAM direct memory bus random access memory
- the processor 1110 may include one or more processing units; optionally, the processor 1110 integrates an application processor and a modem processor, where the application processor mainly handles operations related to the operating system, user interface, application programs, etc., Modem processors mainly process wireless communication signals, such as baseband processors. It can be understood that the above modem processor may not be integrated into the processor 1110.
- the processor 1110 is used to perform the following operations:
- a target code stream is generated according to the first code stream and the second code stream.
- processor 1110 is configured to perform the following operations:
- Embodiments of the present application also provide a readable storage medium. Programs or instructions are stored on the readable storage medium. When the program or instructions are executed by a processor, each process of the above lossless encoding method embodiment is implemented, or the above lossless encoding method is implemented. Each process of the decoding method embodiment can achieve the same technical effect. To avoid repetition, it will not be described again here.
- the processor is the processor in the terminal described in the above embodiment.
- the readable storage medium includes computer readable storage media, such as computer read-only memory ROM, random access memory RAM, magnetic disk or optical disk, etc.
- An embodiment of the present application further provides a chip.
- the chip includes a processor and a communication interface.
- the communication interface is coupled to the processor.
- the processor is used to run programs or instructions to implement the above lossless encoding method embodiment.
- Each process, or each process that implements the above lossless decoding method embodiment, can achieve the same technical effect. To avoid repetition, it will not be described again here.
- chips mentioned in the embodiments of this application may also be called system-on-chip, system-on-a-chip, system-on-chip or system-on-chip, etc.
- Embodiments of the present application further provide a computer program/program product.
- the computer program/program product is stored in a storage medium.
- the computer program/program product is executed by at least one processor to implement the above lossless encoding method embodiment.
- Each process, or each process of implementing the above lossless decoding method embodiment can achieve the same technical effect. To avoid duplication, it will not be described again here.
- An embodiment of the present application further provides a system.
- the system includes an encoding end and a decoding end.
- the encoding end performs each process of the above lossless encoding method embodiment.
- the encoding end performs each process of the above lossless decoding method embodiment. , and can achieve the same technical effect, so to avoid repetition, they will not be described again here.
- the methods of the above embodiments can be implemented by means of software plus the necessary general hardware platform. Of course, it can also be implemented by hardware, but in many cases the former is better. implementation.
- the technical solution of the present application can be embodied in the form of a computer software product that is essentially or contributes to the existing technology.
- the computer software product is stored in a storage medium (such as ROM/RAM, disk , CD), including several instructions to cause a terminal (which can be a mobile phone, computer, server, air conditioner, or network device, etc.) to execute the methods described in various embodiments of this application.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请公开了一种无损编码方法、无损解码方法、装置及设备,属于编解码技术领域,本申请实施例的无损解码方法包括:解码端对目标码流进行分解,得到第三码流和第四码流;解码端分别解码第三码流和第四码流,获得第三码流对应的网格信息和第四码流对应的第二顶点的顶点信息;解码端根据网格信息,重建第二网格;解码端根据第二顶点的顶点信息,对第二网格中的第二顶点进行合并,得到第一网格;其中,第一网格为包括非流形结构的三维网格,第二网格为包括流形结构的三维网格,第二顶点基于将第一网格拆分为第二网格得到。
Description
相关申请的交叉引用
本申请主张在2022年6月24日在中国提交的中国专利申请No.202210729278.7的优先权,其全部内容通过引用包含于此。
本申请属于编解码技术领域,具体涉及一种无损编码方法、无损解码方法、装置及设备。
三维网格(Mesh)可以被认为是过去多年来最流行的三维模型的表示方法,其在许多应用程序中扮演着重要的角色。它的表示简便,因此被大量以硬件算法集成到电脑、平板电脑和智能手机的图形处理单元中,专门用于渲染三维网格。
然而,在三维网格存在非流形结构,即三维网格为非流形网格的情况下,现有方案中,编码端需要将非流形网格拆分为流形网格,进而对流形网格进行编码;然而解码端不会对拆分得到的流形网格进行合并,这使得解码端输出的网格数量多于编码端输入的网格数量,无法实现对存在非流形结构的三维网格的无损编码。
发明内容
本申请实施例提供一种无损编码方法、无损解码方法、装置及设备,能够解决现有方案中无法实现对存在非流形结构的三维网格的无损编码的问题。
第一方面,提供了一种无损编码方法,包括:
编码端将第一网格拆分为第二网格;所述第一网格为包括非流形结构的三维网络,所述第二网格为包括流形结构的三维网格;
所述编码端分别编码所述第二网格对应的网格信息和第一顶点的顶点信息,获得所述网格信息对应的第一码流和所述第一顶点的顶点信息对应的第二码流,所述第一顶点为所述第二网格相对于所述第一网格新增的顶点;
所述编码端根据所述第一码流和所述第二码流,生成目标码流。
第二方面,提供一种无损解码方法,包括:
解码端对目标码流进行分解,得到第三码流和第四码流;
所述解码端分别解码所述第三码流和所述第四码流,获得所述第三码流对应的网格信息和所述第四码流对应的第二顶点的顶点信息;
所述解码端根据所述网格信息,重建第二网格;
所述解码端根据所述第二顶点的顶点信息,对所述第二网格中的第二顶点进行合并,得到第一网格;
其中,所述第一网格为包括非流形结构的三维网格,所述第二网格为包括流形结构的三维网格,所述第二顶点基于将所述第一网格拆分为所述第二网格得到。
第三方面,提供了一种无损编码装置,包括:
拆分模块,用于将第一网格拆分为第二网格;所述第一网格为包括非流形结构的三维网络,所述第二网格为包括流形结构的三维网格;
编码模块,用于分别编码所述第二网格对应的网格信息和第一顶点的顶点信息,获得所述网格信息对应的第一码流和所述第一顶点的顶点信息对应的第二码流,所述第一顶点为所述第二网格相对于所述第一网格新增的顶点;
生成模块,用于根据所述第一码流和所述第二码流,生成目标码流。
第四方面,提供了一种无损解码装置,包括:
分解模块,用于对目标码流进行分解,得到第三码流和第四码流;
解码模块,用于分别解码所述第三码流和所述第四码流,获得所述第三码流对应的网格信息和所述第四码流对应的第二顶点的顶点信息;
重建模块,用于根据所述网格信息,重建第二网格;
合并模块,用于根据所述第二顶点的顶点信息,对所述第二网格中的第二顶点进行合并,得到第一网格;
其中,所述第一网格为包括非流形结构的三维网格,所述第二网格为包括流形结构的三维网格,所述第二顶点基于将所述第一网格拆分为所述第二网格得到。
第五方面,提供了一种终端,该终端包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤,或者实现如第二方面所述的方法的步骤。
第六方面,提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤,或者实现如第二方面所述的
方法的步骤。
第七方面,提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法,或者实现如第二方面所述的方法。
第八方面,提供了一种计算机程序/程序产品,所述计算机程序/程序产品被存储在存储介质中,所述计算机程序/程序产品被至少一个处理器执行以实现如第一方面所述的方法的步骤,或者实现如第二方面所述的方法的步骤。
第九方面,提供了一种系统,所述系统包括编码端和解码端,所述编码端执行如第一方面所述的方法的步骤,所述解码端执行如第二方面所述的方法的步骤。
在本申请实施例中,解码端接收对包括非流形结构的三维网格进行编码得到的目标码流;解码目标码流中的第三码流和第四码流,分别获得网格信息和第二顶点的顶点信息,其中,第二顶点基于将第一网格拆分为第二网格得到,第一网格为包括非流形结构的三维网格,第二网格为包括流形结构的三维网格;根据网格信息,重建第二网格。进一步的,根据第二顶点的顶点信息,对第二网格中的第二顶点进行合并,得到第一网格,在得到第一网格的过程中对因拆分流形网格而生成的第二顶点进行合并,以此使得解码端输出的网格数量与编码端输入的网格数量相同,从而实现对存在非流形结构的三维网格的无损编码。
图1是本申请实施例中无损编码方法的流程示意图;
图2是本申请实施例中流形网格的示意图;
图3是本申请实施例中CornerTable的示意图;
图4是本申请实施例中EB中定义的五种操作模式的示意图;
图5是本申请实施例中几何坐标平行四边形的预测示意图;
图6是本申请实施例中纹理坐标相似三角形的预测示意图;
图7是本申请实施例中无损解码方法的流程示意图;
图8是本申请实施例提供的无损编码装置的结构图;
图9是本申请实施例提供的无损解码装置的结构图;
图10是本申请实施例提供的通信设备的结构图;
图11是本申请实施例提供的终端的硬件结构示意图。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”所区别的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”一般表示前后关联对象是一种“或”的关系。
值得指出的是,本申请实施例所描述的技术不限于长期演进型(Long Term Evolution,LTE)/LTE的演进(LTE-Advanced,LTE-A)系统,还可用于其他无线通信系统,诸如码分多址(Code Division Multiple Access,CDMA)、时分多址(Time Division Multiple Access,TDMA)、频分多址(Frequency Division Multiple Access,FDMA)、正交频分多址(Orthogonal Frequency Division Multiple Access,OFDMA)、单载波频分多址(Single-carrier Frequency Division Multiple Access,SC-FDMA)和其他系统。本申请实施例中的术语“系统”和“网络”常被可互换地使用,所描述的技术既可用于以上提及的系统和无线电技术,也可用于其他系统和无线电技术。以下描述出于示例目的描述了新空口(New Radio,NR)系统,并且在以下大部分描述中使用NR术语,但是这些技术也可应用于NR系统应用以外的应用,如第6代(6th Generation,6G)通信系统。
下面结合附图,通过一些实施例及其应用场景对本申请实施例提供的无损编码方法进行详细地说明。
请参阅图1,图1是本申请实施例中无损编码方法的流程图。本实施例提供的无损编码方法包括以下步骤:
S101,将第一网格拆分为第二网格。
上述第一网格为包括非流形结构的三维网络,第二网格为包括流形结构的三维网格。本步骤中,将第一网格拆分为第二网格的流程可以分为两部分,拆分非流形边和拆分非流形点。
1、拆分非流形边
拆分非流形边的第一步是找到非流形边。
应理解,非流形边的一条边同时存在于至少三个三角形中,一种可选地实施方式为,建立一个数据结构,例如映射表或哈希表,使用该数据结构存储第一网格中每条边所在的三角形,通过查询每条边所在的三角形的数量,确定非流形边。
另一种可选地实施方式为,通过构建CornerTable来建立每条边和对角之间的对应关
系,将与至少三个对角对应的边确定为非流形边。
为便于理解边与对角之间的对应关系,请参阅图2,如图2所述,角a与边bc相对,角b也与边bc相对,边bc的对角为角a和角d。
拆分非流形边的第二步是新增顶点,并修改第一网格对应的连接关系。
在找到非流形边后,为非流形边的两个顶点分别创建重复顶点,选择非流形边所在的一个三角形t,使该三角形中除上述两个顶点之外的第三个顶点与创建的重复顶点构成新的三角形t’,使用新的三级三角形t’替换原三角形t。对所有非流形边执行上述操作,以将非流形边转化成流形边。同时记录下此过程中创建的重复顶点的索引。
2、拆分非流形点
拆分非流形点的第一步是找到非流形点。
从第一网格中任一顶点对应的某一个角开始,依次遍历与该角相邻且构成一个扇形的所有角,将顶点和遍历到的角标记为已遍历。直至遍历完第一网格中的所有顶点,将与标记为未遍历过的角对应的顶点,确定为非流形点。
拆分非流形点的第二步是拆分非流形点。
对于每个非流形点,创建一个重复顶点,并第一网格对应的连接关系,将第一步中未遍历到的角连接到创建的重复顶点,以此将非流形点拆分为两个流形顶点。重复这一过程,直到所有的顶点都转换成流形点。
S102,分别编码所述第二网格对应的网格信息和第一顶点的顶点信息,获得所述网格信息对应的第一码流和所述第一顶点的顶点信息对应的第二码流。
本步骤中,在得到第二网格之后,对第二网格对应的网格信息进行编码,得到第一码流,其中,网格信息包括但不限于连接关系、几何信息和属性信息。对第一顶点的顶点信息进行编码,得到第二码流。上述第一顶点为第二网格相对于第一网格新增的顶点,其中,第一顶点包括对第一网格各顶点的几何坐标进行分后新增的顶点,以及对第一网格各顶点的纹理坐标进行分后新增的顶点。
具体的如何获得第一码流和第二码流的具体实施方式,请参阅后续实施例。
S103,根据所述第一码流和所述第二码流,生成目标码流。
本步骤中,在得到第一码流和第二码流后,对第一码流和第二码流进行混流,生成目标码流。
本申请实施例中,将第一网格拆分为第二网格,其中,第一网格包括非流形结构的三维网络,第二网格为包括流形结构的三维网格;编码第二网格对应的网格信息和第一顶点的顶点信息,分别获得第一码流和第二码流,其中,第一顶点为第二网格相对于第一网格新增的顶点;根据第一码流和第二码流,生成目标码流。通过对因拆分非流形网格而新增的第一顶点的顶点信息进行编码,以便在后续的解码过程中,基于顶点信息对新增的顶点进行合并,从而实现对存在非流形结构的三维网格的无损编码。
可选地,编码所述第一顶点的顶点信息,获得所述第一顶点的顶点信息对应的第二码
流包括:
根据所述第一网格包括的非流形结构,生成目标标识;
对所述第一顶点对应的索引进行熵编码,获得第一子码流;
根据所述目标标识和所述第一子码流,生成第二码流。
目标标识用于表征第一网格包括非流形结构。本实施例中,在第一网格包括非流形结构的情况下,生成目标标识。
可选地,设置一个标识,该标识与第一网格是否包括非流形结构相关联,在第一网格包括非流形结构的情况下,即第一顶点的数量大于0,将该标识置1,则上述标识可以理解为目标标识。在第一网格仅包括流形结构的情况下,即第一顶点的数量等于0,将该标识置0。
上述第一顶点的顶点信息包括第一顶点在第一网格中对应的索引。可选地,设置有一个预设阈值,在第一顶点的数量小于或等于该预设阈值的情况下,表示第一顶点的数量较少,则可以对第一顶点对应的索引进行熵编码,得到第一子码流,以此减少第一子码流的码率。进一步的,合并上述目标标识和第一子码流,生成第二码流。
可选地,编码第一顶点的顶点信息,获得所述第一顶点的顶点信息对应的第二码流包括:
根据所述第一网格包括的非流形结构,生成目标标识;
对所述第二网格中每个顶点对应的标志位进行熵编码,获得第二子码流;
根据所述目标标识和所述第二子码流,生成第二码流。
目标标识用于表征第一网格包括非流形结构。本实施例中,在第一网格包括非流形结构的情况下,生成目标标识。
上述第一顶点的顶点信息还可以是每个顶点对应的标志位,上述标志位用于表征对应的顶点是否为第一顶点。示例性的,若一顶点为因拆分第一网格而新增的第一顶点,则该顶点对应的标志位为1;若一顶点不是因拆分第一网格而新增的第一顶点,则该顶点对应的标志位为0。本实施例中,可选地,设置有一个预设阈值,在第一顶点的数量大于该预设阈值的情况下,表示第一顶点的数量较多,则对每个顶点对应的标志位进行熵编码,获得第二子码流。进一步的,合并上述目标标识和第二子码流,生成第二码流。
应理解,第二码流在目标码流中有多种存放方式。一种可选地实施方式为,将第二码流作为单独的一路子码流。另一种可选地实施方式为,将新增的属性顶点对应的码流存放到与属性信息对应的子码流中,将新增的几何顶点对应的码流存放到与几何信息对应的子码流中。另一种可选地实施方式为,将新增的属性顶点对应的码流和新增的几何顶点对应的码流,作为单独的两路子码流。
可选地,编码所述第二网格对应的网格信息,获得所述网格信息对应的第一码流包括:
编码所述第二网格对应的连接关系,生成所述第三子码流;
编码所述第二网格对应的几何信息,生成所述第四子码流;
编码所述第二网格对应的属性信息,生成所述第五子码流。
如上所述,网格信息包括连接关系、几何信息和属性信息,本实施例中的第一码流包括连接关系对应的第三子码流、几何信息对应的第四子码流以及属性信息对应的第五子码流。
本实施例中,对第二网格对应的连接关系进行编码,生成第三子码流;对第二网格对应的几何信息进行几何编码,生成第四子码流;对第二网格对应的属性信息进行属性编码,生成第五子码流。具体的如何生成第三子码流,第四子码流和第五子码流的实施方式,请参阅后续实施例。
以下,具体阐述如何编码第二网格对应的连接关系:
可选地,所述编码所述第二网格对应的连接关系,生成所述第三子码流包括:
遍历所述第二网格中的每个网格,生成目标字符串;
对所述目标字符串进行熵编码,生成所述第三子码流。
本实施例中,可以使用压缩编码技术编码第二网格的连接关系,其中,上述压缩编码技术可以是压缩算法(Edgebreaker,EB)。
具体的实施方式为:对第二网格中每个三角形面片的每个角按照逆时针顺序进行编号,得到每个角的索引。如果第二网格包括f个三角形面片,那么第二网格包括3f个角。
可选地,可以通过公式一,计算出当前角所在的三角形的序号。
公式一:fi=c/3
其中,c为当前角的索引,fi为当前角所在的三角形的序号。
可选地,可以通过公式二,计算出当前角的前一个角的索引。
公式二:cp=(fi*3)+(c-1)%3
其中,c为当前角的索引,fi为当前角所在的三角形的序号,cp为当前角的前一个角的索引,%符号表征取模运算。
可选地,可以通过公式三,计算出当前角的后一个角的索引。
公式三:cp=(fi*3)+(c+1)%3
其中,c为当前角的索引,fi为当前角所在的三角形的序号,cp为当前角的后一个角的索引,%符号表征取模运算。
在对每个角进行编号以及确定每个三角形的序号后,可以建立CornerTable,上述CornerTable包括V表、O表、U表以及M表。其中,V表存储有每个角对应的顶点的索引,O表存储有每个角对应的对角的索引,U表存储有每个三角形是否被遍历过的标识,M表存储有每个顶点是否被遍历过的标识。
为便于理解CornerTable的使用方式,请参阅图3,图3中的c表示当前角,c.p表示当前角c的前一个角,c.n表示当前角c的下一个角。c.o为当前角c的对角,可以查询O表得到。c.t为c所在三角形的序号,可以由工会一计算得到。c.v表示当前角的顶点,可以查询V表得到。c.l表示当前角c左边的角,通过查询O表中c.p的对角得到。c.r表示
当前角c右边的角,通过查询O表中c.n的对角得到。
建立CornerTable之后,可以在第二网格中随机选择一个初始三角形,按照EB中定义的五种操作模式遍历第二网格中的三角形,并生成目标字符串,其中,上述目标字符串为CLERS模式字符串。当遍历路径终结,但第二网格仍存在未遍历到的三角形时,随机选择一个未遍历的三角形,开始下一次遍历,直到网格中所有的三角形都被遍历过为止。进一步的,使用熵编码对CLERS模式字符串进行压缩,生成第三子码流。
为便于理解EB中定义的五种操作模式,请参阅图4。
当前遍历的角为x,如果x对应的顶点v没有被遍历过,确定当前的三角形为C模式,并确定下一个待遍历的三角形为r所在的三角形。如果x对应的顶点v没有被遍历过,且l所在的三角形被遍历过,确定当前的三角形为L模式,并确定下一个待遍历的三角形为r所在的三角形。如果x对应的顶点v没有被遍历过,且r所在的三角形被遍历过,确定当前的三角形为R模式,并确定下一个待遍历的三角形为l所在的三角形。
如果x对应的顶点v被遍历过,且l所在的三角形和r所在的三角形均没有被遍历过,确定当前三角形为S模式,在S模式下,遍历路径会产生两个分支,首先遍历r所在的三角形,并且将l所在的三角形存入堆栈,等待r所在的三角形遍历完成后,再遍历l所在的三角形。如果x对应的顶点v被遍历过,且l所在的三角形和r所在的三角形均被遍历过,确定当前三角形的模式为E,此时遍历到了当前遍历路径分支的终点。
以下,具体阐述如何编码第二网格对应的几何信息:
可选地,所述编码所述第二网格对应的几何信息,生成所述第四子码流包括:
对于所述第二网格中的每个顶点,使用几何预测编码,得到所述每个顶点对应的预测几何坐标;
根据所述每个顶点对应的预测几何坐标和所述每个顶点对应的真实几何坐标,得到所述每个顶点对应的几何预测残差;
对所述每个顶点对应的几何预测残差进行熵编码,生成所述第四子码流。
本实施例中,采用平行四边形预测编码算法对第二网格进行几何编码,应理解,在其他实施方式中,也可以使用差值预测编码算法、多平行四边形预测编码算法等方式进行几何编码,在此不做具体限定。
为便于理解,请参阅图5,如图5所示,第二网格中包括a、b、c、d四个顶点,这四个顶点构成如图5所示的两个三角形。
其中,a点、b点和c点的几何信息已编码,d点的几何信息待编码,那么可以通过公式四计算得到d点对应的预测几何坐标。
公式四:d′(x,y,z)=b(x,y,z)+c(x,y,z)-a(x,y,z)
其中,d′(x,y,z)为d点对应的预测几何坐标,a(x,y,z)为a点对应的真实几何坐标,b(x,y,z)为b点对应的真实几何坐标,c(x,y,z)为c点对应的真实几何坐标。
进一步的,对d点的几何信息进行编码,得到d点的真实几何坐标,通公式五计算得
到d点对应的几何预测残差。
公式五:Δd(x,y,z)=d(x,y,z)-d′(x,y,z)
其中,Δd(x,y,z)为d点对应的几何预测残差,d′(x,y,z)为d点对应的预测几何坐标,d(x,y,z)为d点的真实几何坐标。
这样,在得到每个顶点对应的几何预测残差后,对每个顶点对应的几何预测残差进行熵编码,生成第四子码流。
以下,具体阐述如何编码第二网格对应的属性信息:
可选地,所述编码所述第二网格对应的属性信息,生成所述第五子码流包括:
对所述第二网格中的每个顶点对应的属性预测残差进行熵编码,生成所述第一目标子码流;所述每个顶点对应的属性预测残差基于对所述每个顶点进行属性预测编码确定;
对所述第二网格的纹理图进行编码,生成所述第二目标子码流。
本实施例中,属性信息包括纹理坐标和纹理图,第五子码流包括纹理坐标对应的第一目标子码流和纹理图对应的第二目标子码流。本实施例中,基于对第二网格中每个顶点进行属性预测编码,确定每个顶点对应的属性预测残差,对每个顶点对应的属性预测残差进行熵编码,生成第一目标子码流。具体的如何生成第一目标子码流的实施方式,请参阅后续实施例。
本实施例中,对第二网格的纹理图进行编码,生成第二目标子码流。
可选地,将第一目标子码流和第二目标子码流进行混流,得到第五子码流。
一种可能存在的情况为属性信息不包括纹理图,这种情况下,只需对每个顶点对应的属性预测残差进行熵编码,即可生成第五子码流。
可选地,所述编码所述第二网格对应的属性信息,生成所述第一目标子码流包括:
对于所述第二网格中的每个顶点,采用属性预测编码,得到所述每个顶点对应的预测纹理坐标;
根据所述每个顶点对应的预测纹理坐标和所述每个顶点对应的真实纹理坐标,得到所述每个顶点对应的属性预测残差;
对所述每个顶点对应的属性预测残差进行熵编码,生成所述第一目标子码流。
以下,具体阐述如何对每个顶点进行属性预测编码:
首先,获取初始的边集合,具体的,初始的边集合的获取方式为:
根据重建的几何信息以及连接关系,选取一个初始三角形,对初始三角形的三个顶点的纹理坐标进行编码,并将初始三角形的三条边存入边集合。
需要说明的是,对于初始三角形,本申请实施例中不对其进行顶点的预测,而是直接编码纹理坐标,在编码初始三角形的各顶点的纹理坐标之后,便将该初始三角形的各个边存储边集合,形成初始的边集合,然后基于该初始的边集合对后面的顶点进行预测。
编码待编码顶点的真实纹理坐标和目标三角形的对顶点的预测纹理坐标的残差。
需要说明的是,在得到待编码顶点的预测纹理坐标之后,便可以根据该预测纹理坐标
以及真实纹理坐标获取待编码顶点的残差,通过对残差进行编码实现对待编码顶点的编码,以此能够减少纹理坐标编码的比特数。
需要说明的是,该残差可以为待编码顶点的真实纹理坐标与目标三角形的对顶点的预测纹理坐标的差值,可以是待编码顶点的真实纹理坐标减去目标三角形的对顶点的预测纹理坐标得到,也可以是目标三角形的对顶点的预测纹理坐标减去待编码顶点的真实纹理坐标得到。
可选地,本申请的一实施例中,获取所述第一边对应的目标三角形的对顶点的预测纹理坐标的实现方式可以是:
编码端根据目标三角形的各个顶点的几何坐标,获取对顶点在第一边上的投影点的纹理坐标;
需要说明的是,如图6所示,边NP为在边集合中选出的一条边,可以看作是上述的第一边,顶点N和顶点P分别为第一边的两个顶点,顶点C为待编码的顶点,顶点N、顶点P和顶点C便构成了上述的目标三角形,点X为顶点C在NP边上的投影,顶点O为已编码点,且顶点O、顶点N和顶点P构成的三角形与顶点N、顶点P和顶点C构成的三角形共NP边。基于上图6,可选地,本申请实施例中所说的对顶点在第一边上的投影点的纹理坐标的具体获取方式为:
根据公式六:获取对顶点在第一边上的投影点的纹理坐标;
其中,Xuv为所述对顶点在第一边上的投影点的纹理坐标,Nuv为所述目标三角形的第一边上的顶点N的纹理坐标,为目标三角形的第一边上的顶点N至对顶点在第一边上的投影点X的纹理坐标的向量;其中,为第一边上的顶点N和顶点P的几何坐标的向量;为第一边上的顶点N至对顶点的几何坐标的向量;为第一边上的顶点N至对顶点在第一边上的投影点X的几何坐标的向量。
编码端根据投影点的纹理坐标,获取对顶点的预测纹理坐标;
根据公式七:获取对顶点的纹理坐标;
其中,PredC为对顶点的预测纹理坐标,
为对顶点和第一边对应第一顶点O的纹理坐标的向量的第一种向量取值,Ouv为目标三角形的第一边对应的第一顶点的纹理坐标,第一顶点O为第一三角形的第一边的对顶点,第一三角形与目标三角形具有公共的第一边;为对顶点在第一边上的投影点X至对顶点的纹理坐标的向量;
为对顶点和第一边对应第一顶点O的纹理坐标的向量的第二种向量取值。
需要说明的是,基于上述的过程,便得到了待编码点的预测纹理坐标,基于该预测纹理坐标便可以实现对待编码点的编码;可选地,在基于边集合中的一条边对待编码点进行编码之后,所述编码端将所述目标三角形中的第二边存入所述边集合以及从所述边集合中删除所述第一边,所述第二边为所述目标三角形中未包含于所述边集合中的边,以此实现
边集合的更新。
需要说明的是,本申请实施例中,可以一边进行待编码顶点的残差的获取一边进行编码,也可以是先获取到所有残差,再统一进行残差的编码。
综上可知,本申请实施例中进行纹理坐标(下面简称UV坐标)编码的具体实现过程如下:
步骤S1、从重建后的连接关系中选取一个初始三角形,不进行预测直接编码初始三角形三个顶点的UV坐标,然后将初始三角形的边存入边集合中。
步骤S2、按照存取准则从边集合中选取边τ,编码与τ组成的新三角形对顶点的UV坐标,利用三角形三维到二维的投影关系,依据上述的方式计算待编码点的预测UV坐标,将待编码点的UV坐标的原始值(即真实UV坐标)减去预测UV坐标得到残差。
步骤S3、将新三角形的两条边加入边集合中,移除边集合顶部的边τ;然后从边集合中取出下一条边,继续编码该边邻接三角形的对顶点的预测UV坐标,获取残差,返回步骤S3,循环执行步骤S3,直到获取所有顶点的残差。
步骤S4、熵编码UV坐标残差,输出UV坐标码流。
请参阅图7,图7是本申请实施例中无损解码方法的流程图。本实施例提供的无损解码方法包括以下步骤:
S701,对目标码流进行分解,得到第三码流和第四码流。
本步骤中,解码端在获得目标码流后,对目标码流进行分解,得到第三码流和第四码流,
S702,分别解码所述第三码流和所述第四码流,获得所述第三码流对应的网格信息和所述第四码流对应的第二顶点的顶点信息。
本步骤中,对第三码流进行解码,得到网格信息;对第四码流进行解码,得到第二顶点的顶点信息。上述第二顶点基于将第一网格拆分为第二网格得到,上述第二顶点为第二网格相对于第一网格新增的顶点,其中,第二顶点包括对第一网格各顶点的几何坐标进行分后新增的顶点,以及对第一网格各顶点的纹理坐标进行分后新增的顶点。
S703,根据所述网格信息,重建第二网格。
如上所述,网格信息包括连接关系、几何信息和属性信息。本步骤中,利用第二网格的连接关系、几何信息和属性信息,可以直接重建得到第二网格。
S704,根据所述第二顶点的顶点信息,对所述第二网格中的第二顶点进行合并,得到第一网格。
在本申请实施例中,解码端接收对包括非流形结构的三维网格进行编码得到的目标码流;解码目标码流中的第三码流和第四码流,分别获得网格信息和第二顶点的顶点信息,其中,第二顶点基于将第一网格拆分为第二网格得到,第一网格为包括非流形结构的三维网格,第二网格为包括流形结构的三维网格;根据网格信息,重建第二网格。进一步的,根据第二顶点的顶点信息,对第二网格中的第二顶点进行合并,得到第一网格,在得到第
一网格的过程中对因拆分流形网格而生成的第二顶点进行合并,以此使得解码端输出的网格数量与编码端输入的网格数量相同,从而实现对存在非流形结构的三维网格的无损编码。
可选地,解码所述第四码流,获得第四码流对应的第二顶点的顶点信息包括:
在所述目标标识用于表征所述第一网格为包括非流形结构的三维网格的情况下,解码所述第六子码流,得到所述第二顶点的顶点信息。
应理解,第四码流包括目标标识,在目标标识用于表征第一网格为包括非流形结构的三维网格的情况下,解码第六子码流,得到第二顶点的顶点信息。
可选地,第四码流包括标识,若该标识为1,表示第一网格为包括非流形结构的三维网格,这种情况下,对第六子码流进行解码。若该标识为0,表示第一网格为仅包括流形结构的三维网格,则不需要对第六子码流进行解码。
可选地,所述根据所述第二顶点的顶点信息,对所述第二网格中的第二顶点进行合并,得到第一网格包括:
解析所述第二顶点的顶点信息,确定所述第二网格中的第二顶点;
在映射表对所述第二顶点的几何坐标进行查询,得到目标顶点;
将所述第二顶点对应的索引更新为所述目标顶点对应的索引;
基于所述第二网格中每个顶点对应的索引,更新所述第二网格对应的连接关系,得到所述第一网格。
本实施例中,首先,解析第二顶点的顶点信息,确定第二顶点,其中,第二顶点可以理解为将第一网格拆分为第二网格得到的新增顶点。应理解,可以将第二网格中除第二顶点之外的顶点称为非新增顶点。
应理解,在对第三码流和第四码流解码之后,可以基于解码结果得到映射表,该映射表存储有每个顶点对应的几何坐标与每个顶点对应的索引之间的映射关系,可选地,该映射表可以是哈希表。
如果当前顶点是新增的第二顶点,则在映射表对第二顶点的几何坐标进行查询,得到目标顶点,其中,目标顶点对应的几何坐标与第二顶点对应的几何坐标相同;并将该第二顶点对应的索引更新为目标顶点对应的索引。若通过查询映射表发现存在与第二顶点的几何坐标相同的多个顶点,则可以从上述多个顶点中随机确定一个顶点为目标顶点。本实施例中,通过对第二顶点的索引进行更新,实现第二顶点的合并。
如果当前顶点不是新增的第二顶点,则不更新当前顶点对应的索引。
进一步的,在对第二网格中的每个顶点进行遍历之后,更新第二网格对应的连接关系,更新几何信息列表和纹理坐标列表,得到第一网格。
可选地,解码所述第三码流,获得所述第三码流对应的网格信息包括:
解码所述第七子码流,获得所述第二网格对应的连接关系;
解码所述第八子码流,获得所述第二网格对应的几何信息;
解码所述第九子码流,获得所述第二网格对应的属性信息。
如上所述,网格信息包括连接关系、几何信息和属性信息。第三码流包括连接关系对应的第七子码流、几何信息对应的第八子码流和属性信息对应的第九子码流。
对第七子码流进行解码,得到第二网格对应的连接关系;对第八子码流进行解码,得到第二网格对应的几何信息;对第九子码流进行解码,得到第二网格对应的属性信息。
可选地,所述解码所述第七子码流,获得所述第二网格对应的连接关系包括:
解码所述第七子码流,得到目标字符串;
对所述目标字符串进行解码,重建所述第二网格对应的连接关系。
应理解,上述目标字符串用于表征第二网格对应的连接关系。
解码端使用与编码端对连接关系进行编码的方式对应的解码方式对第七子码流进行解码,得到目标字符串,在此不做重复阐述。
可选地,所述解码所述第八子码流,获得所述第二网格对应的几何信息包括:
对所述第八子码流进行熵解码,得到所述第二网格中每个顶点对应的几何预测残差;
对所述每个顶点采用几何预测解码,得到所述每个顶点对应的预测几何坐标;
基于所述每个顶点对应的几何预测残差和预测几何坐标,得到所述每个顶点对应的真实几何坐标。
应理解,上述每个顶点对应的真实几何坐标用于表征第二网格对应的几何信息。
解码端使用与编码端对几何信息进行编码的方式对应的解码方式对第八子码流进行解码,得到第二网格对应的几何信息,在此不做重复阐述。
可选地,所述解码所述第九子码流,获得所述第二网格对应的属性信息包括:
分解所述第九子码流,得到所述第三目标子码流和所述第四目标子码流;
基于所述第二网格中每个顶点对应的属性预测残差,得到所述每个顶点对应的真实纹理坐标;所述每个顶点对应的属性预测残差基于解码所述第三目标子码流确定;
解码所述第四目标子码流,得到所述第二网格的纹理图。
本实施例中,属性信息包括纹理坐标和纹理图,第九子码流包括纹理坐标对应的第三目标子码流和纹理图对应的第四目标子码流。
本实施例中,对第三目标子码流进行解码,确定每个顶点对应的属性预测残差,进而基于每个顶点对应的属性预测残差,得到每个顶点对应的真实纹理坐标。
对第四目标子码流进行解码,得到第二网格的纹理图。
一种可能存在的情况为,第九子码流不包括第四目标子码流,即属性信息不包括纹理图。这种情况下,只需对第三目标子码流进行解码,即可获得第二网格对应的属性信息。
可选地,所述基于所述第二网格中每个顶点对应的属性预测残差,得到所述每个顶点对应的真实纹理坐标包括:
对所述第三目标子码流进行熵解码,得到所述第二网格中每个顶点对应的属性预测残差;
对所述每个顶点采用属性预测解码,得到所述每个顶点对应的预测纹理坐标;
基于所述每个顶点对应的属性预测残差和预测纹理坐标,得到所述每个顶点对应的真实纹理坐标。
本实施例中,解码端使用与编码端对纹理信息进行编码的方式对应的解码方式对第三目标子码流进行解码,得到每个顶点对应的真实纹理坐标,在此不做重复阐述。
本申请实施例提供的无损编码方法,执行主体可以为无损编码装置。本申请实施例中以无损编码装置执行编码方法为例,说明本申请实施例提供的无损编码装置。
如图8所示,本申请实施例还提供了一种无损编码装置800,包括:
拆分模块801,用于将第一网格拆分为第二网格;
编码模块802,用于分别编码所述第二网格对应的网格信息和第一顶点的顶点信息,获得所述网格信息对应的第一码流和所述第一顶点的顶点信息对应的第二码流;
生成模块803,用于根据所述第一码流和所述第二码流,生成目标码流。
可选地,所述编码模块802,具体用于:
根据所述第一网格包括的非流形结构,生成目标标识;
对所述第一顶点对应的索引进行熵编码,获得第一子码流;
根据所述目标标识和所述第一子码流,生成第二码流。
可选地,所述编码模块802,还具体用于:
根据所述第一网格包括的非流形结构,生成目标标识;
对所述第二网格中每个顶点对应的标志位进行熵编码,获得第二子码流;
根据所述目标标识和所述第二子码流,生成第二码流。
可选地,所述编码模块802,还具体用于:
编码所述第二网格对应的连接关系,生成所述第三子码流;
编码所述第二网格对应的几何信息,生成所述第四子码流;
编码所述第二网格对应的属性信息,生成所述第五子码流。
可选地,所述编码模块802,还具体用于:
遍历所述第二网格中的每个网格,生成目标字符串;
对所述目标字符串进行熵编码,生成所述第三子码流。
可选地,所述编码模块802,还具体用于:
对于所述第二网格中的每个顶点,使用几何预测编码,得到所述每个顶点对应的预测几何坐标;
根据所述每个顶点对应的预测几何坐标和所述每个顶点对应的真实几何坐标,得到所述每个顶点对应的几何预测残差;
对所述每个顶点对应的几何预测残差进行熵编码,生成所述第四子码流。
可选地,所述编码模块802,还具体用于:
对所述第二网格中的每个顶点对应的属性预测残差进行熵编码,生成所述第一目标子码流;
对所述第二网格的纹理图进行编码,生成所述第二目标子码流。
所述编码模块802,还具体用于:
对于所述第二网格中的每个顶点,采用属性预测编码,得到所述每个顶点对应的预测纹理坐标;
根据所述每个顶点对应的预测纹理坐标和所述每个顶点对应的真实纹理坐标,得到所述每个顶点对应的属性预测残差;
对所述每个顶点对应的属性预测残差进行熵编码,生成所述第一目标子码流。
本申请实施例中,将第一网格拆分为第二网格,其中,第一网格包括非流形结构的三维网络,第二网格为包括流形结构的三维网格;编码第二网格对应的网格信息和第一顶点的顶点信息,分别获得第一码流和第二码流,其中,第一顶点为第二网格相对于第一网格新增的顶点;根据第一码流和第二码流,生成目标码流。通过对因拆分非流形网格而新增的第一顶点的顶点信息进行编码,以便在后续的解码过程中,基于顶点信息对新增的顶点进行合并,从而实现对存在非流形结构的三维网格的无损编码。
该装置实施例与上述图1所示的无损编码方法实施例对应,上述方法实施例中关于编码端的各个实施过程和实现方式均可适用于该装置实施例中,且能达到相同的技术效果。
本申请实施例提供的无损解码方法,执行主体可以为无损解码装置。本申请实施例中以无损解码装置执行无损解码方法为例,说明本申请实施例提供的无损解码装置。
如图9所示,本申请实施例还提供了一种无损解码装置900,包括:
分解模块901,用于对目标码流进行分解,得到第三码流和第四码流;
解码模块902,用于分别解码所述第三码流和所述第四码流,获得所述第三码流对应的网格信息和所述第四码流对应的第二顶点的顶点信息;
重建模块903,用于根据所述网格信息,重建第二网格;
合并模块904,用于根据所述第二顶点的顶点信息,对所述第二网格中的第二顶点进行合并,得到第一网格。
可选地,所述解码模块902,具体用于:
在所述目标标识用于表征所述第一网格为包括非流形结构的三维网格的情况下,解码所述第六子码流,得到所述第二顶点的顶点信息。
可选地,所述合并模块904,具体用于:
解析所述第二顶点的顶点信息,确定所述第二网格中的第二顶点;
在映射表对所述第二顶点的几何坐标进行查询,得到目标顶点;
将所述第二顶点对应的索引更新为所述目标顶点对应的索引;
基于所述第二网格中每个顶点对应的索引,更新所述第二网格对应的连接关系,得到所述第一网格。
可选地,所述第三码流包括第七子码流、第八子码流和第九子码流;
所述解码模块902,还具体用于:
解码所述第七子码流,获得所述第二网格对应的连接关系;
解码所述第八子码流,获得所述第二网格对应的几何信息;
解码所述第九子码流,获得所述第二网格对应的属性信息。
可选地,所述解码模块902,还具体用于:
解码所述第七子码流,得到目标字符串;
对所述目标字符串进行解码,重建所述第二网格对应的连接关系。
可选地,所述解码模块902,还具体用于:
对所述第八子码流进行熵解码,得到所述第二网格中每个顶点对应的几何预测残差;
对所述每个顶点采用几何预测解码,得到所述每个顶点对应的预测几何坐标;
基于所述每个顶点对应的几何预测残差和预测几何坐标,得到所述每个顶点对应的真实几何坐标。
可选地,所述解码模块902,还具体用于:
分解所述第九子码流,得到所述第三目标子码流和所述第四目标子码流;
所述解码端基于所述第二网格中每个顶点对应的属性预测残差,得到所述每个顶点对应的真实纹理坐标;
所述解码端解码所述第四目标子码流,得到所述第二网格的纹理图。
可选地,所述解码模块902,还具体用于:
对所述第三目标子码流进行熵解码,得到所述第二网格中每个顶点对应的属性预测残差;
对所述每个顶点采用属性预测解码,得到所述每个顶点对应的预测纹理坐标;
基于所述每个顶点对应的属性预测残差和预测纹理坐标,得到所述每个顶点对应的真实纹理坐标。
在本申请实施例中,解码端接收对包括非流形结构的三维网格进行编码得到的目标码流;解码目标码流中的第三码流和第四码流,分别获得网格信息和第二顶点的顶点信息,其中,第二顶点基于将第一网格拆分为第二网格得到,第一网格为包括非流形结构的三维网格,第二网格为包括流形结构的三维网格;根据网格信息,重建第二网格。进一步的,根据第二顶点的顶点信息,对第二网格中的第二顶点进行合并,得到第一网格,在得到第一网格的过程中对因拆分流形网格而生成的第二顶点进行合并,以此使得解码端输出的网格数量与编码端输入的网格数量相同,从而实现对存在非流形结构的三维网格的无损编码。
本申请实施例中的无损编码装置和无损解码装置可以是电子设备,例如具有操作系统的电子设备,也可以是电子设备中的部件、例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,终端可以包括但不限于上述所列举的终端的类型,其他设备可以为服务器、网络附属存储器(Network Attached Storage,NAS)等,本申请实施例不作具体限定。
本申请实施例提供的无损解码装置能够实现图7的方法实施例实现的各个过程,并达
到相同的技术效果,为避免重复,这里不再赘述。
可选地,如图10所示,本申请实施例还提供一种通信设备1000,包括处理器1001和存储器1002,存储器1002上存储有可在所述处理器1001上运行的程序或指令,例如,该通信设备1000为终端时,该程序或指令被处理器1001执行时实现上述无损编码方法实施例的各个步骤,且能达到相同的技术效果,或实现上述无损解码方法实施例的各个步骤,且能达到相同的技术效果。
本申请实施例还提供一种终端,包括处理器1001和通信接口,处理器1001用于执行以下操作:
将第一网格拆分为第二网格;
分别编码所述第二网格对应的网格信息和第一顶点的顶点信息,获得所述网格信息对应的第一码流和所述第一顶点的顶点信息对应的第二码流;
根据所述第一码流和所述第二码流,生成目标码流。
或者,处理器1001用于执行以下操作:
对目标码流进行分解,得到第三码流和第四码流;
分别解码所述第三码流和所述第四码流,获得所述第三码流对应的网格信息和所述第四码流对应的第二顶点的顶点信息;
根据所述网格信息,重建第二网格;
根据所述第二网格,对所述第二网格中的第二顶点进行合并处理,得到第一网格。
该终端实施例与上述终端侧方法实施例对应,上述方法实施例的各个实施过程和实现方式均可适用于该终端实施例中,且能达到相同的技术效果。具体地,图11为实现本申请实施例的一种终端的硬件结构示意图。
该终端1100包括但不限于:射频单元1101、网络模块1102、音频输出单元1103、输入单元1104、传感器1105、显示单元1106、用户输入单元1107、接口单元1107、存储器1109、以及处理器1110等部件。
本领域技术人员可以理解,终端1100还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器1110逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图11中示出的终端结构并不构成对终端的限定,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
应理解的是,本申请实施例中,输入单元1104可以包括图形处理器(Graphics Processing Unit,GPU)11041和麦克风11042,图形处理器11041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元1106可包括显示面板11061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板11071。用户输入单元1107包括触控面板11071以及其他输入设备11072中的至少一种。触控面板11071,也称为触摸屏。触控面板11071可包括触摸检测装置和触摸
控制器两个部分。其他输入设备11072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
本申请实施例中,射频单元1101接收来自网络侧设备的下行数据后,可以传输给处理器1110进行处理;射频单元1101可以向网络侧设备发送上行数据。通常,射频单元1101包括但不限于天线、放大器、收发信机、耦合器、低噪声放大器、双工器等。
存储器1109可用于存储软件程序或指令以及各种数据。存储器1109可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器1109可以包括易失性存储器或非易失性存储器,或者,存储器1109可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器1109包括但不限于这些和任意其它适合类型的存储器。
处理器1110可包括一个或多个处理单元;可选的,处理器1110集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器1110中。
其中,处理器1110用于执行以下操作:
将第一网格拆分为第二网格;
分别编码所述第二网格对应的网格信息和第一顶点的顶点信息,获得所述网格信息对应的第一码流和所述第一顶点的顶点信息对应的第二码流;
根据所述第一码流和所述第二码流,生成目标码流。
或者,处理器1110用于执行以下操作:
对目标码流进行分解,得到第三码流和第四码流;
分别解码所述第三码流和所述第四码流,获得所述第三码流对应的网格信息和所述第四码流对应的第二顶点的顶点信息;
根据所述网格信息,重建第二网格;
根据所述第二顶点的顶点信息,对所述第二网格中的第二顶点进行合并,得到第一网格。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述无损编码方法实施例的各个过程,或实现上述无损解码方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的终端中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述无损编码方法实施例的各个过程,或实现上述无损解码方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片,系统芯片,芯片系统或片上系统芯片等。
本申请实施例另提供了一种计算机程序/程序产品,所述计算机程序/程序产品被存储在存储介质中,所述计算机程序/程序产品被至少一个处理器执行以实现上述无损编码方法实施例的各个过程,或实现上述无损解码方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例另提供了一种系统,所述系统包括编码端和解码端,所述编码端执行上述无损编码方法实施例的各个过程,所述编码端执行上述无损解码方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施
方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (20)
- 一种无损编码方法,包括:编码端将第一网格拆分为第二网格;所述第一网格为包括非流形结构的三维网络,所述第二网格为包括流形结构的三维网格;所述编码端分别编码所述第二网格对应的网格信息和第一顶点的顶点信息,获得所述网格信息对应的第一码流和所述第一顶点的顶点信息对应的第二码流,所述第一顶点为所述第二网格相对于所述第一网格新增的顶点;所述编码端根据所述第一码流和所述第二码流,生成目标码流。
- 根据权利要求1所述的方法,其中,编码所述第一顶点的顶点信息,获得所述第一顶点的顶点信息对应的第二码流包括:所述编码端根据所述第一网格包括的非流形结构,生成目标标识;所述编码端对所述第一顶点对应的索引进行熵编码,获得第一子码流;所述编码端根据所述目标标识和所述第一子码流,生成第二码流。
- 根据权利要求1所述的方法,其中,编码第一顶点的顶点信息,获得所述第一顶点的顶点信息对应的第二码流包括:所述编码端根据所述第一网格包括的非流形结构,生成目标标识;所述编码端对所述第二网格中每个顶点对应的标志位进行熵编码,获得第二子码流;所述标志位用于表征对应的顶点是否为第一顶点;所述编码端根据所述目标标识和所述第二子码流,生成第二码流。
- 根据权利要求1所述的方法,其中,所述第一码流包括第三子码流、第四子码流和第五子码流,所述网格信息包括连接关系、几何信息和属性信息;编码所述第二网格对应的网格信息,获得所述网格信息对应的第一码流包括:所述编码端编码所述第二网格对应的连接关系,生成所述第三子码流;所述编码端编码所述第二网格对应的几何信息,生成所述第四子码流;所述编码端编码所述第二网格对应的属性信息,生成所述第五子码流。
- 根据权利要求4所述的方法,其中,所述编码所述第二网格对应的连接关系,生成所述第三子码流包括:所述编码端遍历所述第二网格中的每个网格,生成目标字符串;所述目标字符串用于表征所述第二网格对应的连接关系;所述编码端对所述目标字符串进行熵编码,生成所述第三子码流。
- 根据权利要求4所述的方法,其中,所述编码所述第二网格对应的几何信息,生成所述第四子码流包括:所述编码端对于所述第二网格中的每个顶点,使用几何预测编码,得到所述每个顶点对应的预测几何坐标;所述编码端根据所述每个顶点对应的预测几何坐标和所述每个顶点对应的真实几何坐标,得到所述每个顶点对应的几何预测残差;所述编码端对所述每个顶点对应的几何预测残差进行熵编码,生成所述第四子码流。
- 根据权利要求4所述的方法,其中,所述属性信息包括纹理坐标和纹理图,所述第五子码流包括所述纹理坐标对应的第一目标子码流和所述纹理图对应的第二目标子码流;所述编码所述第二网格对应的属性信息,生成所述第五子码流包括:所述编码端对所述第二网格中的每个顶点对应的属性预测残差进行熵编码,生成所述第一目标子码流;所述每个顶点对应的属性预测残差基于对所述每个顶点进行属性预测编码确定;所述编码端对所述第二网格的纹理图进行编码,生成所述第二目标子码流。
- 根据权利要求7所述的方法,其中,所述编码所述第二网格对应的属性信息,生成所述第一目标子码流包括:所述编码端对于所述第二网格中的每个顶点,采用属性预测编码,得到所述每个顶点对应的预测纹理坐标;所述编码端根据所述每个顶点对应的预测纹理坐标和所述每个顶点对应的真实纹理坐标,得到所述每个顶点对应的属性预测残差;所述编码端对所述每个顶点对应的属性预测残差进行熵编码,生成所述第一目标子码流。
- 一种无损解码方法,包括:解码端对目标码流进行分解,得到第三码流和第四码流;所述解码端分别解码所述第三码流和所述第四码流,获得所述第三码流对应的网格信息和所述第四码流对应的第二顶点的顶点信息;所述解码端根据所述网格信息,重建第二网格;所述解码端根据所述第二顶点的顶点信息,对所述第二网格中的第二顶点进行合并,得到第一网格;其中,所述第一网格为包括非流形结构的三维网格,所述第二网格为包括流形结构的三维网格,所述第二顶点基于将所述第一网格拆分为所述第二网格得到。
- 根据权利要求9所述的方法,其中,所述第四码流包括目标标识和第六子码流;解码所述第四码流,获得第四码流对应的第二顶点的顶点信息包括:所述解码端在所述目标标识用于表征所述第一网格为包括非流形结构的三维网格的情况下,解码所述第六子码流,得到所述第二顶点的顶点信息。
- 根据权利要求9所述的方法,其中,所述根据所述第二顶点的顶点信息,对所述第二网格中的第二顶点进行合并,得到第一网格包括:所述解码端解析所述第二顶点的顶点信息,确定所述第二网格中的第二顶点;所述解码端在映射表对所述第二顶点的几何坐标进行查询,得到目标顶点;所述映射 表基于解码所述第三码流和所述第四码流得到,所述映射表存储有每个顶点对应的几何坐标与每个顶点对应的索引之间的映射关系,所述目标顶点对应的几何坐标与所述第二顶点对应的几何坐标相同;所述解码端将所述第二顶点对应的索引更新为所述目标顶点对应的索引;所述解码端基于所述第二网格中每个顶点对应的索引,更新所述第二网格对应的连接关系,得到所述第一网格。
- 根据权利要求9所述的方法,其中,所述第三码流包括第七子码流、第八子码流和第九子码流,所述网格信息包括连接关系、几何信息和属性信息;解码所述第三码流,获得所述第三码流对应的网格信息包括:所述解码端解码所述第七子码流,获得所述第二网格对应的连接关系;所述解码端解码所述第八子码流,获得所述第二网格对应的几何信息;所述解码端解码所述第九子码流,获得所述第二网格对应的属性信息。
- 根据权利要求12所述的方法,其中,所述解码所述第七子码流,获得所述第二网格对应的连接关系包括:所述解码端解码所述第七子码流,得到目标字符串;所述目标字符串用于表征所述第二网格对应的连接关系;所述解码端对所述目标字符串进行解码,重建所述第二网格对应的连接关系。
- 根据权利要求12所述的方法,其中,所述解码所述第八子码流,获得所述第二网格对应的几何信息包括:所述解码端对所述第八子码流进行熵解码,得到所述第二网格中每个顶点对应的几何预测残差;所述解码端对所述每个顶点采用几何预测解码,得到所述每个顶点对应的预测几何坐标;所述解码端基于所述每个顶点对应的几何预测残差和预测几何坐标,得到所述每个顶点对应的真实几何坐标;所述每个顶点对应的真实几何坐标用于表征所述第二网格对应的几何信息。
- 根据权利要求12所述的方法,其中,所述属性信息包括纹理坐标和纹理图,所述第九子码流包括所述纹理坐标对应的第三目标子码流和所述纹理图对应的第四目标子码流;所述解码所述第九子码流,获得所述第二网格对应的属性信息包括:所述解码端分解所述第九子码流,得到所述第三目标子码流和所述第四目标子码流;所述解码端基于所述第二网格中每个顶点对应的属性预测残差,得到所述每个顶点对应的真实纹理坐标;所述每个顶点对应的属性预测残差基于解码所述第三目标子码流确定;所述解码端解码所述第四目标子码流,得到所述第二网格的纹理图。
- 根据权利要求15所述的方法,其中,所述基于所述第二网格中每个顶点对应的属 性预测残差,得到所述每个顶点对应的真实纹理坐标包括:所述解码端对所述第三目标子码流进行熵解码,得到所述第二网格中每个顶点对应的属性预测残差;所述解码端对所述每个顶点采用属性预测解码,得到所述每个顶点对应的预测纹理坐标;所述解码端基于所述每个顶点对应的属性预测残差和预测纹理坐标,得到所述每个顶点对应的真实纹理坐标。
- 一种无损编码装置,包括:拆分模块,用于将第一网格拆分为第二网格;所述第一网格为包括非流形结构的三维网络,所述第二网格为包括流形结构的三维网格;编码模块,用于分别编码所述第二网格对应的网格信息和第一顶点的顶点信息,获得所述网格信息对应的第一码流和所述第一顶点的顶点信息对应的第二码流,所述第一顶点为所述第二网格相对于所述第一网格新增的顶点;生成模块,用于根据所述第一码流和所述第二码流,生成目标码流。
- 一种无损解码装置,包括:分解模块,用于对目标码流进行分解,得到第三码流和第四码流;解码模块,用于分别解码所述第三码流和所述第四码流,获得所述第三码流对应的网格信息和所述第四码流对应的第二顶点的顶点信息;重建模块,用于根据所述网格信息,重建第二网格;合并模块,用于根据所述第二顶点的顶点信息,对所述第二网格中的第二顶点进行合并,得到第一网格;其中,所述第一网格为包括非流形结构的三维网格,所述第二网格为包括流形结构的三维网格,所述第二顶点基于将所述第一网格拆分为所述第二网格得到。
- 一种终端,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-8任一项所述的无损编码方法的步骤,或者实现如权利要求9-16任一项所述的无损解码方法的步骤。
- 一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1-8任一项所述的无损编码方法的步骤,或者实现如权利要求9-16任一项所述的无损解码方法的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210729278.7A CN117333633A (zh) | 2022-06-24 | 2022-06-24 | 无损编码方法、无损解码方法、装置及设备 |
CN202210729278.7 | 2022-06-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2023246686A1 true WO2023246686A1 (zh) | 2023-12-28 |
Family
ID=89288965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2023/101020 WO2023246686A1 (zh) | 2022-06-24 | 2023-06-19 | 无损编码方法、无损解码方法、装置及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117333633A (zh) |
WO (1) | WO2023246686A1 (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6452596B1 (en) * | 1998-10-06 | 2002-09-17 | International Business Machines Corporation | Methods and apparatus for the efficient compression of non-manifold polygonal meshes |
US20040017368A1 (en) * | 2002-07-26 | 2004-01-29 | Martin Isenburg | Mesh compression process |
US20090278844A1 (en) * | 2007-01-11 | 2009-11-12 | Eun Young Chang | Method and apparatus for encoding/decoding 3d mesh information including stitching information |
CN104243958A (zh) * | 2014-09-29 | 2014-12-24 | 联想(北京)有限公司 | 三维网格数据的编码、解码方法以及编码、解码装置 |
WO2022023002A1 (en) * | 2020-07-31 | 2022-02-03 | Interdigital Vc Holdings France, Sas | Methods and apparatus for encoding and decoding a 3d mesh as a volumetric content |
-
2022
- 2022-06-24 CN CN202210729278.7A patent/CN117333633A/zh active Pending
-
2023
- 2023-06-19 WO PCT/CN2023/101020 patent/WO2023246686A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6452596B1 (en) * | 1998-10-06 | 2002-09-17 | International Business Machines Corporation | Methods and apparatus for the efficient compression of non-manifold polygonal meshes |
US20040017368A1 (en) * | 2002-07-26 | 2004-01-29 | Martin Isenburg | Mesh compression process |
US20090278844A1 (en) * | 2007-01-11 | 2009-11-12 | Eun Young Chang | Method and apparatus for encoding/decoding 3d mesh information including stitching information |
CN104243958A (zh) * | 2014-09-29 | 2014-12-24 | 联想(北京)有限公司 | 三维网格数据的编码、解码方法以及编码、解码装置 |
WO2022023002A1 (en) * | 2020-07-31 | 2022-02-03 | Interdigital Vc Holdings France, Sas | Methods and apparatus for encoding and decoding a 3d mesh as a volumetric content |
Also Published As
Publication number | Publication date |
---|---|
CN117333633A (zh) | 2024-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7166782B2 (ja) | 二次元ポイントクラウドを符号化および復号する方法および装置 | |
US11532117B2 (en) | Density coordinate hashing for volumetric data | |
Gurung et al. | SQuad: Compact representation for triangle meshes | |
JP2016511457A (ja) | 深度マップ上への再投影を使用するサーフェスコーデック | |
Liu et al. | Atlas refinement with bounded packing efficiency | |
KR20090097057A (ko) | 메쉬 모델로 구현된 3차원 데이터의 연결정보를 부호화 및복호화 방법 | |
CN114282071A (zh) | 基于图数据库的请求处理方法、装置、设备及存储介质 | |
WO2023246686A1 (zh) | 无损编码方法、无损解码方法、装置及设备 | |
WO2024001953A1 (zh) | 无损编码方法、无损解码方法、装置及设备 | |
CN115176279A (zh) | 用于点云译码的方法和装置 | |
US20220286677A1 (en) | Point cloud processing method, encoder, decoder and storage medium | |
US20180365261A1 (en) | Fingerprinting data for more aggressive de-duplication | |
WO2024083039A1 (zh) | 网格编码方法、网格解码方法及相关设备 | |
WO2024083043A1 (zh) | 网格编码方法、装置、通信设备及可读存储介质 | |
WO2024017008A1 (zh) | 编码、解码方法、装置及设备 | |
WO2023098805A1 (zh) | 点云编码方法、解码方法、装置及电子设备 | |
Vieira et al. | Stellar mesh simplification using probabilistic optimization | |
CN117412058A (zh) | 编码、解码方法、装置及设备 | |
Dai et al. | Multiple Dimensional Encoding/Modulation Shift‐and‐Addition Design for Distributed Systems | |
WO2023155779A1 (zh) | 编码方法、解码方法、装置及通信设备 | |
Guo et al. | A Topology‐Inferred Graph‐Based Heuristic Algorithm for Map Simplification | |
WO2023193707A1 (zh) | 编码、解码方法、装置及设备 | |
CN116760986B (zh) | 候选运动矢量生成方法、装置、计算机设备和存储介质 | |
WO2023173238A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2023098820A1 (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: 23826334 Country of ref document: EP Kind code of ref document: A1 |