Decoding method, encoding method and decoding device

By offsetting the position of the vertices of the triangle set within the octree structure, a new triangle set is generated, which solves the problem of insufficient accuracy in 3D data restoration and achieves more refined shape reproduction, especially accurate restoration of surfaces and node boundaries.

CN121925683APending Publication Date: 2026-04-24PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
View PDF 1 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
Filing Date
2024-08-30
Publication Date
2026-04-24

AI Technical Summary

Technical Problem

Existing 3D data encoding and decoding methods are insufficient to improve the accuracy of the restored 3D data, especially when processing point cloud data, where there are problems such as large data volume and inaccurate restored shape.

Method used

By employing a triangle set method within an octree structure, new triangle sets are generated by calculating the position offsets of points on the edges of the triangle set vertices, thereby improving the accuracy of 3D points. This includes offset processing of edge vertices, centroid vertices, and face vertices, as well as the generation and adjustment of interpolation vertices, ensuring more refined shape restoration.

Benefits of technology

It improves the accuracy of 3D data restoration, especially the shape near the restored surface and node boundaries, reduces quantization position deviation, and achieves shape reproduction that is closer to the original point group.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121925683A_ABST
    Figure CN121925683A_ABST
Patent Text Reader

Abstract

The decoding method decodes a plurality of three-dimensional points, uses two triangle set vertices of a first triangle set triangle to calculate a position of a first point on an edge connecting the two triangle set vertices (S301), shifts the position of the first point in a first direction (S302), and uses the first point having the shifted position to generate a second triangle set triangle (S303). The first triangle set triangle is used to generate a plurality of three-dimensional points in a node, which is a unit in an octree structure including the plurality of three-dimensional points, in accordance with a triangle set scheme.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to decoding methods, encoding methods, decoding devices, and encoding devices. Background Technology

[0002] Devices and services that effectively utilize 3D data are expected to become widespread in a wide range of fields, including computer vision for autonomous vehicle or robot movement, mapping, surveillance, infrastructure tracking, and image distribution. 3D data will be acquired through various methods, such as distance sensors like rangefinders, stereo cameras, or combinations of multiple monocular cameras.

[0003] One method of representing 3D data is point cloud, which uses groups of points in 3D space to represent the shape of 3D structures. A point cloud stores the position and color of each point group. While point clouds are expected to become the mainstream method for representing 3D data, the data volume of point groups is extremely large. Therefore, in the accumulation or transmission of 3D data, similar to 2D dynamic images (such as MPEG-4 AVC or HEVC standardized by MPEG), data compression through encoding is necessary.

[0004] In addition, point cloud compression is partially supported by public libraries that perform point cloud-related processing (such as the PointCloud Library).

[0005] In addition, there are known techniques for retrieving and displaying facilities located around a vehicle using three-dimensional map data (see, for example, Patent Document 1).

[0006] Prior art literature Patent documents Patent Document 1: International Publication No. 2014 / 020663 Summary of the Invention

[0007] The problem that the invention aims to solve In the encoding and decoding of such 3D data, it is hoped that the accuracy of the restored 3D data can be improved.

[0008] The purpose of this disclosure is to provide a decoding method, encoding method, decoding device, or encoding device that can improve the accuracy of the restored three-dimensional data.

[0009] Methods for solving problems One aspect of this disclosure involves a decoding method that decodes multiple 3D points by using two vertices of a first triangle set triangle, calculating the position of a first point on the edge connecting the two vertices of the triangle set, shifting the position of the first point in a first direction, and generating a second triangle set triangle using the first point with the shifted position. The first triangle set triangle is used to generate multiple 3D points within a node according to the triangle set method, wherein the node is a unit within an octree structure that includes the multiple 3D points.

[0010] One aspect of this disclosure involves an encoding method that encodes multiple 3D points by using two vertices of a first triangle set, calculating the position of a first point on the edge connecting the two vertices, shifting the position of the first point in a first direction, and generating a second triangle set using the first point with the shifted position. The first triangle set is used to generate multiple 3D points within a node according to the triangle set method, wherein the node is a unit within an octree structure that includes the multiple 3D points.

[0011] Invention Effects This disclosure provides a decoding method, encoding method, decoding device, or encoding device that can improve the accuracy of the restored 3D data. Attached Figure Description

[0012] Figure 1 This is a diagram illustrating an example of the original point group involved in the implementation method.

[0013] Figure 2 This is a diagram illustrating an example of a pruned octree involved in the implementation method.

[0014] Figure 3 This is a diagram illustrating an example of a two-dimensional display of leaf nodes according to an implementation method.

[0015] Figure 4 This is a diagram used to illustrate the method for generating centroid vertices according to the implementation method.

[0016] Figure 5 This is a diagram used to illustrate the method for generating centroid vertices according to the implementation method.

[0017] Figure 6 This is a diagram illustrating an example of vertex information involved in the implementation method.

[0018] Figure 7 This is a diagram illustrating an example of a triangular assembly of faces involved in an implementation method.

[0019] Figure 8This is a diagram used to illustrate the restoration process of the point group involved in the implementation method.

[0020] Figure 9 This is a diagram illustrating an example of a group of points involved in an implementation method.

[0021] Figure 10 This is a diagram illustrating an example of the generation of the centroid vertex involved in the implementation method.

[0022] Figure 11 This is a diagram illustrating an example of generating triangles (triangle set faces) according to the implementation method.

[0023] Figure 12 This is a diagram illustrating an example of face vertex generation in the implementation method.

[0024] Figure 13 This is a diagram showing examples of various vertices and triangles involved in the implementation method.

[0025] Figure 14 This is a diagram showing an example of an interpolation vertex involved in the implementation method.

[0026] Figure 15 This is a diagram showing an example of an interpolation vertex involved in the implementation method.

[0027] Figure 16 This is a flowchart of the decoding process involved in the implementation method.

[0028] Figure 17 This is a flowchart of the triangle and point generation process involved in the implementation method.

[0029] Figure 18 This is a flowchart of the encoding process involved in the implementation method.

[0030] Figure 19 This is a diagram illustrating the syntax examples of GDUH and GDU involved in the implementation method.

[0031] Figure 20 This is a diagram illustrating the syntax examples of GDUH and GDU involved in the implementation method.

[0032] Figure 21 This is a diagram showing examples of various vertices and triangles involved in the implementation method.

[0033] Figure 22 This is a diagram illustrating examples of various vertices and triangles in the implementation method where adjustments have been made.

[0034] Figure 23 This is a flowchart of the decoding process involved in the implementation method.

[0035] Figure 24This is a block diagram of the decoding device involved in the implementation method.

[0036] Figure 25 This is a flowchart of the encoding process involved in the implementation method.

[0037] Figure 26 This is a block diagram of the encoding device involved in the implementation. Detailed Implementation

[0038] One aspect of this disclosure involves a decoding method that decodes multiple 3D points by using two vertices of a first triangle set triangle, calculating the position of a first point on the edge connecting the two vertices of the triangle set, shifting the position of the first point in a first direction, and generating a second triangle set triangle using the first point with the shifted position. The first triangle set triangle is used to generate multiple 3D points within a node according to the triangle set method, wherein the node is a unit within an octree structure that includes the multiple 3D points.

