Coding of motion fields in dynamic mesh compression.

By applying one-dimensional transforms and principal component analysis to motion vectors, dynamic meshes are efficiently compressed, addressing the limitations of existing standards and enabling high-quality real-time video transmission.

JP7797675B2Active Publication Date: 2026-01-13TENCENT AMERICA LLC
View PDF 9 Cites 0 Cited by

Patent Information

Application Number
JP2024547907
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2023-05-04
Filing Date
2023-05-24
Publication Date
2026-01-13
Estimated Expiration
2043-05-24

AI Technical Summary

Technical Problem

Existing video coding technologies struggle with efficient compression of dynamic meshes due to their complex nature, which includes time-varying connectivity and attribute maps, and existing standards like IC, MESHGRID, and FAMC do not adequately address these challenges, especially under real-time constraints.

Method used

A method involving one-dimensional transforms, such as discrete cosine or lifting wavelet transforms, is applied to motion vectors of mesh vertices, followed by principal component analysis and eigendecomposition to encode volumetric data based on motion fields, arranging motion vectors into ordered formats for efficient compression.

Benefits of technology

This approach enables effective compression of dynamic meshes by reducing data volume while maintaining quality, supporting real-time applications like video conferencing and immersive experiences.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007797675000055
    Figure 0007797675000055
  • Figure 0007797675000056
    Figure 0007797675000056
  • Figure 0007797675000057
    Figure 0007797675000057
Patent Text Reader

Abstract

A method and apparatus, comprising computer code configured to: cause one or more processors to acquire a mesh sequence including a plurality of meshes corresponding to volumetric data of at least one three-dimensional (3D) visual content; acquire a frame of the mesh sequence corresponding to the volumetric data, the frame including a plurality of vertices of meshes of the mesh sequence; determine a motion field including motion vectors of the plurality of vertices of the meshes; and encode the volumetric data based on the motion field.
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 / 397,795, filed August 12, 2022, and U.S. Patent Application No. 18 / 312,323, filed May 4, 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 that include encoding motion fields in dynamic mesh compression. [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 capture a baby's first steps on one continent and for grandparents to view (and interact with) their child on another continent in a fully immersive experience. To achieve this sense of presence, 3D 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 coded at high quality, while the remaining mesh may be coded using partial surface fitting and displacement coding to take advantage of local characteristics.

[0005] However, complex meshes often contain information about multiple instances to associate texture maps. This information is available at the time of encoding. On the other hand, meshes can be divided into several parts based on their characteristics. For example, the facial region of a human mesh has more polygons.

[0006] Thus, a constant quantization step size applied to all instances, objects, and 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, and the base mesh may be simpler than the original mesh and displacements and therefore may not require as much bit depth precision.

[0007] Dynamic mesh sequences can also 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. The 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 take time-varying attribute maps and connectivity information into account. Digital content creation (DCC) tools typically generate such dynamic meshes. Correspondingly, it is difficult for volumetric acquisition techniques to generate dynamic meshes with constant connectivity, especially under real-time constraints. This type of content is not supported by existing standards. MPEG plans to develop a new mesh compression standard to directly handle dynamic meshes with time-varying connectivity information and, optionally, time-varying attribute maps. Summary of the Invention [Problem to be solved by the invention]

[0008] Therefore, for any of these reasons, a technical solution to such problems that arise in video coding technology is desirable. [Means for solving the problem]

[0009] 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 being configured to cause the processors to implement acquisition code configured to cause at least one processor to acquire volumetric data of at least one three-dimensional (3D) visual content, further acquisition code configured to cause the at least one processor to acquire frames of a mesh sequence from the volumetric data, the frames including a plurality of vertices of meshes of the mesh sequence, determining code configured to cause the at least one processor to determine a motion field including motion vectors of the plurality of vertices of the meshes, and encoding code configured to cause the at least one processor to encode the volumetric data based on the motion field.

[0010] According to an exemplary embodiment, encoding the volume data includes applying a one-dimensional transform to each of the motion vectors of the vertices of the mesh.

[0011] According to an exemplary embodiment, the one-dimensional transform includes one of a discrete cosine transform and a lifting wavelet transform.

[0012] According to an exemplary embodiment, encoding the volume data includes arranging motion vectors of multiple vertices of a mesh into ordered motion vectors and packing the ordered motion vectors into a three-channel image.

[0013] According to an exemplary embodiment, arranging the motion vectors of the vertices of the mesh into an ordered motion vector is based on a predetermined order.

[0014] According to an exemplary embodiment, the channels of the three-channel image contain one each of the spatial dimensions of the motion vector.

[0015] According to an exemplary embodiment, encoding the volume data includes applying principal component analysis to the motion field.

[0016] According to an exemplary embodiment, principal component analysis involves constructing a matrix with a number of rows equal to the number of vertices of the mesh and a number of columns equal to the number of spatial dimensions of the motion field.

[0017] According to an exemplary embodiment, the principal component analysis further includes obtaining a covariance matrix from the matrix and applying eigendecomposition to the covariance matrix.

[0018] According to an exemplary embodiment, encoding the volumetric data includes signaling at least a number of eigenvalues ​​obtained from applying an eigendecomposition to the covariance matrix.

[0019] 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]

[0020] [Figure 1] FIG. 2 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] FIG. 1 is a simplified diagram according to an embodiment. [Figure 4] FIG. 1 is a simplified diagram according to an embodiment. [Figure 5] FIG. 1 is a simplified diagram according to an embodiment. [Figure 6] FIG. 1 is a simplified diagram according to an embodiment. [Figure 7] FIG. 1 is a simplified diagram according to an embodiment. [Figure 8] FIG. 1 is a simplified diagram according to an embodiment. [Figure 9] FIG. 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] FIG. 1 is a simplified diagram according to an embodiment. [Figure 14] FIG. 1 is a simplified diagram according to an embodiment. [Figure 15] FIG. 1 is a simplified flow diagram according to an embodiment. [Figure 16] FIG. 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] FIG. 1 is a simplified diagram according to an embodiment. [Figure 20] FIG. 1 is a simplified flow diagram according to an embodiment. [Figure 21] FIG. 1 is a simplified diagram according to an embodiment. [Figure 22] FIG. 1 is a simplified diagram according to an embodiment. [Figure 23] FIG. 1 is a simplified flow diagram according to an embodiment. [Figure 24] FIG. 1 is a simplified diagram according to an embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0021] 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.

