Methods and apparatus for mesh processing

Parallelogram prediction and edge breaker algorithms improve mesh compression by efficiently encoding vertex positions, addressing inefficiencies in existing standards for dynamic meshes, especially in real-time communication and AR/VR applications.

JP7842231B2Active Publication Date: 2026-04-07TENCENT AMERICA LLC
View PDF 3 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2023-05-16
Publication Date
2026-04-07

Smart Images

  • Figure 0007842231000008
    Figure 0007842231000008
  • Figure 0007842231000009
    Figure 0007842231000009
  • Figure 0007842231000010
    Figure 0007842231000010
Patent Text Reader

Abstract

The method includes determining a plurality of candidate predictions for a current vertex, the current vertex being included in a plurality of vertices of a mesh, a plurality of the candidate predictions being determined based on a plurality of triangles in the mesh, each of the plurality of predictions corresponding to a respective candidate prediction, determining a prediction for the current vertex from the plurality of candidate predictions, the predictions being identified by a predetermined prediction index based on a number of the plurality of candidate predictions for the current vertex being equal to or greater than a threshold, encoding prediction information for the current vertex based on the determined predictions, the prediction information including a prediction index identifying a prediction for the current vertex.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] This application claims priority to U.S. Patent Application No. 18 / 144,686, titled "Vertex Position Coding in Mesh Compression," filed on 8 July 2022, U.S. Provisional Application No. 63 / 359,669, "Vertex Position Coding in Mesh Compression," which is incorporated herein by reference in its entirety.

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

[0003] The description of “Background Art” provided herein is intended to provide a general context for this disclosure. The works of the inventors named herein, to the extent described in this Background Art, are not considered prior art to this disclosure, either explicitly or implicitly, along with any manner of description that would not ordinarily be considered prior art at the time of filing.

[0004] Advances in three-dimensional (3D) imaging, modeling, and rendering have facilitated the ubiquitous presence of 3D content across multiple platforms and devices. Today, it's possible to film a baby's first steps on one continent and have the baby's grandparents view (and in some cases interact with) that baby on another continent, enjoying a fully immersive experience. To achieve such realism, models are more sophisticated than ever, and massive amounts of data are linked to the creation and consumption of these models. 3D meshes are widely used to represent such immersive content. [Overview of the project] [Problems that the invention aims to solve]

[0005] Aspects of this disclosure provide methods and apparatus for meshing. In some examples, the apparatus for meshing includes a processing circuit. [Means for solving the problem]

[0006] According to one aspect of the present disclosure, a method for mesh processing performed by a video encoder is provided. The method determines a plurality of candidate predictions for a current vertex. The current vertex is included in a plurality of vertices of a mesh. The plurality of candidate predictions are determined based on a plurality of triangles. Each of the plurality of triangles corresponds to a candidate prediction. A prediction for the current vertex is determined from the plurality of candidate predictions. The prediction is identified by a predetermined prediction index based on the number of candidate predictions for the current vertex being greater than or equal to a threshold. Prediction information for the current vertex is encoded based on the determined prediction. The prediction information includes a prediction index that identifies the prediction for the current vertex.

[0007] In some embodiments, the threshold is between 2 and 5.

[0008] In one example, to determine multiple candidate predictions for the current vertex, a first triangle is determined from among the multiple triangles with respect to the current vertex, and the first triangle shares an edge with a second triangle from among the multiple triangles. The current vertex is included in the second triangle and lies on the opposite side of the shared edge. Based on the first triangle determined by the first candidate prediction and the parallelogram prediction in which the first triangle forms a first parallelogram, a first candidate prediction from among the multiple candidate predictions is determined.

[0009] In one example, in order to determine the multiple candidate predictions for the current vertex, the average prediction of the multiple candidate predictions is determined.

[0010] In one example, to determine the prediction for the current vertex, a list of predictions for the current vertex is determined. The candidate predictors in the prediction list include the average prediction and a plurality of candidate predictions following the average prediction. The order of the plurality of candidate predictions in the prediction list is based on the order of the plurality of triangles corresponding to the plurality of candidate predictions. Each of the candidate predictors in the prediction list is associated with a prediction index.

[0011] In some embodiments, the multiple triangles are ordered based on an edge breaker algorithm that labels them in a spiral triangle spanning tree order.

[0012] In one example, in response to the number of candidate predictions for the current vertex being equal to the threshold, the prediction index is predetermined as the first prediction index, and the prediction for the current vertex is determined as the first candidate predictor of the candidate predictors in the prediction list according to the predetermined prediction index. In another example, in response to the number of candidate predictions for the current vertex being greater than the threshold, the prediction index is predetermined as the second prediction index, and the prediction for the current vertex is determined as the second candidate predictor of the candidate predictors in the prediction list according to the predetermined prediction index. In yet another example, in response to the number of candidate predictions for the current vertex being greater than or equal to the threshold, the prediction index is predetermined as the third prediction index, and the prediction for the current vertex is determined as the third candidate predictor of the candidate predictors in the prediction list according to the predetermined prediction index.

[0013] In one example, to determine the prediction of the current vertex, the prediction difference between each of the candidate predictors in the prediction list and the current vertex is determined. The prediction corresponding to the smallest prediction difference among the candidate predictors in the prediction list is then determined.

[0014] In one example, to determine the prediction of the current vertex, a prediction having the minimum prediction error within a subset of candidate predictors of the prediction list is determined.

[0015] In some embodiments, for each candidate predictor in the prediction list, an index of each prediction is determined based on one of fixed-length coding, variable-length coding, and differential coding.

[0016] In some embodiments, the prediction information of the current vertex includes residual information. The residual information indicates the difference between the current vertex and the determined prediction. In some embodiments, the residual information may be encoded. For example, the residual information may be encoded based on one of fixed-length coding, exponential Golomb coding, and arithmetic coding.

[0017] )2]]According to another aspect of the present disclosure, an apparatus is provided. The apparatus includes a processing circuit. The processing circuit may be configured to execute any of the methods for mesh processing described above.

[0018] When an aspect of the present disclosure is executed by a computer, a non-transitory computer-readable medium storing instructions for causing the computer to execute any of the methods for mesh processing described above is further provided.

Brief Description of the Drawings

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

[0020] [Figure 1] FIG. 1 is a schematic diagram of an exemplary block diagram of a video processing system (100). [Figure 2] FIG. 2 is a schematic diagram of an exemplary block diagram of a decoder. [Figure 3] FIG. 3 is a schematic diagram of an exemplary block diagram of an encoder. [Figure 4A]Schematic diagram of a first exemplary parallelogram prediction according to some embodiments of the present disclosure. [Figure 4B] Schematic diagram of a second exemplary parallelogram prediction according to some embodiments of the present disclosure. [Figure 5A] Examples of five patch configurations of the edge breaker algorithm are shown. [Figure 5B] An exemplary mesh traversal by the edge breaker algorithm is shown. [Figure 6] Schematic diagram showing an example of predicting vertices based on parallelogram prediction. [Figure 7] Flowchart showing an overview of a process according to some embodiments of the present disclosure. [Figure 8] Flowchart showing an overview of another process according to some embodiments of the present disclosure. [Figure 9] Schematic diagram of a computer system according to one embodiment.

