Method and device for encoding and reconstructing missing points of point cloud
Patent Information
- Application Number
- JP2024165504
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2019-03-14
- Filing Date
- 2024-09-24
- Publication Date
- 2025-01-07
- Estimated Expiration
- 2039-10-04
Smart Images

Figure 2025000744000001_ABST
Abstract
Description
[Technical field]
[0001] The present embodiment relates generally to the coding and reconstruction of points of a point cloud. In particular, but not exclusively, the technical field of the present embodiment 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 that may be related to various aspects of the present embodiments that 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, 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 typically 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 sending it or visiting it. Furthermore, it is also 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 huge.
[0007] Another use case is in topographical mapping and cartography, where maps are not limited to flat surfaces and may include relief, using 3D representations. 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 usually said point clouds are static, colored, and huge.
[0008] Furthermore, the automotive industry and autonomous vehicles are also areas where point clouds may be used. Autonomous vehicles should be able to "probe" the environment to make smart driving decisions based on the immediate surrounding reality. Regular sensors such as LIDAR generate dynamic point clouds that are used by decision engines. The point clouds just mentioned are not intended to be seen by humans, are usually small, are not necessarily colored, and are dynamic due to high frequency of capture. The point clouds just mentioned may have other attributes such as reflectivity provided by LIDAR, which may be good information about the material of the sensed object and aid in the decision.
[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 immersion according to the viewer's freedom in the environment. Colored point clouds are good format candidates to distribute 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 be successful in storing / transmitting 3D objects for immersive worlds only if the size of the bitstream is small enough to make practical storage / transmission possible to the end user.
[0011] It is crucial to be able to distribute dynamic point clouds to end users with reasonable consumption of bitrate while maintaining an acceptable (or preferably very good) quality of experience. Efficient compression of the dynamic point clouds just described is a key point to make the distribution chain of immersive worlds a reality.
[0012] Image-based point cloud compression techniques are becoming increasingly popular due to their combination of compression efficiency and low complexity. They proceed by 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 another attribute associated with the points of the point cloud, e.g., texture / color information associated with those points. Then, the just described technique encodes said depth and attribute images by 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: Audio-visual and multimedia systems, Infrastructure for audio-visual 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 as in clothing) or does not follow the surface at all (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 needed, making 2D video compression less efficient) 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 just mentioned problem consists in projecting multiple geometry and texture information onto the same spatial location (pixel) of the image. This means that several geometry and / or attribute images may be generated for each point of 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, the point cloud is orthogonally projected onto a projection plane. Then, two depth values are associated with each coordinate of said projection plane, 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). Then, a first geometry image is 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, a first and a second attribute image are also generated in association with the first (D0) and second (D1) geometry images. Then, both the attribute image and the geometry image are encoded and decoded using any conventional video codec, such as, for example, HEVC. Thus, the geometry of the point cloud is reconstructed by deprojection of said decoded first and second geometry images, and other attributes associated with the reconstructed point cloud points are obtained from the decoded attribute image. 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 a number of subdivisions; - encoding data representative of 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 representative of 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 box 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 a 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 the reconstructed point cloud by decoding the at least one geometry and attribute image.
[0025] According to another aspect, at least one of the present embodiments relates to a method comprising: - decoding data representative of attributes of a point of a point cloud by reference to the subdivision to which said point belongs, said subdivision being one of a number of subdivisions obtained by dividing a bounding box bounding said point of said point cloud; and - decoding data representative of the number of points contained in each subdivision of said bounding box; and - reconstructing point attributes from the 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 boxes 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 embodiments relate to an apparatus, a bitstream, a computer program product, and a non-transitory readable medium.
[0032] The particular nature of the present embodiments, as well as other objects, advantages, features and uses of the present embodiments, will become apparent from the following description of examples taken in conjunction with the accompanying drawings.
[0033] An example of this embodiment is illustrated in the drawing, which shows: [Brief description 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. [Diagram 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. [Diagram 3] 1 illustrates two remote devices communicating over a communication network according to an example of the present embodiment. [Figure 4] 4 illustrates a signal syntax according to an example of the present aspect. [Diagram 5] 13 shows examples of syntax elements that may be used to convey information required by a decoder to reconstruct missing points of a point cloud according to the present embodiment. [Figure 6] 13 shows examples of syntax elements that may be used to convey information required by a decoder to reconstruct missing points of a point cloud according to an embodiment of the present invention. [Figure 7] 13 shows examples of syntax elements that may be used to convey information required by a decoder to reconstruct missing points of a point cloud according to an embodiment of the present invention. [Figure 8] 13 shows examples of syntax elements that may be used to convey information required by a decoder to reconstruct missing points of a point cloud according to an embodiment of the present invention. [Figure 9] 13 shows examples of syntax elements that may be used to convey information required by a decoder to reconstruct missing points of a point cloud according to an embodiment of the present invention. [Figure 10] 13 shows examples of syntax elements that may be used to convey information required by a decoder to reconstruct missing points of a point cloud according to an embodiment of the present invention. [Figure 11] 1 illustrates a block diagram of an example system in which various aspects and aspects of the example embodiment may be implemented. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0035] Similar or identical elements are referred to by the same reference numbers.
[0036] The present embodiment will be described more fully below with reference to the accompanying drawings, in which examples of the present embodiment are shown. However, the present embodiment may be embodied in many alternative forms and should not be construed as being limited to the examples set forth herein. Thus, while the present embodiment is susceptible to various modifications and alternative forms, specific examples thereof are shown by way of example in the drawings and described in detail herein. However, there is no intention to limit the present embodiment to the particular forms disclosed, but rather, it should be understood that the specification covers all modifications, equivalents, and alternatives falling within the spirit and scope of the present embodiment, as defined by the claims.
[0037] The terminology used herein is for the purpose of describing specific 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 indicates otherwise. Furthermore, it will be understood that the terms "comprises," "comprising," "includes," and / or "includes" as used herein specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof. Furthermore, when an element is said to be "responsive to" or "coupled" to another element, it may be directly responsive to or coupled to the other element, or an element therebetween 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 element therebetween. 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 these elements should not be limited by these terms. The terms just mentioned 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 a primary direction of communication, however, it is understood that communication may occur in the direction opposite to that 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 simultaneously, or sometimes the blocks may 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 may 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 in the specification do not necessarily all refer to the same example, but separate or alternative examples are not necessarily mutually exclusive with respect to 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 embodiments and variations can be used in any combination or subcombination.
[0044] In the following, the term "image region" denotes 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 said 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 represent syntax tables that are widely used in TMC2 to define the structure of bitstreams according to TMC2. In the just mentioned syntax tables, the term "..." means parts that are 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 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 context-adaptive arithmetic entropy coded syntax element.
[0049] The syntax elements used herein are descriptive terms. As noted above, they do not preclude the use of other syntax element names.
[0050] Although the present 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 time-dynamic point cloud), since the geometry (two geometry images) and attributes (two attribute images) of a point cloud of 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 of the sequence of point clouds.
[0051] When encoding and / or reconstructing the point cloud, data may be lost, leading to a partial reconstruction of the input point cloud. This loss of information may create problems when rendering the input point cloud.
[0052] TMC2 offers good rate-distortion performance for lossy compression scenarios. However, when lossless compression is required, the compression performance degrades 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 "regular" patches (resulting for the projection of points onto the projection plane). The basic understanding is to project the point cloud onto the projection plane by using TMC2 and to capture the missing points (isolated points) of the point cloud, i.e. the points that are 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, which stands for "missing point" patch. Then, the said 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 points.
[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 / reconstruct attributes for any other points of a point cloud. Hence, the method may be considered as an alternative to image-based point cloud compression techniques, such as, for example, TMC2, for encoding (and reconstructing) attributes of points of a point cloud. Furthermore, the method may be considered as a means to improve lossy image-based point cloud compression techniques, such as, for example, TMC2, by providing lossless compression of point clouds (encoding missing points).
[0056] The encoding method involves subdividing a bounding box that bounds the points to be encoded, encoding data representing the attributes of the points by reference to the subdivision to which the points belong, and encoding data representing the number of points contained in each subdivision.
[0057] The decoding method decodes encoded data representative of said attributes of the point by referencing the subdivision to which the point belongs, said subdivision being one of a number of subdivisions obtained by dividing a bounding box bounding said point, and further the method decodes encoded data representative of the number of points contained in each subdivision of said bounding box and reconstructs the point from said decoded data.
[0058] Subdividing a bounding box bounding the point to be encoded and encoding data representing attributes of a 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 just-mentioned point may be reduced compared to the prior art, since the just-mentioned coordinates may be defined from the reference point of the subdivision to which the just-mentioned 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 an operational 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 the 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 attributes of the projected points are stored in a so-called 2D patch (a set of pixels) of at least one set of geometry and attribute images. Furthermore, metadata representing the projection parameters used to obtain the 2D patch may also be encoded by the encoder M1. For example, the 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, Recommendation T, 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 the encoder M1 is decoded by a decoder M2 and the point cloud is reconstructed from the decoded data, i.e. from the decoded attributes obtained from the at least one decoded geometry / attribute image and from metadata representing the projection parameters, e.g. as revealed in TMC2. The decoder M2 follows a conventional decoder depending on the 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 an 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 act 140, the bounding box bounding the missing points detected in act 130 is subdivided into multiple subdivisions.
[0066] According to an aspect, a bounding box bounding the missing points may correspond to a 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 embodiment, the subdivisions of the bounding box may be bounded to a particular bit-depth, such as, for example, the bit-depth of the encoder used to encode the points of the input point cloud and / or the missing points (typically 8-bit / 10-bit). Hence, the size and / or dimensions of the subdivisions (e.g., faces of a subcube) may not exceed said particular bit-depth (may be represented using at most said maximum number of bits).
[0069] Hence, 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 subcubes using an octree-based method.
[0070] Essentially, the cube is recursively divided into 8 smaller subcubes. Leaf cubes are populated and noted or not according to whether they have at least one missing point in them.
[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 embodiment just described, a traversal order, e.g., depth-first or breadth-first, is sent or assumed.
[0074] In a variant of the embodiment just described, the octree depth is sent.
[0075] In an aspect, the octree depth is a 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 embodiment just described, 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 (if n is equal to the bit depth, then 2 n ), may be used to regroup missing points inside a subcube that minimizes the number of "missing point" patches and / or minimizes the energy of the encoded missing points, while respecting the following maximum size constraint of the subcube according to . With the algorithm just described, the origin of the subcube is not completely constrained. Minimizing the number of "missing point" patches reduces the encoding bitrate.
[0080] In operation 150, one or more 2D patches are obtained by module M5. The one or more patches include 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 representative of 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 the subdivisions). The just-mentioned data can then be represented by reference to a reference point of the "defect point" patch. For example, the coordinates of a defect point are represented by the differential coordinates dx, dy and dz calculated from the reference point of the subdivision containing the defect point considered. The dX coordinate, then 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] Then, all the "missing point" patches (one per subdivision) are packed into a geometry image, thus containing "regular" patches representing attributes of at least some of the points of the input point cloud (step 110), and "missing point" patches representing attributes of the missing points.
[0086] In operation 160, data representing the attributes of the missing points is encoded by reference to 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 the 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 It 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 in sequence as follows: 〇dX=X-u1,dY=Y-v1,dZ=Z-d1 ·Add corresponding attributes (color components (R,G,B)) in the attribute image in sequence.
[0088] A bitstream BT is obtained, which comprises encoded data representative of the attributes of the missing points, said encoded data relating to the subdivision to which the missing points belong, possibly also data representative of 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 an operation of a method 200 for decoding attributes of points of a point cloud according to an example embodiment.
[0092] In operation 210, the decoder M7 may decode the encoded data contained in the bitstream BT, which may be the output of the method of Fig. 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 reference to 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 as follows. 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. Thus, the reconstructed point cloud
[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 embodiment, 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] A "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 taken 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 aspect, 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 a defect point correspond to the geometry or texture / color information of said defect point.
[0105] According to an example of the present 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 between memory RAM and ROM configured to implement the method described in relation to FIG. 1, and device B includes a processor in relationship between 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. The bitstream BT 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 a 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 relation to 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 from which it will 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 examples of syntax elements that may be used to convey information required by a decoder to reconstruct missing points of a point cloud according to this embodiment.
[0113] The syntax elements just mentioned are 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 that may be used to convey information required by a decoder to reconstruct all missing points of a point cloud according to this embodiment.
[0116] The syntax elements just mentioned are based on the "group_of_frames_auxiliary_information" syntax element defined in TMC2.
[0117] In an embodiment, the final patch is a "missing point" patch in the geometry image.
[0118] The syntax element patch_count indicates the total number of patches excluding 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.
[0119] FIG. 7 shows examples of syntax elements that may be used to convey information required 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 elements 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 sent 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 the PCM patch index when the mode sps_pcm_relative_3D_offset_flag is set to 1.
[0124] FIG. 8 shows an example of syntax elements that may be used to convey information required by a decoder to reconstruct missing points of a point cloud according to this embodiment.
[0125] The syntax elements just mentioned are based on the "patch_frame_data_unit" syntax element defined in TMC2.
[0126] The added 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 that may be used to convey information required 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 that may be used to convey information required 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] ranges from 0 to 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 +1-1). dpdu_3d_relative_shift_index[frmIdx][patchIndex] specifies an index that allows to calculate three 3D shift values (tangent, bitangent and normal). The above mentioned index decoding process 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. The aforementioned patch may be packed into the attribute image. Furthermore, patch information for the aforementioned additional patch may be encoded.
[0133] According to an embodiment, the method of decoding may obtain an OEM texture patch according to one of the syntaxes described above. Attributes of the missing points may be obtained from said EOM texture patch according to parameters in the EOM texture patch (as well as eventually fixed parameters such as sorting and rasterization modes).
[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 indices 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 parameters (gps_geometry_nominal_2d_bitdepth_minus1). A face of a 3D PCM box is 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 encoded 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 coded 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 a PCM encoded patch stored in a 4:4:4 geometry frame 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 of a system in which various aspects and embodiments are implemented. The system 11000 can be embodied as a device including various components described below and configured to perform one or more aspects described in the present application. 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. The elements of the system 11000 can be embodied in a single integrated circuit, multiple ICs, and / or separate components, either alone or in combination. For example, in at least one embodiment, the processing and encoder / decoder elements of the system 11000 are distributed across multiple ICs and / or separate components. In various embodiments, the system 11000 is communicatively connected 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. In addition, the encoder / decoder module 11030 may be implemented as a separate element of the system 11000, or may be incorporated into 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 processors 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 of equations, formulas, operations, and operational logic.
[0150] In some embodiments, memory internal to the processor 11010 and / or the 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 the memory 11020 and / or the storage device 11040, e.g., dynamic volatile memory and / or non-volatile flash memory. In some aspects, the external non-volatile flash memory is used to store the TV's operating system. In at least one aspect, a high-speed external dynamic volatile memory, e.g., 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 may 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 an RF signal transmitted over the air, for example by a broadcast station, (ii) a composite input terminal, (iii) a USB input terminal, and / or (iv) an HDMI input terminal.
[0153] In various aspects, the input devices of block 11130 are associated with respective input processing elements known in the art. For example, the RF section can be associated with elements necessary to (i) select the desired frequency (also referred to as selecting a signal or band-limiting a signal to a band of frequencies), (ii) down-convert the selected signal, (iii) band-limit again to a narrower band of frequencies to select a single frequency band, which in some aspects can be referred to as a channel (e.g.), (iv) demodulate the down-converted band-limited signal, (v) perform error correction, and (vi) demultiplex to select the desired stream of data packets. The RF section of various aspects includes one or more elements that perform the functions just described, such as a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a down-converter, a demodulator, an error corrector, and a demultiplexer. The RF section can include, for example, a tuner that performs various functions, including down-converting the received signal to a lower frequency (e.g., an intermediate frequency or a frequency close to 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-mentioned (and other) elements, remove some of the elements just mentioned, 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 can include respective interface processors to couple the system 11000 to other electronic devices over USB and / or HDMI. It is understood that various aspects of the input processing, e.g., Reed-Solomon error correction, can be implemented, for example, in a separate input processing IC or within the processor 11010, as appropriate. Similarly, aspects of the USB or HDMI interface processing can be implemented in a separate input processing IC or within the processor 11010, as appropriate. 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, as appropriate.
[0158] The various elements of the system 11000 can be provided within a unified 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 an I2C bus, hardwired, 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 in a wired and / or wireless medium, for example.
[0160] Data is 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 that are 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 an outside network, 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 an RF connection at input block 11130.
[0163] The system 11000 can provide output signals to a variety of output devices, including a display 11100, speakers 11110, and other peripheral devices 11120. In various example embodiments, the 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 the 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, an output device can be coupled to the system 11000 via a communication interface 11050 using a communication channel 11060. The display 11100 and the speaker 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 may 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 may be submitted 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 the output from the decoders, pre-processors that provide input to the encoders, video coders, video decoders, video codecs, web servers, set-top boxes, laptops, personal computers, cell phones, PDAs, and any other device for processing pictures or videos or other communication devices. To be clear, the devices may be mobile and may even be 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 recording medium. The computer-readable recording medium may take the form of a computer-readable program product having computer-readable program code embodied therein that is executable by a computer, the computer-readable recording medium being embodied in one or more computer-readable medium(s). As used herein, a computer-readable recording medium is considered to be a non-transitory recording medium that is given the inherent capability of storing information therein as well as the inherent capability of providing retrieval of information therefrom. For example, the computer-readable recording 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 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 disk 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. Thus, a processor may be characterized as 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. Additionally, a processor-readable medium may store data values produced by an implementation in addition to or in place of instructions.
[0173] As would be apparent to one skilled in the art, implementations may generate a variety of signals formatted to carry information that may be, for example, stored or transmitted. 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 the present embodiment, or to carry as data the actual syntax values written by the described examples of the present embodiment. For example, the above signals may be formatted as electromagnetic waves (e.g., using the radio frequency portion of the spectrum) or as baseband signals. For example, formatting may include encoding a data stream and modulating a carrier wave with the encoded data stream. For example, the information the signal carries may be analog or digital information. The signal may be transmitted over a variety of separate wired or wireless links, as is known. The signal may be stored in a processor-readable medium.
[0174] A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made. For example, elements of separate implementations may be combined, supplemented, modified, or removed to produce other implementations. In addition, those skilled in the art will understand that other structures and processes may be substituted for those disclosed, such that the resulting implementations will perform at least substantially the same function(s) as the disclosed implementations, in at least substantially the same manner(s) as the disclosed implementations, to obtain substantially the same result(s) as the disclosed implementations. Thus, 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. obtaining a patch from a geometry image, the pixel values of the patch including differential 3D coordinates of at least one point of the point cloud; Decoding information representing 3D coordinates of reference points of the patch; reconstructing 3D coordinates of the at least one point based on the 3D coordinates of the reference point; Equipped with The information representing the 3D coordinates of the reference points depends on the bit depth of a decoder used to decode the geometry image. A method comprising:
2. 2. The method of claim 1 , wherein the information representing the 3D coordinates of the reference point is an index that makes it possible to determine shift values to be applied to a point reconstructed from the patch in the tangent, bitangent and normal axes.
3. 3. The method of claim 1 or 2, wherein decoding the information representing the 3D coordinates of the reference points 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 a decoder used to decode the geometry image.
4. 4. The method of claim 3, wherein the 3D coordinates of the reference points are obtained from the decoded information and the bit depth of the decoder used to decode the geometry image.
5. 5. 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 number of subdivisions obtained by dividing a bounding box bounded by the points of the point cloud.
6. 6. The method of claim 1, wherein the patch is for encoding 3D coordinates of a missing point of the point cloud, the missing point being a point of the point cloud that is not projected onto a projection plane.
7. 7. The method according to 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.
8. 2. The method of claim 1, further comprising at least one of decoding information indicating a number of patches for encoding missing points or decoding information indicating a number of points in the patch.
9. obtaining a patch from the geometry image, the pixel values of the patch including differential 3D coordinates of at least one point of the point cloud; Decoding information representing 3D coordinates of reference points of the patch; reconstructing 3D coordinates of the at least one point based on the 3D coordinates of the reference point. one or more processors configured to The information representing the 3D coordinates of the reference points depends on the bit depth of a decoder used to decode the geometry image. An apparatus comprising:
10. The apparatus of claim 9, wherein the information representing the 3D coordinates of the reference point is an index that makes it possible to determine shift values to be applied to a point reconstructed from the patch in the tangent, bitangent and normal axes.
11. 11. The apparatus according to claim 9 or 10, characterized in that the information representing the 3D coordinates of the reference points 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 a decoder used to decode the geometry image.
12. The apparatus of claim 11 , wherein the 3D coordinates of the reference point are obtained from the decoded information and the bit depth of the decoder used to decode the geometry image.
13. 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.
14. 1. A non-transitory computer readable medium comprising a bitstream including encoded data representing attributes of points of a point cloud, the encoded data comprising: data representing a patch from a geometry image, the pixel values of the patch including differential 3D coordinates of at least one point of the point cloud; information representative of 3D coordinates of reference points of the patch for reconstructing 3D coordinates of the at least one point, the information representative of the 3D coordinates of the reference points depending on a bit depth of a decoder used to decode the geometry image; A non-transitory computer-readable medium comprising:
15. 15. The non-transitory computer-readable medium of claim 14, wherein the information representing the 3D coordinates of the reference point is an index that enables determining shift values to be applied to a point reconstructed from the patch in tangent, bitangent, and normal axes.
16. 16. The non-transitory computer-readable medium of claim 14 or 15, wherein the information representing the 3D coordinates of the reference points is encoded 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.
17. encoding data representing a patch from a geometry image, the pixel values of the patch including differential 3D coordinates of at least one point of a point cloud; encoding information representative of 3D coordinates of reference points of the patch used to reconstruct 3D coordinates of the at least one point, the information representative of the 3D coordinates of the reference points depending on a bit depth of a decoder used to decode the geometry image; 23. A method comprising:
18. 18. The method of claim 17, wherein the information representing the 3D coordinates of the reference point is an index that makes it possible to determine shift values to be applied to a point reconstructed from the patch in the tangent, bitangent and normal axes.
19. encoding data representing a patch from the geometry image, the pixel values of the patch including differential 3D coordinates of at least one point of the point cloud; encoding information representative of the 3D coordinates of a reference point of the patch that is used to reconstruct the 3D coordinates of the at least one point, the information representative of the 3D coordinates of the reference point depending on a bit depth of a decoder used to decode the geometry image; 23. An apparatus comprising one or more processors configured to:
20. 20. The apparatus of claim 19, wherein the information representing the 3D coordinates of the reference point is an index that makes it possible to determine shift values to be applied to a point reconstructed from the patch in the tangent, bitangent and normal axes.