[0039] Therefore, this decoding method generates a first point on the edge of the first triangle set in addition to the vertices of the triangle set, and uses the first point to generate the second triangle set. This improves the accuracy of the restored 3D data. Furthermore, by shifting the position of the first point, this decoding method has the potential to further improve the accuracy of the 3D data. Here, accuracy is an indicator of the degree to which the shape of the original point group is restored; a higher accuracy indicates a better restoration of the original point group. In other words, as in this decoding method, by using the added first point to generate the second triangle set, a more refined representation can be achieved, thus improving accuracy.

[0040] For example, the first direction can also be the direction in which the position of the first point deviates from the centroid of the multiple edge vertices of the node. Thus, this decoding method can accurately reconstruct the shape of the original point group that convexes in the direction deviating from the centroid of the multiple edge vertices.

[0041] For example, the first direction can also be a direction from the centroids of the multiple edge vertices of the node toward the centroid vertex of the node. Therefore, this decoding method can improve the reconstruction accuracy of the area surrounding the centroid vertex.

[0042] For example, the first direction could also be the direction in which the position of the first point deviates from the centroid of the multiple edge vertices of the node, and it is along the direction of the normal of the first set of triangles. Thus, this decoding method can recover three-dimensional data with a shape closer to the original three-dimensional data.

[0043] For example, the greater the distance between the centroid of the plurality of edge vertices and the centroid vertex of the node, the greater the offset applied to the offset of the position of the first point. Thus, this decoding method can recover 3D data with a shape closer to the original 3D data.

[0044] For example, the offset applied to the position of the first point can also be calculated by multiplying the distance between the centroid of the plurality of edge vertices and the centroid vertex of the node by a coefficient, which can be greater than 0 and less than 1 / 8. If the coefficient is too large, it is easy to make the corrected position appear outside the node. In contrast, by using a value less than 1 / 8 as the coefficient, such errors can be suppressed.

[0045] For example, if the node size is larger than a threshold, the calculation of the position of the first point, the offset of the position of the first point, and the generation of the second triangle set can be performed; if the node size is smaller than the threshold, the calculation of the position of the first point, the offset of the position of the first point, and the generation of the second triangle set can be omitted. When the node size is large, the accuracy of the reconstructed 3D data is more likely to decrease. In such cases, by calculating the position of the first point, offsetting the position of the first point, and generating the second triangle set, the accuracy of the 3D data can be effectively improved.

[0046] For example, the first point can also be the midpoint of the edge. Thus, this decoding method can effectively improve the accuracy of 3D data by generating the first point at the midpoint of the edge.

[0047] For example, the two sets of triangle vertices may also include face vertices generated on the faces of the node, excluding the edges of the node. Thus, this decoding method can improve the accuracy of 3D data reconstructed using face vertices.

[0048] For example, the three vertices of the first triangle set can each be one of the edge vertex, the centroid vertex, and the face vertex provided by the face of the node (excluding the edge of the node). If the group of two triangle set vertices is not the group of the face vertex and the centroid vertex, the position of the first point is shifted. If the group of two triangle set vertices is the group of the face vertex and the centroid vertex, the position of the first point is not shifted.

[0049] When the set of two triangles consists of a face vertex and a centroid vertex, the shape of the 3D data reconstructed by offsetting the position of the first point may deviate from the shape of the original 3D data. Therefore, by not offsetting in such cases, the accuracy of the reconstructed 3D data can be improved.

[0050] One aspect of this disclosure involves an encoding method that encodes multiple 3D points by using two vertices of a first triangle set, calculating the position of a first point on the edge connecting the two vertices, shifting the position of the first point in a first direction, and generating a second triangle set using the first point with the shifted position. The first triangle set is used to generate multiple 3D points within a node according to the triangle set method, wherein the node is a unit within an octree structure that includes the multiple 3D points.

[0051] Therefore, this encoding method, in addition to generating the vertices of the triangle set, also generates a first point on the edge of the first triangle set and uses this first point to generate the second triangle set. This improves the accuracy of the reconstructed 3D data. Furthermore, by shifting the position of the first point, this encoding method has the potential to further improve the accuracy of the 3D data.

[0052] In addition, one aspect of the present disclosure involves a decoding device that decodes multiple three-dimensional points, comprising a processor and a memory. The processor uses the memory to calculate the position of a first point on the edge connecting the two vertices of a first triangle set using the vertices of two triangle sets. The position of the first point is offset in a first direction. A second triangle set is generated using the first point with the offset position. The first triangle set is used to generate multiple three-dimensional points within a node according to the triangle set method. The node is a unit within an octree structure that includes the multiple three-dimensional points.

[0053] In addition, one aspect of the present disclosure involves an encoding device that encodes multiple three-dimensional points, comprising a processor and a memory. The processor uses the memory to calculate the position of a first point on the edge connecting the two vertices of a first triangle set using the vertices of two triangle sets. The position of the first point is offset in a first direction. A second triangle set is generated using the first point with the offset position. The first triangle set is used to generate multiple three-dimensional points within a node according to the triangle set method. The node is a unit within an octree structure that includes the multiple three-dimensional points.

[0054] Furthermore, these general or specific methods can also be implemented by systems, methods, integrated circuits, computer programs, or computer-readable recording media such as CD-ROMs, or by any combination of systems, methods, integrated circuits, computer programs, and recording media.

[0055] Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. Furthermore, the embodiments described below represent specific examples of this disclosure. The numerical values, shapes, materials, constituent elements, arrangement and connection methods of constituent elements, steps, and order of steps shown in the following embodiments are examples and are not intended to limit this disclosure. Moreover, constituent elements not described in the independent claims among the constituent elements in the following embodiments are described as arbitrary constituent elements.

[0056] (Implementation Method) The encoding apparatus (3D data encoding apparatus) and decoding apparatus (3D data decoding apparatus) involved in this embodiment are described below. The encoding apparatus encodes 3D data to generate a bitstream. The decoding apparatus decodes the bitstream to generate 3D data.

[0057] Three-dimensional data, for example, is 3D point group data (also known as point cluster data). A point group is a collection of multiple 3D points that represent the 3D shape of an object. Point group data includes the positional and attribute information of multiple 3D points. This positional information represents the 3D position of each point. Furthermore, positional information is sometimes also referred to as geometric information. For example, positional information may be represented using an orthogonal coordinate system or a polar coordinate system.

[0058] Attribute information can represent color information, reflectivity, transmittance, infrared information, normal vector, or time information, etc. A three-dimensional point may sometimes have a single attribute, or it may have multiple types of attribute information.

[0059] In addition, the following mainly describes the encoding and decoding of location information, but the encoding device can also encode and decode attribute information.

[0060] [Triangle Set Method] The encoding device involved in this embodiment uses a triangle set (TriSoup) method to encode position information.

