Handling missing points in point clouds

The two-layer point cloud encoding structure addresses the challenge of efficient compression and delivery of dynamic point clouds by using image-based encoding and decoding, ensuring high-quality representations for immersive applications and autonomous systems.

JP7728417B2Active Publication Date: 2025-08-22INTERDIGITAL VC HOLDINGS INC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2024135721
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-03-20
Filing Date
2024-08-15
Publication Date
2025-08-22
Estimated Expiration
2040-01-27

AI Technical Summary

Technical Problem

Existing point cloud compression methods struggle to efficiently deliver dynamic point clouds to end users while maintaining acceptable quality and minimizing bitrate or storage space, particularly in applications like virtual reality and autonomous vehicles.

Method used

A two-layer based point cloud encoding structure is employed, comprising a base layer for lossy representation and an enhancement layer for higher quality, using image-based encoding and decoding techniques to handle geometry and texture information, along with occupancy maps to manage missing data points.

Benefits of technology

This approach allows for efficient compression and transmission of dynamic point clouds, providing a faithful and potentially lossless representation by leveraging existing video codecs, thus enhancing the quality of immersive experiences and decision-making in applications like virtual reality and autonomous driving.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007728417000001
    Figure 0007728417000001
  • Figure 0007728417000002
    Figure 0007728417000002
  • Figure 0007728417000003
    Figure 0007728417000003
Patent Text Reader

Abstract

To provide processing of missing points of a point cloud.SOLUTION: At least one embodiment relates to a method of assigning a pixel value of an occupancy map indicating that a depth value of at least one 3D sample of a point cloud frame projected along the same projection line is stored as a pixel value of at least one layer or equals a fixed-length codeword representing a depth value of at least one 3D sample projection along the projection line.SELECTED DRAWING: Figure 10
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] At least one of the present embodiments relates generally to processing point clouds. [Background technology]

[0002] This section is intended to introduce the reader to various aspects of art that may be related to various aspects of at least one of the present embodiments 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 at least one embodiment.

[0003] Point clouds can be used for various purposes, such as cultural heritage / architecture, where objects such as statues or buildings are scanned in 3D to share the spatial configuration of the object without sending or visiting it. It is also a way to ensure knowledge about the object is preserved in cases where it may be destroyed, for example, a temple may be destroyed by an earthquake. Such point clouds are generally static, colored, and large.

[0004] Another use case is in topography and cartography, where the use of 3D representations allows for maps that are not limited to flat surfaces, but can also include relief. Google Maps is currently a good example of a 3D map, but it uses meshes instead of point clouds. Nevertheless, point clouds are an appropriate data format for 3D maps, and such point clouds are generally static, colored, and large.

[0005] The automotive industry and autonomous vehicles are also areas where point clouds may be used. Autonomous vehicles should be able to "spy" their environment to make good driving decisions based on the reality of what is in their immediate vicinity. Typical sensors like LIDAR (Light Detection and Ranging) create dynamic point clouds that are used by decision engines. These point clouds are not intended to be viewed by humans; they are generally small, not necessarily colored, frequently captured, and dynamic. These point clouds may have other attributes, such as reflectivity provided by LIDAR, which can be useful for making decisions, as this attribute provides good information about the material of the sensed object.

[0006] Virtual reality and immersive worlds have become a hot topic recently and are predicted by many to be the future of 2D flat video. The basic idea is to immerse the viewer in the environment that surrounds them, as opposed to standard television, where the viewer can only see the virtual world in front of them. There are several levels of immersion depending on the viewer's degrees of freedom within the environment. Point clouds are a good format candidate for delivering virtual reality (VR) worlds.

[0007] In many applications, it is important to be able to deliver dynamic point clouds to end users (or store them in a server) by consuming only a reasonable amount of bitrate (or storage space for storage applications), while maintaining an acceptable (or preferably very good) quality of experience. Efficient compression of these dynamic point clouds is key to making many immersive world delivery chains practical.

[0008] At least one embodiment is conceived in light of the foregoing. [Prior art documents] [Non-patent literature]

[0009] [Non-Patent Document 1] Hugues Hoppe, Tony DeRose, Tom Duchamp, John McDonald, Werner Stuetzle. Surface reconstruction from unorganized points. ACM SIGGRAPH 1992 Proceedings, 71-78 Summary of the Invention

[0010] SUMMARY OF THE INVENTION The following presents a simplified summary of at least one of the present embodiments in order to provide a basic understanding of some aspects of the present disclosure. This summary is not an extensive overview of the embodiments. It is not intended to identify key or essential elements of the embodiments. The following summary merely presents some aspects of at least one of the present embodiments in a simplified form as a prelude to the more detailed description provided elsewhere in this document.

[0011] According to a general aspect of at least one embodiment, a method is provided that includes assigning pixel values ​​of an occupancy image to indicate whether a depth value of at least one 3D sample of a point cloud frame projected along the same projection line is stored as a pixel value of at least one depth image or is equal to a fixed length codeword representing a depth value of the at least one 3D sample projection along said projection line.

[0012] According to an embodiment, the method further comprises the steps of encoding at least one 3D sample projected along the projection line as a bit of a codeword, and skipping encoding of a depth value of the 3D sample projected along the projection line as a bit of a codeword when said depth value has already been encoded as a value of the depth image.

[0013] According to an embodiment, the method further comprises the step of signaling first information indicating whether a fixed length codeword is used or not.

[0014] According to an embodiment, the method further comprises the step of signaling second information representative of the length of the codeword.

[0015] According to an embodiment, the first information and / or the second information is signaled for a sequence of point cloud frames.

[0016] According to an embodiment, the first information and / or the second information is signaled frame by frame or patch by patch.

[0017] According to another general aspect of at least one embodiment, a signal including image data representing pixel values ​​of an occupancy image is provided to indicate whether a depth value of at least one 3D sample of the point cloud frame projected along the same projection line is stored as a pixel value of at least one depth image or is equal to a fixed length codeword representing a depth value of the at least one 3D sample projection along said projection line.

[0018] According to an embodiment, the signal further comprises first information indicating whether a fixed length codeword is used or not.

[0019] According to an embodiment, the signal includes second information representing the length of the codeword.

[0020] According to a general aspect of at least one embodiment, there is provided a method comprising: obtaining, from a bitstream, first information indicating whether a fixed length codeword is used to derive a depth value of at least one 3D sample of a point cloud; if the first information indicates that a fixed length codeword is used, deriving the depth value from a fixed length codeword representing a depth value of the at least one 3D sample projected along a projection line; and otherwise deriving the depth value from a codeword having a different length.

[0021] According to an embodiment, the method further comprises the step of obtaining second information representing the length of the codeword from the bitstream.

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

[0023] The specific nature of at least one of the present embodiments, as well as other objects, advantages, features, and uses of said at least one of the present embodiments, will become apparent from the following description of examples taken in conjunction with the accompanying drawings. [Brief explanation of the drawings]

[0024] In the drawings, some example embodiments are illustrated. The drawings show: [Figure 1] FIG. 1 is a schematic block diagram of an example of a two-layer based point cloud encoding structure according to at least one of the present embodiments. [Figure 2] FIG. 10 is a schematic block diagram of an example of a two-layer based point cloud decoding structure according to at least one of the present embodiments. [Figure 3] FIG. 1 is a schematic block diagram of an example image-based point cloud encoder according to at least one of the present embodiments. [Figure 3a]FIG. 1 illustrates an example canvas containing two patches and their 2D bounding boxes. [Figure 3b] FIG. 10 illustrates an example of two intermediate 3D samples positioned between two 3D samples along a projection line. [Figure 4] FIG. 1 is a schematic block diagram of an example image-based point cloud decoder according to at least one of the present embodiments. [Figure 5] 10 is a diagram illustrating schematically an example of the syntax of a bitstream representing a base layer BL according to at least one of the present embodiments. [Figure 6] 1 is a schematic block diagram of an example system in which various aspects and embodiments may be implemented. [Figure 7] FIG. 1 illustrates an example of a 3D to 2D projection using V-PCC. [Figure 8] 1 is a schematic block diagram of an example method for encoding depth values ​​of 3D samples projected along the same projection line, according to at least one embodiment. [Figure 9] 1 is a schematic block diagram of an example method for decoding depth values ​​of 3D samples projected along the same projection line, according to at least one embodiment. [Figure 10] FIG. 1 illustrates an example of determining pixel values ​​for an occupancy map, in accordance with at least one embodiment. [Figure 11] 10 illustrates an example of determining pixel values ​​of an occupancy map OM(u,v) according to its variant. FIG. [Figure 12] FIG. 1 illustrates an example of determining pixel values ​​of an occupancy map OM(u,v), according to at least one embodiment. [Figure 13] FIG. 1 illustrates example syntax elements used to signal information INFO1 and INFO2, according to at least one embodiment. [Figure 14]FIG. 1 illustrates example syntax elements used to signal information INFO1 and INFO2, according to at least one embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0025] At least one of the present embodiments will be described more fully below with reference to the accompanying drawings, in which at least one example of the present embodiments is shown. However, the embodiments may be embodied in many alternate forms and should not be construed as limited to the examples set forth herein. Accordingly, it should be understood that there is no intention to limit the embodiments to the particular forms disclosed. On the contrary, the present disclosure is intended to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present application.

[0026] When a figure is presented as a flow diagram, it should be understood that it also provides a block diagram of the corresponding apparatus. Similarly, when a figure is presented as a block diagram, it should be understood that it also provides a flow diagram of the corresponding method / process.

[0027] Similar or identical elements in the figures are referred to with the same reference numerals.

[0028] Some figures show syntax tables commonly used in V-PCC to define the structure of a V-PCC-compliant bitstream. In these syntax tables, the term "..." indicates an unchanged portion of the syntax relative to the original definition given in V-PCC, which has been removed from the figure for readability. Bold terms in the figures indicate that the value of this term is obtained by parsing the bitstream. The right column of the syntax table indicates the number of bits used to encode the data of the syntax element. For example, u(4) indicates that 4 bits are used to encode the data, u(8) indicates 8 bits, and ae(v) indicates a context-adaptive arithmetic entropy coded syntax element.

