Texture coordinate encoding in mesh compression.

By employing parallelogram prediction and an edge breaker algorithm for vertex position encoding, the method addresses the inefficiencies in existing mesh compression standards, optimizing dynamic meshes for real-time applications.

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

Patent Information

Application Number
JP2024547299
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2023-06-28
Filing Date
2023-06-29
Publication Date
2025-12-03
Estimated Expiration
2043-06-29

AI Technical Summary

Technical Problem

Existing mesh compression standards do not effectively handle dynamic meshes with time-varying connectivity and attribute maps, particularly in terms of vertex 3D coordinates, which are computationally intensive and not supported by current methods.

Method used

The method involves determining multiple candidate predictions for a current vertex based on triangles in the mesh, calculating an average prediction, and encoding a prediction residual using 2D and 3D coordinates, with ordering based on an edge breaker algorithm and parallelogram prediction to optimize vertex position encoding.

Benefits of technology

This approach enhances the efficiency of mesh compression by reducing the data required for dynamic meshes with time-varying connectivity and attribute maps, supporting real-time applications like augmented and virtual reality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007780031000002
    Figure 0007780031000002
  • Figure 0007780031000003
    Figure 0007780031000003
  • Figure 0007780031000004
    Figure 0007780031000004
Patent Text Reader

Abstract

A plurality of candidate predictions of a current vertex are determined. The current vertex is one of a plurality of vertices of the mesh. Each of the plurality of candidate predictions is determined based on each of a plurality of triangles in the mesh and includes a two-dimensional (2D) coordinate in a 2D region. An average prediction of the plurality of candidate predictions is calculated. A 2D prediction of the current vertex is selected from a prediction list including the plurality of candidate predictions and the average prediction. A three-dimensional (3D) prediction of the current vertex is determined based on one or more neighboring vertices of the current vertex in the mesh. A prediction residual including a prediction error of the current vertex is encoded. The prediction residual is obtained based on the selected 2D prediction of the current vertex and the determined 3D prediction.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of priority to U.S. Provisional Application No. 63 / 388,522, entitled "Texture Coordinate Coding in Mesh Compression," filed July 12, 2022, which claims the benefit of priority to U.S. Provisional Application No. 18 / 215,230, entitled "TEXTURE COORDINATE CODING IN MESH COMPRESSION," filed June 28, 2023. The disclosures of the prior applications are incorporated herein by reference in their entireties.

[0002] The present disclosure includes embodiments relating to mesh processing. [Background technology]

[0003] The discussion of the background art provided herein is intended to generally present the context for the present disclosure. The inventors' work, to the extent described in this background art section, as well as aspects of the specification that may not be prior art at the time of filing, are not admitted expressly or impliedly as prior art to the present disclosure.

[0004] Advances in three-dimensional (3D) capture, modeling, and rendering have facilitated the ubiquitous presence of 3D content across various platforms and devices. Today, a baby's first steps can be captured on one continent, while the baby's grandparents on another continent can watch (and potentially interact with) them, enjoying a fully immersive experience with the baby. To achieve such realism, models are becoming increasingly sophisticated, and a significant amount of data is associated with the creation and consumption of those models. 3D meshes are widely used to represent such immersive content. Summary of the Invention [Means for solving the problem]

[0005] Aspects of the present disclosure provide methods and apparatus for mesh processing. In some examples, an apparatus for mesh processing includes a processing circuit.

[0006] According to one aspect of the present disclosure, a method for mesh processing performed in a video encoder is provided. In the method, multiple candidate predictions for a current vertex are determined. The current vertex is one of multiple vertices of the mesh. Each of the multiple candidate predictions is determined based on each of multiple triangles in the mesh and includes two-dimensional (2D) coordinates within a 2D region. An average prediction of the multiple candidate predictions is calculated. A 2D prediction for the current vertex is selected from a prediction list including the multiple candidate predictions and the average prediction. The selected 2D prediction corresponds to a threshold prediction difference between the current vertex and each predictor in the prediction list. A three-dimensional (3D) prediction for the current vertex is determined based on one or more neighboring vertices of the current vertex in the mesh. The 3D prediction includes 3D coordinates within the 3D region. A prediction residual including a prediction error for the current vertex is encoded. The prediction residual is obtained based on the selected 2D prediction and the determined 3D prediction for the current vertex.

[0007] In one example, to determine multiple candidate predictions for a current vertex, a first triangle among the multiple triangles is determined for the current vertex, the first triangle shares an edge with a second triangle among the multiple triangles, the current vertex is included in the second triangle and is on the opposite side of the shared edge, and the first prediction of the multiple candidate predictions is determined based on the determined first triangle via parallelogram prediction, in which the first prediction and the first triangle form a first parallelogram.

[0008] In some embodiments, to select a 2D prediction for the current vertex, a prediction list for the current vertex is determined. The predictors in the prediction list include an average prediction and multiple candidate predictions following the average prediction in the prediction list. The order of the multiple candidate predictions in the prediction list is based on the order of the multiple triangles corresponding to the multiple candidate predictions. A prediction index for each predictor in the prediction list is further determined.

[0009] In some embodiments, the triangles are ordered based on an edge breaker algorithm in which the triangles are labeled in a spiral triangle spanning tree order.

[0010] In some embodiments, to select a 2D prediction for the current vertex, a prediction difference between each of the predictors in the prediction list and the current vertex is determined. The 2D prediction is selected from the predictors in the prediction list such that the selected 2D prediction corresponds to the smallest prediction difference of the prediction differences.

[0011] In some embodiments, a 2D prediction is selected within the subset of the prediction list such that the 2D prediction corresponds to the smallest prediction difference within the subset of the prediction list.

[0012] In one example, the 3D prediction of the current vertex is determined based on delta prediction, where the 3D prediction is determined as a neighboring vertex of one of the one or more neighboring vertices. In one example, the 3D prediction of the current vertex is determined based on parallelogram prediction, where the 3D prediction and three neighboring vertices of the one or more neighboring vertices form a parallelogram.

[0013] In some embodiments, to encode the prediction residual, a predicted value of the current vertex is determined based on one of the 2D prediction and the 3D prediction, the one of the 2D prediction and the 3D prediction having a smaller prediction difference than another one of the 2D prediction and the 3D prediction, and a prediction residual indicating the difference between the predicted value and the current vertex is further encoded.

[0014] In some embodiments, to encode the prediction residual, a predicted value of the current vertex is determined based on the average of the 2D prediction and the 3D prediction, and a prediction residual indicating the difference between the predicted value and the current vertex is further encoded.

[0015] In one example, index information indicating a prediction index of a selected 2D prediction in a prediction list is encoded. In one example, a flag is further encoded. The flag indicates that the predicted value of the current vertex is determined based on one of a 2D prediction, a 3D prediction, or an average of the 2D prediction and the 3D prediction.

[0016] According to another aspect of the present disclosure, there is provided an apparatus including a processing circuit, the processing circuit may be configured to perform any of the described methods for mesh processing.

[0017] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer for video decoding, cause the computer to perform any of the methods for mesh processing.

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