[0022] 1 illustrates 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, 103 interconnected via a network 105. For unidirectional transmission of data, a first terminal 103 may encode video data at a local location for transmission to the other terminal 102 via the network 105. The second terminal 102 may receive the other terminal's coded video data from the network 105, decode the coded data, and display the recovered video data. Unidirectional data transmission may be common in media serving applications, for example.

[0023] 1 illustrates a second pair of terminals 101 and 104 provided to support bidirectional transmission of coded video, such as may occur during a video conference. For the bidirectional transmission of data, each terminal 101 and 104 may encode captured video data 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.

[0024] In FIG. 1 , terminals 101, 102, 103, and 104 may be illustrated as a server, a personal computer, and a smartphone, although the principles of the present disclosure are not so limited. Embodiments of the present disclosure find 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 among 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 discussion, the architecture and topology of network 105 may not be important to the operation of the present disclosure, unless described herein below.

[0025] 2 illustrates the arrangement of a video encoder and a video decoder in a streaming environment as one example of an application of the disclosed subject matter. The subject matter of this disclosure is equally applicable to other video-enabled applications, such as, for example, video conferencing, digital television, and storing compressed video on digital media including CDs, DVDs, memory sticks, etc.

[0026] The streaming system may include a capture subsystem 203, which may include a video source 201, such as a digital camera, that creates an uncompressed video sample stream 213. The sample stream 213 may be enhanced 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. 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 enhanced 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 may access the streaming server 205 to 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, the 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.

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

[0028] Receiver 302 can receive one or more codec video sequences to be decoded by decoder 300, one coded video sequence at a time, in the same or another embodiment, with the decoding of each coded video sequence independent of the other coded video sequences. Coded video sequences may be received from channel 301, which may be a hardware / software link to a storage device that stores the coded video data. Receiver 302 may receive the coded 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 can separate the coded video sequences from 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 necessary or may be small. For use in 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.

[0029] The video decoder 300 may include a parser 304 for reconstructing symbols 313 from the entropy-coded video sequence. Such symbol classifications include information used to manage the operation of the decoder 300 and potential information for controlling displays, such as a display 312 that is not an integral part of the decoder but can be coupled to it. Control information for the display(s) may be in the form of Supplementary Enhancement Information (SEI) messages or Video Usability Information (VUI) parameter set fragments (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 sensitivity, 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 from the coded video sequence information such as transform coefficients, quantizer parameter values, motion vectors, etc.

[0030] The parser 304 may perform an entropy decoding / parsing operation 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.

[0031] 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 governed 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.

[0032] In addition to the functional blocks already mentioned, 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, a conceptual subdivision into the following functional units is appropriate:

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

[0034] In some cases, the output samples of the scaler / inverse transform unit 305 may 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 uses surrounding already reconstructed information fetched from the current (partially reconstructed) picture 309 to generate blocks of the same size and shape as the block being reconstructed. 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.

[0035] 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.

[0036] 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 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 of a coded video sequence (in decoding order), or to previously reconstructed and loop-filtered sample values.

[0037] 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.

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

[0039] The video decoder 300 may perform decoding operations according to a predetermined video compression technology, which may be documented in a standard such as ITU-T Rec. H.265. The coded video sequence may comply with the syntax specified by the video compression technology or standard being used, in the sense of adhering to the syntax of the video compression technology or standard as specified in the video compression technology document or standard, specifically 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 technology or standard. In some cases, the level constrains 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 imposed by the level may, in some examples, be further constrained by the specification of a Hypothetical Reference Decoder (HRD) and metadata for HRD buffer management signaled in the coded video sequence.

[0040] 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.

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

[0042] 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 .

[0043] The video source 401 may provide the 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, etc.), any color space (e.g., BT.601 YCrCB, RGB, etc.), and any suitable sampling structure (e.g., YCrCB 4:2:0, YCrCB 4:4:4). In a media delivery system, the video source 401 may be a storage device that stores previously prepared video. In a video conferencing system, the video source 401 may be a camera that captures local image information as a video sequence. The video data may be provided as multiple individual pictures that, when viewed sequentially, create motion. 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 discussion focuses on samples.

[0044] 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. Achieving 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. For clarity, coupling is not depicted. Parameters set by the controller may include rate control-related parameters (e.g., picture skip, quantizer, lambda value for rate-distortion optimization techniques), 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.

[0045] Some video encoders operate in what those skilled in the art will 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 to create sample data that a (remote) decoder will also create (since any compression between the symbols and the coded video bitstream is lossless in the video compression techniques considered in the disclosed subject matter). The reconstructed sample stream is input to a reference picture memory 405. Because decoding of the symbol stream yields bit-exact results regardless of the decoder's location (local or remote), the reference picture buffer contents 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 "sees" when using prediction during decoding. This basic principle of reference picture synchronization (and the resulting drift when synchronization cannot be maintained, for example due to channel errors) is well known to those skilled in the art.

[0046] 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 fully implemented in the local decoder 406.

[0047] 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 generically. Only in certain areas is a more detailed description necessary, as will be presented below.

[0048] 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 method, 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.

[0049] The local video decoder 406 may decode 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 decomposition process that may be performed on the reference frames by the video decoder 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).

[0050] 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 a pixel block-by-pixel block basis to find suitable predictive references. 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.

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

[0052] The output of all the aforementioned functional units may undergo entropy coding in 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.

[0053] The transmitter 409 may buffer the coded video sequence created by the entropy coder 408 and prepare it 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).

