Decoding method, encoding method, and decoding device

By shifting and generating additional tri-soap triangles in the decoding and encoding of three-dimensional data, the method significantly improves the accuracy of restored point clouds, addressing the limitations of existing technologies.

WO2025074797A1PCT designated stage expired Publication Date: 2025-04-10PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
PCT/JP2024/031103
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-10-04
Filing Date
2024-08-30
Publication Date
2025-04-10

AI Technical Summary

Technical Problem

Existing methods for encoding and decoding three-dimensional data, particularly point clouds, struggle to accurately restore the original shape, leading to reduced accuracy in representation.

Method used

The proposed solution involves a decoding method and encoding method that calculate the position of a first point on the side connecting two tri-soap vertices of a tri-soap triangle, shift this position in a specified direction, and use the shifted point to generate a second tri-soap triangle, thereby improving the accuracy of restored three-dimensional data.

Benefits of technology

This approach enhances the accuracy of restored three-dimensional data by generating additional points that improve the detail and fidelity of the original point cloud shape, even in convex directions away from the center of gravity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure JP2024031103_10042025_PF_FP_ABST
    Figure JP2024031103_10042025_PF_FP_ABST
Patent Text Reader

Abstract

A decoding method according to the present invention decodes a plurality of three-dimensional points and comprises: calculating the position of a first point on a side connecting two trisoup vertices of a first trisoup triangle by using two trisoup vertices (S301); shifting the position of the first point in a first direction (S302); and generating a second trisoup triangle by using the first point at the shifted position (S303). The first trisoup triangle is used to generate a plurality of three-dimensional points in a node according to a trisoup method, and the node is a unit in an 8-tree structure including the plurality of three-dimensional points.
Need to check novelty before this filing date? Find Prior Art

Description

Decoding method, encoding method and decoding device

[0001] The present disclosure relates to a decoding method, an encoding method, a decoding device, and an encoding device.

[0002] In the future, devices and services that utilize 3D data are expected to become widespread in a wide range of fields, including computer vision for autonomous operation of automobiles or robots, map information, surveillance, infrastructure inspection, video distribution, etc. 3D data can be acquired in a variety of ways, including distance sensors such as range finders, stereo cameras, or a combination of multiple monocular cameras.

[0003] One method of representing three-dimensional data is a representation called a point cloud, which represents the shape of a three-dimensional structure using a group of points in three-dimensional space. In a point cloud, the position and color of the points are stored. Point clouds are expected to become the mainstream method of representing three-dimensional data, but point clouds have a very large amount of data. Therefore, when storing or transmitting three-dimensional data, it is essential to compress the amount of data by encoding, just as with two-dimensional moving images (examples include MPEG-4 AVC or HEVC standardized by MPEG).

[0004] Furthermore, compression of point clouds is partially supported by a public library (Point Cloud Library) that performs processing related to point clouds.

[0005] Furthermore, a technique is known in which three-dimensional map data is used to search for and display facilities located around a vehicle (see, for example, Patent Document 1).

[0006] International Publication No. 2014 / 020663

[0007] In such encoding and decoding of three-dimensional data, it is desirable to be able to improve the accuracy of the reconstructed three-dimensional data.

[0008] An object of the present disclosure is to provide a decoding method, an encoding method, a decoding device, or an encoding device that can improve the accuracy of reconstructed three-dimensional data.

[0009] A decoding method according to one aspect of the present disclosure is a decoding method for decoding a plurality of three-dimensional points, the method comprising: calculating the position of a first point on an edge connecting two trithorp vertices of a first trithorp triangle using the two trithorp vertices; shifting the position of the first point in a first direction; and generating a second trithorp triangle using the first point having the shifted position; the first trithorp triangle is used to generate a plurality of three-dimensional points within a node according to the trithorp method; and the node is a unit within an octree structure including the plurality of three-dimensional points.

[0010] An encoding method according to one aspect of the present disclosure is an encoding method for encoding a plurality of three-dimensional points, the method comprising: calculating the position of a first point on an edge connecting two trithorp vertices of a first trithorp triangle using the two trithorp vertices; shifting the position of the first point in a first direction; and generating a second trithorp triangle using the first point having the shifted position; the first trithorp triangle is used to generate a plurality of three-dimensional points within a node according to the trithorp method; and the node is a unit within an octree structure that includes the plurality of three-dimensional points.

[0011] The present disclosure can provide a decoding method, an encoding method, a decoding device, or an encoding device that can improve the accuracy of reconstructed three-dimensional data.

[0012] FIG. 1 is a diagram showing an example of an original point cloud according to an embodiment. FIG. 2 is a diagram showing an example of a pruned octree according to an embodiment. FIG. 3 is a diagram showing an example of a two-dimensional display of leaf nodes according to an embodiment. FIG. 4 is a diagram explaining a method for generating centroid vertices according to an embodiment. FIG. 5 is a diagram explaining a method for generating centroid vertices according to an embodiment. FIG. 6 is a diagram showing example vertex information according to an embodiment. FIG. 7 is a diagram showing an example of a Trithorpe surface according to an embodiment. FIG. 8 is a diagram explaining a point cloud restoration process according to an embodiment. FIG. 9 is a diagram showing an example of a point cloud according to an embodiment. FIG. 10 is a diagram showing an example of generating centroid vertices according to an embodiment. FIG. 11 is a diagram showing an example of generating triangles (Trithorpe surfaces) according to an embodiment. FIG. 12 is a diagram showing an example of generating face vertices according to an embodiment. FIG. 13 is a diagram showing examples of various vertices and triangles according to an embodiment. FIG. 14 is a diagram showing examples of interpolated vertices according to an embodiment. FIG. 15 is a diagram showing examples of interpolated vertices according to an embodiment. FIG. 16 is a flowchart of a decoding process according to an embodiment. FIG. 17 is a flowchart of a triangle and point generation process according to an embodiment. FIG. 18 is a flowchart of an encoding process according to an embodiment. FIG. 19 is a diagram showing an example of the syntax of a GDUH and a GDU according to an embodiment. FIG. 20 is a diagram showing an example of the syntax of a GDUH and a GDU according to an embodiment. FIG. 21 is a diagram showing examples of various vertices and triangles according to an embodiment. FIG. 22 is a diagram showing examples of various vertices and triangles after adjustment processing according to an embodiment. FIG. 23 is a flowchart of a decoding process according to an embodiment. FIG. 24 is a block diagram of a decoding device according to an embodiment. FIG. 25 is a flowchart of an encoding process according to an embodiment. FIG. 26 is a block diagram of an encoding device according to an embodiment.

[0013] A decoding method according to one aspect of the present disclosure is a decoding method for decoding a plurality of three-dimensional points, the method comprising: calculating the position of a first point on an edge connecting two trithorp vertices of a first trithorp triangle using the two trithorp vertices; shifting the position of the first point in a first direction; and generating a second trithorp triangle using the first point having the shifted position; the first trithorp triangle is used to generate a plurality of three-dimensional points within a node according to the trithorp method; and the node is a unit within an octree structure including the plurality of three-dimensional points.

