Method and apparatus for encoding / decoding geometry of point clouds - Patents.com
Patent Information
- Application Number
- JP2024020403
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-01-17
- Filing Date
- 2024-02-14
- Publication Date
- 2025-02-17
- Estimated Expiration
- 2039-06-28
Smart Images

Figure 0007630672000047 
Figure 0007630672000048 
Figure 0007630672000049
Abstract
Description
[Technical field]
[0001] Field The present embodiments relate generally to encoding and decoding of point clouds representing the exterior surfaces of 3D objects, and in particular, but not exclusively, the technical field of the present embodiments relates to encoding / decoding the geometry of such point clouds. [Background technology]
[0002] background This section is intended to introduce the reader to various aspects of art that may be related to various aspects of the present embodiments, which are described and / or claimed below. The following discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present embodiments. As such, it should be understood that the following discussion is not an introduction to the prior art, and should be read in this context.
[0003] A point cloud is a set of data points in some coordinate system. In a three-dimensional coordinate system (3D space), these points are usually intended to represent the exterior surface of a 3D object. Each point in a point cloud is often defined by a location (X, Y, and Z coordinates in 3D space), and possibly other associated attributes, such as color expressed in RGB or YUV color space, transparency, reflectance, two-component normal vector, etc.
[0004] It is common to represent a point cloud as a set of six-component points (X,Y,Z,R,G,B) or equivalently (X,Y,Z,Y,U,V), where (X,Y,Z) define the coordinates of a colored point in 3D space, and (R,G,B) or (Y,U,V) define the color of that point.
[0005] A point cloud can be static or dynamic depending on whether the point cloud changes over time. Note that in the case of a dynamic point cloud, the number of points is not constant, but rather typically changes over time. A dynamic point cloud is thus a chronological list of sets of points.
[0006] In fact, point clouds can be used for various purposes, such as cultural heritage / buildings, 3D scanning of objects such as statues or buildings to share the spatial configuration of the object without transporting or visiting the site, and in a way that ensures the preservation of knowledge about the object in case it may be destroyed, for example the destruction of a temple by an earthquake. Such point clouds are typically static, colored and large.
[0007] Another use case is topography and cartography, where by using a 3D representation the map is not limited to a plane and may include reliefs, where Google Maps is a good example of a 3D map, but it uses meshes rather than point clouds, however point clouds may be a suitable data format for 3D maps, where such point clouds are typically static, colored and large.
[0008] The automotive industry and autonomous vehicles are also areas where point clouds can be used. Autonomous vehicles must be able to "explore" their environment to make better driving decisions based on the current state of their immediate vicinity. Typical sensors such as LIDAR generate dynamic point clouds that are used by decision engines. These point clouds are not intended for human viewing, are typically small, not necessarily colored, and are frequently captured and dynamic. The point clouds may have other attributes, such as reflectivity provided by LIDAR, which may provide better information about the material of the detected objects and aid in decisions.
[0009] Virtual reality and immersive worlds have been much talked about in recent years, and many see them as the future of 2D flat video. The basic concept is to immerse the viewer in the whole environment around him / her, as opposed to standard TV, where you can only see the virtual world in front of you. There are several shades of immersion depending on the viewer's freedom in the environment. Colored point clouds are good candidates for a format to deliver virtual reality (or VR) worlds. They can be static or dynamic, and typically have an average size, e.g., not exceeding a few million points at a time.
[0010] Point cloud compression will only be successful in storing / transmitting 3D objects in an immersive world if the size of the bitstream is small enough to give the end user practical storage capacity / transmission speeds.
[0011] It is essential to be able to deliver dynamic point clouds to end users with reasonable bitrate consumption while maintaining an acceptable (or preferably very good) quality of experience. Efficiently compressing these dynamic point clouds is a key point for practical implementation of the immersive world delivery chain.
[0012] Image-based point cloud compression techniques are rapidly gaining popularity due to their combination of compression efficiency and low complexity. They proceed in two main steps. First, the point cloud, i.e., 3D points, are projected (orthogonally projected) into a 2D image. For example, at least one depth image represents the geometry of the point cloud, i.e., the spatial coordinates of the 3D points in the 3D space, and at least one texture image represents the attributes attached to the 3D points of the point cloud, e.g., the texture / color information associated with the 3D points. Then, these techniques encode such depth and texture images by a conventional video encoder.
[0013] Image-based point cloud compression techniques achieve good compression performance by leveraging the capabilities of 2D video encoders, e.g., HEVC (“ITU-T H.265 Telecommunication standardization sector of ITU (10 / 2014), series H: audiovisual and multimedia systems, infrastructure of audiovisual services - coding of moving video, High efficiency video coding, Recommendation ITU-T H.265”), while keeping complexity low by using a simple projection scheme.
[0014] One challenge with image-based point cloud compression techniques is that the point cloud may not be suitable for projection onto an image, especially when the distribution of points follows a surface with many folds (concave / convex areas such as fabric) or when the distribution of points does not follow a surface at all (such as fur or hair). In these situations, image-based point cloud compression techniques will either have lower compression efficiency (many fine projections are required, making 2D video compression less efficient) or lower quality (due to the difficulty of projecting the point cloud onto a surface).
[0015] One approach used in the state of the art to mitigate the above mentioned problems is to project multiple geometric and texture information onto the same spatial location (pixel) in the image, which means that several depth and / or texture images can be generated for each 3D point of the point cloud.
[0016] This is for example the case for the so-called Test Model Category 2 Point Cloud Encoder (TMC2) defined in ISO / IEC JTC1 / SC29 / WG11 / N17248, Macau, China, October 2017, where the point cloud is orthogonally projected onto an orthographic projection plane. Two depth values are then associated with each coordinate of said projection plane, one representing the depth value associated with the nearest point (minimum depth value) and the other one representing the depth value of the furthest point (maximum depth value). A first depth image is then generated from the minimum depth value (D0) and a second depth image is generated from the absolute value of the maximum depth value (D1), where D1-D0 is less than or equal to the maximum surface thickness.
[0017] The depth image and associated metadata are then encoded and decoded. The geometry of the point cloud is then reconstructed from the two decoded depth images. However, to reduce the global coding cost of the point cloud, it is necessary to improve the coding efficiency of the two depth images. Summary of the Invention
[0018] overview The following presents a simplified summary of the embodiments in order to provide a basic understanding of some aspects of the embodiments. This summary is not an exhaustive overview of the embodiments. It is not intended to identify key or essential elements of the embodiments. The following summary is merely intended to present some aspects of the embodiments in a simplified form as a prelude to the more detailed description that is presented below.
[0019] The present embodiment overcomes at least one of the shortcomings of the prior art. - obtaining at least one first point from at least one point of a cloud of points by projecting said point of the cloud of points onto a projection plane and obtaining at least one other point of the cloud of points determined according to said at least one first point; - determining and encoding at least one interpolation coding mode for the at least one first point based on at least one reconstructed point obtained from the at least one first point and at least one interpolated point defined by the at least one interpolation coding mode to approximate the at least one other point of the point cloud; and The object of the present invention is to overcome this problem by a method comprising signaling at least the interpolation coding mode as a value of the image data.
[0020] The particular nature of the present embodiments, as well as other objects, advantages, features and uses of the present embodiments, will become apparent from the following description of examples taken in conjunction with the accompanying drawings.
[0021] BRIEF DESCRIPTION OF THE DRAWINGS Several examples of this embodiment are shown in the accompanying drawings. [Brief description of the drawings]
[0022] [Figure 1] 1 illustrates diagrammatically the steps of a method 100 for encoding depth values of a number of points of a point cloud according to an example of this embodiment. [Diagram 2] 10 illustrates a schematic diagram of one embodiment of step 130, according to one embodiment of the present invention. [Diagram 3]1 illustrates several embodiments of candidate interpolation coding modes according to an example embodiment; [Figure 3a] 1 illustrates several embodiments of candidate interpolation coding modes according to an example embodiment; [Figure 4] 2 illustrates diagrammatically the steps of a method 200 for decoding a first depth image and a second depth image from a bitstream according to an example of the present embodiment. [Diagram 5] 1 illustrates a schematic diagram of a method for encoding the geometry and texture of a point cloud defined in the prior art (TMC2). [Figure 6] 6 shows a schematic diagram of an example of the use of the methods 100 and 200 in the encoding method of FIG. [Figure 6a] A variation of FIG. 6 is shown below. [Figure 7] 1 illustrates a schematic diagram of a method for decoding the geometry and texture of a point cloud defined in the prior art (TMC2); [Figure 8] 8 illustrates a schematic diagram of an example of the use of the method 200 in the decoding method of FIG. [Figure 8a] A variation of FIG. 8 is shown. [Figure 9] 1 illustrates a block diagram of an example system in which various aspects and embodiments may be implemented, according to an example embodiment; [Figure 10] 1 illustrates two remote devices communicating over a communications network according to an example embodiment. [Figure 11] 4 illustrates the syntax of a signal according to an example embodiment. [Figure 12] 1 shows an example of the distribution of reconstruction mode usage in TMC2. [Figure 13] 1 shows several examples of occupancy maps. [Figure 13a] 1 shows several examples of occupancy maps. [Figure 13b] 1 shows several examples of occupancy maps.
[0023] Similar or identical elements are given the same reference numbers. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0024] Description of the present embodiment The present embodiments are described more fully below with reference to the accompanying drawings, which show several examples of the present embodiments. However, the present embodiments may be embodied in many alternative forms and should not be construed as being limited to the examples described below. Accordingly, while the present embodiments are susceptible to various modifications and alternative forms, specific examples thereof are shown by way of example in the drawings and are described in detail herein. However, it is to be understood that there is no intention to limit the present embodiments to the particular forms disclosed, but on the contrary, the present specification covers all modifications, equivalents, and alternatives falling within the concept and scope of the present embodiments as set forth in the claims.
[0025] The terms used herein are for the purpose of describing particular examples only and are not intended to limit the present embodiment. As used herein, the singular forms "a," "an," and "the" are intended to include the plural unless the context clearly dictates otherwise. Furthermore, the terms "comprise," "comprises," "includes," and / or "comprising," as used herein, are understood to specify the presence of the referenced features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof. Furthermore, when an element is referred to as being "responsive to" or "connected" to another element, it may be directly responsive to or connected to the other element, or there may be intervening elements. In contrast, when an element is referred to as being "directly responsive to" or "directly connected" to another element, there are no intervening elements. As used herein, the term "and / or" includes all combinations of one or more associated listed items and may be abbreviated as " / ."
[0026] It should be understood that the terms first, second, etc. may be used herein to describe various elements, but the elements are not limited to these terms. These terms are used merely to distinguish one element from another. For example, a first element may be referred to as a second element, and similarly, a second element may be referred to as a first element, without departing from the scope of the present embodiment.
[0027] Some of the figures include arrows on communication paths to indicate the primary direction of communication, however, it should be understood that communication may occur in the opposite direction to the illustrated arrows.
[0028] Some examples are described in conjunction with block diagrams and operational flow diagrams, in which each block represents a circuit element, module, or portion of code that includes one or more executable instructions for implementing a specified logical function. It should also be noted that in other implementations, the functions described in the blocks may occur out of the order described. For example, two blocks shown in succession may in fact be executed substantially in parallel, or may be executed in the reverse order depending on the functionality involved in the blocks.
[0029] The phrases "according to one example" or "in one example" used herein mean that a particular feature, structure, or characteristic described in connection with the example may be included in at least one implementation of the present embodiment. The appearances of the phrases "according to one example" or "in one example" in various places in the specification are not necessarily all referring to the same example, and separate or alternative examples are not mutually exclusive of other examples.
[0030] Reference numerals appearing in the claims are for descriptive purposes only and shall have no limiting effect on the scope of the claims.
[0031] Although not explicitly stated, the present examples and variations may be used in any combination or subcombination.
[0032] This embodiment describes the encoding / decoding of two depth images and two texture images representing one point cloud, but extends it to the encoding / decoding of two sequences (video) of depth images and two sequences (video) of texture images representing a sequence of point clouds (a time-dynamic point cloud), since the geometry (two depth images) and texture (color) of one point cloud of the sequence of point clouds is then encoded / decoded independently of the geometry (two depth images) and texture (color) of another point cloud of the sequence of point clouds.
[0033] As explained above, the point cloud is orthogonally projected onto a projection plane and two depth images D0, D1 are obtained from the depth values associated with the projected 3D points. D0 is a first depth image representing the depth value of the closest point of the point cloud and D1 is a second depth image representing the depth value of the farthest point of the point cloud. The first depth image D0 is encoded, for example, using a conventional image / video encoder.
[0034] In the following, the term "image region" refers to a set of pixels of at least one image, which may or may not be neighboring pixels and / or which may or may not belong to the same image, but which all share at least one common characteristic.
[0035] For example, the entire image itself may be considered as an image region. An image can also be divided into blocks, with a block or a group of blocks being an image region.
[0036] An image region may also have a non-rectangular shape, for example when multiple pixels of an image with the same (or similar) extracted features are associated to form an image region. An image region may be a patch as defined in TMC2.
[0037] Examples of features extracted from an image include color, texture, normal vectors, etc.
[0038] FIG. 1 illustrates diagrammatically the steps of a method 100 for encoding depth values of a number of points of a point cloud according to an example embodiment.
[0039] In step 110, the module M1 obtains at least one first point P0(p) from at least one point of the point cloud PC by projecting said at least one point of the point cloud PC onto a projection plane.
[0040] For example, an orthographic projection may be used.
[0041] For each first point P0(p), in step 100, the module M1 also obtains at least one other point P(n,0) of the point cloud PC determined according to said first point P0(p), where the point P(n,0) designates a point n of a set of N points, the subscript 0 indicating the first point P0(p).
[0042] According to one embodiment of step 110, at least one other point P(n,0) of the point cloud PC that corresponds to a first point P0(p) belongs to a neighborhood around said first point P0(p).
[0043] According to one embodiment, the neighborhood corresponding to a first point P0(p) includes a number of points of the point cloud PC that are close to said first point P0(p), for example if the spatial distance between these points and the first point P0(p) is below a given value.
[0044] According to one embodiment, the neighboring points are all aligned to a first point P0(p).
[0045] According to one embodiment, a neighborhood associated with a first point P0(p) is defined according to an interpolation coding mode ICM determined for said first point P0(p).
[0046] Defining a neighborhood means defining a number of elements, spatial distances, etc.
[0047] According to one embodiment, the neighborhood associated with a first point P0(p) is the image region around said first point P0(p).
[0048] In step 120, the module M2 calculates at least one reconstructed point obtained from the at least one first point P0(p).
number
[0049] According to one embodiment of step 120, at least one reconstructed point
number
[0050] In step 130, a module M3 calculates the at least one reconstructed point P(n,0) obtained from the at least one first point P0(p) (step 120) in order to approximate the at least one other point P(n,0) of the point cloud PC.
number
[0051] An interpolation point PI(i,0) denotes an interpolation point i that belongs to a set of I interpolation points corresponding to the first point P0(p) (subscript 0).
[0052] In step 140, a module M4 codes said at least one first point P0(p) and said at least one interpolation coding mode ICM into a bitstream BT.
[0053] According to one embodiment of step 120 or 140, a depth value of the at least one first point P0(p) is assigned to a first depth image D0 encoded by a conventional image encoder of the bitstream BT, such as, for example, an HEVC encoder / decoder or an encoder / decoder as specified by TMC2.
[0054] In step 120, according to the embodiment, the first depth image D0 is decoded to obtain a decoded first depth image D1.
number
number
number
[0055] According to one embodiment of step 130, the determination of the interpolation coding mode ICM of the first point P0(p) is based on the candidate interpolation coding mode CICM k At least one interpolation point PI defined according to k (i,0)(i=1,...,I k At least one candidate interpolation coding mode CICM indicating a particular coding of at least one other point P(n,0) (n=1,...,N) related to the first point P0(p) by k The rate-distortion cost associated with RDC k It is based on.
[0056] One interpolation point PI k (i,0) corresponds to the first point P0(p) (subscript 0) k refers to the i-th interpolation point in the set of i-th interpolation points, and I k is the candidate interpolation coding mode CICM k It is an integer value defined according to
[0057] According to one embodiment of step 130, the rate-distortion cost RDC k is the Lagrangian RDC k =D k +λ k ·R k where D k is the candidate interpolation coding mode CICM k The corresponding metric, R k is the candidate interpolation coding mode CICM k The bit rate at which λ is encoded, and λ k is the candidate interpolation coding mode CICM k is the Lagrange multiplier corresponding to
[0058] Lagrange multiplier λ k If the multiplier is large, the bit rate R k On the other hand, if the multiplier value is small, the bit rate is small. k The value of can be easily increased to improve the coding quality. The multiplier may be correlated with the quantization parameter (QP) used in the image coding. Typical values of the multiplier range from a few hundred for very poor quality coding to a tenth of a percent for good coding. These values are indicative and may depend on the video content.
[0059] According to one embodiment of step 130, the interpolation coding mode ICM is the one with the lowest rate-distortion cost RDC k Candidate Interpolation Coding Mode CICM associated with k It may be.
[0060] According to one embodiment of step 130, the rate distortion cost RDC k I k Interpolation points PI k It is based on a metric that indicates the spatial distance between (i,0) and N other points P(n,0).
[0061] According to one embodiment, metric D k is given by the following equation: D k =Max(dist point (A,B);dist point (B,A) however
number
number
number
[0062] Distance point (A,B) ensures that the reconstructed point is not too far from the first point and excludes points that are irrelevant to the coding. point (B,A) ensures that the first point does not stray too far from the reconstructed point.
[0063] According to one variant, the method includes removing duplicates of set A before computing the rate-distortion cost.
[0064] According to one embodiment of step 130, at least one candidate interpolation coding mode CICM k The reconstructed point
number
[0065] According to a variant of the embodiment of step 130 shown in FIG. 2, at least one candidate interpolation coding mode CICM k is defined as follows:
[0066] In step 1300, the maximum depth difference (distance)
number
number
number
number
[0067] According to one variant,
number
[0068] If there are no differences within a given range of values, the maximum depth difference
number
[0069] Then, multiple candidate interpolation coding modes CICM are generated, for example by selecting different values of LB and UB. k In this case, the decoder uses the interpolation coding mode ICM k There is no need to transmit the bounds LB and UB since these values are known in advance from the specific value of .
[0070] Typically, one can define one candidate interpolation mode at LB=0 and UB=1, another one at LB=0 and UB=2, and yet another one at LB=0 and UB=4.
[0071] In step 1310, the maximum depth difference (distance)
number
[0072] According to a variant of step 1310 shown in FIG. 3, when UB (threshold)=4, all generated interpolation points are reconstructed points.
number
[0073] More specifically, at least one interpolation point is generated as follows. ·
number
number
number
number
number
number
[0074] In FIG. 3, the interpolation points are represented by crosses 21 .
[0075] Note that in FIG. 3, for clarity, only a single point P(n,0) is shown.
[0076] According to one variation shown in FIG. 3a, instead of aligning all the interpolation points along the same axis (ie, on top of the current point), the top half of the interpolation points are aligned with a neighboring point that sets the value of deltaMax.
[0077] According to one variant, the maximum depth difference is at least equal to the minimum value minDepth.
number
[0078] Then, multiple candidate interpolation coding modes CICM k can be determined by choosing different values of minDepth, typically 0, 1 or 2.
[0079] According to one embodiment of step 130, the rate-distortion cost RDC k I also k Interpolation points PI k It is based on a metric that indicates the color distance between the color of (i,0) and the colors of the other N points P(n,0).
[0080] According to one embodiment, metric D k is given by the following equation: D k =Max(dist geo+text (A,B);dist geo+text (B,A) however
number
number
[0081] According to one embodiment, at least one candidate interpolation coding mode CICM k also defines how color is assigned to at least one of the interpolation points.
[0082] According to one embodiment, the color assigned to an interpolated point is the color of the reconstructed point closest to said interpolated point.
[0083] In one variant, the color assigned to an interpolation point is a function of the reconstructed colors in the neighborhood of said interpolation point, a function meaning for example a weighted average, a maximum or a minimum.
[0084] According to one embodiment of step 110, the neighbourhood is an image region, ie said at least one other point P(n,0) of the point cloud PC associated with the first point P0(p) belongs to an image region.
[0085] According to one embodiment, the rate-distortion cost is obtained by adding the rate-distortion costs determined for image sub-regions of said image region.
[0086] According to one embodiment, a rate-distortion cost is determined for a number of image regions of different shapes and / or different sizes, and an interpolation coding mode associated with the image region shape and / or size and the minimum rate-distortion cost is selected.
[0087] According to one embodiment of step 140, the interpolation coding mode ICM is encoded as metadata associated with the image region.
[0088] In one variant, the difference between two interpolation coding modes assigned to two different image regions is coded as metadata.
[0089] For example, for each patch, each mode RDC k (or 2 RDCs k The difference between each patch in the bitstream BT is as follows: k The UE is signaled to
[0090] [Table 1]
[0091] For example, for each block, each mode RDC k (or 2 RDCs k ) is signaled for each block k of the bitstream BT.
[0092] [Table 2]
[0093] FIG. 4 illustrates diagrammatically the steps of a method 200 for decoding depth values of points of a point cloud from a bitstream according to an example of this embodiment.
[0094] In step 210, the module M5 extracts at least one reconstructed point from the bitstream BT.
number
[0095] According to one embodiment of step 210, the module M5 decodes the bitstream BT to obtain a first decoded depth image
number
number
number
[0096] In step 220, module M6 obtains at least one interpolation coding mode ICM from the bitstream BT, the interpolation coding mode ICM indicating how at least one point in the vicinity of said at least one reconstructed point is approximated by at least one other interpolation point.
[0097] According to one embodiment of step 220, at least one interpolation coding mode ICM is obtained from metadata extracted from the bitstream BT.
[0098] In step 230, the module M7
number
[0099] The reconstructed point cloud is then
number
[0100] According to one embodiment of step 230, the depth value associated with the at least one interpolation point is calculated based on the reconstructed point
number
[0101] According to one embodiment, the reconstructed points
number
number
[0102] According to a variant of the embodiment of step 230, at least one interpolation point is generated according to a variant of the embodiment of step 130 as shown in FIG.
[0103] According to one embodiment of the method, in step 210, the method further comprises:
number
[0104] In step 220, an interpolation coding mode ICM is then obtained from the bitstream BT for each image region, said interpolation coding mode ICM indicating how points in an image region are approximated by at least one other interpolation point.
[0105] In step 230, at least one interpolation point is then generated for each image region according to an interpolation coding mode ICM associated with said image region, each of said at least one interpolation point having an associated depth value.
[0106] FIG. 5 shows a schematic diagram of how to encode the geometry and texture of a point cloud defined in TMC2.
[0107] Essentially, the encoder captures the geometry information of the point cloud PC in the first (D0) and second (D1) depth images.
[0108] As an example, the first and second depth images are acquired in TMC2 as follows.
[0109] A depth patch (a set of 3D points of the point cloud PC) is obtained by clustering multiple points of the point cloud PC according to the normal vectors at these points. All extracted depth patches are then projected and packed into a 2D lattice, trying to minimize unused space, while ensuring that every T×T (e.g. 16×16) block of the lattice is associated with a unique patch, where T is a user-defined parameter signaled in the bitstream.
[0110] A depth image is then generated by utilizing the 3D to 2D mapping calculated through the packing process, more specifically the packed position and size of the projected area of each patch. More precisely, let H(u,v) be the set of points of the current patch projected to the same pixel (u,v). The first layer, also called the closest layer or first depth image D0, preserves the point of H(u,v) with the minimum depth value. The second layer, also called the farthest layer or second depth image D1, captures the point of H(u,v) with the maximum depth value in the interval [D,D+Δ], where D is the depth value of the pixel in the first depth image D0 and Δ is a user-defined parameter describing the thickness of the surface.
[0111] The first depth image D0 is then output from the packing process. A padding process is also used to fill the spaces between the patches to generate a piecewise smooth first depth image suitable for video compression.
[0112] The generated depth images / layers D0 and D1 are then stored as video frames and compressed using any conventional video codec, such as HEVC.
[0113] The encoder also encodes / decodes the first and second depth images to generate the decoded first and second depth images.
number
[0114] According to one embodiment, for each reconstructed point, the color of the closest point in the original point cloud is assigned as its color to be encoded.
[0115] Then a first and a second texture image T0, T1 are generated by preserving the coded color information of each reconstructed point at the same location as the depth image, i.e. (i,u,v).
[0116] FIG. 6 illustrates diagrammatically one example of the use of the methods 100 and 200 in the encoding method of FIG.
[0117] According to this example, the encoding of the second depth image D1 of FIG. 5 is replaced by the encoding method 100 of FIG. 1, and the second depth image D2 of FIG.
number
[0118] In one variant shown in FIG. 6a, the encoding of the first and second depth images of FIG. 5 is associated with the encoding method 100 of FIG. 1, and the decoding of the first and second depth images of FIG. 5 is associated with the decoding method 200 of FIG. 4.
[0119] FIG. 7 shows a schematic diagram of a method for decoding the geometry and texture of a point cloud defined in the prior art (TMC2).
[0120] Decoded first depth image
number
number
number
[0121] The geometry of the point cloud is then reconstructed by backprojecting the decoded first and second depth images and possibly the metadata.
[0122] FIG. 8 illustrates a schematic diagram of one example of the use of the method 200 in the decoding method of FIG.
[0123] According to this example, the decoding of the first and second depth images of FIG. 7 is replaced by the decoding method of FIG.
[0124] In one variant shown in FIG. 8a, the decoding of the first and second depth images of FIG. 7 is linked to the decoding method 200 of FIG.
[0125] In Figs. 1-8a, modules are functional units that may or may not be associated with distinct physical units. For example, these modules or parts thereof may be grouped together in a unique element or circuit, or may contribute to the functionality of the software. Conversely, some modules may potentially consist of separate physical entities. Devices compatible with the present embodiment may be implemented using pure hardware, for example using dedicated hardware such as ASIC or FPGA or VLSI (respectively "Application Specific Integrated Circuit", "Field Programmable Gate Array", "Very Large Scale Integrated Circuit"), or by several integrated electronic components embedded in the device, or by a combination of hardware and software components.
[0126] FIG. 9 illustrates a block diagram of an example system in which various aspects and embodiments may be implemented. System 9000 may be implemented as a device including various elements described below and configured to perform one or more aspects described herein. Examples of such devices include, but are not limited to, various electronic devices, such as personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected home appliances, and servers. The elements of system 9000, either alone or in combination, may be implemented on a single integrated circuit, multiple ICs, and / or discrete elements. For example, in at least one embodiment, the processing and encoder / decoder elements of system 9000 are distributed across multiple ICs and / or discrete elements. In various embodiments, system 9000 is communicatively coupled to other similar systems or other electronic devices, for example, via a communication bus or through dedicated input and / or output ports. In various embodiments, system 9000 is configured to implement one or more aspects described herein.
[0127] The system 9000 includes at least one processor 9010 configured to execute instructions loaded therein, for example to perform various aspects described herein. The processor 9010 may include embedded memory, input / output interfaces, and various other circuits known in the art. The system 9000 includes at least one memory 9020 (e.g., volatile and / or non-volatile memory elements). The system 9000 may include non-volatile and / or volatile memory, including storage 9040, including, but not limited to, EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, magnetic disk drives, and / or optical disk drives. The storage 9040 may include, by way of non-limiting example, internal storage, external storage, and / or network-accessible storage.
[0128] The system 9000 includes an encoder / decoder module 9030 configured to process data to provide, for example, encoded or decoded video, and the encoder / decoder module 9030 may include its own processor and memory. The encoder / decoder module 9030 represents a module that may be included in a device to perform encoding and / or decoding functions. As is known, a device may include one or both of an encoding and decoding module. Also, the encoder / decoder module 9030 may be implemented as a separate element of the system 9000 or may be incorporated within the processor 9010 as a combination of hardware and software, as is known to those skilled in the art.
[0129] Program code to be loaded into the processor 9010 or the encoder / decoder 9030 to perform various aspects described herein may be stored in the storage device 9040 and then loaded into the memory 9020 for execution by the processor 9010. According to various embodiments, one or more of the processor 9010, memory 9020, storage device 9040, and encoder / decoder module 9030 may store one or more various items while performing operations described herein. Such stored items may include, but are not limited to, input video, decoded video, point clouds, reconstructed point clouds or portions of decoded video, bitstreams, matrices, variables, and intermediate or final results from processing of mathematical expressions, formulas, operations, and operational logic.
[0130] In some embodiments, memory within the processor 9010 and / or the encoder / decoder module 9030 is used to store instructions and provide working memory for the processes required during encoding or decoding.
[0131] However, in other embodiments, external memory of the processing unit (e.g., the processing unit may be either the processor 9010 or the encoder / decoder module 9030) is used for one or more of these functions. The external memory may be memory 9020 and / or storage 9040, such as dynamic volatile memory and / or non-volatile flash memory. In some embodiments, the external non-volatile flash memory is used to store the television's operating system. In at least one embodiment, a high speed external dynamic volatile memory such as RAM is used as working memory for video encoding and decoding operations, such as MPEG-2, HEVC, VVC (Versatile Video Coding) or TMC2.
[0132] Input to the elements of system 9000 may be provided via various input devices, as shown in block 9130. Such input devices may include, but are not limited to, (i) an RF section that receives an RF signal transmitted wirelessly, for example by a broadcaster, (ii) a composite input terminal, (iii) a USB input terminal, and / or (iv) an HDMI input terminal.
[0133] In various embodiments, the input devices of block 9130 are associated with various input processing elements known in the art. For example, the RF section may be associated with elements necessary to (i) select a desired frequency (also called signal selection, or bandlimiting a signal to a band of frequencies), (ii) downconvert the selected signal, (iii) rebandlimit (for example) to a narrower band of frequencies to select a signal frequency band, also called a channel in certain embodiments, (iv) demodulate the downconverted and bandlimited signal, (v) perform error correction, and (vi) demultiplex to select a desired stream of data packets. The RF section of various embodiments includes one or more elements that perform these functions, such as a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a downconverter, a demodulator, an error corrector, and a demultiplexer. The RF section may include a tuner that performs many of these functions, including, for example, downconverting a received signal to a lower frequency (e.g., an intermediate frequency or near baseband frequency) or to baseband.
[0134] In one embodiment of a set-top box, the RF section and associated input processing elements receive RF signals transmitted over a wired (e.g., cable) medium and perform frequency selection by filtering, down-converting, and filtering again to obtain the desired frequency band.
[0135] Various embodiments rearrange the order of the above-described (and other) elements, remove some of these elements, and / or add other elements that perform similar or different functions.
[0136] Adding elements may include inserting insert elements between existing elements, such as amplifiers and analog to digital converters. In various embodiments, the RF section includes an antenna.
[0137] Additionally, the USB and / or HDMI terminals may include respective interface processors for connecting the system 9000 to other electronic devices via USB and / or HDMI connections. It will be appreciated that various aspects of the input processing, such as Reed-Solomon error correction, may be implemented, for example, in a separate input processing IC or in the processor 9010, as desired. Similarly, aspects of the USB or HDMI interface processing may be implemented, for example, in a separate interface IC or in the processor 9010, as desired. The demodulated, error corrected, and demultiplexed stream is sent to various processing elements, such as the processor 9010, and an encoder / decoder 9030, which works in conjunction with memory and storage elements to process the data stream as desired for display on an output device.
[0138] The various components of the system 9000 may be provided within a unified housing, and the various components may be interconnected within the unified housing and may transmit data to one another using any suitable connection arrangement, such as internal buses, wiring, and printed circuit boards known in the art, including an I2C bus.
[0139] The system 9000 includes a communication interface 9050 that enables communication with other devices over a communication channel 9060. The communication interface 9050 includes, but is not limited to, a transceiver configured to transmit and receive data over the communication channel 9060. The communication interface 9050 may include, but is not limited to, a modem or a network card, and the communication channel 9060 may be implemented in a wired and / or wireless medium, for example.
[0140] Data is, in various embodiments, streamed to the system 9000 using a Wi-Fi network, such as IEEE 802.11. The Wi-Fi signal in these embodiments is received via a communication channel 9060 adapted for Wi-Fi communication and a communication interface 9050. The communication channel 9060 in these embodiments is typically connected to an access point or router that allows access to external networks, including the Internet, enabling streaming applications and other over-the-top communications.
[0141] Another embodiment provides streaming data to the system 9000 using a set-top box that delivers data via an HDMI connection in input block 9130.
[0142] Yet another embodiment provides streaming data to the system 9000 using an RF connection in input block 9130 .
[0143] The system 9000 can provide output signals to a variety of output devices, including a display 9100, speakers 9110, and other peripheral devices 9120, which in various example embodiments may include a stand-alone DVR, a disc player, a stereo system, a lighting system, or one or more other devices that provide functionality based on the output of the system 9000.
[0144] In various embodiments, control signals are passed between the system 9000 and the display 9100, speaker 9110, or other peripheral device 9120 using signaling such as AV.Link, CEC, or other communication protocols that allow control of devices with or without user intervention.
[0145] Output devices may be communicatively coupled to the system 9000 via dedicated connections through respective interfaces 9070, 9080, and 9090.
[0146] Alternatively, the output device may be connected to the system 9000 via a communication interface 9050 using a communication channel 9060. The display 9100 and the speaker 9110 may be integrated into a single unit with other elements of the system 9000 in an electronic device such as a television.
[0147] In various embodiments, the display interface 9070 includes a display driver, such as a timing controller (TCon) chip.
[0148] The display 9100 and speakers 9110 may alternatively be separate from one or more other elements, for example if the RF section of the input 9130 is part of a separate set-top box. In various embodiments in which the display 9100 and speakers 9110 are external elements, the output signal may be provided via a dedicated output connection including, for example, an HDMI port, a USB port, or a COMP output.
[0149] According to one example of this embodiment shown in Figure 10, during transmission between two remote devices A and B over a communications network NET, device A includes a processor associated with memory RAM and ROM configured to implement the method described in relation to Figures 1-3a or Figures 5-6, and device B includes a processor associated with memory RAM and ROM configured to implement the method described in relation to Figure 4 or Figures 7-8.
[0150] According to one example, the network is a broadcast network adapted to broadcast still or video images from device A to decoding devices including device B.
[0151] The signal intended to be transmitted by device A carries a bit stream BT.
[0152] The bitstream BT includes coding data representing depth values of points of a point cloud, at least one reconstructed point of the point cloud, and at least one interpolation coding mode indicating how at least one point in the vicinity of the at least one reconstructed point is approximated by at least one other interpolation point.
[0153] The encoded data is obtained, for example, as described in connection with figures 1 to 3a.
[0154] An example of the syntax of such a signal is shown in Fig. 11 when data is transmitted via a packet-based transmission protocol. Each transmitted packet P includes a header H and a payload PAYLOAD. For example, one bit of the header H is a dedicated bit representing an interpolated coding mode ICM. Thus, at least one bit of the header H is a dedicated bit representing at least one of the interpolated coding modes ICM.
[0155] The implementation of the spatially adaptive reconstruction mode in TMC2 is as follows: 1. Possibility of encoding a single depth and texture layer: Currently TMC2 always encodes two layers. Error! Source unknown. This is implemented by adding encoder / bitstream parameters at the GOP level to the signal: depth and number of texture layers (equal for both). 2. In single-layer mode, the use of an optimization framework to locally adapt the point reconstruction mode, called Point Local Reconstruction Mode (PLRM), to the features of the point cloud. The optimization is performed using a RDO-like approach in the encoder by adding required signaling to the bitstream so that the decoder knows which local reconstruction mode to use for each point. This is performed in a given region dimension (blocks at the occupancy map resolution, 16x16 pixels in the literature). The process is called the Point Local Reconstruction Framework (PLRF).
[0156] PLRM signaling requires a dedicated arithmetic encoder, which increases the complexity of the encoder and decoder.
[0157] At least one embodiment relates to a point local reconstruction mode PLRM, ie signaling data relating to at least one interpolation coding mode as image data.
[0158] Each predicted mode is coded into a block that patches metadata information that is coded into the auxiliary patch information (using an arithmetic encoder). The current implementation tries up to 10 different modes. Figure 12 shows the different modes decided on the encoder side and the distribution of their usage in the TMC2v3.0 software considering the rate and configuration (all intra modes, random access modes).
[0159] In implementation, data related to the PLRM is sent to the decoder using a metadata patching block and encoded by an arithmetic encoder.
[0160] The occupancy map (occupancy map precision B0xB0 blocks, i.e. 4x4 pixels) is coded as video (using HEVC). The occupancy map contains a binary map for each cell of the grid indicating whether it belongs to empty space or to a point cloud. The use of the occupancy map can be extended to the PLRF case to signal such information.
[0161] At least one of the embodiments relates to how the PLRM is encoded into an occupancy map, which is the most likely mode that can be used to encode such information into the current TMC2.
[0162] The main idea is to show how an occupancy map can be used to carry information about point local reconstruction modes. To date, occupancy maps contain "0" indicating that the corresponding 3D block (point cloud) is empty, or "1" indicating that the 3D block is fully occupied, as shown in Fig. 12. At least one embodiment obtains more values that indicate PLRM.
[0163] More specifically, at least one of the embodiments relates to the following method. For each block, the PLRM is set as follows with occupancy map precision (4*4): - If the block is empty, the block is set to 0. - If the block is occupied, the value assigned to the block corresponds to a point local reconstruction mode in the range [1...N], where N is the maximum number of point local reconstruction modes to apply. Note that the value "1" still indicates that the block is occupied, and no supplementary points are added to the reconstructed point cloud in this mode.
[0164] According to one implementation, since the point local reconstruction mode is occupancy map resolution (16*16), the information about each block at occupancy map precision (4*4) is repeated unless the block is unoccupied and is set to 0 in that case.
[0165] Figure 13a shows an example of how PLRM can be encoded into the occupancy map for the example of Figure 13. It shows the use of four modes: "1", "2", "5" and "7", where "0" means that the reconstructed block is empty.
[0166] Note that PLRM can be performed with occupied precision (4*4), in which case the coding information of PLRM can vary from block to block, as shown in Figure 13b, which increases the accuracy of the reconstruction process.
[0167] One variation of the PLRM coding is to assign multiple ranges of values to different types of reconstruction (PLRM and other reconstruction methods where applicable). - If the block is empty, it is set to 0 (for now). - If the block is occupied, reserve a first range [0;m] for allocating PLRM, and a second range [m;N] for allocating information describing alternative ways of group reconstruction.
[0168] Another variation of the implementation is to use a bitmask. - If the block is empty, it is set to 0 (for now). If the block is occupied, the N bits of the element are - PLRM is assigned to the first n bits, · Allocate (Nn) bits to indicate the other reconstruction mode It is used by:
[0169] As an example, out of a 10-bit coded element, 4 bits are used to code information "I" and the other 6 bits are used to code PLRM information.
[0170] [Table 3]
[0171] Another implementation variant is to use a hash map to determine the different PLRMs. A PLRM can be specified for each layer.
[0172] As an example, if PLRM0 is the reconstructed coding mode of layer 0, PLRM1 is the reconstructed coding mode of layer 1, and PLRM2 is the reconstructed coding mode of layer 2, then the occupancy map can be filled as follows: - If the block is empty, it is set to 0 (for now). - If the block is occupied, the hash table can be:
[0173] [Table 4]
[0174] Another variation may be to use the chroma component of the occupancy map to encode the PLRM information.
[0175] The main advantage is that it avoids encoding data into the auxiliary patch information and takes advantage of existing hardware video compression of the occupancy map.
[0176] The above follows the idea of using occupancy map information as a collector on how to reconstruct the point cloud.
[0177] Note that this is the most likely case as to how the point local reconstruction mode can be carried into TMC2.
[0178] Implementations of the various processes and features described herein can be realized in a variety of different equipment or applications. Examples of such equipment include encoders, decoders, post-processors that process the output from the decoders, pre-processors that provide input to the encoders, video coders, video decoders, video codecs, web servers, set-top boxes, laptops, personal computers, cell phones, PDAs, and any other image or video processing device or other communications device. As will become apparent, the equipment may be mobile and / or vehicle-based.
[0179] Moreover, the above-described methods may be performed by instructions executed by a processor, and such instructions (and / or data values resulting from execution) may be stored on a computer-readable storage medium. The computer-readable storage medium may take the form of a computer-readable program product having computer-readable program code embodied in one or more computer-readable media and executable by a computer. As used herein, a computer-readable storage medium is considered to be a non-transitory storage medium endowed with an inherent ability to store information as well as an inherent ability to retrieve information. The computer-readable storage medium may be, for example, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, device, or apparatus, or any suitable combination of the above. Below, more specific examples of computer-readable storage media to which the present embodiment can be applied, namely, a portable computer diskette, a hard disk, a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the above, are listed, but it should be understood that these are merely for illustrative purposes and are not exhaustive, as can be easily understood by those skilled in the art.
[0180] The instructions may form an application program tangibly embodied on a processor-readable medium.
[0181] Instructions may be, for example, hardware, firmware, software, or a combination thereof. Instructions may be found, for example, in an operating system, a separate application, or a combination of both. A processor may thus be characterized as, for example, a device configured to perform a process, and a device that includes a processor-readable medium (such as a storage device) having instructions for performing a process. Additionally, the processor-readable medium may store data values produced by execution, in addition to or in place of instructions.
[0182] As will be apparent to one skilled in the art, implementations can generate various types of signals formatted to carry, for example, information that can be stored or transmitted. The information can include, for example, instructions to perform a method or data generated by one of the implementations described above. For example, a signal can be formatted to carry, as data, rules for reading and writing syntax of an example described herein, or to carry, as data, the actual syntax value written by an example described herein. Such a signal can be formatted, for example, as an electromagnetic wave (e.g., using a radio frequency portion of the spectrum) or as a baseband signal. Formatting can include, for example, encoding a data stream and modulating a carrier wave with the encoded data stream. The information carried by the signal can be, for example, analog or digital information. The signal can be transmitted over a wide variety of different wired or wireless links, as is known. The signal can be stored on a processor-readable medium.
[0183] A number of implementations have been described. However, it should be understood that various modifications may be made. For example, other implementations may be made by combining, supplementing, modifying, or removing elements of different implementations. Additionally, those skilled in the art will understand that other structures and processes may be substituted for the disclosed structures and processes and that the resulting implementations will perform at least substantially the same function in at least substantially the same way to achieve at least substantially the same results as the disclosed implementations. Accordingly, these and other implementations are contemplated by this application.
Claims
1. 1. A method comprising: - obtaining one reconstructed 2D point from a first 2D point obtained by projecting one 3D point of one point cloud onto a projection plane; determining an interpolation coding mode based on a rate-distortion cost associated with at least one candidate interpolation coding mode, the at least one candidate interpolation coding mode providing for reconstructing at least one 2D interpolation point based on the reconstructed 2D points, defining a neighborhood around the reconstructed 2D points and a minimum depth value, the at least one 2D interpolation point approximating at least one other 2D point of the point cloud; and encoding said interpolation coding mode; The method includes:
2. The method of claim 1, wherein the interpolation coding mode is signaled for each block or patch of the point cloud.
3. 3. The method of claim 1, further comprising: assigning a depth value of the first 2D point to a pixel value of a first depth image; obtaining an encoded first depth image by encoding the first depth image; and obtaining a decoded first depth image by decoding the encoded first depth image, wherein the reconstructed 2D point is one pixel of the decoded first depth image.
4. A method according to any one of claims 1 to 3, wherein the rate-distortion cost associated with the at least one candidate interpolation coding code is based on a metric indicative of a spatial distance between the at least one 2D interpolation point defined in accordance with the candidate interpolation coding mode and the at least one other 2D point.
5. The method described in claim 4, wherein the rate-distortion cost associated with the at least one candidate interpolation encoding code is also based on a metric indicative of color distance between a plurality of colors of the at least one 2D interpolation point defined in accordance with the candidate interpolation encoding mode and a plurality of colors of the at least one other 2D point.
6. The method according to claim 4, wherein the metric takes into account, on the one hand, the spatial distance between at least one other 2D point and one of the at least one 2D interpolation points that is closest to the at least one other 2D point, and, on the other hand, the spatial distance between at least one 2D interpolation point and one of the at least one other 2D points that is closest to the at least one other 2D interpolation point.
7. 7. The method according to any one of claims 1 to 6, wherein at least one candidate interpolation coding mode provides for reconstructing at least one 2D interpolated point having an associated depth value ranging from a depth value of the reconstructed 2D point to a maximum depth value.
8. The method according to any one of claims 1 to 7, wherein a neighborhood around the first 2D point is an image region, and the at least one other 2D point belongs to the image region.
9. A method comprising: - reconstructing at least one first point of a cloud of points encoded in a bitstream; - decoding at least one interpolation coding mode from said bitstream, said interpolation coding mode defining a neighborhood around said at least one first point and a minimum depth value; and - reconstructing at least one 2D interpolated point of said point cloud based on said at least one first point and said interpolation coding mode; The method includes:
10. The method of claim 9, wherein the interpolation coding mode is signaled for each block or patch of the point cloud.
11. A method as claimed in claim 9 or 10, wherein a depth value associated with the at least one 2D interpolation point is in the range from a depth value of the at least one first point to a maximum depth value.
12. The method described in claim 11, wherein the depth value associated with the at least one 2D interpolation point is determined according to the minimum depth value and a maximum depth difference determined between the decoded depth of the at least one first point and the depth of at least one point in the neighborhood.
13. A method according to any one of claims 9 to 12, wherein the interpolation coding mode includes data representing many elements of the neighbourhood.
14. A method according to any one of claims 9 to 13, wherein at least two interpolation coding modes are determined by different values of the minimum depth value.
15. An apparatus comprising: - obtaining a reconstructed 2D point from a first 2D point obtained by projecting a 3D point of a point cloud onto a projection plane; determining an interpolation coding mode based on a rate-distortion cost associated with at least one candidate interpolation coding mode, the at least one candidate interpolation coding mode providing for reconstructing at least one 2D interpolation point based on the reconstructed 2D points, defining a neighborhood around the reconstructed 2D points and a minimum depth value, the at least one 2D interpolation point approximating at least one other 2D point of the point cloud; and encoding said interpolation coding mode; 23. An apparatus comprising at least one processor configured to execute.
16. The apparatus of claim 15, wherein the rate-distortion cost associated with the at least one candidate interpolation coding code is based on a metric indicative of a spatial distance between the at least one 2D interpolation point defined in accordance with the candidate interpolation coding mode and the at least one other 2D point.
17. The apparatus of claim 16, wherein the rate-distortion cost associated with the at least one candidate interpolation encoding code is also based on a metric indicative of a color distance between a plurality of colors of the at least one 2D interpolation point defined in accordance with the candidate interpolation encoding mode and a plurality of colors of the at least one other 2D point.
18. The apparatus of claim 16, wherein the metric takes into account, on the one hand, the spatial distance between at least one other 2D point and one of the at least one 2D interpolation points that is closest to the at least one other 2D point, and, on the other hand, the spatial distance between at least one 2D interpolation point and one of the at least one other 2D points that is closest to the at least one other 2D interpolation point.
19. An apparatus comprising: - reconstructing at least one first point of a cloud of points encoded in a bitstream; - decoding at least one interpolation coding mode from said bitstream, said interpolation coding mode defining a neighborhood around said at least one first point and a minimum depth value; and - reconstructing at least one 2D interpolated point of said point cloud based on said at least one first point and said interpolation coding mode; 23. An apparatus comprising at least one processor configured to execute.
20. The apparatus of claim 19, wherein a depth value associated with the at least one 2D interpolation point is in a range from a depth value of the at least one first point to a maximum depth value.
21. A non-transitory computer-readable medium, comprising: One or more processors, - obtaining one reconstructed 2D point from a first 2D point obtained by projecting one 3D point of one point cloud onto a projection plane; determining an interpolation coding mode based on a rate-distortion cost associated with at least one candidate interpolation coding mode, the at least one candidate interpolation coding mode providing for reconstructing at least one 2D interpolation point based on the reconstructed 2D points, defining a neighborhood around the reconstructed 2D points and a minimum depth value, the at least one 2D interpolation point approximating at least one other 2D point of the point cloud; and encoding said interpolation coding mode; A non-transitory computer-readable medium containing instructions for executing the method.
22. A non-transitory computer-readable medium, comprising: One or more processors - reconstructing at least one first point of a cloud of points encoded in a bitstream; - decoding at least one interpolation coding mode from said bitstream, said interpolation coding mode defining a neighborhood around said at least one first point and a minimum depth value; and - reconstructing at least one 2D interpolated point of said point cloud based on said at least one first point and said interpolation coding mode; A non-transitory computer-readable medium containing instructions for executing the method.
Citation Information
Patent Citations
JPP7438993B