[0029] The aspects described and contemplated below can be implemented in many different forms. Figures 1-14 below provide some embodiments, but other embodiments are also contemplated, and the discussion of Figures 1-14 does not limit the breadth of implementations.

[0030] At least one of the aspects relates generally to point cloud encoding and decoding, and at least one other aspect relates generally to transmitting the generated or encoded bitstream.

[0031] More precisely, the various methods and other aspects described herein can be used to modify modules, such as the module PGM (step 3100), the encoder OMENC (step 3600), the geometry generation module GGM (step 4300), and the occupancy map decoder OMDEC (step 4400), as shown in Figures 1 to 14.

[0032] Furthermore, the present aspects are not limited to MPEG standards, such as MPEG-1 Part 5, related to point cloud compression, but may apply, for example, to other standards and recommendations, whether existing or developed in the future, and to extensions of any such standards and recommendations (including MPEG-1 Part 5). Unless otherwise indicated or technically precluded, the aspects described in this application may be used individually or in combination.

[0033] In the following, image data refers to data, e.g., one or more arrays of 2D samples of a particular image / video format. A particular image / video format may specify information related to pixel values ​​of an image (or video). A particular image / video format may also specify information that can be used, for example, by a display and / or any other device for visualizing and / or decoding an image (or video). An image generally includes a first component, usually in the form of a first 2D array of samples, representing the luminance (or luma) of the image. An image may also include second and third components, usually in the form of other 2D arrays of samples, representing the chrominance (or chroma) of the image. Some embodiments represent the same information using a set of 2D arrays of color samples, such as the traditional three-color RGB representation.

[0034] In one or more embodiments, a pixel value is represented by a vector of C values, where C is the number of components. Each value in the vector is generally represented using a number of bits that may define the dynamic range of the pixel value.

[0035] An image block refers to a set of pixels that belong to an image. The pixel values ​​(or image block data) of an image block refer to the values ​​of the pixels that belong to this image block. An image block may have any shape, but a rectangle is common.

[0036] A point cloud may be represented by a data set of 3D samples in a 3D volumetric space, each having unique coordinates and possibly one or more attributes.

[0037] A 3D sample of the dataset may be defined by its spatial location (X, Y, Z coordinates in 3D space) and possibly by one or more associated attributes, such as color expressed in RGB or YUV color space, transparency, reflectance, a two-component normal vector, or any feature that characterizes the sample. For example, a 3D sample may be defined by six components (X, Y, Z, R, G, B) or equivalently (X, Y, Z, y, U, V), where (X, Y, Z) define the coordinates of a point in 3D space and (R, G, B) or (y, U, V) define the color of the 3D sample. Attributes of the same type may occur multiple times. For example, multiple color attributes may provide color information from different viewpoints.

[0038] A point cloud can be static or dynamic, depending on whether the point cloud changes over time. An instance of a static or dynamic point cloud is typically referred to as a point cloud frame. It should be noted that in the case of a dynamic point cloud, the number of points is generally not constant, but rather typically changes over time. More generally, a point cloud can be considered dynamic if something changes over time, such as the number of points, the position of one or more points, or any attribute of any point.

[0039] As an example, a 2D sample can be defined by six components (u,v,Z,R,G,B), or equivalently (u,v,Z,y,U,V). (u,v) define the coordinate of the 2D sample in the 2D space of the projection plane. Z is the depth value of the projected 3D sample onto this projection plane. (R,G,B) or (y,U,V) define the color of this 3D sample.

[0040] FIG. 1 illustrates a schematic block diagram of an example two-layer based point cloud encoding structure 1000 according to at least one of the present embodiments.

[0041] The two-layer based point cloud encoding structure 1000 may provide a bitstream B that represents an input point cloud frame IPCF. In some cases, the input point cloud frame IPCF represents a frame of a dynamic point cloud, which may be encoded by the two-layer based point cloud encoding structure 1000 independently of other frames.

[0042] Essentially, the two-layer based point cloud encoding structure 1000 may provide the ability to structure a bitstream B as a base layer BL and an enhancement layer EL. The base layer BL may provide a lossy representation of the input point cloud frame IPCF, and the enhancement layer EL may provide a higher quality (possibly lossless) representation by encoding isolated points not represented by the base layer BL.

[0043] The base layer BL may be provided by an image-based encoder 3000, as illustrated in Figure 3, which may provide geometry / texture images representing the geometry / attributes of the 3D samples of the input point cloud frame IPCF, which may allow orphaned 3D samples to be discarded. The base layer BL may be decoded by an image-based decoder 4000, as shown in Figure 4, which may provide an intermediate reconstructed point cloud frame IRPCF.

[0044] Returning now to the two-layer-based point cloud encoding 1000 in FIG. 1 , a comparator COMP may compare the 3D samples of the input point cloud frame IPCF with the 3D samples of the intermediate reconstructed point cloud frame IRPCF to detect / locate missing / orphan 3D samples. Next, an encoder ENC may encode the missing 3D samples and provide an enhancement layer EL. Finally, the base layer BL and the enhancement layer EL may be multiplexed together by a multiplexer MUX to generate a bitstream B.

[0045] According to an embodiment, the encoder ENC may comprise a detector that may detect and associate the 3D reference samples R of the intermediate reconstructed point cloud frame IRPCF with the missing 3D samples M.

[0046] For example, the 3D reference sample R associated with a missing 3D sample M may be a neighboring sample of M that is closest according to a given metric.

[0047] According to an embodiment, the encoder ENC may then encode the spatial locations of the missing 3D samples M and their attributes as differences determined according to the spatial locations and attributes of the 3D reference samples R.

[0048] In a variant, the differences may be encoded separately.

[0049] For example, for a missing 3D sample M having spatial coordinates x(M), y(M), z(M), the x-coordinate position difference Dx(M), the y-coordinate position difference Dy(M), the z-coordinate position difference Dz(M), the R attribute component difference Dr(M), the G attribute component difference Dg(M), and the B attribute component difference Db(M) may be calculated as follows: Dx(M)=x(M)-x(R)

[0050] where x(M) is the x coordinate of the 3D sample M, which corresponds to R in the geometry image provided by FIG. Dy(M)=y(M)-y(R)

[0051] where y(M) is the y coordinate of the 3D sample M, which corresponds to R in the geometry image provided by FIG. Dz(M)=z(M)-z(R)

[0052] where z(M) is the z coordinate of the 3D sample M, which corresponds to R in the geometry image provided by FIG. Dr(M)=R(M)-R(R)

[0053] where R(M) is the r color component of the color attribute of the 3D sample M, corresponding to R(R). Dg(M) = G(M) - G(R)

[0054] Here, G(M) corresponds to G(R) and is the g color component of the color attribute of the 3D sample M, corresponding to R. Db(M)=B(M)-B(R)

[0055] Here, B(M) corresponds to B(R) and is the b color component of the color attribute of 3D sample M, corresponding to R.

[0056] FIG. 2 illustrates a schematic block diagram of an example two-layer based point cloud decoding structure 2000 according to at least one of the present embodiments.

[0057] The behavior of the two-layer based point cloud decoding structure 2000 depends on its capabilities.

[0058] A two-layer based point cloud decoding structure 2000 with limited capabilities can obtain only the base layer BL from the bitstream B by using a demultiplexer DMUX, and then provide a faithful (but lossy) version IRPCF of the input point cloud frame IPCF by decoding the base layer BL by a point cloud decoder 4000 as illustrated in FIG. 4.

[0059] A fully capable two-layer-based point cloud decoding structure 2000 may obtain both the base layer BL and the enhancement layer EL from the bitstream B by using a demultiplexer DMUX. A point cloud decoder 4000, as illustrated in FIG. 4, may determine an intermediate reconstructed point cloud frame IRPCF from the base layer BL. A decoder DEC may determine a supplemental point cloud frame CPCF from the enhancement layer EL. A combiner COM may then combine the intermediate reconstructed point cloud frame IRPCF and the supplemental point cloud frame CPCF together, thereby providing a higher-quality (possibly lossless) representation (reconstructed) CRPCF of the input point cloud frame IPCF.

[0060] FIG. 3 illustrates a schematic block diagram of an example image-based point cloud encoder 3000 according to at least one of the present embodiments.

[0061] The image-based point cloud encoder 3000 leverages existing video codecs to compress the geometry and texture (attribute) information of dynamic point clouds, which is achieved essentially by converting the point cloud data into a set of different video sequences.

[0062] In certain embodiments, two videos, one for capturing geometry information of the point cloud data and another for capturing texture information, may be generated and compressed using an existing video codec, such as the HEVC Main Profile Encoder / Decoder (ITU-T H.265 ITU Telecommunications Standardization Sector (02 / 2018), Series H: Audiovisual and Multimedia Systems, Infrastructure for Audiovisual Services - Coding of Moving Images, High Efficiency Video Coding, Recommendation ITU-T H.265).

[0063] Additional metadata used to interpret the two videos is also typically generated and compressed separately, including, for example, an occupancy map OM and / or auxiliary patch information PI.

[0064] The generated video bitstream and metadata can then be multiplexed together to generate a combined bitstream.

[0065] It should be noted that metadata generally represents a small amount of the overall information, the majority of which is in the video bitstream.

[0066] An example of such a point cloud encoding / decoding process is given by the Test Model Category 2 algorithm (also called V-PCC), which implements the MPEG draft standard as defined in ISO / IEC JTC1 / SC29 / WG11 MPEG2019 / w18180 (January 2019, Marrakech).

[0067] In step 3100, the module PGM may generate at least one patch by decomposing the 3D samples of the dataset representing the input point cloud frame IPCF into 2D samples on a projection plane using a strategy that provides the best compression.

