Displacement coding for mesh compression

By deriving and predicting vertex displacements in meshes, the method enhances compression efficiency by adapting to varying mesh regions, reducing quantization errors in complex meshes.

JP2025530346AActive Publication Date: 2025-09-11TENCENT AMERICA LLC
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2025515448
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-05-10
Filing Date
2023-05-24
Publication Date
2025-09-11
Estimated Expiration
2043-05-24

AI Technical Summary

Technical Problem

Existing video coding technologies face challenges in efficiently compressing complex meshes with varying face counts and importance across different regions, leading to large quantization errors due to uniform quantization step sizes.

Method used

A method for encoding volumetric data by deriving a mesh from 3D visual content, determining vertex displacements, and predicting vertices based on projections, allowing for adaptive encoding of scalar distances and subdivision points to optimize compression.

Benefits of technology

This approach reduces quantization errors and improves compression efficiency by accounting for varying mesh regions, ensuring precise encoding of complex meshes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025530346000057
    Figure 2025530346000057
  • Figure 2025530346000058
    Figure 2025530346000058
  • Figure 2025530346000059
    Figure 2025530346000059
Patent Text Reader

Abstract

a method and apparatus, the method comprising computer code configured to: cause one or more processors to obtain volumetric data for at least one frame of three-dimensional (3D) visual content; derive a mesh from the frame of the volumetric data, the mesh including a plurality of base mesh vertices; determine a displacement of at least one vertex that is not a base mesh vertex based on a series of projections from at least one of the plurality of base mesh vertices that are neighbors of the plurality of base mesh vertices to the at least one vertex; predict at least one vertex based on at least the determined displacements; and encode the volumetric data based on the predicted at least one vertex.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Provisional Patent Application No. 63 / 406,174, filed September 13, 2022, and U.S. Patent Application No. 18 / 314,986, filed May 10, 2023, the disclosures of which are incorporated herein by reference in their entireties.

[0002] This disclosure is directed to a set of advanced video coding techniques, including both lossless and lossy mesh coding techniques based on mesh instances. [Background technology]

[0003] Advances in 3D capture, modeling, and rendering are facilitating the ubiquitous presence of 3D content across several platforms and devices. Today, it is possible to film a baby's first steps on one continent, while the baby's grandparents on another continent watch (and even interact with) this, enjoying a fully immersive experience with the child. Nevertheless, to achieve this sense of realism, models are becoming ever more sophisticated, and a significant amount of data is tied to the creation and consumption of these models.

[0004] VMesh is an ongoing MPEG standard for compressing static and dynamic meshes. VMesh separates the input mesh into a simplified base mesh and a residual mesh. The base mesh can be encoded at high quality, while the residual mesh can be encoded using subdivision surface fitting and displacement encoding to take advantage of local characteristics.

[0005] However, complex meshes often contain information about multiple instances to associate and link texture maps. This information is available at the time of encoding. On the other hand, meshes can be segmented into several parts based on their characteristics. For example, there are more polygons in the facial region of a human mesh. Summary of the Invention [Problem to be solved by the invention]

[0006] Thus, a constant quantization step size applied to all instances, objects, or parts within a mesh will result in large quantization errors, mesh regions may not be equally important, the number of faces may vary significantly in different parts of the mesh, the base mesh may be simpler than the original mesh and displacements may therefore require less bit depth precision, etc. Therefore, for any of these reasons, a technical solution to such problems that have arisen in video coding technology is desired. [Means for solving the problem]

[0007] Methods and apparatuses include a memory configured to store computer program code and one or more processors configured to access the computer program code and operate as instructed by the computer program code, the computer program configured to cause the processors to execute: acquisition code configured to cause the at least one processor to acquire volumetric data of at least one three-dimensional (3D) visual content; derivation code configured to cause the at least one processor to derive a mesh from a frame of the volumetric data, the mesh including a plurality of base mesh vertices; determination code configured to cause the at least one processor to determine a displacement of at least one vertex that is not a base mesh vertex based on a series of projections from the plurality of base mesh vertices or at least one of the plurality of base mesh vertices that is a neighbor of the at least one vertex; prediction code configured to cause the at least one processor to predict the at least one vertex based on at least the determined displacement; and encoding code configured to cause the at least one processor to encode the volumetric data based on a determination of the predicted at least one vertex.

[0008] According to an exemplary embodiment, encoding the volumetric data includes encoding a scalar distance from the projected vertex to at least one vertex.

[0009] According to an exemplary embodiment, the series of projections includes determining that the projected vertex lies on a line from a first base mesh vertex of the plurality of base mesh vertices to a second base mesh vertex of the plurality of base mesh vertices, and the scalar distance is perpendicular to the line.

[0010] According to an exemplary embodiment, the series of projections further includes a step of deriving nearby vertices as being on the line, and the step of determining that the projected vertex is on the line includes a step of applying a second scalar distance to the nearby vertices.

[0011] According to an exemplary embodiment, the series of projections includes determining that a first neighboring vertex is on a first line from a first base mesh vertex of the plurality of base mesh vertices to a second base mesh vertex of the plurality of base mesh vertices, and determining that the projected vertex is a distance from the first neighboring vertex.

[0012] According to an exemplary embodiment, the series of projections further includes determining that the second neighboring vertex is on a second line from a first base mesh vertex of the plurality of base mesh vertices to a third base mesh vertex of the plurality of base mesh vertices, and determining that the projected vertex is a distance from both the first neighboring vertex and the second neighboring vertex.

[0013] According to an exemplary embodiment, encoding the volumetric data includes encoding a distance from the projected vertex to at least one vertex.

[0014] According to an exemplary embodiment, the plurality of base mesh vertices defines a face of the mesh, and the series of projections further includes subdividing the face into a plurality of subdivisions and determining a subdivision point of one of the subdivisions that is closest to the projected vertex.

[0015] According to an exemplary embodiment, encoding the volumetric data includes coding a distance from the nearest subdivision point to at least one vertex.

[0016] According to an exemplary embodiment, the faces of the mesh include quad faces.

[0017] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings. [Brief explanation of the drawings]