[0061] Triangle set compression is one method of encoding the positional information of point group data, and it is an irreversible compression method. In triangle set compression, the original point group of the object being processed is replaced with a set of triangles, and the point group is approximated on this plane. Specifically, the original point group is replaced with vertex information within each node, and the vertices are connected to each other to generate a triangle group. Furthermore, the vertex information used to generate the triangles is stored in a bitstream and sent to the decoding device.

[0062] First, let's explain the encoding process using a triangular set approach. Figure 1 This is a graph representing an example of an original point group. For example... Figure 1 As shown, the point group 102 of the object is contained in the object space 101 and includes multiple points 103.

[0063] First, the encoding device performs octree partitioning on the original point group up to a predetermined depth. In the octree partitioning, the object space is divided into 8 nodes (subspaces), generating 8 bits of information (occupancy codes) indicating whether each node contains a point group. Furthermore, nodes containing point groups are further partitioned into 8 nodes, generating 8 bits of information indicating whether each of those 8 nodes contains a point group. This process is repeated until the predetermined level is reached.

[0064] In typical octree coding, the splits are performed repeatedly until the number of nodes contained in a node becomes one or falls below a threshold. Conversely, in the triangular set approach, the octree is split only up to the level in the path, without splitting at levels below that level. Such an octree that continues until the level in the path is called a pruned octree.

[0065] Figure 2 This is a diagram illustrating an example of a pruned octree. (For example...) Figure 2 As shown, point group 102 is divided into multiple leaf nodes 104 (the lowest level nodes) of a pruned octree.

[0066] Next, the encoding device performs the following processing on each leaf node 104 of the pruned octree. Hereinafter, leaf nodes will also be simply referred to as nodes. The encoding device generates vertices on the edges as representative points of the group of points close to the edges of the nodes. These vertices are called edge vertices. For example, edge vertices are generated for each edge in a group of multiple edges (e.g., parallel four sides).

[0067] Figure 3 This is an example of displaying leaf node 104 in two dimensions, for example, representing from... Figure 1 The diagram shows the xy-plane viewed from the z-direction. (See image.) Figure 3As shown, edge vertices 112 are generated on the edge based on the proximity points of the edges among multiple points 111 within the leaf node 104.

[0068] In addition, Figure 3 In the diagram, the dashed line surrounding leaf node 104 represents the edge. Additionally, in this example, points within 1 distance of the edge (…) Figure 3 Edge vertices 112 are generated at the weighted average positions of the points contained in range 113. Furthermore, the unit of distance is, for example, the resolution of the point group, but is not limited to this. Additionally, this distance (threshold) is 1 in this example, but can be anything other than 1, or it can be variable.

[0069] Next, the encoding device generates vertices inside the nodes based on the group of points existing in the normal direction of the plane containing multiple edge vertices. These vertices are called centroid vertices.

[0070] Figure 4 and Figure 5 This diagram illustrates the method for generating the centroid vertex. First, the encoding device selects, for example, four points from the group of edge vertices as representative points. Figure 4 In the example shown, edge vertices v1 to v4 are selected. Next, the encoding device calculates an approximate plane 121 passing through the four points. Next, the encoding device calculates the normal n of the approximate plane 121 and the average coordinates M of the four points. Next, the encoding device selects at least one point (e.g., points close to the ray extending from the average coordinates M in the direction of the normal n) that is close to the ray extending from the average coordinates M in the direction of the normal n. Figure 5 At the weighted average coordinates of the points contained in the range 122 shown, the centroid vertex C is generated.

[0071] Next, the encoding device performs entropy encoding on the vertex information, which serves as information for edge vertices and centroid vertices, and stores the encoded vertex information in the Geometry Data Unit (GDU) included in the bitstream. Furthermore, the GDU includes not only vertex information but also information representing the pruned octree.

[0072] Figure 6 This is an example graph representing vertex information. Through the above processing, such as... Figure 6 As shown, point group 102 is converted into vertex information 123.

[0073] Next, the decoding process of the generated bitstream will be explained. First, the decoding device decodes the GDU from the bitstream to obtain vertex information. Next, the decoding device connects the vertices to each other to generate a TriSoup-Surface, which is a triangle group.

[0074] Figure 7This is a diagram representing an example of a triangular assembly face. In Figure 7 In the example shown, based on vertex information, four edge vertices v1 to v4 and a centroid vertex C are generated. Additionally, a triangle 131 (triangle set face) is generated with the centroid vertex C and two edge vertices as vertices. For example, groups of two edge vertices on two adjacent edges are selected, and a triangle 131 is generated with the selected group and the centroid vertex as vertices.

[0075] Figure 8 This diagram illustrates the restoration process for point groups. The above processing is performed on each leaf node, as follows: Figure 8 As shown, a three-dimensional model of the object is generated, consisting of multiple triangles 131.

[0076] Next, the decoding device generates points 132 at certain intervals on the surface of triangle 131, thereby restoring the position information of point group 133.

[0077] [Examples of representing ridgelines in a point-group-surface structure] In the triangle set approach, there are cases where the shape of the ridgeline (ridge line) spanning adjacent nodes cannot be restored. In contrast, the encoding device generates face vertices on the faces that abut with adjacent nodes, and also restores the point group on the faces of triangles generated based on the centroid vertex, face vertices, and edge vertices.

[0078] For example, if the inside of a leaf node contains a folded portion of a point group distribution (point group surface), the corners and edges of the point group surface do not intersect, and vertices cannot be generated at the corner positions. Therefore, there are cases where the surface model formed by connecting the vertices cannot reproduce the shape of the original point group.

[0079] Figure 9 This is a diagram illustrating an example of a point group distributed across nodes 1 and 2, forming a ridgeline. For example... Figure 9 As shown, edge vertex 112 is generated based on the distribution of point clusters near the edge.

[0080] Figure 10 This is a graph representing an example of the generation of the centroid vertex in this case. For example... Figure 10 As shown, centroid vertex 151 is generated in the normal direction of the approximate plane of the edge vertex group.

[0081] Figure 11 This is a diagram illustrating an example of how triangle 131 (the face of a triangle assembly) is generated in this case. For example... Figure 11 As shown, multiple vertices (multiple edge vertices and the centroid vertex) are connected to generate triangle 131. At this point, as... Figure 11 As shown, it is impossible to reproduce the point group near the node boundary.

[0082] This is because, while centroid vertices can sample the original point group surface, the current method cannot generate vertices between the two centroid vertices of two adjacent nodes. For example, if a ridgeline is continuously distributed within a node along one of the x, y, or z axes, no corresponding vertices are generated because the ridgeline does not cross edges. This is why the problem occurs.

[0083] In this embodiment, the encoding device predicts the ridgeline of the point group face. If it determines that two adjacent nodes have the same ridgeline, it transmits information to the decoding device to connect the two centroid vertices of the two adjacent nodes with line segments. This information is, for example, 1 bit of information assigned to each face between nodes.

[0084] The decoding device uses this information to connect the centroid vertices, generating new vertices (face vertices) at the intersections of the resulting line segments and the shared surfaces between the nodes. Using these new vertices, the decoding device can reproduce the ridgeline when generating triangle 131.

[0085] In addition, the coordinates of the face vertices are not quantized, so there is no problem of positional deviation caused by quantization.