Mode for Carrying Out the Invention

[0021] FIG. 1 shows a block diagram of a video processing system (100) in some examples. The video processing system (100) is an example of the use of the disclosed subject matter and is a video encoder and a video decoder in a streaming environment. The disclosed subject matter is equally applicable to other image and video-related applications, including, for example, video conferencing, digital TV, streaming services, and storage of compressed video on digital media such as CDs, DVDs, memory sticks, etc.

[0022] The video processing system (100) includes a shooting subsystem (113) which may include a video source (101). The video source (101) may include one or more images captured by a camera and / or images generated by a computer. For example, a digital camera creates a stream of uncompressed video pictures (102). In one example, the stream of video pictures (102) includes samples acquired by the digital camera. The stream of video pictures (102), shown in bold to emphasize the high data volume compared to encoded video data (104) (or encoded video bitstream), can be processed by an electronic device (120) which includes a video encoder (103) coupled to the video source (101). The video encoder (103) may include hardware, software, or a combination thereof to enable or implement embodiments of the disclosed subject matter, as will be described in more detail below. The encoded video data (104) (or encoded video bitstream), shown in thin lines to highlight the lower data volume compared to the video picture (102) stream, can be stored in the streaming server (105) for future use. One or more streaming client subsystems, such as client subsystems (106) and (108) in Figure 1, can access the streaming server (105) to retrieve copies (107) and (109) of the encoded video data (104). The client subsystem (106) may include, for example, a video decoder (110) in an electronic device (130). The video decoder (110) decodes an inbound copy (107) of the encoded video data and creates an outbound stream of a video picture (111) that can be rendered on a display (112) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, encoded video data (104), (107), and (109) (e.g., video bitstream) can be encoded according to a specific video coding / compression standard.Examples of these standards include ITU-T Recommendation H.265. For example, an evolving video coding standard is informally known as Multipurpose Video Coding (VVC). The disclosed subject matter may be used in the context of VVC.

[0023] The electronic devices (120) and (130) may include other components (not shown). For example, electronic device (120) may include a video decoder (not shown), and electronic device (130) may include a video encoder (not shown).

[0024] Figure 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) can be used in place of the video decoder (110) in the example of Figure 1.

[0025] The receiver (231) may 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 may be received from a channel (201), which may be a hardware / software link to a storage device that stores coded video data. The receiver (231) may receive coded video data together with other data, e.g., coded audio data and / or auxiliary data streams, which may be transferred to their respective usage entities (not shown). The receiver (231) may isolate the coded video sequences from other data. To prevent network jitter, a buffer memory (215) may 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 cases, the buffer memory (215) may reside outside the video decoder (210) (not shown). In yet other cases, for example, a buffer memory (not shown) may reside outside the video decoder (210) to prevent network jitter, and further, for example, another buffer memory (215) may reside inside the video decoder (210) to handle playback timing. When the receiver (231) receives data from a storage / transfer device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (215) may not be necessary and may be made small. For use in best-effort packet networks such as the Internet, the buffer memory (215) may be necessary, and the buffer memory (215) may be relatively large, advantageously adaptive in size, and may be at least partially implemented in an operating system or similar element (not shown) outside the video decoder (210).

[0026] The video decoder (210) may include a parser (220) that reconstructs symbols (221) from the coded video sequence. These categories of symbols include information used to manage the operation of the video decoder (210) and potentially include information to control a rendering device, such as a rendering device (212) (e.g., a display screen), which is not an integral part of the electronic device (230) but can be coupled to the electronic device (230) as shown in Figure 2. The control information for the rendering device may be in the form of Auxiliary Enhancement Information (SEI) messages or video usability information (VUI) parameter set fragments (not shown). The parser (220) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence can conform to video coding techniques or standards and may follow a variety of principles, including variable-length coding, Huffman coding, and context-sensitive or non-context-sensitive arithmetic coding. The parser(220) 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. Subgroups may include picture groups (GOP), pictures, tiles, slices, macroblocks, coding units (CU), blocks, transform units (TU), and predictive units (PU). The parser(220) may also extract information such as transform coefficients, quantization parameter values, and motion vectors from the coded video sequence.

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

[0028] The reconstruction of the symbol (221) may involve multiple different units, depending on the type of the encoded video picture or part thereof (e.g., interpicture and intrapicture, interblock and intrablock) and other factors. Which units are involved and how they are involved can be controlled by subgroup control information parsed from the encoded video sequence by the parser (220). The flow of such subgroup control information between the parser (220) and the following multiple units is not shown for clarity.

[0029] In addition to the functional blocks already described, the video decoder (210) can be conceptually subdivided into several functional units, as described below. In a real implementation operating under commercial constraints, many of these units can interact closely with each other and integrate with each other at least partially. However, the following conceptual subdivision into functional units is appropriate for illustrating the disclosed subject.

[0030] The first unit is the scaler / inverse unit (251). The scaler / inverse unit (251) receives control information, including the transformation to be used, block size, quantization factor, and quantization scaling matrix, as well as the quantized transformation coefficients, from the parser (220) as symbols (221). The scaler / inverse unit (251) can output a block containing sample values ​​that can be input to the aggregator (255).

[0031] In some cases, the output samples of the scaler / inverse unit (251) may relate to intra-coded blocks. Intra-coded blocks are blocks that do not use prediction information from a pre-reconstructed picture, but can use prediction information from a pre-reconstructed portion of the current picture. Such prediction information can 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 the surrounding already reconstructed information taken from the current picture buffer (258). The current picture buffer (258) buffers, for example, a partially reconstructed current picture and / or a fully reconstructed current picture. In some cases, the aggregator (255) adds the prediction information generated by the intra-prediction unit (252) to the output sample information provided by the scaler / inverse unit (251), sample by sample.

[0032] In other cases, the output samples of the scaler / inverse unit (251) may relate to an intercoded, potentially motion-compensated block. In such cases, the motion-compensated prediction unit (253) may access the reference picture memory (257) to retrieve samples to be used for prediction. After the retrieved samples are motion-compensated according to the symbols (221) related to the block, these samples may be added to the output of the scaler / inverse unit (251) by the aggregator (255) to generate output sample information (in this case, referred to as residual samples or residual signals). The address in the reference picture memory (257) from which the motion-compensated prediction unit (253) retrieves prediction samples can be controlled by motion vectors available to the motion-compensated prediction unit (253) in the form of symbols (221) which may have X, Y, and reference picture components, for example. Motion compensation may also include interpolation of sample values ​​retrieved from the reference picture memory (257) when the exact motion vectors of subsamples are in use, motion vector prediction mechanisms, etc.