[0019] [Figure 1] FIG. 1 is a schematic diagram of an exemplary block diagram of a communication system (100). [Figure 2] FIG. 2 is a schematic diagram of an exemplary block diagram of a decoder. [Figure 3] FIG. 2 is a schematic diagram of an exemplary block diagram of an encoder. [Figure 4A] FIG. 2 is a schematic diagram of a first exemplary parallelogram prediction according to some embodiments of the present disclosure. [Figure 4B] FIG. 10 is a schematic diagram of a second exemplary parallelogram prediction according to some embodiments of the present disclosure. [Figure 5A] Five example patch configurations of the edge breaker algorithm are shown. [Figure 5B] 1 illustrates an exemplary mesh traversal with the Edge Breaker algorithm. [Figure 6] FIG. 10 is a schematic diagram of an example of predicting vertices based on parallelogram prediction. [Figure 7] 1 is a flowchart outlining a process according to some embodiments of the present disclosure. [Figure 8] 10 is a flowchart outlining another process according to some embodiments of the present disclosure. [Figure 9] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0020] 1 illustrates a block diagram of a video processing system (100) in some examples. The video processing system (100) is an example of an application of the disclosed subject matter and a video encoder and video decoder in a streaming environment. The disclosed subject matter may be equally applicable to other image and video-enabled applications, including, for example, video conferencing, digital TV, streaming services, and storage of compressed video on digital media, including CDs, DVDs, and memory sticks.

[0021] The video processing system (100) includes a capture subsystem (113) that can include a video source (101). The video source (101) can include one or more images captured by a camera and / or generated by a computer. For example, a digital camera creates an uncompressed stream of video pictures (102). In one example, the stream of video pictures (102) includes samples taken by the digital camera. The stream of video pictures (102) is shown in bold to emphasize its large amount of data compared to the encoded video data (104) (or coded video bitstream), and can be processed by an electronic device (120) that includes a video encoder (103) coupled to the video source (101). The video encoder (103) can include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data (104) (or encoded video bitstream), shown with a thin line to emphasize its small amount of data compared to the stream of video pictures (102), can be stored on the streaming server (105) for future use. One or more streaming client subsystems, such as the client subsystems (106) and (108) of FIG. 1, can access the streaming server (105) to obtain copies (107) and (109) of the encoded video data (104). The client subsystem (106) can include a video decoder (110), for example, within the electronic device (130). The video decoder (110) decodes the input copy (107) of the encoded video data and creates an output stream of video pictures (111) that can be rendered on a display (112) (e.g., a display screen) or other rendering device (not shown).In some streaming systems, the encoded video data 104, 107, 109 (e.g., video bitstreams) may be encoded according to a particular video encoding / compression standard. Examples of such standards include ITU-T Recommendation H.265. In one example, a video encoding standard under development is informally known as Versatile Video Coding (VVC). The disclosed subject matter may be used in the context of VVC.

[0022] It should be noted that the electronic devices (120) and (130) may include other components (not shown). For example, the electronic device (120) may include a video decoder (not shown), and the electronic device (130) may also include a video encoder (not shown).

[0023] 2 shows an exemplary block diagram of a video decoder (210). The video decoder (210) may be included in an electronic device (230). The electronic device (230) may include a receiver (231). The receiver (231) may include receiving circuitry, such as a network interface circuit. The video decoder (210) may be used in place of the video decoder (110) in the example of FIG. 1.

[0024] The receiver (231) can receive one or more coded video sequences to be decoded by the video decoder (210). In one embodiment, one coded video sequence is received at a time, and the decoding of each coded video sequence is independent of the decoding of other coded video sequences. The coded video sequences can be received from a channel (201), which can be a hardware / software link to a storage device that stores the encoded video data. The receiver (231) can receive the encoded video data with other data, such as coded audio data and / or auxiliary data streams, which can be forwarded to a respective using entity (not shown). The receiver (231) can separate the coded video sequences from other data. To combat network jitter, a buffer memory (215) can be coupled between the receiver (231) and the entropy decoder / parser (220) (hereinafter "parser (220)"). In certain applications, the buffer memory (215) is part of the video decoder (210). In other applications, it may be external to the video decoder (210) (not shown). In still other applications, there may be a buffer memory (not shown) external to the video decoder (210), for example, to combat network jitter, and another buffer memory (215) internal to the video decoder (210), for example, to handle playout timing. When the receiver (231) is receiving data from a storage / forwarding device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (215) may not be necessary or may be small. For use with best-effort packet networks such as the Internet, the buffer memory (215) may be required and may be relatively large, advantageously adaptively sized, and implemented at least in part within an operating system or similar element (not shown) external to the video decoder (210).

[0025] The video decoder (210) may include a parser (220) to reconstruct symbols (221) from the encoded video sequence. These symbol categories include information used to manage the operation of the video decoder (210) and potential information for controlling rendering devices, such as a rendering device (212) (e.g., a display screen) that is not an integral part of the electronic device (230) but can be coupled to the electronic device (230), as shown in FIG. 2. The control information for the rendering device(s) may be in the form of a Supplemental Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (220) may parse / entropy decode the received encoded video sequence. The encoding of the encoded video sequence may conform to a video coding technique or standard and may follow various principles, including variable length coding, Huffman coding, arithmetic coding with or without context dependency, etc. The parser (220) can extract from the coded video sequence a set of subgroup parameters for at least one of a subgroup of pixels in a video decoder based on at least one parameter corresponding to the group. The subgroup may include a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. The parser (220) can also extract information from the coded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.

[0026] The parser (220) can perform entropy decoding / parsing operations on the video sequence received from the buffer memory (215) to create symbols (221).

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

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

[0029] The first unit is a scalar / inverse transform unit (251), which receives quantized transform coefficients and control information from the parser (220) as symbol(s) (221), including the transform to use, block size, quantization coefficients, quantization scaling matrix, etc. The scalar / inverse transform unit (251) can output blocks containing sample values ​​that can be input to an aggregator (255).

[0030] In some cases, the output samples of the scaler / inverse transform unit (251) may relate to intra-coded blocks. Intra-coded blocks are blocks that do not use prediction information from a previously reconstructed picture but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by the intra-picture prediction unit (252). In some cases, the intra-picture prediction unit (252) generates a block of the same size and shape as the block being reconstructed using surrounding, already reconstructed information fetched from the current picture buffer (258). The current picture buffer (258), for example, buffers a partially reconstructed and / or fully reconstructed current picture. The aggregator (255) may optionally add the prediction information generated by the intra-prediction unit (252) to the output sample information provided by the scaler / inverse transform unit (251) on a sample-by-sample basis.

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

[0032] The output samples of the aggregator (255) may be subjected to various loop filtering techniques in a loop filter unit (256). Video compression techniques may include in-loop filtering techniques controlled by parameters contained in the coded video sequence (also called a coded video bitstream) and available to the loop filter unit (256) from the parser (220) as symbols (221). Video compression may also accommodate meta-information obtained during decoding of previous portions (in decoding order) of the coded picture or coded video sequence, as well as previously reconstructed and loop-filtered sample values.

[0033] The output of the loop filter unit (256) may be a sample stream that may be output to a rendering device (212) or stored in a reference picture memory (257) for use in future inter-picture prediction.

[0034] Once a particular coded picture has been fully reconstructed, it may be used as a reference picture for future prediction. For example, once the coded picture corresponding to the current picture has been fully reconstructed and the coded picture has been identified as a reference picture (e.g., by the parser (220)), the current picture buffer (258) may become part of the reference picture memory (257), and a new current picture buffer may be relocated before beginning reconstruction of a subsequent coded picture.

