Video coding method, apparatus, and computer program therefor

The method of mesh vertex prediction and derived triangulation for dynamic mesh compression addresses the challenge of efficiently compressing and transmitting 3D visual content, improving data efficiency and quality in advanced 3D applications.

JP7712035B2Active Publication Date: 2025-07-23TENCENT AMERICA LLC
View PDF 7 Cites 0 Cited by

Patent Information

Application Number
JP2024531215
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2023-04-19
Filing Date
2023-04-20
Publication Date
2025-07-23
Estimated Expiration
2043-04-20

AI Technical Summary

Technical Problem

Existing video coding technologies struggle with efficiently compressing and transmitting large amounts of 3D visual content data, particularly dynamic meshes with time-varying connectivity and attribute maps, which are common in advanced 3D photography and rendering applications.

Method used

A method and apparatus that utilize mesh vertex prediction based on derived mesh triangulation for dynamic mesh compression, involving the formation of prediction groups and signaling modes for vertex subsets, including intra and inter prediction, and 3D displacement vectors to optimize data compression and transmission.

Benefits of technology

Enhances the efficiency of compressing and transmitting 3D visual content by reducing data volume while maintaining quality, supporting real-time communication and immersive experiences across various platforms.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007712035000001
    Figure 0007712035000001
  • Figure 0007712035000002
    Figure 0007712035000002
  • Figure 0007712035000003
    Figure 0007712035000003
Patent Text Reader

Abstract

Provided are methods and apparatus including computer code configured to cause one or more processors to perform the steps of obtaining volumetric data of at least one three-dimensional (3D) visual content, obtaining patches from the volumetric data by dividing a plurality of 3D meshes, the patches including vertices of at least one of the 3D meshes, forming a prediction group including a subset of vertices of the patch, and collectively signaling a prediction mode of the prediction group to a plurality of subsets of the vertices of the patch.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application claims priority to U.S. Provisional Application No. 63 / 346,655, filed May 27, 2022, and U.S. Application No. 18 / 303,129, filed Apr. 19, 2023, the entire contents of which are hereby expressly incorporated by reference herein.

[0002] This disclosure is directed to a series of advanced video coding techniques that include mesh vertex prediction based on derived mesh triangulation for dynamic mesh compression.

Background Art

[0003] Advances in 3D photography, modeling, and rendering have facilitated the ubiquitous presence of 3D content across multiple platforms and devices. Currently, one can film a baby's first steps on one continent and have grandparents on another continent view (and perhaps interact with) that baby and enjoy a fully immersive experience. Nevertheless, to achieve such realism, the models are more sophisticated than ever, and large amounts of data are linked to the creation and consumption of those models.

[0004] Accordingly, a technical solution to such problems is desired.

Summary of the Invention

Means for Solving the Problems

[0005] A method and apparatus are provided that include a memory configured to store computer program code and one or more processors configured to access the computer program code and operate according to the instructions of the computer program code. The computer program code causes at least one of the processors to perform acquisition code configured to acquire volume data of at least one three-dimensional (3D) visual content, further acquisition code configured to cause at least one of the processors to acquire patches by dividing a plurality of 3D meshes from the volume data, the patches including a plurality of vertices of at least one of the 3D meshes, formation code configured to cause at least one of the processors to form a prediction group including a subset of the plurality of vertices of the patch, and signaling code configured to cause at least one of the processors to collectively signal a prediction mode of the prediction group for a subset of the plurality of vertices of the patch.

[0006] In an exemplary embodiment, the subset includes a predetermined number of the plurality of vertices, and the predetermined number is any one of 64, 32, and 16.

[0007] In an exemplary embodiment, the formation code is further configured to cause at least one of the processors to form a second prediction group including a second subset of the plurality of vertices of the patch, the signaling code is further configured to cause at least one of the processors to collectively signal a second prediction mode of the second prediction group for a second subset of the plurality of vertices of the patch, and both the signaling of the prediction mode and the signaling of the second prediction mode are performed based on determining whether to set at least one of a mesh frame and a mesh slice of at least one of the 3D meshes to an intra prediction mode.

[0008] In an exemplary embodiment, both the signaling of the prediction mode and the signaling of the second prediction mode are independently performed as either the intra prediction mode or the inter prediction mode based on a determination not to set at least one of the mesh frames and mesh slices of at least one of the 3D meshes to the intra prediction mode.

[0009] In an exemplary embodiment, the signaling code is further configured to cause at least one of the processors to signal a 3D displacement vector indicating a shift from a current vertex among the plurality of vertices to a predictor position.

[0010] In an exemplary embodiment, the signaling of the 3D displacement vector includes signaling a plurality of flags, each of the plurality of flags indicating whether the 3D displacement vector includes non-zero components for each of a subset of the plurality of vertices.

[0011] In an exemplary embodiment, the signaling of the 3D displacement vector includes signaling a group flag, the group flag indicating whether the 3D displacement vector includes non-zero components for a group of a subset of the plurality of vertices.

[0012] In an exemplary embodiment, the signaling code is further configured to cause at least one of the processors to signal a flag, the flag indicating whether to perform a conversion for a group of a subset of the plurality of vertices.

[0013] In an exemplary embodiment, the signaling code is further configured to cause at least one of the processors to signal a plurality of flags, each of the plurality of flags indicating whether to perform a conversion for each of the components of a group of a subset of the plurality of vertices.

[0014] In an exemplary embodiment, the signaling of the 3D displacement vector includes signaling a plurality of flags, and each of the plurality of flags indicates whether the component of the 3D displacement vector includes a non-zero vector for each of the subsets of the plurality of vertices.

Brief Description of the Drawings

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

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

Figure 13

Figure 14

Figure 15

Figure 16

Figure 17

Figure 18

Figure 19

Figure 20

Figure 21

Figure 22

Figure 23

Figure 24

Figure 25

Figure 26

Mode for Carrying Out the Invention

[0016] The proposed features described below may be used separately or in any combination. Further, the embodiment may be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute a program stored in a non-transitory computer-readable medium.

[0017] FIG. 1 shows 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 and 103 interconnected via a network 105. In the case of unidirectional data transmission, the first terminal 103 can encode video data at a local location to transmit the video data to the other terminal 102 via the network 105. The second terminal 102 can receive the encoded video data of the other terminal from the network 105, decode the encoded data, and display the restored video data. Unidirectional data transmission is common in media supply applications and the like.

[0018] FIG. 1 shows a second pair of terminals 101, 104 provided to support two-way transmission of encoded video that may occur during a video conference, for example. In the case of two-way transmission of data, one of the terminals 101 and 104 can encode video data captured at a local location to transmit the captured video data to the other of the terminals 101 and 104 via the network 105. One of the terminals 101, 104 can further receive the encoded video data transmitted by the other of the terminals 101, 104, decode the encoded data, and display the restored video data on a local display device.

[0019] In FIG. 1, the terminals 101, 102, 103, 104 may be shown as servers, personal computers, and smartphones, but the principles of the present disclosure are not limited thereto. Embodiments of the present disclosure find use in laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. The network 105 represents any number of networks that transmit encoded video data between the terminals 101, 102, 103, 104, including, for example, wired and / or wireless communication networks. The communication network 105 can 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 the purposes of this discussion, the architecture and topology of the network 105 may not be important for the operation of the present disclosure unless otherwise described herein below.

[0020] FIG. 2 shows the arrangement of video encoders and decoders in a streaming environment as an example of the application of the disclosed subject matter. The disclosed subject matter is equally applicable to other video-related applications, including, for example, video conferencing, digital TV, and storage of compressed video on digital media including CDs, DVDs, memory sticks, and the like.

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

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

[0023] Receiver 302 may receive one or more encoded video sequences decoded by decoder 300. In the same or different embodiments, receiver 302 receives one encoded video sequence at a time, and the decoding of each encoded video sequence is independent of other encoded video sequences. The encoded video sequence may be received from channel 301, which may be a hardware / software link to a storage device storing the encoded video data. Receiver 302 may receive the encoded video data together with other data, such as encoded audio data and / or auxiliary data streams, that may be transferred to respective using entities (not shown). Receiver 302 may separate the encoded video sequence from other data. To prevent network jitter, buffer memory 303 may be coupled between receiver 302 and entropy decoder / parser 304 (hereinafter “parser”). Buffer memory 303 may not be necessary and may be made small when receiver 302 receives data from a storage / transfer device having sufficient bandwidth and controllability or from a synchronous network. Buffer memory 303 may be necessary and may be relatively large and advantageously may be of an adaptable size for use in a best-effort packet network such as the Internet.