[0033] The output samples of the aggregator (255) may be used in a loop filter unit (256) by various loop filtering techniques. Video compression techniques may include in-loop filtering techniques that are contained in the coded video sequence (also called coded video bitstream) and controlled by parameters made available to the loop filter unit (256) as symbols (221) from the parser (220). Video compression may depend on metadata obtained during decoding of earlier parts (in decoding order) of the coded picture or coded video sequence, as well as on pre-reconstructed and loop-filtered sample values.

[0034] The output of the loop filter unit (256) can be a sample stream that can be output to the rendering device (212) and can also be stored in the reference picture memory (257) for use in future interpicture prediction.

[0035] A particular coded picture, once fully reconstructed, can be used as a reference picture for future predictions. For example, once the coded picture corresponding to the current picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (220)), the current picture buffer (258) can become part of the reference picture memory (257) and can be reallocated to a new current picture buffer before starting the reconstruction of the next coded picture.

[0036] The video decoder (210) can perform decoding operations according to a given video compression technology or standard such as ITU-T Recommendation H.265. The coded video sequence may conform to the syntax specified by the video compression technology or standard being used, in the sense that the coded video sequence conforms to both the syntax of the video compression technology or standard and the profile documented in the video compression technology or standard. Specifically, a profile can select a particular tool from all the tools available in the video compression technology or standard as the only tool available in that profile. Compliance also requires that the complexity of the coded video sequence be within the limits imposed by the video compression technology or standard level. 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. In some cases, the limits set by the level may be further limited by the virtual reference decoder (HRD) specification and metadata for HRD buffer management signaled in the coded video sequence.

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

[0038] Figure 3 shows an exemplary block diagram of a video encoder (303). The video encoder (303) is contained within 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 Figure 1.

[0039] The video encoder (303) can receive video samples from a video source (301) (not part of the electronic device (320) in the example in Figure 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).

[0040] 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 have any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, etc.), any color space (e.g., BT.601 Y CrCB, RGB, etc.), 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 (301) may be a storage device that stores pre-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 a series of separate pictures that are given motion when viewed sequentially. The pictures themselves may be organized as a spatial array of pixels, each pixel may contain one or more samples depending on the sampling structure, color space, etc., in use. The following description will focus on samples.

[0041] According to one embodiment, the video encoder (303) can encode pictures of a source video sequence in real time or under any other required time constraints and compress them into an encoded video sequence (343). Implementing an appropriate coding speed is one of the functions of the controller (350). In some embodiments, the controller (350) controls and is functionally coupled to other functional units, as described below. For clarity, the couplings are not illustrated. Parameters set by the controller (350) may include rate control-related parameters (picture skip, quantization, lambda values ​​for rate distortion optimization techniques, etc.), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (350) may be configured to have other appropriate functions related to the video encoder (303) optimized for a particular system design.

[0042] In some embodiments, the video encoder (303) is configured to operate in a coding loop. For an overly simplified explanation, in one example, the coding loop may include a source coder (330) (responsible for creating symbols, such as a symbol stream based on the input and reference pictures to be coded) and a (local) decoder (333) embedded in the video encoder (303). The decoder (333) reconstructs the symbols to create sample data in a similar manner to that created by a (remote) decoder. The reconstructed sample stream (sample data) is fed into the reference picture memory (334). Because decoding the symbol stream yields bit-accurate results regardless of the (local or remote) decoder's location, the contents of the reference picture memory (334) are also bit-accurate between the local and remote encoders. In other words, the predictive portion of the encoder "sees" the exact same sample values ​​as the decoder "sees" when using predictions during decoding, as reference picture samples. This fundamental principle of reference picture synchronization (and the drift that occurs when synchronization cannot be maintained, for example, due to channel errors) is also used in several related technologies.

[0043] The operation of the “local” decoder (333) may be similar to that of a “remote” decoder, such as the video decoder (210), which has already been described in detail in the preceding paragraph in relation to Figure 2. However, also briefly referring to Figure 2, since symbols are available and the encoding / decoding of symbols to the encoded video sequence by the entropy coder (345) and parser (220) may be reversible, 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).

[0044] In one embodiment, decoder techniques other than parsing / entropy decoding present in the decoder are identical or substantially identical in functional form to those present in the corresponding encoder. Therefore, the disclosed subject matter focuses on the operation of the decoder. A description of the encoder techniques can be omitted, as it is the inverse of the comprehensively described decoder techniques. More detailed descriptions are provided below in specific areas.

[0045] During operation, in some examples, the source coder (330) may perform motion-compensated predictive coding, which predictively codes the input picture by referencing one or more pre-coded pictures from a video sequence designated as “reference pictures”. In this way, the coding engine (332) codes the difference between the pixel blocks of the input picture and the pixel blocks of the reference picture that may be selected as the prediction criterion for the input picture.

[0046] The local video decoder (333) can decode the coded video data of a picture that may be designated as a reference picture based on symbols created by the source coder (330). The operation of the coding engine (332) may be advantageously a lossy process. When coded video data can be decoded by a video decoder (not shown in Figure 3), the reconstructed video sequence may typically be a replica of the source video sequence with some errors. The local video decoder (333) can recreate the decoding process that may be performed on the reference picture by the video decoder and store the reconstructed reference picture in the reference picture memory (334). In this way, the video encoder (303) can locally store a copy of the reconstructed reference picture that has content (no transmission errors) in common with the reconstructed reference picture acquired by the far-end video decoder.

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

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

[0049] The outputs of all the aforementioned functional units may be entropy-coded by an entropy coder (345). The entropy coder (345) converts the symbols generated by the various functional units into coded video sequences by applying lossless compression to the symbols according to techniques such as Huffman coding, variable-length coding, and arithmetic coding.

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

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

[0052] An intra-picture (I-picture) may be one that can be coded and decoded without using any other picture in the 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 familiar with variations of I-pictures and their respective uses and characteristics.

[0053] A predictive picture (P-picture) may be coded and decoded by intra-prediction or inter-prediction, using up to one motion vector and reference index to predict the sample values ​​of each block.

[0054] A bidirectional predictive picture (B-picture) may be coded and decoded by intra-prediction or inter-prediction using up to two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, a multiple predictive picture may use three or more reference pictures and associated metadata to reconstruct a single block.

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

[0056] The video encoder (303) can perform coding operations in accordance with a specified video coding technique or standard, such as ITU-T Recommendation H.265. During operation, the video encoder (303) can perform various compression operations, including predictive coding operations that utilize the temporal and spatial redundancy of the input video sequence. Therefore, the coded video data may conform to a syntax specified by the video coding technique or standard used.

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

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

[0059] In some embodiments, a dual prediction technique can be used in interpicture prediction. According to the dual prediction technique, two reference pictures are used, such as a first reference picture and a second reference picture, whose decoding order is earlier than the current picture in the video (however, they may be past and future in display order, respectively). 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. The block can be predicted from the combination of the first and second reference blocks.