[0068] A patch may be defined as a set of 2D samples.

[0069] For example, in V-PCC, as described in, for example, Non-Patent Document 1, normals for every 3D sample are first estimated. Next, an initial clustering of the input point cloud frame IPCF is obtained by associating each 3D sample with one of six oriented planes of a 3D bounding box that encompasses the 3D sample of the input point cloud frame IPCF. More precisely, each 3D sample is clustered and associated with the oriented plane with the closest normal (which maximizes the dot product of the point normal and the plane normal). The 3D samples are then projected onto their associated plane. A set of 3D samples that form a connected region in a plane is called a connected component. A connected component is a set of at least one 3D sample with a similar normal and the same associated oriented plane. The initial clustering is then refined by iteratively updating the cluster associated with each 3D sample based on its normal and the cluster of its nearest neighboring sample. The final step consists in generating one patch from each connected component by projecting the 3D samples of each connected component onto the oriented plane associated with that connected component. The patches are associated with auxiliary patch information PI, which represents auxiliary patch information defined for each patch to interpret the projected 2D samples corresponding to geometry and / or attribute information.

[0070] In V-PCC, for example, the auxiliary patch information PI includes: 1) information indicating one of six oriented planes of a 3D bounding box containing the 3D sample of the connected component; 2) information related to the plane normal; 3) information determining the 3D location of the connected component associated with the patch expressed in terms of depth, tangent shift, and bitangent shift; and 4) information such as coordinates (u0, v0, u1, v1) in the projection plane that defines the 2D bounding box containing the patch.

[0071] In step 3200, the patch packing module PPM may generally map (place) at least one generated patch onto a 2D grid (also called a canvas) without any overlap in a way that minimizes unused space and may ensure that every T×T (e.g., 16×16) block of the 2D grid is associated with a unique patch. A given minimum block size T×T of the 2D grid may specify the minimum distance between different patches placed on this 2D grid. The 2D grid resolution may depend on the input point cloud size and its width W and height H, and the block size T may be transmitted to the decoder as metadata.

[0072] The auxiliary patch information PI may further include information related to the association between blocks of the 2D grid and patches.

[0073] In V-PCC, the auxiliary information PI may include block-to-patch index information (BlockToPatch) that determines the association between blocks of a 2D grid and patch indices.

[0074] FIG. 3a illustrates an example canvas C that includes two patches P1 and P2 and their associated 2D bounding boxes B1 and B2. Note that, as illustrated in FIG. 3a, the two bounding boxes may overlap within canvas C. Although the 2D grid (canvas division) is shown only inside the bounding boxes, canvas division also occurs outside those bounding boxes. The bounding boxes associated with the patches can be divided into T×T blocks, where T=16 in general.

[0075] A T×T block containing 2D samples belonging to a patch may be considered an occupied block. Each occupied block of the canvas is represented in the occupancy map OM by a particular pixel value (e.g., 1), and each unoccupied block of the canvas is represented by another particular value, e.g., 0. The pixel values ​​of the occupancy map OM may then indicate whether a T×T block of the canvas is occupied, i.e., whether it contains 2D samples belonging to the patch.

[0076] In Figure 3a, occupied blocks are represented by white blocks and light grey blocks represent unoccupied blocks. The image generation process (steps 3300 and 3400) utilizes the mapping of at least one generated patch onto a 2D grid, computed during step 3200, to store the geometry and texture of the input point cloud frame IPCF as an image.

[0077] In step 3300, the geometry image generator GIG may generate at least one geometry image GI from the input point cloud frame IPCF, the occupancy map OM, and the auxiliary patch information PI. The geometry image generator GIG may use the occupancy map information to detect (locate) occupied blocks, and therefore non-empty pixels, within the geometry image GI.

[0078] The geometry image GI may represent the geometry of the input point cloud frame IPCF and may be, for example, a monochrome image of W×H pixels represented in YUV420-8 bit format.

[0079] To better handle the case where multiple 3D samples are projected (mapped) onto the same 2D sample in the projection plane (along the same projection direction (line)), multiple images, called layers, can be generated. Thus, different depth values ​​D1, ..., Dn can be associated with the 2D samples of the patch, and then multiple geometry images can be generated.

[0080] In V-PCC, the 2D samples of a patch are projected onto two layers. The first layer, also called the near layer, may store depth values ​​D0 associated with 2D samples having a smaller depth, for example. The second layer, called the far layer, may store depth values ​​D1 associated with 2D samples having a larger depth, for example. For example, the information stored by the second depth image may be in the interval [0, Δ], corresponding to depth values ​​in the range [D0, D0 + Δ], where Δ is a user-defined parameter describing surface thickness.

[0081] In this way, the second layer may contain high-frequency features similar to important contours. Clearly, the second depth image may be difficult to encode using a legacy video coder, and therefore, the depth values ​​may be poorly reconstructed from the decoded second depth image, which may result in poor quality of the geometry of the reconstructed point cloud frame.

[0082] According to an embodiment, the geometry image generation module GIG may encode (derive) depth values ​​associated with the 2D samples of the first and second layers by using the auxiliary patch information PI.

[0083] In V-PCC, the location of a 3D sample within a patch with a corresponding connected component can be expressed in terms of depth δ(u,v), tangent shift s(u,v), and bitangent shift r(u,v) as follows: δ(u,v)=δ0+g(u,v) s(u,v)=s0-u0+u r(u,v)=r0-v0+v where g(u,v) is the luma component of the geometry image, (u,v) is the pixel on the projection plane associated with the 3D sample, (δ0,s0,r0) is the 3D location of the corresponding patch of the connected component to which the 3D sample belongs, and (u0,v0,u1,v1) are the coordinates on the projection plane that define the 2D bounding box that contains the projection of the patch associated with that connected component.

[0084] Thus, the geometry image generation module GIG may encode (derive) depth values ​​associated with 2D samples of the (first or second or both) layers as luma components g(u,v) given by g(u,v)=δ(u,v)−δ. It is noted that this relationship may be exploited to reconstruct the 3D sample locations (δ,s,r) from the reconstructed geometry image g(u,v) with the accompanying auxiliary patch information PI.

[0085] According to an embodiment, the projection mode may be used to indicate whether the first geometry image GI0 may store depth values ​​of 2D samples of the first layer or the second layer, and whether the second geometry image GI1 may store depth values ​​associated with 2D samples of the second layer or the first layer.

[0086] For example, when the projection mode is equal to 0, the first geometry image GI0 may store depth values ​​of the 2D samples of the first layer, and the second geometry image GI1 may store depth values ​​associated with the 2D samples of the second layer. Conversely, when the projection mode is equal to 1, the first geometry image GI0 may store depth values ​​of the 2D samples of the second layer, and the second geometry image GI1 may store depth values ​​associated with the 2D samples of the first layer.

[0087] According to an embodiment, the frame projection mode may be used to indicate whether a fixed projection mode is used for all patches, or whether a variable projection mode is used, where each patch may use a different projection mode.

[0088] The projection mode and / or frame projection mode may be transmitted as metadata.

[0089] The frame projection mode decision algorithm may be provided, for example, in section 2.2.1.3.1 of the V-PCC.

[0090] According to an embodiment, when frame projection indicates that a variable projection mode may be used, patch projection mode may be used to indicate the appropriate mode to use for (back)projecting the patch.

[0091] The patch projection mode may be transmitted as metadata, and possibly may be information included in the auxiliary patch information PI.

[0092] The patch projection mode decision algorithm is provided, for example, in section 2.2.1.3.2 of the V-PCC.

[0093] According to an embodiment of step 3300, a pixel value in a first geometry image, e.g., GI0, corresponding to a 2D sample (u,v) of a patch may represent a depth value of at least one intermediate 3D sample defined along a projection line corresponding to that 2D sample (u,v). More precisely, that intermediate 3D sample lies along the projection line and shares the same coordinate of the 2D sample (u,v) whose depth value D1 is encoded in a second geometry image, e.g., GI1. Furthermore, the intermediate 3D sample may have a depth value between depth values ​​D0 and D1. A designated bit may be associated with each intermediate 3D sample, which is set to 1 if the intermediate 3D sample exists and to 0 otherwise.

[0094] FIG. 3b shows two intermediate 3D samples P located between the two 3D samples P0 and P1 along the projection line PL. i1 and P i2 The 3D samples P0 and P1 have depth values ​​equal to D0 and D1, respectively. Two intermediate 3D samples P i1 and P i2 Each depth value D i1 and D i2 is greater than D0 and less than D1.

[0095] In that case, all designated bits along the projection line can be concatenated to form a codeword, hereafter referred to as an enhanced occupancy map (EOM) codeword. Assuming an EOM codeword of length 8 bits, as illustrated in Figure 3b, two 3D samples P i1 and P i2 , two bits are equal to 1 to indicate the location of the EOM codeword. Finally, all EOM codewords may be packed into an image, for example, into an occupancy map OM. In that case, at least one patch of the canvas may contain at least one EOM codeword. Such a patch is called a reference patch, and a block of the reference patch is called an EOM reference block. Thus, a pixel value of the occupancy map OM may be equal to a first value, for example, 0, to indicate an unoccupied block of the canvas, or may be equal to another value, for example, greater than 0, to indicate either an occupied block of the canvas or an EOM reference block.

[0096] Following an example, when D1-D0≦1, the pixel values ​​of the occupancy map OM may point to an occupied block, and when D1-D0>1, the pixel value map OM may point to an EOM reference block of the canvas.

[0097] The locations of pixels in the occupancy map OM that indicate the EOM reference block, and the values ​​of the bits of the EOM codeword that are derived from the values ​​of those pixels, indicate the 3D coordinates of the intermediate 3D sample.

[0098] In step 3400, the texture image generator TIG may generate at least one texture image TI from the input point cloud frame IPCF, the occupancy map OM, the auxiliary patch information PI, and the geometry of the reconstructed point cloud frame derived from at least one decoded geometry image DGI, which is the output of the video decoder VDEC (step 4200 in FIG. 4).