[0054] The controller 402 may manage the operation of the encoder 400. During coding, the controller 402 may assign several coded picture types 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:

[0055] 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.

[0056] 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.

[0057] A bidirectionally predicted picture (B-picture) may 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, multiple predicted pictures may use more than two reference pictures and associated metadata for the reconstruction of a single block.

[0058] 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 previously 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.

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

[0060] 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 and slices, Supplemental Enhancement Information (SEI) messages, Visual Usability Information (VUI) parameter set fragments, etc.

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

[0062] 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 projected images with respect to one or more virtual reality (VR) angles or other angles / viewpoints, and packing by region. Additionally, metadata indicating any of such processed and other information can be created to assist in the distribution and rendering process.

[0063] For data D, in the image coding 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 may be encoded as

[0064] Data E a , E v , and E i , the full coded bitstream F iand / or F may be stored on a (content delivery network (CDN) / cloud) server, typically in a distribution block 507 or otherwise transmitted in its entirety to an OMAF player 520, where it may be fully decoded by a decoder, such that at least a specific region of the decoded picture corresponding to the current viewport is rendered to the user in a display block 516 from a head / eye tracking block 508, with respect to various metadata, file playback, and orientation / viewport metadata, such as the angle the user may be looking at through the VR imaging device relative to that device's viewport specifications. A distinct feature of VR360 is that only a viewport may be displayed at any particular time, and such a feature can be exploited to improve the performance of omnidirectional video systems by selective delivery depending on 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.

[0065] As with 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 deencapsulation of the metadata to generate audio data E' i , the video data E' in the video decoding block 513 v , and image data E' in image decoding block 514. i is decoded to generate 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 the speaker / headphone block 512 outputs the audio data A's 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.

[0066] 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 that elements such as encoding and decoding, among others, as illustrated, may be implemented by processing circuitry (e.g., one or more processors, or one or more integrated circuits), and that the one or more processors may execute a program stored on a non-transitory computer-readable medium according to example embodiments.

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

[0068] In volume 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 volume data, and the volume data, which may have any format, may be converted into a (quantized) point cloud data format through image processing in conversion to point cloud block 602. For example, data from the volume data may, according to an exemplary embodiment, be regional data with regional data converted into one of the points of a point cloud by pulling one or more of the values ​​described below from the volume data and any associated data into the desired point cloud format. According to an exemplary embodiment, the volume data may be a 3D dataset of 2D images, such as slices onto which 2D projections of the 3D dataset may be projected. According to an exemplary 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 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 of a plurality of points in the cloud data and may be used with progressive decoding, polygonal meshes, direct rendering, and octree 3D representations of 2D quadtree data.

[0069] 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.

[0070] Meanwhile, in the scene generator block 609, the scene generator may generate some metadata to be used to render and display six degrees of freedom (DoF) media, for example, according to the director's intent or user preferences. Such 6 DoF media may include a 3D view of the scene, such as a 360 VR view, from rotational changes on 3D axes X, Y, and Z, in addition to additional dimensions that allow for 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 composed of coded point cloud data and other media data, including VR 360, 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.

[0071] After video encoding block 604 and image encoding block 605, similar to the video and image encoding described above (and it will be understood that audio encoding may also be provided as described above), a file / segment encapsulation block 606 processes the coded point cloud data to be arranged into a media file for file playback or into 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; among other things, such descriptions may represent exemplary embodiments and may be used in connection with DASH, as described below. The file container may also include scene description metadata, such as from a scene generator block 1109, in the files or segments.

[0072] According to an exemplary embodiment, a file includes at least one viewing position and at least one or more angular views at that viewing position, respectively, at one or more times of 6DoF media, encapsulated according to scene description metadata such that such files may be transmitted on demand 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 6DoF media showing a single viewpoint and angle at that location at one or more times; however, these are merely exemplary embodiments and may be modified according to various conditions, such as network, user, creator capabilities and input.

[0073] According to an example embodiment, the point cloud data is partitioned into multiple 2D / 3D regions that are independently coded, such as in one or more of video coding block 604 and video coding block 605. Each independently coded partition of point cloud data may then be encapsulated as a track within a file and / or segment in 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.

[0074] According to an exemplary 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, may include the following: layout information of 2D / 3D partitions with indices; (dynamic) mapping information relating a 3D volume partition to one or more 2D partitions (e.g., tiles / tile groups / slices / subpictures); 3D position of each 3D partition on the 6DoF coordinate system; The metadata may include one or more of: a representative viewing position / angle list corresponding to the 3D volume partition; an index of the 2D / 3D partition corresponding to the selected viewing position / angle list; quality (rank) information for each 2D / 3D partition; and rendering information for each 2D / 3D partition according to each viewing position / angle. Invoking such metadata when requested, such as directed by a user of the V-PCC player or by a content creator for a user of the V-PCC player, can enable more efficient processing for specific portions 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.

[0075] From the File / Segment Encapsulation block 606, the file or one or more segments of the file may be delivered using a delivery mechanism (e.g., Dynamic Adaptive Streaming over HTTP (DASH)) directly to either the V-PCC Player 625 or a cloud server such as the Cloud Server block 607, 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.

[0076] If the current field of view position and angle is defined in a 6DoF coordinate system on the client system according to data such as the Position / Field of View Angle Tracking block 608, then in the Cloud Server block 607, the field of view position / angle metadata may be delivered from the 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 the client system, for example, with the V-PCC Player 625, and the extracted data can be delivered to the client as files or segments.

[0077] For 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, which 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 scene description data according to the scene generator block 609.

[0078] 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 regions, the ability for compressed domain assembly of coded 2D / 3D partitions into a single conformally coded video bitstream, and the ability for coded 2D / 3D bitstream extraction of 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 mechanism for containing metadata that carries one or more of the above-mentioned metadata.