[0024] Video decoder 300 may include a parser 304 that reconstructs symbol 313 from an entropy-coded video sequence. The categories of these symbols include information used to manage the operation of decoder 300 and potentially include information for controlling a rendering device, such as display 312, which is not an essential part of the decoder but can be coupled to the decoder. The control information for the rendering device may be in the form of supplementary enhancement information (SEI message) or a video user-ability information (VUI) parameter set fragment (not shown). Parser 304 may perform syntax analysis / entropy decoding on the received coded video sequence. The coding of the coded video sequence can conform to a video coding technology or standard and can follow principles well-known to those skilled in the art, including variable-length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. Parser 304 may extract a set of subgroup parameters for at least one subgroup of pixels in the video decoder from the coded video sequence based on at least one parameter corresponding to a group. The subgroups can include picture groups (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. The entropy decoder / parser may also extract information such as transform coefficients, quantization parameter values, motion vectors, etc. from the coded video sequence.

[0025] Parser 304 may perform entropy decoding / syntax analysis operations on the video sequence received from buffer memory 303 to create symbol 313. Parser 304 may receive the encoded data and selectively decode a specific symbol 313. Further, parser 304 may determine whether to provide a specific symbol 313 to motion compensation prediction unit 306, scaler / inverse transform unit 305, intra prediction unit 307, or loop filter 311.

[0026] The reconstruction of symbol 313 can involve multiple different units depending on the type of the coded video picture or a part thereof (e.g., inter-picture and intra-picture, inter-block and intra-block) and other factors. Which unit and how it is involved can be controlled by subgroup control information syntax-analyzed from the coded video sequence by parser 304. Such a flow of subgroup control information between parser 304 and the following multiple units is not shown for clarity.

[0027] In addition to the function blocks already described, 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 interact closely with each other and can at least partially be integrated with each other. However, for the purpose of describing the disclosed subject matter, the conceptual subdivision into the following functional units is appropriate.

[0028] The first unit is the scaler / inverse transform unit 305. The scaler / inverse transform unit 305 receives, as symbol 313, control information including the transform to be used, block size, quantization factor, quantization scaling matrix, etc., and the quantized transform coefficients from parser 304. The scaler / inverse transform unit 305 can output a block including sample values that can be input to aggregator 310.

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

[0030] In other cases, the output samples of the scaler / inverse transform unit 305 may relate to inter-coded, potentially motion-compensated blocks. In such cases, the motion compensation prediction unit 306 can access the reference picture memory 308 to retrieve the samples used for prediction. After motion-compensating the retrieved samples according to the symbols 313 related to the block, these samples can be added by the aggregator 310 to the output of the scaler / inverse transform unit to generate output sample information (in this case, called residual samples or a residual signal). The address in the reference picture memory from which the motion compensation unit retrieves the prediction samples can be controlled, for example, by the motion vectors available to the motion compensation unit in the form of symbols 313 that may have X, Y, and reference picture components. Motion compensation can also include interpolation of the sample values retrieved from the reference picture memory when an exact motion vector of sub-samples is in use, a motion vector prediction mechanism, etc.

[0031] The output samples of the aggregator 310 may be used by various loop filtering techniques in the loop filter unit 311. The video compression technique may include in-loop filter techniques that are included in the encoded video bitstream and are controlled by parameters made available to the loop filter unit 311 as symbols 313 from the parser 304, and that may depend on meta information obtained during the decoding of a previous part (in decoding order) of the coded picture or coded video sequence, and may also depend on pre-reconstructed and loop-filtered sample values.

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

[0033] Once a particular coded picture is fully reconstructed, it can be used as a reference picture for future prediction. When a coded picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the 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 the reconstruction of the next coded picture.

[0034] The video decoder 300 can perform a decoding operation according to a predetermined video compression technique that can be documented in a standard such as ITU-T Recommendation H.265. The encoded video sequence can conform to the syntax specified by the video compression technique or standard being used, in the sense that the encoded video sequence conforms to the syntax of the video compression technique or standard as specified in the video compression technique document or standard, particularly the profile document therein. It is also necessary for compliance that the complexity of the encoded video sequence be within the range limited by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstructed sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. In some cases, the limits set by the level can be further restricted by the specifications of the Hypothetical Reference Decoder (HRD) and the metadata for HRD buffer management signaled in the encoded video sequence.

[0035] In one embodiment, the receiver 302 can receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded 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 can be in the form of, for example, a temporal, spatial, or signal-to-noise ratio (SNR) enhancement layer, redundant slice, redundant picture, forward error correction code, etc.

[0036] FIG. 4 can be a functional block diagram of a video encoder 400 according to an embodiment of the present disclosure.

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

[0038] The video source 401 can provide a source video sequence to be encoded by the encoder (303) in the form of a digital video sample stream that can be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit...), any color space (e.g., BT.601 Y CrCB, RGB...), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media supply system, the video source 401 can be a storage device that stores pre-prepared videos. In a video conferencing system, the video source 401 can be a camera that captures local image information as a video sequence. The video data may be provided as a plurality of individual pictures that give the impression of movement when viewed in sequence. Each picture itself may be organized as a spatial array of pixels, and each pixel can include 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. In the following description, samples will be mainly described.