[0035] The video decoder (210) may perform decoding operations according to a predefined video compression technology or standard, such as ITU-T Recommendation H.265. The encoded video sequence may conform to the syntax specified by the video compression technology or standard being used, in the sense that the encoded video sequence adheres to both the syntax of the video compression technology or standard and the profile documented in the video compression technology or standard. Specifically, the profile may select certain tools from among all tools available in the video compression technology or standard as the only tools available under that profile. Compliance may also require that the complexity of the encoded video sequence fall within a range defined by the level of the video compression technology or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level may, in some cases, be further limited by the specification of a hypothetical reference decoder (HRD) and metadata for HRD buffer management signaled within the encoded video sequence.

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

[0037] 3 shows an example block diagram of a video encoder (303). The video encoder (303) is included in an electronic device (320). The electronic device (320) includes a transmitter (340) (e.g., a transmitting circuit). The video encoder (303) can be used in place of the video encoder (103) in the example of FIG. 1.

[0038] The video encoder (303) can receive video samples from a video source (301) (not part of the electronic device (320) in the example of FIG. 3) that can capture video images to be encoded by the video encoder (303). In another example, the video source (301) is part of the electronic device (320).

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

[0040] According to one embodiment, the video encoder (303) can encode and compress pictures of a source video sequence into an encoded video sequence (343) in real time, or under any other time constraints as needed. Enforcing the appropriate encoding rate is a function of the controller (350). In some embodiments, the controller (350) controls and is operatively coupled to other functional units, as described below. For clarity, coupling is not shown. Parameters set by the controller (350) can include rate control-related parameters (e.g., picture skip, quantizer, lambda value for rate-distortion optimization techniques), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (350) can be configured with other appropriate functionality associated with the video encoder (303) optimized for a particular system design.

[0041] In some embodiments, the video encoder (303) is configured to operate in an encoding loop. As an overly simplified explanation, in one example, the encoding loop can include a source coder (330) (e.g., responsible for generating symbols, such as a symbol stream, based on an input picture to be encoded and a reference picture) and a (local) decoder (333) embedded in the video encoder (303). The decoder (333) reconstructs symbols to create sample data in a manner similar to that used by a (remote) decoder. The reconstructed sample stream (sample data) is input to a reference picture memory (334). Because decoding of the symbol stream produces bit-exact results regardless of the location of the decoder (local or remote), the contents of the reference picture memory (334) are also bit-exact between the local and remote encoders. In other words, the predictive portion of the encoder "sees" the exact same sample values ​​as the decoder would "see" when using prediction during decoding. This basic principle of reference picture synchrony (and the resulting drift when synchrony cannot be maintained, for example due to channel errors) is also used in some related techniques.

[0042] The operation of the "local" decoder (333) may be the same as the operation of a "remote" decoder, such as the video decoder (210), already described in detail above in conjunction with Figure 2. However, with brief reference also to Figure 2, because symbols are available and the encoding / decoding of symbols into an encoded video sequence by the entropy coder (345) and parser (220) may be lossless, the entropy decoding portion of the video decoder (210), including the buffer memory (215) and parser (220), may not be fully implemented in the local decoder (333).

[0043] In one embodiment, decoder technology, excluding parsing / entropy decoding, present in the decoder is present in the corresponding encoder in the same or substantially the same functional form. Therefore, the disclosed subject matter focuses on decoder operation. The description of the encoder technology can be omitted because it is the reverse of the decoder technology described comprehensively. Only in certain areas will more detailed descriptions be provided below.

[0044] In operation, in some examples, the source coder (330) may perform motion-compensated predictive coding, which predictively codes an input picture with reference to one or more previously coded pictures from a video sequence designated as “reference pictures.” In this manner, the coding engine (332) codes differences between pixel blocks of the input picture and pixel blocks of reference picture(s) that may be selected as predictive reference(s) for the input picture.

[0045] The local video decoder (333) may decode the encoded video data of pictures that may be designated as reference pictures based on symbols created by the source coder (330). The operation of the encoding engine (332) may advantageously be a lossy process. When the encoded video data is decoded by a video decoder (not shown in FIG. 3), the reconstructed video sequence may typically be a copy of the source video sequence, possibly with some errors. The local video decoder (333) may replicate the decoding process that may be performed by the video decoder on the reference pictures and store the reconstructed reference pictures in the reference picture memory (334). In this way, the video encoder (303) may locally store copies of reconstructed reference pictures that have common content with the reconstructed reference pictures obtained by the far-end video decoder (without transmission errors).

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

[0047] The controller (350) can manage the coding operations of the source coder (330), including, for example, setting the parameters and subgroup parameters used to encode the video data.

[0048] The output of all the aforementioned functional units may be entropy coded by an entropy coder (345), which converts the symbols produced by the various functional units into an encoded video sequence by applying lossless compression to the symbols according to techniques such as Huffman coding, variable length coding, arithmetic coding, etc.

[0049] The transmitter (340) can buffer the encoded video sequence(s) created by the entropy coder (345) and prepare them for transmission over a communication channel (360), which can be a hardware / software link to a storage device that stores the encoded video data. The transmitter (340) can merge the encoded video data from the video encoder (303) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (sources not shown).

[0050] The controller (350) can manage the operation of the video encoder (303). During encoding, the controller (350) can assign a particular coded picture type to each coded picture, which can affect the coding technique that can be applied to each picture. For example, pictures are often assigned as one of the following picture types:

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

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

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

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

[0055] The video encoder (303) may perform encoding operations according to a predefined video encoding technique or standard, such as ITU-T Recommendation H.265. In doing so, the video encoder (303) may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancies in the input video sequence. Thus, the encoded video data may conform to the syntax specified by the video encoding technique or standard being used.

[0056] In one embodiment, the transmitter (340) can transmit additional data along with the encoded video. The source coder (330) can include such data as part of the coded video sequence. The additional data can include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.

[0057] Video may be captured in time sequence as multiple source pictures (video pictures). Intra-picture prediction (often abbreviated as intra-prediction) uses spatial correlation within a given picture, while inter-picture prediction uses correlation (temporal or other) between pictures. In one example, a particular picture being encoded / decoded, called the current picture, is divided into blocks. When a block in the current picture is similar to a reference block in a previously coded and still buffered reference picture in the video, the block in the current picture may be coded by a vector called a motion vector. The motion vector points to a reference block in the reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.

[0058] In some embodiments, bi-prediction techniques can be used in inter-picture prediction. According to bi-prediction techniques, two reference pictures, such as a first reference picture and a second reference picture, are used, both of which are before the decoding order of the current picture in the video (but may be past and future, respectively, in display order). A block in the current picture can be coded by a first motion vector pointing to a first reference block in the first reference picture and a second motion vector pointing to a second reference block in the second reference picture. A block can be predicted by a combination of the first reference block and the second reference block.

[0059] Furthermore, merge mode techniques can be used in inter-picture prediction to improve coding efficiency.

[0060] According to some embodiments of the present disclosure, predictions such as inter-picture prediction and intra-picture prediction are performed in units of blocks, such as polygonal or triangular blocks. For example, according to the HEVC standard, pictures in a sequence of video pictures are divided into coding tree units (CTUs) for compression, and the CTUs within a picture have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Typically, a CTU includes three coding tree blocks (CTBs), one luma CTB and two chroma CTBs. Each CTU can be recursively quadtree-decomposed into one or more coding units (CUs). For example, a 64x64 pixel CTU can be partitioned into one CU of 64x64 pixels, four CUs of 32x32 pixels, or 16 CUs of 16x16 pixels. In one example, each CU is analyzed to determine the prediction type of the CU, such as an inter-prediction type or an intra-prediction type. A CU is divided into one or more prediction units (PUs) according to temporal and / or spatial predictability. Generally, each PU includes one luma prediction block (PB) and two chroma PBs. In one embodiment, prediction operations in coding (encoding / decoding) are performed in prediction block units. Using a luma prediction block as an example of a prediction block, the prediction block includes a matrix of pixel values ​​(e.g., luma values), such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.