[0079] In that regard, and in accordance with exemplary embodiments described further below, the term "mesh" refers to a configuration of one or more polygons that represent the surface of a volumetric object. Each polygon is defined by its vertices in 3D space and information about how the vertices are connected, referred to as connectivity information. Optionally, vertex attributes, such as color, normals, etc., can be associated with mesh vertices. Attributes may also be associated with the surface of a mesh by utilizing mapping information that parameterizes the mesh with a 2D attribute map. Such mapping may be defined by a set of parametric coordinates, referred to as UV coordinates or texture coordinates, that are associated with 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, in accordance with exemplary embodiments.

[0080] Nevertheless, dynamic mesh sequences can require large amounts of data because they can consist of a significant amount of information that changes over time. For example, in contrast to a "static mesh" or "static mesh sequence," whose mesh information remains constant from frame to frame, a "dynamic mesh" or "dynamic mesh sequence" exhibits movement in which one of the vertices represented by the mesh changes from frame to frame. 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 take into account time-varying attribute maps and connectivity information. Digital Content Creation (DCC) tools typically generate such dynamic meshes. Correspondingly, it is difficult for quantitative 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, which targets lossy and lossless compression for a variety of applications such as real-time communications, storage, free-viewpoint video, AR and VR, etc. Features such as random access and scalable / progressive coding are also contemplated.

[0081] Figure 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 can be signaled in the metadata by a flag, such as 0 indicating encoder-only and 1 indicating encoder-only. A mesh with a 2D UV atlas 702 can then be obtained, with each vertex of the mesh having 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 other metadata may be signaled to the decoder side for 3D mesh reconstruction purposes. 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.

[0082] In some implementations, a 3D mesh can be divided into several segments (or patches / charts), and one or more 3D mesh segments may be considered to be 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 volume 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 ) are 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 similar information for each of the other vertices may also be indicated. Furthermore, such a 2D texture mesh, according to an exemplary embodiment, may further indicate information such as color information for each triangle patch, e.g., v2, v5, v3, etc., as one "patch."

[0083] For example, see example 900 in FIG. 9, which, in addition to the features of example 800 in FIG. 8, also allows a 3D mesh segment 801 to be mapped to multiple separate 2D charts 901 and 902. In this case, a 3D vertex can 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 each have two 2D correspondences v1,v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v41, v41, v42, v43, v44, v45, v46, v47, v48, v49 ... 1’ and v4,v 4’Thus, a typical 2D UV atlas of a 3D mesh may consist of multiple charts, as shown in Figure 14, where each chart may contain multiple (typically three or more) vertices associated with their 3D geometry, attributes, and connectivity information.

[0084] 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 regularly shaped repeating triangles and various irregularly shaped triangles, each generally closest to the boundary vertex and with unique dimensions that may or may not be shared with other triangles. Connectivity information can also be reconstructed by explicit signaling. If a polygon cannot be reconstructed by implicit rules, the encoder can signal connectivity information in the bitstream according to an exemplary embodiment.

[0085] Boundary vertices B0, B1, B2, B3, B4, B5, B6, 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 an exemplary embodiment: geometry information, e.g., 3D XYZ coordinates, albeit currently in 2D UV parametric form, and 2D UV coordinates.

