Information processing device and method
The information processing device and method address the complexity of subdivision processing in V-DMC by predicting and managing the number of divided edges in triangle subdivision, achieving efficient buffer management and reduced processing load through estimated value-based address derivation, thus enhancing the encoding efficiency of 3D mesh data.
Patent Information
- Application Number
- PCT/JP2024/025564
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-07-19
- Filing Date
- 2024-07-17
- Publication Date
- 2025-01-23
AI Technical Summary
Conventional methods for encoding 3D mesh data using V-DMC face challenges in managing triangle information and controlling the load of subdivision processing, leading to increased buffer management complexity and potential inefficiencies.
An information processing device and method that decodes and subdivides base mesh triangles, predicts the number of divided edges, and uses estimated values to derive addresses for storing triangle information, allowing for efficient buffer management and reduced processing load by varying the number of edges to be divided during subdivision.
This approach effectively suppresses the increase in processing load and buffer capacity requirements, enabling more efficient subdivision processing and maintaining the quality of mesh data while reducing unnecessary processing.
Smart Images

Figure JP2024025564_23012025_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, with conventional base mesh subdivision methods, buffer management of triangle information becomes complicated, and there is a risk of increasing 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 base mesh decoding unit that decodes encoded data of a base mesh and generates the base mesh; a displacement vector decoding unit that decodes encoded data of a displacement vector and generates the displacement vector; a subdivision processing unit that subdivides triangles of the base mesh and derives a number of divided edges representing the number of edges into which the triangle is divided when the triangle is subdivided in the triangle after the subdivision; an address derivation unit that derives an address of a buffer that stores triangle information using the derived number of divided edges and an estimated value of the number of triangles for each number of divided edges after the subdivision; and a displacement vector application unit that applies, based on the triangle information, displacement vectors to division points, which are vertices of the base mesh into which the triangle is subdivided. The base mesh is a mesh in which vertices have been thinned out from an original mesh to be encoded, which is composed of vertices and connections that represent the three-dimensional structure of an object. The displacement vector indicates the difference in position between the division points and the vertices of the original mesh. The triangle information is information about the triangle, including identification information for the triangle.
[0008] an information processing method according to one aspect of the present technology; decoding encoded data of a base mesh, generating the base mesh; decoding encoded data of a displacement vector, generating the displacement vector; subdividing a triangle of the base mesh; deriving a number of division edges representing the number of edges into which the triangle is divided when the triangle is subdivided, for the triangle after the subdivision; deriving an address of a buffer for storing triangle information using the derived number of division edges and an estimate of the number of triangles for each of the number of division edges after the subdivision; storing the triangle information at the derived address; and applying the displacement vector to division points, which are vertices of the base mesh into which the triangle is subdivided, based on the triangle information; 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 a three-dimensional structure of an object; the displacement vector indicates a difference in position between the division points and the vertices of the original mesh; and the triangle information is information about the triangle, including identification information of the triangle.
[0009] According to another aspect of the present technology, there is provided an information processing device including: a prediction unit that subdivides triangles of a base mesh and predicts a number of divided edges representing the number of edges to be divided when the triangle is subdivided in the subdivided triangle; an estimate derivation unit that derives an estimate of the number of triangles for each number of divided edges using the predicted number of divided edges of the triangle after the subdivision; a base mesh encoding unit that encodes the base mesh; a displacement vector encoding unit that encodes a displacement vector; and a bitstream generation unit that generates a bitstream including the derived estimate, encoded data of the base mesh, and encoded data of the displacement vector, 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; the displacement vector indicates a difference in position between a division point and a vertex of the original mesh; and the division point indicates a vertex of the base mesh obtained by subdividing the triangle.
[0010] Another aspect of the present technology is an information processing method that subdivides triangles of a base mesh, predicts a number of division edges for the triangle after the subdivision, representing the number of edges that will be divided when the triangle is subdivided, derives an estimate of the number of triangles for each number of division edges using the predicted number of division edges for the triangle after the subdivision, encodes the base mesh, encodes a displacement vector, and generates a bitstream including the derived estimate, encoded data of the base mesh, and encoded data of the displacement vector, 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, the displacement vector indicates a difference in position between a division point and a vertex of the original mesh, and the division point indicates a vertex of the base mesh into which the triangle is subdivided.
[0011] In an information processing device and method according to one aspect of the present technology, encoded data of a base mesh is decoded to generate the base mesh, encoded data of a displacement vector is decoded to generate the displacement vector, triangles of the base mesh are subdivided, a number of split edges representing the number of edges into which the triangle will be divided when subdivided is derived for the subdivided triangle, the derived number of split edges and an estimated value of the number of triangles for each number of split edges after subdivision are used to derive an address of a buffer for storing triangle information, the triangle information is stored at the derived address, and the displacement vector is applied to the division points, which are vertices of the base mesh into which the triangle is subdivided, based on the triangle information.
[0012] In another aspect of the information processing device and method of the present technology, a triangle of a base mesh is subdivided, a number of split edges representing the number of edges into which the triangle will be divided when subdivided is predicted for the subdivided triangle, the predicted number of split edges for the subdivided triangle is used to derive an estimate of the number of triangles for each number of split edges, the base mesh is encoded, the displacement vector is encoded, and a bitstream including the derived estimate, encoded data of the base mesh, and encoded data of the displacement vector is generated.
[0013] FIG. 1 is a diagram illustrating a mesh. FIG. 1 is a diagram illustrating V-DMC. FIG. 1 is a diagram illustrating management of triangle information in subdivision processing. FIG. 2 is a diagram illustrating an example of a method for managing triangle information in subdivision processing. FIG. 3 is a diagram illustrating an example of a triangle subdivision method. FIG. 4 is a diagram illustrating an example of derivation of edge length. FIG. 5 is a diagram illustrating an example of buffer management of triangle information. FIG. 6 is a diagram illustrating an example of a method for derivation of address. FIG. 7 is a diagram illustrating an example of recursive subdivision. FIG. 8 is a diagram illustrating an example of recursive subdivision. FIG. 9 is a diagram illustrating an example of buffer management of triangle information in recursive subdivision. FIG. 10 is a diagram illustrating an example of syntax for estimated values. FIG. 11 is a diagram illustrating an example of syntax for edge length restriction information. FIG. 12 is a diagram illustrating an example of syntax for edge length restriction information. FIG. 13 is a diagram illustrating an example of syntax for sorting order information. FIG. 14 is a diagram illustrating an example of prediction processing. FIG. 15 is a block diagram illustrating an example of the main configuration of an encoding device. FIG. 16 is a flowchart illustrating an example of the flow of encoding processing. FIG. 17 is a block diagram illustrating an example of the main configuration of a decoding device. FIG. 18 is a flowchart illustrating an example of the flow of decoding processing. FIG. 19 is a flowchart illustrating an example of the flow of estimation processing. FIG. 19 is a flowchart illustrating an example of the flow of subdivision processing. FIG. 19 is a block diagram illustrating an example of the main configuration of an encoding device. 1 is a flowchart illustrating an example of the flow of an encoding process. FIG. 2 is a flowchart illustrating an example of the flow of an estimation process. FIG. 3 is a block diagram illustrating 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 illustrating an example of an inner edge and an outer edge. FIG. 6 is a diagram illustrating an example of a prediction of the number of divided edges. FIG. 7 is a diagram illustrating an example of a prediction of the number of divided edges. FIG. 8 is a diagram illustrating an example of a prediction of the number of divided edges. FIG. 9 is a flowchart illustrating an example of the flow of an estimation process. FIG. 10 is a block diagram illustrating 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 process 3. Buffer management of triangle information using estimated values of the number of triangles for each number of divided edges 4. First embodiment (encoding device / decoding device) 5. Second embodiment (encoding device / decoding device) 6. Prediction of the number of divided edges using outer edges 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)
[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, the subdivision of the base mesh during decoding will be described. As described above, the base mesh has lower resolution (fewer triangles) than the original mesh, so the triangles are divided until the resolution is equivalent to that of the original mesh (i.e., vertices and edges are added to divide the triangles). This subdivision method is arbitrary, but generally, a mesh of the desired resolution is restored (generated) by recursively adding vertices and edges to the base mesh so as to divide each triangle into a predetermined number (i.e., hierarchically subdividing the base mesh).
[0030] For example, in a method called midpoint subdivision, a division point (vertex) is added to bisect the edge, dividing the triangle into four parts. This process is repeated recursively to restore (generate) a mesh with the desired level of detail. The following description will use midpoint subdivision as an example.
[0031] 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.
[0032] As described above, when subdividing a base mesh, the level of detail is updated hierarchically through a recursive process. This means that vertex, edge, and triangle information are also updated hierarchically. In this specification, the level of detail (also referred to as LoD (Level of Detail)) is explained assuming that the base mesh (LoD0) is 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).
[0033] 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.
[0034] 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).
[0035] 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.
[0036] The updated triangle information is stored in a buffer. For example, in midpoint subdivision, as shown in FIG. 3, triangle information for the central triangle of the four-division triangle 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 the addresses are contiguous to the addresses where the triangle information before subdivision is stored. In other words, this incremental triangle information is stored at addresses with an offset so that the addresses are contiguous to the addresses 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 this 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.
[0037] 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.
[0038] Therefore, it was considered to set a minimum limit on the edge length. For example, subdivision is 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.
[0039] However, when the midpoint subdivision method is applied, it controls whether or not a triangle is subdivided. Therefore, if even one edge 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.
[0040] 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.
[0041] Hereinafter, the number of edges to be divided (halved) among the three edges of one triangle will also be referred to as the “number of divided edges.” In other words, the number of divided edges is variable during subdivision.
[0042] However, if the number of divided edges were variable in this way, the increase in the number of triangles due to subdivision would be variable, which could complicate buffer management of triangle information. For example, as with midpoint subdivision, if the offset was calculated assuming that the number of triangles would be quadrupled by subdivision, this method of subdivision might not actually result in quadrupling, which could result in scattered addresses where triangle information is stored (creating unused areas). This could result in an increase in the buffer capacity required to store triangle information.
[0043] To prevent unused areas and limit the increase in buffer capacity, more advanced buffer management may be necessary. This means that buffer management of 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.
[0044] 3. Buffer management of triangle information using estimated values for the number of triangles per number of divided edges Method 1 Therefore, as shown in the top row of the table in Figure 4, in triangle subdivision processing with a variable number of divided edges, the address where triangle information is stored is derived using estimated values for the number of triangles per number of divided edges (Method 1).
[0045] For example, the first information processing device may include a base mesh decoding unit that decodes encoded data of a base mesh and generates the base mesh; a displacement vector decoding unit that decodes encoded data of a displacement vector and generates the displacement vector; a subdivision processing unit that subdivides triangles of the base mesh and derives a number of divided edges representing the number of edges into which the triangle is divided when the triangle is subdivided; an address derivation unit that derives the address of a buffer that stores triangle information using the derived number of divided edges and an estimated value of the number of triangles for each number of divided edges after subdivision; a triangle information storage processing unit that stores the triangle information at the derived address; and a displacement vector application unit that applies displacement vectors to division points, which are vertices of the base mesh into which the triangle is subdivided, based on the triangle information.
[0046] In addition, in a first information processing method executed by a first information processing device, encoded data of a base mesh is decoded to generate the base mesh, encoded data of a displacement vector is decoded to generate the displacement vector, triangles of the base mesh are subdivided, a number of split edges representing the number of edges into which the triangle is divided when subdivided in the subdivided triangle is derived, the derived number of split edges and an estimated value of the number of triangles for each number of split edges after subdivision are used to derive an address of a buffer for storing triangle information, the triangle information is stored at the derived address, and the displacement vector is applied to the division points, which are vertices of the base mesh into which the triangle is subdivided, based on the triangle information.
[0047] The base mesh is a mesh in which vertices are thinned out from the original mesh to be coded, which is composed of vertices and connections that represent the three-dimensional structure of the object. The displacement vector indicates the difference in position between the division point and the vertices of the original mesh. The triangle information is information about the triangle, including the triangle's identification information.
[0048] In other words, rather than a subdivision method with a fixed number of triangle divisions, such as midpoint subdivision, this method employs a triangle subdivision method with a variable number of divided edges, as described above. The number of divided edges refers to the number of edges that are divided (bisected) by subdividing the triangle out of the three sides (three edges) of the triangle. In other words, "the number of divided edges is variable" indicates that there are multiple ways to divide a triangle. Unless otherwise specified, the number of divided edges (including the case where no division is performed) can take on a value between 0 and 3. In other words, the way a triangle is divided (the number of divisions) depends on the number of divided edges. Therefore, a triangle subdivision method with a variable number of divided edges can also be said to have a variable number of triangle divisions (the increase in triangle information). As described above, by applying this subdivision method and limiting subdivision based on edge length (setting a minimum value limit on edge length), it is possible to prevent insufficient subdivision, suppress a decrease in the quality (resolution) of the mesh data, and suppress an increase in unnecessary processing load.
[0049] Figure 5 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 5, is the target of subdivision. Triangle T1 is surrounded by edges E1, E2, and E3.
[0050] For example, if the number of split edges of this triangle T1 is 0, no subdivision is performed because the number of splittable edges is 0. In other words, triangle T1 remains as it is.
[0051] Furthermore, if the number of divided edges of triangle T1 is 1, triangle T1 is subdivided by dividing (bisecting) the longest edge (E2). That is, as shown in the upper right of Figure 5, 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).
[0052] Furthermore, if the number of divided edges of triangle T1 is two, triangle T1 is subdivided by dividing (bisecting) each of the first and second longest edges (E1, E2). That is, as shown in the lower left of Figure 5, 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).
[0053] Furthermore, if the number of divided edges of triangle T1 is three, triangle T1 is subdivided so that all edges (E1, E2, E3) are divided (divided into two equal parts). That is, as shown in the lower right of Figure 5, the division is performed in the same manner as in the case of midpoint subdivision. That is, edge E1 is divided into two equal parts, E7 and E8, and point P5 is added. Edge E2 is divided into two equal parts, E4 and E5, and point P4 is added. Edge E3 is divided into two equal parts, 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).
[0054] Therefore, the increase in the number of triangle information pieces due to subdivision differs depending on the number of divided edges.
[0055] By subdividing a triangle as described above, new edges are generated in addition to the edges that are divided into two equal parts. For example, in the example of FIG. 5 where the number of divided edges is 1, edge E6 is added. Also, in the example of FIG. 5 where the number of divided edges is 2, edges E6 and E9 are added. Also, in the example of FIG. 5 where the number of divided edges is 3, edges E9, E12, and E13 are added. If the edge length of edge E3 is B (known) as in the example of FIG. 6, the length (edge length) β of edge E9 is β = B / 2 based on similarity. Furthermore, the edge length α of edge E6 can be derived using the law of cosines as shown in the following equation (1). As in the example of FIG. 6, 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 lengths of edges E7 and E8 are D (known).
[0056] α=2D^2 + 2C^2 - A^2 ...(1)
[0057] 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 due to subdivision.
[0058] As described above, with this method, the increase in the number of triangle information pieces varies depending on the number of divided edges. In other words, if the number of divided edges is the same, the increase in the number of triangle information pieces will be the same. Therefore, for example, as shown in FIG. 7, by grouping triangle information pieces by the number of divided edges, it becomes easier to manage the addresses where the triangle information pieces are stored. Area 121 of buffer 120 shown in FIG. 7 stores triangle information pieces for three divided edges. Area 122 stores triangle information pieces for two divided edges. Area 123 stores triangle information pieces for one divided edge. Area 124 stores triangle information pieces for zero divided edges. This makes it easy to calculate the offset according to the number of divided edges (the increase in the number of triangle information pieces).
[0059] 7, for example, suppose the number of triangles for 3 divided edges is p, the number of triangles for 2 divided edges is q, the number of triangles for 1 divided edge is r, and the number of triangles for 0 divided edges is s. If the number of triangles (p, q, r, s) for each divided edge is known, the offset value of the address storing the triangle information for each divided edge can be accurately derived.
[0060] Therefore, as described above, the address where triangle information is stored is derived using the estimated number of triangles (p, q, r, s) for each number of divided edges. An example of calculations for deriving addresses for the example division method of Figure 5 is shown in box 131 in Figure 8. For example, let id_now be the identification information for triangle information in the current LoD, and id_next be the identification information for triangle information in the next LoD. Note that the "b" in "a_b" refers to the subscript "a." When the number of divided edges is three, the triangle is divided into four, so the amount of triangle information increases fourfold. Therefore, when triangle information is organized by the number of divided edges as in the example of Figure 7, id_next = (id_now × 4). The write locations for triangle information in the next LoD can be expressed as id_next + 0, id_next + 1, id_next + 2, and id_next + 3. Furthermore, when the number of split edges is 2, the triangle is divided into three, and the triangle information increases threefold. Therefore, when triangle information is organized by the number of split edges as in the example of Figure 7, id_next = (id_now × 3) + (4 × p). The write location of the triangle information for the next LoD can be expressed as id_next + 0, id_next + 1, id_next + 2. When the number of split edges is 1, the triangle is divided into two, and the triangle information increases twice as much. Therefore, when triangle information is organized by the number of split edges as in the example of Figure 7, id_next = (id_now × 2) + (4 × p) + (3 × q). The write location of the triangle information for the next LoD can be expressed as id_next + 0, id_next + 1. When the number of split edges is 0, the triangle is not divided, and the triangle information does not increase. Therefore, when triangle information is collected for each number of divided edges as in the example of FIG. 7, it can be expressed as id_next=(id_now)+(4×p)+(3×q)+(2×r).The write position of the triangle information for the next LoD can be expressed as id_next. In this way, the write position of the triangle information can be identified with a simple calculation, so that the occurrence of unused areas can be easily reduced. Therefore, an increase in buffer capacity can be reduced without requiring complex processing. In other words, an increase in the load of the subdivision process can be reduced.
[0061] In deriving the addresses for storing the triangle information, the addresses may be derived so as to sort the triangle information in descending order of the number of divided edges, as in the example of Fig. 7. For example, in the first information processing device, the address derivation unit may derive the addresses using the estimated values and the number of divided edges so that the triangle information is sorted in descending order of the number of divided edges.
[0062] Repeated subdivision may result in a decrease in the number of divided edges, but it will not increase. Therefore, sorting in this way makes it easier to manage triangle information.
[0063] Note that, as with midpoint subdivision, the subdivision process may be repeated recursively, i.e., triangles of the base mesh may be repeatedly subdivided.
[0064] 9, triangle 141-1 may be subdivided into triangles 141-2 and 141-3. In this example, the number of divided edges for triangles 141-1, 141-2, and 141-3 is three. Therefore, triangles 141-1 and 141-2 are each divided into four.
[0065] 10, triangle 142-1 may be subdivided into triangles 142-2 and 142-3. In this example, triangle 142-1 has three divided edges, triangle 142-2 has two divided edges, and triangle 142-3 has one divided edge. Therefore, triangle 142-1 is divided into four, and each triangle of triangle 142-2 is divided into three.
[0066] 11, triangle 143-1 may be subdivided into triangles 143-2 and 143-3. In this example, triangle 143-1 has 2 divided edges, triangle 143-2 has 0 divided edges, and triangle 143-3 has 0 divided edges. Therefore, triangle 143-1 is divided into three, and triangle 143-2 is not divided.
[0067] When subdivision is repeated recursively like this, triangle information is stored in the buffer for each iteration (each LoD of subdivision). Therefore, the address for storing the triangle information can be derived using the estimated values (p, q, r, s) of the number of triangles for each number of divided edges corresponding to the current iteration (the LoD being processed).
[0068] <Method 1-1> When the above-mentioned Method 1 is applied, an estimated value may be transmitted as shown in the second row from the top of the table in Figure 4 (Method 1-1). In other words, the estimated value of the number of triangles for each divided edge number may be supplied from an external source. Then, the estimated value may be acquired and used.
[0069] For example, the first information processing device may further include an estimated value acquisition unit that acquires the estimated value, and the address derivation unit may derive an address using the derived number of divided edges and the acquired estimated value.
[0070] In the first information processing device, the subdivision processing unit may recursively repeat subdivision of triangles of the base mesh and derivation of the number of divided edges of the triangles after the subdivision a predetermined number of times. The estimated value acquisition unit may acquire the estimated value for each iteration. The address derivation unit may derive an address for each iteration using the estimated value acquired in that iteration and the number of divided edges derived in that iteration.
[0071] The estimated values may be transmitted in any format. An example of the syntax of the estimated values is shown in FIG. 13. As shown in FIG. 13, the estimated values (p, q, r, s) of the number of triangles for each number of divided edges are specified by the respective variables (sls_level(0 to 3)_count). When the subdivision process is repeated recursively, the estimated values may be provided as information for each LoD.
[0072] <Method 1-2> When the above-mentioned method 1 is applied, the number of divided edges may be determined based on an edge length restriction, as shown in the third row from the top of the table in Figure 4 (Method 1-2). In other words, a restriction based on edge length may be imposed on the subdivision of a triangle. As described above, whether or not to divide each edge is determined, and the number of divided edges is set according to the result of the determination.
[0073] For example, in the first information processing device, the subdivision processing unit may determine whether or not to perform division for each edge of a triangle based on an edge length limit, which is a condition for the edge length related to the division of the edge, and may derive the number of divided edges of the triangle after the subdivision based on the result of the determination.
[0074] By doing so, as described above, it is possible to guarantee the size of the triangle, and to suppress an increase in the load of the reconstruction process and the rendering process.
[0075] <Method 1-2-1> When the above-described Method 1-2 is applied, the edge length limit may be transmitted (Method 1-2-1) as shown in the fourth row from the top of the table in Fig. 4. That is, the above-described edge length limit may be supplied from an external device (for example, an encoder (second information processing device)) to a decoder (second information processing device). The edge length limit may then be acquired and used in the subdivision process.
[0076] For example, the first information processing device may further include an edge length restriction acquisition unit that acquires edge length restriction information indicating an edge length restriction, and the subdivision processing unit may determine whether to divide each edge of the triangle based on the acquired edge length restriction information.
[0077] Note that this edge length limit information may be information indicating an edge length limit for each sequence. For example, in the syntax example shown in Figure 14, the edge length limit min_edge_length is stored in the sequence parameters. In other words, asps_vdmc_ext_subdivision_min_edge_length shown in this figure is the edge length limit for each sequence that is applied to that sequence.
[0078] Alternatively, this edge length limit information may be information indicating a frame-by-frame edge length limit. For example, in the syntax example shown in Fig. 15, the edge length limit min_edge_length is stored in the frame parameters. In other words, afps_vdmc_ext_subdivision_min_edge_length shown in this figure is the frame-by-frame edge length limit applied to that frame.
[0079] This edge length limit information may also be information indicating an edge length limit for each patch. For example, in the syntax example shown in FIG. 16, the edge length limit min_edge_length is stored in the patch data unit. In other words, pdu_subdivision_min_edge_length[tileID][patchIdx] shown in this figure is the edge length limit for each patch that is applied to the patch (the patch indicated by the identification information tileID and the identification information patchIdx).
[0080] As described above, the edge length restriction information can indicate the edge length restriction in any data unit, and may be in a data unit other than the above examples.
[0081] <Method 1-3> When the above-described method 1 is applied, if there are multiple types of divided edge numbers as shown in the fifth row from the top of the table in FIG. 4, the numbers of divided edges may be unified (method 1-3).
[0082] For example, in a first information processing device, when a subdivision processing unit derives multiple types of numbers of divided edges for a group of triangles into which a single triangle of a base mesh is subdivided, the numbers of divided edges for all triangles in the group of triangles may be unified to a predetermined value.
[0083] For example, if a triangle with two split edges is subdivided, the number of split edges may be different (multiple numbers of split edges may exist in a triangle group corresponding to one triangle in the base mesh). If such a case were allowed, it would be cumbersome to manage the (estimated) number of triangles for each number of split edges, which could complicate the address derivation process. Therefore, in such cases, the number of split edges for that triangle group is unified to a single value.
[0084] This unifying value (predetermined value) may be any value. For example, this predetermined value may be the maximum or minimum value of the predicted number of divided edges of the triangle group. In this way, limiting the number of divided edges of the triangle group obtained by subdividing one triangle of the base mesh to one type makes it easier to manage the (estimated) number of triangles for each number of divided edges, thereby suppressing an increase in the load of the subdivision process. This unifying value may be predetermined or switchable. For example, as shown in FIGS. 14 to 16 , the unifying value may be supplied from an external device (e.g., an encoder) to the decoder (second information processing device). In other words, for example, this unifying value may be controlled by an external device such as the encoder (second information processing device). In FIGS. 14 to 16 , Level_estimate_mode indicates a mode for unifying the number of divided edges when there are multiple types of divided edges (hereinafter also referred to as the unified number of divided edges mode). When mode=0, the number of divided edges is unified to its minimum value. When mode=1, the number of divided edges is unified to its maximum value. This division edge count unification mode may be controlled on any data unit basis. For example, it may be controlled on a sequence-by-sequence basis, a frame-by-frame basis, or for each patch within a frame. For example, asps_vdmc_ext_subdivision_level_estimate_mode shown in FIG. 14 indicates the division edge count unification mode for each sequence applied to the sequence. Furthermore, afps_vdmc_ext_subdivision_level_estimate_mode shown in FIG. 15 indicates the division edge count unification mode for each frame applied to the frame. Furthermore, pdu_subdivision_level_estimate_mode shown in FIG. 16 indicates the division edge count unification mode for each patch applied to the patch.
[0085] <Method 1-4> When the above-mentioned Method 1 is applied, the triangle information of the base mesh may be sorted based on the number of divided edges at the end of the triangle subdivision process (Method 1-4), as shown in the sixth row from the top of the table in Fig. 4. For example, sorting the triangle information of the base mesh based on the number of divided edges, as in LoD0 shown in Fig. 12, makes it easier to manage the addresses of triangle information from LoD1 onwards.
[0086] For example, the first information processing device may further include an alignment unit that aligns triangle information. For example, the alignment unit may sort the triangle information of the base mesh based on the number of divided edges at the end of the subdivision process. That is, the number of divided edges at the end of the subdivision process (after a predetermined number of subdivisions) may be used as the sort key, and the triangle information of the base mesh may be used as the sort target. The subdivision processing unit may then use the aligned triangle information to subdivide the triangles of the base mesh. For example, the alignment unit may sort the triangle information in descending order of the number of divided edges. As shown in FIG. 12 , sorting the triangle information in descending order of the number of divided edges facilitates address management of triangle information from LoD 1 onward, as described above.
[0087] <Method 1-4-1> When the above-mentioned Method 1-4 is applied, sorting order information may be transmitted (Method 1-4), as shown in the seventh row from the top of the table in Figure 4. In other words, sorting order information indicating the sorting order of the triangle information of this base mesh may be supplied from an external source. Then, this information may be acquired and the triangle information of the base mesh may be sorted in that order.
[0088] For example, the first information processing device may further include an alignment order information acquisition unit that acquires alignment order information indicating an alignment order of the triangle information, and the alignment unit may align the triangle information of the base mesh based on the acquired alignment order information.
[0089] The sorting order information may be in any format. For example, the sorting order information may be a list of the identification information of the triangles of the base mesh arranged in a predetermined order. FIG. 17 is a diagram showing an example of the syntax of the sorting order information. In FIG. 17, ssi_subdivision_order_index[triangleId] is a parameter indicating the order of triangle information in the subdivision, and the sorting order is indicated using the triangle identification information (triangleId) (i.e., it is a list in which the triangle identification information (triangleId) is arranged in that order). By directly indicating the sorting order in this way, the sorting unit can easily understand the sorting order of the triangles of the base mesh.
[0090] The sorting order information may be information in any data unit, for example, information in frame units.
[0091] <Method 1-5> When the above-mentioned method 1 is applied, the number of triangles (p, q, r, s) for each number of divided edges may be estimated (Method 1-5), as shown in the eighth row from the top of the table in Figure 4. In other words, the number of triangles (p, q, r, s) for each number of divided edges may be estimated, and the estimated value may be used to derive the address of the buffer that stores the triangle information.
[0092] In this case, the subdivision process is predicted (how the triangle will be subdivided is predicted), the number of divided edges in that case is predicted, and the number of triangles for each number of divided edges is estimated according to the predicted number of divided edges.
[0093] The subdivision and edge division number prediction process may be, for example, a pseudo-program process shown in the box in FIG. 18 . In this example, edgeLengths is a parameter indicating the edge lengths of the three sides of a triangle. level_estimate_mode is a parameter indicating the minimum / maximum selection mode when the number of edge divisions is mixed. numOfTriangleType is a parameter indicating the type of triangle. iterationCount is a parameter indicating the maximum number of iterations, i.e., the maximum number of repetitions. subdivLevelDecision is a function that determines the number of edge divisions. l is a parameter indicating the number of edge divisions. Level is a parameter indicating the number of edge divisions after reflecting the minimum / maximum selection. It is a parameter indicating the number of iterations (i.e., LoD). t is triangle identification information. registerLevel is a parameter indicating the number of iterations for each triangle of the base mesh and the final number of edge divisions.
[0094] In other words, this prediction process predicts the number of split edges for each triangle for each iteration (LoD). Then, based on the number of split edges for each triangle in each iteration (LoD) obtained by this process, the number of triangles (p, q, r, s) for each number of split edges for each iteration (LoD) is estimated (aggregated). In this way, an estimated value can be derived.
[0095] <Method 1-5-1> When the above-mentioned Method 1-5 is applied, the decoder may estimate the number of triangles for each number of divided edges (Method 1-5-1), as shown in the ninth row from the top of the table in Fig. 4. In other words, the decoder may perform the above-mentioned prediction and estimation processes.
[0096] For example, the first information processing device may further include a prediction unit that predicts the number of divided edges of a triangle after subdivision, and an estimated value derivation unit that derives an estimated value using the predicted number of divided edges of the triangle after subdivision, and an address derivation unit that derives an address using the derived estimated value and the number of divided edges.
[0097] Of course, the above-mentioned methods can be applied in this case as well, and the same effects as those described above can be obtained.
[0098] For example, the prediction unit may recursively repeat subdividing a triangle of the base mesh and predicting the number of divided edges of the triangle after the subdivision a predetermined number of times. The estimated value derivation unit may then derive an estimated value for each repetition. The subdivision processing unit may recursively repeat subdividing a triangle of the base mesh and deriving the number of divided edges of the triangle after the subdivision a predetermined number of times. The address derivation unit may then derive an address for each repetition using the estimated value and the number of divided edges derived in that repetition.
[0099] The prediction unit may also determine whether or not to divide each edge of a triangle based on an edge length restriction, which is a condition for the edge length related to the edge division, and predict the number of divided edges based on the result of the determination.
[0100] The first information processing device may further include an edge length limit acquisition unit that acquires edge length limit information indicating an edge length limit, and the prediction unit may determine whether to divide each edge of the triangle based on the acquired edge length limit information.
[0101] Note that this edge length restriction information may be information in any data unit, such as information indicating an edge length restriction in units of sequences, information indicating an edge length restriction in units of frames, or information indicating an edge length restriction in units of patches.
[0102] Furthermore, when the prediction unit predicts multiple numbers of divided edges for a group of triangles obtained by subdividing a single triangle of the base mesh, the number of divided edges for all triangles in the group of triangles may be unified to a predetermined value. This predetermined value may be any value. For example, this predetermined value may be the maximum or minimum value of the predicted number of divided edges for the group of triangles.
[0103] The first information processing device may further include an alignment unit that aligns the triangle information. The alignment unit may sort the triangle information in descending order of the number of divided edges. The subdivision processing unit may use the aligned triangle information to subdivide the triangles of the base mesh.
[0104] <Method 1-5-2> When the above-mentioned Method 1-5 is applied, the encoder may estimate the number of triangles for each number of divided edges (Method 1-5-1), as shown in the bottom row of the table in Figure 4. In other words, the encoder may perform the above-mentioned prediction and estimation processes. In this case, the encoder supplies the derived estimates to the decoder.
[0105] For example, the second information processing device may include a prediction unit that subdivides triangles of a base mesh and predicts the number of split edges in the subdivided triangle, which represents the number of edges that will be divided when the triangle is subdivided; an estimate derivation unit that uses the predicted number of split edges in the subdivided triangle to derive an estimate of the number of triangles for each number of split edges; a base mesh encoding unit that encodes the base mesh; a displacement vector encoding unit that encodes the displacement vector; and a bitstream generation unit that generates a bitstream including the derived estimate, encoded data of the base mesh, and encoded data of the displacement vector.
[0106] In addition, in a second information processing method executed by a second information processing device, a triangle of a base mesh is subdivided, and the number of split edges of the subdivided triangle, which represents the number of edges that will be divided when the triangle is subdivided, is predicted, and an estimated value of the number of triangles for each number of split edges is derived using the predicted number of split edges of the subdivided triangle, the base mesh is encoded, the displacement vector is encoded, and a bitstream including the derived estimated value, encoded data of the base mesh, and encoded data of the displacement vector is generated.
[0107] The base mesh is a mesh in which vertices are thinned out from the original mesh to be coded, which is composed of vertices and connections that represent the three-dimensional structure of the object. The displacement vector indicates the difference in position between the division points and the vertices of the original mesh. The division points indicate the vertices of the base mesh into which the triangles are subdivided.
[0108] In this way, an estimated value of the number of triangles for each number of divided edges can be supplied to the decoder (first information processing device). Therefore, the decoder can use the estimated value to derive addresses for storing triangle information, as described above. This allows the decoder to suppress an increase in the load of the subdivision process. In other words, the second information processing device can suppress an increase in the load of the subdivision process.
[0109] Of course, the above-mentioned methods can be applied in this case as well, and the same effects as those described above can be obtained.
[0110] For example, in the second information processing device, the prediction unit may recursively repeat subdividing triangles of a base mesh and predicting the number of divided edges of the triangles after the subdivision a predetermined number of times, and the estimated value derivation unit may derive an estimated value for each repetition.
[0111] In the second information processing device, the prediction unit may determine whether to divide each edge of a triangle based on an edge length limit, which is a condition for edge length regarding edge division, and predict the number of divided edges based on the determination result. The bitstream generation unit may store edge length limit information indicating the edge length limit in the bitstream. This edge length limit information may be information in any data unit. For example, this edge length limit information may be information indicating an edge length limit per sequence, per frame, or per patch. The second information processing device may further include an edge length limit setting unit that sets this edge length limit. The prediction unit may then determine whether to divide each edge of a triangle based on the set edge length limit.
[0112] In the second information processing device, when the prediction unit predicts multiple types of numbers of divided edges for a group of triangles obtained by subdividing a single triangle of the base mesh, the prediction unit may unify the numbers of divided edges for all triangles in the group of triangles to a predetermined value. This predetermined value may be any value. For example, this predetermined value may be the maximum or minimum value of the predicted number of divided edges for the group of triangles.
[0113] The second information processing device may further include an ordering information generation unit that generates ordering information indicating an ordering order of triangle information, which is information about triangles including triangle identification information. The bitstream generation unit may then store the generated ordering information in the bitstream. For example, the ordering information may be a list of triangle identification information arranged in the ordering order. The ordering order may also be in descending order of the number of split edges. The ordering information may also be information indicating an ordering order on a frame-by-frame basis.
[0114] <Combination> The various methods described above (Method 1, Method 1-1, Method 1-2, Method 1-2-1, Method 1-3, Method 1-4, Method 1-4-1, Method 1-5, Method 1-5-1, Method 1-5-2, and other methods described above) may be applied in appropriate combination.
[0115] <4. First embodiment> <Encoding device> The present technology can be applied to an encoding device that encodes a mesh. Fig. 19 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. 19 is a device that encodes a mesh. The encoding device 300 encodes a mesh using a method basically similar to V-DMC described in Non-Patent Document 1, except that the present technology is applied.
[0116] Fig. 19 shows the main processing units, data flows, etc., but is not limited to all that is shown in Fig. 19. In other words, in encoding device 300, there may be processing units that are not shown as blocks in Fig. 19, and there may be processing and data flows that are not shown as arrows, etc. in Fig. 19.
[0117] As shown in FIG. 19, the encoding device 300 includes an edge length limit setting unit 311 , a base mesh encoding unit 312 , a displacement vector encoding unit 313 , an attribute encoding unit 314 , and a multiplexing unit 315 .
[0118] The edge length limit setting unit 311 acquires a base mesh, and sets an edge length limit to be applied to the subdivision of the base mesh based on the base mesh. The edge length limit setting unit 311 supplies edge length limit information indicating the edge length limit to the multiplexing unit 315.
[0119] The base mesh encoding unit 312 acquires and encodes the base mesh to generate encoded data of the base mesh, and supplies the generated encoded data of the base mesh to the multiplexing unit 315.
[0120] The displacement vector encoding unit 313 acquires the displacement vector, packs the displacement vector into a video frame, encodes the displacement vector as a displacement video, and generates encoded data of the displacement vector (encoded data of the displacement video). The displacement vector encoding unit 313 supplies the generated encoded data of the displacement vector to the multiplexing unit 315.
[0121] The attribute encoding unit 314 acquires the attribute map, encodes the attribute map as a video frame, and generates coded data of the attributes (coded data of the attribute video). The attribute encoding unit 314 supplies the generated coded data of the attributes to the multiplexing unit 315.
[0122] The multiplexing unit 315 multiplexes the supplied information (edge length restriction information, coded data of the base mesh, coded data of the displacement vector, coded data of the attribute, etc.) to generate a bit stream. In other words, the multiplexing unit 315 can also be considered a bit stream generating unit. The multiplexing unit 315 also supplies the generated bit stream to the outside of the encoding device 300. For example, the multiplexing unit 315 supplies the bit stream to the decoding device 400 described below. Therefore, the multiplexing unit 315 can also be considered a supply unit (providing unit) of various data such as the edge length restriction information, coded data of the base mesh, coded data of the displacement vector, and coded data of the attribute.
[0123] In the encoding device 300 configured as above, the various methods (the present technology) described above in <3. Buffer management of triangle information using estimated values of the number of triangles for each number of divided edges> may be applied.
[0124] With this configuration, the encoding device 300 can suppress an increase in the load of the subdivision process.
[0125] <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.
[0126] When the encoding process starts, in step S311, the edge length limit setting unit 311 sets an edge length limit based on the base mesh and generates edge length limit information.
[0127] In step S312, the base mesh encoding unit 312 encodes the base mesh and generates encoded data of the base mesh.
[0128] In step S313, the displacement vector encoding unit 313 packs and encodes the displacement vectors into video frames, thereby generating encoded data of the displacement vectors.
[0129] In step S314, the attribute encoding unit 314 encodes the attribute map as a video frame to generate encoded data of the attributes.
[0130] In step S315, the multiplexing unit 315 multiplexes the information (edge length limit information, coded data of the base mesh, coded data of the displacement vector, coded data of the attribute, etc.) to generate a bit stream. The bit stream is output from the encoding device 300 and transmitted to another device (for example, the decoding device 400 described later).
[0131] When the process of step S315 is completed, the encoding process ends.
[0132] By performing each process in this manner, the encoding device 300 can suppress an increase in the load of the subdivision process.
[0133] <Decoding device> Fig. 21 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. 21 is a device that decodes, for example, coded data of meshes generated in the coding device 300 (bit stream generated by the multiplexing unit 315). The decoding device 400 decodes coded data of meshes that have been coded using a method basically similar to V-DMC described in Non-Patent Document 1, except that the present technology is applied.
[0134] Fig. 21 shows the main processing units, data flows, etc., but does not necessarily show everything. In other words, in decoding device 400, there may be processing units that are not shown as blocks in Fig. 21, and there may be processing and data flows that are not shown as arrows, etc. in Fig. 21.
[0135] 21 , the decoding device 400 includes a demultiplexing unit 411, an estimating unit 412, a base mesh decoding unit 413, a subdivision unit 414, a displacement vector decoding unit 415, a displacement vector application unit 416, and an attribute decoding unit 417. The estimating unit 412 includes a predicting unit 421, an aligning unit 422, and an estimated value derivation unit 423. The subdivision unit 414 includes a subdivision processing unit 431, an address derivation unit 432, and a triangle information storage processing unit 433.
[0136] The demultiplexing unit 411 acquires a bitstream, demultiplexes the bitstream, and acquires various data from the bitstream, such as edge length restriction information, coded data of the base mesh, coded data of the displacement vector, and coded data of the attribute. Therefore, the demultiplexing unit 411 can also be considered an acquisition unit for various information, including these pieces of information. The demultiplexing unit 411 supplies the acquired edge length restriction information to the estimation unit 412. The demultiplexing unit 411 also supplies the coded data of the base mesh to the base mesh decoding unit 413. The demultiplexing unit 411 also supplies the coded data of the displacement vector to the displacement vector decoding unit 415. The demultiplexing unit 411 also supplies the coded data of the attribute to the attribute decoding unit 417.
[0137] The estimation unit 412 performs processing related to deriving an estimated value for the number of triangles for each number of divided edges. For example, the prediction unit 421 subdivides triangles of the base mesh and predicts the number of divided edges after subdivision. When making this prediction, the prediction unit 421 may use the supplied edge length limit information. The alignment unit 422 performs processing related to aligning triangle information of the base mesh. The estimated value derivation unit 423 estimates the number of triangles for each number of divided edges based on the results of the prediction unit 421's subdivision of triangles of the base mesh and its prediction of the number of divided edges after subdivision. The estimation unit 412 supplies the derived estimated value to the subdivision unit 414. The estimation unit 412 may also supply the supplied edge length limit information to the subdivision unit 414.
[0138] The base mesh decoding unit 413 decodes the coded data of the base mesh supplied from the demultiplexing unit 411 to generate (restore) the base mesh. The base mesh decoding unit 413 supplies the generated base mesh to the subdivision unit 414.
[0139] The subdivision unit 414 performs processing related to the subdivision of triangles in a base mesh. For example, the subdivision unit 414 acquires the base mesh supplied from the base mesh decoding unit 413. The subdivision unit 414 also acquires information (e.g., edge length restriction information and estimated values for the number of triangles per divided edge count) supplied from the estimation unit 412. The subdivision processing unit 431 then subdivides the triangles in the base mesh. The subdivision processing unit 431 may perform the subdivision using the supplied edge length restriction information. The address derivation unit 432 also derives addresses for storing triangle information using the supplied estimated values for the number of triangles per divided edge count. The triangle information storage processing unit 433 stores the triangle information obtained by the subdivision at the derived addresses. The subdivision unit 414 then supplies the subdivided base mesh generated in this manner to the displacement vector application unit 416.
[0140] The disparity vector decoding unit 415 decodes the encoded data of the disparity vectors supplied from the demultiplexing unit 411, unpacks the disparity video, and generates (restores) the disparity vectors. The disparity vector decoding unit 415 supplies the generated disparity vectors to the disparity vector application unit 416.
[0141] The displacement vector application unit 416 performs processing related to the application of the displacement vector. For example, the displacement vector application unit 416 acquires a supplied displacement vector. The displacement vector application unit 416 also acquires a subdivided base mesh. The displacement vector application unit 416 applies the displacement vector to the vertices (division points) of the subdivided base mesh to reconstruct the mesh. In this specification, this reconstructed mesh is also referred to as a decoded mesh. In other words, it can be said that the displacement vector application unit 416 generates a decoded mesh. The displacement vector application unit 416 outputs the generated decoded mesh to the outside of the decoding device 400.
[0142] The attribute decoding unit 417 decodes the coded data of attributes supplied from the demultiplexing unit 411, unpacks the data from the video frames, and generates (restores) an attribute map. The attribute decoding unit 417 outputs the attribute map to the outside of the decoding device 400. This attribute map is supplied to a downstream device together with the decoded mesh, for example, and used for rendering, etc.
[0143] In the decoding device 400 configured as above, the various methods (the present technology) described above in <3. Buffer management of triangle information using estimated values of the number of triangles for each number of divided edges> may be applied.
[0144] For example, in the decoding device 400, the base mesh decoding unit 413 may decode encoded data of the base mesh to generate a base mesh. The displacement vector decoding unit 415 may decode encoded data of the displacement vector to generate a displacement vector. The subdivision processing unit 431 may subdivide a triangle of the base mesh with a variable number of divided edges and derive a number of divided edges representing the number of edges into which the triangle is divided when the triangle is subdivided after the subdivision. The address derivation unit 432 may derive an address of a buffer for storing triangle information using the derived number of divided edges and an estimated number of triangles for each number of divided edges after the subdivision. The triangle information storage processing unit 433 may store the triangle information at the derived address. The displacement vector application unit 416 may apply the displacement vector to division points, which are vertices of the base mesh into which the triangle is subdivided, based on the triangle information. Furthermore, the prediction unit 421 may predict the number of divided edges of the triangle after the subdivision. The estimated value derivation unit 423 may derive an estimated value using the predicted number of divided edges of the triangle after subdivision. The address derivation unit may then derive an address using the derived estimated value and the number of divided edges. The alignment unit 422 may align the triangle information. The demultiplexing unit 411 may obtain edge length limit information indicating an edge length limit.
[0145] With this configuration, the decoding device 400 can suppress an increase in the load of the subdivision process.
[0146] <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.
[0147] When the decoding process starts, the demultiplexing unit 411 demultiplexes the bit stream and extracts various pieces of information in step S411.
[0148] In step S412, the estimation unit 412 executes estimation processing to estimate the number of triangles for each number of divided edges.
[0149] In step S413, the base mesh decoding unit 413 decodes the coded data of the base mesh to generate (restore) the base mesh.
[0150] In step S414, the subdivision unit 414 executes subdivision processing to subdivide the triangle.
[0151] In step S415, the displacement vector decoding unit 415 decodes and unpacks the encoded data of the displacement vector to generate (restore) the displacement vector.
[0152] In step S416, the displacement vector application unit 416 applies the displacement vector to the subdivided base mesh to reconstruct a decoded mesh.
[0153] In step S417, the attribute decoding unit 417 decodes and unpacks the coded data of the attribute to generate (restore) an attribute map.
[0154] When the process of step S417 ends, the decoding process ends.
[0155] <Flow of Estimation Process> An example of the flow of the estimation process executed in step S412 of FIG. 22 will be described with reference to the flowchart of FIG.
[0156] When the estimation process starts, the prediction unit 421 predicts subdivision and predicts the number of divided edges after subdivision in step S421.
[0157] In step S422, the alignment unit 422 aligns the triangle information of the base mesh based on the predicted number of divided edges at the end of subdivision.
[0158] In step S423, the estimated value derivation unit 423 counts the number of triangles for each number of divided edges based on the prediction result, and estimates the number of triangles for each number of divided edges.
[0159] When the process of step S423 ends, the estimation process ends and the process returns to FIG.
[0160] <Flow of Subdivision Processing> An example of the flow of the subdivision processing executed in step S414 of FIG. 22 will be described with reference to the flowchart of FIG.
[0161] When the subdivision process starts, in step S431, the subdivision processing unit 431 sets the number of divided edges for the triangle of the base mesh based on the edge length limit.
[0162] In step S432, the subdivision processing unit 431 subdivides the triangle by the set number of divided edges.
[0163] In step S433, the subdivision processing unit 431 derives a new edge length.
[0164] In step S434, the subdivision processing unit 431 sets the number of divided edges for the triangle based on the edge length limit.
[0165] In step S435, the address derivation unit 432 derives an address for storing the triangle information based on the estimated value.
[0166] In step S436, the triangle information storage processing unit 433 stores the triangle information at the derived address.
[0167] In step S437, the subdivision processing unit 431 determines whether a predetermined number of iterations have been performed. If it is determined that the predetermined number of iterations have not been performed (i.e., processing of all LoDs has not been completed), the processing moves to the next iteration (next LoD) and the process returns to step S432. That is, the processes from step S432 to step S437 are executed for each iteration.
[0168] If it is determined in step S437 that the predetermined number of iterations have been performed, the subdivision process ends and the process returns to FIG.
[0169] By performing each process as described above, the decoding device 400 can suppress an increase in the load of the subdivision process.
[0170] 5. Second Embodiment Encoding Device As described above, estimation of the number of triangles for each number of divided edges (and prediction processing such as subdivision) may be performed by an encoder. Fig. 25 is a block diagram showing an example of the main configuration of an encoding device 300 in this case.
[0171] In this case, as shown in Fig. 25, the encoding device 300 has an estimation unit 511 in addition to the configuration of the example in Fig. 19. This estimation unit 511 has a prediction unit 521, an ordering order information generation unit 522, and an estimated value derivation unit 523.
[0172] The estimation unit 511 performs processing related to deriving an estimated value for the number of triangles for each number of divided edges. For example, the prediction unit 521 subdivides the triangles of the base mesh and predicts the number of divided edges after the subdivision. During this prediction, the prediction unit 521 may use edge length restriction information provided by the edge length restriction setting unit 311. The sorting order information generation unit 522 performs processing related to generating sorting order information indicating the sorting order of the triangle information of the base mesh. This sorting order information is provided to another device (e.g., the decoding device 400). The estimated value derivation unit 523 estimates the number of triangles for each number of divided edges based on the results of the prediction unit 521's subdivision of the triangles of the base mesh and its prediction of the number of divided edges after the subdivision. The estimation unit 511 provides the derived estimated value to the multiplexing unit 315. The estimation unit 511 also provides the edge length restriction information to the multiplexing unit 315. The estimation unit 511 also provides the sorting order information to the multiplexing unit 315. The estimation unit 511 may also supply other information to the multiplexing unit 315. For example, the estimation unit 511 may supply information on the prediction result generated by the prediction unit 521 to the multiplexing unit 315.
[0173] The multiplexing unit 315 multiplexes the supplied information together with the coded data of the base mesh, the coded data of the displacement vector, the coded data of the attribute, etc., to generate a bit stream. In other words, the information supplied from the estimation unit 511 is stored in the bit stream. In other words, the multiplexing unit 315 can also be said to be a supply unit for the various information supplied from the estimation unit 511.
[0174] In the encoding device 300 configured as above, the various methods (the present technology) described above in <3. Buffer management of triangle information using estimated values of the number of triangles for each number of divided edges> may be applied.
[0175] For example, in the encoding device 300, the prediction unit 521 may subdivide a triangle of a base mesh and predict the number of divided edges of the subdivided triangle, representing the number of edges into which the triangle will be divided when the triangle is subdivided. The estimated value derivation unit 523 may use the predicted number of divided edges of the subdivided triangle to derive an estimate of the number of triangles for each number of divided edges. The base mesh encoding unit 312 may encode the base mesh. The displacement vector encoding unit 313 may encode the displacement vector. The multiplexing unit 315 may generate a bitstream including the derived estimate, encoded data of the base mesh, and encoded data of the displacement vector. The edge length limit setting unit 311 may set an edge length limit. The sorting order information generation unit 522 may generate sorting order information indicating the sorting order of triangle information, which is information about triangles including triangle identification information.
[0176] With this configuration, the encoding device 300 can suppress an increase in the load of the subdivision process.
[0177] <Flow of Encoding Process> An example of the flow of the encoding process in this case will be described with reference to the flowchart in Fig. 26. In this case, too, the processes in step S511 and steps S513 to S516 are executed in the same manner as in Fig. 20.
[0178] In step S512, the estimation unit 511 executes estimation processing to estimate the number of triangles for each number of divided edges.
[0179] <Flow of Estimation Process> An example of the flow of the estimation process will be described with reference to the flowchart in Fig. 27. When the estimation process starts, in step S521, the prediction unit 521 predicts subdivision and predicts the number of divided edges after subdivision.
[0180] In step S522, the sorting order information generating unit 522 generates sorting order information for the triangle information of the base mesh based on the predicted number of divided edges at the end of subdivision.
[0181] In step S523, the estimated value deriving unit 523 counts the number of triangles for each number of divided edges based on the prediction result, and estimates the number of triangles for each number of divided edges.
[0182] When the process of step S523 ends, the estimation process ends and the process returns to FIG.
[0183] By performing each process in this manner, the encoding device 300 can suppress an increase in the load of the subdivision process.
[0184] <Decoding Apparatus> An example of the main configuration of a decoding apparatus 400 in this case is shown in Fig. 28. In this case, as shown in Fig. 28, the decoding apparatus 400 has an alignment unit 422 instead of the estimation unit 412 in the example of Fig. 21.
[0185] In this case, the demultiplexer 411 demultiplexes the bit stream and obtains sorting order information (for example, supplied from the encoding device 300). The demultiplexer 411 supplies the sorting order information to the alignment unit 422. The demultiplexer 411 also demultiplexes the bit stream and obtains an estimated value of the number of triangles for each number of divided edges (for example, supplied from the encoding device 300). The demultiplexer 411 supplies the estimated value to the subdivision unit 414. The demultiplexer 411 also demultiplexes the bit stream and obtains edge length restriction information (for example, supplied from the encoding device 300). The demultiplexer 411 supplies the edge length restriction information to the subdivision unit 414. In other words, the demultiplexer 411 can also be considered a unit for obtaining this information.
[0186] The alignment unit 422 receives the alignment order information from the demultiplexing unit 411 and aligns the triangle information of the base mesh based on the alignment order information. The address derivation unit 432 receives the estimated values from the demultiplexing unit 411 and derives addresses for storing the triangle information based on the estimated values. The subdivision processing unit 431 receives the edge length restriction information from the demultiplexing unit 411 and subdivides the triangles based on the edge length restriction information.
[0187] In the decoding device 400 configured as above, the various methods (the present technology) described above in <3. Buffer management of triangle information using estimated values of the number of triangles for each number of divided edges> may be applied.
[0188] For example, in the decoding device 400, the base mesh decoding unit 413 may decode encoded data of the base mesh to generate a base mesh. The displacement vector decoding unit 415 may decode encoded data of the displacement vector to generate a displacement vector. The subdivision processing unit 431 may subdivide a triangle of the base mesh and derive a number of divided edges representing the number of edges into which the triangle is divided when the triangle is subdivided. The address derivation unit 432 may derive an address of a buffer for storing triangle information using an estimated value of the number of triangles for each number of divided edges. The triangle information storage processing unit 433 may store the triangle information at the derived address. The displacement vector application unit 416 may apply the displacement vector to division points, which are vertices of the base mesh into which the triangle is subdivided, based on the triangle information. The estimated value acquisition unit may also acquire an estimated value. The address derivation unit may then derive an address using the acquired estimated value and the number of divided edges.
[0189] With this configuration, the decoding device 400 can suppress an increase in the load of the subdivision process.
[0190] <Flow of Decoding Process> An example of the flow of the decoding process in this case will be described with reference to the flowchart in Fig. 29. In this case, too, the processes in step S611 and steps S613 to S617 are executed in the same manner as in Fig. 22.
[0191] In step S612, the alignment unit 422 aligns the triangle information of the base mesh based on the alignment order information.
[0192] By performing each process in this manner, the decoding device 400 can suppress an increase in the load of the subdivision process.
[0193] 6. Predicting the Number of Divided Edges Using Outer Edges Predicting the Number of Divided Edges In the above, the number of divided edges is predicted by subdividing a triangle of the base mesh. However, any method may be used to predict the number of divided edges. For example, the number of divided edges may be predicted using the outer edge (edge length). Note that an outer edge refers to an edge of a triangle of the base mesh, or an edge generated by dividing an edge of a triangle of the base mesh. In contrast to this outer edge, a new edge formed inside a triangle of the base mesh by subdividing a triangle of the base mesh is also called an inner edge. The three largest triangles shown in Figure 30 are examples of triangles of the base mesh. In Figure 30, the edges indicated by solid lines in these triangles (edges of the base mesh, or edges obtained by dividing those edges) are outer edges. Furthermore, the edges indicated by dotted lines are inner edges.
[0194] For outer edges, the number of times they can be divided (how many times they can be divided) can be predicted based on the edge length limit. For inner edges, the number of times they can be divided can be predicted based on the length of the outer edge. That is, based on the length of the outer edge and the edge length limit, the number of divided edges in each subdivision of a triangle of the base mesh can be predicted. That is, it can be predicted how the triangles of the base mesh will be subdivided. Therefore, based on the prediction results, the number of triangles after subdivision can be estimated.
[0195] For example, the decision to terminate the subdivision can be predicted based on the edge length of the outer edge before the subdivision starts, as in the following equation (2).
[0196] numBaseEdgeSubdiv[e]=Min(edges[e] / 2^(numIteration) ,numIteration) ... (0≦e<BaseEdgeCount) ... (2)
[0197] In equation (2), the parameter "numBaseEdgeSubdiv[e]" indicates the number of times an edge (identification number e) of the base mesh can be divided (how many times the edge can be divided). "edges[e] / 2^(numIteration)" indicates the maximum number of iterations while the edge length of the divided edge (identification number e) is equal to or greater than the edge length limit. "numIteration" indicates the maximum number of iterations of subdivision set for the base mesh. "BaseEdgeCount" indicates the number of edges of the base mesh.
[0198] In other words, the smaller of the "maximum number of iterations before the edge length of the edge to be processed (identification number e) of the base mesh falls below the edge length limit when the division is repeated" and the "maximum number of iterations of subdivision set for the base mesh" is set as the "predicted number of times that the edge (identification number e) can be divided." This predicted value can also be said to indicate "which outer edge of which base mesh edge will be divided in each iteration of the subdivision."
[0199] On the other hand, to accurately calculate the number of times an inner edge can be divided, it is necessary to calculate the edge length of the inner edge. The edge length of the inner edge can be calculated based on the length of the outer edge. In other words, to accurately predict the number of times an inner edge can be divided, it is necessary to perform subdivision of the base mesh in the same way as in reality and derive the edge length of each inner edge. However, the base mesh subdivision process is complex and requires a large load. Therefore, when subdividing the base mesh to predict the number of times an inner edge can be divided, it is necessary to ensure a sufficiently long processing time and a sufficiently high cost for predicting the number of divided edges.
[0200] <Simplifying Prediction of the Number of Dividable Edges of an Inner Edge> Therefore, the method for predicting the number of divisible edges of an inner edge is simplified so that the number of divisible edges of an inner edge is predicted based on the division of the outer edge (more specifically, the number of divided edges of a triangle of a base mesh) without calculating the edge length of the inner edge. For example, in a first information processing device, a prediction unit may predict the number of divided edges of a triangle after subdivision based on the length of the outer edge, and an estimated value derivation unit may derive an estimated value using the predicted number of divided edges of the triangle after subdivision. Similarly, in a second information processing device, a prediction unit may predict the number of divided edges of a triangle after subdivision based on the length of the outer edge, and an estimated value derivation unit may derive an estimated value using the predicted number of divided edges of the triangle after subdivision. This method for predicting the number of divisible edges of an inner edge based on the number of divided edges affects the accuracy of the prediction. In other words, any method may be used as long as it does not take into account the accuracy of the prediction.
[0201] For example, the subdivision pattern (how a triangle is divided) may be limited as follows based on the number of divided edges. For example, if subdivision is performed to a further number of divided edges, after subdivision to a number of divided edges of "3," subdivision is performed in the same manner as in the past, as shown in the example of FIG. 31. In this case, the edge length of the inner edge (dotted line in the triangle on the left side of FIG. 31) is the same as the edge length of the outer edge (solid line in the triangle on the left side of FIG. 31). Therefore, if the outer edge can be divided, the inner edge can also be divided, so all inner edges are divided as in the past.
[0202] After subdivision with a division edge count of "3", if subdivision with a division edge count of "2" or "1" is performed, only the inner edges parallel to the outer edge being divided are divided, as in the example shown in FIG. 32 . For example, when subdivision with a division edge count of "2", the outer edges of the two sides other than the bottom side of the triangle in the center of FIG. 32 are divided. Therefore, the inner edges (bold dotted lines) parallel to these outer edges are divided. Furthermore, when subdivision with a division edge count of "1", the outer edge on the left side of the triangle on the right of FIG. 32 is divided. Therefore, the inner edges (bold dotted lines) parallel to this outer edge are divided.
[0203] After subdivision with a split edge count of "2", when further subdivision with a split edge count of "2", inner edges that are not parallel to the outer edges that are not split are always split, as in the example shown in FIG. 33 . When inner edges are set so that the edge length is longer in subdivision with a split edge count of "2", mathematical facts dictate that inner edges that are not parallel to the outer edges that are not split always have an edge length that allows for splitting. Therefore, as described above, inner edges that are not parallel to the outer edges that are not split are always split. For example, the inner edge indicated by the thick dotted line in the triangle on the right of FIG. 33 is split.
[0204] When subdivision into a divided edge of "1" is performed after subdivision into a divided edge of "2", inner edges (thick dotted lines) that are not parallel to outer edges that are not to be divided are always divided, as in the example shown in Figure 34. Conversely, inner edges (thick dotted lines) that are not parallel to outer edges that are not to be divided may always be left undivided, as in the example shown in Figure 35.
[0205] After a subdivision with a split edge count of "1" has been performed, it is not possible to further subdivision with a split edge count of "1". Such subdivision is not possible due to the conditions for a triangle to be valid. For example, suppose the three sides of a triangle are a, b, and c (a ≥ b ≥ c). If we assume that a subdivision with a split edge count of "1" can be performed after a subdivision with a split edge count of "1", then a ≥ 4min_length, b < 2min_length, and c < 2min_length must hold. However, since a > b+c holds, this contradicts the condition for a triangle that "the sum of the lengths of any two sides is greater than the length of any other side". Therefore, no triangle can be subdivided in this way. Therefore, this case need not be considered.
[0206] After subdivision with a divided edge count of "1" has been performed, the following restrictions are imposed when subdivision with a divided edge count of "0" is performed. Note that "subdivision with a divided edge count of '0'" refers to subdivision in which outer edges are not divided and only inner edges are divided, as shown in FIG. 36. In this type of subdivision, as in the example shown in FIG. 36, inner edges that are not parallel to the outer edges are always divided. Conversely, it is also possible to always not divide inner edges that are not parallel to the outer edges.
[0207] When subdivision of the divided edge number to "2" is performed and then subdivision of the divided edge number to "0" is performed, similar to the above-mentioned "when subdivision of the divided edge number to "1" is performed and then subdivision of the divided edge number to "0", inner edges that are not parallel to the outer edges are always either divided or not divided.
[0208] When subdivision is performed with a division edge count of "3", the edge lengths of the outer edge and inner edge are the same as described above, so the inner edge cannot be divided without dividing the outer edge. Therefore, subdivision with a division edge count of "0" cannot be performed. Therefore, this case does not need to be considered.
[0209] By imposing the above-described restrictions on the division of the inner edge, it is possible to predict the number of times the inner edge can be divided based on the edge length of the outer edge. This makes it easier to predict the number of times the inner edge can be divided, and it is possible to suppress an increase in the processing load. This also makes it possible to suppress an increase in the processing time and cost for predicting the number of divided edges.
[0210] <Flow of Estimation Process> An example of the flow of the estimation process executed in step S412 of FIG. 22 when predicting the number of times an inner edge can be divided with such restrictions will be described with reference to the flowchart of FIG.
[0211] When the estimation process begins, in step S701, the prediction unit 421 predicts the subdivision of each triangle by determining whether to discontinue the outer and inner edges based on the edge lengths of the outer edges of the base mesh and the edge length limit, and predicts the number of divided edges after subdivision. That is, the prediction unit 421 predicts the number of times the outer and inner edges can be divided. In this case, the prediction unit 421 predicts the number of times the inner edge can be divided based on the edge length of the outer edge by setting the limit as described above. Then, the prediction unit 421 predicts the number of divided edges based on the predicted number of times the outer and inner edges can be divided.
[0212] In step S702, the alignment unit 422 aligns the triangle information of the base mesh based on the predicted number of divided edges at the end of subdivision.
[0213] In step S703, the estimated value deriving unit 423 counts the number of triangles for each number of divided edges based on the prediction result, and estimates the number of triangles for each number of divided edges.
[0214] When the process of step S703 ends, the estimation process ends and the process returns to FIG.
[0215] By performing each process as described above, the decoding device 400 can suppress an increase in the processing time and cost for predicting the number of divided edges. In other words, the decoding device 400 can suppress an increase in the load of the subdivision process.
[0216] <Application to Encoding Device> Note that the present technology may be applied when this prediction is performed in the encoding device 300, as in the case of the decoding device 400. That is, the prediction unit 521 predicts the number of times the outer edge and inner edge can be divided, sets the above-mentioned restrictions in the prediction, and predicts the number of times the inner edge can be divided based on the edge length of the outer edge. The prediction unit 521 then predicts the number of divided edges based on the prediction result of the number of times the outer edge and inner edge can be divided. That is, in step S521 of the estimation process described with reference to the flowchart of FIG. 27 , the same process as in step S701 described above may be performed.
[0217] By doing so, the encoding device 300 can suppress an increase in the processing time and cost for predicting the number of divided edges. In other words, the encoding device 300 can suppress an increase in the load of the subdivision process.
[0218] 7. Supplementary Notes 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.
[0219] <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.
[0220] FIG. 38 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.
[0221] In a computer 900 shown in FIG. 38, 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.
[0222] 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.
[0223] 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.
[0224] 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.
[0225] 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.
[0226] 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.
[0227] Alternatively, this program can be installed in advance in the ROM 902 or the storage unit 913 .
[0228] <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.
[0229] 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).
[0230] 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.
[0231] 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.
[0232] <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.
[0233] <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.
[0234] 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.
[0235] 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.
[0236] 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.
[0237] 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).
[0238] 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.
[0239] 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.
[0240] 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.
[0241] 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.
[0242] The present technology can also be configured as follows. (1) A base mesh decoding unit that decodes encoded data of a base mesh and generates the base mesh; a displacement vector decoding unit that decodes encoded data of a displacement vector and generates the displacement vector; a subdivision processing unit that subdivides triangles of the base mesh and derives a number of divided edges representing the number of edges into which the triangle is divided when the triangle is subdivided in the subdivided triangle; an address derivation unit that derives an address of a buffer that stores triangle information using the derived number of divided edges and an estimated value of the number of triangles for each number of divided edges after the subdivision; a triangle information storage processing unit that stores the triangle information at the derived address; and a displacement vector application unit that applies the displacement vector to division points, which are vertices of the base mesh into which the triangle is subdivided, based on the triangle 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, and the displacement vector indicates a difference in position between the division points and the vertices of the original mesh, and the triangle information is information about the triangle including identification information of the triangle. (2) The information processing device according to (1), wherein the address derivation unit derives the address using the estimated value and the number of divided edges so that the triangle information is sorted in descending order of the number of divided edges. (3) The information processing device according to (2), further comprising: a prediction unit that predicts the number of divided edges of the triangle after the subdivision; and an estimated value derivation unit that derives the estimated value using the predicted number of divided edges of the triangle after the subdivision, wherein the address derivation unit derives the address using the derived estimated value and the number of divided edges.(4) The information processing device according to (3), wherein the prediction unit recursively repeats subdividing a triangle of the base mesh and predicting the number of divided edges of the triangle after the subdivision a predetermined number of times, the estimated value derivation unit derives the estimated value for each of the repetitions, the subdivision processing unit recursively repeats subdividing a triangle of the base mesh and deriving the number of divided edges of the triangle after the subdivision a predetermined number of times, and the address derivation unit derives the address for each of the repetitions using the estimated value and the number of divided edges derived in that repetition. (5) The information processing device according to (4), wherein the prediction unit determines whether to divide each edge of the triangle based on an edge length limit that is a condition for edge length related to edge division, and predicts the number of divided edges based on the determination result. (6) The information processing device according to (5), further comprising an edge length limit acquisition unit that acquires edge length limit information indicating the edge length limit, wherein the prediction unit determines whether to perform division for each edge of the triangle based on the acquired edge length limit information. (7) The information processing device according to (6), wherein the edge length limit information is information indicating the edge length limit for each sequence. (8) The information processing device according to (6), wherein the edge length limit information is information indicating the edge length limit for each frame. (9) The information processing device according to (6), wherein the edge length limit information is information indicating the edge length limit for each patch. (10) The information processing device according to any one of (4) to (9), wherein, when multiple types of the number of divided edges are predicted for a triangle group obtained by subdividing a single triangle of the base mesh, the prediction unit unifies the number of divided edges for all triangles in the triangle group to a predetermined value. (11) The information processing device according to (10), wherein the predetermined value is the maximum value of the predicted number of divided edges for the triangle group. (12) The information processing device according to (10), wherein the predetermined value is a minimum value of the number of divided edges of the predicted group of triangles.(13) The information processing device according to any one of (4) to (12), further comprising an alignment unit that aligns the triangle information. (14) The information processing device according to (13), wherein the alignment unit aligns the triangle information in descending order of the number of divided edges. (15) The information processing device according to (13) or (14), wherein the subdivision processing unit uses the aligned triangle information to subdivide triangles of the base mesh. (16) The information processing device according to (2), further comprising an estimated value acquisition unit that acquires the estimated value, wherein the address derivation unit derives the address using the derived number of divided edges and the acquired estimated value. (17) The information processing device according to (16), wherein the subdivision processing unit recursively repeats subdividing a triangle of the base mesh and deriving the number of divided edges of the triangle after the subdivision a predetermined number of times, the estimated value acquisition unit acquires the estimated value for each iteration, and the address derivation unit derives the address for each iteration using the estimated value acquired in that iteration and the number of divided edges derived in that iteration. (18) The information processing device according to (2) to (17), wherein the subdivision processing unit determines whether to divide each edge of the triangle based on an edge length restriction that is a condition for edge length related to edge division, and derives the number of divided edges of the triangle after the subdivision based on the determination result. (19) The information processing device according to (18), further comprising an edge length restriction acquisition unit that acquires edge length restriction information indicative of the edge length restriction, and the subdivision processing unit determines whether to divide each edge of the triangle based on the acquired edge length restriction information. (20) The information processing device according to (19), wherein the edge length restriction information is information indicating the edge length restriction on a sequence basis. (21) The information processing device according to (19), wherein the edge length restriction information is information indicating the edge length restriction on a frame basis. (22) The information processing device according to (19), wherein the edge length restriction information is information indicating the edge length restriction on a patch basis.(23) The information processing device according to any one of (2) to (22), wherein, when multiple types of the number of divided edges are derived for a triangle group obtained by subdividing a single triangle of the base mesh, the subdivision processing unit unifies the number of divided edges of all triangles in the triangle group to a predetermined value. (24) The information processing device according to (23), wherein the predetermined value is the maximum value of the predicted number of divided edges of the triangle group. (25) The information processing device according to (23), wherein the predetermined value is the minimum value of the predicted number of divided edges of the triangle group. (26) The information processing device according to any one of (2) to (25), further comprising an alignment unit that aligns the triangle information. (27) The information processing device according to (26), wherein the subdivision processing unit subdivides triangles of the base mesh using the aligned triangle information. (28) The information processing device according to (26) or (27), wherein the alignment unit aligns the triangle information in descending order of the number of divided edges. (29) The information processing device according to any one of (26) to (28), further comprising an alignment order information acquisition unit that acquires alignment order information indicating an alignment order of the triangle information, wherein the alignment unit aligns the triangle information based on the acquired alignment order information. (30) The information processing device according to (29), wherein the alignment order information is a list of identification information of the triangles aligned in the alignment order. (31) The information processing device according to (29) or (30), wherein the alignment order information is information indicating the alignment order on a frame-by-frame basis. (32) The information processing device according to (3) or (4), wherein the prediction unit predicts the number of divided edges of the triangle after subdivision based on the length of an outer edge, and the estimated value derivation unit derives the estimated value using the predicted number of divided edges of the triangle after subdivision, and the outer edge is an edge of a triangle of the base mesh or an edge generated by dividing the edge of a triangle of the base mesh.(33) An information processing method comprising: decoding encoded data of a base mesh to generate the base mesh; decoding encoded data of a displacement vector to generate the displacement vector; subdividing a triangle of the base mesh and deriving a number of division edges representing the number of edges into which the triangle is divided when the triangle is subdivided in the triangle after the subdivision; deriving an address of a buffer for storing triangle information using the derived number of division edges and an estimated value of the number of triangles for each number of division edges after the subdivision; storing the triangle information at the derived address; applying the displacement vector to division points, which are vertices of the base mesh into which the triangle is subdivided, based on the triangle information; 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 a three-dimensional structure of an object; the displacement vector indicates a difference in position between the division points and the vertices of the original mesh; and the triangle information is information about the triangle including identification information of the triangle.
[0243] (41) An information processing device comprising: a prediction unit that subdivides triangles of a base mesh and predicts a number of divided edges representing the number of edges to be divided when the triangle is subdivided in the triangle after the subdivision; an estimate derivation unit that derives an estimate of the number of triangles for each number of divided edges using the predicted number of divided edges of the triangle after the subdivision; a base mesh encoding unit that encodes the base mesh; a displacement vector encoding unit that encodes a displacement vector; and a bit stream generation unit that generates a bit stream including the derived estimate, encoded data of the base mesh, and encoded data of the displacement vector, 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, the displacement vectors indicating differences in position between division points and vertices of the original mesh, and the division points indicating vertices of the base mesh obtained by subdividing the triangle. (42) The information processing device according to (41), wherein the prediction unit recursively repeats subdividing a triangle of the base mesh and predicting the number of divided edges of the triangle after subdivision a predetermined number of times, and the estimated value derivation unit derives the estimated value for each of the repetitions. (43) The information processing device according to (42), wherein the prediction unit determines whether to divide each edge of the triangle based on an edge length constraint that is an edge length condition for edge division, and predicts the number of divided edges based on the determination result. (44) The information processing device according to (43), wherein the bitstream generation unit stores edge length constraint information indicating the edge length constraint in the bitstream. (45) The information processing device according to (44), wherein the edge length constraint information is information indicating the edge length constraint on a sequence basis. (46) The information processing device according to (44), wherein the edge length constraint information is information indicating the edge length constraint on a frame basis. (47) The information processing apparatus according to (44), wherein the edge length restriction information is information indicating the edge length restriction in units of patches.(48) The information processing device according to any one of (43) to (47), further comprising an edge length limit setting unit that sets the edge length limit, wherein the prediction unit determines whether or not to divide each edge of the triangle based on the set edge length limit. (49) The information processing device according to any one of (42) to (48), wherein, when multiple types of the number of divided edges are predicted for a triangle group obtained by subdividing a single triangle of the base mesh, the prediction unit unifies the number of divided edges of all triangles in the triangle group to a predetermined value. (50) The information processing device according to (49), wherein the predetermined value is the maximum value of the predicted number of divided edges of the triangle group. (51) The information processing device according to (49), wherein the predetermined value is the minimum value of the predicted number of divided edges of the triangle group. (52) The information processing device according to any one of (42) to (51), further comprising an sorting order information generation unit that generates sorting order information indicating a sorting order of triangle information, which is information about the triangle including identification information of the triangle, wherein the bitstream generation unit stores the generated sorting order information in the bitstream. (53) The information processing device according to (52), wherein the sorting order information is a list of identification information of the triangles arranged in the sorting order. (54) The information processing device according to (53), wherein the sorting order is in descending order of the number of divided edges. (55) The information processing device according to any one of (52) to (54), wherein the sorting order information is information indicating the sorting order on a frame-by-frame basis. (56) The information processing device described in (1), wherein the prediction unit predicts the number of divided edges of the triangle after subdivision based on the length of an outer edge, the estimated value derivation unit derives the estimated value using the predicted number of divided edges of the triangle after subdivision, and the outer edge is an edge of a triangle of the base mesh or an edge generated by dividing an edge of a triangle of the base mesh.(57) An information processing method comprising: subdividing triangles of a base mesh; predicting a number of division edges representing the number of edges to be divided when the triangle is subdivided in the triangle after the subdivision; deriving an estimate of the number of triangles for each number of division edges using the predicted number of division edges of the triangle after the subdivision; encoding the base mesh; encoding a displacement vector; and generating a bit stream including the derived estimate, encoded data of the base mesh, and encoded data of the displacement vector, 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; the displacement vector indicates a difference in position between a division point and a vertex of the original mesh; and the division point indicates a vertex of the base mesh into which the triangle is subdivided.
[0244] 300 Encoding device, 311 Edge length limit setting unit, 312 Base mesh encoding unit, 313 Displacement vector encoding unit, 314 Attribute encoding unit, 315 Multiplexing unit, 400 Decoding device, 411 Demultiplexing unit, 412 Estimation unit, 413 Base mesh decoding unit, 414 Subdivision unit, 415 Displacement vector decoding unit, 416 Displacement vector application unit, 417 Attribute decoding unit, 421 Prediction unit, 422 Alignment unit, 423 Estimated value derivation unit, 431 Subdivision processing unit, 432 Address derivation unit, 433 Triangle information storage processing unit, 511 Estimation unit, 521 Prediction unit, 522 Alignment order information generation unit, 523 Estimated value derivation unit, 900 Computer
Claims
1. A base mesh decoding unit that decodes encoded data of a base mesh and generates the base mesh; a displacement vector decoding unit that decodes encoded data of a displacement vector and generates the displacement vector; a subdivision processing unit that subdivides a triangle of the base mesh and derives a number of divided edges representing the number of edges into which the triangle is divided when the triangle is subdivided in the triangle after the subdivision; an address derivation unit that derives an address of a buffer that stores triangle information using the derived number of divided edges and an estimated value of the number of triangles for each number of divided edges after the subdivision; a triangle information storage processing unit that stores the triangle information at the derived address; and a displacement vector application unit that applies the displacement vector to division points, which are vertices of the base mesh into which the triangle is subdivided, based on the triangle 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 express a three-dimensional structure of an object, the displacement vector indicates a difference in position between the division points and the vertices of the original mesh, and the triangle information is information about the triangle including identification information of the triangle. Information processing device.
2. The information processing device according to claim 1, wherein the address derivation unit derives the address using the estimated value and the number of divided edges such that the triangle information is sorted in descending order of the number of divided edges.
3. The information processing device of claim 2, further comprising: a prediction unit that predicts the number of divided edges of the triangle after the subdivision; and an estimated value derivation unit that derives the estimated value using the predicted number of divided edges of the triangle after the subdivision, wherein the address derivation unit derives the address using the derived estimated value and the number of divided edges.
4. The information processing device described in claim 3, wherein the prediction unit recursively repeats the subdivision of a triangle of the base mesh and the prediction of the number of divided edges of the triangle after the subdivision a predetermined number of times, the estimated value derivation unit derives the estimated value for each of the repetitions, the subdivision processing unit recursively repeats the subdivision of a triangle of the base mesh and the derivation of the number of divided edges of the triangle after the subdivision a predetermined number of times, and the address derivation unit derives the address for each of the repetitions using the estimated value and the number of divided edges derived in that repetition.
5. The information processing device described in claim 3, wherein the prediction unit predicts the number of divided edges of the triangle after subdivision based on the length of the outer edge, the estimated value derivation unit derives the estimated value using the predicted number of divided edges of the triangle after subdivision, and the outer edge is an edge of a triangle of the base mesh or an edge generated by dividing an edge of a triangle of the base mesh.
6. The information processing device according to claim 2, further comprising an estimated value acquisition unit that acquires the estimated value, wherein the address derivation unit derives the address using the derived number of divided edges and the acquired estimated value.
7. The information processing device described in claim 6, wherein the subdivision processing unit recursively repeats subdivision of triangles of the base mesh and derivation of the number of divided edges of the triangles after the subdivision a predetermined number of times, the estimated value acquisition unit acquires the estimated value for each of the repetitions, and the address derivation unit derives the address for each of the repetitions using the estimated value acquired in that repetition and the number of divided edges derived in that repetition.
8. The information processing device according to claim 2, wherein the subdivision processing unit determines whether or not to perform division for each edge of the triangle based on an edge length restriction that is an edge length condition regarding the division of the edge, and derives the number of divided edges of the triangle after subdivision based on the determination result.
9. The information processing device according to claim 8, further comprising an edge length restriction acquisition unit that acquires edge length restriction information indicating the edge length restriction, and the subdivision processing unit determines whether or not to perform division for each edge of the triangle based on the acquired edge length restriction information.
10. The information processing device according to claim 2, wherein when multiple types of the number of divided edges are derived for a group of triangles into which a single triangle of the base mesh is subdivided, the subdivision processing unit unifies the number of divided edges of all triangles in the group of triangles to a predetermined value.
11. The information processing device according to claim 2, further comprising an alignment unit that aligns the triangle information.
12. The information processing device according to claim 11, wherein the subdivision processing unit subdivides triangles of the base mesh using the aligned triangle information.
13. The information processing device according to claim 11, wherein the sorting unit sorts the triangle information in descending order of the number of divided edges.
14. The information processing device according to claim 11, further comprising an sorting order information acquisition unit that acquires sorting order information indicating the sorting order of the triangle information, wherein the sorting unit sorts the triangle information based on the acquired sorting order information.
15. The information processing device according to claim 14, wherein the sorting order information is a list of identification information of the triangles sorted in the sorting order.
16. An information processing method comprising: decoding encoded data of a base mesh to generate the base mesh; decoding encoded data of a displacement vector to generate the displacement vector; subdividing a triangle of the base mesh and deriving a number of division edges representing the number of edges into which the triangle is divided when the triangle is subdivided in the triangle after the subdivision; deriving an address of a buffer for storing triangle information using the derived number of division edges and an estimated value of the number of triangles for each number of division edges after the subdivision; storing the triangle information at the derived address; applying the displacement vector to division points, which are vertices of the base mesh into which the triangle is subdivided, based on the triangle information; 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 a three-dimensional structure of an object; the displacement vector indicates a difference in position between the division points and the vertices of the original mesh; and the triangle information is information about the triangle including identification information of the triangle.
17. An information processing device comprising: a prediction unit that subdivides triangles of a base mesh and predicts a number of divided edges representing the number of edges into which the triangle after the subdivision is divided when the triangle is subdivided; an estimate derivation unit that derives an estimate of the number of triangles for each number of divided edges using the predicted number of divided edges of the triangle after the subdivision; a base mesh encoding unit that encodes the base mesh; a displacement vector encoding unit that encodes a displacement vector; and a bit stream generation unit that generates a bit stream including the derived estimate, encoded data of the base mesh, and encoded data of the displacement vector, 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, the displacement vector indicates a difference in position between a division point and a vertex of the original mesh, and the division point indicates a vertex of the base mesh into which the triangle is subdivided.
18. The information processing device according to claim 17, wherein the bit stream generation section stores edge length restriction information in the bit stream, the edge length restriction being a condition for edge length related to edge division.
19. The information processing device according to claim 17, further comprising an sorting order information generation unit that generates sorting order information indicating a sorting order of triangle information, which is information about the triangle including identification information of the triangle, and the bit stream generation unit stores the generated sorting order information in the bit stream.
20. An information processing method comprising: subdividing a triangle of a base mesh; predicting a number of division edges of the triangle after the subdivision, which represents the number of edges into which the triangle will be divided when the triangle is subdivided; deriving an estimate of the number of triangles for each number of division edges using the predicted number of division edges of the triangle after the subdivision; encoding the base mesh; encoding a displacement vector; and generating a bit stream including the derived estimate, encoded data of the base mesh, and encoded data of the displacement vector, wherein the base mesh is a mesh in which vertices have been thinned out from an original mesh to be encoded which is composed of vertices and connections that represent a three-dimensional structure of an object; the displacement vector indicates a difference in position between a division point and a vertex of the original mesh; and the division point indicates a vertex of the base mesh into which the triangle is subdivided.
Citation Information
Cited By
Mesh decoding device, mesh decoding method, and program
WO2026196721A1