[0061] It should be noted that the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using any suitable technology. In one embodiment, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more integrated circuits. In another embodiment, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more processors executing software instructions.

[0062] The present disclosure includes embodiments directed to methods and systems for texture coordinate encoding in mesh compression.

[0063] A mesh can include several polygons that represent the surface of a volumetric object. Each polygon of a mesh can be defined by its corresponding vertices in three-dimensional (3D) space and information about how the vertices are connected, also known as connectivity information. In some embodiments, vertex attributes, such as color and normals, can be associated with mesh vertices. Attributes (or vertex attributes) can also be associated with the surface of a mesh by utilizing mapping information that parameterizes the mesh in a two-dimensional (2D) attribute map. Such mapping can typically be described by a set of parametric coordinates, called UV coordinates or texture coordinates, associated with the mesh vertices. 2D attribute maps can be used to store high-resolution attribute information, such as texture, normals, and displacement. Such information can be used for various purposes, such as texture mapping and shading.

[0064] Dynamic mesh sequences can require large amounts of data because dynamic meshes can contain a significant amount of information that changes over time. Therefore, efficient compression techniques are needed to store and transmit such content. Mesh compression standards, such as IC, MESHGRID, and FAMC, were previously developed by MPEG to address dynamic meshes with constant connectivity, time-varying geometry, and vertex attributes. However, these standards may not consider time-varying attribute maps and connectivity information. Digital content creation (DCC) tools typically generate such dynamic meshes. However, generating constant connectivity dynamic meshes with volumetric acquisition techniques can be challenging, especially under real-time constraints. This type of content (e.g., constant connectivity dynamic meshes) may not be supported by existing standards. MPEG plans to develop a new mesh compression standard to directly handle dynamic meshes with time-varying connectivity information and, optionally, time-varying attribute maps. The new mesh compression standard targets lossy and lossless compression for various applications, such as real-time communication, storage, free-viewpoint video, augmented reality (AR), and virtual reality (VR). Features such as random access and scalable / progressive coding are also possible.

[0065] Mesh geometry information can include vertex connectivity information, 3D coordinates, 2D texture coordinates, etc. Compression of vertex 3D coordinates, which may also be called vertex positions, can often be very important because compressing vertex 3D coordinates can consume a significant portion of the overall geometry-related data.

[0066] For simplicity and clarity, this disclosure will use a triangular mesh as an example to describe embodiments. However, other polygon meshes (e.g., quadrilateral or pentagonal meshes) may also be applied to embodiments of the present disclosure. In one example, a triangular mesh is a type of polygon mesh that includes a set of triangles. The set of triangles may be connected by common edges or corners of the set of triangles. The common edges or corners may be represented as mesh vertices.

[0067] Vertex position compression may be implemented by parallelogram prediction. In parallelogram prediction, the compression algorithm may introduce a new vertex that is included in a predicted triangle. The predicted triangle may be formed based on edges shared with adjacent triangles. In one example, the adjacent triangle may be pre-encoded. The new vertex may indicate a predicted position of the current vertex. The new vertex may form a parallelogram with three vertices included in the adjacent triangles. For example, as shown in FIG. 4A, a mesh (400A) may include multiple triangles, such as triangle (412). Each triangle may include three vertices. For example, triangle (412) may include vertices (406), (408), and (410). To encode the current vertex (402), a predicted vertex (or prediction) (404) of the current vertex (402) may be generated based on the predicted triangle (414) according to parallelogram prediction. The predicted vertex (404) may be included in the predicted triangle (414). The predicted triangle (414) may share an edge (416) with triangle (412). Vertices (406), (408), and (410) and the predicted vertex (404) may form a parallelogram. Furthermore, note that the current vertex (402) is contained in triangle (418) of mesh (400A), and triangle (418) and triangle (412) share an edge (416).

[0068] Multi-parallelogram prediction can be applied to predict the current vertex. For example, multi-parallelogram prediction can use the average position given by two or more parallelogram predictions whenever they are available. Figure 4B provides an example of two parallelogram predictions. As shown in Figure 4B, the current vertex (420) can be included in the first triangle (434) of the mesh (400B). The first triangle (434) may include vertices (420), (438), and (442). The first triangle (434) may share an edge (444) with an adjacent triangle (428) of the mesh (400B). The current vertex (420) may be included in a second triangle (436) that includes vertices (420), (438), and (440). The second triangle (436) may share an edge (446) with an adjacent triangle (426) of the mesh (400B). Based on the shared edge (444), the first predicted vertex A point (or first prediction) (424) may be determined. The first predicted vertex (424) may form a first parallelogram together with an adjacent triangle (428). A second predicted vertex (or second prediction) (422) may be determined based on the shared edge (446). The second predicted vertex (422) may form a second parallelogram together with an adjacent triangle (426). Thus, the current vertex (420) may be further predicted by the average of the first predicted vertex (424) and the second predicted vertex (422).

[0069] This disclosure provides a method and / or system for texture coordinate encoding in mesh compression. In one embodiment, based on parallelogram prediction, a predicted position value (or prediction or predicted vertex) of a current vertex can be selected from multiple candidate position values ​​(or candidate predictions or candidate predicted vertices). The selected predicted vertex can be coded (or identified) by an index. A prediction residual between the selected predicted vertex and the current vertex can be further coded.

[0070] This disclosure proposes many methods and / or systems for vertex position prediction in mesh compression. It should be noted that the methods and / or systems can be applied individually or in any combination. It should also be noted that the methods can be applied to static meshes as well as dynamic meshes. Static meshes may contain only one frame, or the mesh content of static meshes may not change over time. Furthermore, the disclosed methods and / or systems are not limited to vertex position prediction. The disclosed methods and / or systems can also be applied to, for example, 3D coordinate coding or more general multi-prediction based schemes.

[0071] The triangles in a triangular mesh (or meshes) can be ordered. The order of the triangles in the mesh can be traversed according to an edge breaker algorithm or other partitioning algorithm. Additionally, in one example, the vertices in the mesh can be ordered based on the order of the triangles. In one example, the order or traversal order of the triangles and vertices can be determined based on the same scheme or different schemes.

[0072] 5A and 5B show exemplary ordering of triangles and vertices in a mesh based on the edge breaker algorithm. FIG. 5A shows five example patch configurations for the edge breaker algorithm. As shown in FIG. 5A, V is the patch center vertex, and T is the current triangle. The active gate (or current triangle) in each patch can be represented as T. In patch C, a complete triangle can be provided that fans out (or rotates) around V. In patch L, one or more missing triangles can be located to the left of the active gate T. In patch R, one or more missing triangles can be located to the right of the active gate T. In patch E, V is adjacent only to T. In patch S, one or more missing triangles can be located in a position other than the left or right of the active gate T. FIG. 5B shows an exemplary traversal of a mesh (500), in which triangles in the mesh (500) can be ordered based on the traversal of the edge breaker algorithm. As shown in FIG. 5B, triangles in the mesh (500) can be traversed along a spiral triangle spanning tree. For example, the traversal may begin at triangle (502) of type C (or patch C). The traversal may then proceed along the branch adjacent to the right edge of the triangle (e.g., (502)). The traversal may stop when a triangle of type E (e.g., (504)) is reached. According to the edge breaker algorithm, the triangles of mesh (500) may be traversed (or ordered) in the sequence CRSRLECRRRLE, which may be shown in FIG. 5B. The vertices within each triangle of mesh (500) may also be ordered based on the triangle's order.