[0039] According to one embodiment, the encoder 400 can encode the pictures of the source video sequence in real time or under any other time constraints required by the application and compress them into the encoded video sequence 410. Implementing an appropriate coding rate is one of the functions of the controller 402. The controller controls other functional units as described below and is functionally coupled to these functional units. For clarity, the couplings are not shown. The parameters set by the controller can include rate control related parameters (picture skip, quantization, lambda value of rate distortion optimization techniques...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Since other functions of the controller 402 may relate to the video encoder 400 optimized for a specific system design, those skilled in the art can easily identify these functions.

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

[0041] The operation of the "local" decoder 406 can be similar to the operation of the "remote" decoder 300, which has already been described in detail above in connection with FIG. 3. However, referring briefly to FIG. 4 as well, since symbols are available and the encoding / decoding of the symbols into the coded video sequence by entropy encoder 408 and parser 304 can be reversible, the entropy decoding portion of decoder 300, including channel 301, receiver 302, buffer memory 303, and parser 304, may not be fully implemented in local decoder 406.

[0042] As can be seen, any decoder technology other than syntax analysis / entropy decoding existing in the decoder must necessarily exist in substantially the same functional form in the corresponding encoder. Since the description of the encoder technology is the reverse of the decoder technology described comprehensively, it can be omitted. More detailed descriptions are necessary only in specific areas and are provided below.

[0043] As part of its operation, source coder 403 may perform motion-compensated predictive coding, which predictively codes an input frame by referring to one or more pre-coded frames from a video sequence designated as a "reference frame". In this way, coding engine 407 codes the difference between a pixel block of the input frame and a pixel block of a reference frame that can be selected as a prediction reference for the input frame.

[0044] Local video decoder 406 can decode the coded video data of a frame that can be designated as a reference frame based on the symbols created by source coder 403. The operation of coding engine 407 can advantageously be an irreversible process. When the coded video data can be decoded by a video decoder (not shown in FIG. 4), the reconstructed video sequence may usually be a replica of the source video sequence with some errors. Local video decoder 406 can reproduce the decoding process that can be performed on the reference frame by the video decoder and store the reconstructed reference frame in reference picture memory 405, which can be, for example, a cache. In this way, encoder 400 can locally store a copy of the reconstructed reference frame having the same content (without transmission errors) as the reconstructed reference frame obtained by the remote video decoder.

[0045] The predictor 404 can perform a predictive search of the coding engine 407. That is, for a newly coded frame, the predictor 404 can search the reference picture memory 405 for sample data (as candidate reference pixel blocks), or specific metadata that can function as appropriate prediction criteria for the new picture, such as motion vectors of reference pictures, block shapes, etc. The predictor 404 can operate on a per sample block / pixel block basis to find appropriate prediction criteria. In some cases, the input picture may have prediction criteria drawn from a plurality of reference pictures stored in the reference picture memory 405 as determined by the search results obtained by the predictor 404.

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

[0047] The outputs of all the foregoing functional units may be entropy coded by the entropy coder 408. The entropy coder converts these symbols into a coded video sequence by losslessly compressing the symbols generated by various functional units according to techniques known to those skilled in the art, such as Huffman coding, variable length coding, arithmetic coding, etc.

[0048] The transmitter 409 can buffer the coded video sequence created by the entropy coder 408 for transmission via a communication channel 411, which can be a hardware / software link to a storage device that stores the encoded video data. The transmitter 409 may merge the coded video data from the source coder 403 with other data to be transmitted, such as coded audio data and / or an auxiliary data stream (the source of which is not shown).

[0049] Controller 402 may manage the operation of encoder 400. During coding, controller 402 can assign a specific coded picture type to each coded picture, which can affect the coding techniques applicable to each picture. For example, pictures are often likely to be assigned any of the following frame types.

[0050] An intra picture (I picture) can be coded and decoded without using any other frames in the sequence as a prediction source. Some video codecs allow different types of intra pictures, for example, including independent decoder refresh pictures. Those skilled in the art know the variations of I pictures and their respective uses and characteristics.

[0051] A predicted picture (P picture) can be coded and decoded by intra prediction or inter prediction using at most one motion vector and a reference index to predict the sample values of each block.

[0052] A bi-directionally predicted picture (B picture) can be coded and decoded by intra prediction or inter prediction using at most two motion vectors and reference indices to predict the sample values of each block. Similarly, multiple predicted pictures can use three or more reference pictures and related metadata for the reconstruction of a single block.

[0053] Source pictures are generally spatially subdivided into a plurality of sample blocks (e.g., blocks of 4×4, 8×8, 4×8 or 16×16 samples respectively) and may be coded block by block. The blocks may be coded predictively with reference to other (already coded) blocks determined by the coding assignment applied to each picture of the block. For example, blocks of an I picture may be coded non-predictively or may be coded predictively with reference to already coded blocks of the same picture (spatial prediction or intra prediction). Pixel blocks of a P picture may be coded non-predictively via spatial prediction or temporal prediction with reference to one pre-coded reference picture. Blocks of a B picture may be coded non-predictively via spatial prediction or temporal prediction with reference to one or two pre-coded reference pictures.

[0054] Encoder 400 may be, for example, a video coder and may perform coding operations according to a predetermined video coding technology or standard such as ITU-T Recommendation H.265. During operation, encoder 400 may perform various compression operations including predictive coding operations that utilize the temporal redundancy and spatial redundancy of the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technology or standard being used.

[0055] In one embodiment, transmitter 409 may transmit additional data along with the encoded video. 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, supplementary enhancement information (SEI) messages, visual user visibility information (VUI) parameter set fragments, and the like.

[0056] Figure 5 shows the intra prediction modes used in HEVC and JEM. To capture any edge direction shown in natural videos, the number of directional intra modes is extended from 33 to 65 as used in HEVC. The additional directional modes in JEM that are on top of HEVC are shown by the dotted arrows in Figure 5, and the Planar mode and DC mode remain the same. These more dense directional intra prediction modes are applied to all block sizes and for intra prediction of both luminance and chrominance. As shown in Figure 5, the directional intra prediction modes specified by the dotted arrows associated with odd intra prediction mode indices are called odd intra prediction modes. The directional intra prediction modes specified by the solid arrows associated with even intra prediction mode indices are called even intra prediction modes. In this specification, the directional intra prediction modes shown by solid or dotted arrows in Figure 5 are also referred to as angular modes.

[0057] In JEM, a total of 67 intra prediction modes are used for luminance intra prediction. To code the intra mode, a size-6 most probable mode (MPM) list is constructed based on the intra modes of adjacent blocks. If the intra mode is not in the MPM list, a flag indicating whether the intra mode belongs to the selected mode is signaled. In JEM-3.0, there are 16 selected modes, which are uniformly selected for every 4 angular modes. In JVET-D0114 and JVET-G0060, 16 secondary MPMs are derived to replace the uniformly selected modes.

[0058] Figure 6 shows the N reference layers used for intra directivity modes. There are block unit 611, segment A601, segment B602, segment C603, segment D604, segment E605, segment F606, the first reference layer 610, the second reference layer 609, the third reference layer 608, and the fourth reference layer 607.

[0059] In both HEVC and JEM, and in other standards such as H.264 / AVC, the reference samples currently used for prediction of a block are restricted to the closest reference line (row or column). In the method of multiple reference line intra prediction, the number of candidate reference lines (rows or columns) increases from 1 (i.e., the closest one) to N for the intra directivity mode, where N is an integer greater than or equal to 1. FIG. 2 shows the concept of the multi-line intra directivity prediction method taking a 4×4 prediction unit (PU) as an example. In the intra directivity mode, one of the N reference layers can be arbitrarily selected to generate a predictor. In other words, the predictor p(x,y) is generated from one of the reference samples S1, S2…SN. A flag indicating which reference layer is selected for the intra directivity mode is signaled. If N is set to 1, the intra directivity prediction method is the same as the conventional method of JEM2.0. In FIG. 6, the reference lines 610, 609, 608, 607 together with the top-left reference sample are composed of six segments 601, 602, 603, 604, 605, 606. In this specification, the reference layer is also referred to as a reference line. The coordinates of the top-left pixel within the current block unit are (0,0), and the top-left pixel of the first reference line is (-1,-1).

[0060] In JEM, for the luminance component, the adjacent samples used to generate intra prediction samples are filtered before the generation process. The filtering is controlled by the specified intra prediction mode and the transform block size. If the intra prediction mode is DC, or if the transform block size is equal to 4x4, the adjacent samples are not filtered. If the distance between the specified intra prediction mode and the vertical mode (or horizontal mode) is greater than a predefined threshold, the filtering process becomes effective. The [1,2,1] filter and the bilinear filter are used for filtering adjacent samples.

[0061] The position-dependent intra prediction combination (PDPC) method is an intra prediction method that calls for a combination of unfiltered boundary reference samples and HEVC-style intra prediction using filtered boundary reference samples. Each prediction sample pred[x][y] located at (x, y) is calculated as follows. pred[x][y]=(wL×R -1,y +wT×R x,-1 +wTL×R -1,-1 +(64 - wL - wT - wTL)×pred[x][y]+32)>>6 (Equation 2-1) Here, R x,-1 and R -1,y respectively represent the unfiltered reference samples located above and to the left of the current sample (x, y), and R -1,-1 represents the unfiltered reference sample located at the upper left corner of the current block. The weighting is calculated as follows. wT = 32>>((y<<1)>>shift) (Equation 2-2) wL = 32>>((x<<1)>>shift) (Equation 2-3) wTL = -(wL>>4)-(wT>>4) (Equation 2-4) shift=(log2(width)+log2(height)+2)>>2 (Equation 2-5)

[0062] Figure 7 shows a diagram 700 in which DC mode PDPC performs weighting (wL, wT, wTL) for the positions of (0, 0) and (1, 0) within one 4×4 block. If PDPC is applied to the DC intra mode, planar intra mode, horizontal intra mode, and vertical intra mode, additional boundary filters such as, for example, the HEVC DC mode boundary filter or the horizontal / vertical mode edge filter are not necessary. Figure 7 shows the definitions of the reference samples R x,-1 , R -1,y and R -1,-1 for PDPC applied to the upper right diagonal mode. The prediction sample pred(x’, y’) is located at (x’, y’) within the prediction block. The coordinate x of the reference sample R x,-1 is given by x = x’ + y’ + 1, and the reference sample R-1,y The coordinate y is similarly given by y = x’ + y’ + 1.

[0063] FIG. 8 shows a local illumination compensation (LIC) diagram 800, which is based on a linear model of illumination change and uses scaling factor a and offset b. Then, for each of the coding units (CUs) coded in inter mode, it is adaptively enabled or disabled.

[0064] When LIC is applied to a CU, the least squares error method is used to derive parameters a and b using the adjacent samples of the current CU and their corresponding reference samples. More specifically, as shown in FIG. 8, the subsampled (2:1 subsampling) adjacent samples of the CU and the corresponding samples in the reference picture (identified by the motion information of the current CU or sub-CU) are used. The IC parameters are derived and applied separately for each prediction direction.

[0065] When a CU is coded in merge mode, the LIC flag is copied from the adjacent block in a similar way as the copy of the motion information in merge mode, and otherwise, an LIC flag indicating whether LIC is applied or not is signaled to the CU.

[0066] FIG. 9A shows an intra prediction mode 900 used in HEVC. There are a total of 35 intra prediction modes in HEVC, among which mode 10 is the horizontal mode, mode 26 is the vertical mode, and modes 2, 18, and 34 are the diagonal modes. The intra prediction modes are signaled by three most probable modes (MPMs) and the remaining 32 modes.

[0067] FIG. 9B shows that there are a total of 87 intra prediction modes in an embodiment of VVC, where mode 18 is the horizontal mode, mode 50 is the vertical mode, and modes 2, 34, and 66 are the diagonal modes. Modes -1 to -10 and modes 67 to 76 are called wide-angle intra prediction (WAIP) modes.

[0068] According to the PDPC method, the predicted sample pred(x, y) at the position (x, y) is predicted using the intra prediction mode (DC, planar, angular) and the linear combination of reference samples.

[0069] pred(x,y)=(wL×R -1,y +wT×R x,-1 -wTL×R -1,-1 +(64 - wL - wT + wTL)×pred(x,y)+32)>>6 Here, R x,-1 and R -1,y represent the reference samples located above and to the left of the current sample (x, y), respectively, and R -1,-1 represents the reference sample located at the upper left corner of the current block.

[0070] In the case of the DC mode, for a block with width and height dimensions, the weighting is calculated as follows.

[0071] wT = 32>>((y<<1)>>nScale), wL = 32>>((x<<1)>>nScale), wTL=(wL>>4)+(wT>>4) Here, nScale=(log2(width)-2 + log2(height)-2 + 2)>>2, wT represents the weighting coefficient of the reference sample located on the above - mentioned reference line having the same horizontal coordinate, wL represents the weighting coefficient of the reference sample located on the left - hand reference line having the same vertical coordinate, wTL represents the weighting coefficient of the reference sample at the upper left of the current block, nScale specifies the rate at which the weighting coefficient decreases along the axis (wL decreases from left to right or wT decreases from top to bottom), that is, the decrease rate of the weighting coefficient. In the current design, the decrease rate of the weighting coefficient is the same along the X - axis (from left to right) and the Y - axis (from top to bottom). And 32 represents the initial weighting coefficient of adjacent samples, and the initial weighting coefficient is also the weighting of the upper (left or upper left) sample assigned to the upper left sample of the current CB. The weighting coefficient of adjacent samples in the PDPC process needs to be less than or equal to this initial weighting coefficient.

[0072] In the planar mode, wTL = 0; in the horizontal mode, wTL = wT; and in the vertical mode, wTL = wL. The weighting of PDPC can be calculated using only addition and shift. The value of pred(x,y) can be calculated in one step using Equation 1.

[0073] FIG. 10 shows a simplified block-style workflow diagram 1000 of exemplary view-dependent processing in an omnidirectional media application format (OMAF) that can enable 360-degree virtual reality (VR360) streaming described in the OMAF.

[0074] In the acquisition block 1001, video data A such as a plurality of images and audio data at the same time instance is acquired if the image data can represent a scene within VR360. In the processing block 1003, image B at the same time instance is processed by one or more of stitching, mapping to a picture projected with respect to one or more virtual reality (VR) angles or other angles / views, and packing for each region. i Furthermore, metadata indicating either such processed information or other information can be created to assist in the distribution and rendering of the process.

[0075] Regarding data D, in the image encoding block 1005, the projected picture is encoded into data E i and configured as a media file with view-independent streaming. In the video encoding block 1004, the video picture is encoded as data E, for example, as a single-layer bitstream. v Regarding data B a in the audio encoding block 1002, the audio data can also be encoded into data E a as well.

[0076] Data E a , E v and E i, the entire coded bitstream F i and / or F can be stored in a (Content Delivery Network (CDN) / cloud) server, and usually, in a delivery block 1007, etc., it can be completely transmitted to an OMAF player 1020, and, regarding various metadata such as the angle at which a user is looking at the device's viewpoint specification through a VR image device from a head / tracking block 1008, file playback, orientation / viewpoint metadata, at least one area of the decoded picture corresponding to the current viewpoint can be rendered to the user in a display block 1016, and can be completely decoded by a decoder. A prominent feature of VR360 is that only one viewpoint can be displayed at any given time, and such a feature can be utilized to improve the performance of an omni-directional video system by selectively delivering according to the user's viewpoint (or any other arbitrary criterion such as time-domain metadata of a recommended viewpoint). For example, according to an exemplary embodiment, viewpoint-dependent delivery can be enabled by tile-based video coding.

[0077] Similar to the encoding block described above, an OMAF player 1020 according to an exemplary embodiment similarly reverses one or more aspects of such encoding regarding the decapsulation of one or more data F' and / or F' i and metadata files / segments, decodes audio data E' in an audio decoding block 1010 i video data E' in a video decoding block 1013 v image data E' in an image decoding block 1014 i to proceed with the audio rendering of data B' in an audio rendering block 1011 a and proceed with the image rendering of data D' in an image rendering block 1015, thereby, in a VR360 format according to various metadata such as orientation / viewpoint metadata, display data A' in a display block 1016 iIt is possible to output the audio data A’s with the loudspeaker / headphone lock 1012. Various metadata can affect one of the data decoding and rendering processes according to various tracks, languages, qualities, views that can be selected by or for the user of the OMAF player 1020. It should be understood that the order of the processes described herein is shown for exemplary embodiments and that the processes may be carried out in other orders according to other exemplary embodiments.

[0078] FIG. 11 shows a simplified block-style content flow process diagram 1100 of (encoded) point cloud data having view position and angle-dependent processing of point cloud data (referred to herein as “V-PCC”) for 6-degree-of-freedom media capture / generation / (decode) coding / rendering / display. The features described may be used separately or in combination in any order, and among the elements shown, in particular the elements for encoding and decoding can be carried out by a processing circuit (e.g., one or more processors or one or more integrated circuits), and it should be understood that one or more processors can execute a program stored on a non-transitory computer-readable medium according to an exemplary embodiment.

[0079] Diagram 1100 shows an exemplary embodiment of streaming encoded point cloud data according to V-PCC.

[0080] In the volume data acquisition block 1101, a real-world visual scene or a computer-generated visual scene (or a combination thereof) can be captured by a set of camera devices or synthesized as volume data by a computer, and the volume data, which can have any format, can be converted into (quantized) point cloud data format through image processing in the point cloud conversion block 1102. For example, according to an exemplary embodiment, the data from the volume data can be area data for each area data that has been converted into some of the points of the point cloud by subtracting one or more of the values described below from the volume data and any related data to the desired point cloud format. According to an exemplary embodiment, the volume data may be a 3D data set of 2D images, such as slices where 2D projections of the 3D data set can be performed. According to an exemplary embodiment, the point cloud data format includes representations of data points in one or more different spaces, can be used to represent volume data, and can provide improvements in terms of sampling and data compression, for example, with respect to temporal redundancy. For example, point cloud data in the x, y, z format represents, for each of the plurality of points of the point cloud data, color values (e.g., RGB), luminance, intensity, etc., and can be used together with progressive decoding, polygon meshes, direct rendering, and octree 3D representations of 2D quad-tree data.

[0081] In the projection to image block 1103, the acquired point cloud data can 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 be composed of attributes, geometry, occupancy maps, and other metadata used for the reconstruction of the point cloud data by algorithms such as the painter's algorithm, ray casting algorithm, (3D) binary space partitioning algorithm, etc.

[0082] On the one hand, in the scene generator block 1109, the scene generator can generate some metadata used for rendering and displaying 6-degree-of-freedom (DoF) media, for example, according to the intention of the supervisor or the preferences of the user. Such 6DoF media may include 360VR such as 3D viewing of a scene by rotational changes on the 3D axes X, Y, and Z, in addition to an additional dimension that enables movement forward and backward, up and down, and left and right with respect to a virtual experience within or at least according to the point cloud encoded data. The scene description metadata defines one or more scenes composed of the encoded point cloud data and other media data including VR360, light field, audio, etc., and can be provided to one or more cloud servers and / or the encapsulation / decapsulation processing of files / segments as shown in FIG. 11 and the related description.

[0083] When such a description represents an exemplary embodiment, after the video encoding block 1104 and the image encoding block 1105 similar to the above-described video and image encoding (as understood, audio encoding can also be provided as described above), in the file / segment encapsulation block 1106, the encoded point cloud data is configured as a media file for file playback or a sequence of an initialization segment and a media segment according to a specific media container file format such as one or more video container formats, and the process is performed, especially for use with DASH described below. The file container can also include the scene description metadata from the scene generator block 1109, etc., in the file or segment.

[0084] According to an exemplary embodiment, a file is encapsulated according to scene description metadata to include, in 6DoF media, at least one view position and at least one or more angular views at that / those view position(s), so as to be transmitted based on a request in response to user or creator input. Further, according to an exemplary embodiment, segments of such a file may include one or more portions of such a file, such as a portion of 6DoF media that shows a single viewpoint and an angle thereat one or more times, but these are merely exemplary embodiments and may be changed according to various conditions such as network, user, creator capabilities and input.

[0085] According to an exemplary embodiment, point cloud data is divided into a plurality of 2D / 3D regions that are independently encoded, such as in one or more of video encoding block 1104 and image encoding block 1105. Next, in file / segment encapsulation block 1106, each independently encoded partition of the point cloud data can be encapsulated as a track within a file and / or segment. According to an exemplary embodiment, each point cloud track and / or metadata track may include some metadata useful for view position / angle dependent processing.

[0086] According to an exemplary embodiment, metadata useful for view position / angle dependent processing, such as metadata included in a file and / or segment encapsulated with respect to a file / segment encapsulation block, includes layout information of an indexed 2D / 3D partition, (dynamic) mapping information associating a 3D volume partition with one or more 2D partitions (e.g., any of tiles / tile groups / slices / sub-pictures), 3D positions of each 3D partition on a 6DoF coordinate system, a list of representative view positions / angles, a list of selected view positions / angles corresponding to a 3D volume partition, indexes of 2D / 3D partitions corresponding to the selected view positions / angles, quality (rank) information of each 2D / 3D partition, for example, one or more of rendering information of each 2D / 3D partition according to each view position / angle. When requested by a user of the V-PCC player or instructed by a content creator for users of the V-PCC player, calling such metadata can enable more efficient processing for specific portions of the desired 6DoF media with respect to such metadata, whereby the V-PCC player can focus on specific portions of the media and deliver higher quality images than other portions instead of delivering unused portions of the 6DoF media.

[0087] For example, in the cloud server block 1107, from the file / segment encapsulation block 1106, a file or one or more segments of the file can be directly delivered to either the V-PCC player 1125 or the cloud server using a delivery mechanism (e.g., by Dynamic Adaptive Streaming over HTTP (DASH)). In the cloud server block 1107, the cloud server can extract one or more tracks and / or one or more specific 2D / 3D partitions from the file, and can merge multiple encoded point cloud data into one data.

[0088] According to data such as the position / view angle tracking block 1108, when the current view position and angle are defined in a 6DoF coordinate system in the client system, in the cloud server block 1107, the view position / angle metadata can be distributed from the file / segment encapsulation block 1106 or processed from files or segments already existing in the cloud server in other ways, whereby the cloud server can extract appropriate partitions from the stored files and, for example, merge them (if necessary) according to the metadata from a client system having a V-PCC player 1125, and the extracted data can be distributed to the client as files or segments.

[0089] Regarding such data, in the file / segment decapsulation block 1115, the file decapsulator processes the file or the received segment, extracts the encoded bitstream, parses the metadata, and then decodes the encoded point cloud data in the video decoding block and the image decoding block to reconstruct the point cloud data in the point cloud reconstruction block 1112, and the reconstructed point cloud data can be displayed in the display block 1114 and / or can first be configured in the scene construction block 1113 according to one or more various scene descriptions regarding the scene description data according to the scene generator block 1109.

[0090] Considering the above, such an exemplary V-PCC flow represents an advantage over the V-PCC standard, which includes one or more of the partitioning ability for a plurality of described 2D / 3D areas, the ability to assemble compressed domain of the coded 2D / 3D partitions into a single consistent coded video bitstream, and the ability to extract the coded 2D / 3D bitstream of the coded pictures into a consistent coded bitstream, and the support for such a V-PCC system is further improved by including the formation of a container for the VVC bitstream that supports a mechanism carrying one or more of the above-described metadata.

[0091] From this perspective, and according to the exemplary embodiments further described below, the term "mesh" refers to the configuration of one or more polygons that describe the surface of a volume object. Each polygon is defined by vertices in 3D space and information called connectivity information that indicates how the vertices are connected. Optionally, vertex attributes such as color, normal, etc. can be associated with the mesh vertices. By using mapping information that parameterizes the mesh within a 2D attribute map, attributes can also be associated with the surface of the mesh. Such a mapping can be described 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. According to an exemplary embodiment, such information can be used for various purposes such as texture mapping, shading, etc.

[0092] However, since the dynamic mesh sequence may consist of a large amount of information that changes over time, it may require a large amount of data. Therefore, an efficient compression technique is needed to store and transmit such content. Mesh compression standards such as IC, MESHGRID, and FAMC were previously developed by MPEG to handle dynamic meshes with constant connectivity, time-varying geometry, and vertex attributes. However, these standards do not consider time-varying attribute maps and connectivity information. Usually, DCC (Digital Content Creation) tools generate such dynamic meshes. On the other hand, generating a constantly connected dynamic mesh, especially under real-time constraints, is difficult for volume acquisition technology. This type of content is not supported by existing standards. According to the exemplary embodiments herein, aspects of a new mesh compression standard that directly processes dynamic meshes with time-varying connectivity information and optionally time-varying attribute maps are described, and this standard targets lossy compression and lossless compression for various applications such as real-time communication, storage, free viewpoint video, AR, VR, etc. Functionalities such as random access and scalable / progressive coding are also considered.

[0093] Figure 12 represents an exemplary framework 1200 for dynamic mesh compression, such as a 2D atlas sampling-based method. Each frame of the input mesh 1201 can be preprocessed by a series of operations such as tracking, remeshing, parameterization, voxelization, etc. Note that these operations may be performed only by the encoder and may not be part of the decoding process, which means that such a possibility can be signaled in the metadata by a flag indicating 0 for the case of only the encoder and 1 for other cases. Then, a mesh 1202 with a 2D UV atlas can be obtained, and each vertex of the mesh has one or more associated UV coordinates in the 2D atlas. Next, by sampling in the 2D atlas, the mesh can be converted into a plurality of maps including a geometry map and an attribute map. Next, these 2D maps can be encoded by a video / image codec such as HEVC, VVC, AV1, AVS3, etc. On the decoder 1203 side, the mesh can be reconstructed from the decoded 2D maps. Any post-processing and filtering can also be applied to the reconstructed mesh 1204. Note that for the purpose of 3D mesh reconstruction, other metadata may be signaled to the decoder side. Note that the chart boundary information including the uv coordinates and xyz coordinates of the boundary vertices can be predicted, quantized, and entropy coded in the bitstream. The quantization step size can be set on the encoder side to trade off between quality and bitrate.

[0094] In some embodiments, a 3D mesh can be divided into several segments (or patches / charts), and according to an exemplary embodiment, one or more 3D mesh segments may be considered as a "3D mesh". Each segment is composed of a set of connected vertices associated with geometry, attributes, and connectivity information. As shown in Example 1300 of FIG. 13, in the UV parameterization process 1302 of mapping from a 3D mesh segment to a 2D chart such as the 2D UV atlas 1202 block described above, one or more mesh segments 1301 are mapped to a 2D chart 1303 within the 2D UV atlas 1304. Each vertex (v n ) within the mesh segment is assigned 2D UV coordinates within the 2D UV atlas. Note that the vertices (v n ) within the 2D chart form the connected components of their corresponding 3D chart. The geometry, attributes, and connectivity information of each vertex can also be inherited from their corresponding 3D vertices. For example, information indicating that vertex v4 is directly connected to vertices v0, v5, v1, and v3 can be shown, and the information of each other vertex can be shown similarly. Further, according to an exemplary embodiment, such a 2D texture mesh can further show information such as color information for each patch, for example, for each patch of each triangle (v2, v5, v3) as one "patch", as shown with respect to at least the UV parametric features of Example 1600 of FIG. 16. Also refer to Example 1700 of FIG. 17 showing a diagram of boundary vertices in the 2D chart.

[0095] For example, in addition to the features of Example 1300 of FIG. 13, refer to Example 1400 of FIG. 14 where the 3D mesh segment 1301 can also be mapped to a plurality of separate 2D charts 1401 and 1402. In this case, a 3D vertex may correspond to a plurality of vertices in the 2D UV atlas. As shown in FIG. 14, in the 2D UV atlas, the same 3D mesh segment is mapped to a plurality of 2D charts instead of a single chart as in FIG. 13. For example, 3D vertices v1 and v4 each have two 2D correspondence relations v1, v 1’ and v4, v 4’It has. Therefore, as shown in FIG. 14 where each chart may include a plurality (usually three or more) of vertices associated with 3D geometry, attributes, and connectivity information, the normal 2D UV atlas of the 3D mesh may be composed of a plurality of charts.

[0096] FIG. 15 shows an example 1500 that shows a derived triangulation within a chart having boundary vertices B0, B1, B2, B3, B4, B5, B6, B7. Given such information, any triangulation method can be applied to create connectivity between vertices (including boundary vertices and sampled vertices). For example, for each vertex, find the two closest vertices. Alternatively, for all vertices, continuously generate triangles until the minimum number of triangles is reached after a set number of trials. As shown in example 1500, there are various regularly shaped repeating triangles and various irregular triangles, and the irregular triangles usually have their own unique dimensions that are closest to the boundary vertices and may or may not be the same as any other triangle. Connectivity information can also be reconstructed by explicit signaling. According to an exemplary embodiment, if a polygon cannot be restored by implicit rules, the encoder can signal the connectivity information within the bitstream.

[0097] Looking at the patches described above, example 1500 can represent a patch such as the patch formed by vertices v3, v2, v5 shown in either FIG. 14 or 15, for example.

[0098] Boundary vertices B0, B1, B2, B3, B4, B5, B6, B7 are defined in 2D UV space. As shown in FIG. 15, the vertices represented by black circles are boundary vertices because they are on the boundary edges of the connected component (patch / chart). The boundary edges can be determined by checking whether the edge appears in only one triangle. According to an exemplary embodiment, geometry information, such as 3D XYZ coordinates in the current 2D UV parametric form, and information about the boundary vertices in 2D UV coordinates are important and should be signaled in the bitstream.

[0099] For example, as shown in FIG. 14, when the 3D boundary vertices correspond to a plurality of vertices of the 2D UV atlas, the mapping from 3D XUZ to 2D UV can be one-to-many. Therefore, a UV-to-XYZ (also called UV2XYZ) index indicating the mapping function can be signaled. UV2XYZ may be a 1D array of indices that associate each 2D UV vertex with a 3D XYZ vertex.

[0100] According to an exemplary embodiment, to efficiently represent a mesh signal, a subset of mesh vertices can first be coded together with the connectivity information between the mesh vertices. In the original mesh, the connections between these vertices may not exist because they are subsampled from the original mesh. Since there are various ways to signal the connectivity information between vertices, such a subset is called the base mesh or base vertices.

[0101] However, other vertices can be predicted by applying interpolation between two or more already decoded mesh vertices. Since predictor vertices have a geometry position along the edge of two connected existing vertices, the geometry information of the predictor can be calculated based on the adjacent decoded vertices. In some cases, the displacement vector or prediction error from the vertex to be coded to the vertex predictor needs to be further coded. For example, referring to Example 1800 in FIG. 18, an example of such edge-based vertex prediction is shown. More specifically, it shows vertex geometry prediction using intra prediction by extrapolation by expanding a triangle into a parallelogram as shown on the left, and interpolation by weighted average of two existing vertices as shown on the right. After decoding the base vertices (i.e., the solid-line triangle 1801 on the left in FIG. 18), interpolation between these base vertices can be performed along the connected edges. For example, the midpoint of each edge can be generated as a predictor. Thus, the geometry position of these interpolated points is the (weighted) average of two adjacent decoded vertices (the dotted line 1802 on the left in FIG. 18). If there are multiple intermediate points between two already decoded vertices, it can be executed in a similar way. Thus, the actual vertex to be coded can be reconstructed by adding a displacement vector to the predictor (the middle part of FIG. 7). Even after decoding these additional vertices, the connection between the newly decoded vertices and the existing base vertices is maintained. Also, the connection between the newly decoded vertices can be further established. By connecting these newly decoded vertices 1803 and the base vertices together, more intermediate vertex predictors can be generated along the new edges together with the base vertices (the right side of FIG. 7). Thus, more actual vertices to be decoded exist together with the relevant displacement vectors.

[0102] According to an exemplary embodiment, the mesh vertices of the mesh frame 1902 can also be predicted from the decoded vertices of the pre-coded mesh frame 1901. This prediction mechanism is called inter prediction. An example of mesh geometry inter prediction is shown in example 1900 of FIG. 19 showing vertex geometry prediction using inter prediction (vertices of a previous mesh frame serve as predictors for vertices of the current frame). In some cases, a displacement vector or prediction error from the vertex to be coded to the vertex predictor needs to be further coded.

[0103] According to an exemplary embodiment, multiple methods are implemented for dynamic mesh compression and are part of the edge-based vertex prediction framework described above, first coding a base mesh and then predicting more additional vertices based on connectivity information from the edges of the base mesh. Note that these can be applied individually or in any combination.

[0104] For example, consider an exemplary flowchart 2000 of vertex grouping in the prediction mode of FIG. 20. Referring to FIG. 15 for example, vertices within a mesh can be obtained at S201 and divided into different groups for prediction purposes at S202. In one example, the division is performed using patch / chart partitioning at S204 as described above. In another example, the division is performed at each patch / chart partitioning S205. The decision S203 on whether to proceed to S204 or S205 can be signaled by a flag or the like. In the case of 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 can use a different prediction mode. In this specification, a "prediction mode" can be considered as a specific mode used by a decoder to perform prediction of video content including a patch, and the prediction mode can be categorically divided into an intra prediction mode and an inter prediction mode, and within each category, there may be different specific modes selected by the decoder. According to an exemplary embodiment, in each group, a "prediction group in this specification" may be a group that shares the same specific mode (e.g., an angular mode at a specific angle) or the same categorical prediction mode (e.g., all are in the intra prediction mode but can predict at different angles). Such grouping at S206 can be assigned at different levels by determining the respective number of vertices involved for each group. According to an exemplary embodiment, for example, the same prediction mode can be assigned to every 64, 32, or 16 vertices following the scan order within a patch / chart, and different prediction modes can be assigned to other vertices. For each group, the prediction mode can be either the intra prediction mode or the inter prediction mode. This can be signaled or assigned.According to the exemplary flowchart 2000, in S207, by checking whether the flag of the mesh frame or mesh slice indicates an intra type, if it is determined that the mesh frame or mesh slice is of the intra type, all groups of vertices within that mesh frame or mesh slice need to use the intra prediction mode. Otherwise, in S208, for each group of all vertices within that mesh frame or mesh slice, either the intra prediction mode or the inter prediction mode can be selected.

[0105] Furthermore, when a group of mesh vertices uses the intra prediction mode, those vertices can only be predicted by using the pre-coded vertices within the same sub-partition of the current mesh. According to an exemplary embodiment, the sub-partition may, in some cases, be the current mesh itself. When a group of mesh vertices uses the inter prediction mode, those vertices can only be predicted by using the pre-coded vertices from another mesh frame according to an exemplary embodiment. Each of the above-mentioned information can be determined and signaled by a flag or the like. The above prediction features occur in S210, and the results and signaling of the above prediction can occur in S211.

[0106] According to an exemplary embodiment, for each vertex in a group of vertices in the exemplary flowchart 2000 and the flowchart 2100 described below, after prediction, the residual becomes a 3D displacement vector, indicating the shift from the current vertex to its predictor. The residuals of the group of vertices need to be further compressed. In one example, the transformation in S211, along with its signaling, can be applied to the residuals of the vertex group before entropy coding. The following methods can be implemented to process the coding of a group of displacement vectors. For example, in one method, a situation where a group of displacement vectors, some displacement vectors, or their components have only zero values is appropriately signaled. In another embodiment, a flag can be signaled for whether each displacement vector has non-zero components, and if not, the coding of all components of this displacement vector can be skipped. Further, in another embodiment, a flag can be signaled for whether each group of displacement vectors has non-zero vectors, and if not, the coding of all displacement vectors within this group can be skipped. Further, in another embodiment, a flag can be signaled for whether each component of each group of displacement vectors has non-zero vectors, and if not, the coding of this component of all displacement vectors within this group can be skipped. Further, in another embodiment, there may be a signal indicating a situation where it is necessary to perform a transformation on a group of displacement vectors or the components of this group of displacement vectors. If not necessary, the transformation can be skipped, and quantization / entropy coding can be directly applied to this group or the components of this group. Further, in another embodiment, a flag can be signaled for whether it is necessary to perform a transformation on each group of displacement vectors. If not necessary, the transformation coding of all displacement vectors within this group can be skipped. Further, in another embodiment, a flag can be signaled for whether it is necessary to perform a transformation on each component of each group of displacement vectors. If not necessary, the transformation coding of this component of all displacement vectors within this group can be skipped.The above-described embodiments of this paragraph regarding the processing of vertex prediction residuals can also be implemented in parallel on different patches respectively.

[0107] FIG. 21 shows an exemplary flowchart 2100. In S221, a mesh frame encoded as an entire data unit can be obtained, which means that all vertices or attributes of the mesh frame can have a correlation relationship among them. Alternatively, depending on the determination in S222, in S223, the mesh frame can be divided into smaller independent sub-partitions similar in concept to slices or tiles of a 2D video or image. In S224, a prediction type can be assigned to the encoded mesh frame or the encoded mesh sub-partition. Possible prediction types include an intra-coding type and an inter-coding type. In the case of the intra-coding type, in S225, only prediction based on the reconstructed parts of the same frame or slice is permitted. On the other hand, in the case of the inter-prediction type, in S225, in addition to intra-mesh frame prediction, prediction based on a pre-encoded mesh frame is permitted. Further, the inter-prediction type can be classified into more sub-types such as a P type or a B type. In the P type, only one predictor can be used for prediction purposes, but in the B type, two predictors from two pre-encoded mesh frames can be used to generate a predictor. A weighted average of the two predictors may be an example. When the mesh frame is encoded as a whole, the frame can be regarded as an intra- or inter-coded mesh frame. In the case of an inter-mesh frame, the P or B type can be further identified via signaling. Alternatively, when the mesh frame is further divided and encoded within the frame, in S224, a prediction type is assigned to each of the sub-partitions. Each of the above-described information can be determined and signaled by a flag or the like. Similar to S210 and S211 in FIG. 20, the above prediction features can occur in S226, and the results and signaling of the above prediction can occur in S227.

[0108] Therefore, since the dynamic mesh sequence may be composed of a large amount of information that changes over time, it may require a large amount of data. Thus, efficient compression techniques are required to store and transmit such content. The features described above with respect to FIGS. 20 and 21 represent such an efficiency improvement by enabling at least an improvement in the 3D position prediction of mesh vertices by using pre-decoded vertices (intra prediction) within the same mesh frame or vertices from a previous coded mesh frame (inter prediction).

[0109] Furthermore, in an exemplary embodiment, a displacement vector of layer 2302 can be generated based on the reconstructed vertices of the layer preceding layer 2302. Assuming that the index of the current layer 2302 is T, the predictor of the vertices of layer 2303T+1 is generated based on the reconstructed vertices of the current layer 2302. An example of such a layer-based prediction structure is shown in example 2300 of FIG. 23, which shows progressive vertex prediction using reconstruction-based vertex prediction, i.e., edge-based interpolation, and the predictor is generated based on pre-decoded vertices rather than predictor vertices.

[0110] For such an example 2300, referring to the exemplary flowchart 2200 of FIG. 22, since the interpolated vertices on the current layer are prediction values, such values need to be reconstructed before being used to generate vertex predictors on the next layer. This is done by encoding the base mesh at S231, performing vertex prediction at S232, and then adding the decoded displacement vectors of the current layer to the predictors of vertices such as layer 2302 at S233. Next, at S235, the reconstructed vertices of this layer 2303 and all the decoded vertices of the previous layer, such as those with the addition of the vertex values of such a layer confirmed at S234, can be used to generate the predictor vertices of the next layer 2303. This process can also be summarized as follows. Let P[t](Vi) represent the predictor of vertex Vi on layer t, R[t](Vi) represent the reconstructed vertex Vi on layer t, D[t](Vi) represent the displacement vector of vertex Vi on layer t, and f(*) represent the predictor generator, and in particular, it is set to be able to represent the average of two existing vertices. Then, according to an exemplary embodiment, for each layer t, there is the following equation. P[t](Vi)=f(R[s|s<t](Vj),R[m|m<t](Vk)) Here, Vj and Vk are the reconstructed vertices of the previous layer. R[t](Vi)=P[t](Vi)+D[t](Vi) Equation (1)

[0111] Next, all the vertices within one mesh frame are divided into layers 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 equations, 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.

[0112] According to an exemplary embodiment, vertex prediction using the reconstructed vertices can be applied only to specific layers, for example, only to layer 0 and layer 1. In the case of other layers, vertex prediction can continue to be used without adding displacement vectors to the adjacent predictor vertices for reconstruction. Thereby, these other layers can be processed simultaneously without waiting to reconstruct the previous layer. 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 which layers (and subsequent layers thereof) do not use reconstruction-based vertex prediction.

[0113] In the case where the vertex predictor is the displacement vector generated by the reconstructed vertex, quantization can be applied without further performing a transformation such as a wavelet transform. In the case where the vertex predictor is the displacement vector generated by other predictor vertices, a transformation may be required, and quantization can be applied to the transformation coefficients of those displacement vectors.

[0114] Therefore, since the dynamic mesh sequence may be composed of a large amount of information that changes over time, it may require a large amount of data. Thus, efficient compression techniques are required to store and transmit such content. In the framework of the interpolation-based vertex prediction method described above, compressing the displacement vector is one of the important steps, which occupies a major part of the coded bitstream and is the focus of the present disclosure. For example, the features in FIG. 22 mitigate such problems by providing such compression.

[0115] Furthermore, similar to the other examples described above, and similar to those embodiments as well, since the dynamic mesh sequence may be composed of a large amount of information that changes over time, it may still require a large amount of data, and thus, an efficient compression technique is required to store and transmit such content. In the framework of the aforementioned 2D atlas sampling-based method, an important advantage can be achieved by inferring the connectivity information from the sampled vertices and boundary vertices on the decoder side. This is a major part of the decoding process and the focus of further examples described below.

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

[0117] As described above, any triangulation method can be applied to create the connectivity between vertices (including boundary vertices and sampled vertices). The same connectivity creation method is applied to charts that do not sample internal vertices, such as the internal vertices shown in Example 1500 of FIG. 15 and Example 2500 of FIG. 25 described further below. However, according to an exemplary embodiment, it can be signaled to use different triangulation methods for boundary vertices and sampled vertices.

[0118] For example, according to an exemplary embodiment, for every four adjacent points at any sampling position, it is determined whether the number of occupied points is 3 or more (examples of occupied points or non-occupied points are highlighted in FIG. 25 showing an occupancy map example 2500, where each circle represents an integer pixel in the occupancy map example 2500), and the connectivity of the triangles between the four points can be inferred by specific rules. For example, as shown in example 2400 of FIG. 24, if it is determined that 3 out of the 4 points are occupied, in the illustrated examples (2), (3), and (4), those points can be directly interconnected to form a triangle as in these examples, while if it is determined that all 4 points are occupied, as shown in example (1) of FIG. 24, two triangles can be formed using those points. Note that if the number of adjacent points is different, different rules can be applied. This process may be implemented over many points as further shown in FIG. 25. In this embodiment, the reconstructed mesh is a triangular mesh as in FIG. 24, and is an equilateral triangular mesh at least in the inner part of FIG. 25 (which is not determined to be signaled according to a regularity and can instead be encoded and decoded by inference rather than individual signaling), but is an irregular triangle in the surrounding area to be signaled individually.

[0119] To further reduce complexity and data processing, such an internal equilateral triangular quadrilateral mesh shown in FIG. 25 may be inferred as the quadrilateral mesh of example (1) in FIG. 24, thereby reducing the computational load as it infers a reduced number of internal square meshes instead of inferring the internal equilateral triangular mesh.

[0120] According to an exemplary embodiment, if it is determined that all 4 adjacent points are occupied, as in example (1) of FIG. 24, a quadrilateral mesh may be reconstructed.

[0121] From the above description, it can be inferred that, as shown in FIG. 25, it is shown that the reconstructed mesh of Example 2500 can be of a hybrid type, that is, some regions within the mesh frame generate triangular meshes, and other regions generate quadrilateral meshes. Some of the above triangular meshes may be regular compared to other triangular meshes therein, and some may be irregular like the meshes on the boundary, but not all of the meshes on the boundary need to be irregular.

[0122] According to an exemplary embodiment, such a type of connectivity can be signaled in a high-level syntax such as a sequence header, a slice header, etc.

[0123] As described above, the connectivity information can also be reconstructed by explicit signaling for, for example, triangular meshes of irregular shapes. That is, if it is determined that the polygon cannot be restored by implicit rules, the encoder can signal the connectivity information within the bitstream. According to an exemplary embodiment, the overhead of such explicit signaling can be reduced according to the boundary of the polygon. For example, as shown in Example 2500 of FIG. 25, the connectivity information of the triangle is signaled to be reconstructed by both an implicit rule following the normal Example 2400 of FIG. 24 that can be inferred and an explicit signaling for at least one of the irregularly shaped polygons shown on the mesh boundary of FIG. 25.

[0124] According to an embodiment, what is determined to be signaled is only the connectivity information between the boundary vertices and the sampled positions, but the connectivity information between the sampled positions themselves is inferred.

[0125] Also, in any embodiment, the connectivity information can be signaled by prediction so that only the difference from the inferred connectivity (as a prediction) from one mesh to another can be signaled within the bitstream.

[0126] According to an exemplary embodiment, the inferred orientation of a triangle (e.g., inferred clockwise or counterclockwise for each triangle) can be signaled for all charts in a high-level syntax such as a sequence header, a slice header, etc., or can be fixed (assumed) by an encoder and a decoder. The inferred orientation of a triangle can also be signaled in different ways for each chart.

[0127] Also, any reconstructed mesh may have a connectivity different from that of the original mesh. For example, the original mesh may be a triangular mesh, but the reconstructed mesh may be a polygon mesh (e.g., a quadrilateral mesh).

[0128] According to an exemplary embodiment, the connection information of any base vertex may not be signaled. Instead, the edges between the base vertices can be derived using the same algorithm on both the encoder side and the decoder side. For example, by checking how all the bottom-most vertices of Example 2500 are occupied, the coding can determine that such vertices are occupied as bases, and then the connection information of any base vertex may not be signaled. Instead, such information can be utilized by inferring to derive the edges between the base vertices using the same algorithm on both the encoder side and the decoder side. According to an exemplary embodiment, the interpolation of the predicted vertices of additional mesh vertices may be based on the derived edges of the base mesh.

[0129] According to an exemplary embodiment, a flag can be used to signal whether the connection information of a base vertex is signaled or derived, and such a flag can be signaled at different levels of the bitstream such as the sequence level, the frame level, etc.

[0130] According to an exemplary embodiment, first, the same algorithm is used on both the encoder side and the decoder side to derive the edges between the base vertices. Next, the difference between the derived edges and the actual edges is signaled by comparing with the original connectivity of the base mesh vertices. Thus, after decoding the difference, the original connectivity of the base vertices can be restored.

[0131] In one example, for a derived edge, if it is determined to be incorrect when compared with the original edge, such information can be signaled in the bitstream (by indicating the pair of vertices forming this edge), and for an original edge that is not derived, it can be signaled in the bitstream (by indicating the pair of vertices forming this edge). Further, the connectivity on the boundary edges and the vertex interpolation regarding the boundary edges can be performed separately from the internal vertices and edges.

[0132] Therefore, according to the exemplary embodiments described herein, the above-described technical problems can be advantageously improved by one or more of these technical solutions. For example, since a dynamic mesh sequence may be composed of a large amount of information that changes over time, it may require a large amount of data, and thus, the exemplary embodiments described herein at least represent an efficient compression technique for storing and transmitting such content.

[0133] The above-described technology can be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media, or can be implemented by one or more specially configured hardware processors. For example, FIG. 26 shows a computer system 2600 suitable for implementing a particular embodiment of the disclosed subject matter.

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

[0135] Instructions can be executed on various types of computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, game devices, Internet of Things devices, etc.

[0136] Regarding the computer system 2600, the components shown in FIG. 26 are essentially exemplary and are not intended to imply any limitation regarding the use or functional scope of the computer software implementing the embodiments of the present disclosure. The configuration of the components should not be construed as having any dependency or requirement regarding any one or combination of the components shown in the exemplary embodiment of the computer system 2600.

[0137] The computer system 2600 may include a specific human interface input device. Such a human interface input device can respond to input by one or more human users through, for example, tactile input (keystrokes, swipes, movements of a data glove, etc.), audio input (voice, applause, etc.), visual input (gestures, etc.), olfactory input (not shown). The human interface device can also be used to capture specific media that is not necessarily directly related to conscious human input, such as audio (speech, music, ambient sound, etc.), images (scanned images, photographic images obtained from a still image camera, etc.), video (2D video, 3D video including stereoscopic video, etc.).

[0138] The input human interface device may include one or more of a keyboard 2601, a mouse 2602, a trackpad 2603, a touch screen 2610, a joystick 2605, a microphone 2606, a scanner 2607, and a camera 2608 (only one of each is shown).

[0139] The computer system 2600 may further include certain human interface output devices. Such human interface output devices can stimulate the senses of one or more human users, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices include tactile output devices (for example, tactile feedback by the touch screen 2610 or the joystick 2605, but may also be a tactile feedback device that does not function as an input device), audio output devices (such as speakers 2609, headphones (not shown), etc.), visual output devices (regardless of whether each has touch screen input capabilities and tactile feedback capabilities, some include means such as stereographic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), and can output two-dimensional visual output or three-dimensional or higher-dimensional output, including screens 2610 such as CRT screens, LCD screens, plasma screens, and OLED screens), and a printer (not shown).