[0014] According to this, the decoding method generates a first point on the edge of the first Trithorp triangle in addition to the Trithorp vertices, and generates a second Trithorp triangle using the first point. This improves the accuracy of the reconstructed three-dimensional data. Furthermore, this decoding method potentially improves the accuracy of the three-dimensional data by shifting the position of the first point. Here, accuracy is an index indicating the degree to which the shape of the original point cloud has been reconstructed, with higher accuracy indicating better reconstruction of the original point cloud. In other words, generating a second Trithorp triangle using the added first point, as in this decoding method, allows for more detailed representation, thereby improving accuracy.

[0015] For example, the first direction may be a direction in which the position of the first point moves away from the center of gravity of the edge vertices of the node. In this way, the decoding method can accurately restore the shape of the original point cloud that is convex in a direction away from the center of gravity of the edge vertices.

[0016] For example, the first direction may be a direction from the center of gravity of the edge vertices of the node toward the centroid vertex of the node, thereby improving the reconstruction accuracy of the periphery of the centroid vertex.

[0017] For example, the first direction may be a direction in which the position of the first point moves away from the center of gravity of the edge vertices of the node and along a normal to the first Trithorpe triangle, thereby enabling the decoding method to restore three-dimensional data that is closer to the shape of the original three-dimensional data.

[0018] For example, the shift amount applied to shift the position of the first point may be increased as the distance between the center of gravity of the edge vertices and the centroid vertex of the node increases, thereby enabling the decoding method to restore 3D data that is closer to the shape of the original 3D data.

[0019] For example, the shift amount applied to the shift of the position of the first point may be calculated by multiplying the distance between the center of gravity of the plurality of edge vertices and the centroid vertex of the node by a coefficient, where the coefficient is greater than 0 and less than 1 / 8. If the coefficient is too large, an error that the corrected position is outside the node is likely to occur. In contrast, by using a coefficient less than 1 / 8, the occurrence of such an error can be suppressed.

[0020] For example, if the size of the node is larger than a threshold, the calculation of the position of the first point, the shifting of the position of the first point, and the generation of the second Trithorpe triangle may be performed, whereas if the size of the node is smaller than the threshold, the calculation of the position of the first point, the shifting of the position of the first point, and the generation of the second Trithorpe triangle may not be performed. If the size of the node is large, the accuracy of the restored three-dimensional data is likely to decrease. In such cases, the accuracy of the three-dimensional data can be efficiently improved by calculating the position of the first point, shifting the position of the first point, and generating the second Trithorpe triangle.

[0021] For example, the first point may be a midpoint of the side. In this way, the decoding method can efficiently improve the accuracy of the three-dimensional data by generating the first point at the position of the midpoint of the side.

[0022] For example, the two trisorp vertices may include face vertices generated on the faces of the node, excluding the edges of the node, thereby improving the accuracy of the reconstructed three-dimensional data by using the face vertices.

[0023] For example, each of the three trisorp vertices of the first trisorp triangle is either an edge vertex, a centroid vertex, or a face vertex supplied to a face of the node excluding an edge of the node, and if the pair of two trisorp vertices is not a pair of the face vertex and the centroid vertex, the position of the first point may be shifted, and if the pair of two trisorp vertices is a pair of the face vertex and the centroid vertex, the position of the first point may not be shifted.

[0024] When the pair of two trisorp vertices is a face vertex and a centroid vertex, shifting the position of the first point may cause the shape of the reconstructed 3D data to deviate from the shape of the original 3D data. Therefore, in such cases, the accuracy of the reconstructed 3D data can be improved by not performing the shift.

[0025] An encoding method according to one aspect of the present disclosure is an encoding method for encoding a plurality of three-dimensional points, the method comprising: calculating the position of a first point on an edge connecting two trithorp vertices of a first trithorp triangle using the two trithorp vertices; shifting the position of the first point in a first direction; and generating a second trithorp triangle using the first point having the shifted position; the first trithorp triangle is used to generate a plurality of three-dimensional points within a node according to the trithorp method; and the node is a unit within an octree structure that includes the plurality of three-dimensional points.

[0026] According to this, the encoding method generates a first point on the edge of the first Trithorp triangle in addition to the Trithorp vertices, and generates a second Trithorp triangle using the first point. This improves the accuracy of the reconstructed 3D data. Furthermore, this encoding method may further improve the accuracy of the 3D data by shifting the position of the first point.

[0027] Furthermore, a decoding device according to one aspect of the present disclosure is a decoding device that decodes a plurality of three-dimensional points, and includes a processor and a memory. The processor uses the memory to calculate the position of a first point on an edge connecting two trithorp vertices of a first trithorp triangle using the two trithorp vertices, shifts the position of the first point in a first direction, and generates a second trithorp triangle using the first point having the shifted position. The first trithorp triangle is used to generate a plurality of three-dimensional points within a node according to the trithorp method, and the node is a unit within an octree structure that includes the plurality of three-dimensional points.

[0028] Furthermore, an encoding device according to one aspect of the present disclosure is an encoding device for encoding a plurality of three-dimensional points, comprising a processor and a memory, wherein the processor uses the memory to calculate the position of a first point on an edge connecting two trithorp vertices of a first trithorp triangle using the two trithorp vertices, shift the position of the first point in a first direction, and generate a second trithorp triangle using the first point having the shifted position, wherein the first trithorp triangle is used to generate a plurality of three-dimensional points within a node according to the trithorp method, and the node is a unit within an octree structure including the plurality of three-dimensional points.

[0029] These comprehensive or specific aspects may be realized as a system, a method, an integrated circuit, a computer program, or a computer-readable recording medium such as a CD-ROM, or may be realized as any combination of a system, a method, an integrated circuit, a computer program, and a recording medium.

[0030] Hereinafter, the embodiments will be described in detail with reference to the drawings. Note that each of the embodiments described below represents a specific example of the present disclosure. The numerical values, shapes, materials, components, component placement and connection configurations, steps, and step order shown in the following embodiments are merely examples and are not intended to limit the present disclosure. Furthermore, among the components in the following embodiments, components not recited in independent claims will be described as optional components.

[0031] (Embodiment) Hereinafter, an encoding device (three-dimensional data encoding device) and a decoding device (three-dimensional data decoding device) according to this embodiment will be described. The encoding device generates a bitstream by encoding three-dimensional data. The decoding device generates three-dimensional data by decoding the bitstream.

[0032] The three-dimensional data is, for example, three-dimensional point cloud data (also called point cloud data). A point cloud is a collection of multiple three-dimensional points and represents the three-dimensional shape of an object. The point cloud data includes position information and attribute information of multiple three-dimensional points. The position information indicates the three-dimensional position of each three-dimensional point. Note that the position information may also be called geometry information. For example, the position information is expressed in a Cartesian coordinate system or a polar coordinate system.

