Information processing device and method
By setting dedicated storage locations for edge and triangle information during each iteration of the subdivision process, the method addresses the buffer capacity and management issues in V-DMC, enhancing processing efficiency and reducing load.
Patent Information
- Application Number
- PCT/JP2024/037126
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-07-08
- Filing Date
- 2024-10-18
- Publication Date
- 2026-01-15
AI Technical Summary
Conventional methods for subdividing base meshes in V-DMC increase the buffer capacity required for storing edge and triangle information, complicating buffer management and increasing the load of subdivision processing.
An information processing device and method that sets specific storage locations for edge and triangle information in each iteration of the subdivision process, storing edge information in a first buffer location and triangle information in a second, using a variable subdivision pattern to manage buffer space efficiently.
This approach reduces the increase in buffer capacity and simplifies buffer management, allowing for more efficient parallel processing and reduced load on the subdivision process.
Smart Images

Figure JP2024037126_15012026_PF_FP_ABST
Abstract
Description
Information processing device and method
[0001] The present disclosure relates to an information processing device and method, and more particularly to an information processing device and method that are capable of suppressing an increase in the load of subdivision processing.
[0002] Conventionally, V-DMC (Video-based Dynamic Mesh Coding) has been used as a method for encoding meshes, which are 3D data that represent the three-dimensional structure of an object using vertices and connections (see, for example, Non-Patent Document 1). In V-DMC, the mesh to be encoded (original mesh) is represented by a coarse (i.e., low-resolution) base mesh and displacement vectors at division points obtained by subdividing the base mesh, and the base mesh and displacement vectors are encoded. The displacement vectors are stored (packed) in a two-dimensional image and encoded as an image. Because objects can change over time (are dynamic), the mesh (i.e., the base mesh and displacement vectors) are also dynamic. Therefore, the displacement vectors are encoded as a moving image (displacement video) in which the two-dimensional images are used as frames.
[0003] During decoding, the bitstream is decoded using a decoding method corresponding to the encoding method, and a base mesh and displacement vectors are restored (generated).The base mesh is then subdivided, and displacement vectors are applied to each division point to restore (generate) a mesh equivalent to the original mesh.Mid-point subdivision is applied to the base mesh subdivision.
[0004] Khaled Mammou, Jungsun Kim, Alexis Tourapis, Dimitri Podborski, Krasimir Kolarov, "[V-CG] Apple's Dynamic Mesh Coding CfP Response", ISO / IEC JTC 1 / SC 29 / WG 7 m59281, April 2022
[0005] However, conventional methods for subdividing base meshes increase the buffer capacity required to store edge and triangle information, and buffer management becomes complicated, which can increase the load of subdivision processing.
[0006] The present disclosure has been made in consideration of such circumstances, and makes it possible to suppress an increase in the load of subdivision processing.
[0007] An information processing device according to one aspect of the present technology includes: a storage position setting unit that sets, in each iteration of a subdivision process that recursively repeats subdivision of triangles that constitute a base mesh, a first storage position for storing edge information about the edges of the triangles and a second storage position for storing triangle information, which is information about the triangles; a subdivision processing unit that, as the processing of the current iteration of the subdivision process, divides the edges and subdivides the triangles for the mesh generated by the processing of the previous iteration; and an information storage unit that stores the edge information of the edges generated in the current iteration in the first storage position of a buffer and stores the triangle information of the triangles generated in the current iteration in the second storage position of the buffer, wherein the base mesh is an information processing device in which vertices have been thinned out from an original mesh to be encoded that is composed of vertices and connections that represent the three-dimensional structure of the object.
[0008] An information processing method according to one aspect of the present technology includes: in each iteration of a subdivision process that recursively repeats subdivision of triangles that constitute a base mesh, setting a first storage location for storing edge information about the edges of the triangles and a second storage location for storing triangle information, which is information about the triangles; and, as the processing for a current iteration of the subdivision process, dividing the edges and subdividing the triangles for a mesh generated by the processing for the previous iteration; storing the edge information for the edges generated in the current iteration in the first storage location of a buffer, and storing the triangle information for the triangles generated in the current iteration in the second storage location of the buffer, wherein the base mesh is an information processing method in which vertices are thinned out from an original mesh to be encoded that is composed of vertices and connections that represent a three-dimensional structure of the object.
[0009] Another aspect of the present technology is an information processing device that includes: a subdivision setting unit that generates subdivision setting information, the subdivision setting information being setting information for a subdivision process that recursively repeats subdivision of triangles that constitute a base mesh, the subdivision setting information including information regarding setting of a first storage location that stores edge information about edges of the triangles and a second storage location that stores triangle information that is information about the triangles; and an atlas information encoding unit that encodes atlas information of 3D data including the base mesh, the atlas information including the subdivision setting information, wherein the base mesh is an information processing device in which vertices are thinned out from an original mesh to be encoded that is composed of vertices and connections that represent a three-dimensional structure of the object.
[0010] Another aspect of the present technology is an information processing method that includes generating subdivision setting information for a subdivision process that recursively repeats subdivision of triangles that constitute a base mesh, the subdivision setting information including information regarding the setting of a first storage location that stores edge information about edges of the triangles and a second storage location that stores triangle information that is information about the triangles; and encoding atlas information of 3D data including the base mesh, the atlas information including the subdivision setting information, wherein the base mesh is an information processing method in which vertices are thinned out from an original mesh to be encoded that is composed of vertices and connections that represent a three-dimensional structure of the object.
[0011] In an information processing device and method according to one aspect of the present technology, a subdivision process is performed in which, for each iteration of a subdivision process that recursively subdivides a base mesh into triangles constituting the base mesh, a first storage location for storing edge information relating to the triangle edges and a second storage location for storing triangle information, which is information relating to the triangles, are set. For a current iteration of the subdivision process, the mesh generated by the previous iteration is divided into edges and subdivided into triangles. The edge information for the edges generated in the current iteration is stored in the first storage location of a buffer, and the triangle information for the triangles generated in the current iteration is stored in the second storage location of the buffer. The base mesh is a mesh in which vertices are thinned out from an original mesh to be encoded, which is composed of vertices and connections that represent the three-dimensional structure of the object.
[0012] In another aspect of the present technology, an information processing device and method execute a process including: generating subdivision setting information for a subdivision process that recursively subdivides a base mesh into triangles constituting the base mesh, the subdivision setting information including information on setting a first storage location for storing edge information relating to the edges of the triangles and a second storage location for storing triangle information, which is information relating to the triangles; and encoding atlas information of 3D data including the base mesh, the subdivision setting information including the subdivision setting information. Note that the base mesh is a mesh obtained by thinning out vertices from an original mesh to be encoded, which is composed of vertices and connections that represent the three-dimensional structure of the object.
[0013] 1 is a diagram for explaining a mesh. FIG. 1 is a diagram for explaining V-DMC. FIG. 1 is a diagram for explaining management of triangle information in subdivision processing. FIG. 2 is a diagram for explaining an example of how the subdivision processing is terminated. FIG. 3 is a diagram for explaining an example of how buffers for edge information and triangle information are stored. FIG. 4 is a diagram for explaining an example of a triangle subdivision method. FIG. 5 is a diagram for explaining an example of a triangle subdivision method. FIG. 6 is a diagram for explaining an example of derivation of an edge length. FIG. 7 is a diagram for explaining an example of how a storage position is set in the subdivision processing. FIG. 8 is a diagram for explaining an example of how a cumulative sum is derived. FIG. 9 is a diagram for explaining an example of syntax related to edge length restriction. FIG. 10 is a diagram for explaining an example of syntax related to edge length restriction. FIG. 11 is a diagram for explaining an example of semantics for specifying a subdivision method. FIG. 12 is a diagram for explaining an example of a method for subdividing an interframe. FIG. 13 is a diagram for explaining an example of a subdivision pattern when a triangle is divided into three. FIG. 14 is a diagram for explaining an example of an independent partial region. FIG. 15 is a block diagram showing an example of the main configuration of an encoding device. FIG. 16 is a block diagram showing an example of the main configuration of a V-DMC encoding unit. FIG. 17 is a flowchart for explaining an example of the flow of an encoding process. FIG. 18 is a flowchart for explaining an example of the flow of a V-DMC encoding process. FIG. 19 is a block diagram showing an example of the main configuration of a decoding device. FIG. 19 is a flowchart for explaining an example of the flow of a decoding process. FIG. 1 is a block diagram showing an example of the main configuration of a V-DMC encoder. FIG. 2 is a flowchart illustrating an example of the flow of a V-DMC encoding process. FIG. 3 is a block diagram showing an example of the main configuration of a decoding device. FIG. 4 is a flowchart illustrating an example of the flow of a decoding process. FIG. 5 is a diagram showing an example of a method for subdividing a triangle. FIG. 6 is a diagram showing an example of syntax related to edge length restriction. FIG. 7 is a diagram showing an example of syntax related to edge length restriction. FIG. 8 is a diagram showing an example of syntax related to edge length restriction. FIG. 9 is a diagram showing an example of syntax related to edge length restriction. FIG. 10 is a diagram showing an example of syntax related to edge length restriction. FIG. 11 is a diagram showing an example of syntax related to edge length restriction.FIG. 1 is a diagram showing an example of syntax related to edge length restriction; FIG. 2 is a diagram showing an example of syntax related to edge length restriction; FIG. 3 is a diagram showing an example of syntax related to edge length restriction; FIG. 4 is a diagram showing an example of semantics for specifying a subdivision method; FIG. 5 is a diagram showing an example of how subdivision occurs; FIG. 6 is a diagram showing an example of an edge length determination method; FIG. 7 is a diagram showing an example of an edge length determination operation; FIG. 8 is a diagram showing an example of a comparison of subdivision methods; FIG. 9 is a block diagram showing an example of the main configuration of a computer;
[0014] Below, modes for carrying out the present disclosure (hereinafter referred to as embodiments) will be described. The description will be made in the following order: 1. Literature etc. supporting technical content and technical terminology 2. Subdivision processing 3. Buffer management of edge information and triangle information for each iteration 4. First embodiment (intra-frame case) 5. Second embodiment (inter-frame case) 6. Application example 7. Supplementary notes
[0015] <1. Literature, etc. supporting technical content and technical terminology> The scope of disclosure of the present technology includes not only the content described in the embodiments, but also the content described in the following non-patent documents, etc. that were publicly known at the time of filing, and the content of other documents referenced in the following non-patent documents.
[0016] Non-patent document 1: (mentioned above) Non-patent document 2: "Information technology . Coded representation of immersive media . Part 9: Geometry-based point cloud compression", ISO / IEC FDIS 23090-9:2022(E), w19617_d23
[0017] In other words, the contents of the above-mentioned non-patent documents and the contents of other documents referenced in the above-mentioned non-patent documents are also used as the basis for determining the support requirements.
[0018] <2. Subdivision Processing> <V-DMC> Conventionally, 3D data representing the three-dimensional structure of a three-dimensional structure (an object with a three-dimensional shape) has been available as a mesh, which represents the three-dimensional shape of the object surface by forming polygons using vertices and connections (also called edges).
[0019] As shown in the upper left of Figure 1, in a mesh, vertices 11 and connections 12 connecting these vertices 11 form polygonal planes (polygons). These polygons (also called faces) represent the surface of a three-dimensional object, i.e., the three-dimensional shape of the object. A texture 13 can be applied to each face of this mesh.
[0020] Mesh data is composed of information such as that shown in the lower part of Figure 1. Vertex information 14, shown first from the left in the lower part of Figure 1, is information indicating the three-dimensional position (three-dimensional coordinates (X, Y, Z)) of each vertex 11 that constitutes the mesh. Connection information 15, shown second from the left in the lower part of Figure 1, is information indicating each connection (edge) 12 that constitutes the mesh. A texture image 16, shown third from the left in the lower part of Figure 1, is map information for the texture 13 that is applied to each face. A UV map 17, shown fourth from the left in the lower part of Figure 1, is information indicating the correspondence between the vertices 11 and the texture 13. The UV map 17 indicates the coordinates (UV coordinates) of each vertex 11 in the texture image 16.
[0021] As an example of such a mesh coding method, there is V-DMC (Video-based Dynamic Mesh Coding) as disclosed in Non-Patent Document 1.
[0022] In V-DMC, the mesh to be encoded (referred to in this specification as the original mesh) is represented as a base mesh that is less fine (i.e., coarser) than the original mesh, and displacement vectors of the division points obtained by subdividing the base mesh, and the base mesh and displacement vectors are then encoded.
[0023] For example, suppose there is an original mesh as shown in the top row of Figure 2. In Figure 2, black dots represent vertices, and lines connecting the black dots represent connections (edges). As mentioned above, a mesh essentially forms polygons using vertices and edges, but for the sake of convenience, the mesh is described here as a group of vertices connected linearly (in series).
[0024] By decimating some of the vertices of the original mesh, a coarse (low-resolution) mesh is formed as shown in the second row from the top of Figure 2. This is called the base mesh.
[0025] By subdividing each polygon of this base mesh, vertices and edges are added, as shown in the third row from the top of Figure 2. Here, this subdivision adds vertices equal to the number of vertices thinned out from the original mesh. This results in a mesh with the same number of vertices as the original mesh. In this specification, these added vertices are also referred to as division points.
[0026] However, because the connections are updated when the vertices of the original mesh are thinned out, and the division points are formed on these updated connections (edges), the shape of this subdivided base mesh differs from the shape of the original mesh. More specifically, as shown in the bottom part of Figure 2, the positions of the division points (on the dotted lines) differ from those of the original mesh. In this specification, the difference between the positions of the division points and the positions of the vertices of the original mesh is referred to as a displacement vector.
[0027] By representing the original mesh as a base mesh and a displacement vector in this way, the number of polygons (i.e., the number of vertices and edges) is reduced. Therefore, by encoding the base mesh and the displacement vector instead of encoding the original mesh, it is possible to prevent a decrease in encoding efficiency (an increase in the amount of code).
[0028] During decoding, the bitstream is decoded using a decoding method corresponding to the encoding method, and a base mesh and displacement vectors are restored (generated). The base mesh is then subdivided, and the displacement vectors are applied to each division point to restore (generate) the original mesh. In reality, the restored mesh may contain coding artifacts, etc., and may not completely match the original mesh before encoding. However, for the sake of convenience, the following description will be given assuming that the original mesh is restored by decoding, without taking into account coding artifacts, etc. Furthermore, in the following description, polygons are assumed to be triangular. Therefore, in the following description, polygons (faces) will also be referred to as triangles.
[0029] <Subdivision of Base Mesh> Next, we will explain the subdivision of the base mesh during this decoding. As mentioned above, the base mesh has lower resolution (fewer triangles) than the original mesh, so the triangles are divided until the resolution becomes equivalent to that of the original mesh (i.e., vertices and edges are added to divide the triangles). In this specification, the process of dividing the triangles of such a mesh is also called "subdivision."
[0030] In other words, in V-DMC, a base mesh is subdivided to generate a mesh with the same level of resolution as the original mesh. This subdivision method can be arbitrary, or, for example, a method of recursively repeating subdivision of the base mesh has been used. That is, rather than generating a mesh with the same level of resolution as the original mesh through a single subdivision, triangles are recursively subdivided multiple times to gradually increase the number of triangles. This method allows the base mesh to be hierarchically subdivided. Therefore, by controlling the number of repetitions, a mesh with the desired level of resolution can be generated. Note that, in this specification, each recursively repeated subdivision is also referred to as an "iteration."
[0031] For example, in a method called midpoint subdivision, a division point (vertex) is added to bisect an edge, dividing the triangle into four parts. By recursively repeating this subdivision, a mesh with the desired level of detail is restored (generated). The following explanation will be given using midpoint subdivision as an example.
[0032] In this subdivision process, three types of information are managed: vertex information, edge information (connection information), and triangle information (polygon information). Vertex information (vertex(float3[])) includes identification information (also called vertex ID) and coordinates of each vertex. Edge information (edges(int2[])) includes identification information (also called edge ID) of each edge and identification information of the vertices located at both ends of that edge. Triangle information (triangles(int3[])) includes identification information (also called triangle ID) of each polygon (triangle) and identification information (vertex ID) of each vertex of that polygon.
[0033] As described above, in mesh subdivision, the level of detail is updated hierarchically through recursive processing. That is, vertex information, edge information, and triangle information are also updated hierarchically. In this specification, the level of detail (also referred to as LoD (Level of Detail)) is described as the lowest level, with the base mesh (LoD0) being the lowest level, and each time a triangle is divided, the level of detail increases by one level. In other words, the higher the level of detail (i.e., the smaller the triangle), the higher the level of detail (the higher the level of detail).
[0034] For example, let's say the level of resolution of a base mesh is LoD0. In this LoD0, the vertices of the base mesh are treated as LoD0 vertices, and information about those vertices is stored in the vertex information. Furthermore, polygons (triangles) formed by connecting those vertices are treated as LoD0 triangles, and information about those triangles is stored in the triangle information. Note that since edges are not formed in LoD0, information about LoD0 edges is not stored in the edge information.
[0035] A mesh in the next higher layer (LoD1) is formed by dividing the triangles of this base mesh once (dividing them into four). For example, the edges connecting the vertices of LoD0 are treated as edges of LoD1, and information about these edges is stored in the edge information. The midpoints of these LoD1 edges are treated as vertices of LoD1, and information about these vertices is stored (added) in the vertex information. The polygons (triangles) formed by connecting the vertices of LoD0 and LoD1 are treated as triangles of LoD1, and information about these triangles is stored in the triangle information (the triangle information is updated).
[0036] Similarly, a mesh in the next higher layer (LoD2) is formed by dividing (dividing) the polygons of a mesh in LoD1 once (into four). For example, the edges connecting the vertices of LoD1 are treated as edges of LoD2, and information about these edges is stored (added) to the edge information. The midpoints of these LoD2 edges are treated as vertices of LoD2, and information about these vertices is stored (added) to the vertex information. The polygons (triangles) formed by connecting the vertices of LoD0 to LoD2 are treated as triangles of LoD2, and information about these triangles is stored (updated) in the triangle information.
[0037] Such edge information and triangle information are stored in a buffer. For example, in midpoint subdivision, as shown in FIG. 3, triangle information for the central triangle divided into four is overwritten on the triangle information before subdivision, and triangle information for the remaining three triangles after subdivision is stored in the buffer so that it is contiguous to the address where the triangle information before subdivision is stored. In other words, this incremental triangle information is stored at an address with an offset so that it is contiguous to the address where the triangle information before subdivision is stored. In the case of midpoint subdivision, the increase in the number of triangles due to subdivision is fixed (four times), so calculation of such an offset is easy (fixed). In other words, buffer management of triangle information is easy. Therefore, parallelization is also easy, and parallel processing can be easily achieved using, for example, a graphics processing unit (GPU) with high parallel processing performance. In other words, faster processing can be achieved.
[0038] Edge information is also stored in the buffer. The edge and triangle information stored in the buffer is used, for example, to apply displacement vectors and attributes to the subdivided mesh.
[0039] However, repeating subdivision a predetermined number of times can result in triangles that are too small for their intended purpose, which can lead to the reconstruction and rendering processes having to process a large number of triangles in detail, unnecessarily increasing the processing load compared to the improvement in subjective quality.
[0040] Therefore, it has been considered to set a minimum limit (lower limit) on the edge length. For example, subdivision can be permitted only if the edge length does not fall below the minimum limit. This control ensures that the size of the triangle after subdivision is equal to or greater than the limit. Therefore, it is possible to prevent the increase in the load of unnecessary processing as described above.
[0041] For example, as shown in Figure 4A, if the minimum value (lower limit) of the edge length is set to "1" (min_length = 1), the subdivision of a triangle with an edge length of "6" will be terminated (ended) when the edge length of one triangle becomes "1.5". In other words, the subdivision of the next iteration will cause the edge length to fall below the lower limit of "1", so the subdivision will be terminated.
[0042] However, when the midpoint subdivision method is applied, whether or not a triangle is subdivided is controlled. Therefore, if even one edge length falls below a minimum value, the triangle will not be subdivided. This can lead to insufficient subdivision (the triangle cannot be made small enough). This can result in a reduction in the quality (resolution) of the mesh data.
[0043] Therefore, a method of controlling the division of edges rather than subdividing triangles can be considered. In other words, it controls whether or not each edge of a triangle is divided. In other words, it controls how many of the three sides (three edges) of a triangle are divided. In other words, it makes the number of divisions of a triangle (how many times a triangle is divided by subdivision), which is fixed in the case of midpoint subdivision, variable.
[0044] Hereinafter, the manner in which one triangle is divided (how many parts one triangle is divided into) will also be referred to as the "subdivision pattern." Making the number of divisions of a triangle variable as described above also means making the subdivision pattern variable. Note that subdivision techniques such as the midpoint subdivision described above will also be referred to as the "subdivision method." Examples of subdivision methods include "no subdivision," "midpoint subdivision," and "midpoint subdivision with edge length restriction." Of course, the "subdivision method" is not limited to these examples. For example, there may be methods for specific situations, such as a "subdivision method" for interframes.
[0045] For example, as shown in Figure 4B, even if one of the three edges of a triangle has an edge length of "1" and the minimum edge length is also "1," subdivision of this triangle is possible if the subdivision pattern is variable. In other words, only the other edges can be divided. Therefore, the aforementioned insufficient subdivision can be prevented, and the degradation of mesh data quality can be suppressed.
[0046] However, if the subdivision pattern is variable in this way, the increase in the number of triangles due to subdivision will be variable, which can make buffer management of triangle information more complicated. For example, as with midpoint subdivision, if the offset is calculated assuming that the number of triangles will be four times as many as with subdivision, there is a possibility that the number will not actually be four times as many as with this method of subdivision, which can result in the addresses where triangle information is stored being scattered (creating unused areas).
[0047] For example, if one triangle is subdivided by midpoint subdivision, as shown in Figure 5A, three pieces of edge information are stored in the buffer at LoD0 and nine at LoD1. The same is true for triangle information, as shown in Figure 5B. One piece of triangle information is stored in the buffer at LoD0 and four at LoD1. If a triangle is divided into two or three pieces, storing edge information and triangle information in the buffer as in the example of Figure 5 could result in empty areas in the buffer where no edge information or triangle information is stored, as shown by the gray area in Figure 5A and Figure 5B.
[0048] This may increase the buffer capacity required to store edge information and triangle information, making it more difficult to correctly manage what information is stored where in the buffer, and may make buffer management of edge information and triangle information more complicated.
[0049] To prevent unused areas and limit the increase in buffer capacity, more advanced buffer management may be necessary. This means that buffer management of edge and triangle information may become complicated, increasing the load on the subdivision process. Furthermore, the complicated processing may make it difficult to parallelize the subdivision process. This may result in the GPU becoming unavailable for subdivision processing.
[0050] <3. Buffer management of edge information and triangle information for each iteration> <Method 1> Therefore, as shown in the top row of the table in Figure 6, in each iteration of the triangle subdivision process with a variable subdivision pattern, the storage locations for the edge information and triangle information are set and the triangles are subdivided (Method 1).
[0051] For example, a first information processing device may include a storage position setting unit that sets a first storage position for storing edge information about the edges of a triangle and a second storage position for storing triangle information, which is information about the triangle, in each iteration of a subdivision process that recursively subdivides the triangles that make up a base mesh; a subdivision processing unit that, as the processing for the current iteration of the subdivision process, divides the edges and subdivides the triangles on the mesh generated by the processing of the previous iteration; and an information storage unit that stores the edge information of the edges generated in the current iteration in the first storage position of a buffer and stores the triangle information of the triangles generated in the current iteration in the second storage position of the buffer.
[0052] Furthermore, the first information processing method executed by the first information processing device may include setting a first storage location for storing edge information relating to the edges of the triangles and a second storage location for storing triangle information, which is information relating to the triangles, in each iteration of a subdivision process that recursively repeats subdivision of the triangles that make up the base mesh, and as the processing of the current iteration of the subdivision process, dividing the edges and subdividing the triangles on the mesh generated by the processing of the previous iteration, storing the edge information of the edges generated in the current iteration in the first storage location of a buffer, and storing the triangle information of the triangles generated in the current iteration in the second storage location of the buffer.
[0053] Furthermore, the first program may cause a computer to execute processing including: in each iteration of a subdivision process that recursively repeats subdivision of triangles that constitute a base mesh, setting a first storage location for storing edge information about the edges of the triangles and a second storage location for storing triangle information, which is information about the triangles; and, as processing for the current iteration of the subdivision process, dividing the edges and subdividing the triangles on the mesh generated by the processing of the previous iteration; storing the edge information of the edges generated in the current iteration in the first storage location of a buffer; and storing the triangle information of the triangles generated in the current iteration in the second storage location of the buffer.
[0054] The base mesh is a mesh in which vertices are thinned out from the original mesh to be coded, which is made up of vertices and connections that represent the three-dimensional structure of the object.
[0055] That is, instead of a subdivision method in which the number of divisions of a triangle is fixed, such as midpoint subdivision, a subdivision method in which the subdivision pattern is variable, as described above, is adopted.
[0056] <Subdivision Pattern> Figure 7 shows an example of how to subdivide (split) a triangle. For example, assume that triangle T1, whose vertices are points P1, P2, and P3, as shown in the upper left of Figure 7, is the target of subdivision processing. Triangle T1 is surrounded by edges E1, E2, and E3.
[0057] For example, if we do not split any of the edges (E1, E2, E3) of this triangle T1, no subdivision will occur, i.e., triangle T1 will remain.
[0058] Furthermore, when one of the edges (E1, E2, E3) of triangle T1 is divided, triangle T1 is subdivided by dividing (bisecting) the longest edge (E2). That is, as shown in the upper right of Figure 7, edge E2 is bisected into edges E4 and E5, and point P4 is added. Point P4 is then connected to the opposite vertex, point P2, and edge E6 is added. That is, triangle T1 is subdivided into triangle T2, whose vertices are points P1, P2, and P4 (surrounded by edges E1, E4, and E6), and triangle T3, whose vertices are points P2, P3, and P4 (surrounded by edges E3, E5, and E6).
[0059] Furthermore, when two of the edges (E1, E2, E3) of triangle T1 are divided, triangle T1 is subdivided by dividing (bisecting) the first and second longest edges (E1, E2). That is, as shown in the lower left of Figure 7, edge E2 is bisected into edges E4 and E5, and point P4 is added. Point P4 is then connected to point P2, the opposite vertex, and edge E6 is added. Edge E1 is also bisected into edges E7 and E8, and point P5 is added. Point P5 is then connected to point P4, the opposite vertex, and edge E9 is added. That is, triangle T1 is subdivided into triangle T3 whose vertices are points P2, P3, and P4 (surrounded by edges E3, E5, and E6), triangle T4 whose vertices are points P1, P4, and P5 (surrounded by edges E4, E7, and E9), and triangle T5 whose vertices are points P2, P4, and P5 (surrounded by edges E6, E8, and E9).
[0060] Furthermore, when three of the edges (E1, E2, E3) of triangle T1 are divided, triangle T1 is subdivided so that all edges (E1, E2, E3) are divided (bisected). That is, as shown in the lower right of Figure 7, the division is performed in the same manner as in the case of midpoint subdivision. That is, edge E1 is bisected into edges E7 and E8, and point P5 is added. Edge E2 is bisected into edges E4 and E5, and point P4 is added. Edge E3 is bisected into edges E10 and E11, and point P6 is added. Points P4, P5, and P6 are then connected to each other, and edges E9, E12, and E13 are added. That is, triangle T1 is subdivided into triangle T4 having points P1, P4, and P5 as vertices (surrounded by edges E4, E7, and E9), triangle T6 having points P4, P5, and P6 as vertices (surrounded by edges E9, E12, and E13), triangle T7 having points P2, P5, and P6 as vertices (surrounded by edges E8, E10, and E13), and triangle T8 having points P3, P4, and P6 as vertices (surrounded by edges E5, E11, and E12).
[0061] In this way, the increase in the number of pieces of edge information and triangle information due to subdivision differs depending on the number of edges to be divided.
[0062] By subdividing a triangle as described above, new edges are generated in addition to the edges that are bisected. When one of the edges of triangle T1 is divided, as in the example shown in the upper right of Figure 7, edge E6 is added. When two of the edges of triangle T1 are divided, as in the example shown in the lower left of Figure 7, edges E6 and E9 are added. When three of the edges of triangle T1 are divided, as in the example shown in the lower right of Figure 7, edges E9, E12, and E13 are added. The length (edge length) β of edge E9 is calculated from the similarity of the edges, as shown in Figure 8, where the edge length of edge E3 is B (known). The edge length α of edge E6 can be derived using the cosine law as shown in the following equation (1). As shown in the example of Figure 8, the edge lengths of edges E4 and E5 are A (known), the edge length of edge E3 is B (known), the edge length of edge E9 is C (= β = B / 2) (known), and the edge length of edges E7 and E8 is D (known).
[0063] α=2D^2 + 2C^2 - A^2 ...(1)
[0064] In equation (1), "^" indicates an exponent. For example, "A^2" indicates "A squared." The edge lengths of edges E12 and E13 are D and A, respectively, based on similar shapes. In this way, it is possible to derive not only the edge lengths of the divided edges but also the edge lengths of the newly added edges by subdivision. Therefore, the division of these edges can also be controlled by the lower limit value.
[0065] In the following, the (two) edges obtained by dividing an existing edge in such subdivision are also referred to as "divided edges," and the edge added in such subdivision is also referred to as "new edge."
[0066] <Setting Storage Locations for Each Iteration> As described above, when the triangle subdivision pattern is variable, the increase in the number of edge information and triangle information due to subdivision is also variable. Therefore, for each subdivision iteration, a first storage location for storing edge information and a second storage location for storing triangle information are set. That is, as shown in FIG. 9 , before each iteration of subdivision, storage locations for the edge information and triangle information obtained by the subdivision of that iteration are set. The edge information and triangle information actually obtained by the subdivision of that iteration are stored in the set storage locations in the buffer. This allows edge information and triangle information to be stored in the buffer without generating unnecessary free space. Therefore, the increase in buffer capacity required to store edge information and triangle information can be suppressed without requiring complex processing.
[0067] Furthermore, by setting the storage locations, the storage locations of the edge information and triangle information become known, and therefore, the information stored in the buffer can be easily and correctly managed. In other words, buffer management of the edge information and triangle information can be made easier. Therefore, the subdivision process can be more easily parallelized. Therefore, for example, by using a GPU to perform the subdivision of each triangle through parallel processing, the subdivision process can be performed more efficiently.
[0068] As described above, by applying the above-described method 1, the first information processing apparatus can suppress an increase in the load of the subdivision process.
[0069] <Method of Setting Storage Locations> Any method may be used to set the storage locations of edge information (first storage locations) and triangle information (second storage locations).
[0070] For example, the storage location of edge information may be set based on the number of divided edges. For example, in the first information processing device, a storage location setting unit may set a first storage location for edge information of a divided edge based on the number of divided edges that are edges after division in the current iteration processing. By setting the storage location of the divided edge based on the number of divided edges, the first information processing device can set an appropriate storage location according to the number of divided edges. For example, the first information processing device can prevent unnecessary free space from being generated in the buffer and prevent an increase in buffer capacity required to store edge information and triangle information.
[0071] Alternatively, divisible edges may be determined based on an edge length limit (i.e., a lower limit value of the edge length) for subdivision, and the number of divided edges obtained by dividing the divisible edges may be determined. For example, in the first information processing device, the storage position setting unit may derive divided edges based on the edge length limit, and set first storage positions for edge information of the divided edges based on the cumulative sum of the number of divided edges. This allows the first information processing device to more easily derive the number of divided edges. That is, the first information processing device can more easily set first storage positions for edge information of the divided edges.
[0072] Furthermore, a storage location for edge information of a new edge may be set based on the cumulative sum of the number of divided edges and the cumulative sum of the number of triangles after subdivision. For example, in the first information processing device, a storage location setting unit may set a first storage location for edge information of a new edge, which is an edge generated by the current iteration processing, based on the cumulative sum of the number of divided edges and the cumulative sum of the number of triangles after subdivision in the current iteration processing. This allows the first information processing device to more easily set a first storage location for edge information of a new edge.
[0073] Furthermore, the storage location of the triangle information may be set based on the number of triangles. For example, in the first information processing device, the storage location setting unit may set the second storage location based on the number of triangles after subdivision in the current iteration. This allows the first information processing device to set an appropriate storage location depending on the number of triangles. For example, the first information processing device can prevent unnecessary free space from being generated in the buffer, and can prevent an increase in the buffer capacity required to store edge information and triangle information.
[0074] Alternatively, a triangle subdivision pattern may be determined based on an edge length limit (i.e., a lower limit value of the edge length) for the subdivision, and the number of triangles after the subdivision may be determined. For example, in the first information processing device, the storage location setting unit may derive a triangle subdivision pattern based on the edge length limit, and set the second storage location based on the cumulative sum of the number of triangles after the subdivision in the current iteration processing to which the subdivision pattern is applied. This allows the first information processing device to more easily derive the number of triangles. In other words, the first information processing device can more easily set the second storage location.
[0075] For example, let us say that the buffer that stores edge information for the mesh after subdivision in the current iteration is "edges[]" and its size is "EdgeCount." Let us also say that the buffer that stores triangle information for the mesh after subdivision in the current iteration is "triangles[]" and its size is "TriangleCount." Let us also say that the buffer that stores edge information for the mesh after subdivision in the next iteration is "NextEdges[]" and its size is "NextEdgeCount." Let us also say that the buffer that stores triangle information for the mesh after subdivision in the next iteration is "NextTriangles[]" and its size is "NextTriangleCount." Let us also say that "SubdivEdge[e]" is a parameter that indicates whether the e-th edge will be split after subdivision. For example, if the edge is split, the value of SubdivEdge[e] is "1," and if the edge is not split, the value of SubdivEdge[e] is "0."
[0076] The parameter "NextOffsetEdge[ ]" is defined as in the following equation (2).
[0077] ...(2)
[0078] In this case, the destination for writing edge information of the divided edges generated by dividing the e-th edge can be expressed as in the following formula (3) when SubdivEdge[e] > 0. Note that when SubdivEdge[e] == 0, no division occurs, and therefore no edge information is written.
[0079] ...(3)
[0080] The parameter "SubdivPattern[t]" indicates the number of triangles generated by dividing the t-th triangle. For example, if the subdivision pattern is N, the value of this parameter "SubdivPattern[t]" is "N+1".
[0081] Then, the parameter "NextOffsetTri[]" is defined as in the following equation (4).
[0082] ...(4)
[0083] In this case, the destination to write the triangle information of the triangle generated by dividing the t-th triangle can be expressed as in the following equation (5).
[0084] ...(5)
[0085] The destination to write the edge information of the new edge generated by dividing the t-th triangle can be expressed by the following equations (6) to (8).
[0086] ...(6) ... (7) ...(8)
[0087] By the above calculation, the first storage position and the second storage position can be set.
[0088] The cumulative sum can be calculated by sequentially adding up the number of triangles added by dividing each triangle, as shown in Fig. 10. The cumulative sum calculation in the GPU can also be realized using existing techniques.
[0089] <Transmission of Edge Length Limit> The edge length limit applied to the subdivision (the lower limit of the edge length for terminating the subdivision) may be set by another device such as an encoding device and transmitted from there. In other words, information on the edge length limit transmitted from another device may be obtained, and subdivision may be performed or a storage location may be set according to that information (edge length limit).
[0090] For example, the first information processing device may further include a subdivision setting information acquisition unit that acquires subdivision setting information related to the subdivision process. The storage location setting unit may then set the first storage location and the second storage location based on the edge length limit included in the subdivision setting information. This allows the first information processing device to set storage locations for edge information and triangle information in accordance with the edge length limit set in the other device.
[0091] Note that this edge length limit may be set for any data unit of a mesh. For example, this edge length limit may be set for each sequence of a mesh. FIG. 11 is a diagram showing an example of the syntax of atlas information in a sequence parameter set. In this syntax, the parameter "asve_subdivision_min_edge_length" indicates the lower limit value of the edge length set for each sequence. By applying such a parameter, the first information processing device can change the lower limit value of the edge length for each sequence.
[0092] The edge length limit may also be set for each frame of a mesh. Figure 12 shows an example of the syntax of atlas information for a frame parameter set. In this syntax, the parameter "afve_subdivision_min_edge_length_per_submesh[i]" indicates the lower limit of the edge length set for each frame. By applying such a parameter, the first information processing device can change the lower limit of the edge length for each frame.
[0093] The edge length limit may also be set for each patch, which is a partial region of a mesh and is a unit projected onto a two-dimensional region. Figure 13 shows an example of the syntax of a mesh patch data unit. In this syntax, the parameter "mdu_subdivision_min_edge_length[tileID][patchIdx]" indicates the lower limit of the edge length set for each patch. By applying such a parameter, the first information processing device can change the lower limit of the edge length for each patch.
[0094] Furthermore, a parameter indicating a subdivision method may be transmitted, and only when the parameter specifies the application of a subdivision method with an edge length limit, a parameter indicating a lower limit value for the edge length as described above may be transmitted. The parameter "asve_subdivision_method" shown in the syntax example of FIG. 11 is a parameter that is set for each syntax and specifies the subdivision method to be applied. The parameter "afve_subdivision_method" shown in the syntax example of FIG. 12 is a parameter that is set for each frame and specifies the subdivision method to be applied. The parameter "mdu_subdivision_method[tileID][patchIdx]" shown in the syntax example of FIG. 13 is a parameter that is set for each patch and specifies the subdivision method to be applied.
[0095] An example of the semantics of these parameters is shown in Figure 14. As shown in Figure 14, when these parameters are "2", midpoint subdivision with edge length restrictions is applied. That is, as in the syntax examples shown in Figures 11 to 13, when the values of these parameters are "2", parameters indicating the lower limit value of edge length may be transmitted. In this way, it is possible to prevent the transmission of unnecessary parameters indicating the lower limit value of edge length, and to prevent an increase in the data amount of atlas information.
[0096] This edge length restriction may be performed, for example, by an encoding device that encodes mesh data. That is, for example, the encoding device may provide information regarding the edge length restriction to a decoding device that decodes the mesh data. In other words, the encoding device may generate setting information regarding the setting of storage locations for edge information and triangle information and provide the setting information to the decoding device.
[0097] For example, the second information processing device may include a subdivision setting unit that generates subdivision setting information, the subdivision setting information including setting information for a subdivision process that recursively repeats subdivision of triangles that constitute a base mesh, and information regarding the setting of a first storage location that stores edge information about the edges of the triangles and a second storage location that stores triangle information that is information about the triangles; and an atlas information encoding unit that encodes atlas information of 3D data including the base mesh, including the subdivision setting information.
[0098] For example, the second information processing method executed by the second information processing device may include generating subdivision setting information for a subdivision process that recursively repeats subdivision of triangles constituting a base mesh, the subdivision setting information including information regarding the setting of a first storage location that stores edge information related to the edges of the triangles and a second storage location that stores triangle information that is information related to the triangles, and encoding atlas information of 3D data including the base mesh that includes the subdivision setting information.
[0099] For example, the second program may cause a computer to execute a process including generating subdivision setting information for a subdivision process that recursively repeats subdivision of triangles constituting a base mesh, the subdivision setting information including information regarding the setting of a first storage location that stores edge information related to the edges of the triangles and a second storage location that stores triangle information that is information related to the triangles, and encoding atlas information of 3D data including the base mesh that includes the subdivision setting information.
[0100] The base mesh is a mesh in which vertices are thinned out from the original mesh to be coded, which is made up of vertices and connections that represent the three-dimensional structure of the object.
[0101] By doing so, the first information processing device can acquire the atlas information (subdivision setting information thereof) and, based on the atlas information (subdivision setting information thereof), subdivide the mesh and set the first storage location and the second storage location. Therefore, edge information and triangle information can be stored in the buffer without generating unnecessary free space. Therefore, an increase in the buffer capacity required to store edge information and triangle information can be suppressed without requiring complex processing. Furthermore, buffer management of edge information and triangle information can be made easier.
[0102] That is, by applying the above-described method 1, the second information processing apparatus can suppress an increase in the load of the subdivision process.
[0103] The subdivision setting information may include any information, and may include, for example, the edge length limit applied to the subdivision process, as described above. The edge length limit may be set in any data unit. For example, as in the syntax example of FIG. 11, the edge length limit may be set for each mesh sequence. Alternatively, as in the syntax example of FIG. 12, the edge length limit may be set for each mesh frame. Alternatively, as in the syntax example of FIG. 13, the edge length limit may be set for each mesh patch.
[0104] <Method 1-1> When the above-mentioned Method 1 is applied, the subdivision method for interframes may be set as shown in the second row from the top of the table in Figure 6 (Method 1-1). In the case of interframes, instead of a base mesh, (encoded data of) a motion vector indicating the change in vertex position from the base mesh of the key frame is transmitted from the encoding side to the decoding side. In other words, in the decoding device, the transmitted motion vector is applied to the base mesh of the key frame to generate (restore) the base mesh of the current frame.
[0105] When subdividing such an interframe mesh, for example, as shown in Figure 15, the subdivision pattern may be set for the base mesh to which the motion vector is applied, or the subdivision pattern applied to the key frame may be applied to the base mesh to which this motion vector is applied.
[0106] <Method 1-1-1> For example, when the above-mentioned Method 1-1 is applied, a subdivision pattern may be set using a base mesh to which a motion vector is applied, as shown in the third row from the top of the table in Figure 6 (Method 1-1-1).
[0107] For example, in the first information processing device, the subdivision processing unit may, in the first iteration, set a subdivision pattern for the triangles based on the base mesh of the current frame, which is obtained by applying the motion vector of the current frame to the base mesh of the key frame, and apply the subdivision pattern to divide the edges of the base mesh of the current frame and subdivide the triangles. This allows subdivision to be performed in the same way as in the case of intraframes. Therefore, more appropriate subdivision can be performed on the interframe mesh, making the triangles of the entire mesh more uniform. This prevents degradation of mesh quality.
[0108] <Method 1-1-2> Furthermore, when the above-mentioned method 1-1 is applied, the subdivision pattern of the key frame may be used to subdivide the mesh of this current frame, as shown in the fourth row from the top of the table in Figure 6 (Method 1-1-2).
[0109] For example, in the first information processing device, the subdivision processing unit may apply a subdivision pattern of a triangle of a key frame as the first iteration process, and divide the edges of the base mesh of the current frame to which the motion vector of the current frame is applied to the base mesh of that key frame, and perform triangle subdivision. This makes it possible to omit processes such as setting the subdivision pattern, thereby suppressing an increase in the load of the subdivision process.
[0110] <Specifying the Interframe Subdivision Method> The subdivision method for such an interframe mesh may be specified by another device. For example, an encoding device that encodes mesh data may set the subdivision method for this interframe mesh and transmit information specifying the subdivision method to a decoding device. The decoding device may then apply the specified subdivision method.
[0111] For example, the first information processing device may further include a subdivision setting information acquisition unit that acquires subdivision setting information related to the subdivision process, and the subdivision processing unit may determine, based on the acquired subdivision setting information, whether to set a triangle subdivision pattern based on a base mesh of a current frame to which a motion vector of the current frame is applied to a base mesh of a key frame, or to apply a triangle subdivision pattern of a key frame, in the first iteration of the process.
[0112] In the second information processing device, the subdivision setting information generated by the subdivision setting unit may include information specifying whether to set a triangle subdivision pattern based on a base mesh of a current frame to which a motion vector of the current frame is applied to a base mesh of a key frame in the first iteration process, or to apply a triangle subdivision pattern of a key frame. Such subdivision setting information may be supplied to the first information processing device.
[0113] By doing so, for example, the decoding device can subdivide the interframe meshes using the subdivision method set by the encoding device, and therefore the decoding device can more easily apply a more appropriate subdivision method set by the encoding device.
[0114] <Method 1-2> When subdivision is performed to divide a triangle whose vertices are in the order (a, b, c) into three parts, the subdivision pattern shown in FIG. 16A and the subdivision pattern shown in FIG. 16B are possible. In FIGS. 16A and 16B, new edges generated by subdivision are indicated by dotted lines. In the subdivision pattern shown in FIG. 16A, a new edge passing through vertex b is formed by the subdivision. In the subdivision pattern shown in FIG. 16B, a new edge passing through vertex c is formed by the subdivision. When a subdivision pattern (also called subdivision pattern 2) that divides a triangle into three parts is selected, one of these subdivision patterns is applied.
[0115] In this case, it is possible to select which subdivision pattern to apply. That is, when method 1 is applied, a subdivision pattern belonging to subdivision pattern 2 may be set (method 1-2), as shown in the fifth row from the top of the table in FIG.
[0116] <Method 1-2-1> In this case, any subdivision pattern may be selected. For example, when Method 1-2 is applied, the subdivision pattern may be selected so that the length of the divided edges generated by the subdivision is longer, as shown in the sixth row from the top of the table in FIG. 6 (Method 1-2-1).
[0117] By selecting a subdivision pattern in this way, the number of subdivision iterations can be increased, thereby suppressing insufficient subdivision and generating a more highly detailed mesh.
[0118] <Method 1-2-2> Furthermore, when Method 1-2 is applied, the subdivision pattern may be selected so that the length of the dividing edge generated by the subdivision becomes shorter, as shown in the seventh row from the top of the table in FIG. 6 (Method 1-2-2).
[0119] By selecting a subdivision pattern in this way, the number of subdivision iterations can be further reduced. Therefore, the increase in the load of the subdivision process can be further suppressed. In addition, since the increase in the number of vertices and edges can be suppressed, the increase in the amount of mesh data can be suppressed.
[0120] <Method 1-2-3> When Method 1-2 is applied, a subdivision pattern may be selected based on the order of the vertices, as shown in the eighth row from the top of the table in Fig. 6. For example, a subdivision pattern may be selected so that a new edge is formed at a vertex that is younger in order (Method 1-2-3).
[0121] By selecting a subdivision pattern in this way, it becomes unnecessary to calculate edge lengths, and therefore it is possible to further suppress an increase in the load of subdivision processing.
[0122] <Transmission of Designation Information> Note that any method for selecting such a subdivision pattern may be used and is not limited to these examples. Alternatively, multiple candidate methods for selecting such a subdivision pattern may be prepared, and a more appropriate method may be selected and applied from the candidate methods. For example, a desired method may be selected and applied from the three methods described above (a method for selecting a subdivision pattern that increases the length of the divided edges generated by subdivision, a method for selecting a subdivision pattern that decreases the length of the divided edges generated by subdivision, and a method for selecting a subdivision pattern that forms a new edge at a vertex that is younger in order). This selection may be performed at any timing and frequency. Furthermore, this selection may be performed based on any information.
[0123] For example, an external device (another device) may specify a method for selecting the subdivision pattern. That is, for example, the first information processing device may further include a subdivision setting information acquisition unit that acquires subdivision setting information related to the subdivision process. Then, the subdivision processing unit may set the subdivision pattern when dividing the triangle into three parts based on the acquired subdivision setting information.
[0124] For example, in the second information processing device, the subdivision setting information generated by the subdivision setting unit may include designation information specifying a subdivision pattern when dividing a triangle into three. For example, the designation information may designate a subdivision pattern in which the divided edges generated by the subdivision of the triangle are longer. Alternatively, the designation information may designate a subdivision pattern in which the divided edges generated by the subdivision of the triangle are shorter. Alternatively, the designation information may designate a subdivision pattern in which the vertices of new edges generated by the subdivision of the triangle have smaller identification numbers.
[0125] By doing so, for example, the encoding device can specify a subdivision pattern in which the decoding device divides one triangle into three, thereby suppressing an increase in the load of the subdivision process on the decoding device.
[0126] <Method 1-3> Although it has been described above that the edge length limit for subdivision may be set for each sequence, frame, or patch, the setting of the edge length limit for subdivision may be performed at any frequency (data unit) and is not limited to these examples. For example, as shown in the bottom row of the table in Figure 6, the edge length limit may be set for each independent subregion of the mesh (Method 1-3).
[0127] An "independent partial region of a mesh" refers to a region formed by a set of triangles connected by sharing edges. In other words, a region that is not connected to triangles in other regions by sharing edges (a region independent from other regions), such as region A, region B, and region C shown in Figure 17, is called an "independent partial region of a mesh." This independent partial region may be connected to other regions by sharing vertices, such as region B and region C in Figure 17.
[0128] An edge length limit for subdivision may be set for each such independent partial region. For example, in a first information processing device, the edge length limit included in the subdivision setting information acquired by the subdivision setting information acquisition unit may be set for each independent partial region that is a partial region of a mesh and whose edges do not contact other regions. For example, in a second information processing device, the edge length limit applied to the subdivision processing, included in the subdivision setting information set by the subdivision setting unit, may be set for each independent partial region that is a partial region of a mesh and whose edges do not contact other regions.
[0129] In such an independent subregion, the size of the triangles may be different from that of other subregions. Therefore, by setting an edge length limit for each independent subregion as described above, it is possible to set a more appropriate edge length limit for that independent subregion, thereby preventing a decrease in mesh quality.
[0130] <Scope of application of explanation> In this specification, an explanation given for a higher-level method also applies to lower-level methods belonging to that method, unless a contradiction arises. For example, when it is explained that "Method 1 may be applied," it means that any of Method 1-1, Method 1-2, and Method 1-3 may be applied. Of course, lower-level methods (e.g., Method 1-1-1, Method 1-1-2, Method 1-2-1, Method 1-2-2, Method 1-2-3, etc.) may also be applied.
[0131] <Combination> Each of the above-described methods may be applied in combination with any other method as long as no contradiction occurs. Three or more methods may be applied in combination. Furthermore, techniques that can be combined may include not only those shown in the table of FIG. 6 as "methods," but also all elements described in this specification. Furthermore, each of the above-described methods may be applied in combination with methods other than those described above.
[0132] <4. First Embodiment> <Encoding Device> The present technology can be applied to any device. For example, the present technology can be applied to an encoding device that encodes meshes and generates a bitstream. FIG. 18 is a block diagram showing an example of the configuration of an encoding device, which is one aspect of an information processing device to which the present technology is applied. The encoding device 300 shown in FIG. 18 is a device that encodes meshes and generates the corresponding bitstream. Therefore, the encoding device 300 can also be said to be a bitstream generating device that generates a bitstream. Note that FIG. 18 shows a main example of the configuration when processing intraframes.
[0133] Fig. 18 shows the main processing units, data flows, etc., but is not limited to all that is shown in Fig. 18. In other words, in encoding device 300, there may be processing units that are not shown as blocks in Fig. 18, and there may be processing and data flows that are not shown as arrows, etc. in Fig. 18.
[0134] The encoding device 300 encodes a mesh using a method essentially similar to the V-DMC method described in the aforementioned non-patent document, except that the present technology is applied. For example, the encoding device 300 acquires an original mesh to be encoded and an attribute map including a texture corresponding to the original mesh. Note that the original mesh includes not only information about the mesh's geometry but also information indicating the correspondence with the attribute map (e.g., a UV list). The encoding device 300 encodes the original mesh and attribute map using the V-DMC method, generates a V-DMC bitstream, and outputs it.
[0135] 18, the encoding device 300 includes a preprocessing unit 311 and a V-DMC encoding unit 312. The preprocessing unit 311 performs preprocessing before encoding. As shown in FIG. 15, the preprocessing unit 311 includes a base mesh generation unit 321, an atlas information generation unit 322, a subdivision setting unit 323, and a displacement vector generation unit 324.
[0136] The base mesh generation unit 321 performs processing related to the generation of a base mesh. For example, the base mesh generation unit 321 may obtain an original mesh to be input to the encoding device 300. The base mesh generation unit 321 may also perform decimation processing (thinning out vertices) on the original mesh to generate a base mesh. The base mesh generation unit 321 may supply the generated base mesh together with the original mesh to the atlas information generation unit 322.
[0137] The atlas information generation unit 322 performs processing related to the generation of atlas information corresponding to a base mesh. For example, the atlas information generation unit 322 may acquire a base mesh or an original mesh supplied from the base mesh generation unit 321. The atlas information generation unit 322 may generate atlas information by, for example, UV unwrapping the base mesh. The atlas information generation unit 322 may exchange information with the subdivision setting unit 323. For example, the atlas information generation unit 322 may acquire subdivision setting information supplied from the subdivision setting unit 323. The atlas information generation unit 322 may include the subdivision setting information in the atlas information. The atlas information generation unit 322 may supply the generated atlas information (including the subdivision setting information) to the displacement vector generation unit 324 together with the base mesh, etc.
[0138] The subdivision setting unit 323 executes processing related to subdivision settings. For example, the subdivision setting unit 323 may generate subdivision setting information, which is setting information for subdivision processing. Furthermore, when generating the subdivision setting information, the subdivision setting unit 323 may acquire information such as a base mesh or an original mesh supplied from the atlas information generation unit 322 and use the base mesh or the original mesh. The subdivision setting unit 323 may supply the generated subdivision setting information to the atlas information generation unit 322.
[0139] The displacement vector generation unit 324 performs processing related to the generation of displacement vectors. For example, the displacement vector generation unit 324 may acquire a base mesh, atlas information, etc. supplied from the atlas information generation unit 322. Alternatively, the displacement vector generation unit 324 may acquire an original mesh input to the encoding device 300. Alternatively, the displacement vector generation unit 324 may use this information to generate displacement vectors that displace the vertices of the subdivided base mesh. The displacement vector generation unit 324 may supply the generated displacement vectors to the V-DMC encoding unit 312 together with the base mesh, atlas information (including subdivision setting information), etc.
[0140] The V-DMC encoder 312 performs processing related to encoding of V-DMC data. For example, the V-DMC encoder 312 may acquire an original mesh input to the encoding device 300. The V-DMC encoder 312 may also acquire a base mesh, a displacement vector, atlas information (including subdivision setting information), and the like, supplied from the displacement vector generator 324. The V-DMC encoder 312 may also acquire an attribute map input to the encoding device 300. The V-DMC encoder 312 may use this information to encode the atlas information (including subdivision setting information), the base mesh, the displacement vector, and the attribute map, respectively, and generate the respective encoded data. Therefore, the V-DMC encoder 312 can also be referred to as an encoder. The V-DMC encoder 312 may also multiplex these encoded data as substreams to generate a single bitstream. This bitstream is also referred to as a V-DMC bitstream. Therefore, the V-DMC encoder 312 can also be called a bitstream generator (or a V-DMC bitstream generator). The V-DMC encoder 312 may output the generated V-DMC bitstream to the outside of the encoding device 300.
[0141] <V-DMC Encoder> Fig. 19 is a block diagram showing an example of the main configuration of the V-DMC encoder 312. Note that Fig. 19 shows an example of the main configuration when processing interframes. Fig. 19 shows the main processing units, data flows, etc., and is not necessarily all that is shown in Fig. 19. In other words, the V-DMC encoder 312 may include processing units that are not shown as blocks in Fig. 19, and may include processing and data flows that are not shown as arrows, etc. in Fig. 19.
[0142] As shown in FIG. 19, the V-DMC encoding unit 312 has an atlas information encoding unit 351, a base mesh encoding unit 352, a displacement vector correction unit 353, a displacement vector encoding unit 354, a mesh reconstruction unit 355, an attribute map conversion unit 356, an attribute encoding unit 357, and a multiplexing unit 358.
[0143] The atlas information encoding unit 351 performs processing related to encoding of atlas information (including subdivision setting information). For example, the atlas information encoding unit 351 may acquire atlas information supplied from the displacement vector generation unit 324. This atlas information includes the subdivision setting information generated by the subdivision setting unit 323. The atlas information encoding unit 351 may also encode the acquired atlas information using a predetermined encoding method to generate encoded data of the atlas information. The atlas information encoding unit 351 may also supply the generated encoded data of the atlas information to the multiplexing unit 358.
[0144] The base mesh encoding unit 352 performs processing related to encoding of the base mesh. For example, the base mesh encoding unit 352 may acquire a base mesh supplied from the displacement vector generation unit 324. The base mesh encoding unit 352 may acquire atlas information supplied from the displacement vector generation unit 324. The base mesh encoding unit 352 may quantize the acquired base mesh and encode it using a predetermined encoding method (e.g., Draco) to generate encoded data of the base mesh. In this case, the base mesh encoding unit 352 may encode the base mesh based on the acquired atlas information. The base mesh encoding unit 352 may supply the generated encoded data of the base mesh to the displacement vector correction unit 353. The base mesh encoding unit 352 may also supply the generated encoded data of the base mesh to the multiplexing unit 358.
[0145] The displacement vector correction unit 353 performs processing related to the correction of the displacement vector. For example, the displacement vector correction unit 353 may acquire a base mesh and a displacement vector supplied from the displacement vector generation unit 324. Alternatively, the displacement vector correction unit 353 may acquire encoded data of the base mesh supplied from the base mesh encoding unit 352. The displacement vector correction unit 353 may correct the displacement vector based on this information. For example, the displacement vector correction unit 353 may decode the acquired encoded data of the base mesh, compare the base mesh before and after encoding to determine encoding distortion of the base mesh, and correct the displacement vector in accordance with the encoding distortion. The displacement vector correction unit 353 may supply the corrected displacement vector to the displacement vector encoding unit 354. Alternatively, the displacement vector correction unit 353 may dequantize the decoded base mesh and supply it to the mesh reconstruction unit 355.
[0146] The displacement vector encoding unit 354 performs processing related to encoding of displacement vectors. For example, the displacement vector encoding unit 354 may acquire displacement vectors supplied from the displacement vector correction unit 353. The displacement vector encoding unit 354 may also generate a displacement map by wavelet transforming the displacement vectors, quantizing them, and packing them into a two-dimensional region. The displacement vector encoding unit 354 may also generate a displacement video in which the displacement map is used as frame images. In other words, the displacement video is a moving image in which the frame images are a displacement map, which is a two-dimensional region in which displacement vectors are packed. The displacement vector encoding unit 354 may also encode the generated displacement video using a predetermined encoding method for 2D moving images to generate encoded data of displacement vectors (displacement video). The displacement vector encoding unit 354 may also supply the encoded data of the displacement vectors generated in this manner to the multiplexing unit 358. The displacement vector encoding unit 354 may also decode the generated encoded data, unpack the displacement vectors from the displacement map, and dequantize the displacement vectors. The displacement vector encoding unit 354 may supply the dequantized displacement vector to the mesh reconstruction unit 355 .
[0147] The displacement vector encoding unit 354 may arithmetically encode the displacement vector to generate encoded data of the displacement vector. In this case, the displacement vector encoding unit 354 may arithmetically decode the encoded data to generate a displacement vector and supply the generated displacement vector to the mesh reconstruction unit 355.
[0148] The displacement vector encoding unit 354 may also acquire atlas information supplied from the displacement vector generation unit 324 and encode the displacement vector based on the acquired atlas information.
[0149] The mesh reconstruction unit 355 performs processing related to mesh reconstruction. For example, the mesh reconstruction unit 355 may acquire a base mesh supplied from the displacement vector correction unit 353. The mesh reconstruction unit 355 may also acquire a displacement vector supplied from the displacement vector encoding unit 354. The mesh reconstruction unit 355 may use these to reconstruct a mesh. The mesh reconstruction unit 355 may supply the reconstructed mesh to the attribute map conversion unit 356.
[0150] The attribute map conversion unit 356 performs processing related to attribute map conversion. For example, the attribute map conversion unit 356 may acquire a reconstructed mesh supplied from the mesh reconstruction unit 355. Alternatively, the attribute map conversion unit 356 may acquire atlas information supplied from the displacement vector generation unit 324. Alternatively, the attribute map conversion unit 356 may acquire an original mesh and an attribute map input to the encoding device 300. The attribute map conversion unit 356 may convert the acquired attribute map based on other acquired information. For example, the attribute map conversion unit 356 may convert the attribute map based on the atlas information, the original mesh, or the like so that it corresponds to the reconstructed mesh. In other words, the attribute map conversion unit 356 can be said to generate a converted attribute map. Therefore, the attribute map conversion unit 356 can also be said to be an attribute map generation unit. The attribute map conversion unit 356 may supply the converted attribute map to the attribute encoding unit 357 .
[0151] The attribute encoding unit 357 performs processing related to encoding of attributes. For example, the attribute encoding unit 357 may acquire an attribute map supplied from the attribute map conversion unit 356. The attribute encoding unit 357 may also generate attribute video using the acquired attribute map as frame images. The attribute encoding unit 357 may also encode the generated attribute video using a predetermined encoding method for 2D video to generate encoded data of attributes. The attribute encoding unit 357 may also supply the generated encoded data of attributes to the multiplexing unit 358.
[0152] The multiplexing unit 358 performs processing related to multiplexing of encoded data (substreams). For example, the multiplexing unit 358 may acquire encoded data of atlas information supplied from the atlas information encoding unit 351. Alternatively, the multiplexing unit 358 may acquire encoded data of base meshes supplied from the base mesh encoding unit 352. Alternatively, the multiplexing unit 358 may acquire encoded data of displacement vectors supplied from the displacement vector encoding unit 354. Alternatively, the multiplexing unit 358 may acquire encoded data of attributes supplied from the attribute encoding unit 357. The multiplexing unit 358 may multiplex these pieces of encoded data as substreams to generate a V-DMC bitstream. Therefore, the multiplexing unit 358 can also be referred to as a bitstream generation unit (or V-DMC bitstream generation unit). The multiplexing unit 358 may output the generated V-DMC bitstream to the outside of the encoding device 300. For example, the multiplexing unit 358 may supply the V-DMC bitstream to a decoding device 400 (described later). Therefore, the multiplexing unit 358 can also be said to be a supply unit (providing unit) for the V-DMC bitstream.
[0153] The encoding device 300 configured as above may be used as a second information processing device to which the present technology may be applied.
[0154] For example, the encoding device 300 may include a subdivision setting unit 323 (FIG. 18) that generates subdivision setting information for a subdivision process that recursively subdivides a base mesh into triangles that constitute the base mesh, the subdivision setting information including information on setting a first storage location for storing edge information related to triangle edges and a second storage location for storing triangle information, and an atlas information encoding unit 351 (FIG. 19) that encodes atlas information of 3D data including the base mesh, the atlas information including the subdivision setting information.
[0155] With this configuration, the encoding device 300 can suppress an increase in the load of subdivision processing executed in, for example, a decoding device 400 (described later).
[0156] The subdivision setting information generated by the subdivision setting unit 323 may include an edge length limit to be applied to the subdivision process. For example, the edge length limit may be set for each mesh sequence. Alternatively, the edge length limit may be set for each mesh frame. Alternatively, the edge length limit may be set for each patch, which is a partial region of the mesh and is a unit projected onto a two-dimensional region. Alternatively, the edge length limit may be set for each independent partial region of the mesh, whose edges do not contact other regions.
[0157] In addition, the subdivision setting information generated by this subdivision setting unit 323 may include information specifying whether, in the first iteration processing, to set a triangle subdivision pattern based on the base mesh of the current frame to which the motion vector of the current frame has been applied to the base mesh of the key frame, or to apply the triangle subdivision pattern of the key frame.
[0158] The subdivision setting information generated by the subdivision setting unit 323 may also include designation information that specifies a subdivision pattern when a triangle is divided into three parts. For example, the designation information may specify a subdivision pattern in which the divided edges generated by the triangle subdivision are longer. Alternatively, the designation information may specify a subdivision pattern in which the divided edges generated by the triangle subdivision are shorter. Alternatively, the designation information may specify a subdivision pattern in which the vertices of new edges generated by the triangle subdivision have smaller identification numbers.
[0159] 19 , the encoding device 300 (second information processing device) may include a base mesh encoding unit 352 that encodes a base mesh. The encoding device 300 (second information processing device) may also include a displacement vector encoding unit 354 that encodes a displacement vector that indicates a difference in vertex positions between the mesh generated by the subdivision process and the original mesh.
[0160] As a result, the effects described above in <3. Buffer management of edge information and triangle information for each iteration> can be obtained.
[0161] <Flow of Encoding Process> An example of the flow of the encoding process executed by the encoding device 300 will be described with reference to the flowchart of FIG.
[0162] When the encoding process starts, in step S301, the base mesh generation unit 321 of the encoding device 300 decimates the original mesh to be encoded and generates a base mesh.
[0163] In step S302, the atlas information generating unit 322 generates atlas information for the base mesh.
[0164] In step S303, the subdivision setting unit 323 applies the above-mentioned method 1 to generate subdivision setting information, which is setting information for a subdivision process that recursively repeats subdivision of the triangles that make up the base mesh, and includes information regarding the setting of a first storage location that stores edge information related to the edges of the triangles and a second storage location that stores triangle information, which is information related to the triangles.
[0165] In step S304, the displacement vector generating unit 324 generates a displacement vector.
[0166] In step S305, the V-DMC encoding unit 312 performs a V-DMC encoding process, applying Method 1 to encode the V-DMC data including the subdivision setting information generated as described above, to generate a V-DMC bitstream.
[0167] The encoding process ends when the process of step S305 ends. The encoding device 300 executes such encoding process for each frame of the original mesh.
[0168] <Flow of V-DMC Encoding Process> Next, an example of the flow of the V-DMC encoding process executed in step S305 of FIG. 20 will be described with reference to the flowchart of FIG.
[0169] When the V-DMC encoding process starts, in step S321, the atlas information encoding unit 351 applies the above-described method 1 to encode the atlas information including the subdivision setting information.
[0170] In step S322, the base mesh encoding unit 352 encodes the base mesh.
[0171] In step S323, the displacement vector correction unit 353 corrects the displacement vector.
[0172] In step S324, the displacement vector encoding unit 354 encodes the corrected displacement vector. For example, the displacement vector encoding unit 354 may pack the displacement vector into a displacement video and encode it using a 2D encoding method. Alternatively, the displacement vector encoding unit 354 may arithmetically encode the displacement vector.
[0173] In step S325, the mesh reconstructing unit 355 reconstructs the mesh.
[0174] In step S326, the attribute map conversion unit 356 converts the attribute map.
[0175] In step S327, the attribute encoding unit 357 encodes the attribute video using the attribute map as a frame image.
[0176] In step S328, the multiplexing unit 358 multiplexes the encoded data of the atlas information (including subdivision setting information), the encoded data of the base mesh, the encoded data of the displacement vector, and the encoded data of the attributes to generate a V-DMC bitstream.
[0177] When the process of step S328 ends, the V-DMC encoding process ends, and the process returns to FIG.
[0178] By performing each process as described above, the encoding device 300 can suppress an increase in the load of subdivision processing performed in, for example, a decoding device 400 (described later).
[0179] <Decoding device> The present technology can be applied to a decoding device that decodes encoded data of a mesh. Fig. 22 is a block diagram showing an example of the configuration of a decoding device, which is one aspect of an information processing device to which the present technology is applied. The decoding device 400 shown in Fig. 22 is a device that decodes, for example, encoded data of a mesh generated in the encoding device 300 (Fig. 18) (V-DMC bitstream generated by the multiplexing unit 358 (Fig. 19)) and reconstructs a decoded mesh. Note that Fig. 22 shows a main example of the configuration when processing intraframes.
[0180] Fig. 22 shows the main processing units, data flows, etc., but does not necessarily include all of them. In other words, in the decoding device 400, there may be processing units that are not shown as blocks in Fig. 22, and there may be processing and data flows that are not shown as arrows, etc. in Fig. 22.
[0181] The decoding device 400 decodes coded data of a mesh that has been coded using a method essentially similar to the V-DMC method described in the aforementioned non-patent document, except that the present technology is applied, and reconstructs the decoded mesh. For example, the decoding device 400 obtains a V-DMC bitstream. This V-DMC bitstream may be generated by, for example, the coding device 300. As part of the reconstruction process, the decoding device 400 decodes the V-DMC bitstream and reconstructs a mesh (also referred to as a decoded mesh). The decoding device 400 also applies a texture to the decoded mesh, generates a display image for displaying the decoded mesh, and outputs the display image to an external device. For example, the decoding device 400 supplies the display image to an external display device for display.
[0182] 22 , the decoding device 400 (second information processing device) has a demultiplexing unit 411, an atlas information decoding unit 412, a base mesh decoding unit 413, a subdivision unit 414, a displacement vector decoding unit 415, a displacement vector application unit 416, an attribute decoding unit 417, an attribute application unit 418, and a display processing unit 419. The subdivision unit 414 has a storage position setting unit 421, a subdivision processing unit 422, and an information storage unit 423.
[0183] The demultiplexing unit 411 performs demultiplexing processing. For example, the demultiplexing unit 411 may acquire a V-DMC bitstream to be decoded and supplied to the decoding device 400. The demultiplexing unit 411 may also demultiplex the acquired V-DMC bitstream to extract coded data of atlas information, coded data of base meshes, coded data of displacement vectors, and coded data of attributes. Therefore, the demultiplexing unit 411 can also be considered an acquirer of a V-DMC bitstream or various information contained in the V-DMC bitstream. The demultiplexing unit 411 may supply the coded data of the extracted atlas information to the atlas information decoding unit 412. The demultiplexing unit 411 may also supply the coded data of the extracted base meshes to the base mesh decoding unit 413. The demultiplexing unit 411 may also supply the coded data of the extracted displacement vectors to the displacement vector decoding unit 415. Furthermore, the demultiplexing unit 411 may supply the coded data of the extracted attributes to the attribute decoding unit 417 .
[0184] The atlas information decoding unit 412 performs processing related to decoding of the atlas information. For example, the atlas information decoding unit 412 may acquire encoded data of the atlas information supplied from the demultiplexing unit 411. The atlas information decoding unit 412 may also decode the acquired encoded data of the atlas information to generate (restore) the atlas information. This atlas information includes subdivision setting information. Therefore, the atlas information decoding unit 412 can also be referred to as a subdivision setting information decoding unit or a subdivision setting information acquisition unit. The atlas information decoding unit 412 may supply the subdivision setting information included in the generated atlas information to the subdivision unit 414. Note that, although arrows are omitted in FIG. 22 , the atlas information decoding unit 412 may supply other atlas information to one or more of the base mesh decoding unit 413, the subdivision unit 414, the displacement vector decoding unit 415, the displacement vector application unit 416, the attribute decoding unit 417, the attribute application unit 418, and the display processing unit 419.
[0185] The base mesh decoding unit 413 performs processing related to decoding of the base mesh. For example, the base mesh decoding unit 413 may acquire coded data of the base mesh supplied from the demultiplexing unit 411. The base mesh decoding unit 413 may also decode the acquired coded data of the base mesh using a predetermined decoding method (e.g., Draco) to generate (restore) a base mesh (e.g., a vertex list, a triangle list, etc.). In this case, the base mesh decoding unit 413 may acquire atlas information supplied from the atlas information decoding unit 412 and decode the coded data of the base mesh based on the atlas information. The base mesh decoding unit 413 may also supply the generated base mesh to the subdivision unit 414.
[0186] The subdivision unit 414 performs processing related to subdivision of triangles of a base mesh. For example, the subdivision unit 414 may acquire a base mesh supplied from the base mesh decoding unit 413. The subdivision unit 414 may subdivide the base mesh (or its triangles) to generate division points. In this case, the subdivision unit 414 may acquire atlas information (including subdivision setting information) supplied from the atlas information decoding unit 412 and subdivide the base mesh based on the subdivision setting information.
[0187] The storage location setting unit 421 executes processing related to setting of storage locations for edge information and triangle information. For example, the storage location setting unit 421 may set storage locations for edge information and triangle information in accordance with subdivision setting information.
[0188] The subdivision processing unit 422 executes processing related to mesh subdivision. For example, the subdivision processing unit 422 may subdivide the mesh in accordance with subdivision setting information.
[0189] The information storage unit 423 executes processing related to the storage of edge information and triangle information. For example, the information storage unit 423 stores the edge information and triangle information generated by the subdivision processing unit 422 through subdivision in a storage position in a buffer (not shown) set by the storage position setting unit 421. The edge information and triangle information stored in this buffer are used, for example, to apply displacement vectors to the subdivided meshes, apply attributes, and generate display images.
[0190] The refinement unit 414 may provide the refined base mesh to a displacement vector application unit 416 .
[0191] The displacement vector decoding unit 415 performs processing related to the decoding of displacement vectors. For example, the displacement vector decoding unit 415 may acquire encoded data of displacement vectors (i.e., a displacement bitstream) supplied from the demultiplexing unit 411. The displacement vector decoding unit 415 may decode the encoded data of the displacement vectors to generate (restore) displacement vectors. For example, if the displacement vectors are encoded as displacement video, the displacement vector decoding unit 415 may decode the encoded data of the displacement vectors using a predetermined decoding method for 2D video, generate (restore) the displacement video, and unpack the displacement vectors from a displacement map, which is a frame image of the displacement video. Furthermore, if the displacement video is arithmetically encoded, the displacement vector decoding unit 415 arithmetically decodes the encoded data of the displacement vectors to generate displacement vectors. In this case, the displacement vector decoding unit 415 may acquire atlas information supplied from the atlas information decoding unit 412 and decode the displacement vectors based on the atlas information. The displacement vector decoding unit 415 may supply the displacement vectors obtained in this manner to the displacement vector application unit 416.
[0192] The displacement vector application unit 416 performs processing related to application of displacement vectors to the subdivided base mesh. For example, the displacement vector application unit 416 may obtain the subdivided base mesh supplied from the subdivision unit 414. The displacement vector application unit 416 may obtain displacement vectors supplied from the displacement vector decoding unit 415. The displacement vector application unit 416 may apply displacement vectors to the vertices of the subdivided base mesh. In other words, the displacement vector application unit 416 may generate a decoded mesh. In this case, the displacement vector application unit 416 may obtain atlas information supplied from the atlas information decoding unit 412 and apply displacement vectors to the vertices of the subdivided base mesh based on the atlas information. The displacement vector application unit 416 may supply the decoded mesh generated in this manner to the attribute application unit 418.
[0193] The attribute decoding unit 417 executes processing related to attribute decoding. For example, the attribute decoding unit 417 may acquire coded attribute data supplied from the demultiplexing unit 411. The attribute decoding unit 417 may also decode the acquired coded attribute data using a predetermined decoding method for 2D video to generate (restore) attribute video. In this case, the attribute decoding unit 417 may acquire atlas information supplied from the atlas information decoding unit 412 and decode attributes based on the atlas information. The attribute decoding unit 417 may also supply an attribute map, which is a frame image of the generated attribute video, to the attribute application unit 418.
[0194] The attribute application unit 418 performs processing related to the application of attributes to the decoded mesh. For example, the attribute application unit 418 may acquire the decoded mesh supplied from the displacement vector application unit 416. The attribute application unit 418 may acquire an attribute map supplied from the attribute decoding unit 417. The attribute application unit 418 may apply attributes of the attribute map to the decoded mesh. In this case, the attribute application unit 418 may acquire atlas information supplied from the atlas information decoding unit 412 and apply attributes to the decoded mesh based on the atlas information. The attribute application unit 418 may supply the decoded mesh to which the attributes have been applied in this manner to the display processing unit 419.
[0195] The display processing unit 419 performs processing related to mesh display. For example, the display processing unit 419 may acquire a decoded mesh to which attributes have been applied, supplied from the attribute application unit 418. The display processing unit 419 may render the acquired decoded mesh and generate a display image for displaying the decoded mesh. The display processing unit 419 may then supply the generated display image to an external device outside the decoding device 400, and display the display image on another device or the like.
[0196] The decoding device 400 configured as above may be used as a first information processing device, to which the present technology may be applied.
[0197] For example, the decoding device 400 (first information processing device) may include a storage location setting unit 421 that sets a first storage location for storing edge information about triangle edges and a second storage location for storing triangle information, which is information about triangles, in each iteration of a subdivision process that recursively repeats subdivision of triangles constituting a base mesh. The decoding device 400 may also include a subdivision processing unit 422 that, as the current iteration of the subdivision process, divides edges and subdivides triangles on a mesh generated by the previous iteration. The decoding device 400 may also include an information storage unit 423 that stores edge information about edges generated in the current iteration in a first storage location of a buffer and triangle information about triangles generated in the current iteration in a second storage location of the buffer.
[0198] With this configuration, the decoding device 400 can suppress an increase in the load of the subdivision process.
[0199] The storage position setting unit 421 may set the first storage position for the edge information of the divided edges based on the number of divided edges, which are edges after division in the current iteration. For example, the storage position setting unit 421 may derive divided edges based on an edge length limit and set the first storage position for the edge information of the divided edges based on the cumulative sum of the number of divided edges. Furthermore, the storage position setting unit 421 may set the first storage position for the edge information of the new edges, which are edges generated by the current iteration, based on the cumulative sum of the number of divided edges and the cumulative sum of the number of triangles after subdivision in the current iteration.
[0200] For example, the storage location setting unit 421 may set the second storage location based on the number of triangles after subdivision in the current iteration. Alternatively, the storage location setting unit 421 may derive a triangle subdivision pattern based on an edge length limit, and set the second storage location based on the cumulative sum of the number of triangles after subdivision in the current iteration to which the subdivision pattern is applied.
[0201] Furthermore, the decoding device 400 (first information processing device) may further include an atlas information decoding unit 412 (subdivision setting information acquisition unit) that acquires subdivision setting information related to the subdivision process. The storage position setting unit 421 may then set the first storage position and the second storage position based on the edge length limit included in the acquired subdivision setting information. For example, this edge length limit may be set for each mesh sequence. Furthermore, this edge length limit may be set for each mesh frame. Furthermore, this edge length limit may be set for each patch, which is a partial region of the mesh and is a unit projected onto a two-dimensional region. Furthermore, this edge length limit may be set for each independent partial region of the mesh, whose edges do not contact other regions.
[0202] In addition, as a first iteration process, the subdivision processing unit 422 may set a triangle subdivision pattern based on the base mesh of the current frame to which the motion vector of the current frame has been applied to the base mesh of the key frame, and apply the subdivision pattern to divide the edges of the base mesh of the current frame and subdivide the triangles.
[0203] In addition, the subdivision processing unit 422 may, as the first iteration process, apply a subdivision pattern of the triangle of the key frame to divide the edges of the base mesh of the current frame to which the motion vector of the current frame has been applied and perform triangle subdivision.
[0204] The decoding device 400 (first information processing device) may further include an atlas information decoding unit 412 (subdivision setting information acquisition unit) that acquires subdivision setting information related to the subdivision process.The subdivision processing unit 422 may then determine, based on the acquired subdivision setting information, whether to set a triangle subdivision pattern based on the base mesh of the current frame to which the motion vector of the current frame is applied to the base mesh of the key frame, or to apply the triangle subdivision pattern of the key frame, in the first iteration of the process.
[0205] The decoding device 400 (first information processing device) may further include an atlas information decoding unit 412 (subdivision setting information acquisition unit) that acquires subdivision setting information related to the subdivision process. The subdivision processing unit 422 may then set a subdivision pattern for dividing a triangle into three parts based on the acquired subdivision setting information.
[0206] 22, the decoding device 400 (first information processing device) may further include a base mesh decoding unit that decodes encoded data of a base mesh and generates the base mesh. The decoding device 400 (first information processing device) may also include a displacement vector decoding unit that decodes encoded data of a displacement vector indicating a difference in vertex positions between the mesh generated by the subdivision process and the original mesh and generates the displacement vector. The decoding device 400 (first information processing device) may also include a displacement vector application unit that applies displacement vectors to mesh vertices based on edge information and triangle information stored in the buffer.
[0207] As a result, the effects described above in <3. Buffer management of edge information and triangle information for each iteration> can be obtained.
[0208] <Flow of Decoding Process> An example of the flow of the decoding process executed by the decoding device 400 will be described with reference to the flowchart of FIG.
[0209] When the decoding process starts, the demultiplexing unit 411 of the decoding device 400 demultiplexes the V-DMC bitstream in step S401.
[0210] In step S402, the atlas information decoding unit 412 applies the above-described method 1 to decode the encoded data of the atlas information and generate (restore) atlas information including subdivision setting information. In other words, the atlas information decoding unit 412 obtains subdivision setting information related to the subdivision process.
[0211] In step S403, the base mesh decoding unit 413 decodes the base meshes of the entire region.
[0212] In step S404, the subdivision unit 414 executes a subdivision process to subdivide the base mesh in accordance with the subdivision setting information.
[0213] In step S405, the displacement vector decoding unit 415 decodes the displacement vector.
[0214] In step S406, the displacement vector application unit 416 applies the displacement vector to the subdivided mesh.
[0215] In step S407, the attribute decoding unit 417 decodes the attributes of all the regions. That is, the attribute decoding unit 417 decodes the coded data of the attributes of all the regions and generates (restores) the attributes of all the regions.
[0216] In step S408, the attribute application unit 418 applies the attributes of the entire region to the decoded mesh.
[0217] In step S409, the display processing unit 419 renders the decoded mesh to which the attributes have been applied to generate a display image.
[0218] When the process of step S409 is completed, the decoding process is completed. The decoding device 400 executes such a decoding process for each frame of the original mesh.
[0219] <Flow of Subdivision Processing> Next, an example of the flow of the subdivision processing executed in step S404 of FIG. 23 will be described with reference to the flowchart of FIG.
[0220] When the subdivision process is started, the storage location setting unit 421 of the subdivision unit 414 derives the edge length of the current mesh in step S441.
[0221] In step S442, the storage location setting unit 421 determines whether or not each edge is to be divided based on the edge length restriction, and determines the number of divided edges.
[0222] In step S443, the storage location setting unit 421 sets a storage location for the edge information of each divided edge based on the cumulative sum of the number of divided edges.
[0223] In step S444, the storage location setting unit 421 determines the subdivision pattern of each triangle based on the edge length limit, and determines the number of triangles after subdivision.
[0224] In step S445, the storage location setting unit 421 sets a storage location for triangle information for each triangle based on the cumulative sum of the number of triangles after subdivision.
[0225] In step S446, the storage location setting unit 421 sets a storage location for edge information of new edges added by subdivision based on the cumulative sum of the number of divided edges and the cumulative sum of the number of triangles after subdivision.
[0226] In step S447, the subdivision processing unit 422 subdivides each triangle.
[0227] In step S448, the information storage unit 423 stores the subdivided edge information and triangle information in the set positions.
[0228] In step S449, the storage location setting unit 421 determines whether or not the iteration has been performed a predetermined number of times.
[0229] If it is determined that the iteration has not been completed and that the subdivision should be repeated again, the process returns to step S441, and the subsequent processes are executed.
[0230] If it is determined in step S449 that the iteration has been performed to the end and subdivision is to be terminated, the subdivision process ends.
[0231] By performing each process as described above, the decoding device 400 can suppress an increase in the load of the subdivision process.
[0232] 5. Second Embodiment V-DMC Encoding Unit Next, processing of interframes will be described. When processing interframes, the encoding device 300 has a V-DMC encoding unit 312 configured as shown in Fig. 25. That is, in this case, the V-DMC encoding unit 312 has a motion vector generation unit 511 and a motion vector encoding unit 512 instead of the base mesh encoding unit 352.
[0233] The motion vector generation unit 511 executes processing related to the generation of motion vectors. For example, the motion vector generation unit 511 may acquire a base mesh of a current frame. Alternatively, the motion vector generation unit 511 may acquire a base mesh of a key frame stored in a buffer (not shown). The motion vector generation unit 511 may calculate a difference in vertex positions between the base mesh of the key frame and the base mesh of the current frame, and generate a motion vector representing the difference. The motion vector generation unit 511 may supply the generated motion vector to the motion vector encoding unit 512.
[0234] The motion vector encoding unit 512 executes processing related to encoding of motion vectors. For example, the motion vector encoding unit 512 may acquire a motion vector supplied from the motion vector generation unit 511. The motion vector encoding unit 512 may encode the motion vector to generate encoded data of the motion vector. The motion vector encoding unit 512 may supply the generated encoded data of the motion vector to the multiplexing unit 358.
[0235] The multiplexing unit 358 may multiplex the coded data of the motion vector with other data instead of the coded data of the base mesh to generate a V-DMC bitstream.
[0236] The other processes are the same as when processing intra-frames. The encoding device 300 configured in this way may be used as a second information processing device, to which the present technology is applied. The present technology to be applied is the same as in the first embodiment.
[0237] With this configuration, the encoding device 300 can suppress an increase in the load of subdivision processing executed in, for example, a decoding device 400 (described later).
[0238] <Flow of V-DMC Encoding Process> Next, an example of the flow of V-DMC encoding process in this case will be described with reference to the flowchart in FIG.
[0239] When the V-DMC encoding process starts, in step S501, the atlas information encoding unit 351 applies the above-described method 1 to encode atlas information including subdivision setting information.
[0240] In step S502, the motion vector generation unit 511 generates a motion vector of the base mesh.
[0241] In step S503, the motion vector encoding unit 512 encodes the motion vector to generate encoded data of the motion vector.
[0242] In step S504, the displacement vector correction unit 353 corrects the displacement vector.
[0243] In step S505, the displacement vector encoding unit 354 encodes the corrected displacement vector. For example, the displacement vector encoding unit 354 may pack the displacement vector into a displacement video and encode it using a 2D encoding method. Alternatively, the displacement vector encoding unit 354 may arithmetically encode the displacement vector.
[0244] In step S506, the mesh reconstructing unit 355 reconstructs the mesh.
[0245] In step S507, the attribute map conversion unit 356 converts the attribute map.
[0246] In step S508, the attribute encoding unit 357 encodes the attribute video using the attribute map as a frame image.
[0247] In step S509, the multiplexing unit 358 multiplexes the coded data of the atlas information (including the subdivision setting information), the coded data of the motion vector, the coded data of the displacement vector, and the coded data of the attribute to generate a V-DMC bitstream.
[0248] When the process of step S509 ends, the V-DMC encoding process ends, and the process returns to FIG.
[0249] By performing each process as described above, the encoding device 300 can suppress an increase in the load of subdivision processing performed in, for example, a decoding device 400 (described later).
[0250] <Decoding Device> FIG. 27 is a block diagram showing an example of the main configuration of a decoding device 400 when processing interframes.
[0251] Fig. 27 shows the main processing units, data flows, etc., but does not necessarily include all of them. In other words, in the decoding device 400, there may be processing units that are not shown as blocks in Fig. 27, and there may be processing and data flows that are not shown as arrows, etc. in Fig. 27.
[0252] As shown in FIG. 27, the decoding device 400 in this case has a motion vector decoding unit 521 and a motion vector application unit 522 instead of the base mesh decoding unit 413 .
[0253] The motion vector decoding unit 521 executes processing related to the decoding of motion vectors. For example, the motion vector decoding unit 521 may acquire coded data of motion vectors supplied from the demultiplexing unit 411. The motion vector decoding unit 521 may decode the coded data of motion vectors to generate (restore) motion vectors. The motion vector decoding unit 521 may supply the generated motion vectors to the motion vector application unit 522.
[0254] The motion vector application unit 522 performs processing related to the application of motion vectors. For example, the motion vector application unit 522 may obtain a motion vector supplied from the motion vector decoding unit 521. The motion vector application unit 522 may also obtain a base mesh of a key frame obtained from a buffer (not shown). The motion vector application unit 522 may apply the motion vector to the base mesh to generate a base mesh of the current frame. The motion vector application unit 522 may supply the generated base mesh of the current frame to the subdivision unit 414.
[0255] The refinement unit 414 may refine the base mesh for the current frame.
[0256] The other processes are the same as when processing intra-frames. The decoding device 400 configured as above may be used as a first information processing device, to which the present technology may be applied. The present technology to be applied is the same as in the first embodiment.
[0257] With this configuration, the decoding device 400 can suppress an increase in the load of the subdivision process.
[0258] <Flow of Decoding Process> Next, an example of the flow of the decoding process in this case will be described with reference to the flowchart in FIG.
[0259] When the decoding process starts, the demultiplexing unit 411 of the decoding device 400 demultiplexes the V-DMC bitstream in step S541.
[0260] In step S542, the atlas information decoding unit 412 applies the above-described method 1 to decode the encoded data of the atlas information and generate (restore) atlas information including subdivision setting information. In other words, the atlas information decoding unit 412 obtains subdivision setting information related to the subdivision process.
[0261] In step S543, the motion vector decoding unit 521 decodes the coded data of the motion vector.
[0262] In step S544, the motion vector application unit 522 applies the motion vector to the base mesh of the key frame to generate a base mesh of the current frame.
[0263] In step S545, the subdivision unit 414 executes the subdivision process to subdivide the base mesh in accordance with the subdivision setting information. The subdivision process is executed in the same manner as described with reference to the flowchart in FIG. 24.
[0264] In step S546, the displacement vector decoding unit 415 decodes the displacement vector.
[0265] In step S547, the displacement vector application unit 416 applies the displacement vector to the subdivided mesh.
[0266] In step S548, the attribute decoding unit 417 decodes the attribute. That is, the attribute decoding unit 417 decodes the coded data of the attribute to generate (restore) the attribute.
[0267] In step S549, the attribute application unit 418 applies the attribute to the decoded mesh.
[0268] In step S550, the display processing unit 419 renders the decoded mesh to which the attributes have been applied to generate and output a display image.
[0269] When the process of step S550 is completed, the decoding process ends. The decoding device 400 executes such a decoding process for each frame of the original mesh.
[0270] By performing each process as described above, the decoding device 400 can suppress an increase in the load of the subdivision process.
[0271] 11 to 13 show examples of syntax related to edge length limits, but syntax to which the present technology is applied is not limited to these examples. For example, when Method 1 is applied, as shown in the top row of the table in FIG. 29 , if control of the edge length limit is not permitted in the current processing unit, the edge length limit of a higher-level processing unit may be inherited (Method 1-4).
[0272] For example, in a first information processing device and a second information processing device, the subdivision setting information may include information for selecting whether to specify an edge length limit for the current processing unit or to apply an edge length limit for a processing unit higher than the current processing unit.
[0273] Here, "processing unit" refers to the data unit for which an edge length limit is set. "Higher" refers to a larger data unit. For example, in the syntax example of FIG. 11, the data unit for which an edge length limit is set is a "sequence." In the syntax example of FIG. 12, the data unit for which an edge length limit is set is a "frame." In the syntax example of FIG. 13, the data unit for which an edge length limit is set is a "patch." Therefore, in this example, a sequence is a higher-level processing unit than a frame or a patch, and a patch is a lower-level processing unit than a sequence or a frame.
[0274] An example of syntax when an edge length limit is set in a higher-level processing unit is shown in FIG. 30 , and an example of syntax when an edge length limit is set in a lower-level processing unit is shown in FIG. 31 . In FIG. 31 , the portion enclosed by a thick line on the upper side shows syntax when a new edge length limit is defined in this processing unit. Furthermore, the portion enclosed by a thick line on the lower side shows syntax when an edge length limit set in a higher-level processing unit (e.g., the processing unit in FIG. 30 ) is inherited (reused). In the example of FIG. 31 , either method can be selected using "afve_subdivision_enable_flag."
[0275] By doing so, it is possible to omit specifying the edge length limit in some processing units, and therefore it is possible to suppress an increase in the amount of code for the subdivision setting information.
[0276] <Method 1-5> When Method 1 is applied, the subdivision termination process may be enabled or disabled for each iteration (Method 1-5), as shown in the second row from the top of the table in Fig. 29. In other words, the control of the termination of subdivision using the edge length limit as described above (truncation process) may be enabled only in some iterations.
[0277] For example, in the first information processing device and the second information processing device, the subdivision setting information may include information that specifies, for each iteration, whether control of the termination of subdivision using edge length restrictions is enabled or disabled.
[0278] For example, in the syntax of FIG. 30 , "edge_based_subdivision_flag[ i ]" is set. This flag information is flag information that sets whether the abort process is enabled or disabled in the i-th LoD (iteration). By including such information in the subdivision setting information, it is possible to specify the iteration in which the subdivision abort process is to be performed. Therefore, the decoder can omit the subdivision abort process in an iteration in which the subdivision abort process is not required, thereby suppressing an increase in the processing load.
[0279] <Method 1-5-1> Furthermore, when Method 1-5 is applied, as shown in the third row from the top of the table in FIG. 29, an edge length limit may be specified only if there is an iteration for which the abortion of subdivision is valid (Method 1-5-1).
[0280] For example, in the first information processing device and the second information processing device, the subdivision setting information may include information specifying an edge length limit only when there is an iteration in which control of the termination of subdivision using an edge length limit is effective.
[0281] Examples of syntax in this case are shown in Figures 32 to 34. Figure 32 shows an example of syntax when storing edge length restrictions on a sequence-by-sequence basis. Figure 33 shows an example of syntax when storing edge length restrictions on a frame-by-frame basis. Figure 34 shows an example of syntax when storing edge length restrictions on a patch-by-patch basis.
[0282] If the subdivision abort control is disabled in all iterations, the abort process is not executed, so setting an edge length limit is meaningless and results in an unnecessary increase in the amount of data in the subdivision setting information. In contrast, in all of the examples shown in Figures 32 to 34, the edge length limit (subdivision_min_edge_length) is specified only when there is an iteration for which "edge_based_subdivision_flag[i]" is true. This allows the edge length limit to be specified only when it is necessary (i.e., when there is one or more iterations for which the subdivision abort control is enabled). In other words, the increase in the amount of data in the subdivision setting information due to the specification of the edge length limit can be suppressed.
[0283] <Method 1-5-2> Furthermore, when Method 1-5 is applied, an edge length limit may be specified regardless of whether subdivision truncation is enabled or disabled, as shown in the fourth row from the top of the table in FIG. 29 (Method 1-5-2).
[0284] For example, in the first information processing device and the second information processing device, the subdivision setting information may include information specifying an edge length limit, regardless of whether control of the termination of subdivision using an edge length limit is effective or not.
[0285] Examples of syntax in this case are shown in Figures 35 to 37. Figure 35 shows an example of syntax when storing edge length restrictions on a sequence-by-sequence basis. Figure 36 shows an example of syntax when storing edge length restrictions on a frame-by-frame basis. Figure 37 shows an example of syntax when storing edge length restrictions on a patch-by-patch basis.
[0286] In the examples of Figures 35 to 37 where method 1-5-2 is applied, the number of conditional branches is reduced compared to the examples of Figures 32 to 34 where method 1-5-1 is applied, and therefore, the load on the decoder that processes the subdivided setting information can be reduced accordingly.
[0287] <Method 1-6> When Method 1 is applied, an edge length limit for the current iteration may be specified (Method 1-6), as shown in the fifth row from the top of the table in Fig. 29. That is, in each iteration, an edge length limit specific to that iteration may be specified.
[0288] For example, in the first information processing apparatus and the second information processing apparatus, the subdivision setting information may include information specifying an edge length limit for each iteration.
[0289] Examples of syntax in this case are shown in Fig. 38 to Fig. 40. Fig. 38 shows an example of syntax when storing edge length restrictions on a sequence-by-sequence basis. Fig. 39 shows an example of syntax when storing edge length restrictions on a frame-by-frame basis. Fig. 40 shows an example of syntax when storing edge length restrictions on a patch-by-patch basis.
[0290] In these examples, "subdivision_min_edge_length[ i ]" is set. This parameter specifies the edge length limit applied at the i-th LoD (iteration). This allows for finer control of the edge length limit than specifying a common edge length limit for all iterations. Therefore, more appropriate edge length limits can be applied.
[0291] <Method 1-7> When Method 1 is applied, the iteration at which the control of the termination of subdivision starts may be specified (Method 1-7), as shown in the sixth row from the top of the table in Fig. 29. In other words, the control of the termination of subdivision using the edge length restriction as described above may be made to start from an intermediate iteration.
[0292] For example, in the first information processing apparatus and the second information processing apparatus, the subdivision setting information may include information specifying an iteration at which control of the termination of subdivision starts.
[0293] Examples of syntax in this case are shown in Figures 41 to 43. Figure 41 shows an example of syntax when storing edge length restrictions on a sequence-by-sequence basis. Figure 42 shows an example of syntax when storing edge length restrictions on a frame-by-frame basis. Figure 43 shows an example of syntax when storing edge length restrictions on a patch-by-patch basis.
[0294] In these examples, "edge_based_subdivision_enable_iteration" is set. This parameter specifies the iteration at which control of subdivision termination begins. In other words, subdivision termination processing is enabled from the iteration specified by this parameter. For example, when "edge_based_subdivision_flag[ i ]" is used (when flag information that sets whether termination processing is enabled or disabled in the i-th iteration is used) as in method 1-5, "edge_based_subdivision_flag[ i ]" needs to be set in all iterations to enable subdivision termination processing from the middle iteration to the last iteration. In contrast, in method 1-7, it is sufficient to set "edge_based_subdivision_enable_iteration" once, which can suppress an increase in the amount of data in the subdivision setting information. Furthermore, in method 1-5, the decoder needs to process "edge_based_subdivision_flag[ i ]" in each iteration. In contrast, in the case of Method 1-7, it is sufficient to process "edge_based_subdivision_enable_iteration" once, so that an increase in the processing load can be suppressed.
[0295] <Semantics> Note that, although an example of the semantics of the parameter "Subdivision_method" is shown in FIG. 14 , the semantics is not limited to this example and may be defined, for example, as shown in the table of FIG. 44 . In the case of the semantics of FIG. 14 , when the present technology is applied, the value of "Subdivision_method" is set to a value indicating midpoint subdivision with edge length restrictions. In contrast, in the example of FIG. 44 , whether or not the present technology is applied is not indicated by the value of "Subdivision_method" but is defined by a flag, a threshold, or the like. In this way, the present technology can be applied to, for example, conventional midpoints.
[0296] <Method 1-8> When the termination of subdivision is controlled using an edge length limit, a determination is made as to whether the edge length is equal to or less than a threshold. However, the result of the edge length determination may vary depending on the processing system (decoder, etc.). For example, as shown in FIG. 45 , processing system A may derive the edge length of a certain edge as "0.99," while processing system B may derive the edge length of the same edge as "1.00." Such differences in calculation results may occur due to, for example, rounding errors. If such errors occur, the comparison results between the edge length and the threshold may also differ, resulting in a risk that the topology after subdivision by processing system A may differ from the topology after subdivision by processing system B.
[0297] Therefore, when Method 1 is applied, as shown in the seventh row from the top of the table in FIG. 29, the square of the edge length may be compared with the square of the edge length limit in the control of the subdivision termination (Method 1-8).
[0298] For example, in the first information processing apparatus, the subdivision processing unit may determine whether to terminate the subdivision process by comparing the square of the edge length of the edge with the square of the edge length limit.
[0299] As shown in FIG. 46 , the square root is used to derive the edge length (||v1-v0||), which can easily result in decimal precision and rounding errors. Therefore, the edge length (||v1-v0||) is compared with the edge length limit (minEdgelength) using the squares of each. An example of a program simulating such calculation processing is shown in FIG. 47 . The square of the edge length can be derived as described in the lower rectangular box in FIG. 47 . The comparison between the square of the edge length and the square of the edge length limit can be executed as described in the upper rectangular box in FIG. 47 .
[0300] This allows the edge length to be converted into an integer, thereby suppressing the occurrence of errors between processing systems. In other words, the segmentation results that the content author intended can be obtained regardless of the decoder.
[0301] <Method 1-9> When Method 1 is applied, the edge length may be converted to an integer using a square root integerization operation in the control of the subdivision termination, as shown in the eighth row from the top of the table in FIG. 29 (Method 1-9).
[0302] For example, in the first information processing device, the subdivision processing unit may convert the edge length of the edge into an integer using a predetermined calculation that converts the square root into an integer, and compare it with the edge length limit to determine whether to terminate the subdivision processing.
[0303] For example, the "predetermined calculation" may be an integer-approximated function such as that described in Non-Patent Document 2 (e.g., "5.10.4 IntSqrt" to "5.10.5 IntRecipSqrt" (pages 13 and 14)) to convert the edge length into an integer. This function uses an approximate calculation such as Newton's method to obtain a value with sufficient accuracy. In the method described in Non-Patent Document 2, Newton's method is applied twice to the initial value. Furthermore, a table (Table 2 on page 14) is used for the initial value.
[0304] By applying such a function, edge lengths can be converted to integers with sufficient precision, and errors between processing systems can be reduced. In other words, segmentation results can be obtained as intended by the content author, regardless of the decoder.
[0305] <Method 1-10> When Method 1 is applied, the number of digits to be truncated in the edge length may be specified (Method 1-10), as shown in the bottom row of the table in Fig. 29. In other words, the content author may specify the number of digits to be truncated in the edge length when the edge length is derived by the decoder.
[0306] For example, in the first information processing device and the second information processing device, the subdivision setting information may include information specifying the number of digits to truncate the edge length. Then, in the first information processing device, the subdivision processing unit may truncate the edge length of the edge to the number of digits specified by the subdivision setting information, and compare the edge length truncated to the number of digits with the edge length limit to determine whether to terminate the subdivision processing.
[0307] That is, the content author may specify the number of digits to truncate the edge length, and store information indicating that value in the subdivision setting information. Then, when the decoder derives the edge length, it truncates to the number of digits specified by the subdivision setting information. Note that if the decoder cannot truncate to the specified number of digits, it may return an error. This makes it possible to reduce differences in rounding errors between processing systems, so that the subdivision results intended by the content author can be obtained regardless of the decoder.
[0308] <Subdivision Method> This technology can be applied to any subdivision method, not just midpoints. For example, as shown in FIG. 44, it can also be applied to a subdivision method called LOOP or LS3. For example, in the case of LOOP, as shown in FIG. 48, similar to the case of midpoints, a process of generating one vertex on each edge, subdividing the triangle, and updating the edge is repeated. The same is true for LS3. Therefore, this technology, which controls vertex generation based on edge length, can also be applied to these methods.
[0309] 7. Supplementary Notes Application of the Present Technology to the Displacement Vector Generator Note that the displacement vector generator 324 ( FIG. 18 ) of the encoding device 300 subdivides a base mesh, compares the subdivided base mesh with the original mesh, and generates a displacement vector based on the difference between their vertices. The present technology (e.g., Method 1) may be applied to the base mesh subdivision by the displacement vector generator 324, as in the case of the above-described decoding device 400 ( FIGS. 22 and 27 ). For example, the displacement vector generator 324 may have a configuration similar to that of the subdivision unit 414 (i.e., include a storage position setting unit 421, a subdivision processing unit 422, and an information storage unit 423) and perform processing similar to that of the subdivision unit 414. In this way, the displacement vector generator 324 can also achieve the same effects as when the present technology is applied to the decoding device 400.
[0310] <Polygon Shape> In the above description, the polygon shape is a triangle, but this shape is just an example. The polygon shape may be any polygonal shape.
[0311] <Encoding Method> In the above, V-DMC has been used as an example of an encoding method to which the present technology can be applied, but the present technology is not limited to this example, and can be applied to any encoding method that encodes a base mesh, a displacement vector, an attribute map including texture, atlas information, or information equivalent thereto.
[0312] <Computer> The above-described series of processes can be executed by hardware or software. When the series of processes is executed by software, the programs that make up the software are installed on a computer. Here, the term "computer" includes computers built into dedicated hardware, and general-purpose personal computers, etc., that can execute various functions by installing various programs.
[0313] FIG. 49 is a block diagram showing an example of the hardware configuration of a computer that executes the above-described series of processes by a program.
[0314] In a computer 900 shown in FIG. 49, a CPU (Central Processing Unit) 901, a ROM (Read Only Memory) 902, and a RAM (Random Access Memory) 903 are interconnected via a bus 904.
[0315] An input / output interface 910 is also connected to the bus 904. To the input / output interface 910, an input unit 911, an output unit 912, a storage unit 913, a communication unit 914, and a drive 915 are connected.
[0316] The input unit 911 includes, for example, a keyboard, a mouse, a microphone, a touch panel, and an input terminal. The output unit 912 includes, for example, a display, a speaker, and an output terminal. The storage unit 913 includes, for example, a hard disk, a RAM disk, and a non-volatile memory. The communication unit 914 includes, for example, a network interface. The drive 915 drives removable media 921 such as a magnetic disk, an optical disk, a magneto-optical disk, or a semiconductor memory.
[0317] In a computer configured as described above, the CPU 901 performs the above-described series of processes by, for example, loading a program stored in the storage unit 913 into the RAM 903 via the input / output interface 910 and the bus 904 and executing the program. The RAM 903 also stores data necessary for the CPU 901 to execute various processes as appropriate.
[0318] The program executed by the computer can be applied by recording it on, for example, a removable medium 921 such as a package medium. In this case, the program can be installed in the storage unit 913 via the input / output interface 910 by inserting the removable medium 921 into the drive 915.
[0319] This program can also be provided via a wired or wireless transmission medium such as a local area network, the Internet, digital satellite broadcasting, etc. In this case, the program can be received by the communication unit 914 and installed in the storage unit 913.
[0320] Alternatively, this program can be installed in advance in the ROM 902 or the storage unit 913 .
[0321] <Application of the Present Technology> The present technology can be applied to any configuration. For example, the present technology can be applied to various electronic devices.
[0322] Furthermore, for example, the present technology can also be implemented as part of an apparatus, such as a processor (e.g., a video processor) as a system LSI (Large Scale Integration), a module using multiple processors (e.g., a video module), a unit using multiple modules (e.g., a video unit), or a set in which other functions are added to a unit (e.g., a video set).
[0323] Furthermore, for example, the present technology can also be applied to a network system configured with multiple devices. For example, the present technology may be implemented as cloud computing in which multiple devices share and collaborate on processing via a network. For example, the present technology may be implemented in a cloud service that provides image (video)-related services to any terminal, such as a computer, an AV (Audio Visual) device, a portable information processing terminal, or an IoT (Internet of Things) device.
[0324] In this specification, a system refers to a collection of multiple components (devices, modules (components), etc.), regardless of whether all of the components are housed in the same housing. Therefore, multiple devices housed in separate housings and connected via a network, and a single device housed in a single housing with multiple modules, are both systems.
[0325] <Fields and uses to which this technology can be applied> Systems, devices, processing units, etc. to which this technology is applied can be used in any field, for example, transportation, medical care, crime prevention, agriculture, livestock farming, mining, beauty, factories, home appliances, weather, nature monitoring, etc. In addition, the uses thereof are also arbitrary.
[0326] <Others> In this specification, a "flag" refers to information for identifying multiple states, and includes not only information used to identify two states, true (1) or false (0), but also information capable of identifying three or more states. Therefore, the value that this "flag" can take may be, for example, two values, 1 / 0, or three or more values. That is, the number of bits constituting this "flag" is arbitrary, and may be one bit or multiple bits. Furthermore, identification information (including flags) can be included not only in a bitstream, but also in a bitstream that includes differential information of the identification information relative to certain reference information. Therefore, in this specification, "flag" and "identification information" encompass not only the information itself, but also differential information relative to the reference information.
[0327] Furthermore, various types of information (e.g., metadata) related to the coded data (bitstream) may be transmitted or recorded in any form as long as they are associated with the coded data. Here, the term "associate" means, for example, that one piece of data can be used (linked) when processing the other piece of data. That is, the associated pieces of data may be combined into one piece of data or may be separate pieces of data. For example, information associated with coded data (image) may be transmitted over a transmission path separate from that of the coded data (image). Furthermore, for example, information associated with coded data (image) may be recorded on a recording medium separate from that of the coded data (image) (or on a different recording area of the same recording medium). Note that this "association" may refer not to the entire data, but to only part of the data. For example, an image and information corresponding to that image may be associated with each other in any unit, such as multiple frames, one frame, or a portion of a frame.
[0328] In this specification, terms such as "composite," "multiplex," "add," "integrate," "include," "store," "embed," "insert," and the like refer to combining multiple items into one, such as combining encoded data and metadata into one piece of data, and refer to one method of "associating" as described above.
[0329] Furthermore, the embodiments of the present technology are not limited to the above-described embodiments, and various modifications are possible within the scope of the gist of the present technology.
[0330] For example, a configuration described as one device (or processing unit) may be divided and configured as multiple devices (or processing units). Conversely, configurations described above as multiple devices (or processing units) may be combined and configured as one device (or processing unit). Of course, configurations other than those described above may be added to the configuration of each device (or each processing unit). Furthermore, as long as the configuration and operation of the entire system are substantially the same, part of the configuration of one device (or processing unit) may be included in the configuration of another device (or other processing unit).
[0331] Furthermore, for example, the above-described program may be executed in any device, as long as the device has the necessary functions (functional blocks, etc.) and is able to obtain the necessary information.
[0332] Also, for example, each step of a single flowchart may be executed by a single device, or may be shared and executed by multiple devices. Furthermore, when a single step includes multiple processes, the multiple processes may be executed by a single device, or may be shared and executed by multiple devices. In other words, multiple processes included in a single step can be executed as multiple step processes. Conversely, processes described as multiple steps can be executed collectively as a single step.
[0333] For example, the steps of a program executed by a computer may be executed in chronological order in the order described herein, or may be executed in parallel or individually at the required timing, such as when a call is made. In other words, as long as no contradiction occurs, the steps may be executed in an order different from the order described above. Furthermore, the steps of this program may be executed in parallel with the processing of another program, or may be executed in combination with the processing of another program.
[0334] Furthermore, for example, multiple technologies related to the present technology can be implemented independently and independently, as long as no contradiction occurs. Of course, any multiple technologies can also be implemented in combination. For example, part or all of the present technology described in any embodiment can be implemented in combination with part or all of the present technology described in another embodiment. Furthermore, part or all of any of the above-described present technologies can be implemented in combination with other technologies not described above.
[0335] The present technology can also be configured as follows: (1) An information processing device comprising: a storage position setting unit that sets, in each iteration of a subdivision process that recursively repeats subdivision of triangles that constitute a base mesh, a first storage position for storing edge information about the edges of the triangles and a second storage position for storing triangle information that is information about the triangles; a subdivision processing unit that, as the current iteration of the subdivision process, divides the edges and subdivides the triangles for a mesh generated by the previous iteration; and an information storage unit that stores the edge information of the edges generated in the current iteration in the first storage position of a buffer and stores the triangle information of the triangles generated in the current iteration in the second storage position of the buffer, wherein the base mesh is a mesh obtained by thinning out vertices from an original mesh to be encoded that is composed of vertices and connections that represent a three-dimensional structure of the object. (2) The information processing device according to (1), wherein the storage position setting unit sets the first storage position for the edge information of the divided edge based on the number of divided edges that are the edges after division in the current iteration processing. (3) The information processing device according to (2), wherein the storage position setting unit derives the divided edge based on an edge length limit, and sets the first storage position for the edge information of the divided edge based on a cumulative sum of the number of divided edges. (4) The information processing device according to (3), wherein the storage position setting unit sets the first storage position for the edge information of a new edge that is the edge generated by the current iteration processing based on a cumulative sum of the number of divided edges and a cumulative sum of the number of triangles after subdivision in the current iteration processing. (5) The information processing device according to any of (1) to (4), wherein the storage position setting unit sets the second storage position based on the number of triangles after subdivision in the current iteration processing.(6) The information processing device according to (5), wherein the storage position setting unit derives a subdivision pattern of the triangle based on an edge length limit, and sets the second storage position based on a cumulative sum of the number of triangles after subdivision in the current iteration processing to which the subdivision pattern is applied. (7) The information processing device according to any of (1) to (6), further comprising a subdivision setting information acquisition unit that acquires subdivision setting information related to the subdivision processing, wherein the storage position setting unit sets the first storage position and the second storage position based on an edge length limit included in the subdivision setting information. (8) The information processing device according to (7), wherein the edge length limit is set for each sequence of the mesh. (9) The information processing device according to (7) or (8), wherein the edge length limit is set for each frame of the mesh. (10) The information processing device according to any of (7) to (9), wherein the edge length limit is set for each patch, which is a partial region of the mesh and is a unit projected onto a two-dimensional region. (11) The information processing device according to any one of (7) to (10), wherein the edge length limit is set for each independent partial region of the mesh, the edge of which does not contact another region. (12) The information processing device according to any one of (7) to (11), wherein the subdivision setting information includes information for selecting whether to specify the edge length limit for a current processing unit or to apply the edge length limit for a higher-level processing unit. (13) The information processing device according to any one of (7) to (12), wherein the subdivision setting information includes information for specifying, for each iteration, whether control of termination of subdivision using the edge length limit is enabled. (14) The information processing device according to (13), wherein the subdivision setting information includes information for specifying the edge length limit only when there is an iteration in which control of termination of subdivision using the edge length limit is enabled. (15) The information processing device according to (13) or (14), wherein the subdivision setting information includes information for specifying the edge length limit regardless of whether control of termination of subdivision using the edge length limit is enabled.(16) The information processing device according to any one of (7) to (15), wherein the subdivision setting information includes information specifying the edge length limit for each iteration. (17) The information processing device according to any one of (7) to (16), wherein the subdivision setting information includes information specifying an iteration at which control of termination of subdivision starts. (18) The information processing device according to any one of (1) to (17), wherein the subdivision processing unit, as processing of a first iteration, sets a subdivision pattern for the triangle based on the base mesh of the current frame obtained by applying a motion vector of the current frame to the base mesh of a key frame, and applies the subdivision pattern to divide the edges of the base mesh of the current frame and subdivide the triangles. (19) The information processing device according to any one of (1) to (18), wherein the subdivision processing unit applies a subdivision pattern of the triangle of a key frame as a first iteration process to divide the edges of the base mesh of the current frame obtained by applying a motion vector of the current frame to the base mesh of the key frame and subdivision of the triangle. (20) The information processing device according to any one of (1) to (19), further comprising a subdivision setting information acquisition unit that acquires subdivision setting information related to the subdivision process, wherein the subdivision processing unit is configured to set, based on the acquired subdivision setting information, whether to set the subdivision pattern of the triangle based on the base mesh of the current frame obtained by applying a motion vector of the current frame to the base mesh of the key frame, or to apply the subdivision pattern of the triangle of the key frame, in the first iteration process. (21) The information processing device according to any one of (1) to (20), further comprising a subdivision setting information acquisition unit that acquires subdivision setting information related to the subdivision processing, wherein the subdivision processing unit is configured to set a subdivision pattern when dividing the triangle into three parts based on the acquired subdivision setting information.(22) The information processing device according to any one of (1) to (21), wherein the subdivision processing unit determines whether to terminate the subdivision processing by comparing the square of the edge length of the edge with the square of an edge length limit. (23) The information processing device according to any one of (1) to (22), wherein the subdivision processing unit determines whether to terminate the subdivision processing by converting the edge length of the edge into an integer using a predetermined operation that converts a square root into an integer and comparing the integer with an edge length limit. (24) The information processing device according to any one of (1) to (23), further comprising a subdivision setting information acquisition unit that acquires subdivision setting information related to the subdivision processing, wherein the subdivision setting information includes information specifying the number of digits to truncate the edge length, and wherein the subdivision processing unit determines whether to terminate the subdivision processing by truncating the edge length of the edge to the number of digits specified by the subdivision setting information and comparing the edge length truncated to the number of digits with the edge length limit. (25) An information processing device described in any of (1) to (24), further comprising: a base mesh decoding unit that decodes encoded data of the base mesh and generates the base mesh; a displacement vector decoding unit that decodes encoded data of displacement vectors indicating differences in vertex positions between the mesh generated by the subdivision process and the original mesh and generates the displacement vectors; and a displacement vector application unit that applies the displacement vectors to vertices of the mesh based on the edge information and the triangle information stored in the buffer.(26) An information processing method including: in each iteration of a subdivision process that recursively repeats subdivision of triangles that constitute a base mesh, setting a first storage location for storing edge information about the edges of the triangles and a second storage location for storing triangle information that is information about the triangles; as the processing of the current iteration of the subdivision process, dividing the edges and subdividing the triangles for the mesh generated by the processing of the previous iteration; storing the edge information of the edges generated in the current iteration in the first storage location of a buffer, and storing the triangle information of the triangles generated in the current iteration in the second storage location of the buffer; wherein the base mesh is a mesh obtained by thinning out vertices from an original mesh to be coded that is composed of vertices and connections that represent a three-dimensional structure of the object. (27) A program for causing a computer to execute a process comprising: in each iteration of a subdivision process that recursively repeats subdivision of triangles that constitute a base mesh with respect to the base mesh, setting a first storage location for storing edge information regarding the edges of the triangles and a second storage location for storing triangle information, which is information regarding the triangles; as the processing of the current iteration of the subdivision process, dividing the edges and subdividing the triangles for the mesh generated by the processing of the previous iteration; storing the edge information of the edges generated in the current iteration in the first storage location of a buffer, and storing the triangle information of the triangles generated in the current iteration in the second storage location of the buffer; wherein the base mesh is a mesh obtained by thinning out vertices from an original mesh to be coded that is composed of vertices and connections that represent the three-dimensional structure of the object.
[0336] (31) An information processing device comprising: a subdivision setting unit that generates subdivision setting information for a subdivision process that recursively repeats subdivision of triangles constituting a base mesh, the subdivision setting information including information regarding a setting of a first storage location that stores edge information related to edges of the triangles and a second storage location that stores triangle information that is information related to the triangles; and an atlas information encoding unit that encodes atlas information of 3D data including the base mesh, the atlas information including the subdivision setting information, wherein the base mesh is a mesh obtained by thinning vertices from an original mesh to be encoded that is composed of vertices and connections that represent a three-dimensional structure of an object. (32) The information processing device according to (31), wherein the subdivision setting information includes an edge length limit that is applied to the subdivision process. (33) The information processing device according to (32), wherein the edge length limit is set for each sequence of the mesh. (34) The information processing device according to (32) or (33), wherein the edge length limit is set for each frame of the mesh. (35) The information processing device according to any one of (32) to (34), wherein the edge length limit is set for each patch, which is a partial region of the mesh and is a unit projected onto a two-dimensional region. (36) The information processing device according to any one of (32) to (35), wherein the edge length limit is set for each independent partial region, which is a partial region of the mesh and whose edge does not contact other regions. (37) The information processing device according to any one of (32) to (36), wherein the subdivision setting information includes information for selecting whether to specify the edge length limit for a current processing unit or to apply the edge length limit for a higher-level processing unit. (38) The information processing device according to any one of (32) to (37), wherein the subdivision setting information includes information for specifying, for each iteration, whether control of termination of subdivision using the edge length limit is valid. (39) The information processing device according to (38), wherein the subdivision setting information includes information for specifying the edge length limit only if there is an iteration in which control of termination of subdivision using the edge length limit is valid.(40) The information processing device according to (38) or (39), wherein the subdivision setting information includes information specifying the edge length limit regardless of whether control of subdivision termination using the edge length limit is valid. (41) The information processing device according to any of (32) to (40), wherein the subdivision setting information includes information specifying the edge length limit for each iteration. (42) The information processing device according to any of (32) to (41), wherein the subdivision setting information includes information specifying an iteration at which control of subdivision termination starts. (43) The information processing device according to any of (31) to (42), wherein the subdivision setting information includes information specifying whether, in processing of a first iteration, a subdivision pattern of the triangle is set based on the base mesh of the current frame to which a motion vector of the current frame is applied to the base mesh of a key frame, or whether the subdivision pattern of the triangle of the key frame is applied. (44) The information processing device according to any one of (31) to (43), wherein the subdivision setting information includes designation information for designating a subdivision pattern when the triangle is divided into three. (45) The information processing device according to (44), wherein the designation information designates the subdivision pattern in which the divided edges generated by the subdivision of the triangle have longer lengths. (46) The information processing device according to (44) or (45), wherein the designation information designates the subdivision pattern in which the divided edges generated by the subdivision of the triangle have shorter lengths. (47) The information processing device according to any one of (44) to (46), wherein the designation information designates the subdivision pattern in which the vertices of new edges generated by the subdivision of the triangle have smaller identification numbers. (48) The information processing device according to (31), wherein the subdivision setting information includes information for designating the number of digits to truncate the edge length. (49) The information processing device according to any one of (31) to (48), further comprising: a base mesh encoding unit that encodes the base mesh; and a displacement vector encoding unit that encodes a displacement vector that indicates a difference in vertex positions between the mesh generated by the subdivision process and the original mesh.(50) An information processing method comprising: generating subdivision setting information for a subdivision process that recursively repeats subdivision of triangles constituting a base mesh, the subdivision setting information including information regarding the setting of a first storage location that stores edge information related to edges of the triangles and a second storage location that stores triangle information that is information related to the triangles; and encoding atlas information of 3D data including the base mesh, the atlas information including the subdivision setting information, wherein the base mesh is a mesh obtained by thinning out vertices from an original mesh to be encoded that is composed of vertices and connections that represent a three-dimensional structure of an object. (51) A program for causing a computer to execute a process comprising: generating subdivision setting information for a subdivision process that recursively repeats subdivision of triangles constituting a base mesh, the subdivision setting information including information regarding the setting of a first storage location that stores edge information related to the edges of the triangles and a second storage location that stores triangle information that is information related to the triangles; and encoding atlas information of 3D data including the base mesh, the atlas information including the subdivision setting information, wherein the base mesh is a mesh obtained by thinning out vertices from an original mesh to be encoded that is composed of vertices and connections that represent the three-dimensional structure of the object.
[0337] 300 Encoding device, 311 Preprocessing unit, 312 V-DMC encoding unit, 321 Base mesh generation unit, 322 Atlas information generation unit, 323 Subdivision setting unit, 324 Displacement vector generation unit, 351 Atlas information encoding unit, 352 Base mesh encoding unit, 353 Displacement vector correction unit, 354 Displacement vector encoding unit, 355 Mesh reconstruction unit, 356 Attribute map conversion unit, 357 Attribute encoding unit, 358 Multiplexing unit, 400 Decoding device, 411 Demultiplexing unit, 412 Atlas information decoding unit, 413 Base mesh decoding unit, 414 Subdivision unit, 415 Displacement vector decoding unit, 416 Displacement vector application unit, 417 Attribute decoding unit, 418 Attribute application unit, 419 Display processing unit 421 storage position setting unit, 422 subdivision processing unit, 423 information storage unit, 511 motion vector generation unit, 512 motion vector encoding unit, 521 motion vector decoding unit, 522 motion vector application unit, 900 computer
Claims
1. An information processing device comprising: a storage position setting unit that sets a first storage position for storing edge information regarding the edges of the triangles and a second storage position for storing triangle information, which is information regarding the triangles, in each iteration of a subdivision process that recursively repeats subdivision of the triangles that make up the base mesh; a subdivision processing unit that, as the processing of the current iteration of the subdivision process, divides the edges and subdivides the triangles for the mesh generated by the processing of the previous iteration; and an information storage unit that stores the edge information of the edges generated in the current iteration in the first storage position of a buffer and stores the triangle information of the triangles generated in the current iteration in the second storage position of the buffer, wherein the base mesh is a mesh obtained by thinning out vertices from an original mesh to be encoded that is composed of vertices and connections that represent the three-dimensional structure of the object.
2. The information processing device according to claim 1, wherein the storage position setting unit sets the first storage position for the edge information of the divided edges based on the number of divided edges that are the edges after division in the processing of the current iteration.
3. The information processing device according to claim 2, wherein the storage position setting unit derives the divided edges based on an edge length limit and sets the first storage position for the edge information of the divided edges based on a cumulative sum of the number of the divided edges.
4. The information processing device described in claim 3, wherein the storage position setting unit sets the first storage position for the edge information of a new edge, which is the edge generated by the current iteration processing, based on the cumulative sum of the number of divided edges and the cumulative sum of the number of triangles after subdivision in the current iteration processing.
5. The information processing device according to claim 1, wherein the storage location setting unit sets the second storage location based on the number of triangles after subdivision in the current iteration process.
6. The information processing device according to claim 5, wherein the storage location setting unit derives a subdivision pattern of the triangle based on an edge length restriction, and sets the second storage location based on the cumulative sum of the number of triangles after subdivision in the processing of the current iteration to which the subdivision pattern is applied.
7. An information processing device as described in claim 1, further comprising a subdivision setting information acquisition unit that acquires subdivision setting information related to the subdivision processing, wherein the storage position setting unit sets the first storage position and the second storage position based on an edge length restriction included in the subdivision setting information.
8. The information processing device according to claim 7, wherein the edge length limit is set for each independent partial region of the mesh, the edge of which does not contact any other region.
9. The information processing apparatus according to claim 7, wherein the subdivision setting information includes information specifying, for each iteration, whether or not control of the termination of subdivision using the edge length restriction is valid.
10. The information processing device according to claim 9, wherein the subdivision setting information includes information that specifies the edge length limit only when there is an iteration for which control of the termination of subdivision using the edge length limit is effective.
11. The information processing apparatus according to claim 7, wherein the subdivision setting information includes information specifying the edge length limit for each iteration.
12. The information processing device according to claim 7, wherein the subdivision setting information includes information specifying an iteration at which control of the termination of subdivision starts.
13. The information processing device according to claim 1, wherein the subdivision processing unit, as a first iteration process, sets a subdivision pattern of the triangle based on the base mesh of the current frame to which the motion vector of the current frame is applied to the base mesh of the key frame, and applies the subdivision pattern to divide the edges of the base mesh of the current frame and subdivide the triangles.
14. The information processing device according to claim 1, wherein the subdivision processing unit, as a first iteration process, applies a subdivision pattern of the triangle of the key frame to divide the edges of the base mesh of the current frame to which the motion vector of the current frame has been applied to the base mesh of the key frame, and performs subdivision of the triangles.
15. An information processing device according to claim 1, further comprising a subdivision setting information acquisition unit that acquires subdivision setting information related to the subdivision processing, wherein the subdivision processing unit is configured to set a subdivision pattern when dividing the triangle into three parts based on the acquired subdivision setting information.
16. The information processing device according to claim 1, wherein the subdivision processing unit determines whether to terminate the subdivision processing by comparing the square of the edge length of the edge with the square of an edge length limit.
17. An information processing method comprising: in each iteration of a subdivision process that recursively repeats subdivision of triangles that constitute a base mesh, setting a first storage location for storing edge information regarding the edges of the triangles and a second storage location for storing triangle information, which is information regarding the triangles; as the processing of the current iteration of the subdivision process, dividing the edges and subdividing the triangles for the mesh generated by the processing of the previous iteration; storing the edge information of the edges generated in the current iteration in the first storage location of a buffer, and storing the triangle information of the triangles generated in the current iteration in the second storage location of the buffer; wherein the base mesh is a mesh obtained by thinning out vertices from an original mesh to be coded that is composed of vertices and connections that represent the three-dimensional structure of the object.
18. An information processing device comprising: a subdivision setting unit that generates subdivision setting information for a subdivision process that recursively repeats subdivision of triangles that constitute a base mesh, the subdivision setting information including information regarding the setting of a first storage location that stores edge information related to the edges of the triangles and a second storage location that stores triangle information that is information related to the triangles; and an atlas information encoding unit that encodes atlas information of 3D data including the base mesh, the atlas information including the subdivision setting information, wherein the base mesh is a mesh obtained by thinning out vertices from an original mesh to be encoded that is composed of vertices and connections that represent the three-dimensional structure of the object.
19. The information processing device according to claim 18, wherein the subdivision setting information includes an edge length restriction to be applied to the subdivision process.
20. An information processing method comprising: generating subdivision setting information for a subdivision process that recursively repeats subdivision of triangles constituting a base mesh, the subdivision setting information including information regarding the setting of a first storage location that stores edge information related to the edges of the triangles and a second storage location that stores triangle information that is information related to the triangles; and encoding atlas information of 3D data including the base mesh, the atlas information including the subdivision setting information, wherein the base mesh is a mesh obtained by thinning out vertices from an original mesh to be encoded that is composed of vertices and connections that represent the three-dimensional structure of an object.