[0086] As shown in Figure 9, if a 3D bounding vertex corresponds to multiple vertices in the 2D UV atlas, the mapping from 3D XYZ to 2D UV can be one-to-many. Therefore, a UV-XYZ (or 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.

[0087] 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 due to sub-sampling 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.

[0088] 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 coded first, 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.

[0089] For example, consider vertex grouping for prediction mode example flowchart 1001 of FIG. 10. In S201, vertices in a mesh can 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 division in S204. In another example, the division is performed under each patch / chart 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; prediction modes may be categorized into intra-prediction modes and inter-prediction modes; and within each category, there may be different particular modes for the decoder to select from. 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 of prediction modes (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 scanning 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 may 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.

[0090] 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 can be performed in S210, and the result of the prediction and signaling can occur in S211.

[0091] 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, along with its signaling, can be applied to the residual for the group of vertices before entropy coding. To handle the coding of the group of displacement vectors, the following methods can be implemented. For example, one method appropriately signals the case where a group of displacement vectors, some displacement vectors, or their components have only zero values. In another embodiment, a flag can be 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 can be signaled for each group of displacement vectors indicating whether this group has non-zero vectors; 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 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 may be signaled for each group of displacement vectors 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 whether this component of the group needs to undergo a transform, and if not, transform coding for this component of all displacement vectors of this group can be skipped. The above-mentioned embodiments in this paragraph regarding processing of vertex prediction residuals may also be performed in combination in parallel, each on a different patch.

[0092] 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 2D video or a 2D image. A coded mesh frame or coded mesh subpartition can be assigned a prediction type 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 prediction within the mesh frame 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, a predictor may be generated using two predictors from two previously coded mesh frames. A weighted average of two predictors may be an example. If 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 may be further identified via signaling. Alternatively, if the mesh frame is further divided and coded within the frame, prediction assignment for each subpartition occurs in S224. Each of the above information may be determined and signaled by a flag or the like. Similar to S210 and S211 of FIG. 10, the prediction characteristics may occur in S226, and the results of the prediction and signaling may occur in S227.

[0093] Dynamic mesh sequences may therefore require large amounts of data as they may consist of a significant amount of information that changes over time, and therefore 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).

[0094] Furthermore, 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 that the index of the second layer 1302 is T, predictors for vertices in the third layer 1303T+1 are 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 decoded vertices at its boundary and 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; therefore, 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. Notably, referring to example 1400 in Figure 14 illustrating such progressive coding, unlike Figure 13, example 1400 shows that when progressing from first layer 1401 to second layer 1403 to third layer 1403, each of the additionally formed polygons can be entirely within the polygon formed by the boundary of first layer 1401.

[0095] For such examples 1300 and / or 1400, see the exemplary flowchart 1200 of FIG. 12, where, according to an exemplary embodiment, the interpolated vertices on the current layer are predicted values, and therefore, such values ​​need to be reconstructed before being used to generate predictors for vertices on the next layer. This is done by coding a base mesh in S231, performing vertex prediction in S232, and then adding the decoded displacement vectors of the current layer to the predictors of vertices of layer 1302, etc., in S233. The reconstructed vertices of this layer 2303, along with all decoded vertices of the previous layer, can then be used to generate and signal predictor vertices for the next layer 1303 in S235, such as by checking the additional vertex values ​​of such layer in S234. This process can also be summarized as follows: P[t](V i ) represents the predictor of vertex V i on layer t, R[t](V i ) represents the reconstructed vertex V i on layer t, D[t](V i ) represents the displacement vector of vertex V i on layer t, and f(*) represents the predictor generator, which can be, in particular, the average of two existing vertices. Then, for each layer t, according to an exemplary embodiment, there are: P[t](Vi)=f(R[s|s <t](Vj)、R[m|m<t](Vk)) During the ceremony, Vj and Vk are the reconstructed vertices of the previous layer R[t](Vi)=P[t](Vi)+D[t](Vi)-Equation (1)

[0096] Next, for all vertices in a mesh frame, we split them into layer 0 (base mesh), layer 1, layer 2, ... etc. Then, the reconstruction of vertices on one layer depends on the reconstruction of vertices on the previous layer. In the above, P, R, and D each represent 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.

[0097] According to an exemplary embodiment, vertex prediction using reconstructed vertices can be applied only to certain layers, such as layer 0 and layer 1. For other layers, vertex prediction can still use adjacent 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 can be signaled whether to select reconstruction-based vertex prediction or predictor-based vertex prediction, or it can be signaled that the layer (and subsequent layers) do not use reconstruction-based vertex prediction.

[0098] 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.

[0099] Therefore, dynamic mesh sequences may require a large amount of data, as 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.

[0100] Furthermore, as with the other examples described above, even in those embodiments, dynamic mesh sequences may require large amounts of data because they may consist of a significant amount of time-varying information, and therefore, efficient compression techniques are needed 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.

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

[0102] Similar to the above, any triangulation method can be applied to generate 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.

[0103] 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.

[0104] 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.

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

[0106] Note that 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, slice header, etc., or fixed (assumed) by the encoder and decoder according to an exemplary embodiment. The inferred triangle orientation can also be signaled differently for each chart.

[0107] 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 polygonal mesh (e.g., a quad mesh).

[0108] 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.

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

[0110] According to an exemplary embodiment, the edges between the 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 reported 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.

[0111] 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.

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

[0113] The above-described embodiments can 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, the 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 each be separated and coded. Also, while each of the instances 1601, 1602, 1603, and 1604 is shown within a respective one of the bounding boxes described further below, it should be noted that the instance 1601 can be considered to be shown bounded by a "mesh-based bounding box," and each of the instances 1602, 1603, and 1604 can be considered to be bounded by a respective "instance-based bounding box."

[0114] 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 can 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 can be grouped to form a sub-mesh.

[0115] 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.

[0116] 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

[0117] However, in complex scenes, the largest objects are relatively often simple backgrounds that 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.

[0118] Therefore, as shown in example 1500 of FIG. 15, the input mesh d bbox The maximum bounding box length of the is always the maximum bounding box length of each instance.

number

number

number

[0119] For a given number of bits QP, the quantization step size of all instances of each of the instances 1602 (representing the mesh of the cup), 1603 (representing the mesh of the spoon), and 1604 (representing the mesh of the plate) is always

number

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

[0121] 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 volume data of the mesh, which may itself individually signal each instance within the mesh, and each submesh is derived from that mesh on an instance-by-instance basis 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 corresponding face of submesh k is n. k and

number

number

number

number

[0122] 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, the bit depths of the base mesh B and D are

number

number

number

[0123] According to various embodiments, an adaptive bit depth parameter based on minimizing distortion can be used. For example, given an input bit depth QP, the mean square error (MSE) of the quantization method is ε_QP, which can be as follows: The MSE of each sub-mesh is derived as ε_QP̂k=ω_k*ε_QP,∀k∈[1,...,K], where ω_k>0 is a weighting factor. In one example, ω_k=1∀k. A linear search is performed for each sub-mesh, as follows:

number

[0124] Additionally, the best bit depth for displacement is also

number

[0125] According to an exemplary embodiment, there may be signaling of the quantization of each object, such as by signaling the signal bit depth at S1707 via the bitstream. A set of increasing base quantization bit depths is then assigned to the corresponding displacement quantization bit depths.

number

number

[0126] [Table 1]

[0127] 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 size 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. If the quantization set is sorted in ascending order, this number is always non-negative. -mips_dist_quant[k] is the kth quantization data for the bit depth of the base mesh.

[0128] According to various embodiments, to reduce signaling overhead, multiple instances can 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, based on the maximum distance between bounding boxes.

number

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

[0130] 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 can advantageously normalize instances to maximize their similarity and can be used in any of the embodiments described above.

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

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

number

[0133] According to an exemplary embodiment, in S1803, in response to the instruction of the flag, an asset group having a size mk>1 greater than 1 is identified using the IMP.

number

[0134] [Table 2]

[0135] In the case of lossless compression,

number

number

[0136] 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 needs to 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 coded and decoded in parallel without data dependency issues.

[0137] If the flag in S1804 instead indicates dependent coding, an additional flag may be considered in S1806 to indicate the mode of dependently coding the sub-meshes as well. 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 to use as prediction. The prediction index may be signaled at different levels.

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

[0139] At S1808, a prediction index may be signaled for each vertex of the current submesh, allowing each vertex to be predicted from a different submesh. Note that the prediction index may also be coded by predictive coding, in which case 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.

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

[0141] 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, geometric shape, color, normal, UV coordinates, connectivity, etc. The residual information can then be coded using arithmetic coding according to an exemplary embodiment.

[0142] 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.

[0143] 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.

[0144] 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. When 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.

[0145] Thus, according to embodiments herein, it is realized that complex meshes often contain information about multiple instances to associate texture maps, and that this information may be available at encoding time, so that each instance may be considered a 3D asset, since the asset may be frequently used in 3D design according to exemplary embodiments herein 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 described above, addresses issues related to matching and searching for 3D objects, since meshes may be normalized to position, size, and orientation based on PCA (principal component analysis) or bilateral symmetry planes, thereby allowing for more efficient search.

[0146] 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 (i.e., horizontal or vertical) is used, with 0 indicating horizontal partitioning and 1 indicating vertical partitioning. In the case of quadtree partitioning, there is no need to specify the partition type because quadtree partitioning always partitions a block both horizontally and vertically to generate four sub-blocks of equal size.

[0147] A coding tree unit (CTU) is divided into coding units (CUs) using a quadtree structure called a coding tree to adapt to various local characteristics. The decision of whether to use inter-picture (temporal) 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 divided into transform units (TUs) according to another quadtree structure, such as the CU's coding tree.

[0148] 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 coded based on distance-based predictive displacement coding.

[0149] According to an exemplary embodiment, the aspects described herein may be used separately or combined in any order, and may be used for any polygonal mesh, and the geometry may be coded 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, the original vertices may be coded by their predicted points (projected vertices) and the displacements between the predicted points (projected vertices) and the original points (remaining vertices) as shown in example 2100. The base mesh is constrained so that the remaining vertices (not included in the base mesh) are always on the normal side of the intermediate vertex.

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

number

number

number

number

number

number

[0151] 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 adjacent points y1 and y2 is calculated. n is derived from the neighboring points. 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.

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

number

number

[0153] 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

[0154] 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, example 2103 uses the base mesh surface points

number

number

number

number

number

number

[0155] 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

[0156] 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 splitting, block merging framework in video coding.

[0157] For example, when pixelating a face in S2012, given a quad face, first the original vertices are subdivided into n 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 divided into 4 2 Based on the assumption of a smooth varying surface of the mesh, the displacement groups are likely to be highly correlated. Therefore, intra-like prediction and local transformations can be used to separate the displacements.

number

[0158] According to an exemplary embodiment, the displacement

number

[0159] For example, looking at the group displacement representation 2252, the already coded base mesh vertices can be used (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 x B2, using four weight matrices, the prediction at position i, j of the partition grid may be derived as follows:

number

[0160] Furthermore, example 2202 illustrates a neighbor-based intra-displacement prediction, which can predict the current displacement group using base mesh vertices and already coded 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 in equation (11) according to an exemplary embodiment.

[0161] Thus, the embodiments 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.

[0162] According to an exemplary embodiment, in S2301, m(i) may be the i-th frame in the mesh sequence, v(i,j) may be the j-th vertex position of m(i), and m(i0),...,m(i n ) may be the tracking mesh determined by the signaling in S2302, and m(i0) may be the reference frame. k ) the motion vector f(i k ,j) is calculated in S2303 as follows: f(i k ,j)=v(i k ,j)-v(i0,j)-Equation (12)

[0163] Alternatively, m(i k ) the motion vector f(i k ,j) can be calculated as follows: If k>0-Eq., f(i k ,j)=v(i k ,j)-v(i k-1 ,j)-Equation (13)

[0164] According to an exemplary embodiment, m(i k ) consists of all the motion vectors in the frame, and f(i k ), and in the embodiment of this specification, f(i k ). Note that f(i0) does not need to be coded, since it contains all zeros by definition.

[0165] In response to signaling such as a flag or operator instruction, a mode may be selected in S2304.

[0166] In a mesh sequence, the exemplary embodiment herein refers to tracking multiple mesh frames if all of those meshes are determined to share the same one or more of some vertices, connectivity, texture coordinates, and texture connectivity in S2302, and only the positions of the vertices differ between those meshes. Because there is a one-to-one correspondence between the vertices of the two tracked mesh frames, which may be referred to herein as a reference frame and a current frame, the vertex positions of the current frame can be predicted by the reference frame, and the prediction residual forms a motion field.

[0167] Furthermore, it should be understood that a "mesh" as described herein in accordance with an exemplary embodiment may be composed of several polygons that describe the surface of a volumetric object. Each polygon is defined by its vertices in 3D space and information about how the vertices are connected, referred to as connectivity information. Optionally, vertex attributes, such as color, normal, and displacement, can be associated with the mesh vertices. Attributes can also be associated with the surface of a mesh by utilizing mapping information that parameterizes the mesh with a 2D attribute map. Such mappings are typically referred to as UV coordinates or texture coordinates and may be defined by a set of parametric coordinates associated with the mesh vertices. The 2D attribute map is used to store high-resolution attribute information, such as texture, normal, and displacement. Such information is used for various purposes herein, such as texture mapping, shading, and mesh reconstruction.

[0168] In S2305, a 1D transform such as a discrete cosine transform (DCT) or a lifting wavelet transform may be applied to the trajectory of each vertex. For example, see the displacement vectors shown in Figures 12, 13, 21, and 22, any of which may be related to the trajectory of the vertex described herein in any of S2305, S2306, and S2307. Specifically, in S2305, for the jth vertex, f(i k A 1D transform can be applied to each spatial dimension (k = 1,...,n), where k = 1,...,n. The resulting transform coefficients can then be coded using entropy / arithmetic coding, video coding, etc. At the decoder side, an inverse transform can be performed to reconstruct the motion field.

[0169] In S2306, the motion field can be directly encoded by video coding. For each frame, such as a patch or group of patches as described above, all the motion vectors f(i k ,j) can be grouped according to a specific order, such as the order of vertex indices listed in the encoding / decoding order or the order of a mesh traversal algorithm such as the edge breaker algorithm, and the ordered motion vectors can then be packed into a three-channel image, where each channel corresponds to one spatial dimension of the motion vector. Packing can be done in any order, such as raster order or Morton order. After packing, the images from all frames can be encoded by a video codec, and decoding can be performed accordingly. After decoding the video frame, an unpacking operation can be applied to turn the 2D array of motion vectors back into an array of mesh vertices with a known order, which is used on the encoder side according to an exemplary embodiment.

[0170] In S2307, coding of the motion field may be performed by using coordinate-changing principal component analysis (PCA), where each motion field may include displacement vectors and motion vector information for multiple or all vertices of a patch or group of patches as described herein. First, there may be construction of a data matrix M for the motion field. The j-th row of M is f(i k ,j), k=1,…,n, the length of each row, i.e. the number of columns, is 3n, and the number of rows, r, is equal to the number of vertices in each mesh, so the size of M is r×3n. The flattening of the three spatial dimensions is x1y1z1…x n y n z n or x1...x n y1...y n z1…z n Note that after constructing the data matrix M, there may be a centering of its columns by subtracting its mean, and then the covariance matrix C = M T M can be calculated, and then the principal components can be obtained by eigendecomposition of C, which has low computational complexity due to the size of the covariance matrix C being 3n × 3n. After eigendecomposition of C, there may be signaling of all eigenvectors, or only the first several, or at least two, of the eigenvectors with a configurable threshold of eigenvalues. Furthermore, the projection of each row of M onto the signaled eigenvectors may be signaled, and the coefficients associated with those eigenvectors may be signaled. According to an exemplary embodiment, the mean of each column of M should also be signaled. According to an exemplary embodiment, all signaling can be performed by entropy coding, such as arithmetic coding. At the decoder side, the centered trajectory of each vertex can be restored by a linear combination of the decoded eigenvectors and the corresponding decoded coefficients, and then the original trajectory of each vertex can be obtained by summing the centered trajectory and the decoded mean position.

[0171] According to an exemplary embodiment, if it is determined that other data encoded via video coding exists, the exemplary embodiment concatenates the data with the motion vectors and packs them into a single video frame for coding. For example, in the case of a mesh frame having both motion vectors and displacement vectors, the motion vectors and displacement vectors can be packed into the same video frame for further coding. In particular, displacement information can be placed behind all motion vectors. This includes the possibility that the motion vectors and displacement vectors can be included in different streams or that they can be included in the same stream, which can also be coded by a single video codec.

[0172] Thus, dynamic mesh sequences may require a large amount of data because they may consist of a large amount of information that changes over time, but if the mesh sequence consists of tracked meshes that contain a large amount of redundant information, there is significant scope for significantly compressing the meshes using the embodiments described herein for compressing the motion fields of dynamically refined meshes. Thus, in exemplary embodiments herein, several methods are described for improving approaches to compressing the motion fields of dynamic refined meshes, which methods are described herein and can be applied individually or in any form of combination.

[0173] The techniques described above may 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 24 illustrates a computer system 2400 suitable for implementing certain embodiments of the disclosed subject matter.

[0174] Computer software can be coded using any suitable machine code or computer language that can be subjected to 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.

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

[0176] 24 for computer system 2400 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 any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system 2400.

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

[0178] The input human interface devices may include one or more of a keyboard 2401, a mouse 2402, a trackpad 2403, a touchscreen 2410, a joystick 2405, a microphone 2406, a scanner 2408, and a camera 2407 (only one of each is shown).

[0179] The computer system 2400 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., touchscreen 2410 or haptic feedback via joystick 2405, although there may also be haptic feedback devices that do not function as input devices), audio output devices (such as speakers 2409, headphones (not shown)), visual output devices (such as screens 2410, including CRT screens, LCD screens, plasma screens, and OLED screens, each with or without touchscreen input capabilities, each with or without haptic feedback capabilities, some of which may be capable of outputting two-dimensional visual output or output in more than three dimensions via means such as stereographic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).

[0180] The computer system 2400 may also include human-accessible storage devices and their associated media, such as CD / DVD 2411 or CD / DVD ROM / RW 2420 with similar media, thumb drives 2422, removable hard drives or solid state drives 2423, legacy magnetic media such as tape and floppy disks (not shown), optical media including dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown), and the like.