[0033] The attribute information indicates, for example, color information, reflectance, transmittance, infrared information, normal vector, time information, etc. One 3D point may have a single piece of attribute information or may have multiple types of attribute information.

[0034] Although the following mainly describes the encoding and decoding of position information, the encoding device may also encode and decode attribute information.

[0035] [TriSoup Method] The encoding device according to this embodiment encodes position information using the TriSoup (Triangle-Soup) method.

[0036] The Trithorpe method is a lossy compression method that encodes the positional information of point cloud data. The Trithorpe method converts the original point cloud to be processed into a set of triangles, and then approximates the point cloud on that plane. Specifically, the original point cloud is converted into vertex information within a node, and the vertices are connected to generate a set of triangles. The vertex information used to generate the triangles is then stored in a bitstream and sent to a decoding device.

[0037] First, the encoding process using the Trithorpe method will be described. Fig. 1 shows an example of an original point cloud. As shown in Fig. 1, a point cloud 102 of an object is contained in an object space 101 and includes a plurality of points 103.

[0038] First, the encoding device divides the source point cloud into an octree to a predetermined depth. In the octree division, the target space is divided into eight nodes (subspaces), and 8-bit information (occupancy code) indicating whether or not a point cloud is included in each node is generated. Furthermore, the node including the point cloud is further divided into eight nodes, and 8-bit information indicating whether or not a point cloud is included in each of the eight nodes is generated. This process is repeated up to a predetermined hierarchy.

[0039] In normal octree coding, division is repeated until the number of points included in a node is reduced to one or a threshold value. On the other hand, in the Trithorpe method, octree division is performed up to an intermediate layer, but not to layers below that layer. Such an octree up to an intermediate layer is called a pruned octree.

[0040] 2 is a diagram showing an example of a pruned octree. As shown in FIG. 2, a point cloud 102 is divided into a plurality of leaf nodes 104 (nodes at the bottom level) of the pruned octree.

[0041] Next, the encoding device performs the following process on each leaf node 104 of the pruned octree. Note that hereinafter, a leaf node may also be simply referred to as a node. The encoding device generates a vertex on the edge as a representative point of a group of points close to the edge of the node. This vertex is called an edge vertex. For example, an edge vertex is generated for each of multiple edges (e.g., four parallel sides).

[0042] 3 is an example of a two-dimensional display of the leaf node 104, for example, a diagram showing the xy plane as viewed from the z direction shown in Fig. 1. As shown in Fig. 3, an edge vertex 112 is generated on the edge based on the nearest points of the edge among the multiple points 111 in the leaf node 104.

[0043] In Fig. 3, the dotted line around the periphery of the leaf node 104 is the edge. In this example, the edge vertex 112 is generated at the weighted average position of the points (points included in the range 113 in Fig. 3) whose distance from the edge is within 1. The unit of distance is, for example, the resolution of the point cloud, but is not limited to this. In this example, this distance (threshold) is 1, but it may be a value other than 1 or may be variable.

[0044] Next, the encoding device generates a vertex inside the node based on a group of points existing in the normal direction of the plane containing the edge vertices. This vertex is called a centroid vertex.

[0045] 4 and 5 are diagrams illustrating a method for generating a centroid vertex. First, the encoding device selects, for example, four points as representative points from a group of edge vertices. In the example shown in FIG. 4, edge vertices v1 to v4 are selected. Next, the encoding device calculates an approximate plane 121 that passes through the four points. Next, the encoding device calculates a normal n to the approximate plane 121 and an average coordinate M of the four points. Next, the encoding device generates a centroid vertex C at the weighted average coordinate of one or more points (for example, points included in the range 122 shown in FIG. 5) that are close to a half-line extending from the average coordinate M in the direction of the normal n.

[0046] Next, the encoding device entropy-encodes the vertex information, which is information on the edge vertices and centroid vertices, and stores the encoded vertex information in a Geometry Data Unit (GDU) included in the bitstream. Note that the GDU includes information indicating the pruned octree in addition to the vertex information.

[0047] 6 is a diagram showing an example of vertex information. Through the above processing, the point group 102 is converted into vertex information 123 as shown in FIG.

[0048] Next, the decoding process of the bitstream generated above will be described. First, the decoding device decodes the GDU from the bitstream to obtain vertex information. Next, the decoding device connects the vertices to generate a TriSoup-Surface, which is a group of triangles.

[0049] 7 is a diagram showing an example of a Trithorpe surface. In the example shown in FIG. 7, four edge vertices v1 to v4 and a centroid vertex C are generated based on the vertex information. In addition, a triangle 131 (Trithorpe surface) is generated whose vertices are the centroid vertex C and two edge vertices. For example, pairs of two edge vertices on two adjacent edges are selected, and a triangle 131 is generated whose vertices are the selected pairs and the centroid vertex.

[0050] 8 is a diagram for explaining the point cloud restoration process. By performing the above process for each leaf node, a three-dimensional model is generated in which the target object is represented by a plurality of triangles 131, as shown in FIG.

[0051] Next, the decoding device generates points 132 at regular intervals on the surface of the triangle 131 to restore the position information of the point group 133 .

[0052] [Example of Representation of Ridge Lines of Point Cloud Surfaces] In some cases, the Trithorpe method cannot reconstruct the shape of ridge lines (edge ​​lines) that cross adjacent nodes. In response to this, the encoding device generates face vertices on the faces that abut adjacent nodes, and reconstructs point clouds on the triangular faces generated from the centroid vertices, face vertices, and edge vertices.

[0053] For example, if there are bends in the point cloud distribution (point cloud surface) inside a leaf node, the corners and edges of the point cloud surface do not intersect, and no vertices are created at the corner positions, so the surface model created by connecting the vertices may not be able to reproduce the shape of the original point cloud.

[0054] 9 is a diagram showing an example of a point cloud in which a ridge line is formed by distributing the point cloud across nodes 1 and 2. As shown in FIG. 9, an edge vertex 112 is generated based on the point cloud distribution near the edge.

[0055] 10 is a diagram showing an example of generating a centroid vertex in this case. As shown in Fig. 10, a centroid vertex 151 is generated in the normal direction of the approximation plane of the edge vertex group.

[0056] Fig. 11 shows an example of the generation of a triangle 131 (Trithorpe surface) in this case. As shown in Fig. 11, the triangle 131 is generated by connecting multiple vertices (multiple edge vertices and centroid vertices). In this case, as shown in Fig. 11, the point cloud near the node boundary cannot be reproduced.

[0057] This is because the centroid vertices can sample the original point cloud surface, but the current method cannot create a vertex between two centroid vertices of two adjacent nodes. For example, if a ridge line continues to be distributed within a node along one of the x, y, or z axes, a vertex corresponding to the ridge line will not be generated because the ridge line does not cross an edge. This causes this problem.

[0058] In this embodiment, the encoding device predicts the ridge line of the point cloud surface, and if it determines that two adjacent nodes have the same ridge line, it transmits information for connecting the two centroid vertices of the two adjacent nodes with a line segment to the decoding device. This information is, for example, one bit of information assigned to each face between the nodes.