[0073] In a triangular mesh, each triangle, also called a face, has three vertices. For two triangles that share an edge, parallelogram prediction can be applied to use one of the two opposite vertices of the two triangles as a predictor for another triangle. As shown in Figure 6, two triangles ABC and DBC can share an edge BC. The coordinates of vertices A, B, and C that have already been coded can be used to predict the coordinate of D. For example, a predicted vertex (or prediction) D' can be determined based on parallelogram prediction. The coordinate of the predicted vertex D' can be determined in equation (1) as follows: D'=B+CA formula (1) In this way, the four vertices (D', B, A, C) can form a parallelogram as shown in Figure 6. Since each vertex has a 2D texture coordinate, each coordinate component of the predicted vertex D' can be calculated using equation (1). For example, assuming that the subscripts x, y, and z indicate the 2D texture coordinate in UV space, the coordinate components of the predicted vertex D' in UV space can be provided by equations (2)-(3). D u '=B u +C u -A u Formula (2) D v '=B v +C v -A v Formula (3)

[0074] Triangle ABC may be indicated as a prediction candidate (or predicted triangle) for vertex D if the position values ​​of vertices A, B, and C are encoded and can be used for prediction. Depending on the number of existing encoded vertices and shared edges, a vertex can have zero, one, two, or more prediction candidates. If there are two or more prediction candidates for the current vertex, the prediction candidates may be ordered based on the order of the triangles in the mesh. For example, the triangles may be ordered based on an edge breaker algorithm, etc.

[0075] In the present disclosure, one or more predictions (or parallelogram predictions) of the current vertex may be determined. An average of the one or more parallelogram predictions may further be determined. Further, each parallelogram prediction may be compared to a true vertex position value of the current vertex. Further, the average of the one or more parallelogram predictions may be compared to the true position value. A prediction of the current vertex may be determined from one or more parallelogram predictions and an average of the one or more parallelogram predictions. In one example, a prediction of the current vertex may be determined based on the smallest prediction error of the comparisons. An index of the prediction with the smallest prediction error may be stored. The index of the prediction may be referred to as a prediction index. The prediction index may indicate one of the parallelogram predictions or the average of the parallelogram predictions. Both the prediction index and the associated prediction error, which may also be referred to as a prediction residual, may further be encoded. The predictor error or prediction residual may indicate the difference between the current vertex and the predicted vertex.

[0076] In the present disclosure, all triangles in a triangular mesh can be ordered. For example, the triangles can be ordered based on an edge breaker algorithm. Additionally, all or a subset of the vertices in the triangular mesh can be ordered. In one example, the vertices can be ordered based on the order of the triangles.

[0077] Consider a vertex V in a triangular mesh, and V with N prediction candidates (or prediction triangles). The N prediction candidates are N predictions V1', V2', ..., V N For example, as shown in FIG. 4B, a current vertex (420) may have two predicted triangles (430) and (432). Each of the predicted triangles (430) and (432) may generate a separate predicted value (or predicted vertex), such as (422) and (424), respectively. The predicted values ​​for the current vertex may be ordered based on the order of the corresponding predicted triangles in the mesh. If duplicates are determined in the predicted values, such duplicates may be removed from the list of predicted values.

[0078] In one example, when N=0, there are no prediction candidates available for vertex V. If V is the first vertex to be coded in the mesh, the predicted value V' of the first vertex can be set as 0, and the prediction residual R can be set as V. Thus, V'=0, R=V. If V is not the first vertex to be coded, the predicted value V' of V can be set as the coded value of a previously coded vertex in vertex order. Thus, the previously coded vertex can be the predictor of vertex V. The prediction residual R can be determined as the difference between vertex V and the predicted value (or predicted vertex) V', where R=V-V'.

[0079] In one example, when N=1, only one prediction candidate is available for vertex V. Therefore, a predicted value V′ can be determined based on only one prediction candidate, and a prediction residual R can be determined as the difference between V and V′, where R=V−V′.

[0080] In one example, when N>=2, multiple prediction candidates are available for vertex V. Therefore, multiple predicted values ​​(or predicted vertices) can be determined based on the multiple prediction candidates. In one embodiment, the average of the predicted values ​​can be considered as an additional predictor V0′. V0′ can be determined by equation (4). V0'=(V1'+V2'+...+V N ') / N formula (4)

[0081] The average predicted value V0' is the predicted value V1', V2', ..., V N ', either the mean predicted value V0' or the duplicated predicted value can be deleted.

[0082] On the encoder side, V i ' can be compared with V, where 0<=i<=N. A prediction index j can be selected. The selected prediction index j is the sum of V and each predicted value V i V corresponding to the minimum prediction residual between iIn some embodiments, the minimized error (or minimum prediction residual) is 0 Norm, L 1 Norm, L 2 It can be measured by the L norm, or some other norm. For example, 0 The norm can be determined in equation (5) as follows:

number

[0083] At the decoder side, the selection index (e.g., prediction index) can be decoded, and the selected predictor (or predicted value) can be restored from the list of predictors. For example, the decoder can determine one or more predicted values ​​for the current vertex based on a prediction mode such as parallelogram prediction. Furthermore, the average of one or more predicted values ​​can be considered as a predictor. The average predicted value and the one or more predicted values ​​can be ordered to form a prediction list. In one example, the prediction list generated at the decoder side can be the same as the prediction list generated at the encoder side. According to the decoded prediction index, the selected predictor can be restored based on the prediction index from the prediction list.

[0084] In one embodiment, at the encoder side, if the number of prediction candidates N is equal to a specified (or default) value, a fixed prediction index may be selected (or defaulted). In one example, N may be greater than or equal to 2 and less than or equal to 5. Therefore, the prediction index associated with the selected predictor in the prediction list may not need to be coded. At the decoder side, the decoder may restore (or identify) the prediction index (or fixed prediction index). For example, if N>2, prediction index 0 may be selected (or identified). Therefore, if N>2, the prediction index does not need to be coded.

[0085] In one embodiment, at the encoder side, if N is equal to or greater than a constant, such as 2, a fixed prediction index may be selected (or defaulted). Thus, not all prediction indexes need to be coded. At the decoder side, the decoder may recover (or identify) the prediction index (or fixed prediction index). In one example, if N=2, a first prediction index (e.g., prediction index 1) may be selected. In one example, if N>2, a second prediction index (e.g., prediction index 0) may be selected. In one example, if N>=2, a third prediction index (e.g., prediction index 0 or prediction index 3) may be selected.

