Method for encoding depth values ​​of a set of 3D points once orthogonally projected onto at least one image region of a projection plane - Patents.com

JP7630675B2Active Publication Date: 2025-02-17INTERDIGITAL VC HOLDINGS INC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2024027374
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2018-04-11
Filing Date
2024-02-27
Publication Date
2025-02-17
Estimated Expiration
2039-04-09

Smart Images

  • Figure 0007630675000004
    Figure 0007630675000004
  • Figure 0007630675000005
    Figure 0007630675000005
  • Figure 0007630675000006
    Figure 0007630675000006
Patent Text Reader

Abstract

To provide a method, device and computer-readable medium for encoding and decoding a point cloud representing an external surface of a 3D object.SOLUTION: A method of encoding a projection mode associated with an image region of a first depth image comprises: a step 710 of determining if a projection mode indicates if an image region of a first depth image stores either the minimum or the maximum depth value of at least one orthogonally projected 3D point of a point cloud along the same projection direction; a step 720 of encoding the minimum and maximum depth values of the depth as a function of the projection mode, where the minimum depth values are encoded as first image data and information representative of the maximum depth values is encoded as second image data when the projection mode equals a first value, and where the maximum depth values are encoded as first image data and information representative of the minimum depth values is encoded as second image data when the projection mode equals a second value; and a step 730 of transmitting the encoded image region of the depth image and the projection mode.SELECTED DRAWING: Figure 7
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present principles relate generally to the coding and decoding of point clouds representing the exterior surfaces of 3D objects, and in particular, but not exclusively, to the encoding / decoding of depth images representing the geometry of such point clouds. [Background technology]

[0002] This section is intended to introduce the reader to various aspects of the art, which may be related to various aspects of the present disclosure that are described and / or claimed below. This 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 principles. As such, it should be understood that these statements are to be read in this light, and not as admissions of prior art.