[0060] Furthermore, merge mode technology can be used for interpicture prediction to improve coding efficiency.

[0061] According to some embodiments of this disclosure, predictions such as interpicture prediction and intrapicture prediction are performed in block units, such as polygons or triangular blocks. For example, according to the HEVC standard, a picture in a series of video pictures is 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. Generally, a CTU contains three coding tree blocks (CTBs), which are one luminance CTB and two saturation CTBs. Each CTU can be recursively quadtree-divided into one or more coding units (CUs). For example, a 64x64 pixel CTU can be divided into one 64x64 pixel CU, or four 32x32 pixel CUs, or sixteen 16x16 pixel CUs. In one example, each CU is analyzed to determine the prediction type of the CU, such as inter-prediction type or intra-prediction type. A CU is divided into one or more prediction units (PUs) depending on its temporal and / or spatial predictability. Generally, each PU contains one luminance prediction block (PB) and two chroma PBs. In one embodiment, the prediction operation in coding (encoding / decoding) is performed in units of prediction blocks. Using a luminance prediction block as an example of a prediction block, the prediction block contains a matrix of pixel values ​​(e.g., luminance values) such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.

[0062] The video encoders (103) and (303) and the video decoders (110) and (210) can be implemented using any suitable technology. In one embodiment, the video encoders (103) and (303) and the video decoders (110) and (210) can be implemented using one or more integrated circuits. In another embodiment, the video encoders (103) and (303) and the video decoders (110) and (210) can be implemented using one or more processors that execute software instructions.

[0063] This disclosure includes embodiments relating to methods and systems for vertex position coding in mesh compression.