[0086] In one embodiment, an upper limit M can be set. The upper limit M can indicate the number of prediction candidates that can be considered (or applied) in the prediction list. If N>M, then for each vertex in the mesh, only the first M prediction candidates are considered. This allows the first M prediction candidates V1', V2', ..., V M ' is applied. In one embodiment, the average of the first M predicted values ​​may be determined by equation (6). V0'=(V1'+V2'+...+V M ') / M formula (6) M may be an integer, such as 4. Thus, up to M (e.g., 4) prediction candidates are possible. Note that the average prediction V0′ may be placed in various positions in the candidate list. In one example, the average prediction V0′ may be the first predictor in the prediction candidate list. In one example, the average prediction V0′ may be the last predictor in the prediction candidate list. In one example, the average prediction V0′ may be the sum of the predicted values ​​V1′, V2′, ..., V M ' can be placed in

[0087] In one embodiment, if the 3D coordinates are encoded and available for prediction, 3D coordinate-based prediction can be applied to predict the texture coordinates. For example, the 3D coordinate-based prediction for vertex D in FIG. 6 is D x ', D y ', and D z The 3D coordinate-based prediction may have a 3D coordinate of '. Various prediction methods, such as inter-frame prediction or intra-frame prediction, may be applied to operate the 3D coordinate-based prediction. In one example, the intra-frame prediction may be a parallelogram prediction. The 3D coordinate-based prediction may be compared with a parallelogram-based prediction (e.g., a 2D coordinate-based prediction), and the one with a smaller coding cost may be selected. A binary flag may further be coded. The binary flag may indicate whether the 3D coordinate-based prediction or the parallelogram-based prediction (e.g., a 2D coordinate-based prediction) is selected.

[0088] In one embodiment, the average of the 3D coordinate-based prediction and the parallelogram-based prediction may be applied as the predictor for vertex V.

[0089] If a vertex V includes N prediction candidates V1', V2', ..., VN' and a mean V0', then a selected prediction index can be coded. The selected prediction index indicates the selected predictor in the prediction list. The prediction list includes N prediction candidates V1', V2', ..., V N ', and mean V0'.

[0090] In some embodiments, the prediction index needs to be coded only if there are two or more prediction candidates. For example, if two or more prediction candidates are available for the current vertex, an index indicating the selected prediction candidate can be coded at the encoder side. At the decoder side, the decoder can determine the two or more prediction candidates in the same order as the encoder. The decoder can decode the coded prediction index and reconstruct the selected prediction candidate based on the prediction index from the two or more prediction candidates.

[0091] In one embodiment, if no prediction candidate is determined or only one prediction candidate is determined, the prediction index may not need to be coded. Thus, the predicted value may be the current vertex itself or the only prediction candidate. In one embodiment, the prediction index may always be coded regardless of the number of available predictor candidates. If no predictor is available, the signaled index value may not affect the decoding process at the decoder side.

[0092] In some embodiments, when a fixed prediction index is selected (or predetermined) in response to N being a specified (or predetermined) value, such as 2≦N≦5, the prediction index may not be coded.

[0093] In some embodiments, the prediction index is not fixed but is selected from prediction candidates. If two or more prediction candidates are determined for the current vertex, the prediction index can be coded using fixed-length coding. For example, if three prediction candidates are determined for the current vertex, four possible prediction indices may be required: 0, 1, 2, and 3 (where 0 indicates the average value of candidates 1, 2, and 3). Therefore, a two-digit binary number can be applied to represent each of the four prediction indices. Note that different vertices of a triangular mesh can use different fixed lengths. For example, if another vertex has seven prediction candidates, the other vertex can use a three-digit binary number for its prediction index representation. The output from the fixed-length coding can be further compressed by entropy coding, such as arithmetic coding.

[0094] Alternatively, the prediction index can be coded using variable-length coding. For example, if four prediction candidates are determined for the current vertex, five possible prediction indices, 0, 1, 2, 3, and 4, may be required. Variable-length codes of 0, 100, 101, 110, and 111 can be assigned to represent the five prediction indices 0, 1, 2, 3, and 4, respectively. Alternatively, variable-length codes of 1, 01, 001, 0001, and 00001 can be applied to represent the five prediction indices 0, 1, 2, 3, and 4, respectively. Note that different vertices of a triangular mesh can use different variable lengths. The output from variable-length coding can be further compressed by entropy coding, such as arithmetic coding.

[0095] Alternatively, the prediction index can be differentially coded, where the prediction index of the current vertex can be predicted from a previously coded prediction index, and the prediction error associated with the prediction index can also be coded. For example, the difference between a first prediction index of a predictor and a second prediction index of a predictor can be coded first. The second prediction index can then be further coded based on the difference between the first and second prediction indexes.

[0096] If an upper limit M is set to limit the maximum number of prediction candidates and more than M prediction candidates are available for vertex V, only the first M prediction candidates can be used to predict vertex V. Therefore, (M+1) possible prediction indices can be coded, where M indicates the first M prediction candidates and 1 indicates the average of the first M prediction candidates. If duplicates are determined in the predicted values, the duplicates can be removed. This can also reduce the likelihood of the prediction index. If a fixed prediction index is selected (or defaulted), the prediction index does not need to be coded. If the prediction index is not fixed and is selected from multiple prediction candidates, the prediction index can be coded. The prediction index can be coded using fixed-length coding, variable-length coding, differential coding, etc.

[0097] If 3D coordinate-based prediction is also a prediction candidate, a 1-bit binary flag can be used to signal the prediction mode, which can indicate whether the prediction mode is 3D coordinate-based prediction or parallelogram-based prediction.

[0098] If the average of 3D coordinate-based prediction and parallelogram-based prediction is also a prediction candidate, a three-symbol flag can be used to signal the prediction mode. The three-symbol flag can indicate whether the prediction mode is 3D coordinate-based prediction, parallelogram-based prediction, or the average of 3D coordinate-based prediction and parallelogram-based prediction.

[0099] In one embodiment, a prediction residual R of a position value (or predicted value) can be coded (or determined). The prediction residual R can indicate the difference between the predicted value of the current vertex and the current vertex. The prediction residual R can be coded by fixed-length coding, exponential-Golomb coding, arithmetic coding, etc. Thus, the decoder can reconstruct the current vertex based on the predicted value and the prediction residual, and the predicted value can be determined based on a prediction index decoded from a prediction list.

[0100] 7 shows a flowchart outlining a process (700) according to one embodiment of the present disclosure. The process (700) may be used in an encoder, such as a video encoder. In various embodiments, the process (700) is performed by a processing circuit, such as a processing circuit performing the functions of a video encoder (103), a processing circuit performing the functions of a video encoder (303), or the like. In some embodiments, the process (700) is implemented by software instructions, such that the processing circuit performs the process (700) when it executes the software instructions. The process begins at (S701) and proceeds to (S710).

[0101] In step (S710), a plurality of candidate predictions for a current vertex are determined. The current vertex is one of a plurality of vertices of a mesh. Each of the plurality of candidate predictions is determined based on each of a plurality of triangles in the mesh and includes a two-dimensional (2D) coordinate within a 2D region.

[0102] In step (S720), an average prediction of multiple candidate predictions is calculated.

[0103] In step S730, a 2D prediction for the current vertex is selected from a prediction list including multiple candidate predictions and an average prediction, where the selected 2D prediction corresponds to a threshold prediction difference between the current vertex and each predictor in the prediction list.

[0104] In step S740, a three-dimensional (3D) prediction of the current vertex is determined based on one or more neighboring vertices of the current vertex in the mesh, the 3D prediction including 3D coordinates within the 3D domain.

[0105] In step (S750), a prediction residual including a prediction error of the current vertex is encoded, where the prediction residual is obtained based on the selected 2D prediction and the determined 3D prediction of the current vertex.

[0106] In one example, to determine multiple candidate predictions for a current vertex, a first triangle among the multiple triangles is determined for the current vertex, the first triangle shares an edge with a second triangle among the multiple triangles, the current vertex is included in the second triangle and is on the opposite side of the shared edge, and the first prediction of the multiple candidate predictions is determined based on the determined first triangle via parallelogram prediction, in which the first prediction and the first triangle form a first parallelogram.

[0107] In some embodiments, to select a 2D prediction for the current vertex, a prediction list for the current vertex is determined. The predictors in the prediction list include an average prediction and multiple candidate predictions following the average prediction in the prediction list. The order of the multiple candidate predictions in the prediction list is based on the order of the multiple triangles corresponding to the multiple candidate predictions. A prediction index for each predictor in the prediction list is further determined.

[0108] In some embodiments, the triangles are ordered based on an edge breaker algorithm in which the triangles are labeled in a spiral triangle spanning tree order.

[0109] In some embodiments, to select a 2D prediction for the current vertex, a prediction difference between each of the predictors in the prediction list and the current vertex is determined. The 2D prediction is selected from the predictors in the prediction list such that the selected 2D prediction corresponds to the smallest prediction difference of the prediction differences.

[0110] In some embodiments, a 2D prediction is selected within the subset of the prediction list such that the 2D prediction corresponds to the smallest prediction difference within the subset of the prediction list.

[0111] In one example, the 3D prediction of the current vertex is determined based on delta prediction, where the 3D prediction is determined as a neighboring vertex of one of the one or more neighboring vertices. In one example, the 3D prediction of the current vertex is determined based on parallelogram prediction, where the 3D prediction and three neighboring vertices of the one or more neighboring vertices form a parallelogram.

[0112] In some embodiments, to encode the prediction residual, a predicted value of the current vertex is determined based on one of the 2D prediction and the 3D prediction, the one of the 2D prediction and the 3D prediction having a smaller prediction difference than another one of the 2D prediction and the 3D prediction, and a prediction residual indicating the difference between the predicted value and the current vertex is further encoded.

[0113] In some embodiments, to encode the prediction residual, a predicted value of the current vertex is determined based on the average of the 2D prediction and the 3D prediction, and a prediction residual indicating the difference between the predicted value and the current vertex is further encoded.

[0114] In one example, index information indicating a prediction index of a selected 2D prediction in a prediction list is encoded. In one example, a flag is further encoded. The flag indicates that the predicted value of the current vertex is determined based on one of a 2D prediction, a 3D prediction, or an average of the 2D prediction and the 3D prediction.

[0115] The process then proceeds to (S799) and ends.

[0116] The process (700) may be adapted as appropriate. Steps of the process (700) may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.

[0117] 8 shows a flowchart outlining a process (800) according to one embodiment of the present disclosure. The process (800) may be used in a decoder, such as a video decoder. In various embodiments, the process (800) is performed by a processing circuit, such as a processing circuit performing the functions of the video decoder (110), a processing circuit performing the functions of the video decoder (210), or the like. In some embodiments, the process (800) is implemented in software instructions, such that the processing circuit performs the process (800) when the processing circuit executes the software instructions. The process begins at (S801) and proceeds to (S810).

[0118] In step (S810), encoded information of a mesh including a plurality of triangles and a plurality of vertices is received. The encoded information includes index information of a current vertex among the plurality of vertices. The index information indicates a two-dimensional (2D) prediction of the current vertex. The 2D prediction of the current vertex includes a 2D coordinate within the 2D region.

[0119] In step (S820), a plurality of candidate predictions for the current vertex are determined based on the plurality of triangles, each of the plurality of candidate predictions corresponding to a respective one of the plurality of triangles.

[0120] In step S830, a 2D prediction of the current vertex is selected from a plurality of candidate predictions based on the index information, the selected 2D prediction corresponding to a threshold prediction difference between the current vertex and each of the plurality of candidate predictions.

[0121] In step (S840), a three-dimensional (3D) prediction of the current vertex is determined based on one or more neighboring vertices of the current vertex in the mesh, the 3D prediction including 3D coordinates within the 3D domain.

[0122] In step (S850), the current vertex is reconstructed based on the selected 2D prediction and the determined 3D prediction of the current vertex.

[0123] The process then proceeds to (S899) and ends.

[0124] The process 800 may be adapted as appropriate. Steps in the process 800 may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.

[0125] The techniques described above may be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media, such as non-transitory computer-readable storage media. For example, Figure 9 illustrates a computer system (900) suitable for implementing certain embodiments of the disclosed subject matter.

[0126] Computer software can be encoded using any suitable machine code or computer language that can be subject to mechanisms such as assembly, compilation, linking, etc. to create code including instructions that can be executed directly, or via interpretation, microcode execution, etc., by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., processing circuitry.

[0127] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, IoT devices, etc.

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

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

[0130] The input human interface devices may include one or more (only one of each) of a keyboard (901), a mouse (902), a trackpad (903), a touchscreen (910), a data glove (not shown), a joystick (905), a microphone (906), a scanner (907), and a camera (908).

[0131] The computer system (900) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen (910), data gloves (not shown), or joystick (905), although some haptic feedback devices may not function as input devices), audio output devices (e.g., speakers (909), headphones (not shown), etc.), visual output devices (e.g., screens (910) including CRT screens, LCD screens, plasma screens, and OLED screens, each with or without touchscreen input capabilities and each with or without haptic feedback capabilities—some of which are capable of two-dimensional visual output or output in more than three dimensions via means such as stereo output), virtual reality glasses (not shown), holographic displays, smoke tanks (not shown), and printers (not shown).