[0099] The texture image TI may represent the texture of the input point cloud frame IPCF and may be, for example, an image of W×H pixels represented in YUV420-8 bit format.

[0100] The texture image generator TG may use the occupancy map information to detect (locate) occupied blocks, and therefore non-empty pixels, within the texture image.

[0101] The texture image generator TIG may be adapted to generate and associate a texture image TI with each geometry image / layer DGI.

[0102] According to an embodiment, the texture image generator TIG may encode (store) texture (attribute) values ​​T0 associated with the 2D samples of the first layer as pixel values ​​of a first texture image TI0, and texture values ​​T1 associated with the 2D samples of the second layer as pixel values ​​of a second texture image TI1.

[0103] Alternatively, the texture image generation module TIG may encode (store) texture values ​​T1 associated with the 2D samples of the second layer as pixel values ​​of the first texture image TI0 and texture values ​​D0 associated with the 2D samples of the first layer as pixel values ​​of the second geometry image GI1.

[0104] For example, the color of the 3D sample may be obtained as described in Section 2.2.3, Section 2.2.4, Section 2.2.5, Section 2.2.8, or Section 2.5 of the V-PCC.

[0105] The texture values ​​of the two 3D samples are stored either in the first texture image or in the second texture image. However, as illustrated in FIG. 3b, because the location of the projected intermediate 3D sample corresponds to an occupied block already used to store the texture value of another 3D sample (P0 or P1), the texture value of the intermediate 3D sample cannot be stored in either this first texture image TI0 or the second texture image TI1. Therefore, the texture value of the intermediate 3D sample is stored in an EOM texture block located somewhere else in the first texture image or the second texture image at a procedurally defined location (Section 9.4.5 of the V-PCC). Briefly, this process determines the location of an unoccupied block in the texture image and stores the texture value associated with the intermediate 3D sample as a pixel value of that unoccupied block of the texture image, called the EOM texture block.

[0106] According to an embodiment, a padding process may be applied on the geometry and / or texture images, which may be used to fill empty spaces between patches to produce piecewise smooth images suitable for video compression.

[0107] Image padding examples are provided in Sections 2.2.6 and 2.2.7 of the V-PCC.

[0108] In step 3500, the video encoder VENC may encode the generated images / layers TI and GI.

[0109] In step 3600, the encoder OMENC may encode the occupancy map as an image, for example, as detailed in section 2.2.2 of V-PCC. Lossy or lossless encoding may be used.

[0110] According to an embodiment, the video encoders ENC and / or OMENC may be HEVC-based encoders.

[0111] In step 3700, the encoder PIENC may encode the auxiliary patch information PI and possibly additional metadata, such as the block size T, width W, and height H of the geometry / texture image.

[0112] According to an embodiment, the auxiliary patch information may be differentially encoded (eg, as defined in section 2.4.1 of the V-PCC).

[0113] In step 3800, a multiplexer may be applied to the generated outputs of steps 3500, 3600, and 3700, so that these outputs may be multiplexed together to generate a bitstream representing the base layer BL. It should be noted that the metadata information represents a small portion of the overall bitstream. Most of the information is compressed using a video codec.

[0114] FIG. 4 illustrates a schematic block diagram of an example image-based point cloud decoder 4000 according to at least one of the present embodiments.

[0115] In step 4100, a demultiplexer DMUX may be applied to demultiplex the encoded information of the bitstream representing the base layer BL.

[0116] In step 4200, the video decoder VDEC may decode the encoded information to derive at least one decoded geometry image DGI and at least one decoded texture image DTI.

[0117] In step 4300, the decoder OMDEC may decode the encoded information to derive a decoded occupancy map DOM.

[0118] According to an embodiment, the video decoders VDEC and / or OMDEC may be HEVC-based decoders.

[0119] In step 4400, the decoder PIDEC may decode the encoded information to derive auxiliary patch information DPI.

[0120] In some cases, metadata may also be derived from the bitstream BL.

[0121] In step 4500, the geometry generation module GGM may derive the geometry RG of the reconstructed point cloud frame IRPCF from at least one decoded geometry image DGI, a decoded occupancy map DOM, decoded auxiliary patch information DPI, and possibly additional metadata.

[0122] The geometry generation module GGM may use the decoded occupancy map information DOM to identify the locations of non-empty pixels in at least one decoded geometry image DGI.

[0123] The non-empty pixel belongs to either the occupied block or the EOM reference block depending on the pixel value of the decoded occupancy information DOM and the values ​​of D1-D0 as explained above.

[0124] According to an embodiment of step 4500, the geometry generation module GGM may derive two of the 3D coordinates of the intermediate 3D sample from the coordinates of the non-empty pixels.

[0125] According to an embodiment of step 4500, when the non-empty pixel belongs to an EOM reference block, the geometry generation module GGM may derive a third of the 3D coordinates of the intermediate 3D sample from the bit values ​​of the EOM codeword.

[0126] For example, following the example in Figure 3b, the intermediate 3D sample P i1 and P i2 The EOM codeword EOMC is used to determine the 3D coordinates of the intermediate 3D sample P i1 The third coordinate of, for example, D i1 = D0 + 3, the reconstructed 3D sample P i2 The third coordinate of, for example, D i2 =D0+5. The offset value (3 or 5) is the number of intervals between D0 and D1 along the projection line.

[0127] According to an embodiment, when a non-empty pixel belongs to an occupied block, the geometry generation module GGM may derive the 3D coordinates of the reconstructed 3D sample from the coordinates of the non-empty pixel, the value of that non-empty pixel in one of the at least one decoded geometry image DGI, the decoded auxiliary patch information, and possibly from additional metadata.

[0128] The use of non-empty pixels is based on the relationship of 2D pixels to 3D samples. For example, using the projection in the V-PCC, the 3D coordinates of the reconstructed 3D sample can be expressed in terms of depth δ(u,v), tangent shift s(u,v), and bitangent shift r(u,v) as follows: δ(u,v)=δ0+g(u,v) s(u,v)=s0-u0+u r(u,v)=r0-v0+v where g(u,v) is the luma component of the decoded geometry image DGI, (u,v) is the pixel associated with the reconstructed 3D sample, (δ0,s0,r0) is the 3D location of the connected component to which the reconstructed 3D sample belongs, and (u0,v0,u1,v1) are the coordinates in the projection plane that define the 2D bounding box that contains the projection of the patch associated with that connected component.

[0129] In step 4600, the texture generation module TGM may derive the texture of the reconstructed point cloud frame IRPCF from the geometry RG and at least one decoded texture image DTI.

[0130] According to an embodiment of step 4600, the texture generation module TGM may derive the texture of non-empty pixels belonging to an EOM reference block from the corresponding EOM texture block, whose location in the texture image is defined procedurally (section 9.4.5 of the V-PCC).

[0131] According to an embodiment of step 4600, the texture generation module TGM may derive the texture of the non-empty pixels belonging to the occupied block directly as pixel values ​​of either the first texture image or the second texture image.

[0132] FIG. 5 illustrates schematically an exemplary syntax of a bitstream representing a base layer BL according to at least one of the present embodiments.

[0133] The bitstream includes a bitstream header SH and at least one group of frames stream GOFS.

[0134] The group of frames stream GOFS includes a header HS, at least one syntax element OMS representing an occupancy map OM, at least one syntax element GVS representing at least one geometry image (or video), at least one syntax element TVS representing at least one texture image (or video), and at least one syntax element PIS representing auxiliary patch information and other additional metadata.

[0135] In a variant, a group of frames stream GOFS comprises at least one frame stream.

[0136] FIG. 6 shows a schematic block diagram illustrating an example of a system in which various aspects and embodiments may be implemented.

[0137] System 6000 may be embodied as one or more devices including various components described below and configured to perform one or more of the aspects described in this document. Examples of equipment that may form all or part of system 6000 include personal computers, laptops, smartphones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected home appliances, connected vehicles and their associated processing systems, head-mounted display devices (HMDs, see-through glasses), projectors (beamers), "caves" (systems including multiple displays), servers, video encoders, video decoders, post-processors that process output from video decoders, pre-processors that provide input to video encoders, web servers, set-top boxes, and any other devices for processing point clouds, videos, or images, or other communication devices. Elements of system 6000, alone or in combination, may be embodied within a single integrated circuit, multiple ICs, and / or discrete components. For example, in at least one embodiment, the processing elements and encoder / decoder elements of system 6000 may be distributed across multiple ICs and / or discrete components. In various embodiments, system 6000 may be communicatively coupled to other similar systems or other electronic devices, for example, via a communication bus or through dedicated input and / or output ports. In various embodiments, system 6000 may be configured to implement one or more of the aspects described in this document.

[0138] The system 6000 may include at least one processor 6010 configured to execute instructions loaded therein, for example, to implement various aspects described in this document. The processor 6010 may include embedded memory, input / output interfaces, and various other circuits as known in the art. The system 6000 may include at least one memory 6020 (e.g., a volatile memory device and / or a non-volatile memory device). The system 6000 may include a storage device 6040, which may include non-volatile memory and / or volatile memory, including, but not limited to, electrically erasable programmable read-only memory (EEPROM), read-only memory (ROM), programmable read-only memory (PROM), random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), flash, magnetic disk drives, and / or optical disk drives. The storage device 6040 may include, by way of non-limiting example, an internal storage device, an attached storage device, and / or a network-accessible storage device.

[0139] The system 6000 may include an encoder / decoder module 6030 configured to process data, for example, to provide encoded or decoded data, and the encoder / decoder module 6030 may include its own processor and memory. The encoder / decoder module 6030 may represent a module that may be included within a device to perform encoding and / or decoding functions. As is known, a device may include one or both of an encoding module and a decoding module. Additionally, the encoder / decoder module 6030 may be implemented as a separate element of the system 6000 or may be incorporated within the processor 6010 as a combination of hardware and software, as is known to those skilled in the art.

