Mesh processing method, apparatus, and program
By merging overlapping vertices based on intra- or inter-prediction modes, the method enhances the efficiency of mesh compression for dynamic meshes with time-varying connectivity and attributes, addressing inefficiencies in existing standards.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2023-06-13
- Publication Date
- 2026-04-08
AI Technical Summary
Existing mesh compression standards do not effectively handle dynamic meshes with time-varying connectivity and attribute maps, leading to inefficiencies in encoding and decoding processes.
A method for mesh processing that involves generating a base mesh from a downsampled input mesh, determining a prediction mode, and merging overlapping vertices based on intra- or inter-prediction modes to optimize encoding and decoding efficiency.
Improves the coding efficiency by reducing data volume and maintaining high fidelity in mesh representation, particularly for dynamic meshes with time-varying connectivity and attributes.
Smart Images

Figure 0007842884000001 
Figure 0007842884000002 
Figure 0007842884000003
Abstract
Description
Technical Field
[0001] Cross - Reference to Related Applications This application claims the benefit of priority to U.S. Provisional Application No. 63 / 408,268, filed on September 20, 2022, "Duplicate Vertices Merging in Mesh Compression", and to U.S. Patent Application No. 18 / 208,138, filed on June 9, 2023, "DUPLICATE VERTICES MERGING IN MESH COMPRESSION". The disclosure of the prior applications is hereby incorporated by reference in its entirety.
[0002] This disclosure includes embodiments related to mesh processing.
Background Art
[0003] The description of the background art provided herein is for the purpose of generally presenting the context of the present disclosure. The inventors' research, as far as it is described in this background art section, and aspects of the description that may not be recognized as prior art at the time of filing are not recognized as prior art to the present disclosure, either explicitly or implicitly.
[0004] Advances in 3 - dimensional (3D) capture, modeling, and rendering have facilitated the ubiquitous presence of 3D content across various platforms and devices. Today, it is possible to capture a baby's first steps on one continent and have a fully immersive experience with a child, whose grandparents are on another continent, by seeing (and in some cases interacting with) that child. To achieve such realism, models have become 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 Problems
[0005] Aspects of this disclosure provide methods and apparatus for meshing. In some examples, the apparatus for meshing includes a processing circuit.
[0006] According to one aspect of the present disclosure, a method for meshing performed in a video decoder is provided. In this method, a base mesh is generated from an input mesh downsampled in the current frame, the base mesh containing a plurality of vertices. A prediction mode is determined to be applied to the base mesh. The prediction mode is either an inter-prediction mode or an intra-prediction mode. Based on the determination that the prediction mode is an intra-prediction mode, overlapping vertices among the plurality of vertices in the base mesh are merged to generate a subset of the plurality of vertices. Based on the determined intra-prediction mode, at least a subset of the plurality of vertices is encoded to generate prediction information for at least a subset of the plurality of vertices.
[0007] In one example, overlapping vertices in the base mesh are merged based on the prediction mode being determined as intra-prediction mode. In another example, overlapping vertices in the base mesh are not merged based on the prediction mode being determined as inter-prediction mode.
[0008] In one example, each of the multiple overlapping vertices is a vertex in the base mesh that shares the same reference vertex in the reference frame with another vertex in the base mesh.
[0009] In one embodiment, merging overlapping vertices is included in determining the prediction mode.
[0010] In one embodiment, merging duplicate vertices involves encoding at least a subset of multiple vertices.
[0011] In some embodiments, multiple vertices of the base mesh are encoded based on the determination that the prediction mode is an inter-prediction mode. To encode multiple vertices of the base mesh, a reference vertex in a reference frame is determined for each of the multiple vertices. Inter-prediction information is generated for each of the multiple vertices based on the corresponding reference vertex for each vertex in the reference frame.
[0012] In some embodiments, each reference vertex of a plurality of vertices is a collated vertex in the reference frame of that vertex, and the collated vertex is positioned in the same relative position in the reference frame as each vertex of the base mesh in the current frame.
[0013] Another aspect of this disclosure provides a method for meshing performed in an encoder. In this method, a base mesh is generated from an input mesh downsampled in the current frame, the base mesh containing a plurality of vertices. Duplicate vertices among the plurality of vertices of the base mesh are merged to generate a merged base mesh containing a subset of the plurality of vertices. Index information is generated to identify the merged duplicate vertices. Based on the merged base mesh and the generated index information, a prediction mode to be applied to the base mesh is determined. The prediction mode is either an inter-prediction mode or an intra-prediction mode. Based on the determined prediction mode being an inter-prediction mode, inter-prediction information for the base mesh is generated according to the generated index information. Based on the determined intra-prediction mode being an intra-prediction mode, intra-prediction information for the base mesh is generated.
[0014] In one example, to determine the prediction mode, merged duplicate vertices of multiple vertices are unmerged based on the index information of the merged duplicate vertices. A reference vertex in the reference frame is determined for each of the multiple vertices of the base mesh in the current frame, and the reference frame is different from the current frame. A first prediction difference is determined for each of the multiple vertices of the base mesh. The first prediction difference for each of the multiple vertices indicates the difference between the reference vertex in the reference frame and each of the multiple vertices of the base mesh. A second prediction difference is determined for each of the multiple vertices of the base mesh. The second prediction difference for each of the multiple vertices indicates the difference between each of the multiple vertices and one or more neighboring vertices in the current frame of each of the multiple vertices.
[0015] In one example, to determine the prediction mode, the first cost value is determined as the sum of the first prediction differences associated with multiple vertices. The second cost value is determined as the sum of the second prediction differences associated with multiple vertices. The prediction mode is determined as (i) an inter-prediction mode based on the first cost value being less than or equal to the second cost value, and (ii) an intra-prediction mode based on the second cost value being less than the first cost value.
[0016] In some embodiments, a collated vertex in a reference frame is determined as the reference vertex for each of the multiple vertices, and the collated vertex is positioned in the same relative position in the reference frame as each vertex of the base mesh in the current frame.
[0017] In one embodiment, based on the determination that the prediction mode is an inter-prediction mode, inter-prediction information is generated for each of a subset of vertices based on the corresponding reference vertices of each index in the reference frame.
[0018] In one embodiment, based on the prediction mode being determined as an intra prediction mode, the intra prediction information is generated for each of a subset of a plurality of vertices based on one or more neighboring vertices of each vertex within the current frame.
[0019] According to another aspect of the present disclosure, an apparatus is provided. The apparatus includes a processing circuit. The processing circuit can be configured to perform any of the described methods for mesh processing.
[0020] Aspects of the present disclosure also provide a non-transitory computer-readable medium that stores instructions which, when executed by a computer, cause the computer to execute any of the described methods for mesh processing.
[0021] Further features, properties, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings.
Brief Description of the Drawings
[0022] [Figure 1] It is a schematic diagram of an exemplary block diagram of a communication system (100). [Figure 2] It is a schematic diagram of an exemplary block diagram of a decoder. [Figure 3] It is a schematic diagram of an exemplary block diagram of an encoder. [Figure 4] It is a schematic diagram of an exemplary encoding process according to some embodiments of the present disclosure. [Figure 5] It is a schematic diagram of a preprocessing stage according to some embodiments of the present disclosure. [Figure 6] It is a first exemplary encoding process with vertex merging according to some embodiments of the present disclosure. [Figure 7] It is a second exemplary encoding process with vertex merging according to some embodiments of the present disclosure. [Figure 8] It is a flowchart showing an overview of a process according to some embodiments of the present disclosure. [Figure 9] A flowchart showing an overview of another process according to some embodiments of the present disclosure. [Figure 10] A schematic diagram of a computer system according to one embodiment.
MODE FOR CARRYING OUT THE INVENTION
[0023] FIG. 1 shows a block diagram of a video processing system (100) in some examples. The video processing system (100) is an example of an application for the disclosed subject matter, a video encoder, and a video decoder in a streaming environment. The disclosed subject matter can be equally applicable to other image and video-enabled applications, including, for example, storage of compressed video on digital media such as video conferencing, digital TV, streaming services, CDs, DVDs, memory sticks, etc.
[0024] The video processing system (100) includes a capture 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 generated by a computer. For example, a digital camera may create a stream (102) of uncompressed video pictures. In one example, the stream (102) of video pictures may include samples taken by the digital camera. The stream (102) of video pictures, shown in bold to emphasize its large data volume compared to encoded video data (104) (or encoded video bitstream), may 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, as will be described in more detail below. The encoded video data (104) (or encoded video bitstream), shown as a thin line to emphasize its smaller data size compared to the video picture stream (102), 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 obtain 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 the incoming copy (107) of the encoded video data and creates an outgoing stream of a video picture (111) that can be rendered on a display (112) (e.g., a display screen) or another rendering device (not shown).In some streaming systems, encoded video data (104), (107), and (109) (e.g., video bitstream) can be encoded according to specific video coding / compression standards. An example of these standards is ITU-T Recommendation H.265. For example, a video coding standard under development is informally known as Multipurpose Video Coding (VVC). The disclosed subject may be used in the context of VVC.
[0025] It should be noted that 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 also include a video encoder (not shown).
[0026] Figure 2 shows an exemplary block diagram of a video decoder (210). The video decoder (210) can be included in an electronic device (230). The electronic device (230) can include a receiver (231). The receiver (231) can 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.
[0027] The receiver (231) may receive one or more coded video sequences that are 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 encoded video data. The receiver (231) may receive coded video data having other data, e.g., coded audio data and / or auxiliary data streams, which may be transferred to each other using entities (not shown). The receiver (231) can isolate the coded video sequences from other data. To combat 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 be located outside the video decoder (210) (not shown). In yet other cases, there may be a buffer memory (not shown) outside the video decoder (210) to counteract network jitter, for example, and another buffer memory (215) inside the video decoder (210) to handle playback timing, for example. When the receiver (231) receives data from a storage / transfer device with sufficient bandwidth and controllable capabilities, or from an asynchronous network, the buffer memory (215) may be unnecessary or small. For use in best-effort packet networks such as the Internet, the buffer memory (215) may be necessary, may be relatively large, may be 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).
[0028] The video decoder (210) may include a parser (220) to reconstruct symbols (221) from the coded 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) 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 rendering device control information may be in the form of supplemental enhancement information (SEI) messages or video usability information (VUI) parameter set fragments (not shown). The parser (220) can parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow video coding techniques or standards and may follow various principles, including variable-length coding, Huffman coding, context-sensitive or unsensitive arithmetic coding, etc. The parser(220) can extract from the coded video sequence a set of subgroup parameters for at least one subgroup of pixels in the video decoder, based on at least one parameter corresponding to that group. Subgroups can include Groups of Pictures (GOP), pictures, tiles, slices, macroblocks, Coding Units (CU), blocks, Transform Units (TU), Prediction Units (PU), etc. The parser(220) can also extract coded video sequence information such as transformation coefficients, quantizer parameter values, and motion vectors.
[0029] The parser (220) can perform entropy decoding / analysis operations on the video sequence received from buffer memory (215) in order to create symbols (221).
[0030] The reconstruction of symbol (221) may involve multiple different units, depending on the type of coded video picture or part thereof (e.g., interpicture and intrapicture, interblock and intrablock), and other factors. Which units are involved and how can be controlled by the parser (220) through subgroup control information parsed from the coded video sequence. The flow of such subgroup control information between the parser (220) and the following multiple units is not shown for clarity.
[0031] In addition to the functional blocks already described, the video decoder (210) can be conceptually subdivided into several functional units, as described below. In actual embodiments operating under commercial constraints, many of these units can interact closely with each other and integrate with each other at least partially. However, for the purpose of illustrating the disclosed subject matter, the following conceptual subdivision into functional units is appropriate.
[0032] The first unit is the scaler / inverse unit (251). The scaler / inverse unit (251) receives control information from the parser (220) that includes the quantization conversion coefficients, as well as which conversion to use, block size, quantization coefficients, quantization scaling matrix, etc., as symbols (221). The scaler / inverse unit (251) can output a block containing sample values that can be input to the aggregator (255).
[0033] In some cases, the output samples of the scaler / inverse unit (251) may relate to intracoded blocks. Intracoded blocks are blocks that do not use predictive information from previously reconstructed pictures, but can use predictive information from previously reconstructed portions of the current picture. Such predictive information may be provided by an intrapicture predictive unit (252). In some cases, the intrapicture predictive 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) buffers, for example, a partially reconstructed current picture and / or a fully reconstructed current picture. The aggregator (255) may, in some cases, add the predictive information generated by the intra predictive unit (252) to the output sample information from the scaler / inverse unit (251) on a sample-by-sample basis.
[0034] In other cases, the output samples of the scaler / inverse unit (251) may be associated with an intercoded, potentially motion-compensated block. In such cases, the motion-compensated prediction unit (253) may access the reference picture memory (257) to fetch samples to be used for prediction. After motion-compensating the fetched samples according to the symbols (221) associated with the block, these samples may be added by the aggregator (255) to the output of the scaler / inverse unit (251) (in this case, called residual samples or residual signals) to generate output sample information. The address in the reference picture memory (257) from which the motion-compensated prediction unit (253) fetches the predicted samples may be controlled by a motion vector available to the motion-compensated prediction unit (253) in the form of a symbol (221) which may have, for example, X, Y, and reference picture components. Motion compensation may also include interpolation of sample values fetched from the reference picture memory (257) when the exact motion vectors of the subsamples are used, a motion vector prediction mechanism, and so on.
[0035] The output samples of the aggregator (255) can be subjected to various loop filtering techniques in the loop filtering unit (256). Video compression techniques may include in-loop filtering techniques that are controlled by parameters contained in the coded video sequence (also called the coded video bitstream) and are available to the loop filtering unit (256) as symbols (221) from the parser (220). Video compression may also respond to metadata obtained during decoding of the preceding (in decoding order) portion of the coded picture or coded video sequence, and further, to previously reconstructed and loop-filtered sample values.
[0036] The output of the loop filter unit (256) can be output to the rendering device (212) and can also be a sample stream that can be stored in the reference picture memory (257) for use in future interpicture prediction.
[0037] Once fully reconfigured, a particular coded picture can be used as a reference picture for future predictions. For example, once the coded picture corresponding to the current picture is fully reconfigured 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 a new current picture buffer can be reallocated before the reconfiguration of subsequent coded pictures begins.
[0038] The video decoder (210) can perform decoding operations according to a given video compression technology or standard such as ITU-T Rec.H.265. The coded video sequence can 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 for use under that profile. Also, compliance may require that the complexity of the coded video sequence be within the 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 limitations set by the level may, in some cases, be further limited by metadata for HRD buffer management and the Hypothetical Reference Decoder (HRD) specification signaled in the coded video sequence.
[0039] 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 encoded video sequence. 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 take the form of, for example, a time, space, or signal-to-noise ratio (SNR) enhancement layer, redundant slices, redundant pictures, or forward error correction codes.
[0040] 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.
[0041] 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) which can capture video images coded by the video encoder (303). In another example, the video source (301) is part of the electronic device (320).
[0042] The video source (301) can provide a source video sequence coded 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, ...), 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 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 individual pictures that give motion when viewed sequentially. The pictures themselves may be organized as a spatial array of pixels, and each pixel may contain one or more samples depending on the sampling structure, color space, etc., used. The following description focuses on samples.
[0043] According to one embodiment, the video encoder (303) can encode pictures of a source video sequence in real time or under any other time constraints as needed and compress them into a coded video sequence (343). Implementing an appropriate coding speed is one function of the controller (350). In some embodiments, the controller (350) controls and is functionally coupled to other functional units, as described below. For clarity, couplings are not illustrated. Parameters set by the controller (350) may include rate control-related parameters (picture skip, quantizer, lambda value of rate distortion optimization technique, ...), picture size, picture group (GOP) layout, maximum motion vector search range, etc. The controller (350) may be configured to have other appropriate functions for the video encoder (303) optimized for a particular system design.
[0044] 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 generating symbols, such as a symbol stream, based, for example, the input picture to be coded and a reference picture) and a (local) decoder (333) built into the video encoder (303). The decoder (333) reconstructs the symbols to create sample data in a similar manner to how a (remote) decoder would create it. The reconstructed sample stream (sample data) is fed into the reference picture memory (334). Because decoding the symbol stream yields bit-exact results regardless of the decoder location (local or remote), the contents within 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 reference picture samples that the decoder would "see" when using predictions during decoding. This fundamental principle of reference picture synchronization (and the resulting drift when synchronization cannot be maintained, for example, due to channel errors) is also used in several related technologies.
[0045] The operation of the “local” decoder (333) may be the same as that of a “remote” decoder, such as the video decoder (210), which has already been described in detail in relation to Figure 2. However, as also briefly referring to Figure 2, since symbols are available and the encoding / decoding of symbols to the coded video sequence by the entropy coder (345) and parser (220) may be reversible, the entropy decoding section of the video decoder (210), including the buffer memory (215), and the parser (220) may not be fully implemented in the local decoder (333).
[0046] In one embodiment, the decoder techniques, excluding analysis / entropy decoding, present in the decoder are identical or substantially identical in function to those present in the corresponding encoder. Therefore, the disclosed subject matter focuses on decoder operation. A description of encoder techniques can be omitted, as they are the inverse of the decoder techniques described comprehensively. In specific areas, more detailed descriptions are provided below.
[0047] During operation, in some examples, the source coder (330) can perform motion-compensated predictive coding, predictively coding the input picture by referencing one or more previously 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 predictive references for the input picture.
[0048] The local video decoder (333) can decode coded video data of a picture that may be designated as a reference picture based on symbols generated by the source coder (330). The operation of the coding engine (332) may, advantageously, be 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 copy of the source video sequence with some errors. The local video decoder (333) can replicate 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 common to the reconstructed reference picture acquired by the far-end video decoder (without transmission errors).
[0049] The predictor (335) can perform predictive searches 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 such as motion vectors and block shapes of reference pictures that can function as appropriate predictive references for the new picture. The predictor (335) can operate sample block by sample block to find appropriate predictive references. In some cases, the input picture may have predictive references drawn from multiple reference pictures stored in the reference picture memory (334), as determined by the search results obtained by the predictor (335).
[0050] The controller (350) can manage the coding operations of the source coder (330), including, for example, setting parameters and subgroup parameters used to encode video data.
[0051] The outputs of all the aforementioned functional units can undergo entropy coding in the 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.
[0052] The transmitter (340) can buffer the coded video sequence generated 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 encoded video data. The transmitter (340) can merge the coded video data from the video encoder (303) with other data being transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0053] The controller (350) can manage the operation of the video encoder (303). During coding, the controller (350) can 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 as one of the following picture types:
[0054] An intra-picture (I-picture) may be a picture that can be coded and decoded without using any other pictures in the sequence as a source of prediction. Some video codecs enable different types of intra-pictures, including, for example, Independent Decoder Refresh ("IDR") pictures. Those skilled in the art will know of their variations of I-pictures and their respective uses and characteristics.
[0055] A prediction picture (P-picture) may be a picture that can be coded and decoded using intra-prediction or inter-prediction, which uses up to one motion vector and reference index to predict the sample values for each block.
[0056] A bidirectional predictive picture (B-picture) may be a picture that can be coded and decoded using intra-prediction or inter-prediction, which uses up to two motion vectors and reference indices to predict the sample values for each block. Similarly, a multiple predictive picture may use three or more reference pictures and associated metadata for the reconstruction of a single block.
[0057] A source picture may generally be spatially subdivided into multiple sample blocks (e.g., 4x4, 8x8, 4x8, or 16x16 blocks) and coded block by block. Blocks may be predictively coded by referencing other (already coded) blocks, as 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 previously coded reference picture. Blocks of picture B may be coded predictively via spatial prediction or temporal prediction by referencing one or two previously coded reference pictures.
[0058] The video encoder (303) can perform coding operations in accordance with a given video coding technique or standard, such as ITU-T Rec.H.265. In this operation, the video encoder (303) can perform various compression operations, including predictive coding operations that utilize temporal and spatial redundancy in the input video sequence. Thus, the coded video data can conform to the syntax specified by the video coding technique or standard being used.
[0059] 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 encoded video sequence. The additional data may include time / space / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, and the like.
[0060] Video may be captured chronologically as multiple source pictures (video pictures). 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. When a block in the current picture is analogous to a reference block in a previously coded and still-buffered reference picture in the video, 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 may have a third dimension to identify the reference picture if multiple reference pictures are used.
[0061] 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, both of which are prior to the decoding order of the current picture in the video (however, their display order may be past and future, respectively). Blocks 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. Blocks can be predicted by combinations of the first and second reference blocks.
[0062] Furthermore, merge mode techniques can be used for interpicture prediction to improve coding efficiency.
[0063] According to some embodiments of this disclosure, predictions such as interpicture prediction and intrapicture 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 in 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 chroma 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 includes a luminance prediction block (PB) and two chroma PBs. In one embodiment, prediction calculations in coding (encoding / decoding) are performed in units of prediction blocks. Using a luminance prediction block as an example of a prediction block, the prediction block includes a matrix of pixel values (e.g., luminance values) such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.
[0064] It should be noted that the video encoders (103) and (303), and the video decoders (110) and (210) can be implemented using any suitable technique. 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.
[0065] This disclosure includes embodiments relating to a mesh compression method and system that uses the merging of duplicate vertices.
[0066] A mesh can contain several polygons that represent the surface of a volumetric 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; this information may be called connection information. In some embodiments, vertex attributes such as color and normal 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 with 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. A 2D attribute map can be used to store high-resolution attribute information such as texture, normal, and displacement. Such information can be used for various purposes, such as texture mapping and shading.
[0067] Dynamic mesh sequences can require large amounts of data because the dynamic mesh may 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 have been previously developed by MPEG to address dynamic meshes with always-on connectivity, time-varying geometry, and vertex attributes. However, these standards may not consider time-varying attribute maps and connectivity information. DCC (Digital Content Creation) tools typically generate such dynamic meshes. However, generating always-on dynamic meshes can be challenging for volumetric acquisition techniques, especially under real-time constraints. This type of content (e.g., always-on dynamic meshes) may not be supported by existing standards. MPEG plans to develop a new mesh compression standard for directly handling dynamic meshes with time-varying connectivity information and optionally time-varying attribute maps. The new mesh compression standard will target lossy and lossless compression for various applications such as real-time communications, storage, free-viewpoint video, augmented reality (AR), and virtual reality (VR). Features such as random access and scalable / progressive coding are also conceivable.
[0068] Figure 4 shows an encoding process (400) based on an associated video codec such as MPEG V-Mesh® v 1.0. As shown in Figure 4, the encoding process (400) may include a preprocessing step (400A) configured to generate a base mesh and displacement vectors according to the input mesh, a mode determination step (400B) configured to determine whether interframe prediction or intraframe prediction is applied in the encoding process (400), and an encoding step (400C) configured to encode the base mesh, displacement vectors, and texture information of the base mesh.
[0069] Referring further to Figure 4, the preprocessing step (400 A) may include a mesh thinning process (402), an atlas parameterization process (404), and a subdivision face fitting process (406). The mesh thinning process (402) is configured to downsample the vertices of the input mesh M(i) to generate a thinned mesh dm(i) containing multiple thinned (or downsampled) vertices. The atlas parameterization process (404) is configured to map the thinned mesh dm(i) to a planar region such as a UV atlas (or UV map) to generate a reparameterized mesh pm(i). In one example, atlas parameterization can be performed based on a video processing tool such as the UVAtlas tool. The subdivision face fitting process (406) is configured to take the reparameterized mesh pm(i) and the input mesh M(i) as input and generate a base mesh m(i) along with a set of displacements d(i). In the exemplary subdivision face fitting process, pm(i) is subdivided using iterative interpolation. Iterative interpolation involves inserting a new point in the middle of each edge of the reparameterized mesh pm(i) in each iteration. The displacement field d(i) is calculated by determining the nearest neighbor on the surface of the original mesh M(i) for each vertex of the subdivided mesh.
[0070] Figure 5 shows an exemplary preprocessing step (500) for generating a base mesh and displacement vectors. As shown in Figure 5, the input 2D curve (represented by a 2D polyline) of the input mesh can be called the “original” curve (502). The original curve (502) can be downsampled to generate a base curve / polyline called the “decimated” curve (504). Then, a subdivision scheme can be applied to the decimated polyline (504) to generate the “subdivision” curve (506). In one example, the subdivision scheme can be an iterative interpolation scheme. The iterative interpolation scheme can include inserting a new point in the middle of each edge of the polyline (or decimated curve) in each iteration (504). For example, point (510) can be inserted at edge (508) of the decimated curve (504). Furthermore, point (522) can be added between point (512) and point (510), and point (516) can be added between point (510) and point (514). The subdivided polyline (506) is then deformed to generate a displacement curve (518). The displacement curve (518) is a better approximation of the original curve (502) and can function as an edge of the base mesh. More precisely, a displacement vector (e.g., (520)) is calculated for each vertex (e.g., (510)) of the subdivided curve (506) so that the shape of the displacement curve (518) is as close as possible to the shape of the original curve (502). The main advantage of the subdivided curve (506) is that it has a subdivided structure that allows for more efficient compression while providing a faithful approximation of the original curve (502).
[0071] The mode determination stage (400B) compares the cost of intra-coding mode with the cost of inter-coding mode, and determines the coding mode for each frame of the base mesh based on which of the two costs is smaller.
[0072] The encoding stage (400 C) may include base mesh coding (408), displacement coding (410), and texture coding (412). Base mesh coding (408) is configured to encode the geometric information of the base mesh m(i) associated with the current frame. In intra-encoding, the base mesh m(i) can be first quantized (e.g., using uniform quantization) and then encoded using a static mesh encoder. In inter-encoding, a reconstructed quantized reference base mesh m'(j) associated with a reference frame having index j is used to predict the base mesh m(i) associated with the current frame having index i. Displacement coding (410) is configured to encode a set of displacement vectors associated with the subdivided mesh vertices, called the displacement field d(i). Texture coding (412) is configured to encode the attribute information of the base mesh. Attribute information may include texture, normals, color, etc. Attribute information can be encoded based on an appropriate codec, such as High Efficiency Video Coding (HEVC) or Versatile Video Coding (VVC).
[0073] Figure 6 shows an encoding process (600) based on a duplicate vertex merging technique to improve base mesh coding efficiency. As shown in Figure 6, the encoding process (600) may include a vertex merging step (or base mesh vertex merging step) (602) in a preprocessing step (600A). In one embodiment, a duplicate vertex may be a vertex of the base mesh that shares the same reference vertex in a reference frame with another vertex in the base mesh. In one embodiment, the vertex of the base mesh and the reference vertex of the vertex in the base mesh are collated such that the reference vertex is located in the same relative position in the reference frame as the vertex of the base mesh in the current frame. In the vertex merging step (602), the duplicate vertex can be merged with the vertex corresponding to the duplicate vertex.
[0074] However, the coding efficiency of encoding processes with vertex merging may not be as efficient as that of encoding processes without vertex merging. For example, in encoding processes with vertex merging (600), the intra-coding mode may always be selected for each frame during the mode determination phase, or it may be more likely to be selected. One reason for this is that duplicate vertex merging can reduce the number of vertices, and there may not be a one-to-one vertex correspondence (or correlation) between two frames (e.g., the current frame and the reference frame). Intercoding mode requires a one-to-one vertex correspondence between the current frame and the reference frame. Therefore, because there is no one-to-one vertex correspondence, the frame selects intra-coding mode rather than intercoding mode. Thus, vertex merging can result in coding loss because the inter-predictive mode may not be selected.
[0075] This disclosure provides a mesh compression method and system that uses duplicate vertex merging to address coding loss resulting from vertex merging. The proposed method may be used separately or in any order. Furthermore, each of the method (or embodiment), encoder, and decoder may be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute a program stored on a non-transient computer-readable medium.
[0076] In this disclosure, duplicate vertices can be merged after mode determination. Therefore, duplicate vertices can be merged based on the predicted mode (e.g., an interconnecting mode or an intracoding mode) determined in the mode determination stage (e.g., (400B)). In some embodiments, duplicate vertex merging may be applied to the frame under the intracoding mode.
[0077] In one embodiment, mode determination and duplicate vertex merging may be placed in the second stage (or mode determination stage) of the encoding process. For example, as shown in Figure 7, the encoding process (700) may include a first stage (or preprocessing stage) (700A), a second stage (700B), and a third stage (or encoding stage) (700C). The second stage (700B) may include a mode determination step (704) and a vertex merging step (or intra-frame vertex merging) (702). The third stage (or encoding stage) (700C) may include base mesh coding (706), displacement coding (708), and texture coding (710). The mode determination step (704) is configured to determine whether an intercoding mode or an intra-coding mode is applied to the frames associated with the base mesh. According to the encoding process (700), after the coding mode is determined in the mode determination step (704), if the coding mode of the frame is determined to be intra-coding mode, duplicate vertex merging can be applied to the base mesh. If the coding mode of the frame is determined to be inter-coding mode, duplicate vertex merging does not need to be applied to the frame.
[0078] In one embodiment, duplicate vertex merging can be placed in a third stage, such as the encoding stage (700 C). In one example, duplicate vertex merging may be placed before base mesh coding (706). Thus, if the coding mode of the base mesh frame is determined to be intra coding mode, duplicate vertex merging can be applied to the base mesh to generate a merged base mesh. The merged base mesh may contain subsets of multiple vertices of the base mesh. Vertices within a subset of multiple vertices may be unique or non-repeating. The merged base mesh may be further encoded in base mesh coding (706) according to the intra coding mode. Thus, base mesh coding (706) is performed on the merged base mesh, and duplicate vertices are merged (or skipped), thus reducing the input information for base mesh coding (706). If the coding mode of the frame is determined to be intercoding mode, duplicate vertex merging does not have to be applied to the frame.
[0079] In one embodiment, duplicate vertex merging can be placed (or implemented) within the base mesh coding (e.g., (706)) of the encoding stage (e.g., (700C)). Thus, base mesh coding (e.g., (706)) is applied to the base mesh. Therefore, base mesh coding can include two substeps. In the first substep, duplicate vertices of the base mesh can be identified. For example, a vertex of the base mesh can be determined as a duplicate vertex if a vertex of the base mesh and another vertex of the base mesh have the same reference vertex in a reference frame. In the second step, the base mesh can be encoded based on the coding mode determined in the mode determination step (e.g., (704)). For example, if the coding mode of the base mesh frame is determined to be intra coding mode during base mesh coding, duplicate vertex merging can be applied to the base mesh to produce a merged base mesh containing a subset of multiple vertices of the base mesh. The subset of multiple vertices may be further coded based on a static mesh codec. If the coding mode for the base mesh frame is determined to be intercoding mode, duplicate vertex merging does not need to be applied, and motion field coding can be applied to the base mesh. Compared to base mesh coding where duplicate vertex merging is performed before base mesh coding, base mesh coding where duplicate vertex merging is performed inside the encoding stage receives more input information because the duplicate vertices are not merged before base mesh coding.
[0080] In one embodiment, duplicate vertex merging can be performed before mode determination. In one example, duplicate vertex merging can be placed in the first stage before mode determination, as shown in Figure 6. As shown in Figure 6, when the duplicate vertices are merged in the base mesh vertex merging step (602) of the preprocessing stage (600A) to generate a merged base mesh, the merged vertex information can be signaled and sent to the mode determination stage (600B). In some examples, the merged vertex information can include an index. Therefore, in the mode determination stage (600B), the index of the merged vertex can be identified. Based on the index of the merged vertex, the merged vertices can be unmerged. In this way, the number of vertices in the current frame does not decrease, and a one-to-one vertex correspondence (or correlation) across frames (e.g., between the current frame and a reference frame) can be established. Furthermore, the cost (or predicted cost) of the intracoding mode and the cost of the intercoding mode may be compared to select between the intracoding mode and the intercoding mode. Once the prediction mode (or coding mode) is determined in the mode determination stage (600B), it is determined, based on the determined prediction mode, whether the base mesh or merged base mesh is encoded by the base mesh coding (602). For example, if the intra-prediction mode (or intra-coding mode) is determined in the mode determination stage (600B), the base mesh coding (602) can encode a merged base mesh with merged overlapping vertices. If the inter-prediction mode (or inter-coding mode) is determined in the mode determination stage (600B), the base mesh coding (602) can encode a base mesh.
[0081] Figure 8 shows a flowchart illustrating an overview of a first decoding process (800) according to an embodiment of the present disclosure, and Figure 9 shows a flowchart illustrating an overview of a second decoding process (900). Processes (800) and (900) can be used in a decoder such as a video decoder. In various embodiments, processes (800) and (900) can be 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, processes (800) and (900) are implemented by software instructions, and therefore, when a processing circuit executes a software instruction, the processing circuit performs processes (800) and (900), respectively.
[0082] In one example, process (800) starts at (S801) and proceeds to (S810).
[0083] In (S810), the base mesh is generated from the input mesh that has been downsampled in the current frame, and the base mesh contains multiple vertices.
[0084] In (S820), the prediction mode applied to the base mesh is determined. The prediction mode is either interprediction mode or intraprediction mode.
[0085] In (S830), based on the determination that the prediction mode is the intra-prediction mode, overlapping vertices among multiple vertices in the base mesh are merged to generate a subset of multiple vertices.
[0086] In (S840), based on the determined intra-prediction mode, at least a subset of multiple vertices is encoded, and prediction information for at least a subset of multiple vertices is generated.
[0087] In one example, overlapping vertices in the base mesh are merged based on the prediction mode being determined as intra-prediction mode. In another example, overlapping vertices in the base mesh are not merged based on the prediction mode being determined as inter-prediction mode.
[0088] In one example, each of the multiple overlapping vertices is a vertex in the base mesh that shares the same reference vertex in the reference frame with another vertex in the base mesh.
[0089] In one embodiment, merging overlapping vertices is included in determining the prediction mode.
[0090] In one embodiment, merging duplicate vertices involves encoding at least a subset of multiple vertices.
[0091] In some embodiments, multiple vertices of the base mesh are encoded based on the determination that the prediction mode is an inter-prediction mode. To encode multiple vertices of the base mesh, a reference vertex in a reference frame is determined for each of the multiple vertices. Inter-prediction information is generated for each of the multiple vertices based on the corresponding reference vertex for each vertex in the reference frame.
[0092] In some embodiments, each reference vertex of a plurality of vertices is a collated vertex in the reference frame of that vertex, and the collated vertex is positioned in the same relative position in the reference frame as each vertex of the base mesh in the current frame.
[0093] The process then proceeds to (S899) and terminates.
[0094] Process (800) can be appropriately adapted. The steps of Process (800) can be modified and / or omitted. Additional steps can be added. Any appropriate order of implementation can be used.
[0095] In one example, process (900) starts at (S901) and proceeds to (S910).
[0096] In (S910), a base mesh is generated from the downsampled input mesh in the current frame, and the base mesh contains multiple vertices.
[0097] In (S920), duplicate vertices among multiple vertices of the base mesh are merged to generate a merged base mesh containing a subset of multiple vertices.
[0098] In (S930), index information is generated to identify the merged duplicate vertices.
[0099] In (S940), the prediction mode applied to the base mesh is determined based on the merged base mesh and the generated index information. The prediction mode is either interprediction mode or intraprediction mode.
[0100] In (S950), based on the determined prediction mode being the inter-prediction mode, inter-prediction information for the base mesh is generated according to the generated index information.
[0101] In (S960), intra-prediction information for the base mesh is generated based on the determined prediction mode being the intra-prediction mode.
[0102] In one example, to determine the prediction mode, merged duplicate vertices of multiple vertices are unmerged based on the index information of the merged duplicate vertices. A reference vertex in the reference frame is determined for each of the multiple vertices of the base mesh in the current frame, and the reference frame is different from the current frame. A first prediction difference is determined for each of the multiple vertices of the base mesh. The first prediction difference for each of the multiple vertices indicates the difference between the reference vertex in the reference frame and each of the multiple vertices of the base mesh. A second prediction difference is determined for each of the multiple vertices of the base mesh. The second prediction difference for each of the multiple vertices indicates the difference between each of the multiple vertices and one or more neighboring vertices in the current frame of each of the multiple vertices.
[0103] In one example, to determine the prediction mode, the first cost value is determined as the sum of the first prediction differences associated with multiple vertices. The second cost value is determined as the sum of the second prediction differences associated with multiple vertices. The prediction mode is determined as (i) an inter-prediction mode based on the first cost value being less than or equal to the second cost value, and (ii) an intra-prediction mode based on the second cost value being less than the first cost value.
[0104] In some embodiments, a collated vertex in a reference frame is determined as the reference vertex for each of the multiple vertices, and the collated vertex is positioned in the same relative position in the reference frame as each vertex of the base mesh in the current frame.
[0105] In one embodiment, based on the determination that the prediction mode is an inter-prediction mode, inter-prediction information is generated for each of a subset of vertices based on the corresponding reference vertices of each index in the reference frame.
[0106] In one embodiment, based on the determination that the prediction mode is an intra-prediction mode, intra-prediction information is generated for each of a subset of vertices based on one or more neighboring vertices of each vertex in the current frame.
[0107] The process then proceeds to (S999) and terminates.
[0108] Process (900) can be appropriately adapted. The steps of Process (900) can be modified and / or omitted. Additional steps can be added. Any appropriate order of implementation can be used.
[0109] The techniques described above can be implemented as computer software physically stored on one or more computer-readable media using computer-readable instructions. For example, Figure 10 shows a computer system (1000) suitable for carrying out a particular embodiment of the subject matter of the disclosure.
[0110] Computer software can be coded using any suitable machine code or computer language that can undergo mechanisms such as assembly, compilation, and linking to create code that contains instructions that can be executed directly by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or through interpretation, microcode execution, etc.
[0111] Instructions can be executed on various types of computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, game consoles, and Internet of Things devices.
[0112] The components shown in Figure 10 of the computer system (1000) are essentially illustrative and are not intended to imply any limitation on the scope of use or functionality of the computer software implementing embodiments of the present disclosure. The configuration of the components should not be construed as having any dependencies or requirements on any or any combination of components shown in the exemplary embodiment of the computer system (1000).
[0113] The computer system (1000) may include certain human interface input devices. Such human interface input devices may respond to input from one or more human users via, for example, haptic input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), or olfactory input (not shown). Human interface devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as audio (e.g., voices, music, ambient sounds), images (e.g., scanned images, photographic images taken from still image cameras), or video (e.g., 2D video, 3D video including stereoscopic video).
[0114] The input human interface device may include one or more of the following (only one of each is depicted): keyboard (1001), mouse (1002), trackpad (1003), touchscreen (1010), data glove (not shown), joystick (1005), microphone (1006), scanner (1007), and camera (1008).
[0115] The computer system (1000) may also 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 (1010), data glove (not shown), or joystick (1005), although there may also be tactile feedback devices that do not function as input devices), audio output devices (e.g., speakers (1009), headphones (not shown)), visual output devices (screens (1010) including CRT screens, LCD screens, plasma screens, and OLED screens, each of which may or may not have touchscreen input functionality, each of which may or may not have tactile feedback functionality, some of which may output two-dimensional visual output or three-dimensional hyper-output via means such as stereo output, such as virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0116] The computer system (1000) may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (1020) having media such as CD / DVD (1021), thumb drives (1022), removable hard drives or solid-state drives (1023), legacy magnetic media such as tapes and floppy disks (not shown), and dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown).
[0117] Those skilled in the art should also understand that the term “computer-readable medium” as used in relation to the subject matter of this disclosure does not include transmission media, carrier waves, or other transient signals.
[0118] The computer system (1000) may also include an interface (1054) to one or more communication networks (1055). The networks may be, for example, wireless, wired, or optical. Networks may further be local, wide-area, metropolitan, vehicle and industrial, real-time, or latency-tolerant. Examples of networks include local area networks such as Ethernet and Wi-Fi; cellular networks such as GSM, 3G, 4G, 5G, and LTE; wired or wireless wide-area digital networks for television, including cable TV, satellite TV, and terrestrial broadcast TV; and vehicle and industrial networks, including CANBus. Certain networks generally require an external network interface adapter attached to a specific general-purpose data port or peripheral bus (1049) (e.g., a USB port on the computer system (1000)). Others are generally integrated into the core of the computer system (1000) by attachment to a system bus, as described later (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 (1000) may communicate with other entities. Such communications can be unidirectional, receive only (e.g., broadcast TV), transmit only (e.g., CANbus to a specific CANbus device), or bidirectional, for example, to other computer systems using local or wide-area digital networks. Specific protocols and protocol stacks can be used on each of those networks and network interfaces, as described above.
[0119] The aforementioned human interface device, human access storage device, and network interface can be mounted on the core (1040) of the computer system (1000).
[0120] The core (1040) may include one or more central processing units (CPUs) (1041), graphics processing units (GPUs) (1042), dedicated programmable processing units in the form of field-programmable gate areas (FPGAs) (1043), hardware accelerators for specific tasks (1044), graphics adapters (1050), and the like. These devices may be connected via a system bus (1048) along with read-only memory (ROM) (1045), random access memory (1046), internal mass storage such as internal non-user-accessible hard drives, SSDs, etc. (1047). In some computer systems, the system bus (1048) may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripherals may be connected directly to the core's system bus (1048) or via a peripheral bus (1049). For example, a screen (1010) may be connected to the graphics adapter (1050). Peripheral bus architectures include PCI, USB, and others.
[0121] The CPU (1041), GPU (1042), FPGA (1043), and accelerator (1044) can execute specific instructions that, when combined, can constitute the computer code described above. This computer code can be stored in ROM (1045) or RAM (1046). Transitional data can also be stored in RAM (1046), while permanent data can be stored, for example, in internal mass storage (1047). Fast storage and retrieval to any of the memory devices can be enabled by the use of cache memory, which can be closely associated with one or more CPUs (1041), GPUs (1042), mass storage (1047), ROM (1045), RAM (1046), etc.
[0122] 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 technology.
[0123] For example, but not limited to, an architecture, in particular a computer system (1000) having a core (1040), can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) running 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 (1040) of a non-transient nature, such as core internal mass storage (1047) or ROM (1045). Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (1040). The computer-readable media can include one or more memory devices or chips, depending on the specific needs. The software can cause the core (1040), specifically the processor (including a CPU, GPU, FPGA, etc.) therein, to execute certain processes or specific parts of certain processes described herein, including defining data structures stored in RAM (1046) and modifying such data structures according to processes defined by the software. In addition, or alternatively, a computer system may provide functionality as a result of logic embodied in a circuit (e.g., an accelerator (1044)) in a hardwired or otherwise manner, and may, in place of or in conjunction with software, perform a particular process or a particular part of a particular process described herein. References to software may, where appropriate, encompass logic, and vice versa. References to computer-readable media may, where appropriate, encompass a circuit (such as an integrated circuit (IC)) that stores software for execution, a circuit that embodies logic for execution, or both. This disclosure encompasses any appropriate combination of hardware and software.
[0124] The use of “at least one of” or “one of” in this disclosure is intended to include any one or combination of the enumerated elements. For example, a reference to at least one of A, B, or C, i.e., at least one of A, B, and C, at least one of A, B, and / or C, and at least one of A through C are intended to include A only, B only, C only, or any combination thereof. A reference to either A or B, and either A and B, are intended to include A or B or (A and B). The use of “one of” does not exclude any combination of the enumerated elements where applicable, such as when the elements are not mutually exclusive.
[0125] While this disclosure has described several exemplary embodiments, there are many modifications, substitutions, and alternative equivalents that fall within the scope of this disclosure. Those skilled in the art will therefore understand that numerous systems and methods not expressly shown or described herein can be devised to embody the principles of this disclosure and thus fall within the spirit and scope of this disclosure. [Explanation of Symbols]
[0126] 100 Video Processing System, 101 Video Source, 102 Video Picture Stream, 103 Video Encoder, 104 Video Data, 105 Streaming Server, 106 Client Subsystem, 107 Incoming Copy, 108 Client Subsystem, 109 Copy, 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 Inverse Unit, 252 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 Decoder, 334 Reference picture memory, 335 Predictor, 340 Transmitter, 343 Video sequence, 345 Entropy coder, 350 Controller, 360 Communication channel, 400 Encoding process, 400A Preprocessing stage, 400B Mode determination stage, 400C Encoding stage, 402 Mesh decimation process, 404 Atlas parameterization process, 406 Subdivision surface fitting process, 408 Base mesh coding, 410 Displacement coding, 412 Texture coding, 500 Preprocessing stage, 502 Curves, 504 Polylines, 506 Polylines, 508 Edges, 518 Displacement curves, 600 Encoding process, 600A Preprocessing stage, 600B Mode determination stage, 602 Vertex merge step, 700 Encoding process, 700A Preprocessing stage, 700C Encoding stage, 702 Intraframe vertex merging, 704 Mode determination step, 706 Base mesh coding, 708 Displacement coding, 710 Texture coding, 800 Decoding process, 900 Decoding process, 1000 Computer system, 1001 Keyboard, 1002 Mouse, 1003Trackpad, 1005 Joystick, 1006 Microphone, 1007 Scanner, 1008 Camera, 1009 Speaker, 1010 Touchscreen, 1021 Media, 1022 Thumb Drive, 1023 Solid State Drive, 1040 Core, 1041 CPU, 1042 GPU, 1043 Field Programmable Gate Area, 1044 Hardware Accelerator, 1045 Read-Only Memory ROM, 1046 Random Access Memory, 1047 Mass Storage, 1048 System Bus, 1049 Peripheral Bus, 1050 Graphics Adapter, 1054 Interface, 1055 Communication Network
Claims
1. A method for mesh processing performed in an encoder, A step of generating a base mesh from an input mesh downsampled in the current frame, wherein the base mesh includes a plurality of vertices. The step of determining the prediction mode to be applied to the base mesh, wherein the prediction mode is an inter-prediction mode or an intra-prediction mode. A step of generating a subset of the plurality of vertices by merging the overlapping vertices among the plurality of vertices in the base mesh, based on the determination that the prediction mode is the intra prediction mode, wherein each of the overlapping vertices is a vertex of the base mesh that shares the same reference vertex in the reference frame with another vertex in the base mesh; The steps include: encoding at least a subset of the plurality of vertices based on the determined intra prediction mode to generate prediction information for at least a subset of the plurality of vertices; Methods that include...
2. The overlapping vertices in the base mesh are merged based on the determination that the prediction mode is the intra-prediction mode. The overlapping vertices in the base mesh are not merged based on the fact that the prediction mode is determined to be the interprediction mode. The method according to claim 1.
3. The method according to claim 1, wherein the step of merging the overlapping vertices is included in the step of determining the prediction mode.
4. The method according to claim 1, wherein the step of merging the overlapping vertices includes the step of encoding at least the subset of the plurality of vertices.
5. Based on the determination that the prediction mode is the interprediction mode, The step of encoding the plurality of vertices of the base mesh. It further includes, The step of encoding the plurality of vertices of the base mesh is: The steps include determining a reference vertex in the reference frame for each of the aforementioned multiple vertices, The steps include generating interpretation information for each of the plurality of vertices based on the reference vertices corresponding to each of the vertices in the reference frame, including, The method according to claim 1.
6. The method according to claim 5, wherein each of the plurality of vertices' reference vertices is a collated vertex within the reference frame of each of the vertices, and the collated vertices are positioned in the same relative position within the reference frame as each of the vertices of the base mesh in the current frame.
7. A method for mesh processing performed in an encoder, A step of generating a base mesh from an input mesh downsampled in the current frame, wherein the base mesh includes a plurality of vertices. A step of merging the overlapping vertices of the plurality of vertices of the base mesh to generate a merged base mesh containing a subset of the plurality of vertices, wherein each of the overlapping vertices is a vertex of the base mesh that shares the same reference vertex in a reference frame with another vertex in the base mesh; The steps include generating index information to identify the merged duplicate vertices, A step of determining a prediction mode to be applied to the base mesh based on the merged base mesh and the generated index information, wherein the prediction mode is an inter-prediction mode or an intra-prediction mode. Based on the determined prediction mode being the inter-prediction mode, the steps include generating inter-prediction information for the base mesh according to the generated index information, Based on the determined prediction mode being the intra prediction mode, the steps include generating intra prediction information for the base mesh, Methods that include...
8. The step of determining the prediction mode is: The steps include: unmerging the merged duplicate vertices of the plurality of vertices based on the index information of the merged duplicate vertices; A step of determining a reference vertex in a reference frame for each of the plurality of vertices of the base mesh in the current frame, wherein the reference frame is different from the current frame. A step of determining a first predicted difference for each of the plurality of vertices of the base mesh, wherein the first predicted difference for each of the plurality of vertices represents the difference between the reference vertex in the reference frame and each of the plurality of vertices of the base mesh; A step of determining a second predicted difference for each of the plurality of vertices of the base mesh, wherein the second predicted difference for each of the plurality of vertices represents the difference between each of the plurality of vertices and one or more neighboring vertices in the current frame of each of the plurality of vertices. The method according to claim 7, including the method described in claim 7.
9. The step of determining the prediction mode is: A step of determining a first cost value as the sum of the first prediction differences associated with the plurality of vertices, The steps include determining a second cost value as the sum of the second prediction differences associated with the plurality of vertices, The steps include determining the prediction mode as (i) the inter-prediction mode based on the first cost value being less than or equal to the second cost value, and (ii) the intra-prediction mode based on the second cost value being less than the first cost value, The method according to claim 8, further comprising:
10. The step of determining the aforementioned reference vertex is, A step of determining, for each of the plurality of vertices, the collated vertex in the reference frame as the reference vertex, wherein the collated vertex is positioned in the same relative position in the reference frame as each of the vertices of the base mesh in the current frame. The method according to claim 8, further comprising:
11. The step of generating the interprediction information of the base mesh is: Based on the determination that the prediction mode is the inter-prediction mode, the step of generating the inter-prediction information for each of the subsets of the plurality of vertices based on the corresponding reference vertices of the index information in the reference frame, The method according to claim 8, further comprising:
12. The step of generating the intra prediction information of the base mesh is: Based on the determination that the prediction mode is the intra prediction mode, the step of generating the intra prediction information for each of the subsets of the plurality of vertices based on one or more neighboring vertices of each of the vertices in the current frame, The method according to claim 8, further comprising:
13. An apparatus for mesh processing, configured to carry out the method according to any one of claims 1 to 6.
14. An apparatus for mesh processing, configured to carry out the method according to any one of claims 7 to 12.
15. A computer program that, when executed by at least one processor, includes instructions configured to cause the processor to perform the method according to any one of claims 1 to 6.
16. A computer program that, when executed by at least one processor, includes instructions configured to cause the processor to perform the method according to any one of claims 7 to 12.
Citation Information
Patent Citations
Mesh decoding device, mesh decoding method, and program
JP2024152167A
Three-Dimensional Mesh Compression Using a Video Encoder
US20210090301A1
Processing of 3D image information based on texture maps and meshes
US20210150802A1
Vertex motion vector predictor coding for vertex mesh (v-mesh)
US20240137558A1
Hierarchical tree attribute coding by median points in point cloud coding
WO2020123469A1