[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 its position (X, Y, Z coordinates in 3D space) and sometimes by other associated attributes such as color, expressed for example in RGB or YUV color space, transparency, reflectance, or a two-component normal vector.

[0004] We usually 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 this colored point.

[0005] A point cloud can be static or dynamic, depending on whether the cloud evolves over time. In a dynamic point cloud, the number of points is not constant, but rather typically evolves over time. Thus, a dynamic point cloud is a time-ordered list of a set of points.

[0006] In practice, point clouds can be used for various purposes, such as cultural heritage and architecture, to scan objects such as statues or buildings in 3D to share the spatial configuration of the objects without having to send or visit them, and as a way to ensure that knowledge of the objects is preserved in case they are destroyed, for example a temple may be destroyed by an earthquake. Such point clouds are usually static, colored and huge.

[0007] Another use case is in topography and cartography, where 3D representations can be used to allow maps to be not limited to flat surfaces but include relief. Currently, Google Maps is a good example of a 3D map, but it uses meshes rather than point clouds. Still, point clouds can be a suitable data format for 3D maps, and such point clouds are usually static, colored, and large.

[0008] The automotive industry and autonomous vehicles are also areas where point clouds can be used. An autonomous vehicle should be able to "spy" on its environment to make appropriate driving decisions based on its immediate reality. Typical sensors like LIDAR generate dynamic point clouds that are used by decision engines. These point clouds are not intended for humans to see, are typically small, not necessarily colored, and are dynamic because they are captured at a high frequency. They may have other attributes, such as reflectivity, provided by Lidar, which is good information about the material of the sensed object and can be useful in decision making.

[0009] Virtual reality and immersive worlds have been a hot topic lately, with many predicting them as the future of 2D flat video. The basic idea is to have the viewer immerse themselves in the environment with everything around them, as opposed to standard television, where they can only see the virtual world in front of them. There are several stages of immersion, depending on the viewer's degree of freedom in the environment. Colored point clouds are good format candidates to deliver virtual reality (or VR) worlds. They can be static or dynamic, and are usually of average size, no more than a few million points at a time.

[0010] Point cloud compression is successful for storing / transmitting 3D objects for immersive worlds only if the size of the bitstream is small enough to allow practical storage / transmission to the end user.

[0011] It is important to be able to deliver dynamic point clouds to end users with a reasonable consumption of bitrate while maintaining an acceptable (or preferably very good) quality of experience. Efficient compression of these dynamic point clouds is a key point to make the immersive world delivery chain practical.

[0012] Image-based point cloud compression techniques are becoming increasingly popular due to their combination of compression efficiency and low complexity. They proceed in two main steps: first, project (orthogonally project) the point cloud, i.e., the 3D points, into a 2D image. At least one depth image, for example, 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, for example, represents the attributes associated with the 3D points of the point cloud, e.g., the texture / color information associated with those 3D points. Then, these techniques encode such depth and texture images using a conventional video encoder.

[0013] Image-based point cloud compression techniques achieve good compression performance by leveraging the capabilities of 2D video coders such as 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 point distribution follows a surface with many folds (concave / convex regions as in clothing) or does not follow the surface at all (like fur or hair). In these situations, image-based point cloud compression techniques suffer from low compression efficiency (many small projections are required, making 2D video compression less efficient) or low 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 this problem is to project multiple geometric and texture information onto the same spatial location (pixel) of an image, which means that for each 3D point in the point cloud, several depth and / or texture images may be generated.

[0016] This is the case, for example, for so-called Test Model Category 2 point cloud coders (TMC2), as defined in ISO / IEC JTC1 / SC29 / WG11 / N17248, Macau, China, October 2017, where the point cloud is orthogonally projected onto a projection plane. Then, for each coordinate of the projection plane, two depth values ​​are associated, one representing the depth value associated with the nearest point (minimum depth value) and one representing the depth value of the furthest point (maximum depth value). Then, a first depth image is generated from the minimum depth value (D0) and a second depth image is generated from the difference between the maximum depth value (D1) and the minimum depth value (D0) such that D1-D0<=SurfaceThickness, where SurfaceThickness is the maximum surface thickness, e.g. equal to 4.

[0017] The metadata associated with the depth image is then encoded and decoded. The geometry of the point cloud is then reconstructed from the decoded depth image. A color / texture is then assigned to each point of the reconstructed point cloud, and a texture image (here two) is generated from the assigned color / texture. The two texture images are then encoded. Summary of the Invention

[0018] The following presents a simplified summary of the present principles in order to provide a basic understanding of some aspects of the present principles. This summary is not an exhaustive summary of the present principles. It is not intended to identify key or critical elements of the present principles. The following summary is merely intended to present some aspects of the present principles in a simplified form as a prelude to the more detailed description provided below.

[0019] According to a general aspect of at least one embodiment, a method is provided that includes encoding a projection mode associated with an image region of a first depth image, the projection mode indicating whether the image region stores either a minimum or maximum depth value of at least one orthogonally projected 3D point of the point cloud along a same projection direction, and encoding the minimum and maximum depth values ​​as a function of the projection mode.

[0020] According to one embodiment, encoding the minimum and maximum depth values ​​as a function of the projection mode includes encoding the minimum depth value as the first image data and encoding information representative of the maximum depth value as the second image data when the projection mode is equal to a first value, and encoding the maximum depth value as the first image data and encoding information representative of the minimum depth value as the second image data when the projection mode is equal to a second value.

[0021] According to one embodiment, the information representative of either the minimum or maximum depth value is the absolute difference between the maximum and minimum depth values.

[0022] According to one embodiment, the method further comprises transmitting the encoded image region and signaling the projection mode.

[0023] According to one embodiment, the projection mode is signaled at the point cloud level to indicate whether the projection mode can change.

[0024] According to one embodiment, if the projection mode is signaled at the point cloud level as changing, the projection mode is signaled at the patch level.

[0025] According to another general aspect of at least one embodiment, a method is provided that includes obtaining a projection mode indicating whether an image region of a first depth image stores either a minimum depth value or a maximum depth value of at least one orthogonally projected 3D point of the point cloud along a same projection direction, and decoding the minimum and maximum depth values ​​as a function of the projection mode.

[0026] According to one embodiment, decoding the minimum and maximum depth values ​​as a function of the projection mode includes decoding the minimum depth value as first image data and decoding information representing the maximum depth value as second image data when the projection mode is equal to a first value, and decoding the maximum depth value as the first image data and decoding information representing the minimum depth value as the second image data when the projection mode is equal to the second value.

[0027] According to one embodiment, the information representative of either the minimum or maximum depth value is the absolute difference between the maximum and minimum depth values.

[0028] According to one embodiment, the projection mode is from the bitstream.

[0029] One or more of at least one embodiment also provide a device, a computer program product, a non-transitory computer readable medium, and a signal.

[0030] The particular nature of the present principles, as well as other objects, advantages, features and uses of the present principles, will become apparent from the following description of examples taken in conjunction with the accompanying drawings. [Brief description of the drawings]

[0031] The drawings illustrate some example embodiments.

[0032] [Figure 1] 1 illustrates a schematic block diagram of an example image-based point cloud encoding structure. [Diagram 2] 2 illustrates a geometry compression portion of the encoder of FIG. 1; [Diagram 3] A first example is shown where the point cloud is divided into four CCs. [Figure 4] A second example is shown where the point cloud is divided into four CCs. [Diagram 5] 5 illustrates the results of a method according to at least one embodiment when applied to the first and second examples of FIGS. 3 and 4. FIG. [Figure 6]5 illustrates the results of a method according to at least one embodiment when applied to the first and second examples of FIGS. 3 and 4. FIG. [Figure 7] FIG. 2 shows a block diagram of method steps for encoding depth values ​​of a point cloud according to at least one embodiment. [Figure 8] FIG. 2 shows a block diagram of method steps for decoding a depth value of at least one 3D point of a point cloud according to at least one embodiment. [Figure 9] 1 illustrates an example architecture of a device that may be configured to implement the methods described in connection with FIGS. 1-8. [Figure 10] 1 illustrates a schematic diagram of a transmission system between device A and device B, according to at least one example embodiment.

[0033] Similar or identical elements are referred to with the same reference numbers.

[0034] Description of an example of the present principles The present principles are described more fully below with reference to the accompanying drawings, in which examples of the present principles are shown. However, the present principles may be embodied in many alternative forms and should not be construed as being limited to the examples set forth herein. Thus, while the present principles are susceptible to various modifications and alternative forms, specific examples thereof are shown by way of example in the drawings and described in detail herein. However, there is no intention to limit the present principles to the particular forms disclosed, but rather, it should be understood that the present disclosure covers all modifications, equivalents, and alternatives falling within the spirit and scope of the present principles as defined in the claims.

[0035] The terminology used herein is for the purpose of describing particular examples only and is not intended to limit the invention. As used herein, the singular forms "a," "an," and "the" are intended to include the plural unless the context clearly indicates otherwise. It will be further understood that the terms "comprises," "comprising," "including," and / or "comprising" as used herein 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. Furthermore, when an element is referred to as "responsive to" or "connected" to another element, it may be directly responsive or connected to the other element, or intervening elements may be present. In contrast, when an element is referred to as "directly responsive to" or "directly connected" to another element, there are no intervening elements. As used herein, the term "and / or" includes any and all combinations of one or more of the associated listed items and can be abbreviated as " / ".

[0036] In this specification, terms such as first, second, etc. may be used to describe various elements, but it is understood that these elements should not be limited by these terms. These terms are used only to distinguish one element from another element. For example, a first element can be called a second element, and similarly, a second element can be called a first element, without departing from the teachings of the present principles.

[0037] Some diagrams include arrows on communication paths to indicate a primary direction of communication, however, it should be understood that communication may occur in a direction opposite to that depicted arrow.

[0038] Some examples are described with reference to block diagrams and operational flow charts, with each block representing a circuit element, module, or portion of code that includes one or more executable instructions for implementing a specified logical function(s). It should also be noted that in other implementations, the function(s) noted in the blocks may occur in a different order than that noted. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may sometimes be executed in the reverse order, depending on the functionality involved.

[0039] References herein to "by one example" or "in one example" 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 principles. The appearances of the phrases "by one example" or "in one example" in various places in the specification do not necessarily all refer to the same example, nor do separate or alternative examples necessarily mutually exclusive of other examples.

[0040] Reference numerals appearing in the claims are by way of illustration only and shall have no limiting effect on the scope of the claims.

[0041] Although not explicitly described, the present examples and variations may be used in any combination or subcombination.

[0042] Although the principles are described for encoding / decoding the geometry of a point cloud from two depth images, they also extend to encoding / decoding a sequence of point clouds (temporally dynamic point clouds) as the geometry of a sequence of point clouds is encoded / decoded by / from two sequences of depth images (videos) and the two depth images associated with a point cloud are coded independently of the two depth images of another point cloud in the sequence.

[0043] In the following, the term "image region" refers to a set of pixels of an image that may or may not be contiguous, but all share at least one common property.

[0044] For example, the image itself may be considered to be an image region. The image may also be divided into blocks, in which case the blocks are image regions.

[0045] Image regions may also have non-rectangular shapes, for example when pixels of an image having the same (or similar) extracted features are associated to form an image region.

[0046] Examples of features extracted from an image may be color, texture, normal vectors, etc.

[0047] Figure 1 shows an overview of the TMC2 point cloud encoder. The top row (geometry compression) uses a depth image to encode the geometric information of the point cloud. The middle row (metadata compression) encodes the metadata needed to reconstruct the original point cloud geometry from the depth image. The bottom row (texture compression) encodes the color (texture) information of the reconstructed geometry using a color (texture) image.

[0048] Let us take a closer look at the geometry compression part shown in Figure 2. First, the input point cloud (PC) is segmented into connected components (CC), where each CC is a set of adjacent 3D points with similar normals. Each CC is projected onto one of the three principal planes XY, XZ, or YZ, and we select a normal that is close to the average normal of the 3D points in the CC. The projection of the geometric information consists in projecting the distance (depth) from each 3D point to the projection plane onto the projection plane. For example, a 3D point p=(x,y,z) projected from a CC onto the XY plane becomes the z value projected onto the (x,y) pixel in the XY plane. Depending on the distribution of 3D points in the CC, two or more values ​​may be projected onto the same coordinates of the projection plane. A naive approach would simply keep the value corresponding to the closest point (i.e., the minimum depth value), but this may not be able to capture more complex 3D point distributions (such as folds in clothing). As shown in Figure 2, the TMC2 test model maintains two values ​​for each projection plane coordinate: a minimum (depth0) and a maximum (depth1) depth. By doing this, it better captures the distribution of points in 3D space at the expense of increasing the amount of projection data that is encoded.

[0049] Projecting a CC results in a patch that is a 2D image of the projected data. There are as many patches per CC as there are values ​​projected onto each coordinate of the projection plane. In TMC2 there are two depth patches, one for the minimum depth and one for the maximum depth. The patches that store the minimum and maximum depth values ​​are encoded as image data. Therefore, in TMC2 two depth images are needed: one to store information representing the minimum depth value and one to store information representing the maximum depth value.

[0050] Using multiple depth images per input point cloud (1) may still not adequately capture the geometry of the point cloud, and (2) increases the overall bitrate and reduces compression efficiency.

[0051] Figure 3 shows a first example where a point cloud is divided into four CCs (points are represented by grey squares and hashed squares at different levels). We focus on the CC represented by the hashed squares. The points of this CC are projected onto a vertical "plane" (in this example, a 2D point cloud projected onto 1D), so that some positions on the projection plane have more than one value (in this example, from 0 to 7).

[0052] As explained above, in TMC2, two depth values ​​are stored for each pixel of one projected image. The two depth values ​​correspond to the minimum and maximum depth values ​​of the projected point, and have a difference value less than or equal to the threshold "surfaceThickness". In the example of Fig. 3, the parameter is equal to 4. This particular value provides the TMC2 point cloud video codec with good rate-distortion efficiency, but is provided here only as a non-limiting example.

[0053] In this first example, a few points of the CC (hashed squares) are cut off from the main surface of the CC. The distance between the minimum and maximum depth values ​​is smaller than the "surfaceThickness", so the reconstructed CC (reconstructed patch) after backprojection is perfect without missing points. However, note that the patch that stored the minimum depth value does not follow the main outer surface of the CC and is very noisy, as shown in Figure 3. This introduces high frequencies into the signal, making this uneven patch more difficult and less efficient to HEVC encode. This increases the bitrate associated with the first depth image and reduces the accuracy of the geometry reconstruction.

[0054] Furthermore, a texture image may also be associated with the first depth image. In this example, consider a uniform color (e.g., value 240) on the main surface of the CC and another color (e.g., value 16) for points away from the main surface. This color distribution is typical in point clouds and results in texture patches associated with the smallest depth values ​​that are noisy due to the presence of high frequencies and difficult to encode in HEVC.

[0055] Figure 4 shows a second example where the point cloud is divided into four CCs (points are represented by grey squares and hashed squares at different levels). This second example is similar to the first example where the point cloud is also divided into four CCs. The difference with the first example is that the distance between the minimum and maximum depth values ​​is greater than the "surfaceThickness" parameter (dotted squares). Therefore, the maximum depth value is not preserved, so the quality of the reconstructed CCs after backprojection is poor and there are many missing points. The fact that most of the missing points belong to the 3D main surface exacerbates the reconstruction problem (both in objective metrics and visual quality). As in the first example, the patches are not uniform and are very noisy. It introduces high frequencies into the signal, making HEVC encoding very difficult and less efficient. This increases the bitrate associated with the first depth image and reduces the accuracy of the reconstruction of the geometry.

[0056] Furthermore, a texture image may also be associated with the first depth image. In this example, consider a uniform color (e.g., value 240) on the main surface of the CC and another color (e.g., value 16) for points away from the main surface. This color distribution is typical in point clouds and results in texture patches associated with the smallest depth values ​​that are very noisy due to the presence of high frequencies and difficult to encode in HEVC.

[0057] According to a general aspect of at least one embodiment, a method is provided for determining whether to store a minimum or maximum depth value in a first depth image and whether to store information representing the maximum or minimum value in a second depth image, typically for an image region corresponding to a projection of a patch onto a projection surface.

[0058] For point cloud compression, the TMC2 codec attempts to optimize the projection of each connected component by selecting from three possible projection directions. At least one of the embodiments allows for further optimization of the projection of each connected component by providing two different projection modes for each projection direction, which allows for better tailoring of the projection to the properties of the connected component.

[0059] Deciding whether the minimum or maximum depth value is stored in the first depth image (instead of always storing the minimum depth value) improves the performance of HEVC encoding, and therefore the performance of the TMC2v0 codec as a whole. Furthermore, storing the maximum depth value reduces the number of missing points, making the remaining missing points less likely to belong to the 3D main surface (see Figure 7). This improves objective quality metrics (both geometry and texture) and significantly improves the visual quality of the reconstructed point cloud video.

[0060] 5 and 6 show the results of a method according to at least one embodiment when applied to the first and second examples of FIGS. 3 and 4. FIG.

[0061] In these examples, the projection of the connected component CC stores the minimum depth value of the first depth image, denoted D0 (on the left side) or the maximum depth value of the first depth image D0 (on the right side).

[0062] As shown, if we decide to store the maximum depth value in the first depth image D0 for a connected component CC, the result is clearly more uniform than storing the minimum depth, improving the performance of HEVC encoding (high frequencies are removed).

[0063] FIG. 7 shows a block diagram of method steps for encoding depth values ​​of a point cloud according to at least one embodiment.

[0064] In step 710, the module determines whether the projection mode indicates whether the image region of the first depth image stores either a minimum depth value or a maximum depth value of at least one orthogonally projected 3D point of the point cloud along the same projection direction.

[0065] In step 720, the module encodes minimum and maximum depth values ​​as a function of the projection mode.

[0066] According to one embodiment of step 720, the module encodes minimum and maximum depth values ​​as a function of the projection mode, and includes encoding the minimum depth value as the first image data and encoding information representing the maximum depth value as the second image data when the projection mode is equal to a first value, and encoding the maximum depth value as the first image data and encoding information representing the minimum depth value as the second image data when the projection mode is equal to the second value.

[0067] According to one embodiment, the information representative of either the minimum or maximum depth value is the absolute difference between the maximum and minimum depth values.

[0068] According to one embodiment, in step 730, the module transmits the encoded image regions and projection modes of the first and possibly second depth images.

[0069] According to one embodiment of step 730, the projection mode is signaled at the point cloud level to indicate whether the projection mode can change.

[0070] According to one embodiment of step 730, if the projection mode is signaled at the point cloud level as varying, then the projection mode is signaled at the patch level.

[0071] Therefore, even if the projection mode is only one bit per patch, it is not optimal to code it for all patches when its value is constant (i.e., the same for all patches) and signal it at a higher level if the projection mode does not change or reduce the bitrate.

[0072] When applied to TMC2, one of the embodiments may be used to project 3D points (from 3D space) onto pixels of a 2D image. In other words, an implementation of one of the embodiments may project connected components (3D) onto patches (2D) as follows:

[0073] For a connected component CC, the module selects a projection direction (X, Y, or Z axis) and sets these parameters normalAxis, tangentAxis, and bitangentAxis according to the selected projection direction, where normalAxis, tangentAxis, and bitangentAxis refer to the shifts applied to the reconstructed patch points along the normal, tangent, and bitangent axes of the patch, respectively.

[0074] In step 710, the projection mode ProjectionMode is determined.

[0075] In step 720, a first depth image is initialized by: p.d0=invalid, Here, p.d0 means the depth value of pixel p in the first depth image, and “invalid” indicates the initial value.

[0076] Then, for each point p in the current connected component CC, we perform a projection onto the current point p as follows: D1=dpdu_3d_shift_normal_axis[frmIdx][patchIndex] U1=dpdu_3d_shift_tangent_axis[frmIdx][patchIndex] V1=dpdu_3d_shift_bitangent_axis[frmIdx][patchIndex] Here, dpdu_3d_shift_tangent_axis[frmIdx][p] specifies the difference between the shift applied to the reconstructed patch point along the tangent axis of the patch with index p in patch frame frmIdx and the shift applied to the reconstructed patch point along the tangent axis of the patch with index PredIdx in patch frame RefIdx. The value of dpdu_3d_shift_tangent_axis[frmIdx][p] should be inclusive (-2 gps_geometry_3d_coordinates_bitdepth_minus1+1 +1) to (2 gps_geometry_3d_coordinates_bitdepth_minus1+1-1), and dpdu_3d_shift_bitangent_axis[frmIdx][p] specifies the difference between the shift applied to the reconstructed patch point along the bitangent axis of the patch with index p in patch frame frmIdx and the shift applied to the reconstructed patch point along the bitangent axis of the patch with index PredIdx in patch frame RefIdx. The value of dpdu_3d_shift_bitangent_axis[frmIdx][p] shall be within the range of (-2 inclusive). gps_geometry_3d_coordinates_bitdepth_minus1+1 +1) to (2 gps_geometry_3d_coordinates_bitdepth_minus1+1 -1), and dpdu_3d_shift_normal_axis[frmIdx][p] specifies the difference between the shift applied to the reconstructed patch point along the normal axis of the patch with index p in patch frame frmIdx and the shift applied to the reconstructed patch point along the normal axis of the patch with index PredIdx in patch frame RefIdx. The value of dpdu_3d_shift_normal_axis[frmIdx][p] shall be within the range of (-2 inclusive). gps_geometry_3d_coordinates_bitdepth_minus1+1 +1) to (2 gps_geometry_3d_coordinates_bitdepth_minus1+1 -1).