[0140] Program code that is loaded onto the processor 6010 or the encoder / decoder 6030 to perform various aspects described in this document may be stored in a storage device 6040 and then loaded onto the memory 6020 for execution by the processor 6010. According to various embodiments, one or more of the processor 6010, the memory 6020, the storage device 6040, and the encoder / decoder module 6030 may store one or more of various items during execution of the processes described in this document. Such stored items may include, but are not limited to, point cloud frames, encoded / decoded geometry / texture video / images or portions of encoded / decoded geometry / texture video / images, bitstreams, matrices, variables, and intermediate or final results from processing of equations, expressions, operations, and operational logic.

[0141] In some embodiments, memory internal to the processor 6010 and / or the encoder / decoder module 6030 may be used to store instructions and to provide working memory for processes that may be performed during encoding or decoding.

[0142] However, in other embodiments, memory external to the processing device (e.g., the processing device may be either the processor 6010 or the encoder / decoder module 6030) may be used for one or more of these functions. The external memory may be the memory 6020 and / or the storage device 6040, e.g., dynamic volatile memory and / or non-volatile flash memory. In some embodiments, external non-volatile flash memory may be used to store the television's operating system. In at least one embodiment, high-speed external dynamic volatile memory, such as RAM, may be used as working memory for video encoding and decoding operations, such as for MPEG-2 Part 2 (also known as ITU-T Recommendation H.262 and ISO / IEC 13818-2, and also known as MPEG-2 Video), HEVC (High Efficiency Video Coding), or VVC (Versatile Video Coding).

[0143] Input to the elements of system 6000 may be provided through various input devices, as shown in block 6130. Such input devices include, but are not limited to, (i) an RF section that may receive an RF signal, for example, transmitted over the air by a broadcast station, (ii) a composite input, (iii) a USB input, and / or (iv) an HDMI input.

[0144] In various embodiments, the input devices of block 6130 may have associated respective input processing elements, as known in the art. For example, the RF section may be associated with elements necessary to (i) select a desired frequency (also referred to as selecting a signal or bandlimiting a signal to a band of frequencies), (ii) downconvert the selected signal, (iii) bandlimit again to a narrower band of frequencies to select (for example) a signal frequency band, which in some embodiments may be referred to as a channel, (iv) demodulate the downconverted and bandlimited signal, (v) perform error correction, and (vi) demultiplex to select a desired stream of data packets. The RF section of various embodiments may include one or more elements for performing these functions, such as a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a downconverter, a demodulator, an error corrector, and a demultiplexer. The RF section may include, for example, a tuner that performs various of these functions, including downconverting a received signal to a lower frequency (e.g., an intermediate frequency or a frequency near baseband) or to baseband.

[0145] In one set-top box embodiment, the RF section and its associated input processing elements may receive RF signals transmitted over a wired (e.g., cable) medium, and the RF section may then perform frequency selection by filtering, downconverting, and filtering again to a desired frequency band.

[0146] Various embodiments rearrange the order of the above-described (and other) elements, remove some of these elements, and / or add other elements that perform similar or different functions.

[0147] Adding elements may include inserting elements between existing elements, such as inserting amplifiers and analog-to-digital converters, etc. In various embodiments, the RF section may include an antenna.

[0148] Additionally, the USB and / or HDMI terminals may include respective interface processors for connecting the system 6000 to other electronic devices via USB and / or HDMI connections. It should be understood that various aspects of input processing, e.g., Reed-Solomon error correction, may be implemented, for example, in a separate input processing IC or within the processor 6010, as desired. Similarly, aspects of the USB or HDMI interface processing may be implemented, for example, in a separate interface IC or within the processor 6010, as desired. The demodulated, error corrected, and demultiplexed stream may be provided to various processing elements, including, for example, the processor 6010 and the encoder / decoder 6030, operating in combination with memory and storage elements, to process the data stream as desired for presentation on an output device.

[0149] The various elements of system 6000 may be provided within an integrated housing in which the various elements may be interconnected and transmit data therebetween using appropriate connection arrangements 6140, e.g., internal buses, wiring, and printed circuit boards as are known in the art, including an I2C bus.

[0150] The system 6000 may include a communication interface 6050 that enables communication with other devices over a communication channel 6060. The communication interface 6050 may include, but is not limited to, a transceiver configured to transmit and receive data over the communication channel 6060. The communication interface 6050 may include, but is not limited to, a modem or a network card, and the communication channel 6060 may be implemented within a wired and / or wireless medium, for example.

[0151] In various embodiments, data may be streamed to system 6000 using a Wi-Fi network, such as IEEE 802.11. The Wi-Fi signal of these embodiments may be received over a communication channel 6060 and communication interface 6050 adapted for Wi-Fi communication. The communication channel 6060 of these embodiments may generally be connected to an access point or router that provides access to external networks, including the Internet, to enable streaming applications and other over-the-top communications.

[0152] Other embodiments may provide streamed data to the system 6000 using a set-top box that delivers data over the HDMI connection of the input block 6130.

[0153] Still other embodiments may use the RF connection of input block 6130 to provide streamed data to system 6000.

[0154] It should be understood that signaling may be achieved in various ways, for example, in various embodiments, one or more syntax elements, flags, etc. may be used to signal information to a corresponding decoder.

[0155] System 6000 may provide output signals to various output devices, including a display 6100, speakers 6110, and other peripheral devices 6120. In various example embodiments, other peripheral devices 6120 may include one or more of a standalone DVR, a disc player, a stereo system, a lighting system, and other devices that provide functionality based on the output of system 3000.

[0156] In various embodiments, control signals may be communicated between the system 6000 and the display 6100, speaker 6110, or other peripheral device 6120 using signaling such as AV.Link (Audio / Video Link), CEC (Consumer Electronics Control), or other communication protocols that allow inter-device control with or without user intervention.

[0157] Output devices may be communicatively coupled to the system 6000 via dedicated connections through respective interfaces 6070, 6080, 6090.

[0158] Alternatively, output devices may be connected to system 6000 via communication interface 6050 using communication channel 6060. Display 6100 and speakers 6110 may be integrated into a single unit along with other components of system 6000, for example, in an electronic device such as a television.

[0159] In various embodiments, the display interface 6070 may include a display driver, such as, for example, a timing controller (T Con) chip.

[0160] Alternatively, the display 6100 and speakers 6110 may be separate from one or more of the other components, for example, if the RF section of the input 6130 is part of a separate set-top box. In various embodiments in which the display 6100 and speakers 6110 may be external components, the output signal may be provided via a dedicated output connection, including, for example, an HDMI port, a USB port, or a COMP output.

[0161] As explained above, in V-PCC, 3D samples of a point cloud frame are projected (3D to 2D projection) onto two layers: a first layer, also called the near layer, may store, for example, depth values ​​D0 associated with 3D samples having a smaller depth, and a second layer, called the far layer, may store, for example, depth values ​​D1 associated with 3D samples having a larger depth.

[0162] FIG. 7 illustrates an example of a 3D to 2D projection using V-PCC.

[0163] For simplicity of representation, the rendering is done using a 2D sample point cloud frame and a 1D projection plane. 3D samples (solid squares) are projected downwards, so all black 3D samples in the same column are projected to the same location on the projection plane. Two layers, a near layer D0 and a far layer D1, are used to store the depth values ​​of the projected 3D samples.

[0164] Since two layers are used, only two 3D samples per row can be projected, and 3D samples projected to the near layer or far layer are marked as "0" or "1." Each layer value represents the distance value of the 3D sample from the projection plane. Furthermore, in V-PCC, the depth values ​​of intermediate 3D samples (located between two layers) are coded using EOM codewords, as described above. These intermediate 3D samples are marked as "I" in Figure 7.

[0165] The near layer D0 (first depth image) and the far layer D1 (second depth image) store the locations of the projected 3D samples from the projection plane. The occupancy map (image) can store the values ​​"0" (unoccupied blocks of the canvas), "1" (occupied blocks of the canvas), or "c" (the value of the EOM codeword).

[0166] FIG. 8 illustrates a schematic block diagram of an example method for encoding depth values ​​of 3D samples projected along the same projection line, according to at least one embodiment.

[0167] In step 8100, the module determines whether at least one 3D sample is projected along a projection line PL that corresponds to a location in the occupancy map OM defined by coordinates (u,v).

[0168] If the 3D sample is not projected along the projection line PL, then in step 8200, the value of the pixel located at coordinates (u,v) in the occupancy map is equal to a first value indicating an unoccupied block in the canvas, e.g., the first value is equal to 0.

[0169] Step 8200 is followed by step 8300, which considers another location in the occupancy map. The process ends when all locations have been considered.

[0170] If at least one 3D sample is projected along the projection line PL, then in step 8400, the value of the pixel located at coordinates (u,v) in the occupancy map is equal to a second value indicating an occupancy block in the canvas, e.g., the second value is equal to 1.

[0171] In step 8500, the module checks whether at least one additional 3D sample is projected along the projection line PL.

[0172] Note that in V-PCC, the depth values ​​of the two initially projected 3D samples are stored in the near and far layers, so the first additional 3D sample is the third 3D sample projected onto the projection line PL.

[0173] In V-PCC, in step 8500, the module checks whether the 3D sample location is greater than D0(u,v) and less than D1(u,v), and secondly whether D1(u,v)-D0(u,v)>1.

[0174] If no additional 3D samples are to be projected along the projection line PL, step 8500 is followed by step 8300.

[0175] If at least one additional 3D sample is to be projected along the projection line PL, then in step 8600 the module initializes the length N(u,v) of the (N-1)-bit long PCM code PCM(u,v) used to encode the depth value of the at least one additional 3D sample.

[0176] In V-PCC, N(u,v) = D1(u,v) - D0(u,v).