[0140] The computer system 2600 may further include human-accessible storage devices and associated media, such as a CD / DVD ROM / RW 2620 with a CD / DVD 2611 or similar media, a thumb drive 2622, and optical media including removable hard drives or solid state drives 2623, legacy magnetic media such as tapes and floppy disks (not shown), and dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown).

[0141] One of ordinary skill in the art should further understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not include a transmission medium, a carrier wave, or other transient signals.

[0142] Computer system 2600 may further include an interface 2699 to one or more communication networks 2698. Network 2698 can be, for example, a wireless, wired, or optical network. Network 2698 can further be a local, wide area, metropolitan, vehicular and industrial, real-time, delay tolerant network, etc. Examples of network 2698 include local area networks such as Ethernet and 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, and vehicular and industrial networks including CAN bus, etc. A particular network 2698 generally requires an external network interface adapter connected to a particular general-purpose data port or peripheral bus (2650 and 2651) (e.g., a USB port of computer system 2600). Other networks are generally integrated into the core of computer system 2600 by connecting 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 2698, computer system 2600 can communicate with other entities. Such communication can be, for example, unidirectional reception only (e.g., broadcast TV), unidirectional transmission only (e.g., from a CAN bus to a particular CAN bus device), or bidirectional using a local or wide area digital network to other computer systems. As described above, a particular protocol and protocol stack can be used for each of these networks and network interfaces.