[0132] The computer system (900) may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (920) along with media such as CD / DVD (921), thumb drives (922), removable hard drives or solid state drives (923), legacy magnetic media such as tape and floppy disks (not shown), dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown), etc.

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

[0134] The computer system (900) also includes an interface (954) to one or more communication networks (955). The networks may be, for example, wireless, wired, or optical. The networks may further be local, wide-area, metropolitan, vehicular, industrial, real-time, delay-tolerant, etc. Examples of networks include local area networks such as Ethernet; cellular networks including WLAN, GSM, 3G, 4G, 5G, LTE, etc.; television wired or wireless wide-area digital networks including cable, satellite, and terrestrial television; vehicular and industrial networks including CANBus; and the like. Certain networks require an external network interface adapter attached to a particular general-purpose data port (e.g., a USB port on the computer system (900)) or peripheral bus (949); others are typically integrated into the core of the computer system (900) by being attached to a system bus, as described below (e.g., an Ethernet interface may be integrated into a PC computer system, or a cellular network interface may be integrated into a smartphone computer system). Using any of these networks, the computer system (900) can communicate with other entities. Such communications can be one-way, receive-only (e.g., TV broadcasts), transmit-only one-way (e.g., CANbus to a specific CANbus device), or bidirectional, for example, to other computer systems using local or wide-area digital networks. As explained above, each of these networks and network interfaces can use specific protocols and protocol stacks.

[0135] The aforementioned human interface devices, human access storage devices, and network interfaces may be attached to the core (940) of the computer system (900).

[0136] The core (940) may include one or more central processing units (CPUs) (941), graphics processing units (GPUs) (942), dedicated programmable processing units (943) in the form of field programmable gate arrays (FPGAs), task-specific hardware accelerators (944), graphics adapters (950), etc. These devices may be connected through a system bus (948), along with read-only memory (ROM) (945), random access memory (946), and internal mass storage (947) such as a non-user-accessible internal hard drive or SSD. In some computer systems, the system bus (948) may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus (948) or through a peripheral bus (949). In one example, a screen (910) may be connected to the graphics adapter (950). Architectures for peripheral buses include PCI, USB, etc.

