Method and computer system for point cloud coding and decoding
By using known geometric position information after point cloud geometric encoding, combined with inter-component correlation and adaptive hierarchical transformation technology, the problem of low encoding and decoding efficiency of repeated point attribute values in point clouds is solved, and more efficient data compression and transmission is achieved.
Patent Information
- Application Number
- CN202510746530.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2021-07-06
- Filing Date
- 2021-07-12
- Publication Date
- 2025-07-25
AI Technical Summary
The prior art is difficult to efficiently code the attribute values of duplicate points in a point cloud, especially in 3D space, finding the nearest point for each point may be expensive and failing to take advantage of the strong correlation between different color channels, resulting in a loss of encoding efficiency.
By performing attribute coding after geometric encoding, using known geometric position information to improve coding efficiency, using inter-component correlation and region adaptive hierarchical transformation technology, combined with the entropy coding of the predicted residual and the processing of the symbol bits, ensuring that the predicted residual is positive or the encoding is zero, solving the attribute value coding problem of repeated points.
It improves the encoding efficiency of point cloud attribute values, reduces the amount of data, realizes faster transmission and storage, and avoids the loss of encoding efficiency.
Smart Images

Figure CN120378634A_ABST
Abstract
Description
[0001] This application is a divisional application, and the application number of the original application is 2021800062063, and the filing date of the original application is July 12, 2021. Cross-reference to related applications
[0002] This application claims priority based on U.S. Provisional Application No. 63 / 070,471 filed on August 26, 2020, U.S. Provisional Application No. 63 / 120,557 filed on December 2, 2020, and U.S. Application No. 17 / 368,133 filed on July 6, 2021, the entire contents of which are incorporated herein by reference. Technical field
[0003] The present disclosure generally relates to the technology of data processing, and more particularly to a method and a computer system for point cloud encoding and decoding. Background art
[0004] In recent years, point clouds have been widely used. For example, point clouds are used for object detection and positioning in autonomous driving vehicles; point clouds are also used for mapping in Geographic Information System (GIS), and for visualizing and archiving cultural heritage objects and collections, etc. in cultural heritage. A point cloud contains a set of high-dimensional points, usually three-dimensional (3D), and each high-dimensional point includes 3D position information and additional attributes such as color, reflectivity, etc. They can be captured using multiple camera devices and depth sensors or lidar in various settings, and may consist of thousands to billions of points to realistically represent the original scene. Compression techniques are needed to reduce the amount of data required to represent the point cloud for faster transmission or reduced storage. For many different reasons, a point cloud may contain duplicate points with the same geometric position, while their attribute values may be the same or may be different. Therefore, the technical problem to be solved by the present invention is how to more effectively encode and decode these attribute values of duplicate points. Summary of the invention
[0005] Embodiments relate to a method, a system, and a computer-readable medium for point cloud decoding. According to one aspect, a method for point cloud encoding is provided. The method may include: receiving data corresponding to a point cloud from a bitstream; reconstructing a first attribute value of a first repeated point among a plurality of repeated points corresponding to a single geometric location based on the data; obtaining at least one prediction residual corresponding to at least one remaining attribute value of at least one remaining repeated point among the plurality of repeated points; reconstructing at least one remaining attribute value based on the reconstructed first attribute value and the at least one prediction residual; and decoding the data corresponding to the point cloud based on the reconstructed first attribute value and the reconstructed at least one remaining attribute value.
[0006] According to another aspect, a computer system for point cloud decoding is provided. The computer system may include: one or more computer-readable non-transitory storage media configured to store computer program code; and one or more processors configured to access the computer program code and operate as indicated by the computer program code, the computer program code including: receiving code configured to cause the one or more processors to receive data corresponding to a point cloud from a bitstream; first reconstruction code configured to cause the one or more processors to reconstruct a first attribute value of a first repeated point among a plurality of repeated points corresponding to a single geometric location based on the data; obtaining code configured to cause the one or more processors to obtain at least one prediction residual corresponding to at least one remaining attribute value of at least one remaining repeated point among the plurality of repeated points; second reconstruction code configured to cause the one or more processors to reconstruct at least one remaining attribute value based on the reconstructed first attribute value and the at least one prediction residual; and decoding code configured to cause the one or more processors to decode the data corresponding to the point cloud based on the reconstructed first attribute value and the reconstructed at least one remaining attribute value.
[0007] According to another aspect, a computer system for point cloud decoding is provided. The computer system includes: a receiving unit configured to cause the one or more processors to receive data corresponding to a point cloud from a bitstream; a first reconstruction unit configured to cause the one or more processors to reconstruct a first attribute value of a first repeated point among multiple repeated points corresponding to a single geometric position based on the data; an obtaining unit configured to cause the one or more processors to obtain at least one prediction residual corresponding to at least one remaining attribute value of at least one remaining repeated point among the multiple repeated points; a second reconstruction unit configured to cause the one or more processors to reconstruct the at least one remaining attribute value based on the reconstructed first attribute value and the at least one prediction residual; and a decoding unit configured to cause the one or more processors to decode the data corresponding to the point cloud based on the reconstructed first attribute value and the reconstructed at least one remaining attribute value.
[0008] According to another aspect, a computer-readable medium for point cloud decoding is provided. The computer-readable medium may include one or more computer-readable storage devices and a computer program stored on at least one of the one or more tangible storage devices. The computer program may be configured to cause one or more computer processors to: receive data corresponding to a point cloud from a bitstream; reconstruct a first attribute value of a first repeated point among multiple repeated points corresponding to a single geometric position based on the data; obtain at least one prediction residual corresponding to at least one remaining attribute value of at least one remaining repeated point among the multiple repeated points; reconstruct the at least one remaining attribute value based on the reconstructed first attribute value and the at least one prediction residual; and decode the data corresponding to the point cloud based on the reconstructed first attribute value and the reconstructed at least one remaining attribute value.
[0009] According to another aspect, a computer device is provided. The device includes a processor and a memory. The memory is used to store program code and transmit the program code to the processor; the processor is configured to execute according to the instructions in the program code: receive data corresponding to a point cloud from a bitstream; reconstruct a first attribute value of a first repeated point among multiple repeated points corresponding to a single geometric position based on the data; obtain at least one prediction residual corresponding to at least one remaining attribute value of at least one remaining repeated point among the multiple repeated points; reconstruct the at least one remaining attribute value based on the reconstructed first attribute value and the at least one prediction residual; and decode the data corresponding to the point cloud based on the reconstructed first attribute value and the reconstructed at least one remaining attribute value.
[0010] A method and computer system for point cloud decoding according to the present disclosure receive data corresponding to a point cloud from a bitstream; reconstruct a first attribute value of a first repeated point among multiple repeated points corresponding to a single geometric position based on the data; obtain at least one prediction residual corresponding to at least one remaining attribute value of at least one of the multiple repeated points; reconstruct at least one remaining attribute value based on the reconstructed first attribute value and the at least one prediction residual; and decode the data corresponding to the point cloud based on the reconstructed first attribute value and the reconstructed at least one remaining attribute value. In this way, since attribute encoding is performed after geometric encoding, when encoding the attribute value of a given point, its reconstructed geometric position is known, and such geometric information can be used to improve the encoding efficiency of attributes, thereby enabling more efficient encoding of these attribute values of repeated points. BRIEF DESCRIPTION OF THE DRAWINGS
[0011] These and other objects, features, and advantages will become apparent from the following detailed description of illustrative embodiments to be read in conjunction with the accompanying drawings. The various features of the drawings are not to scale as the illustrations are for clarity and ease of understanding by those skilled in the art in conjunction with the detailed description. In the drawings: Figure 1 shows a networked computer environment according to at least one embodiment; Figures 2A to 2B is a block diagram of a point cloud update system according to at least one embodiment; Figure 2C is a diagram of a Region Adaptive Hierarchical Transform (RAHT) according to at least one embodiment; Figures 2D to 2G is a table of syntax elements of a prediction residual according to at least one embodiment; Figure 3 is a flowchart of operations showing steps performed by a program for point cloud encoding according to at least one embodiment; Figure 4 is according to at least one embodiment Figure 1 block diagram of the internal and external components of the computer and server depicted in Figure 5 is according to at least one embodiment including Figure 1 block diagram of an illustrative cloud computing environment including the computer system depicted in Figure 6 is according to at least one embodiment Figure 5 block diagram of the functional layers of an illustrative cloud computing environment of DETAILED DESCRIPTION
[0012] This document discloses detailed embodiments of the claimed structures and methods; however, it is understood that the disclosed embodiments are merely illustrative of the claimed structures and methods that can be implemented in various forms. However, those structures and methods can be implemented in many different forms and should not be construed as limited to the exemplary embodiments set forth herein. Instead, these exemplary embodiments are provided so that this disclosure will be thorough and complete and will fully convey the scope to those skilled in the art. In the description, details of well-known features and techniques may be omitted to avoid unnecessarily obscuring the presented embodiments.
[0013] Embodiments generally relate to the field of data processing, and more particularly to point cloud coding. The exemplary embodiments described below provide systems, methods, and computer programs using inter-component correlation methods and the like for encoding point cloud attribute data. Thus, some embodiments have the ability to improve the computing field by allowing for increased efficiency of point cloud coding by means of point cloud data that does not require finding the nearest neighbors of the point cloud data.
[0014] As mentioned above, in recent years, point clouds have been widely used. For example, point clouds are used for object detection and localization in autonomous driving vehicles; point clouds are also used for mapping in geographic information systems (GIS), and for visualizing and archiving cultural heritage objects and collections, etc. in cultural heritage. A point cloud contains a set of high-dimensional points, typically three-dimensional (3D), each high-dimensional point including 3D position information and additional attributes such as color, reflectance, etc. They can be captured using multiple camera devices and depth sensors or lidar in various settings, and may consist of thousands to billions of points to realistically represent the original scene. Compression techniques are needed to reduce the amount of data required to represent the point cloud for faster transmission or reduced storage. In prediction-based attribute coding, the attributes of the current point are predicted based on the encoded points close to the current point.
[0015] In the TMC13 model, geometric information and associated attributes such as color or reflectance are compressed separately. The geometric information, which is the 3D coordinates of the point cloud, is encoded by octree partitioning and its occupancy information. Then, prediction, lifting, and region-adaptive hierarchical transform techniques are used to compress the attributes based on the reconstructed geometric structure. However, finding the nearest point for each point in 3D space can be expensive. Additionally, for lossless and near-lossless coding of multi-channel attributes such as RGB color, multiple channels are processed directly without color space conversion and are encoded independently. However, there is usually strong correlation between different color channels, especially in the RGB domain. Not exploiting such correlation may result in a performance loss in terms of coding efficiency. Therefore, using inter-component correlation may be advantageous.
[0016] Aspects are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer-readable media according to various embodiments. It should be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0017] Now referring to Figure 1 , a functional block diagram of a networked computer environment illustrates a point cloud encoding system 100 (hereinafter referred to as "the system") for encoding point cloud data. It should be understood that Figure 1 only an illustration of one implementation is provided, and no limitation on the environment in which different embodiments can be implemented is implied. Many modifications can be made to the depicted environment based on design and implementation requirements.
[0018] System 100 may include a computer 102 and a server computer 114. The computer 102 may communicate with the server computer 114 via a communication network 110 (hereinafter referred to as "the network"). The computer 102 may include a processor 104 and a software program 108 that is stored on a data storage device 106 and is capable of interfacing with a user and communicating with the server computer 114. As will be discussed below with reference to Figure 4 , the computer 102 may include internal components 800A and external components 900A respectively, and the server computer 114 may include internal components 800B and external components 900B respectively. The computer 102 may be, for example, a mobile device, a phone, a personal digital assistant, a netbook, a laptop computer, a tablet computer, a desktop computer, or any type of computing device capable of running programs, accessing the network, and accessing a database.
[0019] As discussed below with respect to Figure 5 and 6 , the server computer 114 may also operate in a cloud computing service model such as Software as a Service (SaaS), Platform as a Service (PaaS), or Infrastructure as a Service (IaaS). The server computer 114 may also be located in a cloud computing deployment model such as a private cloud, a community cloud, a public cloud, or a hybrid cloud.
[0020] The server computer 114, which can be used for point cloud encoding, is capable of running a point cloud encoding program 116 (hereinafter referred to as "the program") that can interact with a database 112. As discussed below with respect to Figure 3Describe the point cloud encoding program method in more detail. In one embodiment, the computer 102 can operate as an input device including a user interface, while the program 116 can mainly run on the server computer 114. In an alternative embodiment, the program 116 can mainly run on one or more computers 102, and the server computer 114 can be used to process and store the data used by the program 116. It should be noted that the program 116 can be an independent program or can be integrated into a larger point cloud encoding program.
[0021] However, it should be noted that in some cases, the processing of the program 116 can be shared between the computer 102 and the server computer 114 at any ratio. In another embodiment, the program 116 can operate on more than one computer, server computer, or some combination of computers and server computers, such as multiple computers 102 communicating with a single server computer 114 across the network 110. In another embodiment, for example, the program 116 can operate on multiple server computers 114 communicating with multiple client computers across the network 110. Alternatively, the program can operate on a network server communicating with a server computer and multiple client computers across the network.
[0022] The network 110 can include a wired connection, a wireless connection, a fiber optic connection, or some combination thereof. Generally, the network 110 can be any combination of connections and protocols that support communication between the computer 102 and the server computer 114. The network 110 can include various types of networks, such as a Local Area Network (LAN), a Wide Area Network (WAN) such as the Internet, a telecommunications network such as a Public Switched Telephone Network (PSTN), a wireless network, a public switched network, a satellite network, a cellular network (e.g., a Fifth Generation (5G) network, a Long-Term Evolution (LTE) network, a Third Generation (3G) network, a Code Division Multiple Access (CDMA) network, etc.), a Public Land Mobile Network (PLMN), a Metropolitan Area Network (MAN), a private network, an ad hoc network, an intranet, a fiber optic-based network, etc., and / or a combination of these or other types of networks.
[0023] Figure 1The number and arrangement of the devices and networks shown are provided as an example. In practice, there may be additional devices and / or networks, fewer devices and / or networks, different devices and / or networks, or differently arranged devices and / or networks compared to the devices and networks shown in Figure 1 . Additionally, Figure 1 two or more of the devices shown in Figure 1 may be implemented within a single device, or
[0024] a single device shown in Figure 2A and Figure 2B may be implemented as multiple distributed devices. Additionally or alternatively, a set of devices (e.g., one or more devices) of system 100 may perform one or more functions described as being performed by another set of devices of system 100.
[0025] For prediction-based attribute coding, let (P i ) i=1…N be a set of positions associated with the point cloud points, and let (M i ) i=1…N be the Morton code associated with (P i ) i=1…N . First, the points are sorted in ascending order according to their associated Morton code. Let I be an array of point indices sorted according to this process. The encoder / decoder compresses / decompresses the points respectively according to the order defined by I. At each iteration i, the point P i is selected. The distances to s (e.g., s = 64) previous points of P i are analyzed, and k (e.g., k = 3) nearest neighbors of P i are selected for prediction. More precisely, the attribute value (a i ) i∈0…k-1 is predicted by using a linear interpolation process based on the distances of the nearest neighbors of point i. Let be the set of k nearest neighbors of the current point i, and let be its decoded / reconstructed attribute value, and let be its distance to the current point. The predicted attribute value is given by Equation 1 below:
[0026] Build lifting-based attribute coding on top of prediction-based coding. Compared to the prediction-based scheme, the main differences are the introduction of two additional steps. The first is the introduction of an update operator. The second is the use of an adaptive quantization strategy.
[0027] Now refer to Figure 2C FIG. 200C depicting a Region Adaptive Hierarchical Transform (RAHT). Block diagram 200C may depict a forward transform 202A and an inverse transform 202B. For RAHT coding, and and w0 is the sign of the weight of the input coefficient F l+1,2n while w1 is the sign of the weight of F l+1,2n+1 .
[0028] For many different reasons, a point cloud may contain duplicate points with the same geometric location, while their attribute values may be the same or may be different. Implementations may involve more efficiently encoding these attribute values of the duplicate points.
[0029] Implementations may be used alone or in any combination. Additionally, each of the methods (or implementations), encoders, and decoders may be implemented by processing circuitry (such as one or more processors or one or more integrated circuits). In one example, one or more processors execute a program stored in a non-transitory computer-readable medium.
[0030] It should be noted that the present disclosure is not limited to TMC13 software or the MPEG-PCC or AVS-PCC standards, and it is a general solution for most PCC systems. Attribute prediction of repeated points
[0031] Since attribute coding is performed after geometric coding, the reconstructed geometric location is known when encoding the attribute value of a given point. Therefore, such geometric information can be utilized to improve the encoding efficiency of the attributes.
[0032] Assume that {X i}(i = 1, 2, …, N) is a set of 3D points, and each point X i is associated with a geometric location P i and an attribute A i . Since implementations may involve attribute coding, it can be assumed that the geometric location, i.e., P i is known for attribute prediction.
[0033] First, these points are sorted / grouped based on their geometric locations. In some implementations, the points are sorted according to the Morton code of the geometric location. All duplicate points are grouped in chunks, and then all duplicate points are sorted according to their attribute values. Specifically, contains a set of duplicate points, where N kis the number of points in the group and they have the same geometric position and their attribute values are sorted, for example, in ascending or descending order. Note that in the following discussion, it is assumed that the attribute values are sorted in ascending order, i.e., for all l < m in the range of 1, 2, …, N k within the range of, and If the attribute is one-dimensional such as reflectivity, they can be directly sorted by their values. If the attribute is multi-dimensional such as RGB color, the sorting should be performed along a specific dimension (e.g., R or G or B). Note that the sorting step is only applied to the encoder side, while the decoder directly parses the attribute prediction residuals.
[0034] Then, for the chunks of repeated points sorted by their attribute values, except for the first point in the chunk, the remaining points in the chunk are predicted based on the attribute values of their previous reconstructed points in the chunk. Specifically, is the attribute of the first point in the chunk and it can be encoded in any way, which is not the focus of the present disclosure. For can be predicted based on the attribute values of the previously reconstructed points, i.e., where is the prediction residual of the attribute and is the reconstructed attribute value of.
[0035] Finally, the prediction residual can be encoded by entropy coding. Since the attribute values are sorted in ascending order, it is guaranteed that Therefore, the sign bit of can be inferred without explicit signaling. Analysis of prediction residuals of repeated points
[0036] The embodiments discussed above may relate to the encoder viewpoint. Another embodiment may relate to the decoder viewpoint of the parsing process of the prediction residuals of the repeated points, i.e., of.
[0037] In an embodiment, the attribute may be one-dimensional, such as reflectivity. The syntax table of such prediction residuals may be as Figure 2D shown.
[0038] Now referring to Figure 2D, Table 200D depicting the syntax elements of the prediction residual. prediction_residual_is_zero can specify whether the prediction residual is equal to 0. prediction_residual_abs_is_one can specify whether the absolute value of the prediction residual is equal to 1. prediction_residual_abs_is_two can specify whether the absolute value of the prediction residual is equal to 2. prediction_residual_abs_minus_three can specify that the absolute value of the prediction residual is prediction_residual_minus_three + 3. prediction_residual_sign can specify the sign of the prediction residual. isSignBitInferred can specify whether prediction_residual_sign can be inferred or must be signaled explicitly. If the point has the same geometric position as the previously encoded point (i.e., it is a repeated point), then isSignBitInferred is set to true.
[0039] In another embodiment, the attribute is multi-dimensional such as an RGB color. Assume that the points are sorted in ascending order according to the first R component. A syntax table of such prediction residuals can be as Figure 2E shown.
[0040] Now refer to Figure 2E , Table 200E depicting the syntax elements of the prediction residual. prediction_residual_is_zero[i] can specify whether the prediction residual of the i-th component is equal to 0. prediction_residual_abs_is_one[i] can specify whether the absolute value of the prediction residual of the i-th component is equal to 1. prediction_residual_abs_is_two[i] can specify whether the absolute value of the prediction residual of the i-th component is equal to 2. prediction_residual_abs_minus_three[i] can specify that the absolute value of the prediction residual of the i-th component is prediction_residual_minus_three[i] + 3. isSignBitInferred can specify whether prediction_residual_sign can be inferred or must be signaled explicitly. If the point has the same geometric position as the previously encoded point (i.e., it is a repeated point), then isSignBitInferred is set to true. Note that in this embodiment, only the R component is checked for isSignBitInferred because sorting is performed on the R component. Lossy attribute coding
[0041] The embodiments discussed above may relate to lossless attribute coding. In lossy attribute coding, the prediction residual may be negative because the reconstructed attribute value may be greater than the original attribute value Therefore, the sign bit of the prediction residual cannot be inferred in lossy attribute coding otherwise an encoder-decoder mismatch problem will occur.
[0042] The embodiments discussed below can solve this mismatch problem in lossy attribute coding.
[0043] The mismatch problem may be caused by coarse quantization and the sign bit of the prediction residual cannot be inferred. To solve this problem, two methods are proposed. One is to change the prediction (or quantization) method to ensure that the prediction residual is always greater than or equal to zero. Another method is to code the sign bit of the prediction residual. Examples of these two methods are presented below.
[0044] Generally, scalar quantization of the prediction residual can be done by dividing by a quantization scalar and then performing a rounding operation, as shown in Equation 2 below: Q = (R * QS + offset) >> shift (Equation 2) where R and Q are the prediction residual and the quantized residual; QS is the quantization scalar; offset and shift are determined by the value of QS.
[0045] In an embodiment, to ensure that the prediction residuals of repeated attributes are always positive, the quantization process of the prediction residuals of all repeated points, i.e., is applied by dividing by the quantization scalar and then performing a floor operation, as shown in Equation 3 below: Q' = (R * QS) >> shift (Equation 3) where the offset value is set to zero.
[0046] In another embodiment, the prediction residual of the first repeated point in group G k , i.e., is losslessly coded without quantization, and the prediction residuals of the remaining repeated points in group G k , i.e., are quantized by (2) and coded by entropy coding.
[0047] In another embodiment, on the encoder side, if the prediction residual of a repeated point, i.e., (l = 1, 2, 3,..., N k ) is detected as negative, it is then forced to be equal to zero and coded as zero.
[0048] In another embodiment, the prediction residual of the first repeated point in group G k is losslessly encoded without quantization. If the prediction residuals of the remaining repeated points in group G are detected as negative, they are set to zero and encoded as zero. k If it cannot be guaranteed that the prediction residual is positive, the sign bit of the prediction residual of the repeated point can be explicitly signaled. Repeated points typically refer to points in the point cloud that have the same geometric position as a previously encoded point. In one embodiment, the attribute is one-dimensional such as reflectivity. The syntax table for such prediction residuals can be as Method for encoding sign bits of residuals of repeated points
[0049] shown.
[0050] Now referring to Figure 2F shown.
[0051] Now referring to Figure 2F, Table 200F depicting the syntax elements of the prediction residual. prediction_residual_is_zero can specify whether the prediction residual is equal to 0. prediction_residual_abs_is_one can specify whether the absolute value of the prediction residual is equal to 1. prediction_residual_abs_is_two can specify whether the absolute value of the prediction residual is equal to 2. prediction_residual_abs_minus_three can specify that the absolute value of the prediction residual is prediction_residual_minus_three + 3. prediction_residual_sign can specify the sign of the prediction residual. If a point has the same geometric position as a previously encoded point (i.e., it is a duplicate point), then isDuplicatePoint is set to true. If the attribute residual is coded without quantization, then isAttributeLosslessCoded is set to true, otherwise it is set to false. If isAttributeLosslessCoded is false or isDuplicatePoint is false, then prediction_residual_sign is explicitly coded, otherwise prediction_residual_sign can be inferred to be positive. Note that the syntax including prediction_residual_is_zero, prediction_residual_abs_is_one, prediction_residual_abs_is_two, prediction_residual_abs_minus_three, and prediction_residual_sign can be coded by entropy coding with or without context. If they are coded using context, then the flag isDuplicatePoint can be used as one of the contexts to improve coding efficiency.
[0052] In another embodiment, the attribute is multi-dimensional such as RGB color. Assume that the points are sorted in ascending order according to the R component, i.e., the first component. The syntax table of such prediction residuals can be as Figure 2G shown.
[0053] Now refer to Figure 2G, Table 200G depicting the syntax elements of the prediction residual. prediction_residual_is_zero[i] can specify whether the prediction residual of the i-th component is equal to 0. prediction_residual_abs_is_one[i] can specify whether the absolute value of the prediction residual of the i-th component is equal to 1. prediction_residual_abs_is_two[i] can specify whether the absolute value of the prediction residual of the i-th component is equal to 2. prediction_residual_abs_minus_three[i] can specify that the absolute value of the prediction residual of the i-th component is prediction_residual_minus_three[i] + 3. If a point has the same geometric position as the previously encoded point (i.e., it is a duplicate point), then isDuplicatePoint is set to true. Note that in this embodiment, only the R component is checked for isDuplicatePoint because sorting is performed on the R component. If the attribute residual is coded without quantization, then isAttributeLosslessCoded is set to true, otherwise it is set to false. If i is not 0 or isAttributeLosslessCoded is false or isDuplicatePoint is false, then prediction_residual_sign is explicitly coded, otherwise prediction_residual_sign can be inferred to be positive. Note that the syntax including prediction_residual_is_zero[i], prediction_residual_abs_is_one[i], prediction_residual_abs_is_two[i], prediction_residual_abs_minus_three[i], and prediction_residual_sign[i] can be coded by entropy coding with or without context. If context is used to code them, then the flag isDuplicatePoint can be used as one of the contexts to improve coding efficiency.
[0054] Figure 3 is a flowchart showing an example process 300 for point cloud coding. It can be described with the help of Figure 1 and 2A to Figure 2E to describe Figure 3 . In an embodiment, one or more blocks of process 300 can be combined in any order.
[0055] As Figure 3As shown, process 300 may include receiving data corresponding to a point cloud from a bitstream (block 311).
[0056] As Figure 3 Further shown, process 300 may include reconstructing a first attribute value of a first repeated point among a plurality of repeated points corresponding to a single geometric location based on the data (block 312).
[0057] As Figure 3 Further shown, process 300 may include obtaining at least one prediction residual corresponding to at least one remaining attribute value of at least one remaining repeated point among the plurality of repeated points (block 313).
[0058] As Figure 3 Further shown, process 300 may include reconstructing at least one remaining attribute value based on the reconstructed first attribute value and the at least one prediction residual (block 314).
[0059] As Figure 3 Further shown, process 300 may include decoding the data corresponding to the point cloud based on the reconstructed first attribute value and the reconstructed at least one remaining attribute value (block 315).
[0060] In an embodiment, the plurality of repeated points may be sorted according to the attribute values of the attributes of the plurality of repeated points.
[0061] In an embodiment, the plurality of repeated points may be sorted according to the component values of the components included in the multi-component attributes of the plurality of repeated points.
[0062] In an embodiment, the sign bit indicating the sign of at least one prediction residual may not be signaled in the data.
[0063] In an embodiment, the sign of at least one prediction residual may be inferred as positive. In an embodiment, when the attribute is in ascending order, the sign of at least one prediction residual may be inferred as positive, and wherein, when the attribute is in descending order, the sign of at least one prediction residual is inferred as negative.
[0064] In an embodiment, the sign bit indicating the sign of at least one prediction residual may be signaled in the data.
[0065] In an embodiment, the data may be encoded such that the prediction residual of the attribute value of the repeated point must be greater than or equal to zero. In an embodiment, the data may be encoded such that when the attribute is in ascending order, the prediction residual of the attribute value of the repeated point is greater than or equal to zero, and such that when the attribute is in descending order, the prediction residual is less than or equal to zero.
[0066] In an embodiment, a floor operation may be used to encode a prediction residual. In an embodiment, the prediction residual may be quantized and rounded by a floor operation.
[0067] In an embodiment, data may be encoded such that negative prediction residuals among prediction residuals of attribute values of repeating points are encoded as zero. In an embodiment, data may be encoded such that prediction residuals among prediction residuals of attribute values of repeating points are encoded as zero.
[0068] It can be understood that Figure 3 only an illustration of an implementation is provided, and it does not imply any limitation on how different embodiments can be implemented. Many modifications can be made to the depicted environment based on design and implementation requirements.
[0069] The embodiments of the present disclosure also provide a computer system for point cloud encoding, the computer system including: a receiving unit configured to cause the one or more processors to receive data corresponding to a point cloud from a bitstream; a first reconstruction unit configured to cause the one or more processors to reconstruct a first attribute value of a first repeating point among multiple repeating points corresponding to a single geometric position based on the data; an obtaining unit configured to cause the one or more processors to obtain at least one prediction residual corresponding to at least one remaining attribute value of at least one remaining repeating point among the multiple repeating points; a second reconstruction unit configured to cause the one or more processors to reconstruct the at least one remaining attribute value based on the reconstructed first attribute value and the at least one prediction residual; and a decoding unit configured to cause the one or more processors to decode the data corresponding to the point cloud based on the reconstructed first attribute value and the reconstructed at least one remaining attribute value.
[0070] In some examples, the multiple repeating points are sorted according to the attribute values of the attributes of the multiple repeating points.
[0071] In some examples, the multiple repeating points are sorted according to the component values of the components included in the multi-component attributes of the multiple repeating points.
[0072] In some examples, the sign bit indicating the sign of the at least one prediction residual is not signaled in the data.
[0073] In some examples, when the attribute is in ascending order, it is inferred that the sign of the at least one prediction residual is positive, and wherein when the attribute is in descending order, it is inferred that the sign of the at least one prediction residual is negative.
[0074] In some examples, a sign bit indicating the sign of the at least one prediction residual is signaled in the data.
[0075] In some examples, the data is encoded such that when the attribute is in ascending order, the prediction residual of the attribute value of a repeated point is greater than or equal to zero, and wherein when the attribute is in descending order, the prediction residual is less than or equal to zero.
[0076] In some examples, the prediction residual is quantized and rounded by a floor operation.
[0077] In some examples, the data is encoded such that the prediction residual among the prediction residuals of the attribute values of repeated points is encoded as zero.
[0078] Figure 4 is according to an illustrative embodiment Figure 1 a block diagram 400 of the internal and external components of a computer as depicted in. It should be understood that Figure 4 only an illustration of one implementation is provided and does not imply any limitation as to the environments in which different embodiments may be implemented. Many modifications may be made to the depicted environments based on design and implementation requirements.
[0079] Computer 102 ( Figure 1 ) and server computer 114 ( Figure 1 ) may include Figure 4 corresponding sets of internal components 800A, 800B and external components 900A, 900B as shown in. Each set of internal components 800A, 800B includes one or more processors 820, one or more computer-readable RAM 822, and one or more computer-readable ROM 824, one or more operating systems 828, and one or more computer-readable tangible storage devices 830 on one or more buses 826.
[0080] The processor 820 is implemented in hardware, firmware, or a combination of hardware and software. The processor 820 is a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), a microprocessor, a microcontroller, a digital signal processor (DSP), a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or another type of processing component. In some implementations, the processor 820 includes one or more processors that can be programmed to perform functions. The bus 826 includes components that allow communication between the internal components 800A, 800B.
[0081] One or more operating systems 828, software programs 108( Figure 1 ), and the point cloud encoding program 116( Figure 1 ) on the server computer 114( Figure 1 ) are stored on one or more corresponding computer-readable tangible storage devices 830 to be executed by one or more corresponding processors 820 via one or more corresponding RAMs 822 (which typically include cache memory). In Figure 4 the illustrated implementation, each of the computer-readable tangible storage devices 830 is a magnetic disk storage device of an internal hard disk drive. Alternatively, each of the computer-readable tangible storage devices 830 is a semiconductor storage device such as ROM 824, EPROM, flash memory, optical disk, magneto-optical disk, solid state disk, compact disc (CD), digital versatile disk (DVD), floppy disk, cassette tape, magnetic tape, and / or another type of non-transitory computer-readable tangible storage device that can store computer programs and digital information.
[0082] Each set of internal components 800A, 800B also includes an R / W drive or interface 832 to read from and write to one or more portable computer-readable tangible storage devices 936 such as CD-ROM, DVD, memory stick, magnetic tape, magnetic disk, optical disk, or semiconductor storage device. Such as software programs 108( Figure 1 ) and the point cloud encoding program 116( Figure 1The software program ( ) can be stored on one or more corresponding portable computer-readable tangible storage devices 936, read via the corresponding R / W drive or interface 832, and loaded into the corresponding hard disk drive 832.
[0083] Each set of internal components 800A, 800B also includes a network adapter or interface 836 such as a TCP / IP adapter card; a wireless Wi-Fi interface card; or a 3G, 4G, or 5G wireless interface card or other wired or wireless communication link. The software program 108 ( Figure 1 ) and the point cloud encoding program 116 ( Figure 1 ) on the server computer 114 ( Figure 1 ) can be downloaded from an external computer to the computer 102 ( Figure 1 ) and the server computer 114 via a network (such as the Internet, a local area network, or other wide area network) and the corresponding network adapter or interface 836. The software program 108 and the point cloud encoding program 116 on the server computer 114 are loaded from the network adapter or interface 836 into the corresponding hard disk drive 832. The network can include copper wire, optical fiber, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers.
[0084] Each set of external components 900A, 900B can include a computer display monitor 920, a keyboard 930, and a computer mouse 934. The external components 900A, 900B can also include a touch screen, a virtual keyboard, a touchpad, a pointing device, and other human-computer interface devices. Each set of internal components 800A, 800B also includes a device driver 840 that interfaces with the computer display monitor 920, the keyboard 930, and the computer mouse 934. The device driver 840, the R / W drive or interface 832, and the network adapter or interface 836 include hardware and software (stored in the storage device 830 and / or ROM 824).
[0085] It is understood in advance that although the present disclosure includes a detailed description of cloud computing, the implementation of the teachings described herein is not limited to a cloud computing environment. Instead, some embodiments can be implemented in conjunction with any other type of computing environment known now or developed later.
[0086] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (such as networks, network bandwidth, servers, processing, memory, storage devices, applications, virtual machines, and services), which can be rapidly provisioned and released with minimal management effort or interaction with the service provider. The cloud model can include at least five characteristics, at least three service models, and at least four deployment models.
[0087] The characteristics are as follows: On-demand self-service: Cloud consumers can unilaterally and automatically provision computing capabilities such as server time and network storage as needed, without human interaction with the service provider. Broad network access: Capabilities are available over the network and accessed through standard mechanisms that promote the use of heterogeneous thin or thick client platforms (such as mobile phones, laptops, and PDAs). Resource pooling: The provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, where different physical and virtual resources are dynamically assigned and reassigned according to demand. There is a sense of location independence in that consumers generally have no control or knowledge of the exact location of the provided resources, but may be able to specify location at a higher level of abstraction (such as country, state, or data center). Rapid elasticity: Capabilities can be provisioned quickly and elastically (automatically in some cases) to scale out rapidly and released quickly to scale in rapidly. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time. Measured service: The cloud system automatically controls and optimizes resource use by leveraging metering capabilities at some level of abstraction appropriate to the type of service (such as storage, processing, bandwidth, and active user accounts). Resource use can be known, controlled, and reported, providing transparency for both the provider and consumer of the utilized services.
[0088] The service models are as follows: Software as a Service (SaaS): The capabilities provided to the consumer are the use of the provider's applications running on the cloud infrastructure. The applications can be accessed from various client devices through a thin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage devices, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings. Platform as a Service (PaaS): The capabilities provided to the consumer are to deploy consumer-created or acquired applications that use the programming languages and tools supported by the provider onto the cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage devices, but has control over the deployed applications and possibly the application hosting environment configuration. Infrastructure as a Service (IaaS): The ability provided to the consumer is to offer processing, storage, networking, and other fundamental computing resources that the consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but has control over the operating system, storage, deployed applications, and possibly limited control over selected networking components (such as a main firewall).
[0089] The deployment models are as follows: Private cloud: The cloud infrastructure is for the exclusive use of an organization. The cloud infrastructure can be managed by the organization or a third party and can exist on-premises or off-premises. Community cloud: The cloud infrastructure is shared by several organizations and supports a specific community with common concerns (such as missions, security requirements, policies, and compliance considerations). The cloud infrastructure can be managed by the organization or a third party and can exist on-premises or off-premises. Public cloud: The cloud infrastructure is available for general public or large industry groups and is owned by an organization that sells cloud services. Hybrid cloud: The cloud infrastructure is a combination of two or more clouds (private, community, or public), and the two or more clouds remain distinct entities but are bound together through standardized or proprietary technologies that enable data and application portability (such as cloud bursting for load balancing between clouds).
[0090] The cloud computing environment is service-oriented, focusing on statelessness, low coupling, modularity, and semantic interoperability. The core of cloud computing is the infrastructure that includes a network of interconnected nodes.
[0091] Refer to Figure 5 , an illustrative cloud computing environment 500 is depicted. As shown, the cloud computing environment 500 includes one or more cloud computing nodes 10. Local computing devices used by cloud consumers, such as a personal digital assistant (PDA) or cellular phone 54A, desktop computer 54B, laptop computer 54C, and / or in-vehicle computer system 54N, can communicate with one or more cloud computing nodes 10. The cloud computing nodes 10 can communicate with each other. The cloud computing nodes 10 can be physically or virtually grouped (not shown) in one or more networks, such as a private cloud, community cloud, public cloud, or hybrid cloud or a combination thereof as described above. This allows the cloud computing environment 500 to provide infrastructure, platform, and / or software as a service, and cloud consumers do not need to maintain resources on local computing devices for this service. It should be understood that Figure 5The types of computing devices 54A through 54N shown are only illustrative, and the cloud computing node 10 and the cloud computing environment 500 can communicate with any type of computerized device via any type of network and / or network addressable connection (e.g., using a web browser).
[0092] Referring Figure 6 , a set of functional abstraction layers 600 provided by the cloud computing environment 500 ( Figure 5 ) is shown. It should be understood in advance that Figure 6 the components, layers, and functions shown are only illustrative, and the embodiments are not limited thereto. As depicted, the following layers and corresponding functions are provided:
[0093] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include: mainframes 61; servers 62 based on RISC (Reduced Instruction Set Computer) architecture; servers 63; blade servers 64; storage devices 65; and network and network components 66. In some embodiments, the software components include network application server software 67 and database software 68.
[0094] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual servers 71; virtual storage devices 72; virtual networks 73 including virtual private networks; virtual applications and operating systems 74; and virtual clients 75.
[0095] In one example, the management layer 80 can provide the following functions. Resource provisioning 81 provides the dynamic acquisition of computing resources and other resources for performing tasks within the cloud computing environment. Metering and pricing 82 provides cost control when resources are utilized within the cloud computing environment, as well as billing or invoicing for the consumption of these resources. In one example, these resources can include application software licenses. Security provides authentication for cloud consumers and tasks, as well as protection for data and other resources. The user portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides cloud computing resource allocation and management such that the required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides the pre-arrangement and procurement of cloud computing resources, anticipating future requirements for the cloud computing resources according to the SLA.
[0096] The workload layer 90 provides examples of functions that can utilize the capabilities of a cloud computing environment. Examples of workloads and functions that can be provided from this layer include: drawing and navigation 91; software development and lifecycle management 92; virtual classroom teaching delivery 93; data analysis processing 94; transaction processing 95; and point cloud encoding 96. Point cloud encoding 96 can decode point cloud data based on inter-component correlation.
[0097] Some implementations can relate to systems, methods, and / or computer-readable media at any possible level of integration technical detail. The computer-readable media can include a computer-readable non-transitory storage medium (or media) having computer-readable program instructions thereon for causing a processor to perform operations.
[0098] A computer-readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. For example, a computer-readable storage medium can be, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: a portable computer floppy disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disc (DVD), a memory stick, a floppy disk, a mechanically encoded device such as a punched card or raised structures in grooves having instructions recorded thereon, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium should not be construed to be a transient signal per se, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., an optical pulse through an optical fiber cable), or an electrical signal transmitted through a wire.
[0099] The computer-readable program instructions described herein can be downloaded to a corresponding computing / processing device from a computer-readable storage medium or downloaded to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium within the respective computing / processing device.
[0100] The computer-readable program code / instruction for performing operations can be assembly instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine-related instructions, microcode, firmware instructions, state-setting data, configuration data of an integrated circuit system, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages (such as Smalltalk, C++, etc.) and procedural programming languages (such as the "C" programming language or similar programming languages). The computer-readable program instructions can be executed entirely on the user's computer, partially on the user's computer, executed as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or can be connected to an external computer (e.g., through the Internet using an Internet service provider). In some embodiments, an electronic circuit system, including, for example, a programmable logic circuit, a field-programmable gate array (FPGA), or a programmable logic array (PLA), can execute the computer-readable program instructions by utilizing the state information of the computer-readable program instructions to personalize the electronic circuit system for performing various aspects or operations.
[0101] These computer-readable program instructions can be provided to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions executed via the processor of the computer or other programmable data processing apparatus create means for implementing the functions / acts specified in one or more blocks of the flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium that can direct a computer, a programmable data processing apparatus, and / or other devices to function in a particular manner, such that the computer-readable storage medium in which the instructions are stored comprises an article of manufacture including instructions for implementing aspects of the functions / acts specified in one or more blocks of the flowchart and / or block diagram.
[0102] The computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-implemented process, such that the instructions executed on the computer, other programmable apparatus, or other device implement the functions / acts specified in one or more blocks of the flowchart and / or block diagram.
[0103] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer-readable media according to various embodiments. In this regard, each block in the flowchart or block diagram may represent a module, segment, or portion of instructions, which includes one or more executable instructions for implementing the specified logical function. The method, computer system, and computer-readable media may include additional blocks, fewer blocks, different blocks, or differently arranged blocks compared to those depicted in the figures. In some alternative embodiments, the functions noted in the blocks may not occur in the order noted in the figures. For example, two blocks shown in succession may in fact be executed concurrently or substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, can be implemented by a system based on dedicated hardware performing the specified functions or acts, or combinations of dedicated hardware and computer instructions.
[0104] It will be apparent that the systems and / or methods described herein can be implemented in different forms of hardware, firmware, or a combination of hardware and software. The actual specific control hardware or software code used to implement these systems and / or methods does not limit the implementation. Thus, the operations and behavior of the systems and / or methods are described herein without reference to specific software code - it being understood that software and hardware can be designed to implement the systems and / or methods based on the description herein.
[0105] Unless expressly described as such, no element, act, or instruction used herein shall be construed as critical or essential. Additionally, as used herein, the singular forms "a" or "an" are intended to include one or more items and may be used interchangeably with "one or more." Further, as used herein, the term "group" is intended to include one or more items (e.g., related items, unrelated items, combinations of related and unrelated items, etc.) and may be used interchangeably with "one or more." The term "one" or similar language is used where only one item is meant. Additionally, as used herein, the terms "has," "have," "having," etc. are intended to be open-ended terms. Further, unless expressly stated otherwise, the phrase "based on" is intended to mean "at least partially based on."
[0106] The description of various aspects and embodiments has been presented for purposes of illustration but is not intended to be exhaustive or limited to the disclosed embodiments. Even where combinations of features are recited in the claims and / or disclosed in the specification, such combinations are not intended to limit the disclosure of possible implementations. Indeed, many of these features may be combined in ways not specifically recited in the claims and / or not disclosed in the specification. Although each of the recited dependent claims may directly depend on only one claim, the disclosure of possible implementations includes combinations of each dependent claim with every other claim in the claim set. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope of the described embodiments. The terms used herein were chosen to best explain the principles of the embodiments, the practical application, or a technical improvement over technologies found in the marketplace, or to enable other ordinary skilled artisans in the art to understand the embodiments disclosed herein.
Claims
1. A method for point cloud decoding, characterized in that The method includes: Receiving data corresponding to a point cloud from a bitstream; Reconstructing a first attribute value of a first repeated point among multiple repeated points corresponding to a single geometric position based on the data; Obtaining at least one prediction residual corresponding to at least one remaining attribute value of at least one of the multiple repeated points; Reconstructing the at least one remaining attribute value based on the reconstructed first attribute value and the at least one prediction residual; and Decoding the data corresponding to the point cloud based on the reconstructed first attribute value and the reconstructed at least one remaining attribute value.
2. The method according to claim 1, wherein Sorting the multiple repeated points according to the attribute values of the attributes of the multiple repeated points.
3. The method according to claim 1, wherein Sorting the multiple repeated points according to the component values of the components included in the multi-component attributes of the multiple repeated points.
4. The method according to claim 1, wherein Not signaling in the data a sign bit indicating a sign of the at least one prediction residual.
5. The method according to claim 4, wherein When the attribute is in ascending order, inferring that the sign of the at least one prediction residual is positive, and wherein when the attribute is in descending order, inferring that the sign of the at least one prediction residual is negative.
6. The method according to claim 1, characterized in that, Signaling in the data a sign bit indicating a sign of the at least one prediction residual.
7. The method according to claim 1, characterized in that Encoding the data such that when the attribute is in ascending order, a prediction residual of an attribute value of a repeated point is greater than or equal to zero, and wherein when the attribute is in descending order, the prediction residual is less than or equal to zero.
8. The method according to claim 7, wherein The prediction residual is quantized and rounded by a floor operation.
9. The method according to claim 1, wherein Encoding the data such that a prediction residual among prediction residuals of attribute values of repeated points is encoded as zero.
10. A method for storing or transmitting a video stream, characterized in that, The video bitstream is decoded based on the method according to any one of claims 1 to 9.
11. A computer device, characterized in that, The apparatus includes a processor and a memory, The memory is configured to store program code and transmit the program code to the processor; The processor is configured to execute the method according to any one of claims 1 - 10 based on instructions in the program code.
12. A non-transitory computer-readable medium, characterized in that, A computer program for point cloud decoding is stored thereon, and the computer program is configured to cause one or more computer processors to execute the method according to any one of claims 1 - 10.
13. A computer storage medium, characterized in that, A bitstream formed by a computer program is stored thereon, and when the computer program is executed by a computer, the computer is caused to execute the method according to any one of claims 1 - 10.