[0059] The decoder uses this information to connect the centroid vertices and generate new vertices (face vertices) at the intersections of the resulting line segments and the shared faces between the nodes. The decoder can use these new vertices to reconstruct the ridge lines when generating triangles 131.

[0060] Furthermore, since the coordinate positions of the face vertices are not quantized, there is no problem of positional deviation due to quantization.

[0061] 12 is a diagram showing an example of generating face vertices. As shown in Fig. 12, the decoding device generates face vertices 161 and generates triangles 131 using the face vertices 161, thereby reproducing the ridge line.

[0062] The above method can reproduce the point cloud surface near the node boundary, resulting in a decoded point cloud that is closer to the original point cloud. Note that in the above explanation, the point cloud surface is used only to explain the issues related to ridge lines, and the ridge lines do not need to be actually obtained.

[0063] [Vertex Interpolation Processing] In the Trithorpe method, in addition to the centroid vertex, two Trithorpe vertices (edge ​​vertices or face vertices) are selected sequentially within a node, and triangles (also called Trithorpe triangles or Trithorpe surfaces) are generated sequentially using these three points. Furthermore, multiple points are generated on the surface of each triangle to reconstruct the point cloud.

[0064] However, there is a problem that the quality of the restored point cloud decreases at low bit rates (i.e., when the node size is large). In particular, when the original point cloud has a curved shape, increasing the node size increases the area of ​​each triangle within the node, making it impossible to represent the curved surface of the original point cloud, resulting in an angular point cloud being restored.

[0065] Although the following mainly describes point cloud reconstruction in a decoding device, a similar process may also be performed in an encoding device.

[0066] Figure 13 shows examples of various vertices and triangles. The figure shows a triangle viewed from the side. Trithorpe vertices V0 and V1 are edge vertices or face vertices formed on node boundaries (node ​​edges or node faces). A triangle is generated by centroid vertex C, trithorpe vertex V0, and another trithorpe vertex (not shown), and a triangle is generated by centroid vertex C, trithorpe vertex V1, and another trithorpe vertex (not shown).

[0067] In this embodiment, the decoding device subdivides each triangle using interpolated vertices during point cloud reconstruction. Fig. 14 is a diagram showing examples of generated interpolated vertices. For example, the decoding device generates interpolated vertices at the midpoints of the sides of each triangle. In the example shown in Fig. 14, the decoding device generates an interpolated vertex N0 at the midpoint between the centroid vertex C and the trisorp vertex V0, and generates an interpolated vertex N1 at the midpoint between the centroid vertex C and the trisorp vertex V1.

[0068] Next, the decoding device adjusts (moves) the positions of the interpolated vertices N0 and N1. For example, the decoding device moves (shifts) the positions (coordinates) of the interpolated vertices N0 and N1 in a direction from the center of gravity G of the edge vertices toward the centroid vertex C (the direction of the vector Cvec). This allows the decoding device to improve the accuracy of the restored point group and generate a subjectively superior restored point group that is closer to the curved shape of the original point group.

[0069] The decoding device determines whether to perform the interpolated vertex generation process and the interpolated vertex adjustment process (hereinafter, the process including the interpolated vertex generation process and the interpolated vertex adjustment process is also referred to as interpolated vertex processing) based on an interpolated vertex validity flag stored in a Geometry Data Unit Header (GDUH). The GDUH is header information for a GDU, and a GDU is a data unit that stores position information (geometry information) of a point cloud. For example, a GDU includes information on multiple nodes.

[0070] Furthermore, the decoding device sets the movement amount (adjustment amount) of the interpolation vertex to a value proportional to the distance from the center of gravity G of the edge vertex group to the centroid vertex C (the length of the vector Cvec), for example.

[0071] Furthermore, if the original point group is a planar point group, the encoding device sets the interpolation vertex valid flag to OFF (does not perform interpolation vertex processing), allowing the decoding device to maintain the process of restoring planar points as planes.

[0072] Furthermore, even if the interpolation vertex valid flag is on, if the length of the vector Cvec is 0, the decoding device does not adjust the position of the interpolation vertex. If the length of the vector Cvec is 0, the shape of the original point cloud inside the node is likely to be flat. Therefore, the decoding device can improve the accuracy of the restored point cloud.

[0073] Note that the interpolation method may not be midpoint interpolation but may be another method. For example, the interpolated vertex N0 may be generated at any position on the side connecting the centroid vertex C and the trisorp vertex V0. For example, the interpolated vertex N0 may be generated at a position where the ratio between the distance between the interpolated vertex N0 and the centroid vertex C and the distance between the interpolated vertex N0 and the trisorp vertex V0 is a predetermined ratio.

[0074] This interpolation vertex processing may be repeated multiple times, i.e., the first triangle may be subdivided into multiple second triangles by the interpolation vertex processing, and at least one of the multiple second triangles may be subdivided into multiple third triangles by the interpolation vertex processing.

[0075] As described above, performing interpolated vertex processing can improve the accuracy of the restored point cloud. Furthermore, while reducing the node size can improve the accuracy of the restored point cloud, performing interpolated vertex processing can suppress an increase in the amount of data included in the bit stream compared to when reducing the node size. Furthermore, while an interpolated vertex valid flag is additionally stored in the bit stream, for example, if the interpolated vertex valid flag is stored on a GDU-by-GDU basis, a high-resolution point cloud shape can be restored by simply adding a one-bit flag per GDU. In other words, using interpolated vertex processing can improve the accuracy of the restored point cloud while suppressing an increase in the amount of data in the bit stream.

[0076] [Adjustment Process of Interpolated Vertices] The adjustment (movement) process of interpolated vertices according to the type of vertex will be described below. FIG. 15 is a diagram showing an example of interpolated vertices. This figure corresponds to a top-down view of the nodes shown in FIGS. 13 and 14, for example. In other words, in FIG. 15, the centroid vertex C protrudes toward the front, and the center of gravity G of the edge vertices is hidden at the back of the figure. Edge vertices and face vertices also exist above the node, but are not shown. The positions of interpolated vertices N0 to N2 are corrected (moved) toward the front.

[0077] In the example shown in Figure 15, for a first triangle C-E0-F whose vertices are centroid vertex C, edge vertex E0, and face vertex F, an interpolated vertex N0 is generated on side C-E0, an interpolated vertex N1 is generated on side E0-F, and an interpolated vertex N2 is generated on side F-C.

[0078] The first triangle C-E0-F is subdivided using the interpolated vertices N0, N1, and N2, thereby generating four new second triangles: the second triangle C-N0-N2, the second triangle N0-E0-N1, the second triangle N2-N1-F, and the second triangle N0-N1-N2.

[0079] Here, the positions of the interpolation vertices N0, N1, and N2 are adjusted according to the direction and length of the vector Cvec. Therefore, the shape expressed by the four second triangles is more rounded than the shape expressed by the first triangle C-E0-F.