[0018] [Figure 1] FIG. 1 is a schematic diagram of a diagram according to an embodiment. [Figure 2] FIG. 1 is a simplified block diagram according to an embodiment. [Figure 3] 1 is a simplified diagram according to an embodiment. [Figure 4] 1 is a simplified diagram according to an embodiment. [Figure 5] 1 is a simplified diagram according to an embodiment. [Figure 6] 1 is a simplified diagram according to an embodiment. [Figure 7] 1 is a simplified diagram according to an embodiment. [Figure 8] 1 is a simplified diagram according to an embodiment. [Figure 9] 1 is a simplified diagram according to an embodiment. [Figure 10] FIG. 1 is a simplified flow diagram according to an embodiment. [Figure 11] FIG. 1 is a simplified flow diagram according to an embodiment. [Figure 12] FIG. 1 is a simplified flow diagram according to an embodiment. [Figure 13] 1 is a simplified diagram according to an embodiment. [Figure 14] 1 is a simplified diagram according to an embodiment. [Figure 15] FIG. 1 is a simplified flow diagram according to an embodiment. [Figure 16] 1 is a simplified diagram according to an embodiment. [Figure 17] FIG. 1 is a simplified flow diagram according to an embodiment. [Figure 18] FIG. 1 is a simplified flow diagram according to an embodiment. [Figure 19] 1 is a simplified diagram according to an embodiment. [Figure 20] FIG. 1 is a simplified flow diagram according to an embodiment. [Figure 21] 1 is a simplified diagram according to an embodiment. [Figure 22] 1 is a simplified diagram according to an embodiment. [Figure 23] 1 is a simplified diagram according to an embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0019] The proposed features described below may be used separately or combined in any order. Furthermore, the embodiments may be implemented by processing circuitry (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored on a non-transitory computer-readable medium.

[0020] 1 shows a simplified block diagram of a communication system 100 according to one embodiment of the present disclosure. The communication system 100 may include at least two terminals 102 and 103 interconnected via a network 105. For unidirectional data transmission, a first terminal 103 may code video data at a local location for transmission to the other terminal 102 via the network 105. The second terminal 102 may receive the coded video data of the other terminal from the network 105, decode the coded data, and display the recovered video data. Unidirectional data transmission may be common in media serving applications, etc.

[0021] 1 shows a second pair of terminals 101 and 104 provided to support bidirectional transmission of coded video, such as might occur during a video conference. For the bidirectional transmission of data, each terminal 101 and 104 may code video data captured at a local location for transmission to the other terminal over network 105. Each terminal 101 and 104 may also receive coded video data transmitted by the other terminal, decode the coded data, and display the recovered video data on a local display device.

[0022] In FIG. 1 , terminals 101, 102, 103, and 104 may be depicted as servers, personal computers, and smartphones, although the principles of the present disclosure are not so limited. Embodiments of the present disclosure contemplate application with laptop computers, tablet computers, media players, and / or dedicated videoconferencing equipment. Network 105 represents any number of networks that convey coded video data between terminals 101, 102, 103, and 104, including, for example, wired and / or wireless communication networks. Communication network 105 may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this description, the architecture and topology of network 105 may not be important to the operation of the present disclosure, unless otherwise described herein below.

[0023] 2 shows the arrangement of a video encoder and a video decoder in a streaming environment as an example of an application of the disclosed subject matter. The disclosed subject matter can be equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.

[0024] The streaming system may include a capture subsystem 203, which may include, for example, a video source 201, such as a digital camera, that creates an uncompressed video sample stream 213. The sample stream 213 may be emphasized as a high data volume when compared to an encoded video bitstream and may be processed by an encoder 202 coupled to the video source 201, which may be, for example, a camera as described above. The encoder 202 may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video bitstream 204 may be emphasized as a lower data volume compared to the sample stream and may be stored on a streaming server 205 for future use. One or more streaming clients 212 and 207 can access the streaming server 205 and retrieve copies 208 and 206 of the encoded video bitstream 204. The client 212 may include a video decoder 211 that decodes the incoming copy 208 of the encoded video bitstream and creates an outgoing video sample stream 210 that can be rendered on a display 209 or other rendering device (not shown). In some streaming systems, video bitstreams 204, 206, and 208 may be encoded according to particular video coding / compression standards, examples of which are mentioned above and further described herein.

[0025] FIG. 3 may be a functional block diagram of a video decoder 300 according to one embodiment of the present invention.

[0026] Receiver 302 may receive one or more codec video sequences to be decoded by decoder 300, in the same or another embodiment, one coded video sequence at a time, with the decoding of each coded video sequence being independent of the other coded video sequences. The coded video sequences may be received from channel 301, which may be a hardware / software link to a storage device that stores the encoded video data. Receiver 302 may receive the encoded video data along with other data, such as coded audio data and / or auxiliary data streams, that may be forwarded to a respective using entity (not shown). Receiver 302 may separate the coded video sequences from the other data. To combat network jitter, buffer memory 303 may be coupled between receiver 302 and entropy decoder / parser 304 (hereinafter, “parser”). If receiver 302 is receiving data from a storage / forwarding device with sufficient bandwidth and controllability or from an isosynchronous network, buffer 303 may not be needed or may be small. For use over a best effort packet network such as the Internet, buffer 303 may be required and may be relatively large, and may advantageously be adaptively sized.

[0027] The video decoder 300 may include a parser 304 for reconstructing symbols 313 from the entropy-coded video sequence. These symbol categories include information used to manage the operation of the decoder 300 and, potentially, information for controlling a rendering device, such as a display 312, that is not an integral part of the decoder but may be coupled to it. The rendering device control information may be in the form of a supplemental enhancement information (SEI message) or a video usability information (VUI) parameter set fragment (not shown). The parser 304 may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow principles well known to those skilled in the art, including variable length coding, Huffman coding, arithmetic coding with or without context dependency, etc. The parser 304 may extract from the coded video sequence a set of subgroup parameters for at least one of a subgroup of pixels in the video decoder based on at least one parameter corresponding to that group. The subgroups may include groups of pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. The entropy decoder / parser may also extract information such as transform coefficients, quantizer parameter values, motion vectors, etc. from the coded video sequence information.

[0028] The parser 304 may perform entropy decoding / parsing operations on the video sequence received from the buffer 303 to create symbols 313. The parser 304 may receive the encoded data and selectively decode particular symbols 313. Additionally, the parser 304 may determine whether a particular symbol 313 should be provided to the motion compensated prediction unit 306, the scaler / inverse transform unit 305, the intra prediction unit 307, or the loop filter 311.

[0029] The reconstruction of symbols 313 may involve several different units, depending on the type of coded video picture or portion thereof (inter-picture and intra-picture, inter-block and intra-block, etc.), as well as other factors. Which units are involved and how may be controlled by subgroup control information parsed from the coded video sequence by parser 304. The flow of such subgroup control information between parser 304 and the following units is not shown for clarity.

[0030] In addition to the functional blocks already mentioned, the decoder 300 may be conceptually subdivided into several functional units, as described below. In an actual implementation operating under commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is appropriate:

[0031] The first unit is a scalar / inverse transform unit 305. The scalar / inverse transform unit 305 receives quantized transform coefficients as well as control information from the parser 304 as symbols 313, including the transform to use, block size, quantization factor, quantization scaling matrix, etc. The scalar / inverse transform unit 305 may output blocks containing sample values ​​that may be input to an aggregator 310.

[0032] In some cases, the output samples of the scaler / inverse transform unit 305 may also relate to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed picture but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by the intra-picture prediction unit 307. In some cases, the intra-picture prediction unit 307 generates blocks of the same size and shape as the block being reconstructed using surrounding already reconstructed information fetched from the current (partially reconstructed) picture 309. The aggregator 310 may add, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit 307 to the output sample information provided by the scaler / inverse transform unit 305.

[0033] In other cases, the output samples of the scalar / inverse transform unit 305 may relate to an inter-coded, potentially motion-compensated, block. In such cases, the motion-compensated prediction unit 306 may access the reference picture memory 308 to fetch samples used for prediction. After motion-compensating the fetched samples according to the symbols 313 related to the block, these samples may be added by the aggregator 310 to the output of the scalar / inverse transform unit to generate output sample information (in this case, referred to as residual samples or residual signals). The addresses within the reference picture memory from which the motion compensation unit fetches the prediction samples may be controlled by a motion vector and may be made available to the motion compensation unit in the form of symbols 313, which may have, for example, X, Y, and reference picture components. Motion compensation may also include interpolation of sample values ​​fetched from the reference picture memory when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, etc.

[0034] The output samples of aggregator 310 may be subjected to various loop filtering techniques in loop filter unit 311. Video compression techniques may include in-loop filter techniques controlled by parameters contained in the coded video bitstream and made available to loop filter unit 311 as symbols 313 from parser 304, but may also be responsive to meta-information obtained during decoding of a coded picture or previous portion (in decoding order) of a coded video sequence, or may be responsive to previously reconstructed, loop-filtered sample values.

[0035] The output of the loop filter unit 311 can be a sample stream that can be output to the rendering device 312 as well as stored in the reference picture memory 557 for use in future inter-picture prediction.

[0036] Once a particular coded picture is fully reconstructed, it can be used as a reference picture for future prediction. Once a coded picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by parser 304), the current reference picture 309 can become part of reference picture buffer 308, and a new current picture memory can be reallocated before beginning reconstruction of a subsequent coded picture.

[0037] Video decoder 300 may perform decoding operations in accordance with a predetermined video compression technique documented in a standard such as ITU-T Rec. H.265. The coded video sequence may conform to the syntax specified by the video compression technique or standard being used, in the sense of adhering to the syntax of the video compression technique or standard as specified in the video compression technique document or standard, specifically in a profile document therein. Compliance may also require that the complexity of the coded video sequence be within a range defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level may, in some cases, be further constrained by the specification of a hypothetical reference decoder (HRD) and metadata for HRD buffer management signaled in the coded video sequence.

[0038] In one embodiment, the receiver 302 may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder 300 to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, a temporal layer, a spatial layer, or a signal-to-noise ratio (SNR) enhancement layer, redundant slices, redundant pictures, forward error correction codes, etc.

[0039] FIG. 4 may be a functional block diagram of a video encoder 400 according to one embodiment of the present disclosure.

[0040] The encoder 400 may receive video samples from a video source 401 (not part of the encoder) that may capture video images to be coded by the encoder 400 .

[0041] The video source 401 may provide a source video sequence to be coded by the encoder (303) in the form of a digital video sample stream, which may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCB, RGB, ...), and suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source 401 may be a storage device storing previously prepared video. In a video conferencing system, the video source 401 may be a camera capturing local image information as a video sequence. The video data may be provided as multiple individual pictures that convey motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, each of which may contain one or more samples, depending on the sampling structure, color space, etc., in use. Those skilled in the art can easily understand the relationship between pixels and samples. The following description focuses on samples.

[0042] According to one embodiment, the encoder 400 may code and compress pictures of a source video sequence into a coded video sequence 410 in real time or under any other time constraint required by the application. Ensuring an appropriate coding rate is one function of the controller 402. The controller controls and is operatively coupled to other functional units, as described below. Coupling is not shown for clarity. Parameters set by the controller may include rate control-related parameters (picture skip, quantizer, lambda value for rate-distortion optimization techniques, etc.), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Those skilled in the art will readily identify other functions of the controller 402 as they may pertain to optimizing the video encoder 400 for a particular system design.

[0043] Some video encoders operate in what those skilled in the art readily recognize as a "coding loop." As an overly simplified explanation, the coding loop may consist of an encoding portion of an encoder 400 (hereinafter "source coder") (responsible for creating symbols based on an input picture to be coded and reference pictures) and a (local) decoder 406 embedded in the encoder 400 that reconstructs the symbols and creates sample data that a (remote) decoder would also create (since any compression between the symbols and the coded video bitstream is lossless in the video compression techniques contemplated in the disclosed subject matter). The reconstructed sample stream is input to a reference picture memory 405. Because decoding the symbol stream leads to bit-exact results regardless of the location of the decoder (local or remote), the contents of the reference picture buffer are also bit-exact between the local and remote encoders. In other words, the predictive portion of the encoder "sees" the exact same sample values ​​as the decoder would "see" when using prediction during decoding. This basic principle of reference picture synchronism (and the resulting drift when synchronism cannot be maintained, for example due to channel errors) is well known to those skilled in the art.

[0044] The operation of the "local" decoder 406 may be the same as that of the "remote" decoder 300, which has already been described in detail above in connection with Figure 3. However, briefly referring also to Figure 4, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder 408 and parser 304 may be lossless, the entropy decoding portion of the decoder 300, including the channel 301, receiver 302, buffer 303, and parser 304, may not be entirely implemented in the local decoder 406.

[0045] At this point, it can be said that any decoder technology, other than analysis / entropy decoding, present in the decoder must necessarily also be present in the corresponding encoder in substantially the same functional form. The description of the encoder technology can be omitted, since it is the inverse of the decoder technology, which has been described in general terms. Only in certain areas is a more detailed description necessary, which is provided below.

[0046] As part of its operation, source coder 403 may perform motion-compensated predictive coding, which predictively codes an input frame with reference to one or more previously coded frames from the video sequence, designated as “reference frames.” In this manner, coding engine 407 codes differences between pixel blocks of the input frame and pixel blocks of reference frames that may be selected as predictive references for the input frame.

[0047] The local video decoder 406 may decode the coded video data of frames that may be designated as reference frames based on symbols created by the source coder 403. The operation of the coding engine 407 may advantageously be a lossy process. When the coded video data is decoded by a video decoder (not shown in FIG. 4), the reconstructed video sequence may typically be a copy of the source video sequence, with some errors. The local video decoder 406 may replicate the decoding process that may be performed by the video decoder on the reference frames and store the reconstructed reference frames in the reference picture memory 405, which may be, for example, a cache. In this way, the encoder 400 may locally store copies of reconstructed reference frames that have common content as reconstructed reference frames that will be retrieved by a far-end video decoder (without transmission errors).

[0048] The predictor 404 may perform a predictive search for the coding engine 407. That is, for a new frame to be coded, the predictor 404 may search the reference picture memory 405 for sample data (as candidate reference pixel blocks) or specific metadata such as reference picture motion vectors, block shapes, etc. that may serve as suitable predictive references for the new picture. The predictor 404 may operate on sample block by pixel block to find a suitable predictive reference. In some cases, as determined by the search results obtained by the predictor 404, the input picture may have predictive references drawn from multiple reference pictures stored in the reference picture memory 405.

[0049] The controller 402 may manage the coding operations of the source coder 403, which may be, for example, a video coder, including, for example, setting parameters and subgroup parameters used to encode the video data.

[0050] The output of all the aforementioned functional units may be subjected to entropy coding in an entropy coder 408. The entropy coder converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques known to those skilled in the art, such as Huffman coding, variable length coding, arithmetic coding, etc.

[0051] The transmitter 409 may buffer the coded video sequence produced by the entropy coder 408 in preparation for transmission over a communication channel 411, which may be a hardware / software link to a storage device that will store the encoded video data. The transmitter 409 may merge the coded video data from the source coder 403 with other data to be transmitted, such as coded audio data and / or an auxiliary data stream (source not shown).