[0077] According to an embodiment of step 720, if the projection mode ProjectionMode==0 (first value), store the minimum depth value of the current point p in the first depth image, i.e. p.d0[u,v]=min(d,p.d0[u,v]).

[0078] Next, if the projection mode ProjectionMode==1 (second value), the maximum depth value of the current point p is stored in the first depth image. That is, P.d0[u,v]=max(d,p.d0[u,v]).

[0079] Next, a second depth image is initialized. p.d1=p.d0, Here, p.d1 means the depth value of pixel p in the second depth image.

[0080] Then, for each point p in the current connected component CC, we perform a projection onto the current point p as follows: d=point[p.normalAxis]-p.D1 u=point[p.tangentAxis]-p.U1 v = point[p.bitangentAxis]-p.V1 If the projection mode ProjectionMode == 0 (first value) and the current pixel is valid, then if ((((dp.d0[u,v]) <= surfaceThickness) and (d > p.d1[u,v])), p.d1[u,v]=d, If the projection mode ProjectionMode==1 (the second value) and the current pixel is valid, then (((p.d0[u,v]-d) <= surfaceThickness) and (d <p.d1[u,v]))ならば、 p.d1[u,v]=d.

[0081] The result of at least one implementation of an embodiment may be the generation of two depth images.

[0082] In TMC2, the depth values ​​of the first depth image are directly coded, but the depth values ​​in the second depth image may be coded as a delta with respect to D0, i.e. delta_depth=d1-d0.

[0083] According to at least one embodiment, the delta_depth used to encode the depth values ​​in the second depth image d1 may be calculated as follows: delta_depth=abs(d1-d0), Here, "abs" indicates the absolute value.

[0084] FIG. 8 shows a block diagram of method steps for decoding a depth value of at least one 3D point of a point cloud according to at least one embodiment.

[0085] In step 810, the module obtains a projection mode indicating whether the image region of the first depth image stores either a minimum depth value or a maximum depth value of at least one orthogonally projected 3D point of the point cloud along the same projection direction.

[0086] The minimum and maximum depth values ​​are determined from the projection plane. Thus, when the first and second projection planes are parallel, the minimum and maximum depth values ​​determined from the first projection plane are equal to the maximum and minimum depth values ​​determined from the second projection plane. In other words, the terms minimum and maximum depth values ​​are relative terms defined from the projection plane.

[0087] In step 820, the module decodes minimum and maximum depth values ​​as a function of the projection mode.

[0088] According to an embodiment of step 820, the module includes decoding minimum and maximum depth values ​​as a function of the projection mode, decoding the minimum depth value as first image data and decoding information representing the maximum depth value as second image data when the projection mode is equal to a first value, and decoding the maximum depth value as the first image data and decoding information representing the minimum depth value as the second image data when the projection mode is equal to the second value.

[0089] According to one embodiment, the information representative of either the minimum or maximum depth value is the absolute difference between the maximum and minimum depth values.

[0090] According to one embodiment, in step 830, the module derives the projection mode from the bitstream.

[0091] When applied to TMC2, one of the embodiments may be used to derive a depth value of at least one 3D point from the first and second depth images (to reconstruct the geometry of the at least one 3D point) taking into account at least one projection mode. In other words, an implementation of one of the embodiments may reconstruct a connected component corresponding to patch p as follows:

[0092] For each pixel (u,v) of patch p, where d0(u,v) is a pixel of the first depth image, the module computes a 3D point P0 from the first depth image as follows: P0[p.normalAxis]=p.D1+d0(x,y) P0[p.tangentAxis]=p.U1+u P0[p.bitangentAxis]=p.V1+v

[0093] The module then calculates a 3D point P1 from the first and second depth images. sign=p.ProjectionMode==0?1:-1; d1=d0(x,y)+sign*min(max(0,delta_depth(x,y)),surfaceThickness) P1[p.normalAxis]=p.D1+d1 P1[p.tangentAxis]=p.U1+u P1[p.bitangentAxis]=p.V1+v Here, p.ProjectionMode indicates the projection mode associated with the patch.

[0094] According to the embodiment of steps 730 and 830, the projection mode (ProjectionMode parameter) used to project / reconstruct the connected components may be known (along with other parameters) in order to perform the backprojection. In the case of point cloud compression, this means that the projection mode is either known a priori by the encoder and decoder or may be transmitted from the encoder to the decoder in the bitstream.

[0095] According to an embodiment of steps 730 and 830, the projection mode is signaled at the patch level according to the syntax of the syntax element ReadPatchMetadata( ) function, the syntax of which is provided in Table 1. [Table 1]

[0096] According to an embodiment of steps 730 and 830, if the projection mode is signaled at the point cloud level as changing, then the projection mode is signaled at the patch level.

[0097] For example, a first syntax element ProjectionModeGlobal is signaled. That first syntax element, defined once per point cloud, indicates whether the projection mode (per patch) is "variable" (0), "always minimum" (1), or "always maximum" (2). When the first syntax element indicates that the projection is variable, a second syntax element ProjectionMode, defined per patch, is also signaled.

[0098] For example, TMC2 adds a first syntax element to the point cloud metadata known as ReadOccupancyMap. Entropy coding can be optionally used for ProjectionModeGlobal instead of a fixed-length binary value.

[0099] A possible syntax for the first syntax element, the ReadOccupancyMap() function, is provided in Table 2. [Table 2]

[0100] The syntax of the second syntax element, ReadPatchMetadata() function, can be provided in Table 3. [Table 3]

[0101] According to an embodiment of step 710, a projection mode indicating whether the image region of the first depth image stores either the minimum depth value or the maximum depth value of at least one orthogonally projected 3D point of the point cloud along the same projection direction is determined as follows: -Project at least one 3D point onto all three primary planes XY, XZ, and YZ, and project the distance (i.e. depth) of each 3D point to the projection plane. The projections are along the Z, Y, and Z axes of the 3D space, respectively, towards either infinity or minus infinity. The projection results are stored in six different 2D planes of size [bbox_x_size,bbox_y_size]. Three arrays store the minimum depth values ​​in the XY, XZ, and YZ planes, and the other three arrays store the maximum depth values ​​in the XY, XZ, and YZ planes. That is, 1)box_min_depth_array[x][bbox_x_size,bbox_y_size] 2)box_min_depth_array[y][bbox_x_size,bbox_y_size] 3)box_min_depth_array[z][bbox_x_size,bbox_y_size] and the three 2D planes for storing the maximum depth values ​​are 4)box_max_depth_array[x][bbox_x_size,bbox_y_size] 5)box_max_depth_array[y][bbox_x_size,bbox_y_size] 6) box_max_depth_array[z][bbox_x_size,bbox_y_size], - Select the best depth (minimum or maximum) stored in D0 by projecting at least one 3D point according to the "normalAxis" direction assigned to the current patch. Then check if the current depth value is equal to the minimum or maximum depth value stored in box_min_depth_array[normalAxis] and box_max_depth_array[normalAxis] respectively. One counter cptMinDepth or cptMaxDepth is incremented according to the current depth value. That is, if the current depth is in box_min_depth_array, cptMinDepth is incremented, and if the current depth is in box_max_depth_array, cptMaxDepth is incremented.