[0086] Figure 12 This is a graph representing the generation of face vertices. For example... Figure 12 As shown, the decoding device can reproduce the ridgeline by generating face vertices 161 and using face vertices 161 to generate triangles 131.

[0087] Using the method described above, the point group surface near the node boundary can be reproduced, thus obtaining a decoded point group that is closer to the original point group. Furthermore, the point group surface described above is only used to illustrate topics related to ridgelines and does not require actual calculation of the ridgeline.

[0088] [Interpolation Vertex Processing] In the triangle set approach, within a node, in addition to the centroid vertex, two more triangle set vertices (edge ​​vertices or face vertices) are selected sequentially. Triangles (also known as triangle set triangles or triangle set faces) are generated sequentially through these three points. Furthermore, the point group is reconstructed by generating multiple points on the surfaces of each triangle.

[0089] However, there is a problem of reduced quality in reconstructing point groups at low bit rates (i.e., when the node size is large). Especially when the original point group is a curved shape, if the node size is increased, the area of ​​each triangle within the node increases, thus making it impossible to represent the curved surface of the original point group, and point groups with distinct corners are reconstructed.

[0090] Furthermore, the following mainly describes point group reconstruction in the decoding device, but the same process can also be performed in the encoding device.

[0091] Figure 13 This is a diagram showing examples of various vertices and triangles. The diagram is a side view of a triangle. The triangle set vertices V0 and V1 are edge vertices or face vertices formed on the node boundaries (node ​​edges or node faces). A triangle is generated by the centroid vertex C, triangle set vertex V0, and another triangle set vertex (not shown). A triangle is also generated by the centroid vertex C, triangle set vertex V1, and another triangle set vertex (not shown).

[0092] In this embodiment, during the point group reconstruction stage, the decoding device uses interpolation vertices to subdivide each triangle. Figure 14 This is a diagram representing examples of the generated interpolated vertices. For example, the decoding device generates interpolated vertices at the midpoints of the sides of each triangle. Figure 14 In the example shown, the decoding device generates an interpolation vertex N0 at the midpoint between the centroid vertex C and the vertex V0 of the triangle set, and generates an interpolation vertex N1 at the midpoint between the centroid vertex C and the vertex V1 of the triangle set.

[0093] Next, the decoding device adjusts (moves) the positions of the interpolation vertices N0 and N1. For example, the decoding device moves (offsets) the positions (coordinates) of the interpolation vertices N0 and N1 in the direction from the centroid G of the edge vertex group toward the centroid vertex C (the direction of the vector Cvec). As a result, the decoding device can improve the accuracy of the restored point group and generate a restored point group with excellent subjectivity that closely approximates the surface shape of the original point group.

[0094] The decoding device determines whether to perform interpolation vertex generation and adjustment processing based on the valid markers of the interpolated vertices stored in the Geometry Data Unit Header (GDUH). (Hereinafter, the processing including interpolation vertex generation and adjustment will also be referred to as interpolation vertex processing.) The GDUH is the header information of the GDU, and the GDU is a data unit that stores the location information (geometric information) of a group of points. For example, a GDU may include information about multiple nodes.

[0095] In addition, the decoding device sets the amount of movement (adjustment) of the interpolated vertex to a value proportional to, for example, the distance from the centroid G of the edge vertex group to the centroid vertex C (the length of the vector Cvec).

[0096] Furthermore, when the original point group is a planar point group, the encoding device sets the interpolation vertex validity flag to off (does not perform interpolation vertex processing). As a result, the decoding device is able to maintain the process of restoring planar areas to planar states.

[0097] Furthermore, even when the interpolation vertex is marked as enabled, the decoding device will not adjust the position of the interpolation vertex if the length of the vector Cvec is 0. When the length of the vector Cvec is 0, the original point group inside the node is more likely to have a flat shape. Therefore, the decoding device can improve the accuracy of reconstructing the point group.

[0098] Furthermore, interpolation methods can also use other methods instead of midpoint interpolation. For example, the interpolation vertex N0 can be generated at any position on the edge connecting the centroid vertex C and the triangle set vertex V0. Alternatively, the interpolation vertex N0 can be generated at a position where the ratio between the distance between the interpolation vertex N0 and the centroid vertex C and the distance between the interpolation vertex N0 and the triangle set vertex V0 is a predetermined ratio.

[0099] Alternatively, the interpolation vertex processing can be performed repeatedly. That is, the first triangle can be subdivided into multiple second triangles through interpolation vertex processing, and at least one of the multiple second triangles can be subdivided into multiple third triangles through interpolation vertex processing.

[0100] As mentioned above, interpolation vertex processing can improve the accuracy of reconstructing point groups. Furthermore, while reducing the node size can improve the accuracy of reconstructing point groups, interpolation vertex processing can suppress the increase in the amount of data included in the bitstream compared to reducing the node size. Additionally, while valid interpolation vertex markers are appended to the bitstream, for example, when the valid interpolation vertex markers are stored in GDU units, a very fine point group shape can be reconstructed by appending only 1 bit of marker to each GDU. In other words, by using interpolation vertex processing, the increase in the amount of data in the bitstream can be suppressed while improving the accuracy of reconstructing point groups.

[0101] [Interpolation vertex adjustment processing] The following describes the adjustment (movement) process for interpolated vertices corresponding to their respective vertex categories. Figure 15 This is a graph representing an example of interpolation vertices. For example, this graph corresponds to a top-down pair of... Figure 13 and Figure 14 The diagram shows a top-down view of the nodes. That is, in... Figure 15 In the graph, the centroid vertex C protrudes towards the foreground, while the centroid G of the edge vertex group is hidden inside the graph. Additionally, edge vertices and face vertices also exist above the nodes, but their description is omitted. Furthermore, the positions of interpolation vertices N0 to N2 are corrected (moved) towards the foreground.

[0102] exist Figure 15In the example shown, for the first triangle C-E0-F with centroid vertex C, edge vertex E0 and face vertex F as vertices, interpolation vertex N0 is generated on edge C-E0, interpolation vertex N1 is generated on edge E0-F, and interpolation vertex N2 is generated on edge FC.

[0103] By using the interpolation vertices N0, N1, and N2 to subdivide the first triangle C-E0-F, four new second triangles are generated. That is, the second triangles C-N0-N2, N0-E0-N1, N2-N1-F, and N0-N1-N2 are generated.

[0104] Here, the interpolation vertices N0, N1, and N2 are positioned according to the direction and length of the vector Cvec. As a result, the shape represented by the four second triangles becomes a more rounded shape compared to the shape represented by the first triangle C-E0-F.

[0105] The adjustment processes for interpolation vertices N0, N1, and N2 are explained below. In this embodiment, the switching process is based on a first condition indicating whether the interpolation vertex is located on a node boundary (whether the edge generating the interpolation vertex is consistent with the node boundary). Additionally, the switching process is based on a second condition indicating whether the group of two vertices at the two ends of the edge generating the interpolation vertex is a group of centroid vertices and face vertices.