[0143] The foregoing human interface device, human-accessible storage device, and network interface can be connected to the core 2640 of the computer system 2600.

[0144] The core 2640 can include one or more central processing units (CPUs) 2641, a graphics processing unit (GPU) 2642, a graphics adapter 2617, a dedicated programmable processing device in the form of a field programmable gate array (FPGA) 2643, a hardware accelerator 2644 for specific tasks, and the like. These devices may be connected via a system bus 2648 together with a read-only memory (ROM) 2645, a random access memory 2646, and an internal mass storage device 2647 such as an internal hard drive or SSD that is not accessible to the user. In some computer systems, the system bus 2648 is accessible in the form of one or more physical plugs, enabling expansion by additional CPUs, GPUs, and the like. Peripheral devices may be directly connected to the core system bus 2648 or may be connected via a peripheral bus 2649. Peripheral bus architectures include PCI, USB, and the like.

[0145] The CPU 2641, GPU 2642, FPGA 2643, and accelerator 2644 can, in combination, execute specific instructions that can configure the foregoing computer code. The computer code can be stored in the ROM 2645 or the RAM 2646. Transient data can also be stored in the RAM 2646, while persistent data can be stored, for example, in the internal mass storage device 2647. A cache memory that can be closely associated with one or more of the CPU 2641, GPU 2642, mass storage device 2647, ROM 2645, RAM 2646, etc. can be used to enable fast storage and retrieval for any memory device.

