Coding of motion fields in dynamic mesh compression.

By encoding dynamic meshes based on motion fields using advanced techniques like one-dimensional transformations and principal component analysis, the method addresses the challenges of efficient compression in existing video coding techniques, achieving improved storage and transmission efficiency.

JP2025507557AActive Publication Date: 2025-03-21TENCENT AMERICA LLC
View PDF 9 Cites 0 Cited by

Patent Information

Application Number
JP2024547907
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-05-04
Filing Date
2023-05-24
Publication Date
2025-03-21
Estimated Expiration
2043-05-24

AI Technical Summary

Technical Problem

Existing video coding techniques struggle with efficient compression of dynamic meshes, particularly due to large quantization errors and the need for constant connectivity and time-varying attribute maps, which are not adequately supported by current standards.

Method used

The proposed method involves acquiring volume data of 3D visual content, obtaining frames of the mesh sequence, determining a motion field containing motion vectors of the mesh vertices, and encoding the volume data based on this motion field using techniques such as one-dimensional transformations, principal component analysis, and entropy coding.

Benefits of technology

This approach enables efficient compression of dynamic meshes by reducing quantization errors and effectively handling time-varying connectivity and attribute maps, thereby improving data storage and transmission efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025507557000001_ABST
    Figure 2025507557000001_ABST
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 by reference in their entireties herein.

[0002] This disclosure is directed to a set of advanced video coding techniques that include encoding of 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 watch (and interact) with their child on another continent in a fully immersive experience. To achieve this sense of presence, 3D models are becoming more sophisticated than ever before, 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 exploit local properties.