[0106] First, the adjustment process for interpolation vertex N0 will be explained. Here, interpolation vertex N0 falls into the category of cases that do not meet either the first or second condition described above. In this case, the aforementioned adjustment process for the interpolation vertex is performed.

[0107] Here, the amount of movement (adjustment) of the interpolation vertex N0 is determined based on the length of the vector Cvec. For example, the amount of movement of the interpolation vertex N0 is obtained by multiplying the length of the vector Cvec (the distance between the centroid G of the edge vertex group and the centroid vertex C) by the interpolation coefficient α. Here, the interpolation coefficient α can also be a predetermined value. Alternatively, the interpolation coefficient α can be determined in the encoding device, and the information representing the interpolation coefficient α is stored in the bitstream. In this case, the decoding device determines the interpolation coefficient α based on the information included in the bitstream. For example, the encoding device calculates the interpolation coefficient α for each processing unit (e.g., GDU or slice, etc.) that makes the shape of the restored point group closest to the shape of the original point group.

[0108] Furthermore, the interpolation coefficient α can also be 0 < α < 1. Alternatively, it can be 0 < α < 1 / 8 or 0 < α < 1 / 4. Moreover, the range of the interpolation coefficient α can be adjusted based on the node size. For example, 0 < α < 1 / 8 can be applied when the node is of size 1, and 0 < α < 1 / 4 can be applied when the node is of size 2, which is larger than size 1. In other words, a larger range can be used when the node size is large. Conversely, the upper limit of the range of the interpolation coefficient α can also be larger when the node size is large.

[0109] Furthermore, when the interpolation coefficient α is predetermined, it is predetermined to be a value within that range. Thus, it is also possible that when the node is of size 1, the interpolation coefficient α is set to a first value, and when the node is of size 2 (larger than size 1), the interpolation coefficient α is set to a second value (larger than the first value). Additionally, when the encoding device sets the interpolation coefficient α, it can also be set to a value within that range.

[0110] Next, we will explain the adjustment process for interpolation vertex N1. Here, interpolation vertex N1 falls under the case that satisfies the first condition mentioned above. That is, interpolation vertex N1 exists on the boundary surface between the object node and its adjacent nodes.

[0111] In this case, the decoding device ensures that the positions of the interpolation vertices are consistent between adjacent nodes. When the positions of the interpolation vertices are inconsistent between adjacent nodes, gaps are created in the restored surface formed by the triangle group, which in turn becomes gaps in the restored point group. This reduces the accuracy of the restored point group. On the other hand, by ensuring that the positions of the interpolation vertices are consistent between adjacent nodes, continuous restored surfaces between nodes can be generated.

[0112] First, the decoding device determines whether the interpolated vertex is located on the node boundary. Furthermore, interpolated vertices between edge vertices and face vertices exist on the node boundary. Therefore, the decoding device can also determine whether an interpolated vertex is a vertex between an edge vertex and a face vertex.

[0113] When the interpolation vertex is located at a node boundary, the decoding device uses a common value as the movement amount of the interpolation vertex among nodes sharing that vertex. For example, the common value can also be calculated by averaging the Cvec of the object node and the Cvec of its neighboring nodes. Alternatively, the common value can be calculated by using either the Cvec of the object node or the Cvec of its neighboring nodes. For example, the common value can also be calculated by using the Cvec of the node whose decoding order (or encoding order) is earlier among the object node and its neighboring nodes.

[0114] Alternatively, the decoding device may not adjust the positions of the interpolation vertices located at the node boundaries. Alternatively, the encoding device may decide whether to adjust the positions of the interpolation vertices located at the node boundaries and store a flag indicating whether to adjust the positions of the interpolation vertices located at the node boundaries in the bitstream. In this case, the decoding device determines whether to adjust the positions of the interpolation vertices located at the node boundaries based on this flag.

[0115] Next, the adjustment process for interpolation vertex N2 will be explained. Here, interpolation vertex N2 falls under the case that satisfies the second condition mentioned above. That is, the pair of two vertices at both ends of the edge that generates interpolation vertex N2 is the pair of the centroid vertex C and the face vertex F.

[0116] Here, the face vertex represents the ridgeline of the original point group represented by the two centroid vertices of the two nodes. Therefore, for the interpolated vertex N2, which is the midpoint between the centroid vertex C and the face vertex F, there is a possibility of better reproducing the shape of the original point group without adjusting its position. Therefore, the decoding device does not adjust the position of the interpolated vertex N2.

[0117] Furthermore, the above-described processing was applied to the first triangle other than CF-E0. Figure 15 The first triangle CF-E1 shown, and other first triangles (not shown). This generates a very fine group of triangles (reconstructed surfaces).

[0118] In addition, the decoding device uses ray tracing to generate multiple points on these multiple second triangles, thereby reconstructing the point group.

[0119] [Processing Flow] Figure 16 This is a flowchart of the decoding process performed by the decoding device. First, the decoding device performs arithmetic decoding (entropy decoding) on ​​the octree information representing the pruned octree from the bit stream, uses the octree information to generate the pruned octree, and generates multiple leaf nodes (leaf node group) (S101).

[0120] Next, the decoding device performs arithmetic decoding on the vertex information representing the positions of edge vertices and centroid vertices from the bit stream (S102).

[0121] Next, the decoding device performs arithmetic decoding on the face vertex information, which indicates whether to connect the centroid vertices of the nodes on both sides of the face to generate face vertices (S103). Next, the decoding device generates face vertices based on the face vertex information (S104).

[0122] Next, the decoding device uses each vertex to generate a triangle, and generates multiple points on the triangle to restore the point group (S105).

[0123] Figure 17 This is a flowchart of the triangle and vertex generation process (S105). The decoding device performs the following steps S111 to S117 (loop processing) on ​​each leaf node among the multiple leaf nodes of the pruned octree. First, the decoding device sorts the multiple edge vertices and face vertices within the node in a counterclockwise order (S111). Next, the decoding device connects the vertex groups (multiple edge vertices, centroid vertices, and face vertices) within the node to generate triangles (S112).

[0124] Next, the decoding device determines whether to perform interpolation vertex processing (S113). For example, the decoding device obtains the valid interpolation vertex marker from the bitstream (decodes) and determines whether to perform interpolation vertex processing based on the obtained valid interpolation vertex marker.

[0125] While performing interpolation vertex processing (S113: Yes), the decoding device generates interpolation vertices on each side of each triangle (S114). Next, the decoding device adjusts the position of each interpolation vertex (S115). Thus, four triangles are generated, subdividing the original triangle.

[0126] Next, the decoding device generates multiple points on the surface of the triangle (subdivided into 4 triangles) (S116). Then, the decoding device uses coordinate values ​​to uniquely identify the group of restored points within the node and appends it to the decoded point group (S117). Here, uniqueness means excluding points with duplicate coordinate values. As described above, the loop processing for the object node ends.

[0127] On the other hand, without performing interpolation vertex processing (S113: No), the decoding device skips steps S114 and S115 and generates multiple points on the surface of the triangle (S116). Next, the decoding device uses coordinate values ​​to uniquely restore the group of points within the node and appends it to the group of decoded points (S117).