[0080] The adjustment process for each of the interpolated vertices N0, N1, and N2 will be described below. In this embodiment, the process is switched depending on a first condition, which is whether the interpolated vertex is located on a node boundary (whether the edge on which the interpolated vertex is generated coincides with the node boundary). The process is also switched depending on a second condition, which is whether the pair of vertices at both ends of the edge on which the interpolated vertex is generated is a pair of a centroid vertex and a face vertex.

[0081] First, the adjustment process for the interpolated vertex N0 will be described. Here, the interpolated vertex N0 does not satisfy either the first or second condition. In this case, the adjustment process for the interpolated vertex described above is performed.

[0082] Here, the movement amount (adjustment amount) of the interpolated vertex N0 is determined according to the length of the vector Cvec. For example, the movement amount of the interpolated vertex N0 is a value obtained by multiplying the length of the vector Cvec (the distance between the center of gravity G of the edge vertex group and the centroid vertex C) by the interpolation coefficient α. Here, the interpolation coefficient α may be a predetermined value. Alternatively, the interpolation coefficient α may be determined in the encoding device, and information indicating the interpolation coefficient α may be 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, for each processing unit (e.g., GDU or slice), the interpolation coefficient α that makes the shape of the restored point group closest to the shape of the original point group.

[0083] The interpolation coefficient α may be 0<α<1. For example, it may be 0<α<1 / 8 or 0<α<1 / 4. The range of the interpolation coefficient α may be switched depending on the size of the node. For example, when the node is a first size, 0<α<1 / 8 may be applied, and when the node is a second size larger than the first size, 0<α<1 / 4 may be applied. In other words, when the node size is large, a wider range may be used. In other words, when the node size is large, the upper limit of the range of the interpolation coefficient α may be larger.

[0084] Note that, when the interpolation coefficient α is predetermined, the interpolation coefficient α is predetermined to a value within the range. Thus, when the node has a first size, the interpolation coefficient α may be set to a first value, and when the node has a second size larger than the first size, the interpolation coefficient α may be set to a second value larger than the first value. Furthermore, when the encoding device sets the interpolation coefficient α, the interpolation coefficient α may be set to a value within the range.

[0085] Next, the adjustment process for the interpolated vertex N1 will be described. Here, the interpolated vertex N1 satisfies the first condition above. In other words, the interpolated vertex N1 exists on the boundary surface between the target node and an adjacent node.

[0086] In this case, the decoding device matches the positions of the interpolated vertices between adjacent nodes. If the positions of the interpolated vertices do not match between adjacent nodes, gaps will appear in the reconstructed surface made up of triangles, which will then become gaps in the reconstructed point cloud. This will reduce the accuracy of the reconstructed point cloud. On the other hand, matching the positions of the interpolated vertices between adjacent nodes will enable the generation of a continuous reconstructed surface between nodes.

[0087] First, the decoding device determines whether the interpolated vertex is on a node boundary. Note that an interpolated vertex between an edge vertex and a face vertex exists on a node boundary. Therefore, the decoding device may determine whether the interpolated vertex is a vertex between an edge vertex and a face vertex.

[0088] If the interpolated vertex is located on a node boundary, the decoding device uses a common value as the movement amount of the interpolated vertex between nodes that share the interpolated vertex. For example, the common value may be calculated using the average of the Cvec of the target node and the Cvec of the adjacent node. Alternatively, the common value may be calculated using either the Cvec of the target node or the Cvec of the adjacent node. For example, the common value may be calculated using the Cvec of the node that is earlier in decoding order (or encoding order) between the target node and the adjacent node.

[0089] Alternatively, the decoding device may not adjust the positions of interpolated vertices located on node boundaries. Alternatively, the encoding device may determine whether to adjust the positions of interpolated vertices located on node boundaries and store a flag in the bitstream indicating whether to adjust the positions of interpolated vertices located on node boundaries. In this case, the decoding device determines whether to adjust the positions of interpolated vertices located on node boundaries in accordance with the flag.

[0090] Next, the adjustment process for the interpolated vertex N2 will be described. Here, the interpolated vertex N2 satisfies the second condition above. That is, the pair of two vertices at both ends of the edge on which the interpolated vertex N2 is generated is the pair of the centroid vertex C and the face vertex F.

[0091] Here, the face vertex represents the ridge line of the original point cloud represented by the two centroid vertices of the two nodes. Therefore, it is possible that the shape of the original point cloud can be better reproduced by not adjusting the position of the interpolated vertex N2, which is the midpoint between the centroid vertex C and the face vertex F. Therefore, the decoding device does not adjust the position of the interpolated vertex N2.

[0092] The above process is applied to first triangles other than the first triangle C-F-E0 (the first triangle C-F-E1 shown in FIG. 15 and other first triangles (not shown)). As a result, a high-resolution triangle group (reconstructed surface) is generated.

[0093] Furthermore, the decoding device reconstructs a point cloud by generating a plurality of points on these second triangles using RayTracing.

[0094] 16 is a flowchart of the decoding process performed by the decoding device. First, the decoding device arithmetically decodes (entropy decodes) octet information indicating a pruned octet from the bitstream, generates a pruned octet using the octet information, and generates multiple leaf nodes (leaf node group) (S101).

[0095] Next, the decoding device arithmetically decodes vertex information indicating the positions of edge vertices and centroid vertices from the bitstream (S102).

[0096] Next, the decoding device arithmetically decodes face vertex information indicating whether to generate face vertices by connecting the centroid vertices of the nodes on both sides of the face (S103). Next, the decoding device generates face vertices based on the face vertex information (S104).

[0097] Next, the decoding device generates a triangle using each vertex, and generates a plurality of points on the triangle to restore the point group (S105).

[0098] 17 is a flowchart of the triangle and point generation process (S105). The decoding device performs the following steps S111 to S117 (loop process) for each of the leaf nodes of the pruned octree. First, the decoding device orders the edge vertices and face vertices in the node counterclockwise (S111). Next, the decoding device generates triangles by connecting the vertices in the node (the edge vertices, centroid vertices, and face vertices) (S112).

[0099] Next, the decoding device determines whether to perform interpolated vertex processing (S113). For example, the decoding device acquires (decodes) an interpolated vertex valid flag from the bitstream, and determines whether to perform interpolated vertex processing according to the acquired interpolated vertex valid flag.

[0100] If the decoding device performs interpolation vertex processing (Yes in S113), it generates interpolation vertices on each side of each triangle (S114). Next, the decoding device adjusts the positions of each interpolation vertex (S115). As a result, four triangles are generated by subdividing the original triangle.

[0101] Next, the decoding device generates multiple points on the surface of the triangle (four subdivided triangles) (S116). Next, the decoding device makes the restored point group within the node unique using coordinate values ​​and adds them to the decoded point group (S117). Here, making them unique means excluding points with duplicate coordinate values. This completes the loop processing for the target node.