[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, there are more polygons in the face region of a human mesh.

[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, the base mesh may be simpler than the original mesh and the displacements may therefore require less bit depth precision.

[0007] Also, dynamic mesh sequences may require a large amount of data since 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. Mesh compression standards IC, MESHGRID, FAMC were previously developed by MPEG to deal with 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. DCC (Digital Content Creation) tools usually generate such dynamic meshes. Correspondingly, it is difficult for volume acquisition techniques to generate constant connectivity dynamic meshes, especially under real-time constraints. This kind 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 are included that 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 execute acquisition code configured to cause the 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 a frame of a mesh sequence from the volumetric data, the frame including a plurality of vertices of a mesh of the mesh sequence, determining code configured to cause the at least one processor to determine a motion field including motion vectors of a plurality of vertices of the mesh, 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 a plurality of vertices of the mesh.

[0011] According to an exemplary embodiment, the one-dimensional transform includes any 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 a mesh into an ordered motion vector is based on a predefined order.

[0014] According to an exemplary embodiment, the channels of the three-channel image include a respective one 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 that includes 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 an 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 the accompanying drawings. [Brief description of the drawings]

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

[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] FIG. 1 illustrates a simplified block diagram of a communication system 100 according to an 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 coded video data of the other terminal from the network 105, decode the coded data, and display the recovered video data. Unidirectional data transmission may be common in media provision applications, etc.

[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 servers, personal computers, and smartphones, 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 video conferencing equipment. Network 105 represents any number of networks that convey coded video data between terminals 101, 102, 103, and 104, including, for example, wired and / or wireless communication networks. Communication network 105 may exchange data in circuit-switched and / or packet-switched channels. Representative 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 below herein.

[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, storage of compressed video on digital media including CDs, DVDs, memory sticks, and the like.

[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 emphasized as a high data volume when compared to an encoded video bitstream and may be processed by an encoder 202 coupled to the video source 201. The encoder 202 may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video bitstream 204 may be emphasized as a lower data volume compared to the sample stream and may be stored on a streaming server 205 for future use. One or more streaming clients 212 and 207 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 may 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 a particular video coding / compression standard, 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] The receiver 302 may receive one or more codec video sequences to be decoded by the decoder 300, in the same or another embodiment, one coded video sequence at a time, with the decoding of each coded video sequence being independent of the other coded video sequences. The coded video sequences may be received from a channel 301, which may be a hardware / software link to a storage device that stores the coded video data. The 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). The receiver 302 may separate the coded video sequences from the other data. To combat network jitter, a buffer memory 303 may be coupled between the receiver 302 and the entropy decoder / parser 304 (hereinafter, "parser"). If the receiver 302 is receiving data from a storage / forwarding device with sufficient bandwidth and controllability, or from an isosynchronous network, the 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 classification of symbols includes 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 may be coupled to it. The control information for the display(s) may be in the form of Supplementary Enhancement Information (SEI message) or a Video Usability Information (VUI) parameter set fragment (not shown). The parser 304 may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow principles well known to those skilled in the art, including variable length coding, Huffman coding, arithmetic coding with or without context dependency, etc. The parser 304 may extract from the coded video sequence a set of subgroup parameters for at least one of the subgroups 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 produce 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 part 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, the decoder 300 can be conceptually subdivided into several functional units, as described below. In an actual implementation operating under commercial constraints, many of these units will 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 a scalar / inverse transform unit 305. The scalar / inverse transform unit 305 receives quantized transform coefficients and control information including the transform to use, block size, quantization factor, quantization scaling matrix, etc. as symbols 313 from the parser 304. It can output blocks containing sample values ​​that can be input to the aggregator 310.

[0034] In some cases, the output samples of the scalar / 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 part 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 a block of the same size and shape as the block being reconstructed. The aggregator 310 adds, possibly on a sample-by-sample basis, the prediction information generated by the intra-prediction unit 307 to the output sample information provided by the scalar / 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 relating 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 in the reference picture memory format 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 that 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 the aggregator 310 may be subjected to various loop filtering techniques in a loop filter unit 311. The video compression techniques may include in-loop filter techniques controlled by parameters contained in the coded video bitstream and available to the loop filter unit 311 as symbols 313 from the parser 304, but may also be responsive to meta-information obtained during decoding of a coded picture or previous part 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 may be a sample stream that may 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 the reference picture buffer 308, and a 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 given video compression technique, 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 technique or standard being used, in the sense of adhering to the syntax of the video compression technique or standard, as specified in the video compression technique document or standard, specifically in a profile document therein. Also, what is required for compliance may be that the complexity of the coded video sequence is within a range defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, the maximum frame rate, the maximum reconstruction sample rate (e.g., measured in megasamples per second), the maximum reference picture size, etc. The limits imposed by the level may be further restricted in some examples 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), which 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, ...), of any color space (e.g., BT.601 Y CrCB, RGB, ...) and of any suitable sampling structure (e.g., Y CrCB 4:2:0, Y CrCB 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 a number of separate pictures that give motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, each pixel may contain one or more samples, depending on the sampling structure, color space, etc. in use. Those skilled in the art can easily understand the relationship between pixels and samples. The following description focuses on samples.

[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. Providing 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 (picture skip, quantizer, lambda value for rate distortion optimization techniques, etc.), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. One skilled in the art may readily identify other functions of the controller 402 as they may relate to the video encoder 400 being optimized for a particular system design.

[0045] Some video encoders operate in what those skilled in the art will easily recognize as a "coding loop." As an oversimplified explanation, the coding loop may consist of an encoding part of the encoder 400 (hereafter "source coder") (responsible for creating symbols based on the input picture to be coded and the reference pictures), and a (local) decoder 406 embedded in the encoder 400 that reconstructs the symbols to create sample data that the (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. The reference picture buffer contents are also bit-exact between the local and remote encoders, since the decoding of the symbol stream results in bit-exact results regardless of the location of the decoder (local or remote). In other words, the predictive part of the encoder "sees" exactly the same sample values ​​as the decoder "sees" when using prediction during decoding as reference picture samples. This basic principle of reference picture synchrony (and the resulting drift when synchrony 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 relation to Figure 3. However, with brief reference 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 the parser 304 may be lossless, the entropy decoding portion of the decoder 300, including the channel 301, the receiver 302, the buffer 303 and the parser 304, may not be fully implemented in the local decoder 406.

[0047] At this point, it can be said that any decoder technique, other than analysis / entropy decoding, present in the decoder must necessarily also be present in the corresponding encoder in substantially the same functional form. A description of the encoder techniques can be omitted, since they are the inverse of the decoder techniques described generically. Only in certain areas is a more detailed description necessary, which is presented below.

[0048] As part of its operation, the 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, the 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 may be decoded in a video decoder (not shown in FIG. 4), the reconstructed video sequence may be a copy of the source video sequence, usually with some errors. The local video decoder 406 may duplicate 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 the reconstructed reference frames that will be retrieved by the far-end video decoder (without transmission errors).

[0050] The predictor 404 may perform a prediction 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 prediction references for the new picture. The predictor 404 may operate on a pixel block by pixel block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor 404, the input picture may have prediction 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 an entropy coder 408. The entropy coder converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques known to those skilled in the art, such as, for example, 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 ancillary data streams (sources 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 predictive 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 one that can be coded and decoded using intra- or inter-prediction, which uses up to two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, a multiple predicted picture may use more than two reference pictures and associated metadata for the reconstruction of a single block.

[0058] A source picture may generally be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples, respectively) and coded block by block. A block 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, a block of an I-picture may be non-predictively coded or predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). A pixel block of a P-picture may be non-predictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. A pixel block of a B-picture may be non-predictively 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 according to a given video coding technique or standard, such as ITU-T Rec. H.265. In its operations, 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 example viewport-dependent processing in Omnidirectional Media Application Format (OMAF), which may enable 360-degree virtual reality (VR 360) streaming as 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 i are processed by one or more of stitching, mapping to a projected image with respect to one or more virtual reality (VR) angles or other angles / viewpoints, and packed by region. Additionally, metadata indicating any of such processed and other information may be created to aid 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 voice data, the voice data is also encoded in the voice encoding block 502 as data E a may be encoded as:

[0064] Data E a , E v , and E i , the fully coded bitstream F iand / or F may be stored on a (content delivery network (CDN) / cloud) server and typically transmitted in a distribution block 507 or otherwise in its entirety to the OMAF player 520, where it may be fully decoded by the decoder such that at least a certain region of the decoded picture corresponding to the current viewport is rendered to the user in a display block 516 from the 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 with respect to the viewport specifications of that device. A distinct feature of VR360 is that only a viewport may be displayed at any particular time, and such a feature may be exploited to improve the performance of omnidirectional video systems by selective delivery according to the user's viewport (or any other criteria, such as recommended 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 coding blocks described above, the OMAF player 520 according to the exemplary embodiment receives data F′ and / or F′ i and one or more facets of such encoding with respect to one or more file / segment deencapsulation of metadata to produce audio data E' in audio decoding block 510. 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 produce data B' in the audio rendering block 511. a and image rendering of the data D' in an audio rendering and image rendering block 515 to generate display data A' in a display block 516 in VR360 format according to various metadata such as orientation / viewport metadata. i and the speaker / headphone block 512 outputs 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, 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 example embodiment and may be performed in other orders according to other example embodiments.

[0066] 6 illustrates a simplified block-style content flow process diagram 600 of (coded) point cloud data with view position and angle dependent processing of point cloud data (herein "V-PCC") for 6-DOF media capture / 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 an exemplary embodiment.

[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 may be synthesized by a computer as volume data, and the volume data, which may have any format, may be converted to a (quantized) point cloud data format via image processing in conversion to point cloud block 602. For example, data from the volume data may be area data with area data converted to one of the points of the 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. According to an exemplary embodiment, the volume data may be a 3D dataset of 2D images, such as slices, which may be projected with a 2D projection of the 3D dataset. According to an example embodiment, a point cloud data format includes a representation of data points in one or more various spaces and may be used to represent volumetric data and can provide improvements in sampling and data compression with respect to temporal redundancy, etc., for example, point cloud data in an x, y, z format represents color values ​​(e.g., RGB, etc.), brightness, intensity, etc. at each of a plurality of points of cloud data and can be used with progressive decoding, polygonal meshes, direct rendering, and octree 3D representations of 2D quadtree data.

[0069] In a projection onto 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 6 degrees of freedom (DoF) media, for example, according to the director's intent or user preferences. Such 6 DoF media may include a 360 VR-like 3D view of the scene from rotational changes on 3D axes X, Y, 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 the coded point cloud data and other media data including VR360, light field, audio, etc., and may be provided to one or more cloud servers and / or file / segment encapsulation / deencapsulation processes, as shown in FIG. 6 and 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 appreciated 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 others, such descriptions may be used in connection with DASH, described below, such as representing an exemplary embodiment. The file container may also include scene description metadata, such as from a scene generator block 1109, into the file or segment.

[0072] According to an exemplary embodiment, the file includes at least one viewing position and at least one or more angular views at that viewing position at one or more times of the 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 the 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 coded independently, 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 in 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, such as that included in the files and / or segments encapsulated with respect to the File / Segment Encapsulation Block, useful for view position / angle dependent processing, may include the following: 2D / 3D partition layout information with indexes; (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 view position / angle list corresponding to the 3D volume partition; an index of the 2D / 3D partition corresponding to the selected view position / angle list; quality (rank) information for each 2D / 3D partition; and rendering information for each 2D / 3D partition according to each view position / angle. Invoking such metadata when requested, such as indicated by a user of the V-PCC player or by a content creator for a user of the V-PCC player, may enable more efficient processing for a particular portion of the 6DoF media desired with respect to such metadata, thereby allowing the V-PCC player to deliver a higher quality image focused on that portion of the 6DoF media over 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 directly to either the V-PCC Player 625 and a cloud server such as the Cloud Server block 607 using a delivery mechanism (e.g., Dynamic Adaptive Streaming over HTTP (DASH)), which may extract one or more tracks and / or one or more specific 2D / 3D partitions from the file and may merge multiple coded point cloud data into one data.

[0076] If the current field of view position and angle is defined in the 6DoF coordinate system at 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, for example from a client system having a V-PCC player 625, and the extracted data can be delivered to the client as files or segments.

[0077] With regard to such data, in file / segment decapsulation block 615 a file decapsulator processes the file or received segment, extracts the coded bitstream and parses the metadata, and in video decoding and image decoding blocks 610 and 611 the coded point cloud data is then decoded and reconstructed into point cloud data in point cloud reconstruction block 612, which may be displayed in display block 614 and / or may be initially configured according to one or more various scene descriptions in scene composition block 613 with respect to scene description data according to 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 conforming coded video bitstream, and the ability for coded 2D / 3D bitstream extraction of coded pictures into a conforming coded bitstream, with such V-PCC system support being further improved by including a container formation for the VVC bitstream to support a mechanism for housing metadata conveying one or more of the above-mentioned metadata.

[0079] In that respect, and in accordance with an exemplary embodiment 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, called connectivity information. Optionally, vertex attributes such as color, normal, etc. can be associated with the mesh vertices. Attributes may also be associated with the surface of the mesh by utilizing mapping information that parametrizes the mesh with a 2D attribute map. Such mapping may be defined by a set of parametric coordinates, called UV coordinates or texture coordinates, that are associated with the mesh vertices. The 2D attribute map is used to store high-resolution attribute information such as texture, normal, displacement, etc. Such information may be used for various purposes, such as texture mapping and shading in accordance with an exemplary embodiment.

[0080] Nevertheless, a dynamic mesh sequence may require a large amount of data since it may consist of a significant amount of information that changes over time. For example, in contrast to a "static mesh" or "static mesh sequence" whose information does not change from frame to frame, a "dynamic mesh" or "dynamic mesh sequence" exhibits a movement in which one of the vertices represented by the mesh changes from frame to frame. Therefore, efficient compression techniques are required to store and transmit such content. Mesh compression standards IC, MESHGRID, FAMC were previously developed by MPEG to deal with 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. DCC (Digital Content Creation) tools usually generate such dynamic meshes. Correspondingly, it is difficult for quantitative acquisition techniques to generate constant connectivity dynamic meshes, especially under real-time constraints. This kind 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 communication, storage, free viewpoint video, AR and VR, etc. Features such as random access and scalable / progressive coding are also contemplated.

[0081] FIG. 7 represents one dynamic mesh compression example framework 700 for 2D atlas sampling based methods and the like. Each frame of the input mesh 701 can be pre-processed by a series of operations such as tracking, remeshing, parameterization, voxelization, etc. Note that these operations can be encoder only, meaning that they may not be part of the decoding process, and such a possibility can be signaled in the metadata by a flag such as indicating 0 to the encoder only and 1 elsewhere. Then, a mesh with a 2D UV atlas 702 can be obtained, and each vertex of the mesh has one or more associated UV coordinates on the 2D atlas. The mesh can then be converted into multiple maps, including geometry maps and attribute maps, by sampling on the 2D atlas. These 2D maps can then be coded by a video / image codec such as HEVC, VVC, AV1, AVS3, etc. At the decoder 703 side, the mesh can be reconstructed from the decoded 2D maps. Any 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 the purpose of 3D mesh reconstruction. Note that chart border information, including the uv and xyz coordinates of the border 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 is composed 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 for mapping from 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 ) 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 be similarly indicated. Furthermore, such a 2D texture mesh, according to an exemplary embodiment, may further indicate information such as color information for each triangular patch, e.g., v2, v5, v3, etc., as one "patch."

[0083] For example, see example 900 of FIG. 9, in addition to the features of example 800 of FIG. 8, a 3D mesh segment 801 can also 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,v 1’ and v4,v 4’Thus, a typical 2D UV atlas of a 3D mesh may be composed of multiple charts, as shown in Figure 14, where each chart may contain multiple (usually 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, B7. When such information is presented, 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 the example 903, there are various regularly shaped repeating triangles and various irregular triangles, which are generally closest to the boundary vertices and have their own dimensions that may or may not be shared with other triangles. The connectivity information can also be reconstructed by explicit signaling. If the polygon cannot be restored by implicit rules, the encoder can signal the 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 if the edge appears in only one triangle. The following information of the boundary vertices is important and should be signaled in the bitstream according to the 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 called UV2XYZ) index can be signaled to indicate the mapping function. UV2XYZ can be a 1D array of indices that maps 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 thus 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. It should be noted that the methods may be applied individually or in any form of combination.

[0089] Consider, for example, 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, for example, FIG. 9. In one example, the division is done using patch / chart division in S204. In another example, the division is done 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, and 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, "prediction group", may share the same specific mode (e.g., 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 may be assigned at different levels by determining the respective number of vertices included per group. For example, every 64, 32, or 16 vertices according to the scanning order in the patch / chart may be assigned the same prediction mode according to an exemplary embodiment, and other vertices may be assigned differently. For each group, the prediction mode may be an intra prediction mode or an inter prediction mode. This may 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 an intra type, all vertex groups within that mesh frame or mesh slice shall use intra prediction mode, and if not, in S208, either an intra prediction mode or an 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 by using previously coded vertices in 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 by using previously coded vertices from another mesh frame according to an exemplary embodiment. Each of the above information can be determined and signaled by a flag or the like. The prediction feature may be performed in S210, and the result of the prediction and signaling may occur in S211.

[0091] According to an exemplary embodiment, for each vertex in the group of vertices of 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 of the group of vertices needs to be further compressed. In one example, the transformation in S211 may be applied to the residual of the vertex group before entropy coding along with its signaling. The following methods may be implemented to handle the coding of the group of displacement vectors. For example, one method may appropriately signal the case where the group of displacement vectors, some displacement vectors, or its components have only zero values. In another embodiment, a flag may be signaled for each displacement vector whether this vector has a non-zero component, and if not, the coding of all components of this displacement vector may be skipped. Furthermore, in another embodiment, a flag may be signaled for each group of displacement vectors whether this group has a non-zero vector, and if not, the coding of all displacement vectors of this group may be skipped. Further, 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. Further, in another embodiment, there may be signaling if a group of displacement vectors or a component of a group of displacement vectors needs a transform, and if not, the transform can be skipped and quantization / entropy coding can be applied directly to the group or group component. Further, in another embodiment, a flag may be signaled for each group of displacement vectors whether this group needs to go through 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, the transform coding of this component of all displacement vectors of this group can be skipped. The above-mentioned embodiments in this paragraph regarding the processing of vertex prediction residuals may also be performed in combination in parallel on different patches.

[0092] FIG. 11 shows an example flowchart 1150 in which a mesh frame can be coded as a whole data unit to obtain in S221, meaning that all vertices or attributes of a 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, in a similar concept to slices or tiles of a 2D video or a 2D image. The coded mesh frame or coded mesh subpartitions can be assigned a prediction type in S224. Possible prediction types include intra-coding type and inter-coding type. For intra-coding type, only prediction from a reconstructed part of the same frame or slice is allowed in S225. Meanwhile, inter-prediction type allows prediction from a previously coded mesh frame in addition to prediction within the mesh frame in S225. Also, the type of inter-prediction may be classified into more subtypes, such as P type and B type. In P type, only one predictor can be used for prediction purpose, and in B type, two predictors from two previously coded mesh frames may be used to generate a predictor. A weighted average of two predictors may be an example. If the mesh frame is coded as a whole, the frame may be considered as 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, the prediction assignment for each of the sub-partitions occurs in S224. Each of the above information may be determined and signaled by flags, etc., and the prediction feature may occur in S226, and the result of the prediction and signaling may occur in S227, similar to S210 and S211 in FIG. 10.

[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, yet efficient compression techniques are required to store and transmit such content, and the features described above for 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] Further, the exemplary embodiment may generate displacement vectors of a third layer 1303 of the mesh based on one or more of the reconstructed vertices of its previous layers, such as the second layer 1302 and the first layer 1301. Assuming that the index of the second layer 1302 is T, a predictor of a vertex of the third layer 1303T+1 is generated based on at least the reconstructed vertices of the current layer or the second layer 1302. An example of such a layer-based prediction structure is shown in the example 1300 of FIG. 13, which illustrates a reconstruction-based vertex prediction, i.e., a progressive vertex prediction using edge-based interpolation, where a predictor is generated based on previously decoded vertices rather than predictor vertices. The first layer 1301 may be a mesh bounded by a first polygon 1340 having as its vertices the decoded vertices at its boundary and the interpolated vertices along one of the lines between those decoded vertices. As the progressive coding proceeds from the first layer 1301 to the second layer 1302, additional polygons 1341 may be formed by displacement vectors from one of the interpolated vertices of the first layer to additional vertices of the second layer 1302, and thus the total number of vertices of the second layer 1302 may be greater than the total number of vertices of the first layer 1301. Similarly, when proceeding to the third layer 1303, the additional vertices of the second layer 1302, together with the decoded vertices from the first layer 1301, may function in the coding in the same way as the decoded vertices that functioned in proceeding from the first layer 1301 to the second layer 1303, i.e., multiple additional polygons may be formed. Notably, referring to example 1400 in FIG. 14 illustrating such progressive coding, unlike FIG. 13, example 1400 shows that when moving from the first layer 1401 to the second layer 1403 to the third layer 1403, each of the additionally formed polygons may be entirely within the polygon formed by the boundary of the 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, together with all the decoded vertices of the previous layer, can then be used to generate and signal predictor vertices of the next layer 1303 in S235, such as checking the additional vertex values ​​of such layer in S234. This process can also be summarized as follows, where P[t](Vi) represents the predictor of vertex Vi on layer t, R[t](Vi) represents the reconstructed vertex Vi on layer t, D[t](Vi) represents the displacement vector of vertex Vi on layer t, and f(*) represents the predictor generator, which can be specifically 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] Then, for all vertices in one 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, each of P, R and D represents a 3D vector under 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 only be applied to certain layers. For example, 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 a layer (and its subsequent layers) does 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 whose vertex predictors are generated by other predictor vertices, a transformation may be required and quantization can be applied to the transform coefficients of those displacement vectors.

[0099] Thus, dynamic mesh sequences may require a large amount of data since 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 the displacement vectors is one of the key steps, which constitutes a large portion of the coded bitstream and is the focus of this disclosure, and the features of, for example, FIG. 15, alleviate such problems by providing such compression.

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

[0101] According to an example 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 example 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, i.e., if it is determined that a polygon cannot be reconstructed by implicit rules, the encoder can signal connectivity information in the bitstream, and according to an exemplary embodiment, the overhead of such explicit signaling can be reduced depending on the polygon boundary.

[0104] According to an embodiment, it is decided that only connectivity information between boundary vertices and sampled locations is to be signaled; connectivity information between the sampled locations themselves is inferred.

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

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

[0107] As a further note, any reconstructed mesh may have a 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 exemplary embodiment, connectivity information of any base vertices may not be signaled, instead edges between base vertices may be derived using the same algorithm at both the encoder and decoder sides. Also according to an exemplary 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 at 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 to the original connectivity of the base mesh vertices. Thus, 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 pair of vertices that form this edge), and for an original edge, if it is not derived, such information may be signaled in the bitstream (by indicating the pair of vertices that form this edge). Furthermore, vertex interpolation involving connectivity on and to boundary edges may be performed separately from interior vertices and edges.

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

[0113] The above-described embodiment can be further applied to instance-based mesh coding, where an instance can be a mesh of an object or a part 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 can be separated and coded. Also, while each of the instances 1601, 1602, 1603, and 1604 are 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 an exemplary embodiment, the proposed methods may be used separately or combined in any order. The proposed methods may be used for any polygonal mesh, but only triangular meshes may be used to demonstrate the various embodiments. As mentioned above, it is assumed that an input mesh may contain one or more instances, and a sub-mesh is a portion of an input mesh that has one or more instances, and multiple instances may 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 parts at a given input bit depth (which bit depth may be referred to as "QP"). For example, in S1501, one or more input meshes may be obtained and each may be separated into multiple sub-meshes. The sub-meshes may be objects, instances of objects, or segmented regions, which are independently quantized in S1502 according to an exemplary embodiment.

[0116] According to an example embodiment, a mesh M having m points at (x, y, z) coordinates may be quantized by the QP bit depth in S1502. The quantization step size in all three dimensions (x, y, z) may be determined based on the maximum length of the bounding box in all dimensions, 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 often the background, which is relatively simple and can tolerate a higher quantization step size, while the main objects are smaller and suffer from large quantization errors that can be accounted for by various embodiments described further below.

[0118] Thus, as shown in example 1500 of FIG. 15, the input mesh d bbox The maximum length of the bounding box of is always the maximum length of the bounding box 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 a mesh of a cup), 1603 (representing a mesh of a spoon), and 1604 (representing a mesh of a plate) is always

number

[0120] Therefore, the quantization error for each instance is smaller, and the overall quantization error is smaller.

[0121] According to various embodiments, looking at the flowchart 1700 of FIG. 17, the bit depth may be adaptively assigned to each instance / region called a "sub-mesh" in S1702 and may be determined based on the areal density of that particular instance. Each sub-mesh may be obtained from the volume data of the mesh, which may itself signal each instance in the mesh individually, and each sub-mesh is derived from that mesh on an instance-by-instance basis in S1702. For example, each of the 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, etc., in S1703, the less quantization should be applied to that instance in S1702. For example, given a mesh M, the total number of faces is n, and the corresponding faces of the sub-mesh kth are 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 its corresponding displacement 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 example 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 ascending base quantization bit depths is then assigned to the corresponding displacement quantization bit depths.

number

number

[0126] [Table 1]

[0127] Where: where u(n) is an unsigned integer using n bits, i(n) is an integer using n bits, and mips_quant() is a sequence of signaling data. -mips_min_bbox[k] is the minimum of the bounding box in the i-th dimension, -mips_num_instances_minus1 is the number of instances in the mesh minus 1 -mips_base_bitdepth_minus1 is the bit depth of the first instance in this order, -mips_base_quant[k] is the difference between the quantization of the (k+1)th and the kth submesh. If the quantization set is sorted in ascending order, this number is always non-negative and -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 leveraging local characteristics but also by considering similarities between instances in accordance with 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 may be grouped into similarity groups using simple scaling features and similarity measures. For example, according to an embodiment, instances may be aligned and normalized so that only transient assets may be reused. Scale and orientation information may be signaled over a channel in IMP mode, and given an input mesh M with m instances, the i-th instance may be

number

[0133] According to an exemplary embodiment, in S1803, in response to the instruction of the flag, the IMP is used to identify asset groups with a size mk>1 that is greater than 1.

number

[0134] [Table 2]

[0135] In the case of lossless compression,

number

number

[0136] Depending on the flag S1804, the coding in S1805 may be signaled to code the sub-meshes into sub-bitstreams independently. Each sub-mesh may be coded by a mesh codec having different coding parameters. Note that each sub-mesh may also be coded by a different mesh codec, in which case a codec index indicating which mesh codec is used must be signaled, for example, in the header of the sub-bitstream. 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 indicates dependent coding instead, 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 already coded. A prediction index may be coded to indicate which sub-mesh is used as a prediction. The prediction index may be signaled at different levels.

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

[0139] In S1808, a prediction index may be signaled for each vertex of the current submesh, so that each vertex can be predicted from a different submesh. Note that the prediction index may also be coded by predictive coding, 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 a group of vertices shares 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] Then, 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 with any of the exemplary embodiments. According to the 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 attributes of the vertex can include, but are not limited to, geometric shape, color, normal, uv coordinates, connectivity, etc. The residual information can then be coded by arithmetic coding according to the exemplary embodiment.

[0142] Additionally, such coding may be applied to the coding of 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] Or, 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 subbitstream. Note that these parameters in different sets may be coded independently or dependently. If dependent coding is applied, prediction may be applied and the prediction residual of the material parameters may be coded instead. Then, for each vertex in the submesh, a material ID may be coded to indicate which set of material information is used for this vertex. Note that according to an exemplary embodiment, in order to reduce redundancy, the material ID (identifier) ​​may be coded by predicting from the 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 information may be available at the time of encoding, 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, especially for the synthesis of complex scenes. For example, 3D models may be reused with or without textures modified with 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, and thereby more efficiently searched.

[0146] FIG. 19 shows an example 1900 of block partitioning by using a quadtree binary tree (QTBT) 1901 and corresponding tree representation 1902. The solid lines indicate quadtree partitioning and the 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, since quadtree partitioning always partitions a block both horizontally and vertically to generate four sub-blocks of equal size.

[0147] The 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. Within one PU, the same prediction process is applied, and related information is transmitted to the decoder on a PU basis. After obtaining the residual block by applying the 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 coding tree of the CU.

[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, may be used for any polygonal mesh, and the geometry may be coded by a base mesh and a predicted displacement coding. For example, looking at the flowchart 2000, in S2002, given a base mesh that is a subset of the original mesh obtained in S2001, an original vertex may be coded by looking at its predicted point (projected vertex) and the displacement between the predicted point (projected vertex) and the original point (remaining vertex) by looking at the example 2100. The base mesh is a constraint such that the remaining vertices (not included in the vertex) 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, looking at the two distance-based displacement coding examples 2101 for a 2D mesh, the points

number

number

number

number

number

number

[0151] According to a 2D exemplary embodiment, and in 3D according to another exemplary embodiment, in S2006, an additional point y on the line between the adjacent points y1, 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, 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 nearly lossless, which may be considered lossless herein, displacement coding of a 3D mesh, 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, 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, in example 2103, 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

number

number

number

number

number

[0156] According to an example embodiment, in one embodiment, there is a 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 coding by sequential prediction, in S2012, there is pixelation of the mesh into corresponding rectangular blocks such as one or more of the blocks shown in example 1901. This approach enables a block split, block merging framework in video coding.

[0157] For example, when pixelating a face in S2012, given a quad face, we first subdivide the original vertices into n 2 The example ternary tree shown in the example 2201 of ternary tree subdivision at level 1 for a group representation of a quad mesh and corresponding displacements in the example 2200 of FIG. 2 Based on the assumption of smooth varying surfaces of the mesh, the displacement groups are likely to be highly correlated. Therefore, intra-like prediction and local transformations can be used to divide 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 to predict the displacement depending on its position (Bottom Left - LL, Bottom Right LR, Top Left - TL, Top Right - TF). That is, given a group displacement representation of size B1 x B2, using four weight matrices, the prediction at position i, j of the partition grid can be derived as follows:

number

[0160] Furthermore, example 2202 shows a neighbor-based intra-displacement prediction, which can use base mesh vertices and already coded neighboring displacement vertices to predict the current displacement group. The prediction can be an angle prediction in intra-prediction. Additional base mesh vertices can be used to perform correction for angle prediction and post-smoothing in equation (11) according to an exemplary embodiment.

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

[0162] According to an example embodiment, in S2301, m(i) may be the i-th frame in the mesh sequence, v(i,j) may be the position of the j-th vertex of m(i), and m(i0),...,m(i n Please further refer to the example 2300 of FIG. 23, which shows a flowchart in which one or more frames are obtained such that m(i0) may be a tracking mesh determined by the signaling in S2302, and m(i0) may be a 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)-Eq.(12)

[0163] Or, 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, f(i k ), and in the embodiment of the present 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 by a flag or operator instruction, a mode may be selected in S2304.

[0166] In a mesh sequence, the exemplary embodiment of the present specification refers to tracking multiple mesh frames when all those meshes are determined to share the same one or more of some vertices, connectivity, texture coordinates, and texture connectivity at S2302, and only the positions of vertices differ among those meshes. Since there is a one-to-one correspondence between the vertices of the two tracked mesh frames, which may be referred to as a reference frame and a current frame in this specification, 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 according to an exemplary embodiment may be composed of a number of polygons that describe the surface of a volumetric object. Each polygon is defined by its vertices in 3D space and information on how the vertices are connected, referred to as connectivity information. Optionally, vertex attributes such as color, normal, displacement, etc. may be associated with the mesh vertices. Attributes may also be associated with the surface of the mesh by utilizing mapping information that parametrizes the mesh with 2D attribute maps. 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 maps are used to store high-resolution attribute information such as texture, normal, displacement, etc. Such information is used for various purposes herein such as texture mapping, shading, mesh reconstruction, etc.

[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 as the trajectory of the vertices 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) may 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 then the ordered motion vectors may be packed into a three-channel image, where each channel corresponds to one spatial dimension of the motion vectors. Packing may be done in any order, such as raster order, Morton order, etc. After packing, the images from all frames may be encoded by a video codec, and decoding may be performed accordingly. After decoding the video frames, an unpacking operation may be applied to turn the 2D array of motion vectors back into an array of mesh vertices with a known order, which is used at the encoder side according to an exemplary embodiment.

[0170] In S2307, coding of the motion field by using coordinate-altering Principal Component Analysis (PCA) may be performed, where the 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 a construction of a data matrix M for the motion field. The j-th row of M is f(i k ,j),k=1,…,n, so 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 the eigendecomposition of C, there can be either signaling of all eigenvectors, or only signaling of the first plurality, at least two, of the eigenvectors with a configurable threshold of the eigenvalues. Furthermore, the projection of each row of M on the signaled eigenvectors may be signaled, and the coefficients for those eigenvectors may be signaled. According to an exemplary embodiment, the average of each column of M should be signaled as well. According to an exemplary embodiment, all signaling can be done with 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 the sum of the centered trajectory and the decoded average position.

[0171] According to an exemplary embodiment, if it is determined that there is other data encoded via video coding, the exemplary embodiment concatenates the data with the motion vectors and packs them into a single video frame for coding. For example, for 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 the motion vectors. This includes the possibility that the motion vectors and displacement vectors are included in different streams, or that they are 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 since 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 a large scope to significantly compress the meshes by the embodiments described herein for compressing the motion fields of dynamically refined meshes. Thus, in the exemplary embodiments herein, several methods are described for improving the approach to compressing the motion fields of dynamic refined meshes, which methods described herein are 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, FIG. 24 illustrates a computer system 2400 suitable for implementing certain embodiments of the disclosed subject matter.

[0174] The 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, smart phones, gaming devices, Internet of Things devices, and the like.

[0176] 24 with respect to 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 the 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 be responsive to input by one or more human users, for example, via tactile input (keystrokes, swipes, data glove movements, etc.), audio input (voice, clapping, etc.), visual input (gestures, etc.), 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 still image cameras), video (e.g., two-dimensional video, three-dimensional video including stereoscopic video), etc.

[0178] The input human interface devices may include one or more of a keyboard 2401, a mouse 2402, a trackpad 2403, a touch screen 2410, a joystick 2405, a microphone 2406, a scanner 2408, 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 haptic output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touch screen 2410, or joystick 2405, although there may 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, OLED screens, each with or without touch screen 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 tapes 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 communication networks 2498. The network 2498 may be, for example, wireless, wired, 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, wireless LAN, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., TV wired or wireless wide area digital networks including cable TV, satellite TV, and terrestrial broadcast TV, vehicular and industrial including CANBus, etc. A particular network 2498 generally requires an external network interface adapter attached to a particular general purpose data port or peripheral bus (2450 and 2451) (e.g., USB port of the computer system 2400, etc.), while other networks are generally built into the core of the computer system 2400 by attachment to the system bus as described below (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks 2498, the computer system 2400 can communicate with other entities. Such communications 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, such as 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 areas (FPGAs) 2443, hardware accelerators for specific tasks 2444, and the like. These devices may be connected through a system bus 2448, along with read only memory (ROM) 2445), random access memory 2446, internal mass storage 2447 such as an internal non-user accessible hard drive, SSD, and the like. 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, and the like. Peripheral devices may be attached directly to the core's system bus 2448 or through a peripheral bus 2449. Architectures for peripheral buses include PCI, USB, and the like.

[0185] The CPU 2441, GPU 2442, FPGA 2443, and accelerator 2444 may execute certain instructions that may combine to 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 fast retrieval to any of the memory devices.

[0186] The computer-readable medium can 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, may provide functionality as a result of a processor (including CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be user-accessible mass storage as described above, as well as media associated with a particular storage of core 2440 that is non-transitory in nature, such as core internal mass storage 2447 and ROM 2445. Software implementing various embodiments of the present disclosure may be stored in such devices and executed by core 2440. Computer-readable media may include one or more memory devices or chips, depending on the particular needs. The software may cause core 2440, and specifically the processor therein (including 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 the 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 may operate in place of or in conjunction with software to perform certain processes or certain portions of certain processes described herein. References to software may encompass logic, and vice versa, where appropriate. References to computer-readable media may encompass circuitry (such as integrated circuits (ICs)) that store 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 bit stream, 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 volumetric 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 / View 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 mapping mesh segments to multiple 2D charts, 901 2D chart, 902 2D chart, 903 example showing 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 quantizing different objects or parts separately, 1600 example instance, 1601 example mesh, 1602 Instance (mesh of cup), 1603 Instance (mesh of spoon), 1604 Instance (mesh of plate), 1700 Flowchart, 1800 Flowchart, 1900 Example of block partitioning, 1901 Quadtree binary tree, 1902 Corresponding tree representation, 2000 Flowchart, 2100 Example of displacement, 2101 Example of distance based displacement coding, 2102 Two examples of 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; and encoding the volume data based on the motion field.

2. The method for video encoding of claim 1 , wherein the step of coding the volume data comprises the step of 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 vector is based on a predetermined order.

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

7. The method for video encoding of claim 1 , wherein the step of coding the volumetric data comprises applying a principal component analysis to the motion field.

8. 8. The method for video encoding of claim 7, wherein the principal component analysis comprises constructing a matrix containing 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.

9. The method for video encoding of claim 8 , wherein the principal component analysis further comprises the steps of obtaining a covariance matrix from the matrix and applying an eigendecomposition to the covariance matrix.

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

11. 1. An apparatus for video encoding, comprising: at least one memory configured to store computer program code; at least one processor configured to access the computer program code and to operate as instructed by the computer program code; The computer program code comprises: acquisition code configured to cause the at least one processor to acquire a mesh sequence including a plurality of meshes corresponding to volumetric data of at least one three-dimensional (3D) visual content; further acquisition code configured to cause the at least one processor to acquire 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; and a motion field including motion vectors of the vertices of the mesh; and and encoding code configured to cause the at least one processor to encode the volume data based on the motion field.

12. The apparatus for video encoding of claim 11 , wherein coding the volume data comprises applying a one-dimensional transform to each of the motion vectors of the multiple vertices of the mesh.

13. The apparatus for video encoding of claim 12 , wherein the one-dimensional transform comprises one of a discrete cosine transform and a lifting wavelet transform.

14. 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.

15. The apparatus for video encoding of claim 14 , wherein arranging the motion vectors of the vertices of the mesh into the ordered motion vector is based on a predetermined order.

16. 15. The apparatus for video encoding of claim 14, wherein the channels of the three-channel image include respective ones of the spatial dimensions of the motion vector.

17. The apparatus for video encoding of claim 11 , wherein coding the volumetric data comprises applying principal component analysis to the motion field.

18. 20. The apparatus for video encoding of claim 17, wherein the principal component analysis comprises constructing a matrix including 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.

19. The apparatus for video encoding of claim 18 , wherein the principal component analysis further comprises obtaining a covariance matrix from the matrix and applying an eigendecomposition to the covariance matrix.

20. On the computer, obtaining a mesh sequence including 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 the vertices of the mesh; A non-transitory computer readable medium storing a program for encoding the volume data based on the motion field.

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