[0102] The decision to store the minimum or maximum depth value in D0 is made by comparing cptMinDepth and cptMaxDepth: if cptMinDepth is greater than cptMaxDepth, the minimum depth value of at least one 3D point is stored in the first depth image D0, otherwise it is the opposite (the maximum depth value of at least one 3D point is stored).

[0103] According to an embodiment of step 710, a projection mode indicating whether the image region of the first depth image stores either a minimum or a maximum depth value of at least one orthogonally projected 3D point of the point cloud along the same projection direction is determined by calculating the energy of the image region of the first depth image using the minimum and maximum depth values, and the version that minimizes the energy is selected.

[0104] Different criteria may be used to calculate the energy of an image region, such as the variance or the gradient.

[0105] According to an embodiment of step 710, a projection mode indicating whether the image region of the first depth image stores either the minimum or maximum depth value of at least one orthogonally projected 3D point of the point cloud along the same projection direction is determined by minimizing the number of missing points.

[0106] For example, at least one 3D point is projected and backprojected when the projection mode is equal to a first value (storing a minimum depth value in the first depth image D0), at least one 3D point is projected and backprojected when the projection mode is equal to a second value (storing a maximum depth value in the first depth image D0), the reconstructed 3D points (backprojected) are compared with the "original" 3D points, the number of missing points is counted, and the process is repeated when the projection mode is equal to a second value (storing a maximum depth value in the first depth image D0), and the projection mode that minimizes the number of missing points is selected.