[0128] Figure 18 This is a flowchart of the encoding process performed by the encoding device. First, the encoding device performs octree segmentation on the point group to generate a pruned octree, and generates multiple leaf nodes (leaf node group) of the pruned octree. In addition, the encoding device performs arithmetic encoding (entropy encoding) on ​​the octree information representing the pruned octree, and stores the encoded octree information in the bit stream (S201).

[0129] Next, the encoding device generates edge vertices and centroid vertices for each of the multiple nodes (leaf nodes) according to the distribution of the point group within the node, performs arithmetic encoding (entropy encoding) on ​​the vertex information representing their respective position information, and stores the encoded vertex information into the bit stream (S202).

[0130] Next, the encoding device generates face vertices at the locations where the line segment connecting the centroid vertex of the object node to the centroid vertex of the adjacent node intersects with the face (S203).

[0131] Next, the encoding device encodes the face vertex information and stores the encoded face vertex information into a bit stream (S204).

[0132] Next, the encoding device generates triangles using each vertex and generates multiple points on the triangles, thereby reconstructing the point group (S205). Furthermore, the details of step S205 are the same as those of step S105 in the decoding device. Additionally, the encoding device determines whether to perform interpolation vertex processing in step S113 and stores valid interpolation vertex markers indicating the result of the decision in the bitstream. Furthermore, the point group reconstructed in the encoding device is used for subsequent encoding processing (e.g., prediction processing).

[0133] [syntax] This describes the syntax of the information transmitted from the encoding device to the decoding device for the interpolation vertex processing in this embodiment. Figure 19 This is a diagram representing the syntax examples of GDUH (geometry_data_unit_header) and GDU (geometry_data_unit_data).

[0134] like Figure 19 As shown, GDUH includes not only the existing header information but also C-vertex validity flags and interpolation vertex validity flags. The C-vertex validity flag indicates whether the function to generate centroid vertices is valid (whether or not a centroid vertex is generated). When the function to generate centroid vertices is valid, the decoding device generates centroid vertices and uses them to generate triangles, in addition to edge vertices. Conversely, when the function to generate centroid vertices is invalid, the decoding device does not generate centroid vertices and only uses edge vertices to generate triangles.

[0135] The interpolation vertex validity flag is a 1-bit information indicating whether the above-mentioned interpolation vertex processing (interpolation vertex generation and adjustment) has been performed. For example, if the function of generating centroid vertices is valid (the C vertex validity flag is on (e.g., 1)), the interpolation vertex validity flag is included in the GDUH; if the function of generating centroid vertices is not valid (the C vertex validity flag is off (e.g., 0)), it is not included in the GDUH (and is not included in the bitstream).

[0136] GDU includes octree information and geometry_trisoup_data. The octree information represents the structure of the pruned octree and the positions of the multiple leaf nodes included in the pruned octree.

[0137] The geometry_trisoup_data contains information related to the generation of triangles. For example, geometry_trisoup_data includes vertex information related to edge vertices and centroid vertices, as well as face vertex information related to face vertices.

[0138] Figure 20 This is a diagram representing GDUH and other syntactic examples of GDU. In Figure 20 In addition to including, GDUH Figure 19 In addition to the information shown, interpolation coefficients are also included. These coefficients are used to calculate the amount of movement used in adjusting the position of the interpolation vertex. For example, an interpolation coefficient is a factor multiplied by the length of the vector Cvec.

[0139] For example, the interpolation coefficient is included in GDUH if the function of generating centroid vertices is effective, and is not included in GDUH (not included in the bitstream) if the function of generating centroid vertices is not effective.

[0140] Furthermore, this example illustrates that the interpolation vertex validity flag and interpolation coefficients are included in the GDUH when the C vertex validity flag is enabled, but at least one of the interpolation vertex validity flag and interpolation coefficients may also be included in the GDUH regardless of the value of the C vertex validity flag.

[0141] Additionally, at least one of the interpolation vertex valid marker and interpolation coefficients can be included in the control information beyond the GDUH included in the bitstream. For example, at least one of the interpolation vertex valid marker and interpolation coefficients can also be included in the control information (header) of the sequence unit. Furthermore, a sequence is a unit comprising multiple frames. The control information of the sequence unit is, for example, SPS (Sequence Parameter Set) or GPS (Geometry Parameter Set). SPS is control information (parameter set) common to multiple frames. GPS is metadata (parameter set) related to the encoding of location information, and is metadata common to multiple frames.

[0142] [Variation Example] The above illustrates an example of adjusting the position of the interpolation vertices, but it is also possible to adjust the position of at least one of the centroid vertices, edge vertices, and face vertices in addition to the interpolation vertices. This can improve the accuracy of the restored point group.

[0143] Figure 21 It is a diagram showing examples of various vertices and triangles. Figure 21 The example shown is relative to Figure 13 In the example shown, the position of the centroid vertex C is different.

[0144] Specifically, in the triangle set approach, it is necessary to represent a shape that approximates the shape of the original point group with fewer types and numbers of vertices. Thus, for example, as... Figure 21 As shown, there exists a case where the position of the centroid vertex C is positioned slightly outside the distribution of the original point group.

[0145] For example, the encoding device performs integerization processing, prioritizing the carry-over of the fractional part, for the length of the vector Cvec. For instance, a carry-over is performed when the fractional part is 0.3 or greater. In this case, the bulge of the centroid vertex C (the amount of movement relative to its original position) is in the range of -0.3 to +0.7.

[0146] On the other hand, when using the interpolation vertex processing described in this embodiment, the number of vertices increases, so there is no need to perform such centroid vertex position adjustment processing. Therefore, the decoding device readjusts the position of the centroid vertex C when applying the interpolation vertex processing. Figure 22 This is a diagram showing examples of various vertices and triangles after this adjustment process.

[0147] For example, the decoding device makes adjustments to shorten the vector Cvec so that the vertex group more accurately represents the shape of the original point group. For example, the decoding device calculates the adjustment by multiplying the length of the vector Cvec by a predetermined coefficient. This coefficient could be 1 / 4 or 1 / 8, etc. The decoding device adjusts the vector Cvec by subtracting the calculated adjustment from its length. That is, the position of the centroid vertex C is shifted by this adjustment in the opposite direction to the vector Cvec.

[0148] Additionally, in the interpolation vertex processing described above, the amount of movement of the interpolation vertex is calculated using the adjusted vector Cvec as shown.

[0149] Furthermore, the decoding device can also switch between performing the aforementioned interpolation vertex processing based on the length of the vector Cvec. For example, the decoding device determines whether the length of the vector Cvec is greater than a first threshold. If the length of the vector Cvec is greater than the first threshold, the decoding device determines that the bulge of the point group shape is large and uses interpolation vertex processing. On the other hand, if the length of the vector Cvec is less than the first threshold, the decoding device determines that the bulge of the point group shape is small and does not use interpolation vertex processing.

[0150] For example, the first threshold can be a predetermined fixed value. Alternatively, the encoding device can determine the value of the first threshold and store information representing the value of the first threshold in metadata such as GDUH. In this case, the decoding device determines the value of the first threshold based on this information.