[0102] On the other hand, if the decoding device does not perform interpolation vertex processing (No in S113), it skips steps S114 and S115 and generates multiple points on the surface of the triangle (S116). Next, the decoding device makes the restored point group within the node unique by coordinate values ​​and adds them to the decoded point group (S117).

[0103] 18 is a flowchart of the encoding process performed by the encoding device. First, the encoding device generates a pruned octree by dividing a point cloud into octrees, and generates multiple leaf nodes (a group of leaf nodes) of the pruned octree. The encoding device then performs arithmetic encoding (entropy encoding) on ​​octree information indicating the pruned octree, and stores the encoded octree information in a bitstream (S201).

[0104] Next, for each of the multiple nodes (leaf nodes), the encoding device generates edge vertices and centroid vertices from the distribution of point clouds within the node, arithmetically encodes (entropy encodes) the vertex information indicating each node's position information, and stores the encoded vertex information in a bitstream (S202).

[0105] Next, the encoding device generates a face vertex at the position where the line segment connecting the centroid vertex of the target node and the centroid vertex of the adjacent node intersects with the face (S203).

[0106] Next, the encoding device encodes the face vertex information and stores the encoded face vertex information in a bitstream (S204).

[0107] Next, the encoding device generates a triangle using each vertex and generates multiple points on the triangle to reconstruct a point cloud (S205). Note that the details of step S205 are the same as step S105 in the decoding device. Note that the encoding device determines whether to perform interpolation vertex processing in step S113 and stores an interpolation vertex valid flag indicating the determination result in the bitstream. In addition, the point cloud reconstructed by the encoding device is used in subsequent encoding processes (e.g., prediction processes, etc.).

[0108] [Syntax] The syntax of information transmitted from the encoding device to the decoding device for the interpolation vertex processing of this embodiment will be described below. Fig. 19 is a diagram showing an example of the syntax of GDUH (geometry_data_unit_header) and GDU (geometry_data_unit_data).

[0109] As shown in Fig. 19, the GDUH includes a C vertex valid flag and an interpolation vertex valid flag in addition to the existing header information. The C vertex valid flag indicates whether the function for generating a centroid vertex is enabled (whether to generate a centroid vertex). If the function for generating a centroid vertex is enabled, the decoding device generates a centroid vertex and generates a triangle using the centroid vertex in addition to the edge vertices. On the other hand, if the function for generating a centroid vertex is not enabled, the decoding device does not generate a centroid vertex and generates a triangle using only the edge vertices.

[0110] The interpolated vertex valid flag is one-bit information that indicates whether or not the above-described interpolated vertex processing (generation and adjustment of interpolated vertices) is performed. For example, this interpolated vertex valid flag is included in the GDUH when the function for generating centroid vertices is enabled (when the C vertex valid flag is on (e.g., 1)), and is not included in the GDUH (not included in the bitstream) when the function for generating centroid vertices is not enabled (when the C vertex valid flag is off (e.g., 0)).

[0111] The GDU includes octree information and geometry_trisoup_data. The octree information indicates the configuration of a pruned octree and the positions of multiple leaf nodes included in the pruned octree.

[0112] The geometry_trisoup_data includes information related to the generation of triangles, such as vertex information for edge vertices and centroid vertices, and face vertex information for face vertices.

[0113] Fig. 20 is a diagram showing another example of the syntax of the GDUH and GDU. In Fig. 20, the GDUH includes interpolation coefficients in addition to the information shown in Fig. 19. The interpolation coefficients are used to calculate the amount of movement used to adjust the position of the interpolated vertex. For example, the interpolation coefficients are coefficients that are multiplied by the length of the vector Cvec.

[0114] For example, this interpolation coefficient is included in the GDUH when the function for generating centroid vertices is enabled, and is not included in the GDUH (not included in the bitstream) when the function for generating centroid vertices is not enabled.

[0115] Note that, here, an example has been shown in which the interpolation vertex valid flag and the interpolation coefficient are included in the GDUH when the C vertex valid flag is on, but at least one of the interpolation vertex valid flag and the interpolation coefficient may be included in the GDUH regardless of the value of the C vertex valid flag.

[0116] Furthermore, at least one of the interpolation vertex valid flag and the interpolation coefficient may be included in control information other than the GDUH included in the bitstream. For example, at least one of the interpolation vertex valid flag and the interpolation coefficient may be included in control information (header) for each sequence. A sequence is a unit including multiple frames. The control information for each sequence is, for example, a sequence parameter set (SPS) or a geometry parameter set (GPS). The SPS is control information (parameter set) common to multiple frames. The GPS is metadata (parameter set) related to the encoding of position information, and is metadata common to multiple frames.

[0117] While the above describes an example in which the positions of the interpolation vertices are adjusted, the positions of at least one of the centroid vertices, edge vertices, and face vertices may also be adjusted in addition to the interpolation vertices, thereby improving the accuracy of the restored point group.

[0118] Fig. 21 is a diagram showing examples of various vertices and triangles. The example shown in Fig. 21 differs from the example shown in Fig. 13 in the position of the centroid vertex C.

[0119] Specifically, the Trisop method requires the representation of a shape that approximates the shape of the original point cloud using a small number of vertices. Therefore, for example, as shown in Figure 21, the centroid vertex C may be positioned slightly outside the distribution of the original point cloud.

[0120] For example, the encoding device performs integer rounding on the length of the vector Cvec, prioritizing rounding up the decimal point. For example, rounding up is performed when the decimal point is 0.3 or greater. In this case, the protrusion amount (the amount of movement from the original position) of the centroid vertex C is in the range of −0.3 to +0.7.

[0121] On the other hand, when the interpolation vertex processing described in this embodiment is used, the number of vertices increases, so such processing for adjusting the position of the centroid vertex is not necessary. Therefore, when applying the interpolation vertex processing, the decoding device readjusts the position of the centroid vertex C. Figure 22 is a diagram showing examples of various vertices and triangles after this adjustment processing.

[0122] For example, the decoding device adjusts the vector Cvec to be shorter so that the vertices more accurately represent the shape of the original point cloud. For example, the decoding device calculates the adjustment amount by multiplying the length of the vector Cvec by a predetermined coefficient. For example, this coefficient may be 1 / 4, 1 / 8, or the like. The decoding device adjusts the vector Cvec by subtracting the calculated adjustment amount from the length of the vector Cvec. In other words, the position of the centroid vertex C is moved by the adjustment amount in the direction opposite to the direction of the vector Cvec.

[0123] Furthermore, in the interpolation vertex processing described above, the vector Cvec after being adjusted in this way is used to calculate the movement amount of the interpolation vertex.

[0124] Furthermore, the decoding device may switch whether or not to perform the above-described interpolation vertex processing depending on the length of the vector Cvec. For example, the decoding device determines whether or not 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 cloud shape is large and uses the interpolation vertex processing. On the other hand, if the length of the vector Cvec is equal to or less than the first threshold, the decoding device determines that the bulge of the point cloud shape is small and does not use the interpolation vertex processing.

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