[0064] A mesh may contain several polygons that describe the surface of a volume object. Each polygon in a mesh can be defined by the vertices of the corresponding polygon in three-dimensional (3D) space and information about how the vertices are connected (which can be called 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 mappings can typically be described by a set of parametric coordinates, called UV coordinates or texture coordinates, associated with the mesh vertices. A 2D attribute map can be used to store high-resolution attribute information such as texture, normals, and displacements. Such information can be used for various purposes, such as texture mapping and shading.

[0065] Dynamic mesh sequences can require large amounts of data because the dynamic mesh may contain a large 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 have been previously developed by MPEG to handle dynamic meshes with always-on connectivity, time-varying geometry, and vertex attributes. However, these standards do not take into account time-varying attribute maps and connectivity information. Typically, DCC (Digital Content Creation) tools generate such dynamic meshes. However, generating always-on connectivity dynamic meshes, especially under real-time constraints, is difficult for volume acquisition techniques. This type of content (e.g., always-on connectivity dynamic meshes) may not be supported by existing standards. MPEG plans to develop a new mesh compression standard that directly handles dynamic meshes with time-varying connectivity information and optionally time-varying attribute maps. This new mesh compression standard will target 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 will also be considered.

[0066] Mesh geometry information can include vertex connectivity information, 3D coordinates, and 2D texture coordinates. Compressing vertex 3D coordinates, also known as vertex positions, is crucial because it can often consume a significant portion of the overall geometry-related data.

[0067] For simplicity and clarity, embodiments of this disclosure will be described using a triangular mesh as an example. However, other polygonal meshes (e.g., quadrilateral meshes or pentagonal meshes) can also be applied to embodiments of this disclosure. In one example, a triangular mesh is a type of polygonal mesh that includes a series of triangles. The series of triangles can be connected by common edges or corners. Common edges or corners can be represented as mesh vertices.

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

[0069] Multiple parallelogram predictions can be applied to predict the current vertex. In multiple parallelogram predictions, for example, whenever two or more parallelogram predictions are available, the average position obtained from them can be used. Figure 4B shows an example of two parallelogram predictions. As shown in Figure 4B, the current vertex (420) is contained in the first triangle (434) of the mesh (400B). The first triangle (434) may contain vertices ((420), (438), (442)). The first triangle (434) may share an edge (444) with the adjacent triangle (428) of the mesh (400B). The current vertex (420) is contained in the second triangle (436) which contains vertices (420), (438), and (440). The second triangle (436) may share an edge (446) with the adjacent triangle (426) of the mesh (400B). Based on the shared edge (444), a first predicted vertex (or first prediction) (424) can be determined. The first predicted vertex (424) can form a first parallelogram with the adjacent triangle (428). Based on the shared edge (446), a second predicted vertex (or second prediction) (422) can be determined. The second predicted vertex (422) can form a second parallelogram with the adjacent triangle (426). Therefore, the current vertex (420) can be further predicted by the average of the first predicted vertex (424) and the second predicted vertex (422).

[0070] This disclosure provides a method and / or system for vertex position coding for mesh compression. In one embodiment, based on parallelogram prediction, a predicted position value (or predicted or predicted vertex) of the current vertex can be selected from a plurality of candidate position values ​​(or candidate prediction or candidate predicted vertex). The selected predicted vertex can be coded (or identified) by index. The predicted residual between the selected predicted vertex and the current vertex can be further coded.

[0071] This disclosure proposes several methods and / or systems for vertex position prediction in mesh compression. These methods and / or systems can be applied individually or in any combination. These methods can be applied to static meshes as well as dynamic meshes. A static mesh may contain only one frame, and the mesh content of a static mesh does not need to 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, for example, to 2D texture coordinate prediction or more general multiple prediction-based schemes.

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

[0073] Figures 5A and 5B illustrate exemplary ordering of triangles and vertices in a mesh based on the edgebreaker algorithm. Figure 5A shows five exemplary patch configurations of the edgebreaker algorithm. As shown in Figure 5A, v is the central vertex of the patch, and T is the current triangle. The active gate (or current triangle) in each patch can be represented as T. Patch C can provide a complete triangle that spreads out (or rotates) in a sector around v. Patch L can have one or more missing triangles to the left of the active gate T. Patch R can have one or more missing triangles to the right of the active gate T. Patch E has v adjacent only to T. Patch S can have one or more missing triangles to a position other than to the left or right of the active gate T. Figure 5B shows an exemplary traversal of mesh (500) in which the triangles of mesh (500) can be ordered based on the traversal of the edgebreaker algorithm. As shown in Figure 5B, the triangles in mesh (500) can traverse along a spiral triangle spanning tree. For example, a traversal can begin at triangle (502) of type C (or C-patch). The traversal can then proceed along a branch adjacent to the right edge of triangle (e.g., (502)). The traversal can stop when it reaches triangle (e.g., (504)) of type E. According to the edgebreaker algorithm, the triangles of mesh (500) can be traversed (or ordered) in the sequence CRSRLECRRRLE, which can be shown in Figure 5B. Each vertex of the triangles in mesh (500) can also be ordered based on the order of the triangles.

[0074] 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 opposing vertices of the two triangles as the predictor for the other. As shown in Figure 6, two triangles ABC and triangle DBC can share edge BC. The coordinates of vertices A, B, and C, which have already been coded, can be applied to predict the coordinate of D. For example, the predicted vertex (or prediction) D' can be determined based on the parallelogram prediction. The coordinates of the predicted vertex D' can be determined by equation (1) as follows:

[0075]

number

[0076] In this way, the four vertices (D', B, A, C) can form a parallelogram, as shown in Figure 6. Since each vertex has a 3D coordinate, equation (1) can be used to calculate each coordinate component of the predicted vertex D'. For example, assuming that the subscripts x, y, and z represent 3D coordinates in xyz space, the coordinate components of the predicted vertex D' in xyz space can be given by equations (2) to (4).

[0077]

number

number

number

[0078] If the position values ​​of vertices A, B, and C can be coded and used for prediction, then triangle ABC can be represented as a candidate prediction (or prediction triangle) for vertex D. Depending on the number of existing coded vertices and shared edges, a vertex may have 0, 1, 2, or more candidate predictions. If there are currently multiple candidate predictions for a vertex, the candidates can be ordered based on the order of the triangles in the mesh. For example, triangles can be ordered based on an edgebreaker algorithm, for instance.

[0079] This disclosure allows for the determination of multiple predictions (or parallelogram predictions) for the current vertex. The average (or average prediction) of the multiple parallelogram predictions can be further determined. The prediction (or predicted vertex) for the current vertex can be selected from a prediction list. The predictors (or candidate predictors) in the prediction list may include, for example, the available parallelogram predictions and the average of multiple parallelogram predictions. The associated prediction error (also called the prediction residual) can be coded. The prediction error (or prediction residual) can represent the difference between the prediction and the current vertex. In one embodiment, the prediction may correspond to the minimum prediction error between the current vertex and each of the predictors (or candidate predictors) in the prediction list. In one embodiment, predictions can be predefined in the prediction list based on whether the number of predictors (or candidate predictors) in the prediction list is greater than or equal to a threshold. Thus, a specific (or predetermined) predictor in the prediction list can be selected as the prediction for the current vertex according to whether the number of predictors (or candidate predictors) in the prediction list is greater than or equal to a threshold.

[0080] This disclosure allows for the ordering of all triangles within a triangular mesh. For example, triangles can be ordered based on an edge breaker algorithm. Alternatively, all or part of the vertices within a triangular mesh can be ordered. In one example, vertices can be ordered based on the order of the triangles.

[0081] Given a vertex V in a triangular mesh, this vertex V contains N prediction candidates (or prediction triangles). The N prediction candidates are N predicted values ​​V1', V2'…V N It is possible to generate '. For example, as shown in Figure 4B, the current vertex (420) may have two predicted triangles (430) and (432). Each of the predicted triangles (430) and (432) can generate its own predicted value (or predicted vertex), for example (422) and (424). The predicted values ​​of the current vertex can be ordered based on the order of the corresponding predicted triangles in the mesh. If duplicates of predicted values ​​are determined, such duplicates can be removed from the list of predicted values.

[0082] For example, if N=0, there are no available prediction candidates 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 to 0, and the predicted residual R can be set to V. Therefore, V'=0 and R=V. If V is not the first vertex to be coded, the predicted value V' of V can be set to the coded value of a vertex that has been pre-coded in vertex order. Therefore, a pre-coded vertex can be a predictor for vertex V. The predicted residual R can be determined as the difference between vertex V and the predicted value (or predicted vertex) V', i.e., R=V-V'.

[0083] In one example, if N=1, there is only one possible prediction for vertex V. Therefore, the predicted value V' can be determined based on this single prediction candidate, and the predicted residual R can be determined as the difference between V and V', i.e., R = V - V'.

[0084] In one example, if N ≥ 2, there are multiple available prediction candidates for vertex V. Therefore, multiple prediction values ​​(or prediction vertices) can be determined based on multiple prediction candidates. In one embodiment, the average of the prediction values ​​can be considered as an additional predictor V0'. V0' can be determined by equation (5).

[0085]

number

[0086] If the average predicted value V0’ is equal to any one of the predicted values V1’, V2’ … V N ’, either the average predicted value V0’ or the duplicate predicted value can be deleted.

[0087] In one embodiment, 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 corresponds to the predicted value of V i ’ that has the minimum prediction residual with respect to each of V and the predicted value V i ’. In some embodiments, the minimization error (or minimum prediction residual) can be measured by the L 0 norm, the L 1 norm, the L 2 norm, or some other norm. For example, the L 0 norm can be determined as follows in Equation (6).

[0088]

Equation

[0089] Here, V x , V y , V z are the coordinates of V in the xyz space, and V<000001​​​​​​​​On the decoder side, the selected index (e.g., prediction index) can be decoded, and the selected predictor (or predicted value) can be restored from a list of predictors (or candidate 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. It can also consider the average of multiple predicted values ​​as a predictor. The average predicted value and one or more predicted values ​​can be ordered to form a prediction list. In one example, the prediction list generated on the decoder side may be the same as the prediction list generated on the encoder side. Based on the decoded prediction index, the selected predictor can be restored based on the prediction index from the prediction list.

[0091] In one embodiment, if N is equal to a certain value (e.g., 2 ≤ N ≤ 5), the encoder can select a fixed prediction index (e.g., any of indices 0, 1...N) from the prediction list. The fixed prediction index indicates a given predictor (or predicted vertex) for the current vertex. Therefore, the prediction index does not need to be coded. On the decoder side, the decoder can first construct a prediction list. Then, the decoder can reconstruct (or determine) the predictors based on the fixed prediction index. In one example, if N > 2, prediction index 0 can be selected, which can represent the average of multiple predictions. In another example, if N > 2, the prediction index does not need to be coded.

[0092] In one embodiment, the encoder can select or determine a fixed prediction index if N is greater than or equal to a specific value (or threshold). In one example, the specific value (or threshold) may be 2. In another example, the threshold (or specific value) may be between 2 and 10. Therefore, not all prediction indices in the prediction list have to be coded. On the decoder side, the decoder can restore (or determine) a prediction index based on the number of N. For example, if N=2, prediction index 1 can be selected. If N>2, prediction index 0 can be selected. In another example, if n≧2, prediction index 0 can be selected.

[0093] 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. In some cases, if N > M, only the first M prediction candidates are considered for each vertex in the mesh. Thus, the first M prediction candidates V1', V2'…V M The predicted values ​​associated with ' are applied. In one embodiment, the average of the first M predicted values ​​can be determined by equation (7).

[0094]

number

[0095] M can be an integer such as 4. Therefore, a maximum of M (e.g., 4) prediction candidates can be considered. Note that the average prediction V0' can be placed at a different position in the candidate list. In one example, the average prediction V0' may be the first predictor in the prediction candidate list. In another example, the average prediction V0' may be the last predictor in the prediction candidate list. In another example, the average prediction V0' may be the predicted values ​​V1', V2'…V M It can be placed in '.

[0096] V1', V2', ... V are prediction candidates for each vertex V. N If it has 'and mean V0', the selected prediction index may be coded.

[0097] In some embodiments, the prediction index only needs to be coded if there are multiple prediction candidates. For example, if there are two or more prediction candidates available for a vertex, the index indicating the selected prediction candidate can be coded on the encoder side. On the decoder side, the decoder can determine 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.

[0098] In one embodiment, if no prediction candidates are determined, or if only one prediction candidate is determined, the prediction index does not need to be coded. Therefore, the predicted value may be the current vertex itself, or it may be the single prediction candidate. In one embodiment, the prediction index can always be coded, regardless of the number of available predictor candidates. If no predictors are available, the signaled index value may not affect the decoding process on the decoder side.

[0099] In some embodiments, if a fixed prediction index is always selected or predetermined for some specific values ​​of N, the prediction index may not need to be coded. Therefore, the prediction index of a predictor (or candidate predictor) in the candidate list may not need to be coded, and the prediction index selected from the candidate list may not need to be signaled to the decoder.

[0100] In some embodiments, the prediction index does not have to be fixed and can be selected from prediction candidates. If multiple prediction candidates are determined for a given vertex, the prediction index can be coded using, for example, fixed-length coding. For example, if three prediction candidates are determined for a given vertex, four possible prediction indices may be needed: 0, 1, 2, and 3 (where 0 represents the average of candidates 1, 2, and 3). Thus, a two-digit binary number can be applied to represent each of the four prediction indices. Note that different vertices of a triangular mesh may use different fixed lengths. For example, if another vertex has seven prediction candidates, the other vertices can use a three-digit binary number to represent their prediction index. The output of the fixed-length coding can be further compressed by entropy coding, such as arithmetic coding.

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

[0102] Alternatively, the prediction index can be coded differentially, and the prediction index of the current peak can be predicted from a pre-coded prediction index, and the prediction error associated with the prediction index can also be coded. For example, the difference between the first prediction index of a predictor and the second prediction index of a predictor can be coded first. The second prediction index can then be coded based on the difference between the first and second prediction indexes.

[0103] If an upper limit M is set to limit the maximum number of prediction candidates, then if the number of available prediction candidates for vertex V exceeds M, only the first M prediction candidates may be used to predict vertex V. Thus, (M+1) possible prediction indices can be coded, where M represents the first M prediction candidates and 1 represents the average of the first M prediction candidates. If duplicates are determined in the prediction values, the duplicates can be removed. Thus, the possibilities of the prediction index can also be reduced. If a fixed prediction index is always selected, 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.

[0104] In one embodiment, the predicted residual R of the position value (or predicted value) can be coded (or determined). The predicted residual R can represent the difference between the predicted value of the current vertex and the current vertex. The predicted 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 predicted residual, and the predicted value can be determined based on the decoded predicted index from the prediction list.

[0105] Figure 7 is a flowchart illustrating the process (700) according to one embodiment of the present disclosure. Process (700) can be used in an encoder such as a video encoder. In various embodiments, process (700) is executed by processing circuits, such as a processing circuit that performs the functions of a video encoder (103) and a processing circuit that performs the functions of a video encoder (303). In some embodiments, process (700) is implemented with software instructions, so the processing circuit executes process (700) when it executes the software instructions. The process starts at (S701) and proceeds to (S710).

[0106] In step (S710), multiple candidate predictions for the current vertex are determined. The current vertex is included in multiple vertices of the mesh. Multiple candidate predictions are determined based on multiple triangles. Each of the multiple triangles corresponds to one of the candidate predictions.

[0107] In step (S720), the prediction for the current vertex is determined from multiple candidate predictions. The prediction is identified by a predetermined prediction index based on whether the number of candidate predictions for the current vertex is greater than or equal to a threshold.

[0108] In step (S730), prediction information for the current vertex is encoded based on the determined prediction. The prediction information includes a prediction index that identifies the prediction for the current vertex.

[0109] In some embodiments, the threshold is between 2 and 5.

[0110] In one example, to determine multiple candidate predictions for the current vertex, a first triangle is determined from among multiple triangles relative to the current vertex, and this first triangle shares an edge with a second triangle from among multiple triangles. The current vertex is included in the second triangle and lies on the opposite side of the shared edge. Based on the first triangle determined by the first candidate prediction and the parallelogram prediction where the first triangle forms a first parallelogram, a first candidate prediction from among multiple candidate predictions is determined.

[0111] In one example, to determine the current vertex's multiple candidate predictions, the average prediction of the multiple candidate predictions is determined.

[0112] In one example, to determine the prediction for the current vertex, a list of predictions for the current vertex is determined. The candidate predictors in the prediction list include the average prediction and multiple candidate predictions following the average prediction. The order of the multiple candidate predictions in the prediction list is based on the order of multiple triangles corresponding to the multiple candidate predictions. Each candidate predictor in the prediction list is associated with a prediction index.

[0113] In some embodiments, multiple triangles are ordered based on an edge breaker algorithm, which labels them in a spiral triangle spanning tree order.

[0114] In one example, in response to the number of candidate predictions for the current vertex being equal to a threshold, the prediction index is predetermined as the first prediction index, and the prediction for the current vertex is determined as the first candidate predictor in the prediction list according to the predetermined prediction index. In another example, in response to the number of candidate predictions for the current vertex being greater than a threshold, the prediction index is predetermined as the second prediction index, and the prediction for the current vertex is determined as the second candidate predictor in the prediction list according to the predetermined prediction index. In yet another example, in response to the number of candidate predictions for the current vertex being greater than or equal to a threshold, the prediction index is predetermined as the third prediction index, and the prediction for the current vertex is determined as the third candidate predictor in the prediction list according to the predetermined prediction index.

[0115] In one example, to determine the prediction for the current vertex, the prediction difference between each candidate predictor in the prediction list and the current vertex is determined. Further, the prediction corresponding to the smallest prediction difference among the candidate predictors in the prediction list is determined.

[0116] In one example, to determine the current vertex prediction, we select the prediction with the smallest prediction difference within a subset of candidate predictors in the prediction list.

[0117] In some embodiments, each prediction index is determined for each candidate predictor in the prediction list based on one of fixed-length coding, variable-length coding, and differential coding.

[0118] Next, the process proceeds to (S799) and terminates.

[0119] Process (700) can be appropriately adapted. The steps of Process (700) can be modified and / or omitted. Additional steps can be added. Any appropriate implementation order can be used.

[0120] Figure 8 is a flowchart illustrating the process (800) according to one embodiment of the present disclosure. Process (800) can be used in a decoder such as a video decoder. In various embodiments, process (800) is executed by processing circuits such as a processing circuit that performs the functions of a video decoder (110) and a processing circuit that performs the functions of a video decoder (210). In some embodiments, process (800) is implemented with software instructions, so the processing circuit executes process (800) when it executes the software instructions. The process starts at (S801) and proceeds to (S810).

[0121] In step (S810), coding information for a mesh containing multiple triangles and multiple vertices is received.

[0122] In step (S820), multiple candidate predictions for the current vertex are determined. The current vertex is included in multiple vertices of the mesh. Multiple candidate predictions are determined based on multiple triangles, with each of the multiple triangles corresponding to one of the candidate predictions.

[0123] In step (S830), the prediction for the current vertex is determined from multiple candidate predictions. The prediction is indicated by a predetermined prediction index determined based on the fact that the number of candidate predictions for the current vertex is greater than or equal to a threshold.

[0124] In step (S840), the current vertices are reconstructed based on the determined predictions.

[0125] Next, the process proceeds to (S899) and terminates.

[0126] Process (800) can be appropriately adapted. The steps of Process (800) can be modified and / or omitted. Additional steps can be added. Any appropriate implementation order can be used.

[0127] The techniques described above are implemented as computer software using computer-readable instructions and can be physically stored on one or more computer-readable media, such as non-temporary computer-readable storage media. For example, Figure 9 shows a computer system (900) suitable for implementing a particular embodiment of the disclosed subject matter.

[0128] Computer software can be coded using any suitable machine code or computer language that creates code containing instructions that can be assembled, compiled, linked, or otherwise processed by one or more processing circuits such as a computer central processing unit (CPU), graphics processing unit (GPU), or executed directly or by interpretation, microcode execution, etc.

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

[0130] With respect to the computer system (900), the components shown in Figure 9 are essentially illustrative and are not intended to imply any limitation on the use or functionality of computer software implementing embodiments of the present disclosure. The configuration of the components should not be construed as having any dependence or necessity on any one or combination of components shown in the exemplary embodiments of the computer system (900).

[0131] The computer system (900) may include certain human interface input devices. Such human interface input devices can respond to input from one or more human users, for example, through haptic input (keystrokes, swipes, data glove movements, etc.), audio input (voices, applause, etc.), visual input (gestures, etc.), and olfactory input (not shown). Human interface devices can also be used to capture certain media that are not necessarily directly related to conscious human input, such as audio (speech, music, ambient sounds, etc.), images (scanned images, photographic images taken from a still image camera, etc.), and video (2D video, 3D video including stereoscopic video, etc.).

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

[0133] The computer system (900) 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 may include tactile output devices (e.g., tactile feedback via a touchscreen (910), data glove (not shown), or joystick (905), but which may be tactile feedback devices that do not function as input devices), audio output devices (e.g., speakers (909), headphones (not shown)), visual output devices (e.g., screens (910), including CRT screens, LCD screens, plasma screens, OLED screens, etc., each with or without touchscreen input capability, tactile feedback capability, and some of which can output two-dimensional visual output or three-dimensional or more output via means such as stereographic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).

[0134] The computer system (900) may further include human-accessible storage devices and associated media, such as CD / DVD ROM / RW (920) or similar media (921) having CDs / DVDs, thumb drives (922), optical media including removable hard drives or solid-state drives (923), legacy magnetic media such as tapes and floppy disks (not shown), and dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown).

[0135] Those skilled in the art should further understand that the term “computer-readable medium” as used in relation to the subject matter disclosed herein does not include transmission media, carrier waves, or other transient signals.

[0136] The computer system (900) may further include an interface (954) to one or more communication networks (955). The networks may be, for example, wireless, wired, or optical networks. The networks may further include local, wide-area, metropolitan, automotive, and industrial, real-time, and latency-tolerant networks. Examples of networks include local area networks such as Ethernet and wireless LANs; cellular networks such as GSM, 3G, 4G, 5G, and LTE; wired or wireless wide-area digital networks such as cable TV, satellite TV, and terrestrial broadcast TV; and automotive and industrial networks such as CAN buses. Certain networks generally require an external network interface adapter connected to a specific general-purpose data port or peripheral bus (949) (e.g., a USB port on the computer system (900)). Other networks are generally integrated into the core of the computer system (900) by connecting to a 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, the computer system (900) can communicate with other entities. Such communication may be unidirectional reception only (e.g., broadcast TV), unidirectional transmission only (e.g., from a CAN bus to a specific CAN bus device), or bidirectional, for example, using a local or wide-area digital network to other computer systems. As described above, specific protocols and protocol stacks can be used for each of these networks and network interfaces.

[0137] The aforementioned human interface devices, human-accessible storage devices, and network interfaces can be connected to the core (940) of the computer system (900).

[0138] A core (940) consists of one or more central processing units (CPUs) (941), graphics processing units (GPUs) (942), and field-programmable gates. array This may include dedicated programmable processing units in the form of FPGAs (943), hardware accelerators (944) for specific tasks, and graphics adapters (950). These devices may be connected via a system bus (948) along with read-only memory (ROM) (945), random access memory (946), and internal mass storage devices (947) such as internal hard drives and SSDs that are not accessible to the user. In some computer systems, the system bus (948) is accessible in the form of one or more physical plugs, allowing for expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus (948) or via a peripheral bus (949). For example, a screen (910) may be connected to a graphics adapter (950). Peripheral bus architectures include PCI, USB, etc.

[0139] The CPU (941), GPU (942), FPGA (943), and accelerator (944) can be combined to execute specific instructions that constitute the aforementioned computer code. This computer code can be stored in ROM (945) or RAM (946). Transient data can also be stored in RAM (946), while permanent data can be stored, for example, in internal mass storage (947). 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., can be used to enable high-speed storage and retrieval of any memory device.

[0140] A computer-readable medium may contain computer code for performing various computer implementation operations. The medium and computer code may be specifically designed and constructed for the purposes of this disclosure, or they may be of a type that is well known and available to those skilled in the computer software field.

[0141] As an example, and not an limitation, a computer system having an architecture (900), specifically a 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 may be media associated with user-accessible mass storage, as described above, in addition to specific storage devices of the core (940) that are non-transient in nature, such as internal mass storage (947) or ROM (945). Software implementing various embodiments of this disclosure can be stored in such devices and executed by the core (940). The computer-readable media may include one or more memory devices or chips, depending on the specific requirements. The software can cause the core (940), specifically the processor (including a CPU, GPU, FPGA, etc.) therein, to execute a particular process or a particular part of a particular process described herein, which includes the steps of defining data structures stored in RAM (946) and modifying such data structures according to a process defined by the software. In addition or alternatively, a computer system may provide functionality as a result of logic wired to or otherwise embodied in circuits (e.g., accelerators (944)) that can operate in place of or with software to perform specific processes or specific parts of specific processes described herein. References to software may, as necessary, include logic, and vice versa. References to computer-readable media may, as necessary, include circuits that store software for execution (such as integrated circuits (ICs)), circuits that embody logic for execution, or both. This disclosure includes any suitable combination of hardware and software.

[0142] While this disclosure has described some exemplary embodiments, there are many variations, substitutions, and alternative equivalents that fall within the scope of this disclosure. Therefore, those skilled in the art will understand that numerous systems and methods, not expressly shown or described herein, can be invented to embody the spirit and scope of this disclosure.

Claims

1. A method for mesh processing performed by a video encoder, A step of determining multiple candidate predictions for a current vertex, wherein the current vertex is included in a plurality of vertices of a mesh, the plurality of candidate predictions are determined based on a plurality of triangles in the mesh, and each of the plurality of triangles corresponds to each candidate prediction. A step of determining a prediction of the current vertex from a plurality of candidate predictions, wherein the prediction is identified by a predetermined prediction index based on the number of candidate predictions of the current vertex being greater than or equal to a threshold, A method comprising the steps of: encoding prediction information for the current vertex based on the determined prediction, wherein the prediction information includes a prediction index that identifies the prediction for the current vertex.

2. The method according to claim 1, wherein the threshold is 2 or more and 5 or less.

3. The step of determining multiple candidate predictions for the current vertex is as follows: A step of determining a first triangle among a plurality of triangles with respect to the current vertex, wherein the first triangle has a shared edge with a second triangle among the plurality of triangles, the current vertex is included in the second triangle and is on the opposite side of the shared edge, The method according to claim 1, further comprising the step of determining the first candidate prediction based on the first triangle determined by a first candidate prediction among a plurality of candidate predictions and a parallelogram prediction in which the first triangle forms a first parallelogram.

4. The step of determining multiple candidate predictions for the current vertex is as follows: The method according to claim 3, further comprising the step of determining the average prediction of a plurality of candidate predictions.

5. The step of determining the prediction of the current vertex is: The method according to claim 4, further comprising the step of determining the current vertex prediction list, wherein the candidate predictors in the prediction list include the average prediction in the prediction list and a plurality of the candidate predictions following the average prediction, the order of the plurality of the candidate predictions in the prediction list is based on the order of a plurality of triangles corresponding to the plurality of candidate predictions, and each of the candidate predictors in the prediction list is associated with a prediction index.

6. The method according to claim 5, wherein the plurality of triangles are ordered based on an edge breaker algorithm that labels them in a spiral triangle spanning tree order.

7. The step of determining the prediction of the current vertex is: The steps include determining the prediction of the current vertex as the first candidate predictor of the candidate predictors in the prediction list, based on the fact that the number of candidate predictions of the current vertex is equal to the threshold, and the prediction index is predetermined as the first prediction index in response to the number of candidate predictions of the current vertex being equal to the threshold, In response to the fact that the number of candidate predictions for the current vertex is greater than the threshold, the prediction index is predetermined as a second prediction index, and the steps include determining the prediction for the current vertex as the second candidate predictor of the candidate predictors in the prediction list according to the predetermined prediction index, The method according to claim 5, including the method described in claim 5.

8. The step of determining the prediction of the current vertex is: The steps include determining the prediction difference between each of the candidate predictors in the prediction list and the current vertex, The method according to claim 5, further comprising the step of determining the prediction corresponding to the smallest prediction difference among the prediction differences from the candidate predictors in the prediction list.

9. The step of determining the prediction of the current vertex is: The method according to claim 5, further comprising the step of determining a prediction having the smallest prediction difference among a subset of candidate predictors in the prediction list.

10. The step of determining each forecast index is: The method according to claim 5, further comprising the step of determining each prediction index for each of the candidate predictors in the prediction list based on one of fixed-length coding, variable-length coding, and differential coding.

11. The prediction information for the current vertex includes residual information showing the difference between the current vertex and the determined prediction. The aforementioned method, The method according to claim 1, further comprising the step of encoding the residual information.

12. A mesh processing apparatus including a processing circuit, The aforementioned processing circuit is A step of determining multiple candidate predictions for a current vertex, wherein the current vertex is included in a plurality of vertices of a mesh, the plurality of candidate predictions are determined based on a plurality of triangles in the mesh, and each of the plurality of triangles corresponds to each candidate prediction. A step of determining a prediction of the current vertex from a plurality of candidate predictions, wherein the prediction is identified by a predetermined prediction index based on the number of candidate predictions of the current vertex being greater than or equal to a threshold, An apparatus configured to perform the steps of: encoding prediction information of the current vertex based on the determined prediction, wherein the prediction information includes a prediction index that identifies the prediction of the current vertex.

13. The apparatus according to claim 12, wherein the threshold is 2 or more and 5 or less.

14. The aforementioned processing circuit is A step of determining a first triangle among a plurality of triangles with respect to the current vertex, wherein the first triangle has a shared edge with a second triangle among the plurality of triangles, the current vertex is included in the second triangle and is on the opposite side of the shared edge, The apparatus according to claim 12, further configured to perform the steps of: determining the first candidate prediction based on the first triangle determined by a first candidate prediction among a plurality of candidate predictions and a parallelogram prediction in which the first triangle forms a first parallelogram.

15. The aforementioned processing circuit is The apparatus according to claim 14, further configured to perform the step of determining the average prediction of a plurality of candidate predictions.

16. The aforementioned processing circuit is The apparatus according to claim 15, further configured to perform the step of determining the prediction list of the current vertex, wherein the candidate predictors in the prediction list include the average prediction and a plurality of the candidate predictions following the average prediction, the order of the plurality of the candidate predictions in the prediction list is based on the order of a plurality of triangles corresponding to the plurality of candidate predictions, and each of the candidate predictors in the prediction list is associated with a prediction index.

17. The apparatus according to claim 16, wherein the plurality of triangles are ordered based on an edge breaker algorithm that labels them in a spiral triangle spanning tree order.

18. The aforementioned processing circuit is The steps include determining the prediction of the current vertex as the first candidate predictor of the candidate predictors in the prediction list, based on the fact that the number of candidate predictions of the current vertex is equal to the threshold, and the prediction index is predetermined as the first prediction index in response to the number of candidate predictions of the current vertex being equal to the threshold, In response to the fact that the number of candidate predictions for the current vertex is greater than the threshold, the prediction index is predetermined as a second prediction index, and the steps include determining the prediction for the current vertex as the second candidate predictor of the candidate predictors in the prediction list according to the predetermined prediction index, The apparatus according to claim 16, further configured to perform the following.

19. The aforementioned processing circuit is The steps include determining the prediction difference between each of the candidate predictors in the prediction list and the current vertex, The apparatus according to claim 16, further configured to perform the step of determining the prediction corresponding to the smallest prediction difference among the prediction differences from the candidate predictors in the prediction list.

20. The aforementioned processing circuit is The apparatus according to claim 16, further configured to perform the step of determining a prediction having the smallest prediction difference among a subset of candidate predictors in the prediction list.

Citation Information

Patent Citations

  • Coding, Decoding Method, Apparatus and Equipment

    JP2025522616A

  • Attribute mapping to encode and decode 3D models

    US20180189982A1

  • Compression of data representing triangular mesh attributes using machine learning

    WO2020123252A1