Method and device for encoding and reconstructing missing points of a point cloud - Patents.com
By subdividing the bounding box and encoding point cloud attributes within subdivisions, the method addresses inefficiencies in existing image-based compression, achieving efficient and lossless compression of dynamic point clouds.
Patent Information
- Application Number
- JP2024165504
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-03-14
- Filing Date
- 2024-09-24
- Publication Date
- 2026-01-14
- Estimated Expiration
- 2039-10-04
AI Technical Summary
Existing image-based point cloud compression techniques face inefficiencies when projecting point clouds with complex surfaces or non-surface distributions, leading to poor compression efficiency and quality, especially in dynamic point clouds used for immersive worlds.
Subdivide the bounding box enclosing the point cloud into multiple subdivisions, encode data representing point attributes by referencing the subdivision, and encode the number of points in each subdivision, allowing for efficient lossless compression.
Enables lossless encoding and reconstruction of point clouds of any size, improving compression efficiency and quality, particularly for dynamic point clouds used in immersive worlds.
Smart Images

Figure 0007798992000002 
Figure 0007798992000003 
Figure 0007798992000004
Abstract
Description
[Technical Field]
[0001] The present embodiments relate generally to the coding and reconstruction of points of a point cloud. In particular, but not exclusively, the technical field of the present embodiments relates to the encoding / reconstruction of point clouds representing the exterior surfaces of 3D objects. [Background technology]
[0002] This section is intended to introduce the reader to various aspects of the art, which may be related to various aspects of the present embodiments, which are described and / or claimed below. The discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present embodiments. Accordingly, it should be understood that statements are to be read in this light, and not as admissions of prior art.
[0003] A point cloud is a collection of points (data points) in a coordinate system. In a three-dimensional coordinate system (3D space), the points mentioned are usually intended to represent the exterior surface of a 3D object. Often, each point in a point cloud is defined by its position (X, Y, and Z coordinates in 3D space) and possibly other associated attributes such as color, expressed for example in RGB or YUV color space, transparency, reflectance, a two-component normal vector, etc.
[0004] It is usual to represent a point cloud as a set of six-component points (X,Y,Z,R,G,B) or equivalently (X,Y,Z,Y,U,V), where (X,Y,Z) define the coordinates of a colored point in 3D space, and (R,G,B) or (Y,U,V) define the color of said colored point.
[0005] A point cloud can be static or dynamic, depending on whether the cloud evolves over time. It should be noted that in the case of a dynamic point cloud, the number of points is not constant, but rather generally evolves over time. Hence, a dynamic point cloud is a time-ordered list of a set of points.
[0006] In fact, point clouds can be used for various purposes, such as cultural heritage / buildings, where objects such as statues or buildings are scanned in 3D to share the spatial configuration of the object without having to send it or visit it. Furthermore, it is a way to ensure preserving knowledge about objects in case they are destroyed, for example a temple due to an earthquake. Usually, said point clouds are static, colored, and large.
[0007] Another use case is in topographical mapping and cartography, where 3D representations are used and maps are not limited to flat surfaces but may include relief. Now, Google Maps is a good example of a 3D map, but it uses meshes instead of point clouds. Nevertheless, point clouds can be a suitable data format for 3D maps, and typically, said point clouds are static, colored, and large.
[0008] Additionally, the automotive industry and autonomous vehicles are also areas where point clouds may be used. Autonomous vehicles should be able to "probe" their environment to make better driving decisions based on the reality of their immediate surroundings. Conventional sensors such as LIDAR generate dynamic point clouds that are used by decision engines. These point clouds are not intended to be viewed by humans, are usually small, are not necessarily colored, and are dynamic due to frequent capture. These point clouds may also have other attributes, such as reflectivity provided by LIDAR, which can provide good information about the material of the sensed object and aid in decision making.
[0009] Virtual reality and immersive worlds have become a hot topic recently and are foreseen by many people as the future of 2D flat video. The basic understanding is to immerse the viewer in the environment all around him, in contrast to standard television, where he can only see the virtual world in front of him. There are several gradations in the sense of immersion according to the viewer's freedom in the environment. Colored point clouds are a good candidate format for distributing virtual reality (or VR) worlds. They can be static or dynamic, and are usually of average size, said to be only a few million points at a time.
[0010] Point cloud compression will only be successful in storing / transmitting 3D objects for immersive worlds if the size of the bitstream is small enough to make practical storage / transmission possible to the end user.
[0011] Being able to distribute dynamic point clouds to end users with reasonable bitrate consumption while maintaining an acceptable (or preferably very good) quality of experience is crucial. Efficient compression of the dynamic point clouds just described is key to making the distribution chain for immersive worlds viable.
[0012] Image-based point cloud compression techniques are becoming increasingly popular due to their combination of compression efficiency and low complexity. They proceed through two main steps: First, the point cloud, i.e., points, are projected (orthogonally projected) onto a 2D image representing attributes associated with the points of the point cloud. For example, at least one geometry image represents the geometry of the point cloud, i.e., the spatial coordinates of the points in 3D space, and at least one attribute image represents other attributes associated with the points of the point cloud, e.g., texture / color information associated with those points. Next, the just-described technique encodes the depth and attribute images using a conventional video encoder.
[0013] Image-based point cloud compression techniques achieve excellent compression performance by taking full advantage of the capabilities of 2D video encoders such as HEVC ("ITU-T H.265 ITU Telecommunication Standardization Sector (October 2014), H Series: Audiovisual and Multimedia Systems, Infrastructure for Audiovisual Services - Coding of Moving Video, High Efficiency Video Coding, ITU-T H.265 Recommendation"), while at the same time keeping complexity low by using a simple projection scheme.
[0014] One challenge for image-based point cloud compression techniques is that the point cloud may not be suitable for projection onto an image, especially when the point distribution follows a surface with many folds (concave / convex areas such as in clothing) or when the point distribution does not follow the surface at all (such as in fur or hair). In the situations just mentioned, image-based point cloud compression techniques suffer from low compression efficiency (many small projections are required, reducing the efficiency of 2D video compression) or poor quality (due to the difficulty of projecting the point cloud onto a surface).
[0015] One approach used in the state-of-the-art to mitigate the problem just mentioned is to project multiple geometry and texture information onto the same spatial location (pixel) of the image, which means that several geometry and / or attribute images may be generated for each point in the point cloud.
[0016] For example, what has just been said is the case for so-called Test Model Category 2 point cloud encoders (TMC2), as defined in ISO / IEC JTC1 / SC29 / WG11 MPEG2018 / N17767, Ljubljana, July 2018.
[0017] In TMC2, a point cloud is orthogonally projected onto a projection plane. Two depth values, one representing the depth value associated with the closest point (minimum depth value) and the other representing the depth value of the furthest point (maximum depth value), are then associated with each coordinate on the projection plane. A first geometry image is then generated from the minimum depth value (D0), and a second geometry image is generated from the absolute value of the maximum depth value (D1) where D1-D0 is less than or equal to the maximum surface thickness. Furthermore, first and second attribute images are also generated in association with the first (D0) and second (D1) geometry images. Both the attribute image and the geometry image are then encoded and decoded using any conventional video codec, such as HEVC. Thus, the geometry of the point cloud is reconstructed by deprojecting the decoded first and second geometry images, and other attributes associated with the reconstructed point cloud points are obtained from the decoded attribute images. Summary of the Invention
[0018] The following presents a simplified summary of the present embodiments in order to provide a basic understanding of some aspects of the present embodiments. This summary is not an extensive overview of the present embodiments. It is not intended to identify key or critical elements of the present embodiments. The following summary simply presents some aspects of the present embodiments in a simplified form as a prelude to the more detailed description provided below.
[0019] The present aspect sets out to remedy at least one of the shortcomings of the prior art by methods including: - subdividing a bounding box bounding the points of the point cloud into multiple subdivisions; - encoding data representing the attributes of a point by reference to the subdivision to which said point belongs; and -Encoding data representing the number of points contained in each subdivision.
[0020] According to an embodiment, the method further includes obtaining a single 2D patch including data representing attributes of the points.
[0021] According to an embodiment, the method further includes obtaining a 2D patch for the subdivision when said subdivision includes at least one of said points.
[0022] According to an embodiment, the subdivision of such bounding boxes depends on the bit depth of the encoder used to encode the points.
[0023] According to an embodiment, the attributes of a point correspond to the geometry or texture / color information of said point.
[0024] According to an aspect, the points are obtained by comparing the points of the input point cloud with the points of the reconstructed point cloud, said reconstructed point cloud being obtained by: - obtaining at least one geometry and attribute image by projection of some points of said input point cloud onto a projection plane; encoding said at least one geometry and attribute image; and - reconstructing points of said reconstructed point cloud by decoding said at least one geometry and attribute image.
[0025] According to another aspect, at least one of the present embodiments relates to a method including: - decoding data representing attributes of a point of a point cloud by referencing the subdivision to which said point belongs, said subdivision being one of a plurality of subdivisions obtained by dividing a bounding box bounding said point of said point cloud; - decoding data representing the number of points contained in each subdivision of said bounding box; and - reconstructing point attributes from said decoded data.
[0026] According to an embodiment, attributes of the points are reconstructed from said decoded data to reconstruct the points of the reconstructed point cloud by decoding at least one of the geometry and attribute images.
[0027] According to an embodiment, reconstructing the attributes of the point further includes obtaining a 2D patch for the subdivision from the decoded geometry image, and obtaining 3D coordinates of the point from coordinates obtained from the pixel value 2D patch and coordinates of a reference point of the 2D patch.
[0028] According to an embodiment, the method further includes obtaining a 2D patch for the subdivision when said subdivision includes at least one of said points.
[0029] According to an embodiment, the subdivision of such bounding box depends on the bit depth of the decoder used to decode the points.
[0030] According to an embodiment, the attributes of a point correspond to the geometry or texture / color information of said point.
[0031] According to other aspects, the present invention relates to an apparatus, a bitstream, a computer program product, and a non-transitory readable medium.
[0032] The particular nature of the present embodiment, as well as other objects, advantages, features, and uses of the present embodiment, will become apparent from the following description of examples taken in conjunction with the accompanying drawings.
[0033] In the drawings, examples of this embodiment are illustrated, which show: [Brief explanation of the drawings]
[0034] [Figure 1] 1 shows a schematic diagram of steps of a method 100 for encoding attributes of points of a point cloud according to an example embodiment. [Figure 2] 2 shows a schematic diagram of steps of a method 200 for decoding data representing a point cloud from a bitstream according to an example of the present embodiment. [Figure 3] 1 illustrates two remote devices communicating over a communication network according to an example of the present embodiment. [Figure 4] 1 illustrates a signal syntax according to an example of the present aspect. [Figure 5] 10 shows examples of syntax elements used to carry information needed by a decoder to reconstruct missing points of a point cloud according to an embodiment. [Figure 6] 10 shows examples of syntax elements used to carry information needed by a decoder to reconstruct missing points of a point cloud according to an embodiment. [Figure 7] 10 shows examples of syntax elements used to carry information needed by a decoder to reconstruct missing points of a point cloud according to an embodiment. [Figure 8] 10 shows examples of syntax elements used to carry information needed by a decoder to reconstruct missing points of a point cloud according to an embodiment. [Figure 9] 10 shows examples of syntax elements used to carry information needed by a decoder to reconstruct missing points of a point cloud according to an embodiment. [Figure 10] 10 shows examples of syntax elements used to carry information needed by a decoder to reconstruct missing points of a point cloud according to an embodiment. [Figure 11] 1 illustrates a block diagram of an example system in which various aspects and embodiments according to example embodiments may be implemented. DETAILED DESCRIPTION OF THE INVENTION
[0035] Similar or identical elements are referred to by the same reference numerals.
[0036] The present embodiments will be described more fully below with reference to the accompanying drawings, in which examples of the present embodiments are shown. However, the present embodiments may be embodied in many alternative forms and should not be construed as limited to the examples set forth herein. Accordingly, while the present embodiments are susceptible to various modifications and alternative forms, specific examples thereof are shown by way of example in the drawings and are described in detail herein. There is no intention, however, to limit the present embodiments to the particular forms disclosed; on the contrary, it should be understood that the specification covers all modifications, equivalents, and alternatives falling within the spirit and scope of the present embodiments, as defined by the claims.
[0037] The terminology used herein is for the purpose of describing particular examples only and is not intended to limit the present embodiment. As used herein, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly dictates otherwise. Furthermore, as used herein, the terms "comprises," "comprising," "includes," and / or "includes" will be understood to specify the presence of stated features, integers, steps, operations, elements, and / or components, but not to 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 "coupled" to another element, it may be directly responsive to or coupled to the other element, or an intervening element may be provided. In contrast, when an element is said to be "directly responsive to" or "directly coupled" to another element, there is no provision for an intervening element. As used herein, the term "and / or" includes any and all combinations of one or more of the associated listed items and may be abbreviated as " / ".
[0038] It will be understood that the terms "first," "second," etc. may be used herein to describe various elements, and that these elements should not be limited by these terms. The terms used herein are only 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 embodiment.
[0039] Some of the figures include arrows on communication paths to indicate the primary direction of communication, although it is understood that communication may occur in the opposite direction to the depicted arrow.
[0040] Some examples are described with reference to block diagrams and operational flowcharts, where each block represents an element of a circuit, a module, or a portion of code that includes one or more executable instructions for implementing a particular logical function(s). It should also be noted that in other implementations, the function(s) noted in the blocks may occur out of the order noted. For example, two blocks shown in succession may in fact be executed substantially concurrently, or the blocks may sometimes be executed in the opposite order according to the functionality involved.
[0041] As used herein, references to "according to an example" or "in an example" mean that a particular feature, structure, or characteristic described in connection with an example can be included in at least one implementation of the aspect. Appearances of the phrases "according to an example" or "in an example" in various places throughout this specification do not necessarily all refer to the same example, nor do separate or alternative examples necessarily mutually exclusive of other examples.
[0042] Reference signs appearing in the claims are by way of illustration only and shall have no limiting effect on the scope of the claims.
[0043] Although not expressly stated, the present embodiments and variations may be used in any combination or subcombination.
[0044] In the following, the term "image region" refers to a set of pixels for at least one image, which may or may not be and / or may or may not belong to adjacent pixels for the same or non-identical images, but all of which share at least one common property.
[0045] For example, the entire image itself may be considered to be an image region. Additionally, an image may be divided into blocks, and then a block or group of blocks is an image region.
[0046] Furthermore, image regions may have shapes that are not rectangular. For example, what has just been mentioned is the case where image pixels with the same (or similar) extracted features are associated to form an image region. An image region may be a patch as defined in TMC2.
[0047] Examples of features extracted from an image may be color, texture, normal vectors, etc.
[0048] Some figures show syntax tables widely used in TMC2 to define the structure of bitstreams conforming to TMC2. In the syntax tables just described, the term "..." denotes parts that remain unchanged with respect to the original definition given in TMC2 and parts that have been removed in the figures for readability. Terms in bold 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 that 8 bits are used to encode the data, and ae(v) indicates a syntax element that has been context-adaptive arithmetic entropy coded.
[0049] Syntax elements as used herein are descriptive terms. As noted above, they do not preclude the use of other syntax element names.
[0050] Although this embodiment is described for encoding / decoding one or more geometry images and one or more attribute images representing a point cloud, it extends to encoding / decoding two sequences (videos) of geometry images and two sequences (videos) of attribute images representing a sequence of point clouds (a temporally dynamic point cloud), since the geometry (two geometry images) and attributes (two attribute images) of a point cloud in the sequence of point clouds are then encoded / decoded separately from the geometry (two geometry images) and attributes (two attribute images) of another point cloud in the sequence of point clouds.
[0051] When encoding and / or reconstructing a point cloud, data can be lost, leading to a partial reconstruction of the input point cloud. This loss of information can create problems when rendering the input point cloud.
[0052] TMC2 offers excellent rate-distortion performance for lossy compression scenarios. However, when lossless compression is required, the compression performance drops significantly because a large number of patches need to be created to capture the isolated points (missing points).
[0053] Another alternative encodes isolated points as special patches without considering potential correlations between them and those captured in the "regular" patches (resulting from the projection of points onto the projection plane). The basic understanding is to use TMC2 to project a point cloud onto the projection plane and capture the missing points (isolated points) of the point cloud, i.e., points not represented by the geometry / attribute image. The X coordinate, followed by the Y coordinate, and finally the Z coordinate of each missing / isolated point are stacked into a single vector to generate a "special" patch representing the "missing point" patch. Then, the aforementioned patch is stored in a single channel (component) of a 10-bit 4:2:0 geometry image (for more details, see ISO / IEC JTC1 / SC29 / WG11 MPEG2018 / m42680, April 2018, San Diego, CA, USA).
[0054] The alternative just mentioned limits the range of coordinates of missing points to the maximum range (1024 when the usual 10-bit 4:2:0 video format is used). This is an emphasis because the coordinates of missing / isolated points are stored as absolute values, i.e. the stored coordinate values are defined from the origin (0,0,0) of the bounding box that bounds the point cloud.
[0055] Generally speaking, at least one embodiment relates to a method for encoding / reconstructing attributes of missing / isolated points, but the method may also be applied to encoding / reconstructing attributes for any other points in a point cloud. Thus, the method may be considered an alternative to image-based point cloud compression techniques, such as TMC2, for encoding (and reconstructing) attributes of points in a point cloud. Furthermore, the method may be considered as a means to improve lossy image-based point cloud compression techniques, such as TMC2, by providing lossless compression of point clouds (encoding missing points).
[0056] The encoding method involves subdividing the bounding box that bounds the points to be encoded, encoding data representing the attributes of the points by referencing the subdivision to which said points belong, and encoding data representing the number of points contained in each subdivision.
[0057] The decoding method decodes encoded data representing the attributes of the point by referencing the subdivision to which the point belongs, the subdivision being one of a plurality of subdivisions obtained by dividing a bounding box bounding the point, and further decodes encoded data representing the number of points contained in each subdivision of the bounding box and reconstructs the point from the decoded data.
[0058] Subdividing the bounding box that bounds the point to be encoded and encoding the data representing the attributes of the point by reference to the subdivision to which said point belongs reduces the number of bits required to represent the attributes of the point, for example the range of coordinate values of the said point may be reduced compared to the prior art, since the said coordinate may be defined from the reference point of the subdivision to which said point belongs and not from the reference point of the bounding box.
[0059] The present invention enables lossless encoding of PointCloud images / videos of any size, regardless of the bit depth of the video encoded by the Video TMC2 Point Cloud Encoder.
[0060] FIG. 1 shows a schematic diagram of the operation of a method 100 for encoding attributes of at least some points of an input point cloud according to an example embodiment.
[0061] The operations may be part of a broader encoding process and may be implemented by device 13000 of FIG.
[0062] In operation 110, attributes of the aforementioned points are encoded by encoder M1. The attributes may correspond to geometry (or depth or distance to the viewpoint) information and / or texture (or color) information. For example, the points are "clustered" and encoded as Connected Components (see TMC2) as described in TMC2. For example, the points of each connected component may be projected onto a projection plane, and the attributes of the projected points are stored in so-called 2D patches (sets of pixels) of at least one set of geometry and attribute images. Furthermore, metadata representing the projection parameters used to obtain the 2D patches may also be encoded by encoder M1. For example, encoder M1 follows a conventional encoder such as: ·JPEG, Specification ISO / CEI 10918-1 UIT-T T.81 Recommendation, https: / / www.itu.int / rec / T-REC-T.81 / en, Also known as AVC, MPEG-4 AVC, or h264. Specified in both UIT-T H.264 and ISO / CEI MPEG-4 Part 10 (ISO / CEI14496-10), http: / / www.itu.int / rec / T-REC-H.264 / en. HEVC (specification can be found on the ITU website, T Recommendation, H Series, h265, http: / / www.itu.int / rec / T-REC-H.265-201612-I / en), or 3D-HEVC (an extension to HEVC whose specification can be found on the ITU website, Recommendation T, H-series, h265, http: / / www.itu.int / rec / T-REC-H.265-201612-I / en annex G and I).
[0063] In operation 120, the data encoded by encoder M1 is decoded by decoder M2, and the point cloud is reconstructed from the decoded data, i.e., from decoded attributes obtained from the at least one decoded geometry / attribute image, and from metadata representing projection parameters, e.g., as revealed in TMC2. Decoder M2 follows a conventional decoder depending on encoder M1, e.g., as follows: JPEG, AVC, also known as MPEG-4 AVC or h264, HEVC, or 3D-HEVC (an extension of HEVC).
[0064] In operation 130, implemented by module M3, the reconstructed point cloud is compared with the input point cloud. Missing points may be detected in the reconstructed point cloud that were present in the input point cloud.
[0065] In operation 140, the bounding box bounding the missing points detected in operation 130 is subdivided into multiple subdivisions.
[0066] According to an aspect, the bounding box bounding the missing points may correspond to the bounding box bounding the input point cloud.
[0067] According to an embodiment, the bounding box may correspond to a cube (or more generally a parallelogram) that is subdivided into multiple sub-cubes.
[0068] According to an aspect, the subdivisions of the bounding box may be bounded to a particular bit-depth, such as, for example, the bit-depth (typically 8-bit / 10-bit) of the encoder used to encode the points of the input point cloud and / or the missing points. Hence, the size and / or dimensions of the subdivisions (e.g., faces of the subcubes) may not exceed said particular bit-depth (and may be represented using at most said maximum number of bits).
[0069] Therefore, the method may be adapted to the constraints (bit depth) of the encoder used to encode the geometry and attribute images in TMC2. According to an embodiment, the bounding box is divided into sub-cubes using an octree-based method.
[0070] Essentially, the cube is recursively divided into eight smaller subcubes. Leaf cubes are populated and noted or not, depending on whether they have at least one missing point.
[0071] In an embodiment, the octree depth is a constant value.
[0072] In a variant of the embodiment just described, a cube index is sent for each subcube.
[0073] In variants of the just-described embodiment, a traversal order, e.g., depth-first or breadth-first, is sent or assumed.
[0074] In a variant of the manner just described, the octree depth is sent.
[0075] In an aspect, the octree depth is variable.
[0076] In a variant of the embodiment just described, the occupied leaves of the splitting octree are sent.
[0077] In a variant of the just described embodiment, there is no index patching at the defect points, and the metadata is patched in the same order as the traversal order.
[0078] In a variant, the depth of the octree depends on the bit depth of the encoder used to encode the input point cloud and / or the missing points.
[0079] According to an embodiment, the clustering algorithm is based on the input bit depth of the video codec (2 if n is equal to the bit depth). n ), while respecting the following maximum size constraints for subcubes: (1) ≡ (1 / 2) = 1 / 2 ≡ (2 / 3) = 1 / 2 ≡ (3 / 4) = 1 / 2 ≡ (4 / 5) = 1 / 2 ≡ (5 / 6) = 1 / 2 ≡ (6 / 7) = 1 / 2 ≡ (7 / 8) = 1 / 2 ≡ (8 / 9) = 1 / 2 ≡ (9 / 10) = 1 / 2 ≡ (1 / 3) = 1 / 2 ≡ (1 / 4) = 1 / 2 ≡ (1 / 5 ...
[0080] In operation 150, one or more 2D patches are obtained by module M5, the one or more patches including data representing attributes of each of the aforementioned missing points.
[0081] According to one example, a single 2D patch is obtained.
[0082] According to another example, one 2D patch is obtained (or generated) for a subdivision of the bounding box when said subdivision includes at least one of said missing points.
[0083] According to an embodiment, data representing attributes of points belonging to a 2D patch related to a subdivision are encoded as follows:
[0084] For each defect point, data representing the just-mentioned defect point attributes are stored and associated with the pixels of a "defect point" patch (a single 2D patch or 2D patches related to a subdivision). The just-mentioned data can then be represented by reference to the reference point of the "defect point" patch. For example, the coordinates of a defect point are represented by the differential dx, dy and dz coordinates calculated from the reference point of the subdivision containing the defect point considered. The dX coordinate, followed by the dY coordinate and finally the dZ coordinate of each defect point are stacked into a single vector. All vectors generated for all defect points to which said subdivision belongs are then used to generate the "defect point" patch.
[0085] All the "missing point" patches (one per subdivision) are then packed into a geometry image, thus containing "regular" patches representing the attributes of at least some of the points in the input point cloud (step 110), and "missing point" patches representing the attributes of the missing points.
[0086] In operation 160, data representing the attributes of the missing points is encoded by referencing the subdivision to which the missing points belong. Additionally, data representing the number of missing points contained in each subdivision may also be encoded by encoder M6.
[0087] The following algorithm used to encode data representing attributes of missing points is given for illustrative purposes as follows: -The input point cloud to the code is 2048 3 If the bounding box is one of the sizes and the video codec has 10-bit depth (e.g., HEVC main10) -Bounding box is 1024 3 can be divided into 8 subcubes of size -For each subcube If there is at least one missing point inside Create a MissingPointsPatch object that stores the position of the subcube in the bonding box. Update the origin (u1,v1,d1) of the subcube Update the number of missing points Create a 2D patch MissingPointsPatch in the geometry image (packing algorithm) Update the position (u0,v0) in the geometry image to help with the decoding process Add the differential coordinates (dX, dY, dZ) of each missing point (X, Y, Z) in the geometry image sequentially as follows: 〇dX=X-u1,dY=Y-v1,dZ=Z-d1 ·Add the corresponding attributes (color components (R, G, B)) in the attribute image sequentially.
[0088] A bitstream BT is obtained, which contains encoded data representing the attributes of the missing points, said encoded data relating to the subdivision to which the missing points belong, possibly also data representing the number of missing points contained in each subdivision.
[0089] The bitstream BT may be transmitted, for example, for decoding purposes and / or for rendering of the reconstructed point cloud.
[0090] For example, the encoding method of FIG. 1 may be incorporated into an encoding process according to TMC2.
[0091] FIG. 2 shows a schematic diagram of the operation of a method 200 for decoding attributes of points of a point cloud according to an example embodiment.
[0092] In operation 210, decoder M7 may decode the encoded data contained in bitstream BT, which may be the output of the method of Figure 1. Such encoded data represents attributes of the points.
[0093] Additionally, the bitstream BT may also include encoded data representing the number of points contained in each of a number of subdivisions obtained by subdividing a bounding box that bounds the points.
[0094] The decoder M7 decodes the number of points contained in each subdivision and the encoded data representing the attributes of the points by referencing the subdivision to which the points belong. Decoder M7 may correspond to decoder M2 of FIG. 1 and may, for example, follow a conventional decoder such as: JPEG, AVC, also known as MPEG-4 AVC or h264, HEVC, or 3D-HEVC (an extension of HEVC).
[0095] In operation 220, implemented by module M8, at least a portion of the input point cloud is reconstructed from the decoded data obtained in the preceding operation.
[0096]
number
[0097] contains at least the missing point in the reconstructed version.
[0098] For example, the decoding method of FIG. 2 may be incorporated into a decoding process according to TMC2.
[0099] According to an aspect, the missing points may be reconstructed by referencing the subdivision from the decoded data representative of the attributes of the missing points as follows:
[0100] The "missing point" patch is decoded from the decoded geometry image. Then, a vector of coordinates related to the missing point is obtained from the "missing point" patch, and the dX, dY, dZ coordinates related to said missing point are retrieved from the vector.
[0101] Then the 3D coordinates (Xrec,Yrec,Zrec) of the defect point are given by adding the dX, dY, dZ coordinates to the coordinates (u1,v1,z1) of the reference point of the "defective point" patch (element of PatchList[i]). Xrec=dX+PatchList[i].u1 Yrec=dY+PatchList[i].v1 Zrec=dZ+PatchList[i].d1 The relevant attributes of the point to be reconstructed are obtained from the attribute image, for example as the pixel value located at (Xrec, Yrec).
[0102] According to an embodiment, a "missing point" patch is obtained for a subdivision when said subdivision contains at least one missing point.
[0103] According to an embodiment, the subdivision of the bounding box depends on the bit depth of the decoder used to decode the missing points.
[0104] According to an embodiment, the attributes of the missing points correspond to the geometry or texture / color information of said missing points.
[0105] According to the example embodiment illustrated in FIG. 3, in the context of a transmission between two remote devices A and B over a communications network NET, device A includes a processor in relationship to memory RAM and ROM configured to implement the method described in relation to FIG. 1, and device B includes a processor in relationship to memory RAM and ROM configured to implement the method described in relation to FIG. 2.
[0106] Following the example, the network is still a broadcast network adapted to broadcast pictures or video pictures from device A to decoding devices including device B.
[0107] The signal intended to be transmitted by device A carries a bitstream BT, which includes coded data representing depth values of points of the point cloud, at least one reconstructed point of the point cloud, and at least one coding mode of interpolation indicating how at least one point in the neighborhood of the at least one reconstructed point is approximated by at least one other interpolated point.
[0108] For example, the aforementioned encoded data may be obtained as illustrated in connection with FIG.
[0109] Figure 4 shows an example of the syntax of the above signals when data is transmitted via a packet-based transmission protocol. Each transmitted packet P includes a header H and a payload PAYLOAD. An example of syntax elements included in the above signals is given in TMC2.
[0110] To reconstruct the geometry (2D position) of the missing points, the decoder needs to know the reference point (x1,y1,z1) of the subdivision (usually the origin) and the number of missing points (num_of_mps) for each "missing point" patch to reconstruct all missing points.
[0111] Several syntax elements in TMC2 are used to carry the encoded data necessary to reconstruct the missing points.
[0112] FIG. 5 shows an example of syntax elements used to carry information needed by a decoder to reconstruct missing points of a point cloud according to this embodiment.
[0113] The syntax element just described is based on the "group_of_frames_auxiliary_information" syntax element defined in TMC2.
[0114] The syntax element patch_count indicates the total number of patches including the "missing point" patch. The syntax element mps_patch_count indicates the number of "missing point" patches in the geometry image, and furthermore, the syntax element num_of_mps[i] is added to indicate the number of missing points in each "missing point" patch i. The last patch (from "patch_count-mps_patch_count") in the geometry image is the "missing point" patch.
[0115] FIG. 6 shows an example of syntax elements used to carry information needed by a decoder to reconstruct all missing points of a point cloud according to this embodiment.
[0116] The syntax element just described is based on the "group_of_frames_auxiliary_information" syntax element defined in TMC2.
[0117] In an embodiment, the last patch is a "missing point" patch in the geometry image.
[0118] The syntax element patch_count indicates the total number of patches excluding "missing point" patches. The syntax element mps_patch_count indicates the number of "missing point" patches in the geometry image, and the syntax element num_of_mps[i] is added to indicate the number of missing points in each "missing point" patch i. The last patch (from "patch_count-mps_patch_count") in the geometry image is a "missing point" patch.
[0119] FIG. 7 shows an example of syntax elements used to carry information needed by a decoder to reconstruct missing points of a point cloud according to this embodiment.
[0120] The syntax elements just described are based on the "sequence parameter set" syntax element defined in TMC2.
[0121] The syntax element sps_pcm_multiple_patch_present_flag indicates whether Multiple PCM patches are used.
[0122] The syntax element sps_pcm_relative_3D_offset indicates whether the 3D offset is transmitted absolutely or relatively in the PCM patch syntax. A value of 0 indicates absolute mode, a value of 1 indicates relative mode (offset value is coded by one index).
[0123] The syntax element sps_pcm_relative_3D_offset indicates the maximum number of PCM patches. The value just mentioned is used to encode PCM patch indices when the mode sps_pcm_relative_3D_offset_flag is set to 1.
[0124] FIG. 8 shows an example of syntax elements used to carry information needed by a decoder to reconstruct missing points of a point cloud according to this embodiment.
[0125] The syntax elements just described are based on the "patch_frame_data_unit" syntax element defined in TMC2.
[0126] The additional syntax (gray shaded area) adds parsing for additional types of patch data units and is used to signal the presence of an EOM texture patch.
[0127] FIG. 9 shows an example of syntax elements used to carry information needed by a decoder to reconstruct missing points of a point cloud according to this embodiment.
[0128] The syntax elements just described are based on the "pcm_patch_data_unit" syntax element defined in TMC2.
[0129] FIG. 10 shows an example of syntax elements used to carry information needed by a decoder to reconstruct missing points of a point cloud according to this embodiment.
[0130] The syntax elements just described are based on the "pcm_patch_data_unit" syntax element defined in TMC2.
[0131] Additional data is introduced as follows: pdu_3d_pcm_shift_tangent_axis[frmIdx][patchIndex] specifies the shift applied to the reconstructed PCM patch point in the patch with index p of patch frame frmIdx along the tangent axis. The value of pdu_3d_shift_tangent_axis[frmIdx][p] must be between 0 and Min(2 pfh_3d_shift_tangent_axis_bit_count_minus1[frmIdx]+1 ,2 gps_geometry_3d_coordinates_bitdepth_minus1+1 -1). pdu_3d_pcm_shift_bitangent_axis[frmIdx][patchIndex] specifies the shift applied to the PCM reconstructed patch point in the patch with index p of patch frame frmIdx along the bitangent axis. The value of pdu_3d_shift_bitangent_axis[frmIdx][patchIndex] ranges from 0 to Min(2 pfh_3d_shift_bitangent_axis_bit_count_minus1[frmIdx]+1 ,2 gps_geometry_3d_coordinates_bitdepth_minus1+1 -1). pdu_3d_pcm_shift_normal_axis[frmIdx][patchIndex] specifies the shift applied to the PCM reconstructed patch point in the patch with index p of the patch frame frmIdx along the normal axis. The value of pdu_3d_shift_normal_axis[frmIdx][patchIndex] ranges from 0 to Min(2 pfh_3d_shift_normal_axis_bit_count_minus1[frmIdx]+1 ,2 gps_geometry_3d_coordinates_bitdepth_minus1 The range must be between +1 and -1. dpdu_3d_relative_shift_index[frmIdx][patchIndex] specifies an index that allows to calculate three 3D shift values (tangent, bitangent, and normal). The decoding process of the just mentioned index, explained in xxxxx, calculates the following three parameters: ·pdu_3d_pcm_shift_tangent_axis[frmIdx][p] ·pdu_3d_pcm_shift_bitangent_axis[frmIdx][p] ·pdu_3d_pcm_shift_normal_axis[frmIdx][p]
[0132] According to an embodiment, the encoding method may generate one additional patch, an OEM texture patch, representing the attribute of the missing point. This patch may be packed into the attribute image. Furthermore, patch information for this additional patch may be encoded.
[0133] According to an embodiment, the decoding method may obtain an OEM texture patch according to one of the syntaxes described above, and the attributes of the missing points may be obtained from said OEM texture patch according to the parameters in the OEM texture patch (as well as eventually fixed parameters such as sorting and rasterization mode).
[0134] According to an aspect, dpdu_3d_relative_shift_index is decoded as follows: The inputs to the process just described are: dpdu_3d_relative_shift_index gps_geometry_nominal_2d_bitdepth_minus1 from geometry_parameter_set() gps_geometry_3d_coordinates_bitdepth_minus1 from geometry_parameter_set() The output of the process just described is: pdu_3d_pcm_shift_tangent_axis pdu_3d_pcm_shift_bitangent_axis pdu_3d_pcm_shift_normal_axis
[0135] dpdu_3d_relative_shift_index specifies the index to be decoded. gps_geometry_nominal_2d_bitdepth_minus1 indicates the nominal 2D bitdepth to which all geometry videos must be converted. gps_geometry_nominal_2d_bitdepth_minus1 must be in the range from 0 to 31. gps_geometry_3d_coordinates_bitdepth_minus1 indicates the bitdepth of the geometry coordinates of the reconstructed point cloud. gps_geometry_3d_coordinates_bitdepth_minus1 must be in the range from 0 to 31.
[0136] The bounding box of the reconstructed point cloud may be divided into a set of subcubes. Each subcube is indexed by an index. The result of decoding the above indexes gives the 3D position of each subcube (3D PCM box).
[0137] The size of the bounding box of the reconstructed point cloud may be given by the bit depth of the 3D coordinates in the reconstructed point cloud parameters (gps_geometry_3d_coordinates_bitdepth_minus1).
[0138] The size of the 3D PCM box may be given by the bit depth of the geometry video parameter (gps_geometry_nominal_2d_bitdepth_minus1). The faces of the 3D PCM box are 2 gps_geometry_nominal_bitdepth_minus1+1 is equal to.
[0139] So the difference between gps_geometry_3d_coordinates_bitdepth_minus1 and gps_geometry_nominal_2d_bitdepth_minus1 indicates the number of 3D position indices in one 3D axis. n = gps_geometry_3d_coordinates_bitdepth_minus1 - gps_geometry_nominal_2d_bitdepth_minus1; pdu_3d_pcm_shift_normal_axis = (dpdu_3d_relative_shift_index & 2n-1) * 2gps_geometry_nominal_bitdepth_minus1+1; pdu_3d_pcm_shift_tangent_axis = (dpdu_3d_relative_shift_index & (2n-1) << (2n-1)) * 2gps_geometry_nominal_bitdepth_minus1+1 pdu_3d_pcm_shift_bitangent_axis = (dpdu_3d_relative_shift_index & 2 * (2n-1) << (2n-1)) *2gps_geometry_nominal_bitdepth_minus1+1 example) gps_geometry_3d_coordinates_bitdepth_minus1 = 14; 2gps_geometry_nominal_bitdepth_minus1 = 10; pdu_3d_pcm_shift_normal_axis = (index & 0x000f) * 1024); pdu_3d_pcm_shift_tangent_axis = (index & 0x00f0) * 1024); pdu_3d_pcm_shift_bitangent_axis = (index & 0x0f00) * 1024); In the example just given, each 3D coordinate is coded by 4 bits.
[0140] An index value equal to 0x0123 gives the following result: pdu_3d_pcm_shift_normal_axis = 3 * 1024 = 3072, pdu_3d_pcm_shift_tangent_axis = 2 * 1024 = 2048, pdu_3d_pcm_shift_bitangent_axis = 1 * 1024 = 1024,
[0141] According to an embodiment, points of a point cloud are reconstructed from PCM encoded patches as follows. The inputs to the process just described are: gFrame, the decoded geometry frame aFrame, the decoded attribute frame recPc, a container for holding the list of points in the reconstructed point cloud.
[0142] pointsAdded, a variable indicating the number of points already added to the list of points in the reconstructed point cloud.
[0143] patch, the patch whose points are searched for and added to the list of points in the reconstructed point cloud (the process assumes that the input patch is a PCM-encoded patch).
[0144] The output of the process just described is a reversibly reconstructed point cloud in recPC. First, the patch information is retrieved as follows: pdu_2d_shift_u = patch.pdu_2d_shift_u pdu_2d_shift_v = patch.pdu_2d_shift_v Patch2dSizeU = patch.pdu_3d_shift_tangent_axis - patch.pdu_2d_shift_u Patch2dSizeV = patch.pdu_3d_shift_bitangent_axis - patch.pdu_2d_shift_v occupancyResolution = patch.occupancy_resolution If the Lossless_geometry_444 flag is equal to 0, the points are retrieved from the PCM encoded patches stored in the geometry frame using the 4:4:4 format specified in Clause 0 of TMC2.
[0145] Searching for points from PCM-encoded patches stored in 4:4:4 geometry frames The points from the PCM coded patch are retrieved and added to the reconstructed point cloud as follows: 3d_pcm_shift [0] = pdu_3d_pcm_shift_tangent_axis 3d_pcm_shift [1] = pdu_3d_pcm_shift_bitangent_axis 3d_pcm_shift [2] = pdu_3d_pcm_shift_normal_axis for( x = Patch2dShiftU ; x < Patch2dShiftU + Patch2dSizeU; x++ ) for( y = Patch2dShiftV; y < Patch2dShiftV + Patch2dSizeV; y++ ) if( oFrame[ y ][ x ] != 0 ){ for( i = 0; i < 3; i++ ) point[ i ] = gFrame
[0000] [ i ][ y ][ x ] + 3d_pcm_shift[i] }
[0146] FIG. 11 illustrates a block diagram of an example system in which various aspects and embodiments can be implemented. System 11000 can be embodied as a device including various components described below and configured to perform one or more aspects described herein. Examples of such devices include, but are not limited to, various electronic devices, such as personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television broadcast receivers, personal video recording systems, connected consumer electronics appliances, and servers. Elements of system 11000, singly or in combination, can be embodied in a single integrated circuit, multiple ICs, and / or separate components. For example, in at least one embodiment, the processing and encoder / decoder elements of system 11000 are distributed across multiple ICs and / or separate components. In various embodiments, system 11000 is communicatively coupled to other similar systems or other electronic devices, for example, via a communication bus or via dedicated input and / or output ports. In various aspects, the system 11000 is configured to implement one or more aspects described in this document.
[0147] The system 11000 includes at least one processor 11010 configured to execute instructions loaded therein to implement various aspects described herein, for example. The processor 11010 can include embedded memory, input / output interfaces, and various other circuits as known in the art. The system 11000 includes at least one memory 11020 (e.g., a volatile memory device and / or a non-volatile memory device). The system 11000 includes a storage device 11040, which can include non-volatile and / or volatile memory including, but not limited to, EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, magnetic disk drives, and / or optical disk drives. The storage device 11040 can include, by way of non-limiting example, an internal storage device, an attached storage device, and / or a network-accessible storage device.
[0148] The system 11000 includes an encoder / decoder module 11030 configured to process data to provide, for example, encoded or decoded video, which may include its own processor and memory. The encoder / decoder module 11030 represents a module or modules that may be included in a device that performs 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 11030 may be implemented as a separate element of the system 11000 or may be incorporated within the processor 11010 as a combination of hardware and software, as known to those skilled in the art.
[0149] Program code loaded onto the processor 11010 or encoder / decoder 11030 to perform various aspects described herein may be stored in the storage device 11040 and subsequently loaded onto the memory 11020 for execution by the processor 11010. According to various aspects, one or more of the processor 11010, memory 11020, storage device 11040, and encoder / decoder module 11030 may store one or more various items during execution of the processes described herein. Such stored items may include, but are not limited to, input video, decoded video, point clouds, reconstructed point clouds or portions of decoded video, bitstreams, matrices, variables, and intermediate or final results from processing equations, formulas, operations, and operational logic.
[0150] In some embodiments, memory internal to the processor 11010 and / or encoder / decoder module 11030 is used to store instructions and provide working memory for processing required during encoding or decoding.
[0151] However, in other aspects, memory external to the processing device (e.g., the processing device can be either the processor 11010 or the encoder / decoder module 11030) is used for one or more of the just-mentioned functions. The external memory can be memory 11020 and / or storage device 11040, e.g., dynamic volatile memory and / or non-volatile flash memory. In some aspects, external non-volatile flash memory is used to store the television's operating system. In at least one aspect, high-speed external dynamic volatile memory, such as RAM, is used as working memory for video encoding and decoding operations, e.g., for MPEG-2, HEVC, VVC (Versatile Video Coding), or TMC2.
[0152] Input to the elements of system 11000 can be provided via various input devices, as shown in block 11130. Such input devices include, but are not limited to, (i) an RF section that receives RF signals transmitted over the air by, for example, a broadcast station, (ii) a composite input terminal, (iii) a USB input terminal, and / or (iv) an HDMI input terminal.
[0153] In various embodiments, the input devices of block 11130 are associated with respective input processing elements known in the art. For example, the RF section may be associated with elements necessary to (i) select a desired frequency (also referred to as selecting a signal or band-limiting a signal to a band of frequencies), (ii) downconvert the selected signal, (iii) band-limit again to a narrower band of frequencies (e.g., selecting a single frequency band, which in some embodiments may be referred to as a channel), (iv) demodulate the downconverted, band-limited signal, (v) perform error correction, and (vi) demultiplex to select a desired stream of data packets. The RF section of various embodiments includes one or more elements that perform the functions just described, such as a frequency selector, signal selector, band limiter, channel selector, filter, downconverter, demodulator, error corrector, and demultiplexer. The RF section may include, for example, a tuner that performs various functions, including downconverting a received signal to a lower frequency (e.g., an intermediate frequency or a frequency near baseband) or to baseband.
[0154] In one set-top box embodiment, the RF section and associated input processing elements receive RF signals transmitted over a wired medium (e.g., cable), filter, downconvert, and perform frequency selection by filtering again to the desired frequency band.
[0155] Various embodiments rearrange the order of the above-described (and other) elements, remove some of the just-described elements, and / or add other elements that perform similar or different functions.
[0156] Adding elements can include inserting elements between existing elements, such as inserting amplifiers, analog-to-digital converters, etc. In various embodiments, the RF section includes an antenna.
[0157] Additionally, the USB and / or HDMI terminals may include respective interface processors for coupling the system 11000 to other electronic devices over USB and / or HDMI. It will 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, if desired, within the processor 11010. Similarly, aspects of the USB or HDMI interface processing may be implemented in a separate input processing IC or, if desired, within the processor 11010. The demodulated, error corrected, and demultiplexed stream is provided to various processing elements, including, for example, the processor 11010 and an encoder / decoder 11030, which operates in cooperation with memory and storage elements to process the data stream for presentation at an output device, if desired.
[0158] The various elements of system 11000 can be provided within an integrated housing in which the various elements can be interconnected and transmit data therebetween using suitable coupling arrangements, such as internal buses known in the art, including I2C buses, wiring, and printed circuit boards.
[0159] The system 11000 includes a communication interface 11050 that enables communication with other devices over a communication channel 11060. The communication interface 11050 may include, but is not limited to, a transceiver configured to transmit and receive data over the communication channel 11060. The communication interface 11050 may include, but is not limited to, a modem or a network card, and the communication channel 11060 may be implemented within a wired and / or wireless medium, for example.
[0160] Data may be streamed to the system 11000 in various embodiments using a Wi-Fi network, such as IEEE 802.11. The Wi-Fi signal in the embodiment just described is received via a communication channel 11060 and communication interface 11050 adapted for Wi-Fi communication. Typically, the communication channel 11060 in the embodiment just described is coupled to an access point or router that provides access to outside networks, including the Internet, to enable streaming applications and other over-the-top communications.
[0161] Another embodiment provides streamed data to the system 11000 using a set-top box that delivers data via an HDMI connection in input block 11130.
[0162] Yet another aspect provides streamed data to the system 11000 using the RF connection of input block 11130.
[0163] System 11000 is capable of providing output signals to various output devices, including a display 11100, speakers 11110, and other peripheral devices 11120. In various example embodiments, other peripheral devices 11120 include one or more standalone DVRs, disc players, stereo systems, lighting systems, and other devices that provide functionality based on the output of system 11000.
[0164] In various aspects, control signals are communicated between the system 11000 and a display 11100, speaker 11110, or other peripheral device 11120 using signaling such as AV.Link, CEC, or other communication protocols that enable device-to-device control with or without user intervention.
[0165] Output devices can be communicatively coupled to the system 11000 via dedicated connections through respective interfaces 11070, 11080, and 11090.
[0166] Alternatively, the output device can be coupled to the system 11000 via a communication interface 11050 using a communication channel 11060. The display 11100 and speakers 11110 can be integrated with other components of the system 11000 in a single unit, for example, in an electronic device such as a television.
[0167] In various embodiments, the display interface 11070 includes a display driver, such as a timing controller (T Con) chip.
[0168] Alternatively, the display 11100 and speakers 11110 can be separate from one or more other components, for example, if the RF portion of the input 11130 is part of a separate set-top box. In various aspects where the display 11100 and speakers 11110 are external components, the output signal can be presented via a dedicated output connection including, for example, an HDMI port, a USB port, or a COMP output.
[0169] Implementations of the various processes and features described herein may be embodied in a variety of separate devices or applications. Examples of such devices include encoders, decoders, post-processors that process output from decoders, pre-processors that provide input to encoders, video coders, video decoders, video codecs, web servers, set-top boxes, laptops, personal computers, cell phones, PDAs, and any other device for processing pictures or videos or other communication devices. To be clear, the devices may be mobile, even mounted in a moving vehicle.
[0170] Additionally, the method may be implemented by instructions executed by a processor, and the instructions (and / or data values produced by the implementation) may be stored in a computer-readable storage medium. The computer-readable storage medium may take the form of a computer-readable program product having computer-readable program code embodied in one or more computer-readable medium(s) and executable by a computer. As used herein, a computer-readable storage medium is considered to be a non-transitory storage medium endowed with the inherent capability of storing information therein as well as the inherent capability of providing information retrieval therefrom. For example, the computer-readable storage medium may be, but is 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 recording media to which aspects of the present invention may be applied, although it will be understood that this is merely an illustrative and not an exhaustive list, as would be readily understood by one of ordinary skill in the art, including a portable computer diskette, a hard disk, a read-only memory (ROM), a rewritable read-only memory (EPROM or flash memory), a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.
[0171] The instructions may form an application program tangibly embodied on a processor-readable medium.
[0172] For example, instructions may be in hardware, firmware, software, or a combination. For example, instructions may be found in an operating system, a separate application, or a combination of both. A processor may therefore be characterized as, for example, both a device configured to perform a process and a device that includes a processor-readable medium (e.g., a storage device) having instructions for performing a process. Furthermore, a processor-readable medium may store data values produced by an implementation in addition to or in place of instructions.
[0173] As will be apparent to those skilled in the art, implementations may generate various signals formatted to carry information that may be stored or transmitted, for example. For example, the information may include instructions for performing a method or data generated by one of the described implementations. For example, the signal may be formatted to carry, as data, rules for writing or reading the syntax of the described examples of this embodiment, or to carry, as data, the actual syntax values written by the described examples of this embodiment. For example, the signal may be formatted as an electromagnetic wave (e.g., using the radio frequency portion of the spectrum) or as a baseband signal. For example, formatting may include encoding a data stream and modulating a carrier wave with the encoded data stream. For example, the information carried by the signal may be analog or digital information. The signal may be transmitted over various separate wired or wireless links, as is known. The signal may be stored in a processor-readable medium.
[0174] Many 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 implementation performing at least substantially the same function(s) as the disclosed implementations, in at least substantially the same way(s) as the disclosed implementations, to achieve substantially the same result(s) as the disclosed implementations. Accordingly, the above-described implementations and other implementations are contemplated by this application. [Explanation of symbols]
[0175] 100 ways 110 operation 120 operations 130 operation 140 operation 150 operations 160 operation 200 ways 210 operation 220 operation
Claims
1. decoding the geometry image; obtaining a patch from the geometry image, the pixel values of the patch comprising differential 3D coordinates of at least one point of a point cloud; decoding information representing three shift values to be applied to points reconstructed from said patch along the tangential, bitangential, and normal axes, respectively; obtaining 3D coordinates of reference points of the patch from the information representing the three shift values and a bit depth of a decoder used to decode the geometry image; reconstructing the 3D coordinates of the at least one point by adding the differential 3D coordinates of the at least one point to the 3D coordinates of the reference point; A method comprising:
2. The method described in claim 1, characterized in that the information representing the three shift values is an index that makes it possible to determine the three shift values.
3. 3. The method of claim 1, wherein decoding the information representing the three shift values is based on a difference between a bit depth used to represent 3D coordinates of points of the point cloud and the bit depth of the decoder used to decode the geometry image.
4. 4. The method according to claim 1, wherein the reference point is the origin of a subdivision of the point cloud, the subdivision being one of a plurality of subdivisions obtained by dividing a bounding box bounded by points of the point cloud.
5. 5. The method according to claim 1, wherein the patch is a patch for encoding 3D coordinates of missing points of the point cloud, the missing points being points of the point cloud that are not projected onto a projection plane.
6. 6. The method of claim 1, wherein the geometry image further comprises at least one regular patch containing depth data of the points of the point cloud projected onto a projection plane.
7. A method according to any one of claims 1 to 6, characterized in that it comprises decoding information indicating the number of patches for encoding missing points.
8. A method according to any one of claims 1 to 7, characterized in that it comprises decoding information indicating the number of points in the patch.
9. Decode the geometry image, obtaining a patch from the geometry image, the pixel values of the patch comprising differential 3D coordinates of at least one point of the point cloud; decoding information representing three shift values to be applied to points reconstructed from said patch along the tangent, bitangent, and normal axes, respectively; obtaining 3D coordinates of a reference point of the patch from the information representing the three shift values and a bit depth of a decoder used to decode the geometry image, and reconstructing the 3D coordinates of the at least one point by adding the differential 3D coordinates of the at least one point to the 3D coordinates of the reference point.
10. An apparatus comprising one or more processors configured to:
10. The device of claim 9, wherein the information representing the three shift values is an index that enables the three shift values to be determined.
11. 11. The apparatus according to claim 9 or 10, wherein the information representing the three shift values is decoded based on a difference between a bit depth used to represent 3D coordinates of points of the point cloud and the bit depth of the decoder used to decode the geometry image.
12. An apparatus described in any one of claims 9 to 11, characterized in that the patch is a patch for encoding the 3D coordinates of a missing point of the point cloud, and the missing point is a point of the point cloud that is not projected onto a projection plane.
13. An apparatus described in any one of claims 9 to 12, characterized in that the one or more processors are configured to decode information indicating the number of patches for encoding missing points.
14. The apparatus of claim 9, wherein the one or more processors are configured to decode information indicating the number of points in the patch.
15. A non-transitory computer-readable medium comprising instructions for causing one or more processors to perform the method of any one of claims 1 to 8.
16. Encoding a geometry image comprising a patch, wherein pixel values of the patch comprise differential 3D coordinates of at least one point of a point cloud; encoding information representing three shift values to be applied to a point reconstructed from the patch along a tangent axis, a bitangent axis, and a normal axis, respectively, wherein the three shift values are provided to obtain 3D coordinates of a reference point of the patch used to reconstruct 3D coordinates of the at least one point by adding the differential 3D coordinates of the at least one point to the 3D coordinates of the reference point, the 3D coordinates of the reference point being obtained from the information representing the three shift values and a bit depth of a decoder used to decode the geometry image; A method comprising:
17. 17. The method of claim 16, wherein the information representing the three shift values is an index that allows the three shift values to be determined.
18. A method as described in claim 16 or 17, characterized in that encoding the information representing the three shift values is based on the difference between the bit depth used to represent the 3D coordinates of the points of the point cloud and the bit depth of the decoder used to decode the geometry image.
19. Encoding a geometry image comprising a patch, wherein pixel values of the patch comprise differential 3D coordinates of at least one point of a point cloud; encode information representing three shift values to be applied to a point reconstructed from the patch along a tangent axis, a bitangent axis, and a normal axis, respectively, the three shift values being provided to obtain 3D coordinates of a reference point of the patch that are used to reconstruct 3D coordinates of the at least one point by adding the differential 3D coordinates of the at least one point to the 3D coordinates of the reference point, the 3D coordinates of the reference point being obtained from the information representing the three shift values and a bit depth of a decoder used to decode the geometry image.
10. An apparatus comprising one or more processors configured to:
20. 20. The device of claim 19, wherein the information representing the three shift values is an index that allows the three shift values to be determined.