[0107] According to a variant, the two previous embodiments of step 710 are combined to determine the projection mode that minimizes the energy and the number of missing points of the first depth image.

[0108] In Figs. 1-9, modules are functional units that may or may not be associated with distinct physical units. For example, these modules or some of them may be organized into unique components or circuits or contribute to the functionality of software. Conversely, some modules may potentially be composed of separate physical entities. Apparatus compatible with the present principles may be implemented using pure hardware, for example using dedicated hardware such as ASICs, FPGAs, VLSIs, which are "application specific integrated circuits", "field programmable gate arrays", and "very large scale integrated circuits", respectively, or from several integrated electronic components built into the device, or from a blend of hardware and software components.

[0109] FIG. 9 illustrates an example architecture of a device 90 that may be configured to implement the methods described in relation to FIGS.

[0110] Device 90 comprises the following elements linked together by a data and address bus 91: a microprocessor 92 (or CPU), for example a DSP (or Digital Signal Processor); -ROM (or read-only memory) 93, -RAM (or Random Access Memory) 94; an I / O interface 95 for receiving data to be transmitted from an application; a battery 96;

[0111] According to one example, the battery 96 is external to the device. In each of the above memories, the term "register" used herein may correspond to a small area (a few bits) or a very large area (e.g., an entire program or a large amount of received or decoded data). The ROM 93 includes at least programs and parameters. The ROM 93 may store algorithms and instructions for executing the technique according to the present principles. When powered on, the CPU 92 uploads the program to the RAM and executes the corresponding instructions.