[0181] 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.

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

[0183] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be attached to the core 2440 of the computer system 2400 .

[0184] The core 2440 may include one or more central processing units (CPUs) 2441, graphics processing units (GPUs) 2442, graphics adapters 2417, dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) 2443, hardware accelerators for specific tasks 2444, etc. These devices may be connected through a system bus 2448, along with read-only memory (ROM) 2445, random access memory 2446, and internal mass storage 2447, such as an internal non-user-accessible hard drive or SSD. In some computer systems, the system bus 2448 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 2448 or via a peripheral bus 2449. Architectures for peripheral buses include PCI, USB, etc.

[0185] The CPU 2441, GPU 2442, FPGA 2443, and accelerator 2444 may execute certain instructions that, in combination, may constitute the aforementioned computer code. This computer code may be stored in ROM 2445 or RAM 2446. Transient data may also be stored in RAM 2446, while persistent data may be stored, for example, in internal mass storage 2447. Cache memory, which may be closely associated with one or more of the CPU 2441, GPU 2442, mass storage device 2447, ROM 2445, RAM 2446, etc., may be used to enable fast storage and retrieval to any of the memory devices.

[0186] 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.

[0187] By way of example and not limitation, computer system 2400 having the architecture, and specifically core 2440, can 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 can be user-accessible mass storage, as described above, as well as media associated with specific storage of core 2440 that is non-transitory in nature, such as core internal mass storage 2447 or ROM 2445. Software implementing various embodiments of the present disclosure can be stored on such devices and executed by core 2440. Computer-readable media can include one or more memory devices or chips, depending on particular needs. The software can cause core 2440, and specifically the processors 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 2446 and modifying such data structures according to software-defined processes. Additionally, or alternatively, a computer system may provide functionality as a result of hardwired or otherwise embodied logic in circuitry (e.g., accelerator 2444) that can operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. References to software may encompass logic, where appropriate, and vice versa. References to computer-readable media may encompass circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both, where appropriate. The present disclosure encompasses any suitable combination of hardware and software.