[0126] Furthermore, the decoding device may switch whether or not to perform interpolation vertex processing depending on the size of the node. For example, the decoding device determines whether or not the size of the target node is greater than a second threshold. If the size of the target node is greater than the second threshold, the decoding device applies interpolation vertex processing to the target node. On the other hand, if the size of the target node is equal to or less than the second threshold, the decoding device does not apply interpolation vertex processing to the target node.

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

[0128] Note that the decoding device may apply the interpolation vertex processing regardless of the length of the vector Cvec, and may apply the interpolation vertex processing regardless of the size of the node.

[0129] Although the above description shows an example in which one interpolated vertex is generated on one side of the original triangle, two or more interpolated vertices may be generated on one side. Note that two or more interpolated vertices may be generated on each of all sides of the original triangle, or two or more interpolated vertices may be generated on some sides of the original triangle and one interpolated vertex may be generated on the remaining side.

[0130] In this case, the interpolation vertices may be adjusted using the same method as above. That is, all interpolation vertices on a certain side are moved in the direction of the vector Cvec. This allows the shape of the restored point cloud to approach the original point cloud, thereby improving the accuracy of the restored point cloud.

[0131] Furthermore, in the above description, the direction in which the interpolated vertex is moved is the direction from the center of gravity G of the edge vertices to the centroid vertex C (the direction of the vector Cvec), but it may be other than this. For example, the direction in which the interpolated vertex is moved may be a direction that intersects with the original triangle. For example, the direction in which the interpolated vertex is moved may be a direction in which the position of the interpolated vertex moves away from the center of gravity G of the edge vertices. For example, the direction in which the interpolated vertex is moved may be the direction of the normal to the triangle. Specifically, the direction in which the interpolated vertex is moved may be along the normal to the triangle and in which the position of the interpolated vertex moves away from the center of gravity G of the edge vertices. Alternatively, the direction in which the interpolated vertex is moved may be outward from the node, or in which the position of the interpolated vertex moves away from the center of the node.

[0132] Furthermore, at least one of the method of adjusting the interpolated vertices, the vector used for the adjustment, the adjustment direction (movement direction), the adjustment amount (movement amount), and the interpolation coefficient may be used in common for all the interpolated vertices included in the processing unit, or may be different for each interpolated vertex. Here, the processing unit may be a node, or may be a unit including multiple nodes (for example, a GDU or a slice).

[0133] [Summary] As described above, the decoding device (3D data decoding device) according to the embodiment performs the process shown in FIG. 23 . The decoding device decodes multiple 3D points. The decoding device calculates the position of a first point (e.g., an interpolation vertex) on an edge connecting two Trithorp vertices (e.g., a centroid vertex, an edge vertex, or a face vertex) of a first Trithorp triangle using the two Trithorp vertices (S301), shifts the position of the first point in a first direction (S302), and generates a second Trithorp triangle using the first point having the shifted position (S303). The first Trithorp triangle is used to generate multiple 3D points within a node according to the Trithorp method. A node is a unit within an octree structure that includes multiple 3D points.

[0134] According to this method, the decoding device generates a first point on the edge of the first Trithorp triangle in addition to the Trithorp vertex, and generates a second Trithorp triangle using the first point. This improves the accuracy of the reconstructed three-dimensional data. Furthermore, the decoding device may further improve the accuracy of the three-dimensional data by shifting the position of the first point. Here, accuracy is an index indicating the degree to which the shape of the original point cloud has been reconstructed; the higher the accuracy, the better the reconstruction of the original point cloud. In other words, by generating a second Trithorp triangle using the added first point, as in this decoding method, more detailed representation can be achieved, thereby improving accuracy.

[0135] For example, the first direction is a direction in which the position of the first point moves away from the center of gravity (e.g., center of gravity G) of the multiple edge vertices of the node. This allows the decoding device to accurately restore the shape of the original point cloud that is convex in the direction away from the center of gravity of the multiple edge vertices.

[0136] For example, the first direction is a direction from the center of gravity of the edge vertices of the node toward the centroid vertex of the node (for example, the direction of the vector Cvec), which allows the decoding device to improve the restoration accuracy around the centroid vertex.

[0137] For example, the first direction is a direction in which the position of the first point moves away from the center of gravity of the edge vertices of the node and along the normal of the first Trithorpe triangle, which allows the decoding device to restore three-dimensional data that is closer to the shape of the original three-dimensional data.

[0138] For example, the shift amount applied to the shift of the position of the first point increases as the distance between the center of gravity of the edge vertices and the centroid vertex of the node increases, thereby enabling the decoding device to restore 3D data that is closer to the shape of the original 3D data.

[0139] For example, the shift amount applied to the position of the first point is calculated by multiplying the distance between the center of gravity of the 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, an error is likely to occur in which the corrected position is outside the node. In contrast, using a coefficient less than 1 / 8 can suppress the occurrence of such an error.

[0140] For example, if the node size is larger than the threshold, the calculation of the position of the first point, the shift of the position of the first point, and the generation of the second Trithorpe triangle are performed, whereas if the node size is smaller than the threshold, the calculation of the position of the first point, the shift of the position of the first point, and the generation of the second Trithorpe triangle are not performed. If the node size is large, there is a high possibility that the accuracy of the restored 3D data will decrease. In such cases, the accuracy of the 3D data can be efficiently improved by calculating the position of the first point, shifting the position of the first point, and generating the second Trithorpe triangle.

[0141] For example, the first point is the midpoint of a side. In this way, the decoding device can efficiently improve the accuracy of the three-dimensional data by generating the first point at the position of the midpoint of the side.

[0142] For example, the two trisorp vertices include face vertices generated on the faces of the node, excluding the edges of the node, allowing the decoding device to improve the accuracy of the reconstructed three-dimensional data by using the face vertices.

[0143] For example, each of the three trisorp vertices of the first trisorp triangle is either an edge vertex, a centroid vertex, or a face vertex supplied to a face of the node excluding the edge of the node, and if the pair of two trisorp vertices is not a pair of a face vertex and a centroid vertex, the position of the first point is shifted, and if the pair of two trisorp vertices is a pair of a face vertex and a centroid vertex, the position of the first point is not shifted.

[0144] When the pair of two trisorp vertices is a face vertex and a centroid vertex, shifting the position of the first point may cause the shape of the reconstructed 3D data to deviate from the shape of the original 3D data. Therefore, in such cases, the accuracy of the reconstructed 3D data can be improved by not performing the shift.

[0145] 24 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.

[0146] Furthermore, an encoding device (three-dimensional data encoding device) according to an embodiment performs the process shown in FIG. 25 . The encoding device encodes multiple three-dimensional points. The encoding device calculates the position of a first point (e.g., an interpolation vertex) on an edge connecting two trithorp vertices (e.g., a centroid vertex, an edge vertex, or a face vertex) of a first trithorp triangle using the two trithorp vertices (S311), shifts the position of the first point in a first direction (S312), and generates a second trithorp triangle using the first point having the shifted position (S313). The first trithorp triangle is used to generate multiple three-dimensional points within a node according to the trithorp method. A node is a unit within an octree structure containing multiple three-dimensional points.