[0052] The controller 402 may manage the operation of the encoder 400. During coding, the controller 402 may assign a particular coded picture type to each of the coded pictures, which may affect the coding technique that may be applied to each picture. For example, pictures may often be assigned as one of the following frame types:

[0053] An intra-picture (I-picture) may be a picture that can be coded and decoded without using any other frame in a sequence as a source of prediction. Some video codecs allow various types of intra-pictures, including, for example, independent decoder refresh pictures. Those skilled in the art are aware of these variations of I-pictures and their respective uses and characteristics.

[0054] A predicted picture (P picture) may be a picture that can be coded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict sample values ​​for each block.

[0055] A bidirectionally predicted picture (B picture) may be a picture that can be coded and decoded using intra- or inter-prediction, which uses up to two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, a multi-predicted picture may use more than two reference pictures and associated metadata for the reconstruction of a single block.

[0056] A source picture is generally spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and may be coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks as determined by the coding assignment applied to the block's respective picture. For example, blocks of an I-picture may be nonpredictively coded or predictively coded with reference to already coded blocks of the same picture (spatial prediction or intra prediction). Pixel blocks of a P-picture may be nonpredictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Pixel blocks of a B-picture may be nonpredictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.

[0057] Encoder 400 may be, for example, a video coder and may perform coding operations in accordance with a predetermined video coding technique or standard, such as ITU-T Rec. H.265. In its operation, encoder 400 may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard being used.

[0058] In one embodiment, the transmitter 409 may transmit additional data along with the encoded video. The source coder 403 may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures or slices, Supplemental Enhancement Information (SEI) messages, Visual Usability Information (VUI) parameter set fragments, etc.

[0059] FIG. 5 shows a simplified block-style workflow diagram 500 of exemplary viewport-dependent processing in Omnidirectional Media Application Format (OMAF) that may enable 360-degree virtual reality (VR360) streaming described in OMAF.

[0060] In acquisition block 501, video data A, such as multiple image and audio data of the same time instance, is acquired if the image data can represent a scene in VR360. In processing block 503, image B of the same time instance is acquired. i are processed by one or more of stitching, mapping to a projected picture for one or more virtual reality (VR) angles or other angles / viewpoints, and packed by region. In addition, metadata indicating any of such processed and other information may be created to assist in the distribution and rendering process.

[0061] For data D, in the image encoding block 505, the projected picture is i In viewport-independent streaming, the video pictures are encoded into a media file in a video encoding block 504, for example, as a single-layer bitstream. v and data B is encoded as a Regarding the audio data, the audio data is also encoded in the audio encoding block 502 as data E a can be encoded into

[0062] Data E a , E v , and E i , the coded bitstream F iand / or the entire F may be stored on a (content delivery network (CDN) / cloud) server and may be transmitted in its entirety to an OMAF player 520, typically in a distribution block 507, and may be fully decoded by a decoder, whereby at least the area of ​​the decoded picture corresponding to the current viewport is rendered to the user in a display block 516, along with various metadata from a head / eye tracking block 508, file playback, and orientation / viewport metadata, e.g., regarding the angle the user can see through the VR imaging device with respect to that device's viewport specifications. A distinct feature of VR360 is that only viewports may be displayed at any particular time, and such a feature may be utilized to improve the performance of omnidirectional video systems by selective delivery according to the user's viewport (or any other criteria, such as preferred viewport timed metadata). For example, viewport-dependent delivery may be enabled by tile-based video coding according to an exemplary embodiment.

[0063] Similar to the encoding blocks described above, the OMAF player 520 according to the exemplary embodiment generates data F' and / or F' i and one or more file / segment de-encapsulation of the metadata to decode the audio data E' i , the video decoding block 513 receives the video data E' v , and image data E' in image decoding block 514. i is decoded to produce data B' in the audio rendering block 511. a proceeds with audio rendering and image rendering of data D' in image rendering block 515 to render display data A' in VR360 format according to various metadata such as orientation / viewport metadata in display block 516; i and audio data A' at speaker / headphone block 512s It should be understood that various metadata may affect one of the data decoding and rendering processes depending on various tracks, languages, qualities, and views that may be selected by or for a user of the OMAF player 520, and that the order of processing described herein is presented for an exemplary embodiment and may be performed in other orders according to other exemplary embodiments.

[0064] 6 shows a simplified block-style content flow process diagram 600 for (coded) point cloud data with view-position and angle-dependent processing of point cloud data (herein "V-PCC") for six-degrees-of-freedom media ingest / generation / (de)coding / rendering / display. It should be understood that the described features may be used separately or combined in any order, and elements such as encoding and decoding may be implemented by processing circuitry (e.g., one or more processors or one or more integrated circuits), as particularly illustrated, and the one or more processors may execute a program stored on a non-transitory computer-readable medium according to an exemplary embodiment.

[0065] Diagram 600 illustrates an exemplary embodiment for streaming coded point cloud data with V-PCC.

[0066] In volumetric data acquisition block 601, a real-world visual scene or a computer-generated visual scene (or a combination thereof) may be captured by a set of camera devices or synthesized by a computer as volumetric data. The volumetric data, which may have any format, may be converted into a (quantized) point cloud data format through image processing in point cloud conversion block 602. For example, according to an exemplary embodiment, the data from the volumetric data may be area data with area data converted into one of the point cloud points by pulling one or more of the values ​​described below from the volumetric data and any associated data into the desired point cloud format. According to an exemplary embodiment, the volumetric data may be a 3D dataset of 2D images, such as slices, which may project 2D projections of the 3D dataset. According to an example embodiment, a point cloud data format includes a representation of data points in one or more various spaces and may be used to represent volumetric data and may provide improvements in terms of sampling and data compression with respect to temporal redundancy, etc. For example, point cloud data in an x,y,z format may represent color values ​​(e.g., RGB, etc.), brightness, intensity, etc. at each point of a plurality of points in the cloud data and may be used with progressive decoding, polygon meshes, direct rendering, octree 3D representations of 2D quadtree data.

[0067] In the projection to image block 603, the acquired point cloud data may be projected onto a 2D image and encoded as an image / video picture using video-based point cloud coding (V-PCC). The projected point cloud data may consist of attributes, geometry, occupancy maps, and other metadata used for point cloud data reconstruction using, for example, Painter's algorithm, ray casting algorithms, (3D) binary space partitioning algorithms, among others.

[0068] Meanwhile, in the scene generator block 609, the scene generator may generate several metadata used to render and display six degrees of freedom (DoF) media, for example, according to the director's intent or user preferences. Such 6DoF media may include 360VR, such as a 3D view of a scene from rotational changes on 3D axes X, Y, and Z, in addition to additional dimensions that enable forward / backward, up / down, and left / right movement within the point cloud coded data, or at least for the virtual experience accordingly. The scene description metadata defines one or more scenes comprised of coded point cloud data and other media data, including VR360, light field, audio, etc., and may be provided to one or more cloud servers and / or file / segment encapsulation / deencapsulation processes, as shown in FIG. 6 and the related description.

[0069] After the video encoding block 604 and the image encoding block 605, similar to the video and image encoding described above (it will be appreciated that audio encoding may also be provided as described above), the file / segment encapsulation block 606 processes the coded point cloud data to be arranged into media files for file playback, or a sequence of initialization segments, and media segments for streaming according to a particular media container file format, such as one or more video container formats; such descriptions may be used in connection with DASH, described below, such as representing an exemplary embodiment. The file container may also include scene description metadata, such as from the scene generator block 1109, in the files or segments.

[0070] According to an exemplary embodiment, a file includes at least one view position and at least one or more angular views at the view position, respectively, at one or more times of the 6DoF media, encapsulated according to scene description metadata such that such file may be transmitted on request according to user or creator input. Further, according to an exemplary embodiment, a segment of such a file may include one or more portions of such a file, e.g., a portion of the 6DoF media showing one viewpoint and an angle at one or more times, although these are merely exemplary embodiments and may vary according to various conditions, such as network, user, creator capabilities and input.

[0071] According to an example embodiment, the point cloud data is partitioned into multiple 2D / 3D regions that are coded independently, such as in one or more of the video encoding block 604 and the image encoding block 605. Each partition of the independently coded point cloud data may then be encapsulated as a track within a file and / or segment in the file / segment encapsulation block 606. According to an example embodiment, each point cloud track and / or metadata track may include some useful metadata for view position / angle dependent processing.

[0072] According to an example embodiment, metadata useful for view position / angle dependent processing, such as included in files and / or segments encapsulated with respect to a file / segment encapsulation block, includes one or more of: layout information of 2D / 3D partitions with indexes; (dynamic) mapping information associating a 3D volume partition with one or more 2D partitions (e.g., tiles / tile groups / slices / subpictures); 3D position of each 3D partition on the 6DoF coordinate system; a representative view position / angle list; a selected view position / angle list corresponding to the 3D volume partition; an index of the 2D / 3D partition corresponding to the selected view position / angle; quality (rank) information of each 2D / 3D partition; and rendering information of each 2D / 3D partition according to, for example, each view position / angle. Invoking such metadata when requested, such as by a user of the V-PCC player or as directed by a content creator on behalf of a user of the V-PCC player, may enable more efficient processing with respect to the particular portion of the 6DoF media desired with respect to such metadata, thereby allowing the V-PCC player to deliver a higher quality image that is focused on that portion of the 6DoF media rather than other portions, rather than delivering unused portions of that media.

[0073] From the File / Segment Encapsulation block 606, the file or one or more segments of the file may be delivered directly to either the V-PCC Player 625 and a cloud server such as the Cloud Server block 607 using a delivery mechanism (e.g., Dynamic Adaptive Streaming over HTTP (DASH)), which may extract one or more tracks and / or one or more specific 2D / 3D partitions from the file and may merge multiple coded point cloud data into one data.

[0074] If the current viewing position and angle is defined in a 6DoF coordinate system on the client system according to data such as position / viewing angle tracking block 608, then in cloud server block 607, view position / angle metadata may be delivered from file / segment encapsulation block 606 or otherwise processed from files or segments already on the cloud server, so that the cloud server can extract the appropriate partitions from the store files and merge them (if necessary) depending on the metadata from, for example, a client system with V-PCC player 625, and the extracted data can be delivered to the client as files or segments.

[0075] With respect to such data, in the file / segment decapsulation block 615, a file decapsulator processes the file or received segment, extracts the coded bitstream and parses the metadata, and in the video decoding and image decoding blocks 610 and 611, the coded point cloud data is then decoded and reconstructed into point cloud data in the point cloud reconstruction block 612, and the reconstructed point cloud data can be displayed in the display block 614 and / or may be initially configured according to one or more various scene descriptions in the scene composition block 613 with respect to the scene description data in accordance with the scene generator block 609.