[0177] In step 8700, the module generates an (N-1) bit long PCM code PCM(u,v) to encode the depth value of at least one 3D sample projected along the projection line PL.

[0178] In V-PCC, the i-th bit of PCM(u,v) is equal to 1 if it indicates that the location D0(u,v)+i is occupied by the projected 3D sample, and is equal to 0 if it indicates an unoccupied location.

[0179] In step 8800, the module: Calculate the EOM codeword C(u,v) from PCM(u,v) as follows: C(u,v)=1+(2 ^(N-1) -1-PCM code)

[0180] In step 8900, the module assigns the EOM codeword to the value of the pixel in the occupancy map OM located at coordinate (u,v), ie, OM(u,v)=C(u,v).

[0181] Step 8900 is followed by step 8300 .

[0182] FIG. 9 illustrates a schematic block diagram of an example method for decoding depth values ​​of 3D samples projected along the same projection line, according to at least one embodiment.

[0183] The module considers the location of the occupancy map (OM or DOM) at coordinate (u,v) in step 9100. The process ends when all locations in the occupancy map have been considered.

[0184] In step 9200, the module determines whether the value OM(u,v) of the pixel located at coordinates (u,v) in the occupancy map indicates that no 3D sample is projected to this location along the projection line PL. OM(u,v) may be equal to another value indicating an occupancy block in the canvas. In other words, the other value indicates that the depth value of at least one projected 3D sample along the projection line PL is stored as a pixel value in a layer (near layer and / or far layer), and possibly that an EOM codeword C(u,v) representing the depth value of an additional 3D sample is stored in the occupancy map at location (u,v).

[0185] In V-PCC, in step 9200, OM(u,v)=0 indicates that no 3D sample is projected at location (u,v) and another location is considered in step 9100. OM(u,v)=1 indicates an occupied block in the canvas, and D1(u,v)-D0(u,v)>1 indicates that the depth value of at least one additional 3D sample may be stored.

[0186] If the value OM(u,v) of the pixel located at coordinates (u,v) in the occupancy map indicates that the 3D sample is not projected along the projection line PL, step 9200 is followed by step 9100, which considers another location in the occupancy map.

[0187] Otherwise, in step 9300, the module initializes the length N(u,v) of the (N-1)-bit long PCM code PCM(u,v) used to decode the depth value of at least one additional 3D sample.

[0188] In V-PCC, N(u,v) = D1(u,v) - D0(u,v).

[0189] In step 9400, the module generates an (N-1)-bit long PCM code PCM(u,v) for decoding the depth value of at least one 3D sample projected along the projection line PL from the pixel value of the occupancy map OM(u,v) at coordinates (u,v).

[0190] In V-PCC, the PCM code PCM(u,v) is derived from the EOM codeword C(u,v) as follows: PCM code (u,v) = 1 + (2 ^(N-1) -1-C(u,v) is obtained by

[0191] In step 9500, the module derives a depth value of at least one additional 3D sample from the PCM code PCM(u,v).

[0192] In a V-PCC, the depth value of the i-th 3D sample projected from D0 along the projection line PL is equal to D0(u,v)+i.

[0193] As shown in Figures 8 and 9, in V-PCC, the length of the PCM code depends on the near and far layers, so if a single layer is used, the EOM codeword cannot be calculated. Also, as shown in Figure 7, using the EOM codeword does not make it possible to encode 3D samples that are on the same projection line as the projected 3D samples marked "0" and "1," but are not between them, i.e., when the projected 3D sample is located at a distance from D0 that is greater than D1-D0. The maximum value allowed for D1-D0 is commonly called the "surface thickness," and therefore it limits the maximum possible distance from D0 for the midpoint—see examples in columns E, F, and H.

[0194] According to a general aspect of at least one embodiment, a pixel value of the occupancy map (image) indicates whether a depth value of at least one 3D sample of the point cloud frame projected along the same projection line is stored as a pixel value of at least one layer (depth image) or is equal to a fixed length codeword representing the depth value of at least one 3D sample projection along the projection line.

[0195] Using fixed-length codewords to represent depth values ​​of at least one 3D sample projected along the same projection line allows for the use of a single layer, since the PCM code length is now a fixed value that is independent of the near and far layers. Furthermore, as will be explained in more detail below, using fixed-length codewords allows for the encoding of depth values ​​of projected 3D samples that are not intermediate 3D samples, i.e., 3D samples that have depth values ​​greater than the depth values ​​stored in the far layer.

[0196] According to at least one embodiment, in steps 8600 and 9300, the module may initialize the length N(u,v) of the (N-1)-bit long PCM code PCM(u,v) as a fixed PCM code length PCML.

[0197] According to an embodiment of step 8500, when two layers D0 and D1 are used, the module may check whether the location of the additional 3D sample is greater than D0(u,v) and less than D0(u,v)+PCML.

[0198] FIG. 10 illustrates an example of determining pixel values ​​of an occupancy map OM(u,v) in accordance with at least one embodiment.

[0199] In this example, two layers (depth images) are used: Layer 0 and Layer 1. The PCM code length PCML is equal to 9, which means that eight locations of 3D samples can be encoded per PCM code (EOM codeword). The hatched squares indicate the eight locations. Note that when one of the eight locations covers a block square, the square remains black. For example, in column A, the depth value stored in the near layer is equal to 2 (black square with "0"), the depth value stored in the far layer is equal to 7 (black square with "1"), and the depth value stored as the EOM codeword is equal to c. Starting from this black square, the eight hatched squares along column A are locations 3 through 10. For clarity of representation, locations 4 and 5 remain block squares. Locations 3 through 10, including locations 4 and 5, correspond to projected 3D samples whose depth values ​​are encoded in the PCM code.

[0200] The geometry of projected 3D samples located between near layers D0 and D0+PCML can be captured even for 3D samples that are not intermediate 3D samples, as illustrated in columns E, F, and G.

[0201] As a result, using fixed-length PCM codes improves the coding efficiency of the geometry of point cloud frames.

[0202] According to an embodiment of step 8700, the module may skip encoding the depth value of the 3D sample projected along the projection line PL as bits of the PCM code PCM(u,v) if that depth value has already been encoded as a layer value (a value of the depth image).

[0203] For example, the module may calculate the current location D0(u,v)+i for each ith bit of PCM(u,v) and check whether the pixel in the near and far layers (depth images) stores such a depth value as the projected 3D sample. If so, the ith bit of PCM(u,v) is set to 0; otherwise, it is 1.

[0204] This embodiment of step 8700 avoids encoding the depth value of the same projected 3D sample twice by using the far layer and EOM codeword bits, and as illustrated in Figure 10, when the fixed length PCM code FLPCM is greater than the maximum distance between the near and far layers (maximum surface thickness), columns A, B, C, E, F, and H for the black squares are marked as "1".

[0205] This embodiment of step 8700 is also advantageous because it may extend the area covered, as will be further explained in connection with FIG.

[0206] FIG. 11 illustrates an example of determining pixel values ​​of an occupancy map OM(u,v) according to a deformation.

[0207] The PCM code length PCML is equal to 9. For example, in column A, bits b0...b7 refer to locations 3...10, respectively, of the PCM code associated with column A. In this example, the depth value at location 7 of column A is already encoded in the far layer and will not be encoded as an EOM codeword. Thus, bits b4,...,b7 of the PCM code may now refer to locations 8,...,11, extending the range from location 2 (the near layer) to 11 locations.

[0208] A similar situation occurs for location 3 in column E, location 2 in column F, and location 2 in column H.

[0209] Note that the dotted white squares marked with a "1" refer to 3D sample locations whose depth values ​​are already stored in a layer. For example, location 2 in column H refers to a 3D sample depth value stored in the far layer.

[0210] According to an embodiment of step 9200, when a single layer D0 is used, the module may determine whether the value OM(u,v) of a pixel located at coordinates (u,v) in the occupancy map indicates that no 3D sample is projected to this location along the projection line PL (e.g., OM(u,v)=0). OM(u,v) may also be equal to another value indicating an occupancy block in the canvas. In other words, the other value indicates that the depth value of at least one projected 3D sample along the projection line PL is to be stored as a pixel value in layer D0, and possibly that an EOM codeword C(u,v) representing the depth value of an additional 3D sample is to be stored at location (u,v) in the occupancy map.

[0211] FIG. 12 illustrates an example of determining pixel values ​​of an occupancy map OM(u,v) in accordance with at least one embodiment.

[0212] In this example, a single layer is used, namely layer 0. The PCM code length PCML is equal to 9. For example, in column A, the depth value stored in the single layer is equal to 2 (black square with "0"). Starting from this black square, the eight hatched squares along column A are locations 3 through 10. Locations 4, 5, and 7 remain black squares, corresponding to the projected 3D samples whose depth values ​​are encoded in the PCM code.

[0213] According to the embodiment of the method illustrated in Figures 8 and 9, information INFO1 may be signaled, indicating whether a fixed length PCM code is used or not.

[0214] According to this embodiment, the information INFO1 may possibly be added to a bitstream transmitted over a network, and the information may possibly be extracted (obtained) from a bitstream received from a communication means.

[0215] According to this embodiment, the module may obtain information INFO1 from the bitstream indicating whether a fixed-length codeword is used. If the information INFO1 indicates that a fixed-length PCM code is not used, the length of the PCM code may be derived from two layers, as in V-PCC, in both step 8600 of FIG. 8 and step 9300 of FIG. 9. Then, a depth value is derived from the PCM code, which may have different lengths. If the information INFO1 indicates that a fixed-length PCM code is used, the length of the PCM code may be equal to the PCM code length PCML, which may be known on the encoding side and the decoding side. Then, a depth value is derived from the fixed-length codeword.

[0216] In a variant, the PCM code length PCML may be assumed to be equal to the bit depth of the occupancy map. For example, if the occupancy map is encoded using 8 bits per color component, the PCM code length PCML is automatically set to be 8, which means that there are 7 bits in the PCM code.

[0217] Although this variant offers the least flexibility for optimizing the length of the EOM codeword, it is also the simplest approach.

[0218] According to an embodiment, information INFO2 representing the PCM code length PCML may be signaled.

[0219] According to this embodiment, the information INFO2 may be added to a bitstream, possibly transmitted over a network, and then the information may be extracted from a bitstream, possibly received from a communication means.

[0220] According to an embodiment, the information INFO1 and / or INFO2 may be signaled at a sequence level, so that to encode a sequence of point cloud frames, a single value of the information INFO1 and a single value of the information INFO2 may be signaled.

[0221] FIG. 13 illustrates example syntax elements used to signal information INFO1 and INFO2, according to at least one embodiment.

[0222] In this example, information INFO1 is the syntax element "sps_enhanced_occupancy_map_code_fixed_bit_count_flag" and information INFO2 is the syntax element "sps_enhanced_occupancy_map_code_fixed_bit_count" which is signaled in the syntax element "sequence_parameter_set".

[0223] According to an embodiment, the information INFO1 and / or INFO2 may be signaled in a dedicated parameter set.

[0224] FIG. 14 illustrates example syntax elements used to signal information INFO1 and INFO2, according to at least one embodiment.

[0225] In this example, information INFO1 is the syntax element "ops_occupancy_code_fixed_bit_count_flag" and information INFO2 is the syntax element "ops_occupancy_code_bit_count_minus1" which is signaled in the syntax element "ops_parameter_set".

[0226] According to an embodiment variant, the information INFO1 and / or INFO2 may be signaled as syntax elements of the geometry parameter set.

[0227] According to an embodiment of the method, the information INFO1 and / or INFO2 may be signaled on a frame-by-frame basis.

[0228] This embodiment requires a higher bit rate since the information INFO1 and / or INFO2 is transmitted more frequently, but allows for a better adjustment of the encoding / decoding method for each frame.

[0229] In a variant of the embodiment, the information INFO1 and / or INFO2 may be signaled as syntax elements of the geometry_frame_params unit (section 7.3.18 of the V-PCC).

[0230] In a variant of the embodiment, the information INFO1 and / or INFO2 may be signaled as a syntax element of an occupancy_frame_params unit, similar to a geometry frame parameter unit, together with a corresponding occupancy_frame_parameter_set unit and a corresponding patch sequence unit type (e.g., PSD_OFPS, occupancy frame parameter set, see Table 7-4 of V-PCC).

[0231] According to an embodiment of the method, the information INFO1 and / or INFO2 may be signaled for each patch.

[0232] This embodiment requires a higher bit rate since the information INFO1 and / or INFO2 is transmitted more frequently, but allows for a better adjustment of the encoding / decoding method for each patch.

[0233] According to an embodiment variant, the information INFO1 and / or INFO2 may be signaled as syntax elements of the patch_data unit and the delta_patch_data unit.

[0234] According to an embodiment variant, the information INFO1 and / or INFO2 may be signaled as syntax elements of the geometry_patch_params unit (section 7.3.22 of the V-PCC).

[0235] According to an embodiment variant, the information INFO1 and / or INFO2 may be signaled as syntax elements of an occupancy_patch_params unit together with the corresponding occupancy_patch_parameter_set unit.

[0236] 1-14, various methods are described, each of which includes one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for the proper operation of the method, the order and / or use of specific steps and / or actions may be varied or combined.

[0237] Some examples are described with reference to block diagrams and operational flowcharts. Each block represents a circuit element, module, or portion of code that includes one or more executable instructions for implementing a specified logical function. It should also be noted that in other implementations, the functions noted in the blocks may occur out of the order shown. 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.

[0238] The implementations and aspects described herein may be embodied in, for example, a method or process, an apparatus, a computer program, a data stream, a bit stream, or a signal. Even if discussed in connection with only a single form of implementation (e.g., discussed only as a method), the implementation of the discussed features may also be embodied in other forms (e.g., an apparatus or a computer program).

[0239] The methods may be implemented, 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 communications devices.

[0240] Additionally, the methods may be implemented by instructions executed by a processor, and such instructions (and / or data values ​​produced by the implementation) may be stored on a computer-readable storage medium. The computer-readable storage medium may take the form of a computer-readable program product having computer-readable program code embodied thereon and executable by a computer, embodied in one or more computer-readable media. As used herein, a computer-readable storage medium may be considered a non-transitory storage medium given the inherent capability of storing information therein and providing for the 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 embodiments may be applied, although it should be understood that this is merely an illustrative list and not an exhaustive list, as would be readily understood 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 disk 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] The instructions may be in, for example, hardware, firmware, software, or a combination thereof. The instructions may be found, for example, in an operating system, a separate application, or a combination of the two. A processor may thus be characterized as both a device configured to perform a process and a device that includes a processor-readable medium (such as a storage device) having instructions for performing the process. Furthermore, the processor-readable medium may store data values ​​produced by the performance in addition to or in place of instructions.