[0112] The RAM 94 contains, in one register, the program executed by the CPU 92 and uploaded after power-on of the device 90, in one register, input data, in one register, intermediate data for different states of the method, and in one register, other variables used for the execution of the method.

[0113] The implementations described herein may be implemented, for example, in a method or process, an apparatus, a software program, a data stream, or a signal. Even if only a single implementation form (e.g., discussed only as a method or device) is discussed, the implementation of the discussed functionality may also be implemented in other forms (e.g., a program). An apparatus may be implemented, for example, in appropriate hardware, software, and firmware. The methods may be implemented, for example, in an apparatus, for example, in a processor, which generally refers to a processing device, including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices, including, for example, computers, mobile phones, portable / personal digital assistants ("PDAs"), and other devices that facilitate the transfer of information between end users.

[0114] According to an example of the encoding or encoder, the p-point set PC is obtained from a source. For example, the source may be: - a local memory (93 or 94), for example a video memory or a RAM (or Random Access Memory), a flash memory, a ROM (or Read Only Memory), a hard disk, - a storage interface (95), for example an interface to a mass storage device, a RAM, a flash memory, a ROM, an optical disk, or a magnetic support; a communication interface (95), for example a wired interface (for example a bus interface, a wide area network interface, a local area network interface) or a wireless interface (such as an IEEE 802.11 interface or a Bluetooth interface); - picture capture circuitry (e.g. a sensor, such as a CCD (or Charge Coupled Device) or a CMOS (or Complementary Metal Oxide Semiconductor)).