[0076] In view of the above, such an exemplary V-PCC flow represents advantages over the V-PCC standard, including one or more of the described partitioning capabilities for multiple 2D / 3D areas, the capability for compressed domain assembly of coded 2D / 3D partitions into a single conformally coded video bitstream, and the capability for bitstream extraction of coded 2D / 3D coded pictures into a conformally coded bitstream, and such V-PCC system support is further improved by including a container formation for the VVC bitstream to support a metadata-containing mechanism for carrying one or more of the above-mentioned metadata.

[0077] In this regard, according to exemplary embodiments described further below, the term "mesh" or "input mesh," as used herein to refer to the initially obtained "mesh," refers to a configuration of one or more polygons that describe the surface of a volumetric object. Each vertex of the mesh may be signaled as part of the volumetric data. Each polygon is defined by its vertices in 3D space and information about how the vertices are connected, referred to as connectivity information. The vertices of the "input mesh" may be considered "base mesh vertices" as a basis for considering various displacement vectors of "projected" and "predicted" vertices to other vertices, for example, for compression. Optionally, vertex attributes, such as color and normals, may be associated with the mesh vertices. Attributes may also be associated with the surface of the mesh by utilizing mapping information that parameterizes the mesh with a 2D attribute map. Such mapping may be described by a set of parametric coordinates, referred to as UV coordinates or texture coordinates, associated with the mesh vertices. The 2D attribute map is used to store high-resolution attribute information, such as texture, normals, and displacement. Such information may be used for various purposes, such as texture mapping and shading, according to exemplary embodiments.

[0078] Nevertheless, dynamic mesh sequences can require large amounts of data because they can consist of a significant amount of information that changes over time. Therefore, efficient compression techniques are needed to store and transmit such content. Mesh compression standards IC, MESHGRID, and FAMC were previously developed by MPEG to address dynamic meshes with constant connectivity and time-varying geometry and vertex attributes. However, these standards do not consider time-varying attribute maps and connectivity information. Digital content creation (DCC) tools typically generate such dynamic meshes. Correspondingly, it is difficult for volumetric acquisition techniques to generate constant connectivity dynamic meshes, especially under real-time constraints. This type of content is not supported by existing standards. According to exemplary embodiments herein, aspects of a new mesh compression standard are described for directly processing dynamic meshes with time-varying connectivity information and, optionally, time-varying attribute maps. The standard targets lossy and lossless compression for various applications, such as real-time communication, storage, free-viewpoint video, AR, and VR. Features such as random access and scalable / progressive coding are also considered.

[0079] FIG. 7 illustrates an exemplary framework 700 for dynamic mesh compression, such as for a 2D atlas sampling-based method. Each frame of an input mesh 701 can be preprocessed by a series of operations, such as tracking, remeshing, parameterization, and voxelization. Note that these operations can be encoder-only, meaning they may not be part of the decoding process. Such a possibility may be signaled in metadata by a flag, such as 0 indicating encoder-only and 1 indicating encoder-only. A mesh 702 with a 2D UV atlas can then be obtained, where each vertex of the mesh has one or more associated UV coordinates on the 2D atlas. The mesh can then be converted into multiple maps, including a geometry map and an attribute map, by sampling on the 2D atlas. These 2D maps can then be coded by a video / image codec, such as HEVC, VVC, AV1, or AVS3. At the decoder 703 side, a mesh can be reconstructed from the decoded 2D maps. Optional post-processing and filtering can also be applied to the reconstructed mesh 704. Note that metadata may also be signaled to the decoder side for the purpose of 3D mesh reconstruction. Note that chart boundary information, including the uv and xyz coordinates of boundary vertices, can be predicted, quantized, and entropy coded in the bitstream. The quantization step size can be configured on the encoder side for a tradeoff between quality and bitrate.

[0080] In some implementations, a 3D mesh can be partitioned into segments (or patches / charts), and one or more 3D mesh segments can be considered a "3D mesh" according to an example embodiment. Each segment consists of a set of connected vertices associated with their geometry, attributes, and connectivity information. As shown in the volumetric data example 800 in FIG. 8, a UV parameterization process 802 that maps 3D mesh segments to 2D charts, such as the 2D UV atlas 702 block described above, maps one or more mesh segments 801 to a 2D chart 803 in a 2D UV atlas 804. Each vertex (v n ) will be assigned 2D UV coordinates in the 2D UV atlas. n Note that vertices v4, v5, v1, and v3 form connected components as their 3D counterparts. The geometry, attributes, and connectivity information of each vertex may be inherited from their 3D counterparts as well. For example, vertex v4 may indicate that it is directly connected to vertices v0, v5, v1, and v3, and so on, as well as each of the other vertices. Furthermore, such a 2D textured mesh, according to an exemplary embodiment, may further indicate information such as color information for each triangular patch, e.g., for each patch with v2, v5, v3, etc. as one "patch."

[0081] For example, see example 900 in FIG. 9, where, in addition to the features of example 800 in FIG. 8, 3D mesh segment 801 can also be mapped to multiple separate 2D charts 901 and 902. In this case, a vertex in 3D can also correspond to multiple vertices in the 2D UV atlas. As shown in FIG. 9, the same 3D mesh segment is mapped to multiple 2D charts in the 2D UV atlas, instead of a single chart as in FIG. 8. For example, 3D vertices v1 and v4 have two 2D correspondences v1, v1 and v4, v4, respectively. Thus, a typical 2D UV atlas for a 3D mesh may be composed of multiple charts, as shown in FIG. 14, where each chart may contain multiple (typically three or more) vertices associated with their 3D geometry, attributes, and connectivity information.

[0082] FIG. 9 shows an example 903 illustrating the derived triangulation in a chart with boundary vertices B0, B1, B2, B3, B4, B5, B6, and B7. Given such information, any triangulation method can be applied to create connectivity between vertices (including boundary vertices and sampled vertices). For example, for each vertex, find the two closest vertices. Or, for every vertex, generate triangles successively until a minimum number of triangles is achieved after a set number of attempts. As shown in example 903, there are various regular-shaped repeating triangles and various irregular-shaped triangles, which are generally closest to the boundary vertices and have unique dimensions that may or may not be shared with other triangles. Connectivity information can also be reconstructed by explicit signaling. If the polygon cannot be reconstructed by implicit rules, the encoder can signal connectivity information in the bitstream according to an exemplary embodiment.

[0083] Boundary vertices B0, B1, B2, B3, B4, B5, B6, and B7 are defined in 2D UV space. Boundary edges can be determined by checking whether the edge appears in only one triangle. The following information of the bounding vertices is important and should be signaled in the bitstream according to the exemplary embodiment: geometry information, e.g., 3D XYZ coordinates, even if currently in 2D UV parametric form, and 2D UV coordinates:

[0084] For the case where a bounding vertex in 3D corresponds to multiple vertices in the 2D UV atlas, the mapping from 3D XYZ to 2D UV can be one-to-many, as shown in Figure 9. Therefore, a UV-to-XYZ (or called UV2XYZ) index can be signaled to indicate the mapping function. UV2XYZ can be a 1D array of indices that map each 2D UV vertex to a 3D XYZ vertex.

[0085] According to an exemplary embodiment, to efficiently represent a mesh signal, a subset of mesh vertices may be first coded along with connectivity information between them. In the original mesh, connections between these vertices may not exist because they are subsampled from the original mesh. There are various ways to signal connectivity information between vertices, and therefore such a subset is referred to as a base mesh or base vertices.

[0086] According to an exemplary embodiment, several methods are implemented for dynamic mesh compression, which are part of the edge-based vertex prediction framework described above, where a base mesh is first coded and then more additional vertices are predicted based on connectivity information from the edges of the base mesh. Note that the methods may be applied individually or in any form of combination.

[0087] For example, consider the vertex grouping for prediction mode example flowchart 1001 of FIG. 10. In S201, vertices in a mesh may be obtained, and in S202, they can be divided into different groups for prediction purposes; see, e.g., FIG. 9. In one example, the division is performed using patch / chart partitioning in S204. In another example, the division is performed under each patch / chart in S205. The decision S203 to proceed to S204 or S205 may be signaled by a flag or the like. For S205, some vertices of the same patch / chart form a prediction group and share the same prediction mode, while some other vertices of the same patch / chart may use a different prediction mode. Here, a "prediction mode" may be considered to be a particular mode that a decoder uses to make predictions for video content including patches, and prediction modes may be categorized as intra-prediction modes and inter-prediction modes, and within each category, there may be different particular modes for the decoder to select. According to an exemplary embodiment, each group, or "prediction group," may share the same specific mode (e.g., an angular mode at a specific angle) or the same category prediction mode (e.g., all intra prediction modes, but can be predicted at different angles) according to an exemplary embodiment. Such grouping in S206 can be assigned at different levels by determining the respective number of vertices included in each group. For example, every 64, 32, or 16 vertices according to the scan order within a patch / chart may be assigned the same prediction mode according to an exemplary embodiment, while other vertices may be assigned differently. For each group, the prediction mode can be an intra prediction mode or an inter prediction mode. This can be signaled or assigned.According to the exemplary flowchart 1000, if a mesh frame or mesh slice is determined to be of intra type in S207, such as by checking whether a flag in the mesh frame or mesh slice indicates intra type, all vertex groups within that mesh frame or mesh slice shall use intra prediction mode; otherwise, in S208, either intra prediction mode or inter prediction mode may be selected for each group for all vertices therein.

[0088] Furthermore, for a group of mesh vertices using intra prediction mode, the vertices can only be predicted using previously coded vertices within the same subpartition of the current mesh. Sometimes, the subpartition can be the current mesh itself, according to an exemplary embodiment, and for a group of mesh vertices using inter prediction mode, the vertices can only be predicted using previously coded vertices from another mesh frame, according to an exemplary embodiment. Each of the above information can be determined and signaled by a flag or the like. The prediction feature may occur in S210, and the result of the prediction and signaling may occur in S211.

