Encoding point data that represents multiple points in three-dimensional space.
By determining node-specific comparison values based on local point density, the method addresses the issue of inaccurate vertex point identification in existing 3D point cloud compression, enhancing reconstruction accuracy and efficiency.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
- Filing Date
- 2024-04-03
- Publication Date
- 2026-06-25
AI Technical Summary
Existing 3D point cloud compression methods inaccurately identify vertex points due to using a single comparison value based on global slice characteristics, leading to poor reconstruction quality.
Determine a unique comparison value for each node based on local point density within the node, rather than relying on global slice characteristics, to accurately identify vertex points for more precise reconstruction.
This approach enhances the accuracy of 3D point cloud reconstruction by ensuring that only appropriate points are identified as vertex points, resulting in improved compression efficiency and quality.
Smart Images

Figure 2026520815000001_ABST
Abstract
Description
Technical Field
[0001] Embodiments related to encoding point data indicating a plurality of points in a three-dimensional (3D) space are disclosed.
Background Art
[0002] Today, 3D reconstruction of spaces and / or objects is widely used in various fields. For example, in home renovation, a camera capable of capturing a 360-degree view can be used to capture multiple images of a kitchen to be renovated, and the kitchen can be reconstructed in a 3D virtual space using the captured multiple images. The generated 3D reconstruction of the kitchen can be displayed on a screen, and the user can manipulate the displayed reconstruction to help visualize how the user should renovate the kitchen. In a 3D virtual space, there are a plurality of 3D points that identify an object and / or a part of the 3D virtual space. In the present disclosure, the plurality of 3D points are also referred to as a 3D point cloud.
[0003] A 3D point cloud is an unstructured set of coordinates of points in 3D space and is generally used to capture the geometry and scale of a scene. Thus, a 3D point cloud can represent a (one or more) 3D structure in the physical world. In addition to storing a set of point coordinates in 3D space, a 3D point cloud can store additional information regarding the 3D points. This additional information is also referred to as an attribute. Common attributes include color information, reflectance, normal vectors, and the like.
[0004] Embodiments of the present disclosure are applicable to point clouds with attributes, but for the purpose of simple explanation, the embodiments are described in light of geometry compression, that is, compressing the point coordinates of a point cloud without attributes. In an example of geometry compression, the coordinates of a set of 3D points TIFF2026520815000002.tif6170 can be compressed, where K is the number of points and X k is the X coordinate of the k-th 3D point, and Y k is the Y coordinate of the k-th 3D point, and Z k is the Z coordinate of the k-th 3D point.
[0005] Typical point clouds range in size from a few kilobytes to several gigabytes, which is a burden for any application that requires the storage and / or transmission of such point clouds. Therefore, an efficient point cloud compression solution is needed in all industrial applications that rely on such point clouds.
[0006] Geometry-based Point Cloud Compression (G-PCC) is a current Moving Picture Expert Group (MPEG) standard targeting use cases of static point clouds, such as those disclosed in Reference 1, cited at the end of this disclosure. It uses octree coding to compress the geometry of 3D points. When using this compression method, it is assumed that the coordinates of each 3D point contained in the point cloud are quantized to integer coordinates and contained within a volume 102 (e.g., a cube) having dimensions D×D×D, as shown in Figure 1A. The cube 102 can be segmented into eight subcubes 112, each having dimensions D / 2×D / 2×D / 2. If each subcube 112 contains at least one 3D point, then the subcube 112 is segmented into eight smaller subcubes 122, each having dimensions D / 4×D / 4×D / 4. Next, if a smaller subcube 122 contains at least one 3D point, the smaller subcube 122 can be segmented into eight microsubcubes 132. This segmentation process can be repeated until a subcube of a predetermined size (e.g., D / 16 × D / 16 × D / 16) containing a 3D point can be identified. On the other hand, if a subcube does not contain a 3D point, the segmentation process for this subcube branch can be terminated.
[0007] The process described above generates a tree structure, i.e., an octave tree as shown in Figure 1B, where each node may be represented using 8 bits, each bit indicating the occupancy status of a subcube. For example, the 8 bits 00010000 corresponding to the second level of a node may indicate that the fourth subcube 112 contains 3D point data, and the 8 bits 00000011 corresponding to the third level of a node may indicate that each of the seventh and eighth smaller subcubes 122 belonging to the fourth subcube 112 contains 3D points. In lossy compression, the octave tree division is stopped at a predetermined level, thereby generating a more sparse reconstructed structure, and the corresponding sequence of 8-bit words is entropy coded.
[0008] G-PCC also includes a module called trisoup, described in Reference 1. The trisoup module was developed to favor surface point clouds, i.e., point clouds that are dense enough to capture surface structures. Similar to octave G-PCC, this compression module (also known as trisoup coding) uses octave coding to partition the point cloud into nodes (i.e., blocks, each having a width greater than 1). However, when using this module, the octave partitioning generally stops at a higher level in the tree, making the nodes larger. This level is predetermined and set by the user / encoder. However, instead of setting a fixed depth, the user can set the trisoup node size (nodeSize=2 n n=2,...), where each node size corresponds to the depth.
[0009] Figure 2A illustrates how 3D points contained within a trisoup node (also known as a “node” or “block”) can be encoded together. As shown in Figure 2A, first, the point surface 202 on which 3D point 204 (a very small dot located on surface 202) is located is determined. The point surface 202 can be a curved surface or a flat surface (depending on the distribution of the 3D points). Once the point surface 202 is determined, the cross points (also known as “vertex points” or simply “vertices”) 212, 214, 216, and 218 where the point surface 202 intersects the boundary of the trisoup node (the cube shown in Figure 2A) are determined. Furthermore, the center point 230 of the point surface 202 may be determined.
[0010] After determining the vertex points 212, 214, 216, and 218 and the center point 230 of the point surface 202, data indicating the vertex points 212, 214, 216, and 218 and the center point 230 is generated and sent to the decoding entity. Upon receiving the data, the decoding entity may be configured to use that data to reconstruct the point surface 202 and then use the reconstructed surface to reconstruct the 3D points of the trisoup node.
[0011] One way to reconstruct the point surface 202 in the decoded entity is shown in Figure 2B. As shown in Figure 2B, the point surface 202 can be reconstructed by finding several triangular areas 252, 254, 256, and 258 using vertex points and center points. For example, triangular area 252 can be found by identifying vertex points 216 and 218 and center point 230, triangular area 254 can be found by identifying vertex points 214 and 216 and center point 230, triangular area 256 can be found by identifying cross points 212 and 214 and center point 230, and triangular area 258 can be found by identifying vertex points 212 and 218 and center point 230.
[0012] When decoding a point cloud, the surface of each block can be reconstructed by filling in all the positions for points (called voxels) that intersect with the modeled triangles. The reconstructed point cloud will be quantized so that the number of positions that can be occupied is fixed at integer positions. The purpose of this TRISOUP module is to encode point clouds at lower bitrates with little loss of precision. Compared to octree G-PCC, the reconstructed point cloud becomes denser when using trisoup, which is generally advantageous for the strain metric used in MPEG.
[0013] As described above, when encoding the point data representing the 3D point 204, vertex points 212, 214, 216 and / or 218, and / or the center point 230 may be used. As shown in Figures 2A and 2B, these points approximately define the point surface 202 on which the 3D point 204 is located.
[0014] During encoding, vertex points and / or center points can be determined by analyzing 3D points 204. After determining the vertex points and / or center points, instead of sending point data corresponding to all 3D points 204, point data corresponding to the vertex points and / or center points can be sent. Then, during decoding, these points are used to reconstruct the point surface 202, thereby obtaining the original 3D points 204. Therefore, it is important to find the correct vertex points, as incorrect vertex points can result in an inaccurate reconstruction of the original 3D points 204.
[0015] One way to find vertex points 212, 214, 216, and / or 218 is to check if any of the 3D points 204 are close enough to an edge of the block (for example, the cube shown in Figures 2A and 2B). If any of the 3D points 204 are close enough to an edge, such a point can be set as a vertex point. A comparison value (e.g., a threshold) may be used to determine if any of the 3D points 204 are close enough to an edge that should be used as a vertex point. More specifically, the distance between each of the 3D points 204 and an edge of the block may be determined, and if that distance is less than the comparison value, the corresponding 3D point can be set as a vertex point. [Overview of the Initiative]
[0016] In current G-PCC, the comparison value is determined by the characteristics of the entire point cloud slice. Note that a slice is a division of the point cloud that can be encoded independently of other slices of the point cloud. More specifically, in current G-PCC, the comparison value is determined based on an estimate of the density of points contained in a slice of the point cloud, and the density of points in a slice is estimated based on the estimated average distance between points in the point cloud slice. Since the density of points is determined based on the distance between points, it is sometimes called a one-dimensional (1D) density.
[0017] However, if the comparison value is determined based on the characteristics of the entire slice of the point cloud, the comparison value for all nodes contained within the same slice will be the same, even though different nodes contained within the same slice may have entirely different point densities. In practice, this means that current techniques for determining vertex points may exclude some points that should be determined as vertex points and include some points that should not be determined as vertex points. Since vertex points are used to reconstruct the point cloud during decoding, inaccurate identification of vertex points can result in a reduction in the quality of the reconstructed point cloud. Therefore, in some embodiments of this disclosure, the comparison value is determined for each node based on the density of points contained within the node.
[0018] More specifically, one embodiment of the present disclosure provides a method for encoding point data representing a group of points in three-dimensional (3D) space. The method includes: acquiring point data; dividing a group of points into a plurality of blocks, wherein the plurality of blocks include a first block, and further, the first block includes a first point; calculating a comparison value based on the number of points contained in the first block and / or the distance between the points contained in the first block; determining whether the distance between the first point and the edge of the first block is less than the comparison value; and encoding the point data based on the determination.
[0019] In a different embodiment, a computer program is provided that, when executed by a processing circuit, includes instructions causing the processing circuit to perform a method according to at least one of the embodiments described above.
[0020] In a different embodiment, a carrier is provided which includes the computer program described in the above embodiment, wherein the carrier is one of an electronic signal, an optical signal, a radio signal, and a computer-readable storage medium.
[0021] In a different embodiment, a device is provided for encoding point data representing a group of points in three-dimensional (3D) space. The device is configured to acquire point data, divide a group of points into a plurality of blocks, wherein the plurality of blocks include a first block, and further divide the group of points into a plurality of blocks, wherein the first block includes a first point, calculate a comparison value based on the number of points included in the first block and / or the distance between the points included in the first block, determine whether the distance between the first point and the edge of the first block is less than the comparison value, and encode the point data based on the above determination.
[0022] In a different embodiment, a device is provided comprising a processing circuit and a memory, the memory containing instructions executable by the processing circuit, thereby enabling the device to operate to perform a method according to at least one of the embodiments described above.
[0023] As described above, existing solutions consider only global slice characteristics when estimating the 1D point density metric, which determines the comparison value used to find vertex points. In contrast, in some embodiments of the present disclosure, the 1D density metric is determined for each node by taking into account node-local characteristics. This means that a unique comparison value can be determined for each node. By taking into account node-local characteristics when determining the comparison value for each node, points that have been inaccurately identified as vertex points can be excluded from being vertex points, and / or points that have been inaccurately excluded from being vertex points can be determined as vertex points. This can result in a more accurate reconstruction of the original point cloud.
[0024] The accompanying drawings, which are incorporated herein and constitute a part of this specification, illustrate various embodiments.
Brief Description of the Drawings
[0025] [Figure 1] A and B are diagrams showing an octree coding method. [Figure 2] A and B are diagrams showing a method for decoding point data. [Figure 3] A diagram showing an exemplary scenario to which embodiments of the present disclosure can be applied. [Figure 4A] A diagram showing an apparatus according to some embodiments. [Figure 4B] A diagram showing an example of a virtual reality scene. [Figure 5] A diagram showing a process according to some embodiments. [Figure 6A] A diagram showing a bounding box surrounding a 3D point cloud. [Figure 6B] A diagram showing a bounding box surrounding a 3D point cloud. [Figure 7A] A diagram showing multiple slices of a bounding box. [Figure 7B] This diagram shows multiple nodes contained within each of multiple slices. [Figure 8] This diagram shows the distance between a point and the edge of a node. [Figure 9A] This figure shows the distribution of points within a node. [Figure 9B] This figure shows the distribution of points within a node. [Figure 10] This diagram shows the different densities of points contained within different nodes. [Figure 11] This figure shows the process according to several embodiments. [Figure 12] This figure shows an apparatus according to several embodiments. [Modes for carrying out the invention]
[0026] Figure 3 shows an exemplary scenario 300 to which several embodiments of the present disclosure may be applied. In scenario 300, a capture device 312 is configured to capture a view of a kitchen 350. An oven 352, a picture frame 354, and a refrigerator 356 are installed in the kitchen 350.
[0027] The capture device 312 may include a camera and a light detection and ranging (LiDAR) sensor. The camera is configured to capture a view of the kitchen 350. An example of a camera is a 360-degree camera, i.e., a camera capable of capturing a 360-degree view of the real-world environment.
[0028] The LiDAR sensor is configured to collect depth values for various real-world points in the kitchen 350 (for example, points 371-378). Here, the depth value for a particular real-world point indicates the distance between the viewpoint 358 of the capture device 312 and that particular real-world point. For example, the depth value for real-world point 373 indicates the distance 380 between point 373 and viewpoint 358. An example of viewpoint 358 is the center point of the camera.
[0029] When a view of kitchen 350 is captured by a camera and the depth values of real-world points included in the view of kitchen 350 are measured by a LiDAR sensor, the capture device 312 may transmit the captured and / or measured data to a computing device 390 connected to the capture device 312 (wirelessly or via a wired connection). After receiving the data, the computing device 390 may combine the data collected by the camera and the data collected by the LiDAR sensor to generate 3D point data representing multiple 3D points.
[0030] 3D point data representing 3D points can be used to reconstruct a real-world environment captured by the capture device 312. For example, 3D point data representing 3D points can be used to generate an XR scene (including virtual reality, mixed reality, or augmented reality) using the Extended Reality (XR) display 402 shown in Figure 4A. View 400 shown in Figure 4B is an example of what a viewing user 404 sees through the XR display 402. The 3D point data for each 3D point may include the 3D coordinates of the 3D point and / or attributes such as the color / luminance values of the 3D point.
[0031] 3D point data, which represents multiple 3D points generated by the computing device 390, can be stored in storage (for example, the memory contained within the computing device 390). However, the typical size of 3D point data ranges from 1 GB to several GB, and therefore, storing 3D point data would require a considerable amount of storage space. Furthermore, in some scenarios, it is necessary to transmit 3D point data from one entity to another. For example, suppose a homeowner wants to renovate kitchen 350, but the kitchen designer is located far from the home. In such a case, once a view of kitchen 350 is captured and point data identifying 3D points of kitchen 350 is generated by the computing device 390, the point data can be transmitted from computing device 390 to XR display device 402 so that the kitchen designer can view a reconstructed 3D view of kitchen 350 via XR display device 402. However, due to the large size of the point data, transmitting 3D point data would consume a considerable amount of data bandwidth. Therefore, the 3D point data needs to be compressed (i.e., encoded).
[0032] Figure 5 shows a process 500 for compressing (i.e., encoding) 3D point data representing a collection of 3D points (also known as a "3D point cloud" or "point cloud") under MPEG Geometry-Based Point Cloud Compression (G-PCC) Common Test Conditions (CTC). Process 500 may begin with step s502. Step s502 includes determining a bounding box surrounding the collection of 3D points. For example, in Figure 6A, the collection of 3D points forms the shape of a frog 602, and through step s502, a bounding box 604 surrounding the frog 602 is obtained. As shown in Figure 6A, the bounding box 604 has a first dimension value 612 (e.g., width in the X direction), a second dimension value 614 (e.g., depth in the Y direction), and a third dimension value 616 (e.g., height in the Z direction).
[0033] After determining the bounding box 604, process 500 may proceed to step s504. Step s504 involves identifying the smallest dimension value among the first dimension value 612, the second dimension value 614, and the third dimension value 616. In the example shown in Figure 6A, the second dimension value 614 is the smallest.
[0034] After identifying the smallest dimension value, process 500 may proceed to step s506. Step s506 involves determining the cube with the smallest dimension value. In Figure 6A, the second dimension value 614 is the smallest, so in step s506, the cube 620 with the second dimension value 614 (the bottom left box of the four boxes defined by the dotted line) is obtained, as shown in Figure 6B.
[0035] After determining the cube 620, process 500 may proceed to step s508. Step s508 involves dividing the cube 620 into multiple slices. For example, in Figure 7A, the cube 620 is divided into multiple slices 652, 654, and 656. As shown in Figure 7B, each of the multiple slices 652, 654, and 656 contains multiple nodes (also known as "trisoup nodes" or "blocks") 702. Each node 702 can be a cube or a cuboid.
[0036] After dividing the cube 620 into multiple slices 652, 654, and 656, process 500 may proceed to step s510. Step s510 includes encoding 3D point data representing multiple 3D points contained within each node 702 in each of the multiple slices 652, 654, and 656. The 3D point data may be encoded into a bitstream or coded representation of a point cloud.
[0037] As described above, the 3D point data representing the 3D points contained within each node 702 can be encoded using vertex points (e.g., 212, 214, 216, and 218 shown in Figure 2A). Vertex points are the points where the point surface (e.g., point surface 202) on which the 3D points are located intersects with the edges of the node.
[0038] As further explained above, one way to find vertex points is to find points contained within a point cloud (for example, 3D point 204 shown in Figure 2A) that are close enough to any edge of the node. If a point is close enough to an edge of the node, that point can be used as a vertex point. Here, a point being evaluated for whether it is close enough to an edge to be considered a vertex point is also called a "candidate vertex point". In some scenarios, there may be multiple points that are close enough to an edge of the node. In such scenarios, the vertex point may be determined based on the average of multiple points that are close enough to an edge of the node. The average can be calculated as an arithmetic mean, a geometric mean, an arbitrary weighted mean, or any other known similar calculation.
[0039] A comparison value may be used to determine whether a candidate vertex point is close enough to a node edge. For example, the distance between the candidate vertex point and the node edge (e.g., the Euclidean distance) may be compared to the comparison value, and if the distance is smaller than the comparison value, the point may be used as a vertex point.
[0040] One way to determine the distance between a candidate vertex point and a node edge is to use the coordinates of the candidate vertex point and the coordinates of the point on the edge (also known as the "edge point"). For example, as shown in Figure 8, if the coordinates of the candidate vertex point are (x1, y1, z1) and the coordinates of the edge point are (0, 0, z1), then the distance is: This can be calculated as TIFF2026520815000003.tif7170. Here, the edge point used to calculate the distance can be the point on the edge closest to the candidate vertex point. Note that if the coordinates of each point are quantized to (one or more) integers, the comparison value can also be an integer (meaning the comparison value does not have decimal values).
[0041] To ensure consistency with the current G-PCC codec description and reference software, the terminology used in Reference 2 may be used herein. Accordingly, in this disclosure, the comparison value may also be referred to as the distanceSearchEncoder value ("DSE value").
[0042] Determining a comparison value based on the density of points contained within a point cloud or within a slice of a point cloud.
[0043] One way to determine the DSE value is by estimating the 1D density of points contained in a point cloud or a slice of a point cloud. The DSE value can be a decimal or an integer; an integer DSE value is sometimes called the ES value.
[0044] As explained above, the comparison value (e.g., the ES value) may be determined based on the estimated 1D density of points contained in a point cloud or slice, and the 1D density may be estimated based on the average distance between points in the point cloud or slice. The average distance between points in a point cloud or slice indicates how far apart two points belonging to the same point cloud or the same slice are from each other.
[0045] If the points contained within a node are spread across at least two dimensions of the node (e.g., width, height, and / or depth) (see, for example, Figure 9A), the number of points per node can be approximately determined as follows: TIFF2026520815000004.tif8170 Here, pointsPerNode is the number of points per node, and nodeSize is the size of the node.
[0046] Equation (1) can be rewritten as follows: TIFF2026520815000005.tif10170
[0047] The number of points per node can also be approximately determined as follows: Using equation (3) in equation (2) results in the following equation (4). TIFF2026520815000007.tif10170 Here, numNodes is the number of nodes in the active slice or active point cloud, numPoints is the number of points included in the active slice or active point cloud, and nodeSize is the size of each node.
[0048] The ES value can be rounded to an integer, which is the DSE value. Rounding is performed by taking into account both nodeSize (nodeSizeLog2) and the user-set vertex position precision (vertexPrecisionLog2), as follows: DSE=2 max(0,nodeSizeLog2-vertexPrecisionLog2-2) -1 + round(ES + 0.1). (1) The DSE value is then truncated to a value between 1 and 8. Any point within the DSE value from an edge of the trisoup node contributes to the calculation of the position for that vertex along that edge.
[0049] Using the calculated ES values, the vertex points of each of multiple nodes contained within the same slice or within the same point cloud can be determined.
[0050] Determine the comparison value based on the density of points contained within the node.
[0051] As explained above, using the same comparison value to find vertex points in all nodes belonging to the same slice or the same point cloud can result in finding inaccurate vertex points. Figure 10 illustrates this problem.
[0052] Figure 10 shows the first node 1002 and the second node 1004 belonging to the same slice. Note that although Figure 10 shows only two nodes, three or more nodes may be included in the same slice.
[0053] As shown in Figure 10, the density of points contained in the first node 1002 is quite different from the density of points contained in the second node 1004. This large difference in density can result in the selection of inaccurate vertex points in the first node 1002 and / or the second node 1004.
[0054] For example, in the first node 1002, the distance between point 1012 contained within the first node 1002 and edge 1006 of the first node 1002 is less than the ES value 1020, so point 1012 is selected as a vertex point for the point cloud contained within the first node 1002. Conversely, in the second node 1004, the distance between any one of the multiple points 1014 and edge 1006 of the second node 1004 is less than the ES value 1020, so all of point 1014 are selected as vertex points, but not all of point 1014 should be selected as vertex points. This problem of inaccurately selecting some points as vertex points arises because the same comparison value is used to find vertex points in two different nodes with completely different point densities.
[0055] Accordingly, according to some embodiments, the comparison values for individual nodes are determined such that different comparison values are applied to different nodes having different point densities. More specifically, in some embodiments, the comparison values for individual nodes are derived based on the density of points contained within the node, without considering the density of points outside the node.
[0056] Determining a comparison value based on the density of points contained within a node, i.e., the ES1 value.
[0057] In some embodiments, the following ES1 values may be used as comparison values instead of the ES values. TIFF2026520815000008.tif10170 Here, nodeSize is the size of the node and numPointsNode is the number of points contained in the node. This formula can be derived from formula (4) as follows:
[0058] Equation (4) is used to determine the comparison value for all nodes belonging to the same slice. If we assume that the slice has a single node, then equation (4) becomes: TIFF2026520815000009.tif10170 The number of nodes in the slice is currently 1, so the number of points contained in the slice is equal to the number of points contained in the nodes.
[0059] The complexity of calculating the ES1 value can be expressed as O(1). O(1) may indicate that the operation of calculating the ES1 value does not require an additional loop to analyze the points.
[0060] Determining a comparison value, i.e., an ES2 value, based on the density of points contained within a node.
[0061] In some scenarios, the point cloud (i.e., 3D points) may not extend across the entire portion of the node. For example, in Figure 9A, point cloud 902 extends across the entire portion of the node. In point cloud 902, equation (7) may be used to determine the comparison value. Note that equation (7) can be rewritten as follows: TIFF2026520815000010.tif10170 Here, nodeSize × nodeSize represents the surface area of the node.
[0062] In contrast to Figure 9A, in Figure 9B, the point cloud 912 extends over only half the dimensions of the node. Therefore, in the point cloud 902, equation (7), which takes into account the total surface area of the node (e.g., nodeSize × nodeSize), may not be appropriate. Accordingly, according to some embodiments, in some embodiments, the size of the bounding box defining the point cloud 912 may be used to calculate the comparison value. More specifically, in some embodiments, the following ES2 value may be used as the comparison value instead of the ES1 value. TIFF2026520815000011.tif10170 Here, numPointsNode is the number of points in the current node, max is the largest dimension of the bounding box, and mid is the second largest dimension of the bounding box.
[0063] The complexity of calculating the ES2 value can be expressed as O(numPointsNode). O(numPointsNode) may indicate that the operation of calculating the ES2 value requires a full additional loop that analyzes the points over the set of points contained in the node.
[0064] Determining a comparison value, i.e., an ES3 value, based on the density of points contained within a node.
[0065] Instead of using the ES, ES1, and / or ES2 values as comparison values, in some embodiments, the ES3 value may be used as the comparison value. As described above, when determining the density of points in a node using the ES1 and ES2 values, it was assumed that the points contained in the node were uniformly distributed. However, there may be scenarios in which the points contained in a single node are not uniformly distributed.
[0066] Therefore, according to some embodiments, the density of points contained in a node can be calculated based on the average distance between points in the node. More specifically, for each point contained in a node, the X closest points can be identified, and the distance between that point and each of the X points can be determined. The average of these determined distances is then calculated. The average of the calculated averages of the determined distances is then calculated and used as the ES3 value, where the average can be calculated as an arithmetic mean, a geometric mean, an arbitrary weighted mean, or other known similar calculation techniques.
[0067] The complexity of calculating the ES3 value can be expressed as O(numPointsNode^2). O(numPointsNode^2) may indicate that the operation of calculating the ES3 value requires a nested for loop to analyze the points (e.g., find the nearest neighbor for each point).
[0068] The comparison value is determined based on the density of points contained within a node and the density of points contained within the slice that contains that node.
[0069] In the embodiments described above, one of the ES value, ES1 value, ES2 value, and ES3 value is selected and used as the comparison value, regardless of what the values of ES, ES1, ES2, and / or ES3 are. However, in some embodiments, one of the ES value, ES1 value, ES2 value, and ES3 value may be selected and used as the comparison value depending on the relationship between the values of ES, ES1, ES2, and / or ES3.
[0070] A logical sequence that selects one of the ES, ES1, ES2, and ES3 values as a comparison value, depending on the relationship between the values of ES, ES1, ES2, and / or ES3, is referred to in this disclosure as a “decision tree.” An example of a decision tree is shown in the table below. TIFF2026520815000012.tif107170
[0071] In the decision tree above, the first if statement checks whether the ES value is greater than 1. If the ES value is 1 or less, this may mean that the ES value is small enough to represent the density of points in the node, and therefore the ES value is selected and used as the comparison value.
[0072] On the other hand, if the ES value is greater than 1, this may mean that the ES value is too large and therefore cannot be used as a comparison value. Then the ES1 value is calculated.
[0073] After calculating the ES1 value, the second if statement checks if the difference between the ES value and the ES1 value is greater than m. If the difference is less than or equal to m, this could mean that it is not beneficial to use the ES1 value as the comparison value, and therefore the ES value can be chosen and used as the comparison value. Alternatively, if the difference is less than or equal to m, this could mean that it does not make much difference whether the ES value or the ES1 value is used as the comparison value, and therefore the ES1 value can be chosen and used as the comparison value.
[0074] On the other hand, if the difference between the ES value and the ES1 value is greater than m, the ES2 value may be calculated, and then the third if statement checks whether the difference between the ES value and the ES2 value is greater than n. If the difference is less than or equal to n, this may mean that it is not beneficial to use the ES2 value as the comparison value, and therefore the ES value may be selected and used as the comparison value. Alternatively, if the difference is less than or equal to m, this may mean that it does not make much difference whether the ES value or the ES2 value is used as the comparison value, and therefore the ES2 value may be selected and used as the comparison value.
[0075] If the difference between the ES value and the ES2 value is greater than n, the fourth if statement checks whether the number of points contained in the node is greater than 1. If the number of points contained in the node is 1 or less, this may mean that the ES3 value cannot be calculated, and therefore the ES value can be selected and used as the comparison value.
[0076] On the other hand, if the number of points contained in a node exceeds one, the smaller of (1) ES value + 1 and (2) ES3 value may be selected and used as the comparison value. The rationale for selecting the smaller of (1) and (2) is as follows: If a node contains a small number of points scattered within the node (e.g., two points), the ES3 value can become extremely large due to the large distance between those points. If the ES3 value is set to be extremely high, the points may be selected as vertex points for various edges, which is undesirable. Therefore, in some embodiments, the ES3 value is limited to ES value + 1.
[0077] Finally, in a decision tree, the estimatedSampling value can be set so that it is less than or equal to nodeSize / 4.
[0078] In the decision tree shown in the table provided above, each of the ES1, ES2, and ES3 values is calculated after each of the if statements. However, in other embodiments, the ES1, ES2, and ES3 values may be calculated at any time before they are used.
[0079] Figure 11 shows a process 1100 for encoding point data representing a group of points in three-dimensional (3D) space. Process 1100 may begin with step s1102. Step s1102 includes obtaining point data. Step s1104 includes dividing the group of points into multiple blocks, each of which includes a first block, and each first block includes a first point. Step s1106 includes calculating a comparison value based on the number of points contained in the first block and / or the distances between the points contained in the first block. Step s1108 includes determining whether the distance between the first point and the edge of the first block is less than the comparison value. Step s1110 includes encoding the point data based on the above determination.
[0080] In some embodiments, the distance between a first point and the edge of a first block is determined to be less than a comparison value, and the point data comprises a first portion indicating a plurality of points contained within the first block, and the first portion of the point data is encoded using the first point.
[0081] In some embodiments, a first portion of point data is encoded using two or more vertices contained in a first block, the two or more vertices approximately define the surface on which the multiple points of the first block are located, and the first point is one of the two or more vertices.
[0082] In some embodiments, the comparison value is calculated based on a candidate comparison value ES1, which is calculated based on the length of the first block and the number of points contained within the first block.
[0083] In some embodiments, The filename is TIFF2026520815000013.tif10170, where nodeSize is the length of the first block and numPointsNode is the number of points contained in the first block.
[0084] In some embodiments, the comparison value is calculated based on a candidate comparison value ES2, which is calculated based on the length of the first side of the boundary surrounding the points contained in the first block and the number of points contained in the first block.
[0085] In some embodiments, ES2 is calculated based on the length of the second side of the boundary surrounding the point contained within the first block.
[0086] In some embodiments, The filename is TIFF2026520815000014.tif10170, where nodeSize is the length of the first block, max is the length of the first side of the boundary, mid is the length of the second side of the boundary, numPointsNode is the number of points contained in the first block, and the length of the first side of the boundary is greater than the length of the second side of the boundary.
[0087] In some embodiments, the comparison value is calculated based on a candidate comparison value ES3, which is calculated by (i) selecting a point to be included in a first block, (ii) determining the distance between the selected point and other points to be included in the first block, and (iii) calculating the average of the determined distances between the selected point and the other points to be included in the first block, and ES3 is determined based on the above average.
[0088] In some embodiments, ES3 is calculated by repeating steps (i) to (iii) of Embodiment A9 for each point included in the first block, and ES3 is calculated based on the average of the averages calculated from performing steps (i) to (iii) for each point included in the first block.
[0089] In some embodiments, the process 1100 includes calculating a candidate comparison value ES based on the number of blocks and the number of points contained in the blocks, and determining that ES is greater than a first predetermined value, the comparison value being calculated based on the number of points contained in the first block and / or the distance between the points contained in the first block as a result of determining that ES is greater than a first predetermined value.
[0090] In some embodiments, The filename is TIFF2026520815000015.tif10170, where nodeSize is the length of the first block, numPoints is the number of points contained in the slice containing the first block, and numNodes is the number of nodes contained in the slice.
[0091] In some embodiments, the process 1100 includes calculating the difference between ES and ES1 and determining whether the difference between ES and ES1 is greater than a second predetermined value, the comparison value being calculated based on the determination of whether the difference between ES and ES1 is greater than a second predetermined value.
[0092] In some embodiments, the process 1100 includes determining that the difference between ES and ES1 is less than or equal to a second predetermined value, and calculating a comparison value based on ES as a result of determining that the difference between ES and ES1 is less than or equal to a second predetermined value.
[0093] In some embodiments, the process 1100 includes determining whether the difference between ES and ES1 is greater than a second predetermined value, and determining whether, as a result of determining whether the difference between ES and ES1 is greater than a second predetermined value, the difference between ES and ES2 is greater than a third predetermined value, and the comparison value is calculated based on determining whether the difference between ES and ES2 is greater than a third predetermined value.
[0094] In some embodiments, the process 1100 includes determining that the difference between ES and ES2 is less than or equal to a third predetermined value, and calculating a comparison value based on ES as a result of determining that the difference between ES and ES2 is less than or equal to a third predetermined value.
[0095] In some embodiments, the process 1100 includes determining whether the difference between ES and ES2 is greater than a third predetermined value, and determining whether, as a result of determining whether the difference between ES and ES2 is greater than a third predetermined value, the number of points contained in the first block is greater than 1, and the comparison value is calculated based on determining whether the number of points contained in the first block is greater than 1.
[0096] In some embodiments, the process 1100 includes determining that the number of points in the first block is 1 or less, and calculating a comparison value based on ES as a result of determining that the number of points in the first block is 1 or less.
[0097] In some embodiments, it is determined that the number of points contained in the first block is greater than 1, and as a result of determining that the number of points contained in the first block is greater than 1, a comparison value is calculated based on ES and ES3.
[0098] In some embodiments, the comparison value is calculated based on min(ES+1,ES3).
[0099] The method described in the following table is one detailed embodiment of the present disclosure. TIFF2026520815000016.tif202170
[0100] Figure 12 is a block diagram of a device 1200 for implementing an encoder, decoder, or components contained within an encoder or decoder, according to several embodiments. When the device 1200 implements a decoder, the device 1200 may be called a “decoder 1200”, and when the device 1200 implements an encoder, the device 1200 may be called an “encoder 1200”. As shown in Figure 12, the device 1200 is a processing circuit (PC) 1202 which may include one or more processors (P) 1255 (e.g., one or more other processors such as application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), etc.), wherein the processors may be co-located in a single housing or in a single data center or geographically distributed (i.e., the device 1200 may be a distributed computing device), and at least one network interface 1248, wherein the device 1200 is connected to the network interface 1248 The PC may include at least one network interface 1248 and a storage unit (also known as a “data storage system”) 1208 which may include one or more non-volatile storage devices and / or one or more volatile storage devices. In embodiments in which the PC 1202 includes a programmable processor, a computer program product (CPP) 1241 may be provided. The CPP 1241 includes a computer-readable medium (CRM) 1242 which stores a computer program (CP) 1243 comprising computer-readable instructions (CRI) 1244.CRM1242 can be a non-temporary computer-readable medium, such as a magnetic medium (e.g., a hard disk), an optical medium, or a memory device (e.g., random access memory, flash memory). In some embodiments, the CRI1244 of the computer program 1243, when executed by PC1202, is configured to cause the device 1200 to perform the steps described herein (e.g., the steps described herein with reference to a flowchart). In other embodiments, the device 1200 may be configured to perform the steps described herein without the need for code. That is, for example, PC1202 may consist of simply one or more ASICs. Thus, features of the embodiments described herein can be implemented in hardware and / or software.
[0101] Overview of the Embodiment A1. A method (1100) for encoding point data representing a group of points in a three-dimensional (3D) space, wherein the method is: To obtain point data (s1102), Dividing a group of points into multiple blocks, wherein the multiple blocks include a first block, and further, the first block includes a first point (s1104), Calculating a comparison value based on the number of points contained in the first block and / or the distance between points contained in the first block (s1106), Determine whether the distance between the first point and the edge of the first block is smaller than the comparison value (s1108), Based on the above decision, the point data is encoded (s1110) and Method (1100), including the following. A2. It is determined that the distance between the first point and the edge of the first block is smaller than the comparison value. The point data comprises a first portion that indicates multiple points included in a first block, The first part of the point data is encoded using the first point. The method according to Embodiment A1. A3. The first part of the point data is encoded using at least three points contained in the first block, The aforementioned three points approximately define the surface on which the multiple points of the first block are located. The first point is one of the three points mentioned above. The method according to Embodiment A2. A4. The comparison value is calculated based on the candidate comparison value ES1. ES1 is calculated based on the length of the first block and the number of points contained within the first block. The method according to at least one of embodiments A1 to A3. A5. The method according to Embodiment A4, wherein the filename is TIFF2026520815000017.tif10170, where nodeSize is the length of the first block and numPointsNode is the number of points contained in the first block. A6. The comparison value is calculated based on the candidate comparison value ES2. ES2 is calculated based on the length of the first side of the boundary surrounding the points contained in the first block and the number of points contained in the first block. The method according to at least one of embodiments A1 to A5. A7. The method according to Embodiment A6, wherein ES2 is calculated based on the length of the second side of the boundary surrounding the point contained in the first block. A8. The filename is TIFF2026520815000018.tif10170, where nodeSize is the length of the first block, max is the length of the first side of the boundary, mid is the length of the second side of the boundary, and numPointsNode is the number of points contained in the first block. The method according to Embodiment A7, wherein the length of the first side of the boundary is greater than the length of the second side of the boundary. A9. The comparison value is calculated based on the candidate comparison value ES3. ES3 is (i) Select the points to be included in the first block, (ii) Determining the distance between the selected point and other points included in the first block, (iii) Calculate the average of the determined distances between the selected point and the other points included in the first block. Calculated by, ES3 is determined based on the above average. The method according to at least one of embodiments A1 to A8. A10. ES3 is calculated by repeating steps (i) to (iii) of Embodiment A9 for each point included in the first block, ES3 is calculated based on the average of the averages obtained by performing steps (i) to (iii) for each point included in the first block. The method according to Embodiment A9. A11. Calculating a candidate comparison value ES based on the number of blocks and the number of points contained within those blocks, Determining that ES is greater than the first predetermined value and Includes, The comparison value is calculated based on the number of points contained in the first block and / or the distances between points contained in the first block, as a result of determining that ES is greater than a first predetermined value. The method according to at least one of embodiments A1 to A10. A11a. The method according to Embodiment A11, wherein the filename is TIFF2026520815000019.tif10170, where nodeSize is the length of the first block, numPoints is the number of points contained in the slice containing the first block, and numNodes is the number of nodes contained in the slice. A12. (When Embodiment A11 or A11a is dependent on Embodiment A4 and / or A5,) Calculate the difference between ES and ES1, To determine whether the difference between ES and ES1 is greater than a second predetermined value. Includes, The comparison value is calculated based on determining whether the difference between ES and ES1 is greater than a second predetermined value. The method according to embodiment A11 or A11a. A13. The determination that the difference between ES and ES1 is less than or equal to a second predetermined value, As a result of determining that the difference between ES and ES1 is less than or equal to a second predetermined value, the comparison value is calculated based on ES. The method according to Embodiment A12, including the method described in Embodiment A12. A14. (When Embodiment A11 is dependent on any one of Embodiments A6, A7, and A8,) The determination that the difference between ES and ES1 is greater than a second predetermined value, As a result of determining that the difference between ES and ES1 is greater than a second predetermined value, we determine whether the difference between ES and ES2 is greater than a third predetermined value. Includes, The comparison value is calculated based on determining whether the difference between ES and ES2 is greater than a third predetermined value. The method described in Embodiment A12. A15. The determination that the difference between ES and ES2 is less than or equal to a third predetermined value, As a result of determining that the difference between ES and ES2 is less than or equal to a third predetermined value, the comparison value is calculated based on ES. The method according to Embodiment A14, including the method described above. A16. The determination that the difference between ES and ES2 is greater than a third predetermined value, As a result of determining that the difference between ES and ES2 is greater than a third predetermined value, it is determined whether the number of points included in the first block is greater than 1. Includes, The comparison value is calculated based on determining whether the number of points contained in the first block is greater than 1. The method described in Embodiment A14. A17. Determine that the number of points contained in the first block is 1 or less, As a result of determining that the number of points contained in the first block is 1 or less, the comparison value is calculated based on ES. The method according to Embodiment A16, including the method described above. A18. The first block is determined to contain more than 1 points, As a result of determining that the number of points contained in the first block is greater than 1, the comparison value is calculated based on ES and ES3. The method according to Embodiment A16. A19. The method according to embodiment A18, wherein the comparison value is calculated based on min(ES+1,ES3). B1. A computer program (1200) that, when executed by a processing circuit (1202), includes an instruction (1244) that causes the processing circuit to carry out the method described in at least one of embodiments A1 to A19. B2. A carrier comprising the computer program described in Embodiment B2, wherein the carrier is one of an electronic signal, an optical signal, a radio signal, and a computer-readable storage medium. C1. An apparatus (1200) for encoding point data representing a group of points in a three-dimensional (3D) space, wherein the apparatus is To obtain point data (s1102), Dividing a group of points into multiple blocks, wherein the multiple blocks include a first block, and further, the first block includes a first point (s1104), Calculating a comparison value based on the number of points contained in the first block and / or the distance between points contained in the first block (s1106), Determine whether the distance between the first point and the edge of the first block is smaller than the comparison value (s1108), Based on the above decision, the point data is encoded (s1110) and A device (1200) configured to perform the following action. C2. The apparatus according to Embodiment C1, wherein the apparatus is further configured to carry out the method described in at least one of Embodiments A2 to A19. D1. Apparatus (1200), Processing circuit (1202), Memory (1241) and A device (1200) comprising, wherein the memory contains instructions that can be executed by the processing circuit, thereby enabling the device to operate to carry out the method according to at least one of embodiments A1 to A19.
[0102] While various embodiments have been described herein, it should be understood that these embodiments are presented only as examples and not as limitations. Therefore, the breadth and scope of this disclosure should not be limited by any of the exemplary embodiments described above. Furthermore, unless otherwise indicated herein or explicitly rejected by the context, any combination of all possible variations of the elements described above is encompassed by this disclosure.
[0103] As used herein, sending a message "to" or "towards" an intended recipient includes sending a message directly to the intended recipient or sending a message indirectly to the intended recipient (i.e., one or more other nodes are used to relay the message from the source node to the intended recipient). Similarly, as used herein, receiving a message "from" a sender includes receiving a message directly from the sender or receiving a message indirectly from the sender (i.e., one or more nodes are used to relay the message from the sender to the receiving node). Furthermore, as used herein, "a" means "at least one" or "one or more".
[0104] Furthermore, the process described above and shown in the diagrams is presented as a sequence of steps, but this is done for illustrative purposes only. Therefore, it is intended that some steps may be added, some steps may be omitted, the order of the steps may be rearranged, and some steps may be performed in parallel.
[0105] List of References TIFF2026520815000020.tif47170
Claims
1. A method (1100) for encoding point data representing a group of points in a three-dimensional (3D) space, wherein the method is The acquisition of the aforementioned point data (s1102), The method of dividing the group of points into a plurality of blocks, wherein the plurality of blocks include a first block, and further, the first block includes a first point (s1104), Calculating a comparison value based on the number of points included in the first block and / or the distance between points included in the first block (s1106), Determining whether the distance between the first point and the edge of the first block is smaller than the comparison value (s1108), Based on the above decision, the point data is encoded (s1110) Method (1100), including the above.
2. The distance between the first point and the edge of the first block is determined to be smaller than the comparison value. The point data comprises a first portion indicating a plurality of points included in the first block, The first portion of the point data is encoded using the first point. The method according to claim 1.
3. The first portion of the point data is encoded using two or more vertices included in the first block. The two or more vertices approximately define the surface of the first block on which the plurality of points are located. The first point is one of the two or more vertices. The method according to claim 2.
4. The aforementioned comparison value is calculated based on the candidate comparison value ES1. The ES1 is calculated based on the length of the first block and the number of points contained within the first block. The method according to at least one of claims 1 to 3.
5. The aforementioned The method according to claim 4, wherein nodeSize is the length of the first block and numPointsNode is the number of points contained in the first block.
6. The aforementioned comparison value is calculated based on the candidate comparison value ES2. The ES2 is calculated based on the length of the first side of the boundary surrounding the points included in the first block and the number of points included in the first block. The method according to at least one of claims 1 to 5.
7. The method according to claim 6, wherein the ES2 is calculated based on the length of the second side of the boundary surrounding the point included in the first block.
8. The aforementioned Here, nodeSize is the length of the first block, max is the length of the first side of the boundary, mid is the length of the second side of the boundary, and numPointsNode is the number of points included in the first block. The method according to claim 7, wherein the length of the first side of the boundary is greater than the length of the second side of the boundary.
9. The aforementioned comparison value is calculated based on the candidate comparison value ES3. The aforementioned ES3 is (i) Selecting points to be included in the first block, (ii) Determining the distance between the selected point and other points included in the first block, (iii) Calculating the average of the determined distances between the selected point and the other points included in the first block. Calculated by, The aforementioned ES3 is determined based on the average. The method according to at least one of claims 1 to 8.
10. The ES3 is calculated by repeating steps (i) to (iii) of Embodiment A9 for each point included in the first block. The ES3 is calculated based on the average of the averages obtained by performing steps (i) to (iii) for each point included in the first block. The method according to claim 9.
11. The candidate comparison value ES is calculated based on the number of the plurality of blocks and the number of points contained in the plurality of blocks, The determination that the aforementioned ES is greater than a first predetermined value Includes, The comparison value is calculated based on the number of points included in the first block and / or the distance between points included in the first block, as a result of determining that the ES is greater than a first predetermined value. The method according to at least one of claims 1 to 10.
12. The aforementioned The method according to claim 11, wherein nodeSize is the length of the first block, numPoints is the number of points included in the slice containing the first block, and numNodes is the number of nodes included in the slice.
13. When claim 11 is dependent on claim 4 and / or 5, Calculating the difference between the aforementioned ES and the aforementioned ES1, To determine whether the difference between ES and ES1 is greater than a second predetermined value. Includes, The comparison value is calculated based on determining whether the difference between ES and ES1 is greater than the second predetermined value. The method according to claim 11 or 12.
14. The determination that the difference between ES and ES1 is less than or equal to the second predetermined value, As a result of determining that the difference between the ES and the ES1 is less than or equal to the second predetermined value, the comparison value is calculated based on the ES. The method according to claim 13, including the method described in claim 13.
15. When claim 11 is dependent on any one of claims 6 to 8, It is determined that the difference between ES and ES1 is greater than the second predetermined value, As a result of determining that the difference between ES and ES1 is greater than the second predetermined value, it is determined whether the difference between ES and ES2 is greater than the third predetermined value. Includes, The comparison value is calculated based on determining whether the difference between ES and ES2 is greater than the third predetermined value. The method according to claim 13.
16. The determination that the difference between ES and ES2 is less than or equal to the third predetermined value, As a result of determining that the difference between ES and ES2 is less than or equal to the third predetermined value, the comparison value is calculated based on ES. The method according to claim 15, including the method described in claim 15.
17. The determination that the difference between ES and ES2 is greater than the third predetermined value, As a result of determining that the difference between ES and ES2 is greater than the third predetermined value, it is determined whether the number of points included in the first block exceeds 1. Includes, The comparison value is calculated based on determining whether the number of points included in the first block exceeds 1. The method according to claim 15.
18. It is determined that the number of points included in the first block is 1 or less, As a result of determining that the number of points included in the first block is 1 or less, the comparison value is calculated based on the ES. The method according to claim 17, including the method described in claim 17.
19. It is determined that the number of points included in the first block exceeds 1, As a result of determining that the number of points included in the first block exceeds 1, the comparison value is calculated based on the ES and the ES3. The method according to claim 17.
20. The method according to claim 19, wherein the comparison value is calculated based on min(ES+1, ES3).
21. A computer program (1200) that, when executed by a processing circuit (1202), includes an instruction (1244) that causes the processing circuit to carry out the method according to at least one of claims 1 to 20.
22. A carrier comprising the computer program described in claim 21, wherein the carrier is one of an electronic signal, an optical signal, a wireless signal, and a computer-readable storage medium.
23. A device (1200) for encoding point data representing a group of points in a three-dimensional (3D) space, wherein the device is The acquisition of the aforementioned point data (s1102), The method of dividing the group of points into a plurality of blocks, wherein the plurality of blocks include a first block, and further, the first block includes a first point (s1104), Calculating a comparison value based on the number of points included in the first block and / or the distance between points included in the first block (s1106), Determining whether the distance between the first point and the edge of the first block is smaller than the comparison value (s1108), Based on the above decision, the point data is encoded (s1110) A device (1200) configured to perform the following action.
24. The apparatus according to claim 23, wherein the apparatus is further configured to carry out the method described in at least one of claims 2 to 20.
25. Apparatus (1200), Processing circuit (1202), Memory (1241) and Apparatus (1200) comprising, wherein the memory includes instructions that can be executed by the processing circuit, thereby enabling the apparatus to operate to carry out the method according to at least one of claims 1 to 20.