[0151] Furthermore, the decoding device can also switch between performing interpolation vertex processing based on the size of the node. For example, the decoding device determines whether the size of the object node is larger than a second threshold. If the size of the object node is larger than the second threshold, the decoding device applies interpolation vertex processing to the object node. On the other hand, if the size of the object node is less than the second threshold, the decoding device does not apply interpolation vertex processing to the object node.

[0152] For example, the second threshold can be a predetermined fixed value. Alternatively, the encoding device can determine the value of the second threshold and store information representing the value of the second threshold in metadata such as GDUH. In this case, the decoding device determines the value of the second threshold based on this information.

[0153] Furthermore, the decoding device can apply interpolation vertex processing regardless of the length of the vector 'Cvec', or regardless of the size of the node.

[0154] Furthermore, the above description illustrates an example of generating one interpolation vertex on one edge of the original triangle, but it is also possible to generate two or more interpolation vertices on one edge. Additionally, it is possible to generate two or more interpolation vertices on each of all edges of the original triangle, or to generate two or more interpolation vertices on some edges of the original triangle, and one interpolation vertex on the remaining edges.

[0155] In this case, the interpolation vertices can be adjusted using the same method described above. That is, all interpolation vertices on a given edge are moved in the direction of the vector Cvec. This allows the shape of the restored point group to approximate the original point group, thus improving the accuracy of the restored point group.

[0156] Furthermore, in the above description, the direction in which the interpolation vertex moves is from the centroid G of the edge vertex group towards the centroid vertex C (vector Cvec direction), but other directions are also possible. For example, the direction in which the interpolation vertex moves could be the direction intersecting the original triangle. For example, the direction in which the interpolation vertex moves could be the direction in which the position of the interpolation vertex deviates from the centroid G of the edge vertex group. For example, the direction in which the interpolation vertex moves could be the direction of the triangle's normal. Specifically, the direction in which the interpolation vertex moves could be along the triangle's normal and the position of the interpolation vertex deviates from the centroid G of the edge vertex group. Alternatively, the direction in which the interpolation vertex moves could be the direction outward of the node, or the direction in which the position of the interpolation vertex deviates from the center of the node.

[0157] Furthermore, at least one of the following: the method for adjusting the interpolation vertices, the vectors used in the adjustment, the adjustment direction (movement direction) and the adjustment amount (movement amount), and the interpolation coefficients, can be used commonly across all interpolation vertices included in the processing unit, or can be different for each interpolation vertex. Here, the processing unit can be a node, or a unit comprising multiple nodes (e.g., a GDU or a slice).

[0158] [Summary] As described above, the decoding device (three-dimensional data decoding device) involved in the implementation method performs... Figure 23 The processing is shown below. The decoding device decodes multiple 3D points. Using the two vertices of the first triangle set, the decoding device calculates the position of the first point (e.g., an interpolation vertex) on the edge connecting the two triangle set vertices (e.g., centroid vertex, edge vertex, or face vertex) (S301), and shifts the position of the first point in the first direction (S302). The second triangle set is then generated using the first point with the shifted position (S303). The first triangle set is used to generate multiple 3D points within a node according to the triangle set method. A node is a unit within an octree structure that includes multiple 3D points.

[0159] Therefore, in addition to the vertices of the triangle set, the decoding device generates a first point on the edge of the first triangle set and uses this first point to generate the second triangle set. This improves the accuracy of the restored 3D data. Furthermore, by shifting the position of the first point, the decoding device can potentially further improve the accuracy of the 3D data. Here, accuracy is an indicator of the degree to which the shape of the original point group is restored; a higher accuracy indicates a better restoration of the original point group. In other words, as in this decoding method, by using the added first point to generate the second triangle set, a more refined representation can be achieved, thus improving accuracy.

[0160] For example, the first direction is the direction in which the position of the first point deviates from the centroid (e.g., centroid G) of the multiple edge vertices of the node. Thus, the decoding device can accurately reconstruct the shape of the original point group that convexes in the direction deviating from the centroid of the multiple edge vertices.

[0161] For example, the first direction is the direction from the centroids of multiple edge vertices of the node toward the centroid vertex of the node (e.g., the direction of the vector Cvec). As a result, the decoding device can improve the reconstruction accuracy of the area around the centroid vertex.

[0162] For example, the first direction is the direction in which the position of the first point deviates from the centroid of the multiple edge vertices of the node, and it is along the direction of the normal of the first set of triangles. Thus, the decoding device can reconstruct 3D data that more closely approximates the shape of the original 3D data.

[0163] For example, the greater the distance between the centroid of multiple edge vertices and the centroid of a node, the greater the offset applied to the offset of the first point. Thus, the decoding device can reconstruct 3D data that more closely approximates the shape of the original 3D data.

[0164] For example, the offset applied in the offset of point 1 is calculated by multiplying the distance between the centroids of multiple edge vertices and the centroid vertex of the node by a coefficient (e.g., an interpolation coefficient), where the coefficient is greater than 0 and less than 1 / 8. If the coefficient is too large, it is easy to produce an error where the corrected position is located outside the node. In contrast, by using a coefficient with a value less than 1 / 8, such errors can be suppressed.

[0165] For example, when the node size is larger than a threshold, the position of the first point is calculated, its offset is adjusted, and the second triangle set is generated. When the node size is smaller than the threshold, these steps are not performed. With large node sizes, the accuracy of the reconstructed 3D data is more likely to decrease. In such cases, calculating the position of the first point, offsetting its position, and generating the second triangle set can effectively improve the accuracy of the 3D data.

[0166] For example, point 1 is the midpoint of an edge. Thus, by generating point 1 at the midpoint of an edge, the decoding device can effectively improve the accuracy of the 3D data.

[0167] For example, the vertices of a set of two triangles include face vertices generated on the faces of nodes other than the edges of the nodes. Thus, the decoding device can improve the accuracy of 3D data reconstructed using face vertices.

[0168] For example, if the three vertices of the first triangle set are each one of the edge vertex, the centroid vertex, and the face vertex provided by the face of the node (excluding the edge of the node), the position of the first point is shifted if the pair of two triangle set vertices is not a pair of face vertex and centroid vertex, and the position of the first point is not shifted if the pair of two triangle set vertices is a pair of face vertex and centroid vertex.

[0169] When the set of two triangles consists of a face vertex and a centroid vertex, the shape of the 3D data reconstructed by offsetting the position of the first point may deviate from the shape of the original 3D data. Therefore, by not offsetting in such cases, the accuracy of the reconstructed 3D data can be improved.

[0170] Figure 24This is a block diagram of the decoding device 10. For example, the decoding device 10 includes a processor 11 and a memory 12, and the processor 11 uses the memory 12 to perform the above-described processing.

[0171] Furthermore, the encoding device (three-dimensional data encoding device) involved in the implementation method performs... Figure 25 The process is illustrated. The encoding device encodes multiple 3D points. Using the two vertices of the first triangle set, the encoding device calculates the position of the first point (e.g., an interpolation vertex) on the edge connecting the two triangle set vertices (e.g., centroid vertex, edge vertex, or face vertex) (S311), shifts the position of the first point in the first direction (S312), and generates the second triangle set using the first point with the shifted position (S313). The first triangle set is used to generate multiple 3D points within a node according to the triangle set method. A node is a unit within an octree structure that includes multiple 3D points.