[0089] According to an exemplary embodiment, for each vertex in the group of vertices in the exemplary flowchart 1000 and the flowchart 1100 described below, after prediction, the residual becomes a 3D displacement vector indicating the shift from the current vertex to its predictor. The residual for the group of vertices needs to be further compressed. In one example, the transform in S211 can be applied to the residual for the vertex group before entropy coding, along with its signaling. To handle the coding of the group of displacement vectors, the following method can be implemented. For example, one method appropriately signals the group of displacement vectors, some displacement vectors, or cases where its components have only zero values. In another embodiment, a flag is signaled for each displacement vector indicating whether this vector has non-zero components; if not, coding of all components of this displacement vector can be skipped. Furthermore, in another embodiment, a flag is signaled for each group of displacement vectors indicating whether this group has non-zero components; if not, coding of all displacement vectors of this group can be skipped. Furthermore, in another embodiment, a flag is signaled for each component of a group of displacement vectors indicating whether this component of the group has any non-zero vectors, and if not, coding of this component of all displacement vectors of this group can be skipped. Furthermore, in another embodiment, there may be signaling if a group of displacement vectors or a component of a group of displacement vectors requires a transform, and if not, the transform can be skipped and quantization / entropy coding can be applied directly to the group or group component. Furthermore, in another embodiment, a flag is signaled for each group of displacement vectors indicating whether this group needs to undergo a transform, and if not, transform coding of all displacement vectors of this group can be skipped. Furthermore, in another embodiment, a flag is signaled for each component of a group of displacement vectors indicating whether this component of the group needs to undergo a transform, and if not, transform coding of this component of all displacement vectors of this group can be skipped.The above-described embodiments in this paragraph regarding processing of vertex prediction residuals can also be performed in combination in parallel, each on a different patch.

[0090] FIG. 11 shows an example flowchart 1150 in which a mesh frame can be coded as an entire data unit in S221, meaning that all vertices or attributes of the mesh frame may have correlations between them. Alternatively, depending on the determination in S222, the mesh frame can be divided into smaller, independent subpartitions in S223, similar in concept to slices or tiles of a 2D video or image. A prediction type can be assigned to the coded mesh frame or coded mesh subpartition in S224. Possible prediction types include intra-coding and inter-coding. For the intra-coding type, only prediction from a reconstructed portion of the same frame or slice is allowed in S225. Meanwhile, the inter-prediction type allows prediction from a previously coded mesh frame in addition to intra-mesh frame prediction in S225. The inter-prediction type may also be classified into more subtypes, such as P-type and B-type. In the P-type, only one predictor can be used for prediction purposes, while in the B-type, two predictors from two previously coded mesh frames may be used to generate a predictor. A weighted average of two predictors is an example. When a mesh frame is coded as a whole, the frame can be considered an intra-coded or inter-coded mesh frame. For inter-mesh frames, the P or B type can be further identified via signaling. Alternatively, when a mesh frame is further divided and coded within the frame, a prediction type for each subpartition is assigned in S224. Each of the above information may be determined and signaled by a flag or the like. Similar to S210 and S211 in FIG. 10, the prediction characteristics may be generated in S226, and the results of the prediction and signaling may be generated in S227.

[0091] Thus, dynamic mesh sequences may consist of a significant amount of information that changes over time and therefore may require large amounts of data, and efficient compression techniques are needed to store and transmit such content, and the features described above with respect to Figures 20 and 21 represent such improved efficiency by enabling at least improved mesh vertex 3D position prediction by using either previously decoded vertices within the same mesh frame (intra prediction) or previously decoded vertices from a previously coded mesh frame (inter prediction).

[0092] Additionally, exemplary embodiments may generate displacement vectors for a third layer 1303 of the mesh based on one or more of the reconstructed vertices of the second layer 1302 and its previous layer, such as the first layer 1301. Assuming the index of the second layer 1302 is T, a predictor T+1 for a vertex of the third layer 1303 is generated based on at least the reconstructed vertices of the current layer or the second layer 1302. An example of such a layer-based prediction structure is shown in example 1300 of FIG. 13 , which illustrates reconstruction-based vertex prediction, i.e., progressive vertex prediction using edge-based interpolation, in which predictors are generated based on previously decoded vertices rather than predictor vertices. The first layer 1301 may be a mesh bounded by a first polygon 1340 having as its vertices the decoded vertices on its boundary and the interpolated vertices along one of the lines between the decoded vertices. As the progressive coding proceeds from the first layer 1301 to the second layer 1302, additional polygons 1341 may be formed by displacement vectors from one of the interpolated vertices of the first layer to additional vertices of the second layer 1302, and thus the total number of vertices of the second layer 1302 may be greater than the total number of vertices of the first layer 1301. Similarly, when proceeding to the third layer 1303, the additional vertices of the second layer 1302, together with the decoded vertices from the first layer 1301, may function in the coding in the same way as the decoded vertices that functioned in proceeding from the first layer 1301 to the second layer 1303, i.e., multiple additional polygons may be formed. As a note, unlike Figure 13, example 1400 illustrates that when progressing from a first layer 1401 to a second layer 1403 and then to a third layer 1403, each of the additionally formed polygons may be entirely within the polygon formed by the extent of the first layer 1401. See example 1400 in Figure 14 which illustrates such progressive coding.

[0093] For such examples 1300 and / or 1400, according to an exemplary embodiment, reference is made to the exemplary flowchart 1200 of FIG. 12, where the interpolated vertices on the current layer are predicted values, and thus such values need to be reconstructed before being used to generate predictors for vertices on the next layer. This is done by coding the base mesh at S231, performing vertex prediction at S232, and then adding the decoded displacement vectors of the current layer to predictors for vertices such as layer 1302 at S233. Next, the reconstructed vertices of this layer 2303 can be used, together with all the decoded vertices of the previous layer, such as checking for additional vertex values of such a layer at S234, to generate and signal predictor vertices for the next layer 1303 at S235. This process can also be summarized as follows. Let P[t](Vi) represent the predictor for vertex Vi on layer t, R[t](Vi) represent the reconstructed vertex Vi on layer t, D[t](Vi) represent the displacement vector of vertex Vi on layer t, and f(*) represent the predictor generator, which can specifically be the average of two existing vertices. In that case, according to an exemplary embodiment, the following exists for each layer t. P[t](Vi)=f(R[s|s<t](Vj), R[m|m<t](Vk)), where Vj and Vk are the reconstructed vertices of the previous layer R[t](Vi)=P[t](Vi)+D[t](Vi) Equation (1)

[0094] Next, for all vertices of a mesh frame, they are divided into layers 0 (base mesh), layer 1, layer 2,.... etc. Then, the reconstruction of vertices in one layer depends on the reconstruction of vertices in the previous layer. Above, each of P, R, and D represents a 3D vector in the context of a 3D mesh representation. D is the decoded displacement vector, and quantization may or may not be applied to this vector.

[0095] According to an exemplary embodiment, vertex prediction using reconstructed vertices may only be applied to certain layers, such as layer 0 and layer 1. For other layers, vertex prediction can still use nearby predictor vertices without adding displacement vectors to them for reconstruction. Thus, these other layers can be processed simultaneously without waiting for the previous layer to reconstruct. According to an exemplary embodiment, for each layer, it may be signaled whether to select reconstruction-based vertex prediction or predictor-based vertex prediction, or it may be signaled that the layer (and subsequent layers) do not use reconstruction-based vertex prediction.

[0096] For displacement vectors generated by vertices whose vertex predictors are reconstructed, quantization can be applied to them without further transformation, such as a wavelet transform. For displacement vectors generated by other predictor vertices, a transformation may be required, and quantization can be applied to the transform coefficients of those displacement vectors.

[0097] Thus, dynamic mesh sequences can require large amounts of data because they may consist of a significant amount of information that changes over time. Therefore, efficient compression techniques are needed to store and transmit such content. In the framework of the interpolation-based vertex prediction method described above, compressing displacement vectors is one of the key steps, which accounts for a large portion of the coded bitstream and is the focus of this disclosure; for example, the features of FIG. 15 alleviate such problems by providing such compression.

[0098] Furthermore, as with the other examples described above, even in those embodiments, dynamic mesh sequences may still require large amounts of data since they may consist of a significant amount of information that changes over time, thus requiring efficient compression techniques to store and transmit such content. Within the framework of the 2D atlas sampling-based method described above, significant advantages can be achieved by inferring connectivity information from sampled vertices and boundary vertices at the decoder side. This is a key part of the decoding process and is the focus of further examples described below.

[0099] According to an exemplary embodiment, the connectivity information of the base mesh can be inferred (derived) from the decoded boundary vertices and sampled vertices of each chart on both the encoder and decoder sides.

[0100] Similar to the above, any triangulation method can be applied to create connectivity between vertices (including boundary vertices and sampled vertices). According to an exemplary embodiment, the connectivity type can be signaled in a high-level syntax such as a sequence header, slice header, etc.

[0101] As mentioned above, connectivity information can also be reconstructed by explicit signaling, such as for irregularly shaped triangular meshes. That is, if it is determined that a polygon cannot be reconstructed by implicit rules, the encoder can signal connectivity information in the bitstream. Also, according to exemplary embodiments, the overhead of such explicit signaling can be reduced depending on the polygon boundary.

[0102] According to an embodiment, only connectivity information between boundary vertices and sampled locations is determined to be signaled, and connectivity information between the sampled locations themselves is inferred.

[0103] Also, in any of the embodiments, connectivity information may be signaled predictively, such that only the difference between the estimated connectivity (as a prediction) from one mesh to another may be signaled in the bitstream.

[0104] As a note, the inferred triangle orientation (e.g., inferred clockwise or counterclockwise for each triangle) can be signaled for all charts in a high-level syntax such as a sequence header or slice header, or fixed (assumed) by the encoder and decoder according to an example embodiment. The inferred triangle orientation can also be signaled differently for each chart.

[0105] As a further note, any reconstructed mesh may have different connectivity than the original mesh, for example, the original mesh may be a triangle mesh and the reconstructed mesh may be a polygon mesh (e.g., a quad mesh).

[0106] According to an example embodiment, connectivity information for any base vertices may not be signaled; instead, edges between base vertices may be derived using the same algorithm on both the encoder and decoder sides. Also according to an example embodiment, predicted vertex interpolation of additional mesh vertices may be based on the derived edges of the base mesh.

[0107] According to an exemplary embodiment, a flag may be used to signal whether the connectivity information of the base vertices should be signaled or derived, and such a flag can be signaled at different levels of the bitstream, such as at the sequence level or the frame level.

[0108] According to an exemplary embodiment, the edges between base vertices are first derived using the same algorithm on both the encoder and decoder sides. Then, the difference between the derived edges and the actual edges is signaled compared with the original connectivity of the base mesh vertices. Therefore, after decoding the difference, the original connectivity of the base vertices can be restored.

[0109] In one example, for a derived edge, if it is determined to be erroneous when compared to the original edge, such information may be signaled in the bitstream (by indicating the vertex pairs that form this edge), and for an original edge, if it is not derived, it may be signaled in the bitstream (by indicating the vertex pairs that form this edge). Furthermore, connectivity on and vertex interpolation involving boundary edges may be performed separately from interior vertices and edges.

[0110] Thus, by virtue of the exemplary embodiments described herein, the technical problems noted above may be advantageously ameliorated by one or more of these technical solutions. For example, dynamic mesh sequences may require large amounts of data, as they may consist of a significant amount of information that changes over time, and therefore the exemplary embodiments described herein represent at least an efficient compression technique for storing and transmitting such content.