[0115] According to an example of the decoding or the decoder, the decoded first and / or second depth image or the reconstructed point cloud is transmitted to a destination, in particular, the transmission includes: - a local memory (93 or 94), e.g. video memory or RAM, flash memory, hard disk, - a storage interface (95), for example an interface to a mass storage device, a RAM, a flash memory, a ROM, an optical disk, or a magnetic support; a communication interface (95), for example a wired interface (for example a bus interface (for example a USB (or Universal Serial Bus)), a wide area network interface, a local area network interface, an HDMI (High Definition Multimedia Interface) interface) or a wireless interface (such as an IEEE 802.11 interface, a WiFi (or Bluetooth) interface, etc.); -Belongs to a set including display.

[0116] According to the encoding or encoder example, bitstream B is transmitted to a destination. In one example, bitstream B is stored in a local or remote memory, for example a video memory (94) or RAM (94), a hard disk (93). In a variant, one or both bitstreams are transmitted to a storage interface (95), for example an interface to a mass storage device, a flash memory, a ROM, an optical disk, or a magnetic support, and / or transmitted via a communication interface (95), for example an interface to a point-to-point link, a communication bus, a point-to-multipoint link, or a broadcast network.

[0117] According to an example of the decoding or decoder, the bitstream B is obtained from a source. Illustratively, the bitstream is read from a local memory, for example a video memory (94), a RAM (94), a ROM (93), a flash memory (93) or a hard disk (93). In a variant, the bitstream is received from a storage interface (95), for example an interface with a mass storage device, a RAM, a ROM, a flash memory, an optical disk or a magnetic support, and / or from a communication interface (95), for example an interface with a point-to-point link, a bus, a point-to-multipoint link or a broadcast network.

[0118] According to an example, a device 90 configured to implement the method described with respect to FIGS. 1 to 24 comprises: -Mobile devices; A communication device; -A gaming device; -A tablet (or tablet computer); -Laptop, -A still image camera; -A video camera, a coding chip; a still image server; - a video server (eg, a broadcast server, a video-on-demand server, or a web server);

[0119] According to an example, a device 90 configured to implement the method described in relation to FIGS. 1 to 24 comprises: -Mobile devices; A communication device; -A gaming device; - A set-top box; -A television set, -A tablet (or tablet computer); -Laptop, -Display and - a decoding chip.

[0120] According to an example of the present principles illustrated in FIG. 10, in a transmission situation between two remote devices A and B over a communication network NET, device A comprises a processor associated with memory RAM and ROM, which are configured to implement a method for encoding the geometry of a point cloud as described in relation to FIGS. 1 to 8, and device B comprises a processor associated with memory RAM and ROM, which are configured to implement a method for decoding the point cloud as described in relation to FIGS. 1 to 8.

[0121] 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 encoders, decoders, post-processors that process output from the decoders, pre-processors that provide input to the encoders, video encoders, video decoders, video codecs, web servers, set-top boxes, laptops, personal computers, cell phones, PDAs, and any other device for processing pictures or videos, or other communication devices. As should be clear, the equipment may be portable, even mounted on a moving vehicle.

[0122] In addition, the method may be implemented by instructions executed by a processor, and such instructions (and / or data values ​​generated by the implementation) may be stored in a computer-readable storage medium. The computer-readable storage medium may take the form of a computer-readable program product embodied in one or more computer-readable media and having computer-executable computer-readable program code embodied thereon. As used herein, a computer-readable storage medium is considered to be a non-transitory storage medium given the inherent ability to store information thereon, as well as the inherent ability to provide retrieval of information therefrom. The computer-readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. The following provides more specific examples of computer-readable storage media to which the present principles may be applied, but it should be understood that this is merely an illustrative and not exhaustive list, as will be readily appreciated by those skilled in the art. That is, 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 foregoing.

[0123] The instructions may form an application program tangibly embodied on a processor-readable medium.