[0147] According to this method, the encoding device generates a first point on the edge of the first Trithorp triangle in addition to the Trithorp vertices, and generates a second Trithorp triangle using the first point. This improves the accuracy of the reconstructed 3D data. Furthermore, the encoding device may further improve the accuracy of the 3D data by shifting the position of the first point.

[0148] 26 is a block diagram of the encoding device 20. For example, the encoding device 20 includes a processor 21 and a memory 22, and the processor 21 performs the above-described processing using the memory 22. Note that the encoding device may perform the same processing as the above-described decoding device.

[0149] The above describes the encoding device (three-dimensional data encoding device) and decoding device (three-dimensional data decoding device) according to the embodiments and modifications of the present disclosure, but the present disclosure is not limited to these embodiments.

[0150] Furthermore, each processing unit included in the encoding device, decoding device, etc. according to the above-described embodiments is typically realized as an LSI, which is an integrated circuit. These may be individually implemented as single chips, or some or all of them may be integrated into a single chip.

[0151] Furthermore, the integrated circuit is not limited to an LSI, but may be realized by a dedicated circuit or a general-purpose processor. An FPGA (Field Programmable Gate Array) that can be programmed after the LSI is manufactured, or a reconfigurable processor that can reconfigure the connections and settings of circuit cells within the LSI may also be used.

[0152] In each of the above embodiments, each component may be configured with dedicated hardware, or may be realized by executing a software program suitable for that component. Each component may be realized by a program execution unit such as a CPU or processor reading and executing a software program recorded on a recording medium such as a hard disk or semiconductor memory.

[0153] Furthermore, the present disclosure may be realized 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), etc.

[0154] The present disclosure may also be realized as a program that causes a computer, processor, or device to execute the encoding method or decoding method. The present disclosure may also be realized as a bitstream generated by the encoding method. The present disclosure may also be realized as a recording medium on which the program or the bitstream is recorded. For example, the present disclosure may also be realized as a non-transitory computer-readable recording medium on which the program or the bitstream is recorded.

[0155] The division of functional blocks in the block diagram is an example, and multiple functional blocks may be realized as a single functional block, one functional block may be divided into multiple blocks, or some functions may be moved to another functional block.Furthermore, the functions of multiple functional blocks having similar functions may be processed in parallel or in time-sharing by a single piece of hardware or software.

[0156] The order in which the steps in the flowchart are executed is merely an example for specifically explaining the present disclosure, and other orders may be used. Also, some of the steps may be executed simultaneously (in parallel) with other steps.

[0157] While the encoding device and decoding device according to one or more aspects have been described based on the embodiments, the present disclosure is not limited to these embodiments. As long as they do not deviate from the spirit of the present disclosure, various modifications conceivable by those skilled in the art to the present embodiments and configurations constructed by combining components of different embodiments may also be included within the scope of one or more aspects.

[0158] The present disclosure is applicable to encoding devices and decoding devices.

[0159] 10 Decoding device 11, 21 Processor 12, 22 Memory 20 Encoding device 101 Object space 102, 133 Point cloud 103, 111, 132 Point 104 Leaf node 112 Edge vertex 113, 122 Range 121 Approximation plane 123 Vertex information 131 Triangle 151 Centroid vertex 161 Face vertex

Claims

1. A decoding method for decoding a plurality of 3D points, comprising: calculating a position of a first point on an edge connecting two trithorp vertices of a first trithorp triangle using the two trithorp vertices; shifting the position of the first point in a first direction; generating a second trithorp triangle using the first point having the shifted position; the first trithorp triangle is used to generate a plurality of 3D points within a node according to a trithorp scheme; and the node is a unit within an octree structure including the plurality of 3D points.

2. The decoding method according to claim 1, wherein the first direction is a direction in which the position of the first point moves away from the center of gravity of a plurality of edge vertices of the node.

3. The decoding method according to claim 1, wherein the first direction is a direction from a center of gravity of a plurality of edge vertices of the node toward a centroid vertex of the node.

4. The decoding method according to claim 2, wherein the first direction is a direction in which the position of the first point moves away from the center of gravity of a plurality of edge vertices of the node and along a normal to the first Trithorpe triangle.

5. The method of claim 3, wherein the shift amount applied to shift the position of the first point increases as the distance between the center of gravity of the plurality of edge vertices and the centroid vertex of the node increases.

6. The decoding method of claim 3, wherein the shift amount applied to shift the position of the first point is calculated by multiplying the distance between the center of gravity of the plurality of edge vertices and the centroid vertex of the node by a coefficient, the coefficient being greater than 0 and less than 1 / 8.

7. The decoding method according to claim 1, wherein, if the size of the node is greater than a threshold, the position of the first point is calculated, the position of the first point is shifted, and the second Trithorpe triangle is generated; and, if the size of the node is smaller than the threshold, the position of the first point is not calculated, the position of the first point is not shifted, and the second Trithorpe triangle is not generated.

8. The decoding method according to claim 1, wherein the first point is a midpoint of the edge.

9. The decoding method according to claim 1, wherein the two trisorp vertices include face vertices generated on the faces of the node, excluding the edges of the node.

10. The decoding method of claim 1, wherein each of the three trisorp vertices of the first trisorp triangle is either an edge vertex, a centroid vertex, or a face vertex supplied to a face of the node excluding an edge of the node, and if the pair of the two trisorp vertices is not a pair of the face vertex and the centroid vertex, the position of the first point is shifted, and if the pair of the two trisorp vertices is a pair of the face vertex and the centroid vertex, the position of the first point is not shifted.

11. A method for encoding a plurality of three-dimensional points, comprising: calculating a position of a first point on an edge connecting two trithorpe vertices of a first trithorpe triangle using the two trithorpe vertices; shifting the position of the first point in a first direction; generating a second trithorpe triangle using the first point having the shifted position; and using the first trithorpe triangle to generate a plurality of three-dimensional points within a node according to a trithorpe scheme, the node being a unit within an octree structure including the plurality of three-dimensional points.

12. A decoding device for decoding a plurality of 3D points, comprising: a processor; and a memory, wherein the processor uses the memory to: calculate a position of a first point on an edge connecting two trithorpe vertices of a first trithorpe triangle using the two trithorpe vertices; shift the position of the first point in a first direction; generate a second trithorpe triangle using the first point having the shifted position; the first trithorpe triangle is used to generate a plurality of 3D points within a node according to a trithorpe scheme; and the node is a unit within an octree structure including the plurality of 3D points.

Citation Information

Patent Citations

  • Point group decoder, method for decoding point group, and program

    JP2023101340A

  • Point cloud model reconstruction method, encoder, and decoder

    US20220122296A1

  • Image processing device and method

    WO2020071114A1

  • Encoding / decoding positions of points of a point cloud emcompassed in a cuboid volume

    WO2023179279A1