[0111] The above-described embodiments may further be applied to instance-based mesh coding, where an instance may be a mesh of an object or a portion of an object. For example, illustrated example 1600 of FIG. 16 shows an example mesh 1601 in which various instances 1602 (representing a mesh of a cup), 1603 (representing a mesh of a spoon), and 1604 (representing a mesh of a plate) exist and may be separated and coded. Also, while each of instances 1601, 1602, 1603, and 1604 is shown in a respective bounding box, which will be described further below, it should be noted that instance 1601 may be considered to be shown bounded by a "mesh-based bounding box," and each of instances 1602, 1603, and 1604 may be considered to be shown bounded by a respective "instance-based bounding box."

[0112] According to exemplary embodiments, the proposed methods may be used separately or combined in any order. The proposed methods may be used for any polygonal mesh, although only triangular meshes may be used to demonstrate various embodiments. As mentioned above, it is assumed that an input mesh may contain one or more instances, and a sub-mesh is a portion of the input mesh that has one or more instances, and multiple instances may be grouped to form a sub-mesh.

[0113] In that regard, Figure 15 shows an example 1500 in which it is proposed to separately quantize different objects or portions at a given input bit depth (which bit depth may also be referred to as "QP"). For example, in S1501, one or more input meshes may be obtained and each separated into multiple sub-meshes. The sub-meshes may be objects, instances of objects, or segmented regions, which, according to an exemplary embodiment, are independently quantized in S1502.

[0114] According to an exemplary embodiment, a mesh M having m points at (x, y, z) coordinates may be quantized by QP bit depth in S1502. The quantization step size for all three dimensions (x, y, z) may be determined based on the maximum length of the bounding box in all dimensions, and d bbox >0. Also, the same quantization step size may be applied in S1504 to all objects in the mesh identified in S1503,

number

number

number

number

number

[0115] However, in complex scenes, the largest objects are the background, which may relatively often be simple and can tolerate higher quantization step sizes, while the main objects are smaller and suffer from large quantization errors that can be accounted for by various embodiments described further below.

[0116] Therefore, as shown in example 1500 of Figure 15, the bounding box d of the input mesh bbox The maximum length of is always the bounding box of each instance, as follows:

number

number

number

[0117] For a given bit depth QP, the quantization step size of each instance of instances 1602 (representing a mesh of a cup), 1603 (representing a mesh of a spoon), and 1604 (representing a mesh of a plate) is always

number

[0118] Therefore, the quantization error for each instance is reduced, resulting in a smaller overall quantization error.

[0119] According to various embodiments, referring to flowchart 1700 of FIG. 17, a bit depth may be adaptively assigned to each instance / region, referred to as a "submesh," in S1702 and may be determined based on the areal density of that particular instance. Each submesh may be obtained from the volumetric data of the mesh, which may itself individually signal each instance within the mesh, and each submesh is derived from that mesh for each instance in S1702. For example, each of instances 1602, 1603, and 1604 may be assigned its own respective bit depth in S1704 according to its own particular areal density or number of vertices forming one or more of the aforementioned polygons therein. In general, the more faces each instance has, which may be determined by counting the number of such polygons therein in S1703, or the like, the less quantization should be applied to that instance in S1702. For example, given a mesh M, where the total number of faces is n, the faces corresponding to the kth submesh may be n such that: k and

number

number

number

number

[0120] According to various embodiments, the meshes are represented as a base mesh B and its corresponding displacement D, which are quantized at different bit depths in S1702. For example, for the kth object, a bithdepth base mesh B is

number

number

number

[0121] According to various embodiments, an adaptive bit depth parameter based on minimizing distortion may be used. For example, given an input bithdepthQP, the mean squared error (MSE) of the quantization method is

number

number

number

[0122] In addition, the best bithdepth for displacement can also be obtained via:

number

[0123] According to an example embodiment, there may be signaling of the quantization of each object, such as by signaling the bit depth via the bitstream in the signal of S1707. The set of base quantization bit depths in ascending order is:

number

number

[0124] [Table 1]

[0125] where: u(n) is an unsigned integer using n bits, i(n) is an integer using n bits, mips_quant() is a sequence of signaling data, mips_min_bbox[k] is the minimum bounding box in the i-th dimension, mips_num_instances_minus1 is the number of instances in the mesh minus 1, mips_base_bitdepth_minus1 is the bit depth of the first instance in this order, mips_base_quant[k] is the difference between the quantization of the (k+1)th and kth submesh. Since the quantization set is sorted in ascending order, this number is always non-negative. mips_dist_quant[k] is the kth quantized data of the bithdepth of the base mesh.

[0126] According to various embodiments, to reduce signaling overhead, multiple instances may be grouped into K groups with the same bit depth. The instances can be clustered by a simple clustering method such as K-means clustering using bounding boxes.

number

[0127] However, since such 3D scenes may often consist of multiple instances with similar mesh structures that reuse assets, further improvements may be realized by not only utilizing local characteristics but also by considering similarities between instances according to exemplary embodiments.

[0128] For example, continuing from above, FIG. 18 shows an exemplary flowchart 1800 for finding redundant meshes and encoding corresponding displacements using an instance-based matching prediction (IMP) method, which may advantageously normalize instances to maximize their similarity and may be used in any of the embodiments described above.

[0129] For example, in S1801, an input mesh may be obtained and partitioned into multiple sub-meshes as described above, which may be instances of individual objects or portions of objects, according to an example embodiment.

[0130] At S1802, instances may be grouped into similarity groups using simple scaling features and similarity measures. For example, according to an embodiment, instances may be aligned and normalized so that only transient assets can be reused. Scale and orientation information may be signaled over an IMP mode channel, such that given an input mesh M with m instances, the i-th instance is

number

[0131] According to an exemplary embodiment, in S1803, in response to the instruction of the flag, the IMP is used to select the size greater than 1, i.e., m k >1 asset group

number

[0132] [Table 2]

[0133] In the case of lossless compression,

number

number

[0134] Depending on flag S1804, coding in S1805 may be signaled to independently code the sub-meshes into sub-bitstreams. Each sub-mesh can be coded by a mesh codec having different coding parameters. Note that each sub-mesh can also be coded by a different mesh codec, in which case a codec index indicating which mesh codec is used must be signaled in the header of the sub-bitstream, for example. According to an exemplary embodiment, the sub-bitstreams of a sub-mesh can be encoded and decoded in parallel without data dependency issues.

[0135] If the flag in S1804 instead indicates dependent coding, an additional flag may be considered in S1806 to also indicate the mode of dependently coding the sub-meshes. For example, according to an embodiment, a sub-mesh may be coded by prediction from other sub-meshes that have already been coded. A prediction index may be coded to indicate which sub-mesh is used as a prediction. The prediction index may be signaled at different levels.

[0136] For example, in S1807, only one prediction index may be coded for the entire submesh, so that all vertices within the current submesh are predicted from the same submesh as indicated by the index according to an exemplary embodiment.

[0137] In S1808, a prediction index may be signaled for each vertex of the current submesh so that each vertex can be predicted from a different submesh. Note that the prediction index may also be coded by predictive coding, where the prediction index of a vertex may be predicted from neighboring coded vertices. Then, according to an exemplary embodiment, the prediction index residual may be coded by arithmetic coding.

[0138] In S1809, the prediction index may be signaled at an intermediate level between the vertex level and the sub-mesh level, such as the vertex group level, where a group of vertices shares the same prediction index. Note that the prediction indexes for different groups may also be coded by predictive coding according to an exemplary embodiment. The signaling may be performed in S1810.

[0139] Next, given the prediction index of each vertex of the current submesh, each vertex can be predicted from the vertices in the corresponding submesh as described herein using any of the exemplary embodiments. According to an exemplary embodiment, a rigid motion may be estimated from the prediction submesh to the current submesh, and the parameters of the rigid motion (e.g., rotation and translation parameters) can be coded. Then, after applying the rigid motion to the prediction submesh, a residual of the attributes of the current vertex can be obtained by subtracting the attributes of the corresponding vertex in the transformed prediction submesh. The vertex attributes can include, but are not limited to, geometry, color, normal, UV coordinates, connectivity, etc. The residual information can then be coded using arithmetic coding according to an exemplary embodiment.

[0140] Additionally, such coding may be applied to coding material and texture information per sub-mesh, which may include, but is not necessarily limited to, ambient color, diffuse color, specular color, specular highlight focus, dissolve coefficients, lighting model, texture image ID, etc.

[0141] According to an exemplary embodiment, one sub-mesh only allows one set of material and texture information, and in such a case this information can simply be coded in the header of the sub-bitstream.

[0142] Alternatively, according to an exemplary embodiment, one submesh may have two or more sets of material and texture information, in which case the sets may be coded in the header of the sub-bitstream. Note that these parameters in different sets may be coded independently or dependently. If dependent coding is applied, prediction may be applied, and the prediction residual of the material parameters may be coded instead. Then, for each vertex in the submesh, a material ID may be coded to indicate which set of material information is used for this vertex. Note that according to an exemplary embodiment, to reduce redundancy, the material ID (identifier) ​​may be coded by predicting from coded neighboring vertices.

[0143] Thus, according to embodiments herein, it is realized that complex meshes often contain information about multiple instances for relating and associating texture maps, and that this information may be available at encoding time, so that each instance may be considered a 3D asset in 3D design according to exemplary embodiments herein, as assets may be frequently used to reduce costs in designing models, particularly for compositing complex scenes. For example, 3D models may be reused with or without textures modified for differences in scale, orientation, etc. This, among other aspects discussed above, addresses issues related to matching and retrieving 3D objects, as meshes may be normalized to position, size, and orientation based on PCA (principal component analysis) or bilateral symmetry planes, thereby allowing for more efficient retrieval.

[0144] Figure 19 shows an example 1900 of block partitioning by using a quadtree binary tree (QTBT) 1901 and corresponding tree representation 1902. Solid lines indicate quadtree partitioning, and dotted lines indicate binary tree partitioning. At each partition (i.e., non-leaf) node of the binary tree, one flag is signaled to indicate which partition type is used (i.e., horizontal or vertical), with 0 indicating horizontal partitioning and 1 indicating vertical partitioning. In the case of quadtree partitioning, there is no need to indicate the partition type because quadtree partitioning always partitions a block both horizontally and vertically to generate four sub-blocks of equal size.