[0172] Therefore, in addition to the vertices of the triangle set, the encoding device also generates a first point on the edge of the first triangle set and uses this first point to generate the second triangle set. This improves the accuracy of the reconstructed 3D data. Furthermore, by shifting the position of the first point, the encoding device has the potential to further improve the accuracy of the 3D data.

[0173] Figure 26 This is a block diagram of the encoding device 20. For example, the encoding device 20 includes a processor 21 and a memory 22, with the processor 21 using the memory 22 to perform the aforementioned processing. Furthermore, the encoding device can also perform the same processing on the aforementioned decoding device.

[0174] The above describes the encoding device (three-dimensional data encoding device) and decoding device (three-dimensional data decoding device) involved in the embodiments and variations of this disclosure, but this disclosure is not limited to this embodiment.

[0175] Furthermore, the processing units included in the encoding and decoding devices described in the above embodiments are typically implemented using LSIs as integrated circuits. They can be implemented individually as single chips, or as single chips comprising some or all of them.

[0176] Furthermore, the formation of integrated circuits is not limited to LSIs; they can also be implemented using dedicated circuits or general-purpose processors. Alternatively, FPGAs (Field Programmable Gate Arrays) that can be programmed after LSI fabrication, or reconfigurable processors that connect and configure the internal circuitry of the reconfigurable LSI, can be utilized.

[0177] Furthermore, in the above embodiments, each component may be constructed using dedicated hardware, or implemented by executing software programs suitable for each component. Each component may also be implemented by a program execution unit such as a CPU or processor reading and executing software programs recorded on a recording medium such as a hard disk or semiconductor memory.

[0178] In addition, this disclosure can also be implemented as an encoding method (three-dimensional data encoding method) or a decoding method (three-dimensional data decoding method) executed by an encoding device (three-dimensional data encoding device) and a decoding device (three-dimensional data decoding device).

[0179] Furthermore, this disclosure can also be implemented as a program that causes a computer, processor, or device to execute the above-described encoding or decoding methods. Additionally, this disclosure can also be implemented as a bitstream generated by the above-described encoding methods. Furthermore, this disclosure can also be implemented as a recording medium on which the program or the bitstream is recorded. For example, this disclosure can also be implemented as a non-volatile, computer-readable recording medium on which the program or the bitstream is recorded.

[0180] Furthermore, the division of functional modules in the block diagram is one example. Multiple functional modules can also be implemented as a single functional module, or a single functional module can be divided into multiple modules, or some functions can be transferred to other functional modules. Additionally, the functions of multiple functional modules with similar capabilities can be processed in parallel or in a time-sharing manner by a single piece of hardware or software.

[0181] Furthermore, the order in which the steps in the flowchart are executed is an illustrative order for the purpose of explaining this disclosure, and may also be an order other than that described above. Additionally, some of the steps described above may be executed simultaneously (in parallel) with other steps.

[0182] The above description, based on embodiments, illustrates one or more encoding and decoding devices, etc., and this disclosure is not limited to these embodiments. As long as it does not depart from the spirit of this disclosure, various modifications to this embodiment that are conceived by those skilled in the art, and methods of constructing by combining the constituent elements of different embodiments, can also be included within the scope of one or more embodiments.

[0183] Industrial applicability This disclosure is applicable to encoding devices and decoding devices.

[0184] Explanation of reference numerals in the attached figures: 10 Decoding devices 11, 21 processors 12, 22 memory 20 Encoding devices 101 Object Space Groups 102 and 133 103, 111, 132 points 104 leaf nodes 112 Edge Vertices Ranges 113 and 122 121 Approximate Plane 123 Vertex Information 131 Triangle 151. Center of mass vertex 161-face vertex

Claims

1. A decoding method for decoding multiple 3D points. Using the vertices of the two triangle sets of the first triangle set, calculate the position of the first point on the edge connecting the vertices of the two triangle sets. The position of the first point is shifted in the first direction. The second set of triangles is generated using the first point with the offset position. The first triangle set is used to generate multiple 3D points within a node according to the triangle set method. The node is a unit within an octree structure that includes the multiple three-dimensional points.

2. The decoding method as described in claim 1, The first direction is the direction in which the position of the first point deviates from the centroid of the plurality of edge vertices of the node.

3. The decoding method as described in claim 1, The first direction is the direction from the centroid of the node's multiple edge vertices toward the node's centroid vertex.

4. The decoding method as described in claim 2, The first direction is the direction in which the position of the first point deviates from the centroid of the multiple edge vertices of the node, and is the direction along the normal of the first set of triangles.

5. The decoding method as described in claim 3, The greater the distance between the centroid of the plurality of edge vertices and the centroid vertex of the node, the greater the offset applied to the offset of the position of the first point.

6. The decoding method as described in claim 3, The offset applied to the position of the first point is calculated by multiplying the distance between the centroids of the plurality of edge vertices and the centroid vertex of the node by a coefficient. The coefficient is greater than 0 and less than 1 / 8.

7. The decoding method as described in claim 1, If the size of the node is larger than the threshold, the position of the first point is calculated, the position of the first point is offset, and the second triangle set is generated. If the size of the node is smaller than the threshold, the calculation of the position of the first point, the offset of the position of the first point, and the generation of the second triangle set are not performed.

8. The decoding method as described in claim 1, The first point is the midpoint of the edge.

9. The decoding method as described in claim 1, The two sets of triangles include face vertices generated on the faces of the node, excluding the edges of the node.

10. The decoding method as described in claim 1, The three vertices of the first set of triangles are each one of the following: an edge vertex, a centroid vertex, and a face vertex provided by the face of the node (excluding the edges of the node). If the set of vertices of the two triangles is not the set of the face vertex and the centroid vertex, the position of the first point is shifted. When the set of vertices of the two triangles is a set of face vertices and centroid vertices, the position of the first point is not shifted.

11. An encoding method for encoding multiple three-dimensional points. Using the vertices of the two triangle sets of the first triangle set, calculate the position of the first point on the edge connecting the vertices of the two triangle sets. The position of the first point is shifted in the first direction. The second set of triangles is generated using the first point with the offset position. The first triangle set is used to generate multiple 3D points within a node according to the triangle set method. The node is a unit within an octree structure that includes the multiple three-dimensional points.

12. A decoding device for decoding multiple three-dimensional points, comprising: Processor; and memory, The processor uses the memory. Using the vertices of the two triangle sets of the first triangle set, calculate the position of the first point on the edge connecting the vertices of the two triangle sets. The position of the first point is shifted in the first direction. The second set of triangles is generated using the first point with the offset position. The first triangle set is used to generate multiple 3D points within a node according to the triangle set method. The node is a unit within an octree structure that includes the multiple three-dimensional points.

Citation Information

Patent Citations

  • Map display device

    WO2014020663A1