[0146] A computer-readable medium can have computer code for performing various computer-implemented operations. The medium and the computer code may be specially designed and constructed for the purposes of this disclosure, or they may be of the kinds available to and well known to those of ordinary skill in the computer software arts.

[0147] Rather than being limiting, and merely by way of example, a computer system having architecture 2600, specifically core 2640, can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied on one or more tangible computer-readable media. Such computer-readable media can be media associated with a mass storage device accessible to a user as described above, in addition to specific storage devices of core 2640 of a non-transitory nature, such as internal mass storage device 2647 or ROM 2645 within the core. The software implementing various embodiments of the present disclosure can be stored on such devices and executed by core 2640. The computer-readable media can include one or more memory devices or chips, depending on specific requirements. The software can cause core 2640, specifically a processor (including a CPU, GPU, FPGA, etc.) therein, to define a data structure stored in RAM 2646 and modify such data structure according to a process defined by the software, thereby executing a specific process or a specific portion of a specific process described herein. Additionally or alternatively, the computer system can provide functionality as a result of logic wired or otherwise embodied in a circuit (e.g., accelerator 2644) that operates instead of or in conjunction with software to execute a specific process or a specific portion of a specific process described herein. References to software can, if desired, include logic, and vice versa. References to computer-readable media can, if desired, include a circuit (such as an integrated circuit (IC)) that stores software for execution, a circuit that embodies logic for execution, or both. The present disclosure includes any suitable combination of hardware and software.