[0145] A coding tree unit (CTU) is divided into coding units (CUs) by using a quadtree structure represented as a coding tree to adapt to various local characteristics. The decision of whether to use inter-picture (temporal) prediction or intra-picture (spatial) prediction to code a picture area is made at the CU level. Each CU can be further divided into one, two, or four prediction units (PUs) according to the PU partition type. The same prediction process is applied within a PU, and related information is transmitted to the decoder on a PU-by-PU basis. After obtaining residual blocks by applying a prediction process based on the PU partition type, the CU can be partitioned into transform units (TUs) according to another quadtree structure, such as the CU's coding tree.

[0146] According to an exemplary embodiment, there are both lossless and lossy mesh coding techniques: a base mesh may be extracted as a subset of the original mesh, and the remaining vertices are encoded based on distance-based predictive displacement coding.

[0147] According to an exemplary embodiment, the aspects described herein may be used separately or combined in any order, and may be used for any polygon mesh, and the geometry may be encoded by a base mesh and predicted displacement coding. For example, referring to flowchart 2000, in S2002, given a base mesh that is a subset of the original mesh obtained in S2001, an original vertex may be encoded by its predicted point (projected vertex) and the displacement between the predicted point (projected vertex) and the original point (remaining vertex), referring to example 2100. The base mesh is constrained so that the remaining vertices (not included in the vertex) are always on the normal side of the intermediate vertex.

[0148] For example, if the displacement coding of a 2D mesh is determined in S2004, then looking at Example 2101, two distance-based displacement codings of a 2D mesh, the points

number

number

number

number

number

number

[0149] According to an exemplary embodiment in 2D, and in 3D according to another exemplary embodiment, in S2006, an additional point y on the line between the neighboring points y1 and y2 is calculated. n is derived from the neighborhood. For example, point y n The scalar distance from is derived from the center of points y1, y3 as 0, 1 / 2, 1 / 3, 2 / 3. Then, in S2007, the best candidate in terms of rate and distortion is selected and signaled.

[0150] Such an embodiment uses points y1 and y3 to find the intermediate point y n Then, from there,

number

number

[0151] Turning to example 2102 of FIG. 21 , which illustrates two distance-based displacement codings for displacement coding of a nearly lossless 3D mesh, which may be considered lossless herein, the 3D mesh is described based on the selection of 3D coding in S2004, according to an exemplary embodiment. For example, if it is determined in S2008 that lossy coding is not selected, then in S2009, vertex z4 is predicted from its neighboring vertices in the base mesh: points z1, z2, and z3. As in the 2D case of example 2101, the distance h h If is known, point z4 is

number

number

number

number

number

[0152] Turning to example 2103 illustrating subdivision and distance-based mesh coding, such an exemplary embodiment similarly introduces displacement coding of the lossy 3D mesh as selected in S2008 based on distance and surface subdivision in S2011. That is, similar to example 2102, in example 2103, the base mesh surface points

number

number

number

number

number

number

[0153] As described above for example 2101, example 2103 also differs from example 2102 in that example 2103 has points z4 and z5.

number

number

number

number

number

[0154] According to an example embodiment, in one embodiment, there is face-level processing of the lossy (selected in S2008), 3D (selected in S2004), quad (selected in S2010) mesh based on distance and face subdivision. For example, instead of sequential prediction and encoding, there is pixelation of the mesh into corresponding rectangular blocks in S2012, such as one or more of the blocks shown in example 1901. This approach enables a block portioning, block merging framework in video coding.

[0155] For example, when pixelating a face in S2012, given a quad face, first the original vertices that were subdivided are 2 The example ternary tree shown in example 2201 of ternary tree subdivision at level 1 for a group representation of a quad mesh and corresponding displacements in example 2200 of FIG. 22 is 4 2 Based on the assumption of a smooth varying surface of the mesh, groups of displacements are likely to be highly correlated. Therefore, intra-like prediction and local transformations can be used to divide the displacements.

number

[0156] According to an exemplary embodiment, the displacement

number

[0157] For example, looking at the group displacement representation 2252, we may use the already encoded base mesh vertices (bottom left LL, bottom right LR, top left TL, top right TF) to predict the displacement depending on its position, i.e., given a group displacement representation of size B1×B2, we may use four weight matrices to derive the prediction at position i,j of the partition grid as follows:

number

[0158] Furthermore, example 2202 illustrates a neighborhood-based intra-displacement prediction that can predict a current displacement group using base mesh vertices and already encoded neighboring displacement vertices. The prediction can be an angle prediction in intra-prediction. Additional base mesh vertices can be utilized to perform correction for angle prediction and post-smoothing of equation (11) according to an exemplary embodiment.

[0159] Thus, the aspects described herein address technical deficiencies by avoiding creating additional vertices with spurious connectivity that reduce the throughput of GPU-based mesh rendering and thereby prevent the utilization of advanced coding methods in video compression for mesh coding.

[0160] The techniques described above can be implemented using computer-readable instructions, as computer software physically stored on one or more computer-readable media, or by one or more tangibly configured hardware processors. For example, Figure 23 illustrates a computer system 2300 suitable for implementing certain embodiments of the disclosed subject matter.

[0161] The computer software can be coded using any suitable machine code or computer language that can undergo mechanisms such as assembly, compilation, linking, etc. to create code containing instructions that can be executed by a computer central processing unit (CPU), graphics processing unit (GPU), etc. directly, or via interpretation, microcode execution, etc.

[0162] The instructions may be executed on various types of computers or computer components including, for example, personal computers, tablet computers, servers, smartphones, gaming consoles, Internet of Things devices, and the like.

[0163] 23 for computer system 2300 are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure. The arrangement of components should not be interpreted as having a dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system 2300.

[0164] The computer system 2300 may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users via, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), olfactory input (not shown). The human interface devices may also be used to capture certain media not necessarily directly associated with conscious human input, such as audio (e.g., voice, music, ambient sounds), images (e.g., scanned images, photographic images, still image captured from a camera, etc.), and video (two-dimensional video, three-dimensional video including stereoscopic video, etc.).

[0165] The input human interface devices may include one or more of a keyboard 2301, a mouse 2302, a trackpad 2303, a touchscreen 2310, a joystick 2305, a microphone 2306, a scanner 2308, and a camera 2307 (only one of each is shown).

[0166] The computer system 2300 may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen 2310 or joystick 2305, although haptic feedback devices that do not function as input devices may also be present), audio output devices (e.g., speakers 2309, headphones (not shown)), visual output devices (e.g., screens 2310 including CRT screens, LCD screens, plasma screens, and OLED screens, each with or without touchscreen input capability and each with or without haptic feedback capability, some of which may be capable of outputting two-dimensional visual output or output in more than three dimensions via means such as stereoscopic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).

[0167] The computer system 2300 may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW 2320 with media such as CD / DVD 2311, thumb drive 2322, removable hard drive or solid state drive 2323, legacy magnetic media such as tape or floppy disk (not shown), dedicated ROM / ASIC / PLD based devices such as security dongles (not shown), etc.

[0168] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter of this disclosure does not encompass transmission media, carrier waves, or other transitory signals.

[0169] The computer system 2300 may also include an interface 2399 to one or more communications networks 2398. The network 2398 may be, for example, wireless, wired, optical, etc. The network 2398 may further be local, wide area, metropolitan, vehicular and industrial, real-time, delay tolerant, etc. Examples of networks 2398 include local area networks such as Ethernet, WLAN, etc., cellular networks including GSM, 3G, 4G, 5G, LTE, etc., TV wired or wireless wide area digital networks including cable TV, satellite TV, and terrestrial broadcast TV, vehicular and industrial networks including CANBus, etc. Particular networks 2398 generally require an external network interface adapter attached to a particular general-purpose data port or peripheral bus (2350 and 2351) (e.g., a USB port on the computer system 2300, etc.), while other networks are generally built into the core of the computer system 2300 by attachment to the system bus as described below (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks 2398, the computer system 2300 can communicate with other entities. Such communication can be unidirectional receive only (e.g., broadcast TV), unidirectional transmit only (e.g., a CANbus to certain CANbus devices), or bidirectional, e.g., to other computer systems using local-area or wide-area digital networks. Particular protocols and protocol stacks can be used with each of these networks and network interfaces, as described above.

[0170] The aforementioned human interface devices, human accessible storage devices, and network interfaces may be attached to the core 2340 of the computer system 2300 .

[0171] The core 2340 may include one or more central processing units (CPUs) 2341, graphics processing units (GPUs) 2342, graphics adapters 2317, dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) 2343, hardware accelerators for specific tasks 2344, etc. These devices may be connected via a system bus 2348, along with read-only memory (ROM) 2345, random access memory 2346, internal mass storage such as an internal non-user-accessible hard drive, SSD, etc. 2347. In some computer systems, the system bus 2348 may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus 2348 or via a peripheral bus 2349. Architectures for peripheral buses include PCI, USB, etc.

[0172] The CPU 2341, GPU 2342, FPGA 2343, and accelerator 2344 can execute specific instructions that, in combination, can constitute the aforementioned computer code. That computer code can be stored in ROM 2345 or RAM 2346. Temporary data can also be stored in RAM 2346, while persistent data can be stored in, for example, internal mass storage 2347. Fast storage and retrieval from any of the memory devices can be enabled through the use of cache memory, which can be closely associated with one or more of the CPU 2341, GPU 2342, mass storage 2347, ROM 2345, RAM 2346, etc.

[0173] The computer-readable medium may bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.

[0174] By way of example and not limitation, computer system 2300 having the architecture, and specifically core 2340, may provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be user-accessible mass storage, as described above, as well as media associated with specific storage of core 2340 that is non-transitory in nature, such as core internal mass storage 2347 or ROM 2345. Software implementing various embodiments of the present disclosure may be stored on such devices and executed by core 2340. The computer-readable media may include one or more memory devices or chips, depending on particular needs. The software may cause core 2340, and specifically the processor therein (including a CPU, GPU, FPGA, etc.), to perform particular processes or particular portions of particular processes described herein, including defining data structures stored in RAM 2346 and modifying such data structures according to processes defined by the software. Additionally or alternatively, a computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator 2344), which may operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. References to software may, where appropriate, encompass logic, and vice versa. References to computer-readable media may, where appropriate, encompass circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both. The present disclosure encompasses any suitable combination of hardware and software.

[0175] While this disclosure describes several exemplary embodiments, there are alterations, permutations, and various substitute equivalents that fall within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within the spirit and scope of the present disclosure. [Explanation of symbols]