[0243] The apparatus may be implemented, for example, in appropriate hardware, software, and firmware. Examples of such apparatus include personal computers, laptops, smartphones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected consumer electronics, head-mounted display devices (HMDs, see-through glasses), projectors (beamers), "caves" (systems including multiple displays), servers, video encoders, video decoders, post-processors that process output from video decoders, pre-processors that provide input to video encoders, web servers, set-top boxes, and any other devices for processing point clouds, videos, or images, or other communication devices. As will be apparent, the equipment may be mobile, or even installed in a moving vehicle.

[0244] The computer software may be implemented by the processor 6010, or by hardware, or by a combination of hardware and software. As a non-limiting example, embodiments may also be implemented by one or more integrated circuits. The memory 6020 may be of any type suitable for the technology environment and may be implemented using any suitable data storage technology, such as, by way of non-limiting examples, optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory. The processor 6010 may be of any type suitable for the technology environment and may include, by way of non-limiting examples, one or more of a microprocessor, a general-purpose computer, a special-purpose computer, and a processor based on a multi-core architecture.

[0245] As will be apparent to those skilled 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 a bitstream of the described embodiments. Such a signal may be formatted, for example, as an electromagnetic wave (e.g., using the radio frequency portion of the spectrum) or as a baseband signal. Formatting may include, for example, encoding a data stream and modulating a carrier wave with the encoded data stream. The information carried by the signal 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.

[0246] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the singular forms "a," "an," and "the" may be intended to include the plural, unless the context clearly dictates otherwise. It will be further understood that as used herein, the terms "includes," "comprises," and / or "including," may specify the presence of stated features, integers, steps, operations, elements, and / or components, for example, 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 said to be "responsive to" or "connected to" another element, it may be directly responsive to or connected to the other element, or intervening elements may be present. In contrast, when an element is said to be "directly responsive to" or "directly connected to" another element, intervening elements are not present.

[0247] For example, it should be understood that the use of any of the symbols / terms " / ," "and / or," and "at least one of" in the cases of "A / B," "A and / or B," and "at least one of A and B" may be intended to encompass the selection of only the first enumerated alternative (A), or the selection of only the second enumerated alternative (B), or the selection of both alternatives (A and B). As a further example, in the cases of "A, B, and / or C" and "at least one of A, B, and C," such language is intended to encompass the selection of only the first enumerated alternative (A), or the selection of only the second enumerated alternative (B), or the selection of only the third enumerated alternative (C), or the selection of only the first and second enumerated alternatives (A and B), or the selection of only the first and third enumerated alternatives (A and C), or the selection of only the second and third enumerated alternatives (B and C), or the selection of all three alternatives (A, B, and C). This can be expanded to include as many items as listed, as would be apparent to one skilled in this and related arts.

[0248] For example, various numerical values ​​may be used in this application. The specific numerical values ​​may be for illustrative purposes, and the described aspects are not limited to these specific numerical values.

[0249] Although terms such as "first," "second," etc. may be used herein to describe various elements, it will be understood that these elements are not limited by these terms. These terms are merely used to distinguish one element from another. For example, a first element could be referred to as a second element, and similarly, a second element could be referred to as a first element, without departing from the teachings of the present application. No ordering between a first element and a second element is implied.

[0250] References to "one embodiment" or "embodiment," or "one implementation" or "implementation," and other variations thereof, are frequently used to convey that particular features, structures, characteristics, etc. (described in connection with an embodiment / implementation) are included in at least one embodiment / implementation. Thus, the appearances of the phrases "in one embodiment" or "in an embodiment," or "in one implementation" or "in an implementation," and any other variations thereof, in various places throughout this application are not necessarily all referring to the same embodiment.

[0251] Similarly, references herein to "according to an embodiment / example / implementation" or "in an embodiment / example / implementation," and other variations thereof, are frequently used to convey that a particular feature, structure, or characteristic (described in connection with an embodiment / example / implementation) may be included in at least one embodiment / example / implementation. Thus, appearances of the phrase "according to an embodiment / example / implementation" or "in an embodiment / example / implementation" in various places within this specification are not necessarily all referring to the same embodiment / example / implementation, and different or alternative embodiments / examples / implementations are not necessarily mutually exclusive of other embodiments / examples / implementations.

[0252] Reference numerals appearing in the claims are for illustrative purposes only and shall have no limiting effect on the scope of the claims. Although not explicitly described, the present embodiments / examples and variations can be utilized in any combination or subcombination.

[0253] When a figure is presented as a flow diagram, it should be understood that it also provides a block diagram of the corresponding apparatus. Similarly, when a figure is presented as a block diagram, it should be understood that it also provides a flow diagram of the corresponding method / process.

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

[0255] Various implementations include decoding. "Decoding," as used herein, may encompass, for example, all or part of the processes performed on received point cloud frames (possibly including a received bitstream that encoded one or more point cloud frames) to produce a final output suitable for display or suitable for further processing in the reconstructed point cloud domain. In various embodiments, such processes include one or more of the processes generally performed by image-based decoders. In various embodiments, such processes also include, or alternatively include, for example, the processes performed by decoders of various implementations described herein.