[0188] While this disclosure has described 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]

[0189] 100 communication system, 101 terminal, 102 terminal, 103 terminal, 104 terminal, 105 network, 201 video source, 202 encoder, 203 capture subsystem, 204 encoded bitstream, 205 streaming server, 206 copy, 208 copy, 209 display, 210 video sample stream, 211 video decoder, 212 client, 213 sample stream, 300 decoder, 301 channel, 302 receiver, 303 buffer memory, 304 parser, 305 scaler / inverse transform unit, 306 motion compensation prediction unit, 307 intra prediction unit, 308 picture buffer, 309 current reference picture, 310 aggregator, 311 loop filter, 312 display, 313 symbol, 400 encoder, 401 video source, 402 controller, 403 Source coder, 404 Predictor, 405 Picture memory, 406 Local decoder, 407 Coding engine, 408 Entropy coder, 409 Transmitter, 410 Coded video sequence, 411 Channel, 500 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, 520 OMAF player, 600 Block-style content flow process diagram, 601 Volume data acquisition block, 602 Point cloud block, 603 Projection block, 604 Video encoding block, 605 Image encoding block, 606 File / Segment Encapsulation Block, 607 Cloud Server Block, 608 Position / Viewing Angle 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, 625 V-PCC Player, 7001. An exemplary framework for dynamic mesh compression, 701 input mesh, 702 2D UV atlas, 703 decoder side, 704 reconstructed mesh, 800 example volume data, 801 one or more mesh segments, 802 UV parameterization process, 803 2D chart, 804 2D UV atlas, 900 example of mapping mesh segments to multiple 2D charts, 901 2D chart, 902 2D chart, 903 example illustrating triangulation, 1000 flowchart, 1100 flowchart, 1150 flowchart, 1200 flowchart, 1300 example layer-based prediction structure, 1400 example layer-based prediction structure, 1301 first layer, 1302 second layer, 1303 third layer, 1500 example of quantizing different objects or parts separately, 1600 example instance, 1601 example mesh, 1602 Instance (cup mesh), 1603 Instance (spoon mesh), 1604 Instance (plate mesh), 1700 Flowchart, 1800 Flowchart, 1900 Example of block subdivision, 1901 Quadtree / binary tree, 1902 Corresponding tree representation, 2000 Flowchart, 2100 Example of displacement, 2101 Example of distance-based displacement coding, 2102 Examples of two distance-based displacement coding for 3D meshes, 2103 Example of triangle subdivision, 2200 Example of displacement, 2201 Example of ternary tree subdivision, 2202 Example of neighbor-based intra-displacement prediction, 2251 Displacement prediction, 2252 Group displacement representation, 2253 Face, 2254 Face, 2300 Flowchart, 2400 Computer system, 2401 Keyboard, 2402 Mouse, 2403 Trackpad, 2405 Joystick, 2406 microphone, 2407 camera, 2408 scanner, 2409 speaker, 2410 touch screen, 2411 CD / DVD, 2417 graphics adapter, 2420 CD / DVD ROM / RW, 2422 thumb drive, 2423 removable hard drive, 2440 core, 2441 central processing unit (CPU), 2442 graphics processing unit (GPU), 2443 field programmable gate area (FPGA), 2444Hardware accelerator, 2445 read-only memory (ROM), 2446 random access memory, 2447 internal mass storage, 2448 system bus, 2449 peripheral bus, 2450 peripheral bus, 2451 peripheral bus, 2498 communication network, 2499 interface

