A METHOD AND APPARATUS FOR ENCODING/DECODING THE GEOMETRY OF A POINT CLOUD REPRESENTING A 3D OBJECT
20200302653 · 2020-09-24
Inventors
- Sebastien LASSERRE (Thorigné Fouillard, FR)
- Julien Ricard (Cesson-Sevigne, FR)
- Celine Guede (Cesson-Sevigne, FR)
Cpc classification
G06T3/40
PHYSICS
H04N19/597
ELECTRICITY
International classification
H04N19/597
ELECTRICITY
G06T3/40
PHYSICS
Abstract
The present principles relates to a two-steps approach for encoding and decoding the geometry of a point cloud. In a first step, an octree-based structure is obtained by splitting recursively a cube encompassing the point cloud until the leaf cubes associated with the leaf nodes of said octree-based structure reach down an expected size. In a second step, for each leaf cube associated with the leaf nodes of said octree-based structure (IO), the approach determines if a local octree-based structure is associated (or not) with a leaf cube by using a Rate-Distortion Optimisation process that optimizes a trade-off between a bit-rate for encoding a candidate octree-based structure approximating the geometry of points of the point cloud which are included in said leaf cube of the octree-based structure, and a distortion that takes into account spatial distances between, on one hand, said points of the point cloud, and on the other hand, points included in leaf cubes associated with leaf nodes of the candidate octree-based structure.
Claims
1. A method comprising: determining if points of a point cloud included in a leaf cube associated with a leaf node of an octree-based structure representing the geometry of the point cloud are approximated by at least one candidate point of a candidate octree-based structure based on said points of the point cloud and said candidate points; encoding a first leaf node information data indicating if a candidate octree-based structure has been determined for approximating said points of the point cloud; and encoding said candidate octree-based structure based on an approximation of said points of the point cloud by at least one candidate point.
2. (canceled)
3. The method of claim 1, wherein encoding said candidate octree-based structure comprises: encoding an octree information data representative of said candidate octree-based structure; and encoding a second leaf node information data indicating if a leaf cube associated with a leaf node of said candidate octree-based structure includes a single candidate point located in its center.
4. The method of claim 1, further obtaining said octree-based structure by splitting recursively a cube encompassing the point cloud until the leaf cubes, associated with the leaf nodes of said octree-based structure, reach down an expected size.
5. The method of claim 1, further comprising encoding another octree information data representative of the octree-based structure.
6. The method of claim 1, wherein the method further comprises determining a function of a bit rate for encoding said candidate octree based structure and a distortion obtained from spatial distances between, on one hand, said points of the point cloud, and on the other hand, said candidate points together with points of an inverse-projected point cloud which are included in said leaf cube associated with a leaf node of said octree-based structure representing the geometry of a point cloud, said inverse-projected point cloud being obtained by inverse-projecting at least one depth image representative of at least one point of the point cloud.
7. The method of claim 6, wherein the distortion is also obtained from neighboring points which are included in at least one neighboring cube of said leaf cube associated with a leaf node of said octree-based structure representing the geometry of a point cloud, a neighboring point being either a point of said inverse-projected point cloud which is included in said at least one neighboring cube or a candidate point located in the center of a leaf cube associated with a leaf node of a candidate octree-based structure previously determined for one of said at least one neighboring cube.
8. The method of claim 1, wherein a candidate octree-based structure is obtained by pruning an initial octree-based structure at a given level.
9. A method comprising: obtaining a local octree-based structure for a leaf cube based on a first leaf node information data indicating that said local octree-based structure has been determined for approximating points of a point cloud included in a leaf cube associated with a leaf node of an octree-based structure representing the geometry of said point cloud; a single point being added in the center of a leaf cube associated with a leaf node of said local octree-based structure based on a second leaf node information data indicates that said leaf cube includes a single point.
10. The method of claim 9, further comprising: obtaining an octree-based structure from another octree information data; for at least one current leaf node of said octree-based structure, obtaining a local octree-based structure for a leaf cube from an octree information data based on a first leaf node information data indicating that a local octree-based structure has been determined for approximating points of a point cloud included in said leaf cube associated with said current leaf node; adding a single point in the center of said leaf cube based on a second leaf node information data indicating that a leaf cube associated with a leaf node of said local octree-based structure includes a single point.
11-15. (canceled)
16. An apparatus comprising one or more processors configured to: determining if points of a point cloud included in a leaf cube associated with a leaf node of an octree-based structure representing the geometry of the point cloud are approximated by at least one candidate point of a candidate octree-based structure based on said points of the point cloud and said candidate points; encoding a first leaf node information data indicating if a candidate octree-based structure has been determined for approximating said points of the point cloud; and encoding said candidate octree-based structure based on an approximation of based on said points of the point cloud by at least one candidate point.
17. The apparatus of claim 16, wherein encoding said candidate octree-based structure comprises: encoding an octree information data representative of said candidate octree-based structure; and encoding a second leaf node information data indicating if a leaf cube associated with a leaf node of said candidate octree-based structure includes a single candidate point located in its center.
18. The apparatus of claim 16, wherein said one or more processors is further configured to obtain said octree-based structure by splitting recursively a cube encompassing the point cloud until the leaf cubes, associated with the leaf nodes of said octree-based structure, reach down an expected size.
19. The apparatus of claim 16, further comprising an encoder for encoding another octree information data representative of the octree-based structure.
20. The apparatus of claim 16, further comprising determining a function of a bit rate for encoding said candidate octree based structure and a distortion obtained from spatial distances between, on one hand, said points of the point cloud, and on the other hand, said candidate points together with points of an inverse-projected point cloud which are included in said leaf cube associated with a leaf node of said octree-based structure representing the geometry of a point cloud, said inverse-projected point cloud being obtained by inverse-projecting at least one depth image representative of at least one point of the point cloud.
21. The apparatus of claim 20, wherein the distortion is also obtained from neighboring points which are included in at least one neighboring cube of said leaf cube associated with a leaf node of said octree-based structure representing the geometry of a point cloud, a neighboring point being either a point of said inverse-projected point cloud which is included in said at least one neighboring cube or a candidate point located in the center of a leaf cube associated with a leaf node of a candidate octree-based structure previously determined for one of said at least one neighboring cube.
22. The apparatus of claim 16, wherein a candidate octree-based structure is obtained by pruning an initial octree-based structure at a given level.
23. An apparatus comprising one or more processors configured to: obtaining a local octree-based structure for a leaf cube based on a first leaf node information data indicating that said local octree-based structure has been determined for approximating points of a point cloud included in a leaf cube associated with a leaf node of an octree-based structure representing the geometry of said point cloud; a single point being added in the center of a leaf cube associated with a leaf node of said local octree-based structure based on a second leaf node information data indicates that said leaf cube includes a single point.
24. The apparatus of claim 23, wherein said on or more processors is also configured to: obtaining an octree-based structure from another octree information data; for at least one current leaf node of said octree-based structure, obtaining a local octree-based structure for a leaf cube from an octree information data based on a first leaf node information data indicating that a local octree-based structure has been determined for approximating points of a point cloud included in said leaf cube associated with said current leaf node; adding a single point in the center of said leaf cube based on a second leaf node information data indicating that a leaf cube associated with a leaf node of said local octree-based structure includes a single point.
25. A non-transitory computer readable medium comprising instructions which, when executed by a computer, cause the computer to carry out the method comprising: determining if points of a point cloud included in a leaf cube associated with a leaf node of an octree-based structure representing the geometry of the point cloud are approximated by at least one candidate point of a candidate octree-based structure based on said points of the point cloud and said candidate points; encoding a first leaf node information data indicating if a candidate octree-based structure has been determined for approximating said points of the point cloud; and encoding said candidate octree-based structure based on an approximation of said points of the point cloud by at least one candidate point.
26. A computer program product comprising instructions which, when the program is executed by a computer, cause the computer to carry out the steps of a method comprising: determining if points of a point cloud included in a leaf cube associated with a leaf node of an octree-based structure representing the geometry of the point cloud are approximated by at least one candidate point of a candidate octree-based structure based on said points of the point cloud and said candidate points; encoding a first leaf node information data indicating if a candidate octree-based structure has been determined for approximating said points of the point cloud; and encoding said candidate octree-based structure based on an approximation of said points of the point cloud by at least one candidate point.
27. A non-transitory computer readable medium comprising instructions which, when executed by a computer, cause the computer to carry out the method comprising: obtaining a local octree-based structure for a leaf cube based on a first leaf node information data indicating that said local octree-based structure has been determined for approximating points of a point cloud included in a leaf cube associated with a leaf node of an octree-based structure representing the geometry of said point cloud; a single point being added in the center of a leaf cube associated with a leaf node of said local octree-based structure based on a second leaf node information data indicates that said leaf cube includes a single point.
28. A computer program product comprising instructions which, when the program is executed by a computer, cause the computer to carry out the steps of a method comprising: obtaining a local octree-based structure for a leaf cube based on a first leaf node information data indicating that said local octree-based structure has been determined for approximating points of a point cloud included in a leaf cube associated with a leaf node of an octree-based structure representing the geometry of said point cloud; a single point being added in the center of a leaf cube associated with a leaf node of said local octree-based structure based on a second leaf node information data indicates that said leaf cube includes a single point.
Description
BRIEF DESCRIPTION OF DRAWINGS
[0056] In the drawings, examples of the present principles are illustrated. It shows:
[0057]
[0058]
[0059]
[0060]
[0061]
[0062]
[0063]
[0064]
[0065]
[0066]
[0067]
[0068]
[0069]
[0070] Similar or same elements are referenced with the same reference numbers.
DESCRIPTION OF EXAMPLE OF THE PRESENT PRINCIPLES
[0071] The present principles will be described more fully hereinafter with reference to the accompanying figures, in which examples of the present principles are shown. The present principles may, however, be embodied in many alternate forms and should not be construed as limited to the examples set forth herein. Accordingly, while the present principles are susceptible to various modifications and alternative forms, specific examples thereof are shown by way of examples in the drawings and will herein be described in detail. It should be understood, however, that there is no intent to limit the present principles to the particular forms disclosed, but on the contrary, the disclosure is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present principles as defined by the claims.
[0072] The terminology used herein is for the purpose of describing particular examples only and is not intended to be limiting of the present principles. As used herein, the singular forms a, an and the are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms comprises, comprising, includes and/or including when used in this specification, specify the presence of stated 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. Moreover, when an element is referred to as being responsive or connected to another element, it can be directly responsive or connected to the other element, or intervening elements may be present. In contrast, when an element is referred to as being directly responsive or directly connected to other element, there are no intervening elements present. As used herein the term and/or includes any and all combinations of one or more of the associated listed items and may be abbreviated as /.
[0073] It will be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and, similarly, a second element could be termed a first element without departing from the teachings of the present principles.
[0074] Although some of the diagrams include arrows on communication paths to show a primary direction of communication, it is to be understood that communication may occur in the opposite direction to the depicted arrows.
[0075] Some examples are described with regard to block diagrams and operational flowcharts in which each block represents a circuit element, module, or portion of code which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that in other implementations, the function(s) noted in the blocks may occur out of the order noted. For example, two blocks shown in succession may, in fact, be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending on the functionality involved.
[0076] Reference herein to in accordance with an example or in an example means that a particular feature, structure, or characteristic described in connection with the example can be included in at least one implementation of the present principles. The appearances of the phrase in accordance with an example or in an example in various places in the specification are not necessarily all referring to the same example, nor are separate or alternative examples necessarily mutually exclusive of other examples.
[0077] Reference numerals appearing in the claims are by way of illustration only and shall have no limiting effect on the scope of the claims.
[0078] While not explicitly described, the present examples and variants may be employed in any combination or sub-combination.
[0079] The present principles are described for encoding/decoding a colored point cloud but extends to the encoding/decoding of a sequence of colored point clouds because each colored point cloud of the sequence is sequentially encoded/decoded as described below.
[0080] In the following, an image contains one or several arrays of samples (pixel values) in a specific image/video format which specifies all information relative to the pixel values of an image (or a video) and all information which may be used by a display and/or any other device to visualize and/or decode an image (or video) for example. An image comprises at least one component, in the shape of a first array of samples, usually a luma (or luminance) component, and, possibly, at least one other component, in the shape of at least one other array of samples, usually a color component. Or, equivalently, the same information may also be represented by a set of arrays of color samples, such as the traditional tri-chromatic RGB representation.
[0081] A pixel value is represented by a vector of nv values, where nv is the number of components. Each value of a vector is represented with a number of bits which defines a maximal dynamic range of the pixel values.
[0082] A depth image is an image whose pixel values depths of 3D points. Usually, a depth image is a grey levels image.
[0083] An octree-based structure comprises a root node, at least one leaf node and possibly intermediate nodes. A leaf node is a node of the octree-based cube which has no child. All other nodes have children. Each node of an octree-based structure is associated with a cube. Thus, an octree-based structure comprises a set {C.sub.j} of at least one cube C.sub.j associated with node(s).
[0084] A leaf cube is a cube associated with a leaf node of an octree-based structure.
[0085] In the example illustrated on
[0086] The sizes of the cubes of a same depth are usually the same but the present principles are not limited to this example. A specific process may also determine different numbers of sub-cubes per depth, when a cube is split, and/or multiple sizes of cubes of a same depth or according to their depths.
[0087] In the following, the term local octree-based structure determined for a cube refers to an octree-based structure determined in the 3D space delimited by the cube that encompasses a part of the point cloud to be encoded.
[0088] In the opposite, a global octree-based structure refers to an octree-based structure determined in a 3D space delimited by the cube that encompasses the point cloud to be encoded.
[0089]
[0090] In step 100, a module M1 determines an octree-based structure IO comprising at least one cube, by splitting recursively a cube encompassing the point cloud until the leaf cubes, associated with the leaf nodes of said octree-based structure IO, reach down an expected size.
[0091] The leaf cubes associated with the leaf nodes of the octree-based structure IO may then include or not points of the point cloud IPC. A leaf cube associated with a leaf node of the octree-based structure IO is named in the following a Largest Octree Unit (LOU.sub.k), k means an index referencing the Largest Octree Unit associated with a leaf node k of the octree-based structure IO.
[0092] In step 110, a module M2 encodes a first octree information data FOID representative of the octree-based structure IO.
[0093] In step 120, for each LOU.sub.k, a module M3 determines if a local octree-based structure O.sub.k is associated with a LOU.sub.k by optimizing a trade-off between a bit-rate R.sub.k,n for encoding a candidate octree-based structure O.sub.k,n approximating the geometry of points P.sub.k,or of the point cloud IPC which are included in said LOU.sub.k, and a distortion D.sub.k,n taking into account spatial distances between, on one hand, said points P.sub.k,or of the point cloud IPC, and on the other hand, points P.sub.k,n included in leaf cubes associated with leaf nodes of the candidate octree-based structure O.sub.k,n.
[0094] Mathematically speaking, the distortion D.sub.k,n is a metric given by:
D.sub.k,n=d(P.sub.k,n,P.sub.k,OR)+d(P.sub.k,OR,P.sub.k,n)
where d(A,B) is a metric that measures the spatial distance from a set of points A to a set of points B. This metric is not symmetric, this means that distance from A to B differs from the distance from B to A.
[0095] The distance d(P.sub.k,n, P.sub.k,OR) ensures that the points included in leaf cubes associated with leaf nodes of a candidate octree-based structure O.sub.k,n are not too far from the point cloud IPC, avoiding coding irrelevant points.
[0096] The distance d(P.sub.k,OR,P.sub.k,n) ensures that each point of the point cloud IPC is approximated by points not too far from them, i.e. ensures that all parts of the point cloud IPC are well approximated.
[0097] According to an embodiment, the distance d(A,B) is given by:
where the norm is the Euclidan distance and q.sub.closest(p,B) is the closest point of B from a point p of A defined as
[0098] According to the optimization process, it may be happen that a LOU.sub.k does not include any point of the point cloud IPC. In that case the LOU.sub.k is named a non-coded LOU.sub.k.
[0099] It may also happen that the optimization process determines that the points of the point cloud IPC which are included in the LOU.sub.k are not represented (coded) by any candidate octree-based structure O.sub.k,n. This is the case when the cost for coding those points is too high relatively to the cost associated with R.sub.k,n=0 and the distortion D.sub.k,n obtained between already coded points, from other already coded LOU.sub.k for example, and P.sub.k,OR.
[0100] In step 130, for each LOU.sub.k, a module M4 encodes a first leaf node information data FLID indicating if a local octree-based structure O.sub.k has been determined for said LOU.sub.k.
[0101] If a first leaf node information data FLID indicates that a local octree-based structure O.sub.k has been determined for a LOU.sub.k, in step 140 a module M5 encodes a second octree information data SOID representative of said determined local octree-based structure O.sub.k, and in step 150, a module M6 encodes a second leaf node information data SLID indicating if a leaf cube of said local octree-based structure O.sub.k includes a point representative of a part of the point cloud IPC.
[0102] The first octree information data FOID, the first leaf node information data FLID, the second octree information data SOID and the second leaf node information data SLID may be stored and/or transmitted in a bitstream F1.
[0103] According to an embodiment of step 110 and/or 140, illustrated on
[0104] According to an embodiment of step 120, the first leaf node information data FLID comprises a binary flag per leaf node which equal to 1 to indicate if a local octree-based structure O.sub.k has been determined for a LOU.sub.k and to 0 otherwise.
[0105] According to an optional variant, the module M2 also generates a maximum depth of the cube splitting.
[0106] This avoids signaling first octree information data for all cubes having the maximum depth.
[0107] According to an embodiment of step 150, the second leaf node information data SLID comprises a binary flag per leaf node which equal to 1 to indicate if a leaf cube of a local octree-based structure O.sub.k includes a point representative of a part of the point cloud IPC and to 0 otherwise.
[0108] According to an embodiment, the first octree information data FOID, the first leaf node information data FLID, the second octree information data SOID and/or the second leaf node information data SLID may be coded using an entropy coder like CABAC (a description of the CABAC is found in the specification of HEVC at http://www.itu.int/rec/T-REC-H.265-201612-I/en).
[0109] Entropy encoding the second octree information data SOID and/or the second leaf node information data SLID may be efficient in term of coding, because specific contexts may be used to code the binary flags per node because usually only a few nodes of an octree-based structure are split and the probability for the binary flags associated with neighboring nodes to have a same value is high.
[0110]
[0111] As discussed above, an octree-based structure IO comprising at least one LOU.sub.k is obtained, and a Rate Distortion optimization (RDO) process is used to determine a best local octree-based structure O.sub.k for at least one LOU.sub.k.
[0112] A single flag may then be encoded in the bitstream F1 to indicate if a LOU.sub.k includes or not a point of the point cloud IPC.
[0113] A RDO process that is performed on a LOU.sub.k may find a best local octree-based structure O.sub.k from N candidate octree-based structures O.sub.k,n (n[1; N]). The basic principle is to test successively each candidate octree-based structure O.sub.k,n and for each candidate octree-based structure O.sub.k,n to calculate a Lagrangian cost C.sub.k,n given by:
C.sub.k,n=D.sub.k,n+R.sub.k,n(1)
where R.sub.k,n and D.sub.k,n are respectively the bit-rate and distortion detailed above, and is a fixed Lagrange parameter that may be fixed for all the candidate octree-based structures O.sub.k,n.
[0114] The best local octree-based structure O.sub.k is then obtained by minimizing the Lagrangian cost C.sub.k,n:
[0115] High values for the Lagrangian parameter strongly penalize the bit-rate R.sub.k,n and lead to a low quality of approximation, while low values for the Lagrangian parameter allow easily high values for R.sub.k,n and lead to high quality of approximation. The range of values for lambda depends on the distortion metric, the size of the LOU.sub.k, and most importantly the distance between two adjacent points. Assuming that this distance is unity, typical values for lambda are in the range from a few hundreds, for very poor coding, to a tenth of unity for good coding. These values are indicative and may also depend on the content.
[0116] Determining a best local octree-based structure O.sub.k for a LOU.sub.k is now detailed in accordance with an embodiment of the present principles.
[0117] In step 300, the module M3 obtains a set of N candidate octree-based structures O.sub.k,n for the LOU.sub.k and obtains a set of points P.sub.k,n for each candidate octree-based structure O.sub.k,n. The points P.sub.k,n are points which are included in cubes associated with leaf nodes of a candidate octree-based structure O.sub.k,n.
[0118] In step 310, the module M3 obtains the bit-rate R.sub.k,n for encoding each candidate octree-based structure O.sub.k,n.
[0119] In step 320, the module M3 obtains points P.sub.k,or of the point cloud IPC which are included in the LOU.sub.k.
[0120] In step 330, the module M3 obtains a distortion D.sub.k,n for each candidate octree-based structure O.sub.k,n, each distortion D.sub.k,n takes into account the spatial distances between, on one hand, the points P.sub.k,OR, and on the other hand, the points P.sub.k,n.
[0121] In step 340, the module M3 calculates the Lagrangian cost C.sub.k,n according to equation (1) for each candidate octree-based structure O.sub.k,n.
[0122] In step 350, the module M3 obtains the best local octree-based structure O.sub.k according to equation (2) once all the candidate octree-based structures O.sub.k,n have been considered.
[0123] Note that as explained above, it may then consider that the best trade-off for a LOU.sub.k is to not code the points included in it. In that case, no local octree-based structure O.sub.k is determined for this LOU.sub.k.
[0124] According to an embodiment of step 300, a candidate octree-based structure O.sub.k,n comprises at least one leaf node and the leaf cube associated to a leaf node may (or not) include a single point.
[0125]
[0126] According to this example, the cube is split into 4 sub-cubes C1, C2 C3 and C4 (depth 1). The sub-cube C1 is associated with a leaf node and does not contain any point. The sub-cube C2 is recursively split into 4 sub-cubes (depth 2). The sub-cube C3 is also recursively split and the sub-cube C4 is not split but a point, located in the center of the cube for example, is associated with it, . . . , etc.
[0127] On the right part of
[0128] According to this example, a point is located in the center of a cube because it avoids any additional information about the spatial location of that point once the cube is identified in the octree-based structure. But the present principles are not limited to this example and may extend to any other spatial location of a point in a cube.
[0129] The present principles are not limited to the candidate octree-based structure illustrated on
[0130] According to an embodiment of the step 310, when the second octree information data SOID comprises a binary flag per node which equal to 1 to indicate that a cube associated with said node is split and to 0 otherwise (embodiment of step 140) and the second leaf node information data SLID comprises a binary flag per leaf node which equal to 1 to indicate if a leaf cube of a local octree-based structure O.sub.k includes a point representative of a part of the point cloud IPC and to 0 otherwise (embodiment of step 150), the bit-rate R.sub.k,n is the sum of the numbers of the binary flags comprised in the second octree information data SOID and the second leaf node information data SLID.
[0131] According to another variant, a first sequence of the binary flags comprised in the second octree information data SOID and a second sequence of binary flags comprised in the second leaf node information data SLID are formed and entropy-coded and the bit-rate R.sub.k,n is then obtained from the entropy-encoded versions of said first and second sequences.
[0132] According to an alternative to this embodiment of the step 310, the syntax used to encode a candidate octree-based structure O.sub.k,n may comprise an index of a table (Look-Up-Table) that identifies a candidate octree-based structure among a set of candidate octree-based structures determined beforehand, for example by an end-user. This table of candidate octree-based structures is known at the decoder.
[0133] According to an embodiment, a set of bits (one or more bytes) are used for encoding said index of a table.
[0134] The bit-rate R.sub.k,n is thus the bit-rate required for encoding said index.
[0135] According to a variant of steps 320 and 330, in step 320, the module M3 also obtains points P.sub.k,IP of an inverse-projected point cloud IPPC which are included in the LOU.sub.k. Said inverse-projected point cloud IPPC is obtained by inverse-projecting at least one depth images representative of a part of the point cloud IPC, as proposed, for example, in Image-Based Surface Compression, Tilo Ochotta & Dietmar Saupe, September 2008, in Computer Graphics Forum.
[0136] In step 330, the module M3 obtains a distortion D.sub.k,n that takes into account spatial distances between, on one hand, said points P.sub.k,or of the point cloud, and on the other hand, points P.sub.k,n included in leaf cubes associated with leaf nodes of the candidate octree-based structure O.sub.k,n together with the points P.sub.k,IP.
[0137] Mathematically speaking, the distortion D.sub.k,n is a metric given by:
D.sub.k,n=d(P.sub.k,nP.sub.k,IP,P.sub.k,OR)+d(P.sub.k,OR,P.sub.k,nP.sub.k,IP)
[0138] The distance d(P.sub.k,OR, P.sub.k,nP.sub.k,IP) ensures that each point of the point cloud IPC is approximated by points not too far from them, i.e. ensures that parts of the point cloud IPC which are not represented by the inverse-projected point cloud IPPC are well approximated.
[0139] According to a variant of the steps 320 and 330, in step 320, the module M3 obtains neighboring point P.sub.k,N.sub.EI which are either points of the inverse point cloud IPPC which are included in at least one neighboring Largest Coding Unit LOU.sub.k,NEI of the LOU.sub.k, or points included in leaf cubes associated with leaf nodes of local octree-based structures previously determined for said at least one neighboring Largest Coding Unit LOU.sub.k,NEI.
[0140] In step 330, the module M3 obtains a distortion that also takes into account the spatial distances between the points P.sub.k,or and the neighboring points P.sub.k,NEI.
[0141] Mathematically speaking, the distortion D.sub.k,n is a metric given by:
D=d(P.sub.k,nP.sub.k,IPP.sub.k,NEI,P.sub.k,OR)+d(P.sub.k,OR,P.sub.k,nP.sub.k,IPP.sub.k,NEI)
[0142] The distance d(P.sub.k,OR, P.sub.k,n P.sub.k,IP P.sub.k,NEI) ensures also that each point of the point cloud IPC is approximated by points not too far, including also neighboring points included in neighboring Largest Coding Units LOU.sub.k,NEI. It is advantageous because it avoids coding too finely points of the point cloud IPC, close to the edge of the neighboring Largest Coding Units LOU.sub.k,NEI that could be already well represented by points included in the neighboring Largest Coding Units LOU.sub.k,NEI. Consequently, this saves bit-rates by coding less points, and with a small impact on the distortion.
[0143] According to an embodiment of this variant, illustrated on
[0144]
[0145] According to this example, the points P.sub.k,N.sub.EI are the points included in four LOU.sub.k,1-4, i.e. points that are either included in cubes associated with leaf nodes of local octree-based structures associated with these four LOU.sub.k,1-4 (step 820) and/or points of the inverse-projected colored point cloud IPPC which are included in said LOU.sub.k,1-4.
[0146] According to an embodiment of the method, a candidate octree-based structure O.sub.k,n approximating the geometry of points (P.sub.k,or) of the point cloud which are included in a leaf cube LOU.sub.k is obtained by pruning an initial candidate octree-based structure O.sub.n at a given level le.
[0147]
[0148] In step 600, a module M7 obtains at least one octree-based structure O.sub.n from the points included in the LOU.sub.k.
[0149] An octree-based structure O.sub.n is an octree in which each parent node may comprise at most eight children nodes and in which a cube is associated with each of this node. A root node (depth 0) is the unique node without any parent node and each child node (depth greater than 0) has a single parent node.
[0150] An octree-based structure O.sub.n may be obtained by splitting recursively the LOU.sub.k. An octree-based structure comprises thus a set of at least one cube associated with nodes(s).
[0151] A stopping condition for recursive splitting may be checked when a maximum depth is reached or when the size of cube, associated with a node, is smaller than a threshold or when the number of points of the points included in the LOU.sub.k does not exceed a minimum number.
[0152] Changing at least one of those stopping condition may lead to multiple initial candidate octree-based structures O.sub.n. N is the number of initial candidate octree-based structures O.sub.n.
[0153] In step 610, a module M8 obtains at least one octree-based structure O.sub.n,test by pruning an initial candidate octree-based structure O.sub.n at a given level le initialized to 1.
[0154] Pruning an initial candidate octree-based structure O.sub.n at a level le means determining the I.sub.n (depending of n) nodes i at the level le which have children, selecting iteratively each node i and, for each node i, obtaining an octree-based structure O.sub.n,test from the initial candidate octree-based structure O.sub.n by erasing all children (and their potential descendants) of the node i from the octree-based structure O.sub.n.
[0155]
[0156] A black circle indicates that a node is split (has children). A binary flag is associated with each white circle (leaf node) to indicate if a cube associated with this leaf node includes (1) or not (0) at least one 3D point included in the LOU.sub.k.
[0157] On the left of these Figs. is shown an example of an octree-based structure before the pruning and on the right the octree-based structure after pruning. The pruning level is illustrated by a vertical line and a binary flag (=1) is assigned to the pruned node (designated by a horizontal arrow).
[0158] In step 620, a module M9 calculates a Lagrangian cost C.sub.n,test given by:
C.sub.n,test=D.sub.n,test+R.sub.n,test
where R.sub.n,test is a bit-rate for encoding the octree-based structure O.sub.n,test approximating the geometry of the points included in the LOU.sub.k, D.sub.n,test is the distortion taking into account spatial distances between the points included in the LOU.sub.k and the points P.sub.n,test, included in leaf cubes associated with leaf nodes of the octree-based structure O.sub.n,test and is a fixed Lagrange parameter that may be fixed for all the octree-based structures O.sub.n,test.
[0159] In step 630, a module M10 compares the Lagrangian cost C.sub.n,test to a Lagrangian cost C.sub.n associated to the octree-based structure O.sub.n. If the Lagrangian cost C.sub.n,test is smaller than the Lagrangian cost C.sub.n, then an optimal octree-based structure O.sub.n,opt is set to O.sub.n,test, otherwise it is set to O.sub.n.
[0160] The process is repeated iteratively on all nodes i and levels le by replacing the octree-based structure O.sub.n by the octree-based structure O.sub.n,opt in steps 610, 620 and 630. An optimal octree-based structure O.sub.n,opt is thus obtained for each initial candidate octree-based structure O.sub.n.
[0161] In step 640, for each initial candidate octree-based structure O.sub.n, a module M11 selects the candidate octree-based structure O.sub.k,n as being the optimal octree-based structure O.sub.n,opt obtained after all pruning. After a candidate octree-based structure O.sub.k,n has been obtained for all n, the candidate octree-based structure with the least Lagrangian cost is selected to become the optimized octree-based structure O.sub.k associated with the LOU.sub.k.
[0162]
[0163] In step 1000, a module M12 decodes, from the bitstream F1, the first octree information data FOID.
[0164] In step 1010, a module M13 obtains an octree-based structure IO from the first octree information data FOID.
[0165] In step 1000, a module M12 decodes, from the bitstream F1, a first leaf node information data FLID, and in step 1020, a module M14 determines if a LOU.sub.k associated with a leaf node of the octree-based structure IO is associated with a local octree-based structure O.sub.k from said first leaf node information data FLID.
[0166] If a first leaf node information data FLID indicates that a local octree-based structure O.sub.k has been associated with a LOU.sub.k, In step 1000, a module M12 decodes, from the bitstream F1, a second octree information data SOID and a second leaf node information data SLID, and in step 1030 a module M15 obtains a local octree-based structure O.sub.k for said LOU.sub.k from the second octree information data SOID, and in step 1040, a module M16 determines if a leaf cube of said local octree-based structure O.sub.k includes a point representative of a part of the point cloud IPC from the second leaf node information data SLID. In that case, a point is added to the leaf cube of said local octree-based structure Ok, preferably in its center.
[0167] The octree-based structure IO in which the LOU.sub.k are replaced by the local octree-based structure O.sub.k represent the geometry of the point cloud.
[0168] According to an embodiment, the first octree information data FOID, the first leaf node information data FLID, the second octree information data SOID and/or the second leaf node information data SLID may be obtained by entropy-decoding the bitstream F1. The entropy-decoding may be compliant with a CABAC-like coding.
[0169] The present principles have been described by considering leaf cubes LOU.sub.k associated with the leaf nodes of an octree-based structure IO.
[0170] According to an embodiment of the encoding and decoding methods, a cube C encompassing at least one point of the point cloud IPC is considered rather than a LOU.sub.k.
[0171] The point cloud IPC is then encoded as follows:
[0172] The steps 100 and 110 is cancelled.
[0173] In step 120, the module M3 determines if a local octree-based structure O.sub.k is associated with the encompassing cube C including at least one point of the point cloud IPC by optimizing a trade-off between a bit-rate R.sub.k,n for encoding a candidate octree-based structure O.sub.k,n approximating the geometry of points P.sub.k,or of the point cloud which are included in said an encompassing cube C, and a distortion D.sub.k,n taking into account spatial distances between, on one hand, said points P.sub.k,or of the point cloud which are included in said encompassing cube, and on the other hand, points P.sub.k,n included in leaf cubes associated with leaf nodes of the candidate octree-based structure O.sub.k,n.
[0174] In step 130, a first leaf node information data FLID indicating if a local octree-based structure O.sub.k has been determined for said encompassing cube C is encoded.
[0175] If said first leaf node information data FLID indicates that a local octree-based structure O.sub.k has been determined for said encompassing cube C, in step 140, an octree information data SOID representative of said determined local octree-based structure O.sub.k is encoded, and in step 150, a second leaf node information data SLID, indicating if a leaf cube of said local octree-based structure O.sub.k includes a point representative of a part of the point cloud, is encoded.
[0176] The point cloud IPC is then decoded as follows:
[0177] In step 1000, a first leaf node information data FLID, indicating if a local octree-based structure O.sub.k has been determined for an encompassing cube C including at least one point representing at least a part of the point cloud to be decoded, is decoded from a bitstream.
[0178] If said first leaf node information data FLID indicates that a local octree-based structure O.sub.k has been associated with said encompassing cube C, in step 1000, an octree information data SOID representative of said determined local octree-based structure O.sub.k and a second leaf node information data SLID indicating if a leaf cube of said local octree-based structure O.sub.k includes a point representative of a part of the point cloud, are decoded from a bitstream. In step 1030, a local octree-based structure O.sub.k is obtained for said lencompassing cube (C) from said octree information data SOID. In step 1040, one determines if a leaf cube of said local octree-based structure O.sub.k includes a point of the point cloud to be decoded from the second leaf node information data SLID, and in that case, adds a point to the leaf cube of said local octree-based structure O.sub.k.
[0179] On
[0180]
[0181] Device 1100 comprises following elements that are linked together by a data and address bus 1101: [0182] a microprocessor 1102 (or CPU), which is, for example, a DSP (or Digital Signal Processor); [0183] a ROM (or Read Only Memory) 1103; [0184] a RAM (or Random Access Memory) 1104; [0185] an I/O interface 1105 for reception of data to transmit, from an application; and [0186] a battery 1106.
[0187] In accordance with an example, the battery 1106 is external to the device. In each of mentioned memory, the word register used in the specification can correspond to area of small capacity (some bits) or to very large area (e.g. a whole program or large amount of received or decoded data). The ROM 1103 comprises at least a program and parameters. The ROM 1103 may store algorithms and instructions to perform techniques in accordance with present principles. When switched on, the CPU 1102 uploads the program in the RAM and executes the corresponding instructions.
[0188] RAM 1104 comprises, in a register, the program executed by the CPU 1102 and uploaded after switch on of the device 1100, input data in a register, intermediate data in different states of the method in a register, and other variables used for the execution of the method in a register.
[0189] The implementations described herein may be implemented in, for example, a method or a process, an apparatus, a software program, a data stream, or a signal. Even if only discussed in the context of a single form of implementation (for example, discussed only as a method or a device), the implementation of features discussed may also be implemented in other forms (for example a program). An apparatus may be implemented in, for example, appropriate hardware, software, and firmware. The methods may be implemented in, for example, an apparatus such as, for example, a processor, which refers to processing devices in general, including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices, such as, for example, computers, cell phones, portable/personal digital assistants (PDAs), and other devices that facilitate communication of information between end-users.
[0190] In accordance with an example of encoding or an encoder, the point cloud IPC is obtained from a source. For example, the source belongs to a set comprising: [0191] a local memory (1103 or 1104), e.g. a video memory or a RAM (or Random Access Memory), a flash memory, a ROM (or Read Only Memory), a hard disk; [0192] a storage interface (1105), e.g. an interface with a mass storage, a RAM, a flash memory, a ROM, an optical disc or a magnetic support; [0193] a communication interface (1105), e.g. a wireline interface (for example a bus interface, a wide area network interface, a local area network interface) or a wireless interface (such as a IEEE 802.11 interface or a Bluetooth interface); and [0194] an image capturing circuit (e.g. a sensor such as, for example, a CCD (or Charge-Coupled Device) or CMOS (or Complementary Metal-Oxide-Semiconductor)).
[0195] In accordance with an example of the decoding or a decoder, the decoded point cloud is sent to a destination; specifically, the destination belongs to a set comprising: [0196] a local memory (1103 or 1104), e.g. a video memory or a RAM, a flash memory, a hard disk; [0197] a storage interface (1105), e.g. an interface with a mass storage, a RAM, a flash memory, a ROM, an optical disc or a magnetic support; [0198] a communication interface (1105), e.g. a wireline interface (for example a bus interface (e.g. USB (or Universal Serial Bus)), a wide area network interface, a local area network interface, a HDMI (High Definition Multimedia Interface) interface) or a wireless interface (such as a IEEE 802.11 interface, WiFi or a Bluetooth interface); [0199] a rendering device; and [0200] a display.
[0201] In accordance with examples of encoding or encoder, the bitstream F1 is sent to a destination. As an example, the bitstream F1 is stored in a local or remote memory, e.g. a video memory (1104) or a RAM (1104), a hard disk (1103). In a variant, the bitstream F1 is sent to a storage interface (1105), e.g. an interface with a mass storage, a flash memory, ROM, an optical disc or a magnetic support and/or transmitted over a communication interface (1105), e.g. an interface to a point to point link, a communication bus, a point to multipoint link or a broadcast network.
[0202] In accordance with examples of decoding or decoder, the bitstream F1 is obtained from a source. Exemplarily, a bitstream is read from a local memory, e.g. a video memory (1104), a RAM (1104), a ROM (1103), a flash memory (1103) or a hard disk (1103). In a variant, the bitstream is received from a storage interface (1105), e.g. an interface with a mass storage, a RAM, a ROM, a flash memory, an optical disc or a magnetic support and/or received from a communication interface (1105), e.g. an interface to a point to point link, a bus, a point to multipoint link or a broadcast network.
[0203] In accordance with examples, device 1100 being configured to implement an encoding method described in relation with
[0215] In accordance with examples, device 1100 being configured to implement a decoding method described in relation with
[0229] According to an example of the present principles, illustrated in
[0230] In accordance with an example, the network is a broadcast network, adapted to broadcast encoded colored point clouds from device A to decoding devices including the device B.
[0231] A signal, intended to be transmitted by the device A, carries the bitstream F1.
[0232] This signal may thus carry the first octree information data FOID, the first leaf node information data FLID, the second octree information data SOID and/or the second leaf node information data SLID.
[0233]
[0234] According to embodiments, the payload PAYLOAD may comprise at least one of the following elements: [0235] the first octree information data FOID representative of the octree-based structure IO; [0236] the first leaf node information data FLID indicating if a local octree-based structure O.sub.k has been determined for a LOU.sub.k associated with a leaf node of the octree-based structure IO; [0237] the second octree information data SOID representative of a local octree-based structure O.sub.k; [0238] the second leaf node information data SLID indicating if a leaf cube of a local octree-based structure O.sub.k includes a point representative of a part of the point cloud IPC.
[0239] Implementations of the various processes and features described herein may be embodied in a variety of different equipment or applications. Examples of such equipment include an encoder, a decoder, a post-processor processing output from a decoder, a pre-processor providing input to an encoder, a video coder, a video decoder, a video codec, a web server, a set-top box, a laptop, a personal computer, a cell phone, a PDA, a HMD, smart glasses, and any other device for processing an image or a video or other communication devices. As should be clear, the equipment may be mobile and even installed in a mobile vehicle.
[0240] Additionally, the methods may be implemented by instructions being performed by a processor, and such instructions (and/or data values produced by an implementation) may be stored on a computer readable storage medium. A computer readable storage medium can take the form of a computer readable program product embodied in one or more computer readable medium(s) and having computer readable program code embodied thereon that is executable by a computer. A computer readable storage medium as used herein is considered a non-transitory storage medium given the inherent capability to store the information therein as well as the inherent capability to provide retrieval of the information therefrom. A computer readable storage medium can be, for example, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. It is to be appreciated that the following, while providing more specific examples of computer readable storage mediums to which the present principles can be applied, is merely an illustrative and not exhaustive listing as is readily appreciated by one of ordinary skill in the art: 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 disc read-only memory (CD-ROM); an optical storage device; a magnetic storage device; or any suitable combination of the foregoing.
[0241] The instructions may form an application program tangibly embodied on a processor-readable medium.
[0242] Instructions may be, for example, in hardware, firmware, software, or a combination. Instructions may be found in, for example, an operating system, a separate application, or a combination of the two. A processor may be characterized, therefore, as, for example, both a device configured to carry out a process and a device that includes a processor-readable medium (such as a storage device) having instructions for carrying out a process. Further, a processor-readable medium may store, in addition to or in lieu of instructions, data values produced by an implementation.
[0243] As will be evident to one of skill in the art, implementations may produce a variety of signals formatted to carry information that may be, for example, stored or transmitted. The information may include, for example, instructions for performing a method, or data produced by one of the described implementations. For example, a signal may be formatted to carry as data the rules for writing or reading the syntax of a described example of the present principles, or to carry as data the actual syntax-values written by a described example of the present principles. Such a signal may be formatted, for example, as an electromagnetic wave (for example, using a radio frequency portion of spectrum) or as a baseband signal. The formatting may include, for example, encoding a data stream and modulating a carrier with the encoded data stream. The information that the signal carries may be, for example, analog or digital information. The signal may be transmitted over a variety of different wired or wireless links, as is known. The signal may be stored on a processor-readable medium.
[0244] A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made. For example, elements of different implementations may be combined, supplemented, modified, or removed to produce other implementations. Additionally, one of ordinary skill will understand that other structures and processes may be substituted for those disclosed and the resulting implementations will perform at least substantially the same function(s), in at least substantially the same way(s), to achieve at least substantially the same result(s) as the implementations disclosed. Accordingly, these and other implementations are contemplated by this application.