[0148] Although some exemplary embodiments have been described, there are changes, substitutions, and various alternative equivalents that are within the scope of the present disclosure. Thus, it will be understood by those skilled in the art that, although not explicitly shown or described herein, various systems and methods within the spirit and scope of the present disclosure can be devised to embody its principles.

Claims

1. Obtaining volume data of at least one three-dimensional (3D) visual content; Obtaining patches by dividing a plurality of 3D meshes from the volume data, wherein the patches include a plurality of vertices of at least one of the 3D meshes; Forming a prediction group including a subset of the plurality of vertices of the patch; Collectively signaling a prediction mode of the prediction group for a subset of the plurality of vertices of the patch, a video coding method comprising:

2. The subset includes a plurality of the vertices of a predetermined number, The predetermined number is any one of 64, 32, and 16, the video coding method according to claim 1.

3. Forming a second prediction group including a second subset of the plurality of vertices of the patch; Collectively signaling a second prediction mode of the second prediction group for a second subset of the plurality of vertices of the patch, further comprising: Both the step of signaling the prediction mode and the step of signaling the second prediction mode are performed based on determining whether to set at least one of a mesh frame and a mesh slice of at least one of the 3D meshes to an intra prediction mode, the video coding method according to claim 2.

4. Both the step of signaling the prediction mode and the step of signaling the second prediction mode are independently performed as either the intra prediction mode or the inter prediction mode based on determining not to set at least one of a mesh frame and a mesh slice of at least one of the 3D meshes to the intra prediction mode, the video coding method according to claim 3.