[0124] Instructions may reside, for example, in hardware, firmware, software, or a combination. Instructions may be found, for example, in an operating system, a separate application, or a combination of the two. Thus, a processor may be characterized, for example, as both a device configured to execute a process and a device that includes a processor-readable medium (such as a storage device) having instructions for executing a process. Additionally, a processor-readable medium may store data values ​​generated by an implementation in addition to or in place of instructions.

[0125] As will be apparent to one of ordinary skill in the art, implementations can generate a wide variety of signals formatted to convey information, which can be, for example, stored or transmitted. Information can include, for example, instructions to perform a method or data generated by one of the described implementations. For example, a signal can be formatted to carry, as data, rules for writing or reading syntax of the described examples of the present principles, or to carry, as data, the actual syntax values ​​written by the described examples of the present principles. 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 that the signal carries 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 in a processor-readable medium.

[0126] A number of implementations have been described. Nevertheless, it is understood that various modifications can be made. For example, elements of different implementations can be combined, supplemented, modified, or deleted to produce other implementations. Also, those skilled in the art will understand that other structures and processes can be substituted for those disclosed, with the resulting implementations performing at least substantially the same function(s) and in at least substantially the same manner(s) to achieve at least substantially the same result(s) as the disclosed implementations. Accordingly, these and other implementations are contemplated by the present application.

Claims

1. decoding first image data storing at least one first depth value of a first 3D point of a point cloud, wherein the first 3D point and a second 3D point of the point cloud are orthogonally projected onto a same 2D point of a projection plane, the at least one first depth value being one of a minimum depth value from the projection plane or a maximum depth value from the projection plane, and the second 3D point having a second depth value that is the other one of the minimum depth value and the maximum depth value; deriving from a bitstream a projection mode signaled for a patch to which the 2D point belongs, the projection mode indicating whether the at least one first depth value is the minimum depth value or the maximum depth value; and reconstructing a geometry of the point cloud based on the projection mode.

2. 2. The method of claim 1, further comprising: decoding second image data storing information representing the second depth value, the information representing the second depth value being an absolute difference between the at least one first depth value and the second depth value.

3. 3. The method of claim 2, wherein reconstructing the geometry of the point cloud comprises reconstructing the first 3D points and the second 3D points from the first image data and the second image data as a function of the projection mode.

4. The method of claim 1 , wherein the projection mode indicates whether the first image data stores a depth value of a nearest point projected onto the projection plane or a farthest point projected onto the projection plane.

5. the first 3D point and the second 3D point correspond to a closest point and a farthest point, respectively, of a connected component from an origin of a projection axis when the projection mode is equal to a first value; The method of claim 1 , wherein the first 3D point and the second 3D point correspond to the furthest and closest points, respectively, of the connected component from an origin of the projection axis when the projection mode is equal to a second value.

6. decoding first image data storing at least one first depth value of a first 3D point of a point cloud, wherein the first 3D point and a second 3D point of the point cloud are orthogonally projected onto a same 2D point of a projection plane, the at least one first depth value being one of a minimum depth value from the projection plane or a maximum depth value from the projection plane, and the second 3D point having a second depth value that is the other one of the minimum depth value and the maximum depth value; deriving from a bitstream a projection mode signaled for a patch to which the 2D point belongs, the projection mode indicating whether the at least one first depth value is the minimum depth value or the maximum depth value; and reconstructing a geometry of the point cloud based on the projection mode.

7. 1. A method comprising: encoding a geometry of a point cloud based on a projection mode, the method comprising: encoding first image data storing at least one first depth value of a first 3D point of the point cloud, wherein the first 3D point and a second 3D point of the point cloud are orthogonally projected onto a same 2D point of a projection plane, the at least one first depth value being one of a minimum depth value from the projection plane or a maximum depth value from the projection plane, and the second 3D point having a second depth value that is the other one of the minimum depth value and the maximum depth value; and encoding in a bitstream the projection mode for a patch to which the 2D point belongs, the projection mode indicating whether the at least one first depth value is the minimum depth value or the maximum depth value.

8. 1. A device for encoding geometry of a point cloud based on a projection mode, comprising: encoding first image data storing at least one first depth value of a first 3D point of the point cloud, wherein the first 3D point and a second 3D point of the point cloud are orthogonally projected onto a same 2D point of a projection plane, the at least one first depth value being one of a minimum depth value from the projection plane or a maximum depth value from the projection plane, and the second 3D point having a second depth value that is the other one of the minimum depth value and the maximum depth value; and encoding in a bitstream the projection mode for a patch to which the 2D point belongs, the projection mode indicating whether the at least one first depth value is the minimum depth value or the maximum depth value.

9. 13. A non-transitory computer readable medium comprising instructions for causing one or more processors to perform the steps of the method of claim 1.

10. A non-transitory computer readable medium comprising instructions for causing one or more processors to perform the steps of the method of claim 7.

11. 7. The device of claim 6, wherein the at least one processor is further configured to decode second image data storing information representative of the second depth value, the information representative of the second depth value being an absolute difference between the at least one first depth value and the second depth value.

12. 9. The device of claim 8, wherein the at least one processor is further configured to encode second image data storing information representative of the second depth value, the information representative of the second depth value being an absolute difference between the at least one first depth value and the second depth value.

13. 8. The method of claim 7, further comprising: encoding second image data storing information representative of the second depth value, the information representing the second depth value being an absolute difference between the at least one first depth value and the second depth value.

Citation Information

Patent Citations

  • Surface codec using reprojection onto a depth map

    JP2016511457A

  • Surface codec using reprojection onto depth maps

    US20140204088A1

  • Apparatus for transmitting point cloud data, a method for transmitting point cloud data, an apparatus for receiving point cloud data and / or a method for receiving point cloud data

    US20200153885A1

  • Image processing device and method

    WO2019142666A1