[0137] The CPU (941), GPU (942), FPGA (943), and accelerator (944) can execute specific instructions that, in combination, may constitute the aforementioned computer code. The computer code can be stored in ROM (945) or RAM (946). Temporary data can also be stored in RAM (946), while permanent data can be stored, for example, in internal mass storage (947). Fast storage and retrieval from any of the memory devices can be enabled through the use of cache memory, which can be closely associated with one or more of the CPU (941), GPU (942), mass storage (947), ROM (945), RAM (946), etc.

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

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

[0140] The use of "at least one of" or "one of" in this disclosure is intended to include any one or combination of the listed elements. For example, a reference to at least one of A, B, or C; at least one of A, B, and C; at least one of A, B, and / or C; or at least one of A through C is intended to include A only, B only, C only, or any combination thereof. A reference to one of A or B and one of A and B is intended to include A or B, or (A and B). The use of "one of" does not exclude any combination of the listed elements, where applicable, such as when the elements are not mutually exclusive.

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

[0142] 100 video processing system, 101 video source, 102 stream, 103 video encoder, 104 video data, 105 streaming server, 106 client subsystem, 107 video data, input copy of video data, 108 client subsystem, 109 video data, 110 video decoder, 111 video picture, 112 display, 113 capture subsystem, 120 electronic device, 130 electronic device, 201 channel, 210 video decoder, 212 rendering device, 215 buffer memory, 220 parser, 221 symbol, 230 electronic device, 231 receiver, 251 scaler / inverse transform unit, 252 intra-picture prediction unit, intra-prediction unit, 253 motion compensation prediction unit, 255 aggregator, 256 loop filter unit, 257 reference picture memory, 258 picture buffer, 301 video source, 303 video encoder, 320 Electronic device, 330, source coder, 332, coding engine, 333, local video decoder, local decoder, 334, reference picture memory, 335, predictor, 340, transmitter, 343, video sequence, 345, entropy coder, 350, controller, 360, communication channel, 400A, mesh, 400B, mesh, 402, vertex, 404, predicted vertex, 406, vertex, 408, vertex, 410, vertex, 412, triangle, 414, predicted triangle, 416, edge, 418, triangle, 420, vertex, 422, predicted vertex, 424, predicted vertex, 426, triangle, 428, triangle, 430, predicted triangle, 432, predicted triangle, 434, triangle, 436, triangle, 438, vertex, 440, vertex, 442, vertex, 444, shared edge, 446, shared edge, 500 Mesh, 502 Triangle, 504 Type E triangle, 700 Process, 800 Process, 900 Computer system architecture, 901 Keyboard, 902 Mouse, 903 Trackpad, 905 Joystick, 906 Microphone, 907 Scanner, 908 Camera, 909 Speaker, 910 Touchscreen, 921 Media, 922 Thumbdrive, 923 Solid-state drive, 940 Core, 941Central processing unit, CPU, 942 Graphics processing unit, GPU, 943 Special purpose programmable processing unit, FPGA, 944 Hardware accelerator, 945 Read only memory, ROM, 946 Random access memory, 947 Core internal mass storage, 948 System bus, 949 Peripheral bus, 950 Graphics adapter, 954 Interface, 955 Communication network

Claims

1. 1. A method of mesh processing performed in a video encoder, comprising: determining a plurality of candidate predictions for a current vertex, the current vertex being one of a plurality of vertices of a mesh, each of the plurality of candidate predictions being determined based on a respective one of a plurality of triangles in the mesh, the candidate predictions including a two-dimensional (2D) coordinate within a 2D domain; calculating an average prediction of the plurality of candidate predictions; selecting a 2D prediction for the current vertex from a prediction list comprising the plurality of candidate predictions and the average prediction; determining a prediction difference between each of the predictors in the prediction list and the current vertex; selecting the 2D prediction from the predictors in the prediction list such that the selected 2D prediction corresponds to a minimum prediction difference of the prediction differences; selecting a 2D prediction of the current vertex, comprising: determining a three-dimensional (3D) prediction of the current vertex based on one or more neighboring vertices of the current vertex in the mesh, the 3D prediction including 3D coordinates within a 3D domain; encoding a prediction residual including a prediction error of the current vertex, the prediction residual being obtained based on the selected 2D prediction and the determined 3D prediction of the current vertex; A method comprising:

2. The step of determining the plurality of candidate predictions for the current vertex comprises: determining a first triangle of the plurality of triangles for the current vertex, the first triangle sharing an edge with a second triangle of the plurality of triangles, the current vertex being contained in the second triangle and on the other side of the shared edge; determining a first prediction of the plurality of candidate predictions based on the determined first triangle via a parallelogram prediction, wherein the first prediction and the first triangle form a first parallelogram; The method of claim 1 further comprising:

3. The step of selecting a 2D prediction of the current vertex comprises: determining a prediction list for the current vertex, wherein predictors in the prediction list include the average prediction and the plurality of candidate predictions following the average prediction in the prediction list, and an order of the plurality of candidate predictions in the prediction list is based on an order of the plurality of triangles corresponding to the plurality of candidate predictions; determining a prediction index for each of the predictors in the prediction list; The method of claim 2 further comprising:

4. The method of claim 3 , wherein the plurality of triangles is ordered based on an edge breaker algorithm in which the plurality of triangles are labeled in a spiral triangle spanning tree order.

5. The step of selecting the 2D prediction of the current vertex comprises: selecting the 2D prediction in the subset of prediction lists such that the 2D prediction corresponds to the smallest prediction difference in the subset of prediction lists; The method of claim 1 further comprising:

6. The step of determining the 3D prediction of the current vertex comprises: determining a 3D prediction of the current vertex based on a delta prediction, the 3D prediction of which is determined as a neighboring vertex of one or more neighboring vertices; and determining the 3D prediction of the current vertex based on a parallelogram prediction, wherein the 3D prediction and three neighboring vertices of the one or more neighboring vertices form a parallelogram; The method of claim 1 , further comprising:

7. The step of encoding the prediction residual comprises: determining a predicted value of the current vertex based on one of the 2D prediction and the 3D prediction, the one of the 2D prediction and the 3D prediction having a smaller prediction difference than another one of the 2D prediction and the 3D prediction; encoding the prediction residual indicating the difference between the prediction and the current vertex; The method of claim 1 further comprising:

8. The step of encoding the prediction residual comprises: determining a predicted value for the current vertex based on an average of the 2D prediction and the 3D prediction; encoding the prediction residual indicating the difference between the prediction and the current vertex; The method of claim 1 further comprising:

9. encoding index information indicating the prediction index of the selected 2D prediction in the prediction list; encoding a flag indicating that the predicted value of the current vertex is determined based on one of the 2D prediction, the 3D prediction, or an average of the 2D prediction and the 3D prediction; The method of claim 3 further comprising:

10. An apparatus for mesh processing, comprising a processing circuit configured to perform the method of any one of claims 1 to 9.

11. A computer program comprising instructions that, when executed by a processor, cause the processor to perform the method of any one of claims 1 to 9.

Citation Information

Patent Citations

  • Video signal transmitter

    JP1993227512A

  • Motion compensation method for moving picture

    JP1995030900A

  • Moving picture prediction encoding method and its decoding method, and apparatus for the same

    JP2003116141A

  • Method and device for encoding and decoding key value data of coordinate interpolator

    JP2003248838A

  • Property information encoding device of mesh object

    JP2005339579A