5. Further comprising signaling a 3D displacement vector indicating a shift from a current vertex among the plurality of vertices to a predictor position, the video coding method according to claim 1.

6. The step of signaling the 3D displacement vector includes signaling a plurality of flags, each of the plurality of flags indicating whether the 3D displacement vector includes a non-zero component for each of the subsets of the plurality of vertices, the video coding method according to claim 5.

7. The step of signaling the 3D displacement vector includes a step of signaling a group flag, and the group flag indicates whether the 3D displacement vector includes non-zero components for a group of a subset of the plurality of vertices. The video coding method according to claim 5.

8. The video coding method according to claim 7, further comprising a step of signaling a flag, wherein the flag indicates whether to perform a conversion on a group of a subset of the plurality of vertices.

9. The video coding method according to claim 7, further comprising a step of signaling a plurality of flags, each of the plurality of flags indicating whether to perform a conversion on each of the components of a group of a subset of the plurality of vertices.

10. The step of signaling the 3D displacement vector includes a step of signaling a plurality of flags, each of the plurality of flags indicating whether the component of the 3D displacement vector includes a non-zero vector for each of a subset of the plurality of vertices. The video coding method according to claim 5.

11. At least one memory configured to store computer program code; At least one processor configured to access the computer program code and operate according to the instructions of the computer program code, wherein the computer program code is acquisition code configured to cause at least one of the processors to acquire volume data of at least one three-dimensional (3D) visual content; is further acquisition code configured to cause at least one of the processors to acquire patches by dividing a plurality of 3D meshes from the volume data, the patches including a plurality of vertices of at least one of the 3D meshes; is formation code configured to cause at least one of the processors to form a prediction group including a subset of the plurality of vertices of the patches. A video coding device, including: signaling code configured to cause at least one of the processors to collectively signal prediction modes of the prediction groups for a subset of the plurality of vertices of the patch.

12. The subset includes a plurality of the vertices of a predetermined number, The video coding device according to claim 11, wherein the predetermined number is any one of 64, 32, and 16.

13. The formation code is further configured to cause at least one of the processors to form a second prediction group including a second subset of the plurality of vertices of the patch, The signaling code is further configured to cause at least one of the processors to collectively signal a second prediction mode of the second prediction group for a second subset of the plurality of vertices of the patch, The video coding device according to claim 12, wherein both the signaling of the prediction mode and the signaling of the second prediction mode are performed based on determining whether to set at least one of a mesh frame and a mesh slice of at least one of the 3D meshes to an intra prediction mode.

14. The video coding device according to claim 13, wherein both the signaling of the prediction mode and the signaling of the second prediction mode are independently performed as either the intra prediction mode or the inter prediction mode based on determining not to set at least one of a mesh frame and a mesh slice of at least one of the 3D meshes to the intra prediction mode.

15. The signaling code is further configured to cause at least one of the processors to signal a 3D displacement vector indicating a shift from a current vertex among the plurality of vertices to a predictor position.

16. The signaling of the 3D displacement vector includes signaling a plurality of flags, and each of the plurality of flags indicates whether the 3D displacement vector includes a non-zero component for each of the subsets of the plurality of vertices.

17. The signaling of the 3D displacement vector includes signaling a group flag, and the group flag indicates whether the 3D displacement vector includes non-zero components for a group of a subset of the plurality of vertices. The video coding device according to claim 15.

18. The signaling code is further configured to cause at least one of the processors to signal a flag, and the flag indicates whether to perform a conversion on the group for a group of a subset of the plurality of vertices. The video coding device according to claim 17.

19. The signaling code is further configured to cause at least one of the processors to signal a plurality of flags, and each of the plurality of flags indicates whether to perform a conversion on each of the components of the group for each of the components of a group of a subset of the plurality of vertices. The video coding device according to claim 17.

20. A computer program for causing a computer to execute the video coding method according to any one of claims 1 to 10.

Citation Information

Patent Citations

  • Characteristics information encoding device / method in two-dimensional or three-dimensional mesh information

    JP2000175190A

  • A scalable compression method for time-consistent 3D mesh sequences.

    JP2010527523A

  • Coding and decoding patch data units for point cloud coding - Patents.com

    JP2022525599A

  • Method and apparatus for estimating body shape

    US20190333267A1

  • Systems and methods for reconstruction and rendering of viewpoint-adaptive three-dimensional (3D) personas

    US20210248819A1