[0176] 100 communication system, 101 terminal, 102 terminal, 103 terminal / second terminal, 104 terminal / first terminal, 105 communication network, 201 video source, 202 encoder, 203 capture subsystem, 204 encoded video bitstream, 205 streaming server, 206 copy of encoded video bitstream / video bitstream, 207 streaming client, 208 copy of encoded video bitstream / incoming copy of encoded video bitstream / video bitstream, 209 display, 210 outgoing video sample stream, 211 video decoder, 212 streaming client, 213 uncompressed video sample stream, 300 video decoder, 301 channel, 302 receiver, 303 buffer memory / encoder, 304 entropy decoder / parser, 305 scaler / inverse transform unit, 306 motion compensated prediction unit, 307 Intra-picture prediction unit, 308 Reference picture memory / reference picture buffer, 309 Current reference picture, 310 Aggregator, 311 Loop filter unit, 312 Display / rendering device, 313 Symbol, 400 Video encoder, 401 Video source, 402 Controller, 403 Source coder, 404 Predictor, 405 Reference picture memory, 406 Local video decoder, 407 Coding engine, 408 Entropy coder, 409 Transmitter, 410 Coded video sequence, 411 Communication channel, 500 Simplified block-style workflow diagram, 501 Acquisition block, 502 Audio encoding block, 503 Processing block, 504 Video encoding block, 505 Image encoding block, 507 Distribution block, 508 Head / eye tracking block, 510 Audio decoding block, 511 Audio rendering block, 512 Speaker / headphone block, 513 video decoding block, 514 image decoding block, 515 image rendering block, 516 display block, 520OMAF Player, 600 Simplified Block-Style Content Flow Process Diagram, 601 Volumetric Data Acquisition Block, 602 Conversion to Point Cloud Block, 603 Projection to Image Block, 604 Video Encoding Block, 605 Image Encoding Block, 606 File / Segment Encapsulation Block, 607 Cloud Server Block, 608 Position / View Tracking Block, 609 Scene Generator Block, 610 Video Decoding Block, 611 Image Decoding Block, 612 Point Cloud Reconstruction Block, 613 Scene Composition Block, 614 Display Block, 615 File / Segment Decapsulation Block, 625 V-PCC Player, 700 Framework, 701 Input Mesh, 702 Mesh with 2D UV Atlas, 703 Decoder, 704 Reconstructed Mesh, 800 Volumetric Data Example, 801 3D Mesh Segments, 802 UV Parameterization Process, 803 2D Chart, 804 2D UV Atlas, 900 Example, 901 2D Chart, 902 2D Chart, 903 Example, 1000 Exemplary Flowchart, 1001 Prediction Mode Example Flowchart, S201 Steps, S202 Steps, S203 Steps, S204 Steps, S205 Steps, S206 Steps, S207 Steps, S208 Steps, S209 Steps, S210 Steps, S211 Steps, 1150 Exemplary Flowchart, S221 Steps, S222 Steps, S223 Steps, S224 Steps, S225 Steps, S226 Steps, S227 Steps, 1200 Exemplary Flowchart, S231 Steps, S232 Steps, S233 Steps, S234 Steps, S235 Steps, 1300 Example, 1301 First Layer, 1302 Second Layer, 1303 Third Layer, 1340 First polygon, 1341 Additional polygon, 1400 Example, 1401 First layer, 1402 Second layer, 1403 Third layer, 1500 Example, S1501 Step, S1502 Step, S1503 Step, S1504 Step, 1600 Example, 1601 Mesh example / instance, 1602 Instance, 1603Instance,1604 Instance,1700 Flowchart,S1701 Step,S1702 Step,S1703 Step,S1704 Step,S1705 Step,S1706 Step,S1707 Step,S1708 Step,1800 Flowchart,S1801 Step,S1802 Step,S1803 Step,S1804 Step,S1805 Step,S1806 Step,S1807 Step,S1808 Step,S1809 Step,S1810 Step,1900 Example,1901 Quad-Trunked Binary Tree (QTBT),1902 Tree Representation,2000 Flowchart,S2001 Step,S2002 Step,S2003 Step,S2004 Step,S2005 Step,S2006 Step,S2007 Step,S2008 Step, S2009 Step, S2010 Step, S2011 Step, S2012 Step, S2013 Step, S2014 Step, 2100 Example, 2101 Example, 2102 Example, 2103 Example, 2200 Example, 2201 Example, 2202 Example, 2251 Displacement Prediction, 2252 Group Displacement Representation, 2253 Already Encoded Face, 2254 Already Encoded Face, 2300 Computer System, 2301 Keyboard, 2302 Mouse, 2303 Trackpad, 2305 Joystick, 2306 Microphone, 2307 Camera, 2308 Scanner, 2309 Speaker, 2310 Touchscreen, 2311 CD / DVD, 2317 Graphics Adapter, 2320 CD / DVD ROM / RW, 2322 Thumb Drive, 2323 removable hard drive / solid state drive, 2340 core, 2341 central processing unit (CPU), 2342 graphics processing unit (GPU), 2343 field programmable gate array (FPGA), 2344 hardware accelerator, 2345 read-only memory (ROM), 2346 random access memory (RAM), 2347 internal mass storage, 2348 system bus, 2349 peripheral bus, 2350 general-purpose data port, 2351 peripheral bus, 2398 communication network, 2399 interface

Claims

1. 1. A method for video encoding, the method being performed by at least one processor, comprising: acquiring volumetric data of at least one three-dimensional (3D) visual content; deriving a mesh from the frame of volumetric data, the mesh comprising a plurality of base mesh vertices; determining a displacement of the at least one vertex that is not a base mesh vertex based on a series of projections from at least one of the plurality of base mesh vertices that is a neighbor of the plurality of base mesh vertices to at least one vertex; predicting the at least one vertex based at least on the determined displacement; encoding the volumetric data based on the predicted at least one vertex; 1. A method for video encoding, comprising:

2. encoding the volumetric data includes encoding a scalar distance from a projected vertex to the at least one vertex.

2. The method for video encoding according to claim 1.

3. the series of projections includes determining that the projected vertex lies on a line from a first base mesh vertex of the plurality of base mesh vertices to a second base mesh vertex of the plurality of base mesh vertices; the scalar distance is perpendicular to the line; 3. The method for video encoding according to claim 2.

4. The series of projections further includes deriving nearby vertices as lying on the line; determining that the projected vertex is on the line includes applying a second scalar distance to the neighboring vertices; A method for video encoding according to claim 3.

5. The series of projections may be determining that a first neighboring vertex is on a first line from a first base mesh vertex of the plurality of base mesh vertices to a second base mesh vertex of the plurality of base mesh vertices; determining the distance of the projected vertex from the first neighboring vertex; 2. The method for video encoding of claim 1, comprising:

6. The series of projections may be determining that a second neighboring vertex is on a second line from the first base mesh vertex of the plurality of base mesh vertices to a third base mesh vertex of the plurality of base mesh vertices; determining the distance of the projected vertex from both the first neighboring vertex and the second neighboring vertex; The method for video encoding of claim 5, further comprising:

7. encoding the volumetric data includes encoding a distance from the projected vertex to the at least one vertex. The method for video encoding according to claim 6.

8. the plurality of base mesh vertices define faces of the mesh; the series of projections further comprises the steps of subdividing the surface into a plurality of subdivisions and determining a subdivision point of the subdivision that is closest to the projected vertex; The method for video encoding according to claim 6.

9. encoding the volumetric data includes encoding a distance from the nearest subdivision point to the at least one vertex. A method for video encoding according to claim 8.

10. the faces of the mesh include quad faces; A method for video encoding according to claim 8.

11. at least one memory configured to store computer program code; at least one processor configured to access said computer program code and to operate as instructed by said computer program code, said computer program code comprising: acquisition code configured to cause the at least one processor to acquire volumetric data of at least one three-dimensional (3D) visual content; derivation code configured to cause the at least one processor to derive a mesh from the frame of volumetric data, the mesh comprising a plurality of base mesh vertices; and decision code configured to cause the at least one processor to determine a displacement of the at least one vertex that is not a base mesh vertex based on a series of projections from at least one of the plurality of base mesh vertices that is a neighbor of the plurality of base mesh vertices to at least one vertex; prediction code configured to cause the at least one processor to predict the at least one vertex based at least on the determined displacement; encoding code configured to cause the at least one processor to encode the volumetric data based on the determination of the predicted at least one vertex; At least one processor, including 1. An apparatus for video encoding, comprising:

12. encoding the volumetric data includes encoding a scalar distance from a projected vertex to the at least one vertex. An apparatus for video encoding according to claim 11.

13. the series of projections includes determining that the projected vertex lies on a line from a first base mesh vertex of the plurality of base mesh vertices to a second base mesh vertex of the plurality of base mesh vertices; the scalar distance is perpendicular to the line; An apparatus for video encoding according to claim 12.

14. The series of projections further includes deriving nearby vertices as lying on the line; determining that the projected vertex is on the line includes applying a second scalar distance to the neighboring vertices; An apparatus for video encoding according to claim 13.

15. The series of projections may be determining that a first neighboring vertex is on a first line from a first base mesh vertex of the plurality of base mesh vertices to a second base mesh vertex of the plurality of base mesh vertices; determining the distance of the projected vertex from the first neighboring vertex; 12. An apparatus for video encoding according to claim 11, comprising:

16. The series of projections may be determining that a second neighboring vertex is on a second line from the first base mesh vertex of the plurality of base mesh vertices to a third base mesh vertex of the plurality of base mesh vertices; determining the distance of the projected vertex from both the first neighboring vertex and the second neighboring vertex; The apparatus for video encoding of claim 15 further comprising:

17. encoding the volumetric data includes encoding a distance from the projected vertex to the at least one vertex.

17. An apparatus for video encoding according to claim 16.

18. the plurality of base mesh vertices define faces of the mesh; the series of projections further comprises the steps of subdividing the surface into a plurality of subdivisions and determining a subdivision point of the subdivision that is closest to the projected vertex; 17. An apparatus for video encoding according to claim 16.

19. encoding the volumetric data includes encoding a distance from the nearest subdivision point to the at least one vertex.

20. An apparatus for video encoding according to claim 18.

20. On the computer, acquiring volumetric data for at least one three-dimensional (3D) visual content; deriving a mesh from the frame of volumetric data, the mesh including a plurality of base mesh vertices; determining a displacement of the at least one vertex that is not a base mesh vertex based on a series of projections from at least one of the plurality of base mesh vertices that is a neighbor of the plurality of base mesh vertices to at least one vertex; encoding the volumetric data based on the determination of the predicted at least one vertex; A non-transitory computer-readable medium that stores a program.

Citation Information

Patent Citations

  • Extension of the MPEG / SC3DMC standard to polygon meshes

    US20160063737A1

  • Attribute mapping to encode and decode 3D models

    US20180189982A1

  • Cost-driven framework for progressive compression of textured meshes

    US20200265611A1

  • Projection-based mesh compression

    US20210295566A1

  • Image / video-based mesh compression

    US20230290008A1