[0256] As a further example, in one embodiment, "decoding" may refer only to entropy decoding, in another embodiment, "decoding" may refer only to differential decoding, and in another embodiment, "decoding" may refer to a combination of entropy decoding and differential decoding. Whether the phrase "decoding process" refers specifically to a subset of operations or generally to a broader decoding process will be clear based on the context of the specific description and is believed to be well understood by those skilled in the art.

[0257] Various implementations include encoding. In a manner similar to the above discussion of "decoding," "encoding," as used herein, may encompass all or part of the processes performed on, for example, an input point cloud frame to generate an encoded bitstream. In various embodiments, such processes include one or more of the processes typically performed by an image-based decoder.

[0258] As a further example, in one embodiment, "encoding" may refer only to entropy encoding, in another embodiment, "encoding" may refer only to differential encoding, and in another embodiment, "encoding" may refer to a combination of differential encoding and entropy encoding. Whether the phrase "encoding process" refers specifically to a subset of operations or generally to a broader encoding process will be clear based on the context of the specific description and is believed to be well understood by one of ordinary skill in the art.

[0259] It should be noted that as used herein, syntax elements, e.g., sps_enhanced_occupancy_map_code_fixed_bit_count_flag, sps_enhanced_occupancy_map_code_fixed_bit_count, ops_occupancy_code_fixed_bit_count_flag, ops_occupancy_code__bit_count_minus1, ops_parameter_set, occupancy_frame_params unit, patch_data unit, occupancy_patch_params unit, are descriptive terms, and as such, they do not preclude the use of other syntax element names.

[0260] Various embodiments refer to rate-distortion optimization. In particular, during the encoding process, a balance or trade-off between rate and distortion is typically considered, often subject to computational complexity constraints. Rate-distortion optimization can be formulated as minimizing a rate-distortion function, which is typically a weighted sum of rate and distortion. Different approaches exist for solving the rate-distortion optimization problem. For example, an approach can be based on extensive testing of all encoding options, including all considered modes or coding parameter values, with a thorough evaluation of their coding costs and the associated distortion of the reconstructed signal after encoding and decoding. To reduce encoding complexity, faster approaches can also be used, particularly those that use approximated distortion calculations based on non-reconstructed prediction or prediction residual signals. A hybrid of these two approaches can also be used, such as by using approximated distortion for only some of the possible encoding options and full distortion for others. Other approaches evaluate only a subset of the possible encoding options. More generally, many approaches utilize any of a variety of techniques to perform optimization, but the optimization is not necessarily a complete assessment of both the coding cost and the associated distortion.

[0261] Additionally, the application may refer to "determining" various information. Determining information may include, for example, one or more of estimating information, calculating information, predicting information, or retrieving information from memory.

[0262] Additionally, the application may refer to "accessing" various information. Accessing information may include, for example, one or more of receiving information, retrieving information (e.g., from a memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.

[0263] Additionally, the application may refer to "receiving" various information. "Receiving," like "accessing," is intended to be a broad term. Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from a memory). Furthermore, "receiving" is generally included in various ways during operations such as, for example, storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.

[0264] Also, as used herein, the word "signal" refers, among other things, to indicating something to a corresponding decoder. For example, in certain embodiments, an encoder signals specific information INFO1 and / or INFO2. In this way, in embodiments, the same parameters may be used at both the encoder and decoder sides. Thus, for example, an encoder may transmit specific parameters to a decoder so that the decoder may use the same specific parameters (explicit signaling). Conversely, if the decoder already has specific parameters and so on, signaling may be used without transmission to simply enable the decoder to know and select the specific parameters (implicit signaling). By avoiding transmission of any actual functions, bit savings are realized in various embodiments. It should be understood that signaling may be achieved in various ways. For example, in various embodiments, one or more syntax elements, flags, etc. are used to signal information to a corresponding decoder. Although the foregoing relates to the verb form of the word "signal," the word "signal" may also be used as a noun in this specification.

[0265] Numerous 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, those skilled in the art will understand that other structures and processes may be substituted for those disclosed, with the resulting implementations performing at least substantially the same function, in at least substantially the same way, to achieve at least substantially the same results as the disclosed implementations. Accordingly, these and other implementations are contemplated by the present application. [Explanation of symbols]

[0266] 1000 point cloud encoding structures 2000 point cloud decoding structure 3000 Encoder 4000 decoder 6000 System

Claims

1. decoding pixel values ​​of the occupancy map, the pixel value indicates whether a pixel of a first depth image representing a projection of a first 3D sample of a point cloud onto a projection plane along a projection line is occupied; the pixel value includes a code word concatenating bits indicating whether a position along the projection line located between a first depth value and a second depth value of the pixel obtained from the first depth image is occupied or not. And, decoding first information indicating whether the codeword has a fixed length; if the first information indicates that the codeword has a fixed length, decoding second information indicating a length of the codeword, the second depth value being obtained from the first depth value and the length of the codeword; Otherwise, the second depth value is obtained from a second depth image, and the length of the codeword is obtained as a difference between the second depth value and the first depth value; reconstructing at least one other 3D sample for at least one position along the projection line indicated as being occupied by one bit of the codeword; A method comprising:

2. The method of claim 1 , wherein the first and second information are signaled with respect to a sequence of point cloud frames.

3. 2. The method of claim 1 , wherein the first and second information are signaled on a per-frame or per-patch basis, a patch being a set of 2D samples representing the projection of a 3D sample of a point cloud frame.

4. encoding pixel values ​​of an occupancy map, the pixel values ​​indicating whether a pixel of a first depth image representing a projection of a first 3D sample of a point cloud onto a projection plane along a projection line is occupied or not, the pixel values ​​comprising a codeword concatenating bits indicating whether a position along the projection line located between a first depth value and a second depth value of the pixel obtained from the first depth image is occupied or not; encoding first information indicating whether the codeword has a fixed length; encoding the first depth image; if the first information indicates that the codeword has a fixed length, encoding second information indicating a length of the codeword, the second depth value being obtained from the first depth value and the length of the codeword; otherwise, encoding a second depth image, wherein the second depth value is obtained from the second depth image, and the length of the codeword is obtained as a difference between the second depth value and the first depth value; A method comprising:

5. Decode the pixel values ​​of the occupancy map, the pixel value indicates whether a pixel of a first depth image representing a projection of a first 3D sample of a point cloud onto a projection plane along a projection line is occupied or not, the pixel value comprising a code word concatenating bits indicating whether a position along the projection line located between a first depth value and a second depth value of the pixel obtained from the first depth image is occupied or not; decoding first information indicating whether the codeword has a fixed length; if the first information indicates that the codeword has a fixed length, decoding second information indicating a length of the codeword, the second depth value being obtained from the first depth value and the length of the codeword; otherwise, the second depth value is obtained from a second depth image, and the length of the codeword is obtained as the difference between the second depth value and the first depth value; reconstructing at least one other 3D sample for at least one position along said projection line indicated as being occupied by one bit of said codeword; 10. An apparatus comprising: one or more processors configured to:

6. The apparatus of claim 5 , wherein the first and second information are signaled with respect to a sequence of point cloud frames.

7. encoding pixel values ​​of an occupancy map, the pixel values ​​indicating whether a pixel of a first depth image representing a projection of a first 3D sample of a point cloud onto a projection plane along a projection line is occupied or not, the pixel values ​​comprising a codeword concatenating bits indicating whether a position along the projection line located between a first depth value and a second depth value of the pixel obtained from the first depth image is occupied or not; encoding first information indicating whether the codeword has a fixed length; encoding the first depth image; if the first information indicates that the codeword has a fixed length, encoding second information indicating a length of the codeword, the second depth value being obtained from the first depth value and the length of the codeword; Otherwise, encode a second depth image, the second depth value being obtained from the second depth image, and the length of the codeword being obtained as the difference between the second depth value and the first depth value.

10. An apparatus comprising: one or more processors configured to:

8. one or more processors, decoding pixel values ​​of an occupancy map, the pixel values ​​indicating whether a pixel of a first depth image representing a projection of a first 3D sample of a point cloud onto a projection plane along a projection line is occupied or not, the pixel values ​​comprising a codeword concatenating bits indicating whether a position along the projection line located between a first depth value and a second depth value of the pixel obtained from the first depth image is occupied or not; decoding first information indicating whether the codeword has a fixed length; if the first information indicates that the codeword has a fixed length, decoding second information indicating a length of the codeword, the second depth value being obtained from the first depth value and the length of the codeword; Otherwise, the second depth value is obtained from a second depth image, and the length of the codeword is obtained as a difference between the second depth value and the first depth value; reconstructing at least one other 3D sample for at least one position along the projection line indicated as being occupied by one bit of the codeword; A non-transitory computer-readable medium comprising instructions for causing a

9. one or more processors, encoding pixel values ​​of an occupancy map, the pixel values ​​indicating whether a pixel of a first depth image representing a projection of a first 3D sample of a point cloud onto a projection plane along a projection line is occupied or not, the pixel values ​​comprising a codeword concatenating bits indicating whether a position along the projection line located between a first depth value and a second depth value of the pixel obtained from the first depth image is occupied or not; encoding first information indicating whether the codeword has a fixed length; encoding the first depth image; if the first information indicates that the codeword has a fixed length, encoding second information indicating a length of the codeword, the second depth value being obtained from the first depth value and the length of the codeword; otherwise, encoding a second depth image, wherein the second depth value is obtained from the second depth image, and the length of the codeword is obtained as a difference between the second depth value and the first depth value; A non-transitory computer-readable medium comprising instructions for causing a

Citation Information

Patent Citations

  • Point cloud data transmitting device, point cloud data transmitting method, point cloud data receiving device, and point cloud data receiving method

    JP2023509086A

  • Image processing apparatus and image processing method

    US20200013168A1

  • Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method

    US20210209807A1

  • Image processing device and image processing method

    WO2018150933A1