Claims

1. 1. A method for video encoding, the method being executed by at least one processor, comprising: obtaining a mesh sequence comprising a plurality of meshes corresponding to volumetric data of at least one three-dimensional (3D) visual content; acquiring a frame of the mesh sequence corresponding to the volume data, the frame including a plurality of vertices of a mesh of the mesh sequence; determining a motion field comprising motion vectors of said vertices of said mesh; Encoding the volume data based on the motion field, comprising applying principal component analysis to the motion field, the principal component analysis comprising: constructing a matrix having a number of rows equal to the number of vertices of the mesh and a number of columns equal to the number of spatial dimensions of the motion field; obtaining a covariance matrix from the matrix; and applying an eigendecomposition to the covariance matrix. a step of:

2. 2. The method for video encoding of claim 1, wherein coding the volumetric data comprises applying a one-dimensional transform to each of the motion vectors of the plurality of vertices of the mesh.

3. The method for video encoding of claim 2 , wherein the one-dimensional transform comprises one of a discrete cosine transform and a lifting wavelet transform.

4. The step of coding the volume data includes: arranging the motion vectors of the vertices of the mesh into an ordered motion vector; and packing the ordered motion vectors into a three-channel image.

5. The method for video encoding of claim 4 , wherein arranging the motion vectors of the vertices of the mesh into the ordered motion vectors is based on a predetermined order.

6. 5. The method for video encoding of claim 4, wherein the channels of the three-channel image comprise respective ones of the spatial dimensions of the motion vector.

7. 2. The method for video encoding of claim 1, wherein coding the volumetric data comprises signaling at least a number of eigenvalues ​​resulting from applying an eigendecomposition to the covariance matrix.

8. An apparatus for video coding, configured to perform the method according to any one of claims 1 to 7.

9. A computer program product causing a computer to carry out the method according to any one of claims 1 to 7.

Citation Information

Patent Citations

  • 2D mesh geometry and motion vector compression

    JP2001506828A

  • Information processing unit and method, and storage medium

    JP2002300043A

  • Compression of time-dependent geometry

    JP2002517851A

  • Representation of picture sequences using 3d models, corresponding signals, and corresponding devices

    JP2006527945A

  • Mesh decoder, mesh encoder, method for decoding mesh, and program

    JP2024008746A