Signaling repeated vertex removal in grid motion vector coding
By using the technology of signaling to repetitive vertex removal in grid motion vector encoding, the problem of low processing efficiency of time-varying connectivity information and attribute graphs in dynamic grids in the prior art is solved, and more efficient data compression and transmission are achieved.
Patent Information
- Application Number
- CN202480003790.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-03-12
- Filing Date
- 2024-03-13
- Publication Date
- 2025-04-04
AI Technical Summary
The existing 3D mesh compression standards fail to effectively handle time-varying connectivity information and attribute diagrams in dynamic mesh, resulting in large amounts of data and low efficiency in applications such as real-time communication, storage and rendering.
By introducing technical means to signal repeated vertices removal in grid motion vector encoding, the number of motion vectors is reduced and the information of repeated vertices is optimized during encoding and decoding.
It effectively reduces the amount of data in dynamic grid sequences, improves the compression efficiency and transmission speed of data, and is suitable for applications such as real-time communication and storage.
Smart Images

Figure CN119768840A_ABST
Abstract
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority to U.S. Provisional Application No. 63 / 451,888 filed on March 13, 2023 and U.S. Application No. 18 / 602,832 filed on March 12, 2024, the disclosures of which are incorporated herein by reference in their entirety. Technical Field
[0002] The present disclosure relates to a set of advanced video coding techniques. More specifically, the present disclosure relates to signaling duplicated vertex removal in mesh motion vector coding. Background Art
[0003] Advances in 3D (Three-Dimensional, 3D) capture, modeling and rendering have facilitated the ubiquity of 3D content on several platforms and devices. Today, it is possible to capture a baby's first steps in one continent, and enable grandparents to see (and possibly interact with) and enjoy a fully immersive experience with the child in another continent. However, in order to achieve such realism, models are becoming increasingly complex, and large amounts of data are associated with the creation and consumption of these models. 3D meshes are widely used to represent such immersive content.
[0004] A mesh is composed of several polygons that describe the surface of a volumetric object. Each polygon is defined by its vertices in 3D space and information about how the vertices are connected (called connectivity information). Optionally, vertex attributes such as color, normals, etc. can be associated with mesh vertices. Attributes can also be associated with the surface of a mesh by using mapping information that parameterizes the mesh with a 2D attribute graph. Such mappings are typically described by a set of parameter coordinates called UV coordinates or texture coordinates associated with mesh vertices. A 2D attribute graph is used to store high-resolution attribute information such as textures, normals, displacements, etc. Such information can be used for various purposes, such as texture mapping and shading.
[0005] Dynamic mesh sequences may require a large amount of data because they may include a large amount of information that varies over time. Therefore, efficient compression techniques are needed to store and transmit such content. Previously, MPEG (Moving Picture Experts Group, MPEG) developed mesh compression standards IC, MESHGRID, FAMC to handle dynamic meshes with constant connectivity and time-varying geometry and vertex attributes. However, these standards do not consider time-varying attribute graphs and connectivity information. DCC (digital content creation) tools usually generate such dynamic meshes. Correspondingly, for volume acquisition technology, it is challenging to generate constant connectivity dynamic meshes, especially under real-time constraints. Existing standards do not support this type of content. MPEG plans to develop new mesh compression standards to directly handle dynamic meshes with time-varying connectivity information and optionally time-varying attribute graphs. The standard is for lossy and lossless compression of various applications such as real-time communication, storage, free viewpoint video, AR and VR. Functions such as random access and scalable / progressive coding are also considered.
[0006] Mesh geometry information includes vertex connectivity information, 3D coordinates, 2D texture coordinates, etc. The compression of vertex 3D coordinates (also known as vertex positions) is very important because in most cases, it occupies a considerable portion of the entire geometry-related data. Summary of the invention
[0007] According to one or more embodiments, a method for decoding a dynamic mesh sequence includes: receiving an encoded bit stream, the encoded bit stream including a dynamic mesh sequence in a first frame and a second frame, the second frame appearing later than the first frame; reconstructing the dynamic mesh in the first frame; determining whether a duplicate vertex removal mode is enabled, in which a motion vector of a vertex in the dynamic mesh second frame is a repetition of a vertex in the dynamic mesh sequence in the first frame; based on determining that the duplicate vertex removal mode is enabled, decoding the motion vector of each vertex in the second frame that is not a repetition of a vertex in the reconstructed first frame; and reconstructing the dynamic mesh sequence in the second frame using the reconstructed dynamic mesh in the first frame and each decoded motion vector.
[0008] According to one or more embodiments, a method for encoding a dynamic mesh includes: receiving a first frame including a dynamic mesh sequence and a second frame including the dynamic mesh sequence, the second frame appearing after the first frame; determining a motion vector between each vertex of the dynamic mesh sequence in the first frame and a corresponding vertex of the dynamic mesh sequence in the second frame; generating an encoded bit stream, the encoded bit stream including: each determined motion vector; an indication of whether a vertex of the dynamic mesh sequence in the second frame is a duplicate of a vertex of the dynamic mesh sequence in the first frame; and an indication of whether a duplicate vertex removal mode is enabled, in which the motion vectors of vertices in the dynamic mesh sequence of the second frame that are duplicates of vertices of the dynamic mesh sequence in the first frame are skipped in reconstruction of the second frame.
[0009] According to one or more embodiments, a method for processing a dynamic mesh sequence includes: reconstructing the dynamic mesh sequence in the second frame based on an encoded bit stream including a first frame and a second frame, the second frame appearing after the first frame, wherein the first frame is reconstructed, wherein the encoded video bit stream includes an indication of whether a duplicate vertex removal mode is enabled, in which duplicate vertex removal mode, motion vectors of vertices in the dynamic mesh second frame are repetitions of vertices in the dynamic mesh sequence in the first frame, wherein, based on determining that the duplicate vertex removal mode is enabled, the motion vector of each vertex in the second frame that is not a repetition of a vertex in the reconstructed first frame is decoded, and wherein the dynamic mesh sequence in the second frame is reconstructed using the reconstructed first frame and each decoded motion vector. BRIEF DESCRIPTION OF THE DRAWINGS
[0010] Additional features, properties, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings, in which:
[0011] Figure 1 is a schematic diagram of a block diagram of a communication system according to an embodiment of the present disclosure.
[0012] Figure 2 is a schematic diagram of a block diagram of a streaming system according to an embodiment of the present disclosure.
[0013] Figure 3 Examples of dynamic mesh sequences in different frames are shown according to an embodiment of the present disclosure.
[0014] Figure 4 An example decoder process for decoding a dynamic trellis sequence using a repetition removal mode is shown in accordance with an embodiment of the present disclosure.
[0015] Figure 5 An example decoder process for decoding a dynamic trellis sequence using a repetition removal mode is shown in accordance with an embodiment of the present disclosure.
[0016] Figure 6 A flow chart showing a process performed by a decoder according to an embodiment of the present disclosure.
[0017] Figure 7 A flow chart showing a process performed by an encoder according to an embodiment of the present disclosure.
[0018] Figure 8 is a diagram of a computer system suitable for implementing embodiments of the present disclosure. DETAILED DESCRIPTION
[0019] The following detailed description of example embodiments refers to the accompanying drawings.The same reference numbers in different drawings may identify the same or similar elements.
[0020] The foregoing disclosure provides explanation and description, but is not intended to be exhaustive or to limit implementation to disclosed exact form. According to the above disclosure, modifications and variations can be made, or modifications and variations can be obtained from the practice of implementation. In addition, one or more features or parts of an embodiment can be incorporated into another embodiment or combined with another embodiment (or one or more features of another embodiment). In addition, in the flow chart and the description of the operation provided below, it should be understood that one or more operations can be omitted, one or more operations can be added, one or more operations can be performed (at least in part) simultaneously, and the order of one or more operations can be switched.
[0021] It will be apparent that the systems and / or methods described herein can be implemented in various forms of hardware, firmware, or a combination of hardware and software. The actual dedicated control hardware or software code used to implement these systems and / or methods does not limit the implementation. Therefore, the operation and behavior of the systems and / or methods are described herein without reference to specific software code - it should be understood that software and hardware can be designed to implement the systems and / or methods based on the description herein.
[0022] Even though particular combinations of features are recited in the claims and / or disclosed in the specification, these combinations are not intended to limit the disclosure of possible implementations. In fact, many of these features may be combined in ways not specifically recited in the claims and / or disclosed in the specification. Although each dependent claim listed below may directly reference only one claim, the disclosure of possible implementations includes each dependent claim in combination with every other claim in the claim set.
[0023] Unless explicitly described herein, the elements, actions or instructions used herein should not be interpreted as critical or necessary. In addition, as used herein, the articles "a kind of" and "an" are intended to include one or more items, and can be used interchangeably with "one or more". When only one item is intended, the term "one" or similar language is used. In addition, as used herein, the terms "has", "have", "having", "including", "including", etc. are intended to be open terms. In addition, unless explicitly stated otherwise, the phrase "based on" is intended to mean "based at least in part". In addition, statements such as "at least one of [A] and [B]" or "at least one of [A] or [B]" should be understood to include only A, only B, or both A and B.
[0024] Throughout the specification, references to "one embodiment," "an embodiment," or similar language mean that a particular feature, structure, or characteristic described in conjunction with the indicated embodiment is included in at least one embodiment of the present solution. Thus, throughout the specification, the phrases "in one embodiment," "in an embodiment," and similar language may, but do not necessarily, all refer to the same embodiment.
[0025] In addition, the described features, advantages and characteristics of the present disclosure can be combined in any suitable manner in one or more embodiments. Based on the description herein, those skilled in the relevant art will recognize that the present disclosure can be practiced without one or more specific features or advantages of a particular embodiment. In other cases, additional features and advantages can be recognized in certain embodiments, which may not be present in all embodiments of the present disclosure.
[0026] Reference Figure 1 to Figure 2 , describes one or more implementations of the encoding structure and decoding structure of the present disclosure for implementing the present disclosure.
[0027] Figure 1 A simplified block diagram of a communication system 100 according to an embodiment of the present disclosure is shown. The system 100 may include at least two terminals 110, 120 interconnected via a network 150. For unidirectional transmission of data, the first terminal 110 may encode video data, which may include mesh data, at a local location for transmission to another terminal 120 via the network 150. The second terminal 120 may receive the encoded video data of the other terminal from the network 150, decode the encoded data and display the recovered video data. Unidirectional data transmission may be common in media service applications and the like.
[0028] Figure 1A second pair of terminals 130, 140 is shown, which are provided to support bidirectional transmission of encoded video, such as may occur during a video conference. For bidirectional transmission of data, each terminal 130, 140 can encode video data captured at a local location for transmission to the other terminal via a network 150. Each terminal 130, 140 can also receive encoded video data transmitted by the other terminal, can decode the encoded data, and can display the recovered video data at a local display device.
[0029] exist Figure 1 In the embodiment of the present invention, the terminals 110 to 140 can be, for example, servers, personal computers and smart phones, and / or any other type of terminals. For example, the terminals (110 to 140) can be laptop computers, tablet computers, media players and / or dedicated video conferencing equipment. Network 150 represents any number of networks that transmit encoded video data between terminals 110 to 140, including, for example, wired and / or wireless communication networks. Communication network 150 can exchange data in circuit switching channels and / or packet switching channels. Representative networks include telecommunication networks, local area networks, wide area networks, and / or the Internet. For the purpose of this discussion, unless otherwise specified below, the architecture and topology of network 150 may be insignificant for the operation of the present disclosure.
[0030] Figure 2 The placement of a video encoder and decoder in a streaming environment is shown as an example of an application for the disclosed subject matter. The disclosed subject matter can be used with other video-enabled applications, including, for example, video conferencing, digital television, storing compressed video on digital media including CD (Compact Disc, CD), DVD (Digital Versatile Disc, DVD), memory sticks, etc.
[0031] like Figure 2 As shown, the streaming system 200 may include a capture subsystem 213, which includes a video source 201 and an encoder 203. The streaming system 200 may also include at least one streaming server 205 and / or at least one streaming client 206.
[0032] Video source 201 can create a stream 202 that includes, for example, a 3D mesh and metadata associated with the 3D mesh. Video source 201 can include, for example, a 3D sensor (e.g., a depth sensor) or a 3D imaging technology (e.g., a digital camera) and a computing device configured to generate a 3D mesh using data received from the 3D sensor or the 3D imaging technology. Sample stream 202, which can have a high amount of data compared to an encoded video bitstream, can be processed by an encoder 203 coupled to video source 201. Encoder 203 can include hardware, software, or a combination thereof to implement or implement various aspects of the disclosed subject matter as described in more detail below. Encoder 203 can also generate an encoded video bitstream 204. The encoded video bitstream 204, which can have a lower amount of data when compared to an uncompressed stream 202, can be stored on a streaming server 205 for future use. One or more streaming clients 206 may access the streaming server 205 to retrieve a video bitstream 209 , which may be a copy of the encoded video bitstream 204 .
[0033] The streaming client 206 may include a video decoder 210 and a display 212. The video decoder 210 may, for example, decode a video bitstream 209 that is an incoming copy of an encoded video bitstream 204 and create an outgoing video sample stream 211 that may be presented on the display 212 or another presentation device (not depicted). In some streaming systems, the video bitstreams 204, 209 may be encoded according to some video encoding / compression standard.
[0034] According to one or more embodiments, a dynamic mesh sequence M at a time instance t is referred to as M(t). If there is a one-to-one mapping f from the vertex positions of M(t) to the vertex positions of another time instance M(t0), then M(t) can be referred to as a position following frame, where t and t0 are different time instances. M(t0) can be referred to as a reference frame, and the corresponding vertex in the reference frame is referred to as a reference vertex.
[0035] For a position-following frame and a corresponding reference frame, the vertex position difference between the mapped vertices in the two frames is represented by a Motion Vector (MV). In MV coding, a residual MV is derived from the prediction using neighboring decoded MVs.
[0036] The following two facts enable improved motion vector coding. First, there are repeated vertices in the decoded mesh of the reference frame. A pair of repeated vertices (A, A') can be defined as two vertices in the decoded mesh frame with the same position but different vertex indices. Assume that A is the previous vertex compared to A' in the encoding / decoding order. Vertex A is called the previous vertex, while vertex A' is called the subsequent vertex. Second, in most cases, the MVs of repeated vertices A and A' can be exactly the same. Some motion vector coding methods based on integrating repeated vertices convert the kth pair of repeated vertices (A k , A k ': k = 1, ..., K) into a single vertex A k (e.g., referred to as an integrated vertex), and updates the connectivity in the decoded mesh of the reference frame. Since the repeated vertices are integrated, the method further updates the 1-to-1 mapping between the frame and its reference frame at the encoder, which reduces the number of MVs. On the other hand, after the integration of the repeated vertices, there are some integrated vertices with multiple MVs. Therefore, the method signals the total number and all indices of additional MVs from these multiple MVs. If the integrated vertex A k With N k (N k >1) MVs, the number and index of the additional MVs are (N k -1) and k. The total number of additional MVs is Therefore, there are repeated vertices and non-repeated vertices in the decoded mesh before integration. After integration, the integrated vertices may have a single MV (eg, a majority) or multiple MVs.
[0037] Embodiments of the present disclosure relate to methods and systems for signaling duplicate vertex removal in mesh motion vector encoding. The proposed methods can be used alone or in combination in any order. In addition, each of the methods (or embodiments), encoders, and decoders can be implemented by processing circuit systems (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute a program stored in a non-transitory computer-readable medium.
[0038] Embodiments of the present disclosure relate to methods and systems for mesh motion vector coding. Embodiments of the present disclosure may be applied individually or in any combination.
[0039] For a vertex V in a position-following frame M(t), its neighbors are vertices connected to V by edges, and these vertices are called neighbor vertices of V. For a position-following frame M(t) and its reference frame M(t0), in one or more examples, f is a mapping between the vertex positions of M(t) and the vertex positions of M(t0). Given a vertex V in M(t), if there is an encoded vertex in M(t) So that their reference vertices f(V) and V can be a duplicate vertex if it has the same position value. The encoded vertex means The encoding order of is before V. Assuming that the subscripts x, y, and z represent 3D coordinates in xyz space, for the repeated vertex V, let and
[0040] In one or more examples, for a duplicate vertex V, if V and Have the same position value and Then V is a skippable repetition; otherwise, V is a non-skippable repetition.
[0041] Figure 3 An example of two frames 300 and 302 is shown. Frame 302 may be a position-following frame, while frame 300 may be a reference frame that occurs before frame 302. Frames include vertices V1 and V2, which may be part of a dynamic mesh sequence. Motion vector MV1 is a motion vector between vertex V1 in frame 300 and frame 302. Motion vector MV2 is a motion vector between vertex V2 in frame 300 and frame 302. Figure 3 As shown, vertex V1 in frame 300 and frame 302 has the same UV coordinate (2, 2), while vertex V2 in frame 300 and frame 302 has different UV coordinates (3, -3) and (1, -2), respectively. Therefore, vertex V1 in frame 300 and frame 302 can be considered as a duplicate vertex. Figure 3 A UV coordinate system is shown, but as will be appreciated by one of ordinary skill in the art, vertices in the mesh may have any suitable coordinate system known to one of ordinary skill in the art.
[0042] According to one or more embodiments, statistics of the vertices of the reconstructed reference frame can be calculated. Based on the statistics, a duplicate vertex removal mode can be turned on or off. The duplicate removal mode can be used to turn on or off the process of duplicate vertex removal. For example, when duplicate vertex removal is turned on, all indices that cannot be skipped duplicates (or equivalently, all indices that can skip duplicates) are encoded and sent to a decoder. Subsequently, motion vectors for non-skippable duplicates and motion vectors for non-duplicate vertices are encoded and sent to a decoder. In one or more examples, when duplicate vertex removal is turned off, motion vectors for all vertices are encoded and sent to a decoder.
[0043] Figure 4 A syntax 400 of a process performed by a decoder receiving an encoded bitstream including a dynamic mesh sequence is shown. As shown in the syntax 400, a duplicate_removal_mode flag is set based on calculated statistics (e.g., reference_frame_statistics_calculation()). For example, a reference frame in the encoded bitstream can be reconstructed. A statistical calculation can be performed to determine the percentage of vertices in the reconstructed reference frame that are duplicates of vertices in another frame. For example, in the encoded bitstream, each vertex in the reference frame can be associated with a flag indicating whether the vertex is a duplicate vertex. Based on the statistical calculation, the percentage of vertices that are duplicate vertices can be determined. For example, if the reference frame includes 1000 vertices and 50 vertices are marked as duplicate vertices, the percentage of vertices that are duplicates is 5%. The determined percentage of vertices that are duplicates can be compared to a threshold value (e.g., 2%), and if the determined percentage is greater than or equal to the threshold value, the duplicate_removal_mode flag is set to a TRUE value to indicate that duplicate removal mode is enabled.
[0044] If duplicate removal mode is enabled (e.g., duplicate_removal_mode=TRUE or 1), then for position-following frames, the motion vectors of non-skippable vertices (e.g., non-duplicate vertices) are decoded. If duplicate removal mode is not enabled (e.g., duplicate_removal_mode=FALSE or 0), then for position-following frames, the motion vector of each vertex is decoded.
[0045] Figure 5 Syntax 500 shows the processing performed by a decoder receiving an encoded bitstream including a dynamic trellis sequence. Figure 4Compared to syntax 400 in , syntax 500 can handle coded bitstreams in which the value of duplicate_removal_mode is explicitly signaled. For example, the coded bitstream can specify duplicate_removal_mode as one of: (i) TRUE or 1; or (ii) FALSE or 0.
[0046] Figure 6 600 is a flowchart of an example process 600 performed by a decoder. In one or more examples, the process 600 can be performed by the decoder 210 ( Figure 2 )implement.
[0047] Process 600 may begin at operation S602, where the encoded bitstream includes a dynamic grid sequence in a first frame and a second frame. For example, the encoded bitstream may include a dynamic grid sequence included in a reference frame (e.g., frame 300) and a position-following frame (302).
[0048] The process proceeds to operation S604, in which the dynamic grid sequence in the first frame is reconstructed. For example, a reference frame (eg, frame 300) included in the encoded bitstream may be reconstructed.
[0049] Processing proceeds to operation S606, in which a determination is made whether to enable duplicate vertex removal mode. For example, the grammar 400 ( Figure 4 )or( Figure 5 ) to perform a determination on whether duplicate vertex removal mode is enabled.
[0050] The process proceeds to operation S608, where a motion vector of each non-skippable vertex in the second frame is decoded based on the determination that the duplicate vertex removal mode is enabled. The process proceeds to operation S610, where a dynamic mesh sequence in the second frame is reconstructed using the reconstructed first frame.
[0051] Figure 7 A flow chart of an example process 700 performed by an encoder is shown. In one or more examples, process 700 can be performed by encoder 203.
[0052] Process 700 may begin at operation S702, where a first frame and a second frame including a dynamic grid sequence may be received. For example, the first frame and the second frame may correspond to Figure 3 A reference frame 300 and a position following frame 302 in FIG.
[0053] Processing proceeds to operation S704, in which each of the motion vectors between the first frame and the second frame is determined. Processing proceeds to operation S706, in which a coded bitstream is generated. The coded bitstream may indicate whether each vertex in the second frame is a duplicate of a vertex in the first frame (e.g., the reference frame). The coded bitstream may indicate whether a duplicate removal mode is enabled. For example, the encoder may perform the same operation on the first frame as described with respect to syntax 400 ( Figure 4 ) to determine whether a flag indicating that duplicate removal mode is enabled is set.
[0054] The above techniques may be implemented as computer software using computer-readable instructions and physically stored in one or more computer-readable media. For example, Figure 8 A computer system 800 suitable for implementing certain embodiments of the present disclosure is shown.
[0055] Computer software may be encoded using any suitable machine code or computer language, which may be subjected to mechanisms such as assembly, compilation, and linking to create code comprising instructions that may be directly executed by a computer central processing unit (CPU), graphics processing unit (GPU), etc., or executed through interpretation, microcode execution, etc.
[0056] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, etc.
[0057] Figure 8 The components shown for computer system 800 are examples and are not intended to suggest any limitation on the scope of use or functionality of computer software implementing embodiments of the present disclosure. Nor should the configuration of components be interpreted as having any dependency or requirement related to any one or combination of components shown in the non-limiting embodiment of computer system 800.
[0058] Computer system 800 may include certain human-machine interface input devices. Such human-machine interface input devices may respond to input by one or more human users through, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, tapping), visual input (e.g., gestures), olfactory input (not depicted). Human-machine interface devices may also be used to capture certain media that are not necessarily directly related to human conscious input, such as audio (e.g., voice, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a still image camera), and videos (e.g., two-dimensional video, three-dimensional video including stereoscopic video).
[0059] Input human interface devices may include one or more of the following (only one of each is depicted): keyboard 801 , mouse 802 , trackpad 803 , touch screen 810 , data glove, joystick 805 , microphone 806 , scanner 807 , camera 808 .
[0060] The computer system 800 may also include certain human-machine interface output devices. Such human-machine interface output devices may stimulate the sense organs of one or more human users by, for example, tactile output, sound, light, and smell / taste. Such human-machine interface output devices may include tactile output devices (e.g., tactile feedback by touch screen 810, data gloves, or joystick 805, but there may also be tactile feedback devices that are not used as input devices). For example, such devices may be audio output devices (e.g., speakers 809, headphones (not depicted)), visual output devices (e.g., screens 810 including CRT screens, LCD screens, plasma screens, OLED screens, each with or without touch screen input capabilities, each with or without tactile feedback capabilities, some of which may output two-dimensional visual outputs or output more than three-dimensional outputs by means such as stereographic outputs; virtual reality glasses (not depicted), holographic displays, and cigarette boxes (not depicted)), and printers (not depicted).
[0061] The computer system 800 may also include storage devices and their associated media accessible to humans, such as optical media including CD / DVD ROM (Read Only Memory, ROM) / RW 820 with CD / DVD and other media 821, a thumb drive 822, a removable hard disk drive or solid-state drive 823, traditional magnetic media such as tapes and floppy disks (not depicted), dedicated ROM / ASIC (Application Specific Integrated Circuit, ASIC) / PLD (Programmable Logic Device, PLD)-based devices such as security dongles (not depicted), etc.
[0062] Those skilled in the art should also understand that the term "computer-readable media" used in connection with the presently disclosed subject matter does not include transmission media, carrier waves, or other transient signals.
[0063] The computer system 800 may also include an interface to one or more communication networks. The network may be wireless, wired, optical. The network may also be local, wide, metropolitan, vehicle-mounted and industrial, real-time, delay-tolerant, etc. Examples of networks include: local area networks such as Ethernet; wireless LAN (Local Area Network, LAN); cellular networks including GSM (Global System for Mobile Communications, GSM), 3G (the Third Generation, 3G), 4G (the Fourth Generation, 4G), 5G (the Fifth Generation, 5G), LTE (Long Term Evolution, LTE), etc.; TV wired or wireless wide area digital networks including cable TV, satellite TV and terrestrial broadcast TV; vehicle and industrial networks including CANBus, etc. Some networks typically require an external network interface adapter attached to some general data port or peripheral bus 849 (such as, for example, a USB port of the computer system 800); other networks are typically integrated into the core of the computer system 800 by attaching to a system bus as described below (e.g., to an Ethernet interface in a PC computer system or to a cellular network interface in a smart phone computer system). Using any of these networks, the computer system 800 can communicate with other entities. Such communications can be one-way receive only (e.g., broadcast TV), one-way send only (e.g., CANBus to certain CANBus devices), or two-way, for example, to other computer systems using a local area digital network or a wide area digital network. Such communications may include communications to a cloud computing environment 855. Certain protocols and protocol stacks may be used on each of these networks and network interfaces as described above.
[0064] The above-mentioned human-machine interface devices, human-accessible storage devices, and network interface 854 may be attached to the core 840 of the computer system 800 .
[0065] The core 840 may include one or more central processing units (CPUs) 841, graphics processing units (GPUs) 842, dedicated programmable processing units in the form of field programmable gate areas (FPGAs) 843, hardware accelerators 844 for certain tasks, and the like. These devices, along with read-only memory (ROM) 845, random access memory 846, internal mass storage devices 847 such as internal non-user accessible hard disk drives, SSDs (Solid State Drives, SSDs), and the like, may be connected via a system bus 848. In some computer systems, the system bus 848 may be accessed in the form of one or more physical plugs to enable expansion by additional CPUs, GPUs, and the like. Peripheral devices may be attached to the system bus 848 of the core directly or via a peripheral bus 849. The architecture of the peripheral bus includes PCI (Peripheral Component Interconnect / Interface, PCI), USB (Universal Serial Bus, USB), and the like. A graphics adapter 850 may be included in the core 840.
[0066] The CPU 841, GPU 842, FPGA 843, and accelerator 844 may execute certain instructions, which may be combined to form the computer code mentioned above. The computer code may be stored in ROM 845 or RAM (Random Access Memory, RAM) 846. Transient data may also be stored in RAM 846, while permanent data may be stored in, for example, an internal mass storage device 847. Fast storage and retrieval of any of the memory devices may be achieved by using a cache memory, which may be closely associated with one or more CPUs 841, GPUs 842, mass storage devices 847, ROM 845, RAM 846, and the like.
[0067] The computer readable medium may have computer code thereon for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or the medium and computer code may be of a type well known and available to those skilled in the art of computer software.
[0068] As an example and not limitation, a computer system 800 having an architecture and in particular a core 840 can provide functionality due to a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software contained in one or more tangible computer-readable media. Such a computer-readable medium can be a medium associated with a user-accessible mass storage device as described above, and certain storage devices of the core 840 having a non-transient nature, for example, a core internal mass storage device 847 or a ROM 845. Software implementing various embodiments of the present disclosure can be stored in such a device and executed by the core 840. Depending on specific needs, the computer-readable medium may include one or more memory devices or chips. The software can enable the core 840 and in particular the processor therein (including a CPU, GPU, FPGA, etc.) to perform a specific process or a specific part of a specific process described herein, including defining a data structure stored in the RAM 846 and modifying such a data structure according to a process defined by the software. Additionally or as an alternative, a computer system may provide functionality as a result of hard-wiring logic or otherwise embodied in circuitry (e.g., accelerator 844), which may replace or operate in conjunction with software to perform a particular process or a particular portion of a particular process described herein. Where appropriate, references to software may include logic, and references to logic may also include software. Where appropriate, references to computer-readable media may include circuits (e.g., integrated circuits (ICs)) storing software for execution, circuits implementing logic for execution, or both. The present disclosure includes any suitable combination of hardware and software.
[0069] Although the present disclosure has described several non-limiting embodiments, there are changes, permutations, and various alternative equivalents that fall within the scope of the present disclosure. It will therefore be appreciated that those skilled in the art will be able to conceive of many systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within the spirit and scope of the present disclosure.
Claims
1. A method for decoding a dynamic grid sequence, the method comprising: receiving an encoded bitstream, the encoded bitstream comprising a dynamic grid sequence in a first frame and a second frame, the second frame occurring later than the first frame; Reconstructing the dynamic mesh in the first frame; determining whether to enable a duplicate vertex removal mode, in which a motion vector of a vertex in the second dynamic mesh is a duplicate of a vertex in the dynamic mesh sequence in the first frame; decoding a motion vector for each vertex in the second frame that is not a duplicate of a vertex in the reconstructed first frame based on determining that the duplicate vertex removal mode is enabled; as well as The dynamic mesh sequence in the second frame is reconstructed using the dynamic mesh in the reconstructed first frame and each decoded motion vector.
2. The method according to claim 1, wherein: Determining whether to enable the duplicate vertex removal mode is based on a statistical calculation performed to determine a percentage of vertices on the reconstructed first frame.
3. The method according to claim 2, wherein: The duplicate vertex removal mode is enabled based on determining that a percentage of duplicate vertices in the first reference frame is greater than or equal to a threshold.
4. The method according to claim 1, wherein: Determining whether to enable the duplicate vertex removal mode is based on determining that a flag in the encoded bitstream indicates that the duplicate vertex removal mode is enabled.
5. The method according to claim 1, further comprising: Based on determining that the duplicate vertex removal mode is not enabled, a motion vector of each vertex in the second frame is decoded regardless of whether a vertex in the second frame is a duplicate of a vertex in the first frame.
6. The method according to claim 1, wherein: Based on determining that the vertex in the second frame has the same coordinates as the vertex in the first frame, the vertex in the second frame is a duplicate of the vertex in the first frame.
7. The method according to claim 1, wherein: The encoded video bitstream includes a flag indicating that a vertex in the second frame is a duplicate of a vertex in the first frame.
8. A method for encoding a dynamic grid sequence, the method comprising: receiving a first frame including the dynamic grid sequence and a second frame including the dynamic grid sequence, the second frame occurring after the first frame; determining a motion vector between each vertex of the dynamic mesh sequence in the first frame and a corresponding vertex of the dynamic mesh sequence in the second frame; Generate an encoded bit stream, the encoded bit stream including: each determined motion vector; an indication of whether a vertex of the dynamic mesh sequence in the second frame is a duplicate of a vertex of the dynamic mesh sequence in the first frame; and an indication of whether a duplicate vertex removal mode is enabled, in which motion vectors of vertices in the dynamic mesh sequence in the second frame that are duplicates of vertices of the dynamic mesh sequence in the first frame are skipped in reconstruction of the second frame.
9. The method according to claim 8, further comprising: Sets a flag indicating whether the duplicate removal mode is enabled.
10. The method according to claim 9, wherein: The flag indicating whether the duplicate removal mode is enabled is set based on a statistical calculation that determines a percentage of vertices of the dynamic mesh sequence in the first frame that are duplicated with vertices of the dynamic mesh sequence in the second frame.
11. The method according to claim 10, wherein: The flag is set to enable the duplicate removal mode based on determining that a percentage of vertices of the dynamic mesh sequence in the first frame that are duplicated with vertices of the dynamic mesh sequence in the second frame is greater than a threshold.
12. The method according to claim 8, wherein: Based on determining that the duplicate vertex removal mode is not enabled, a motion vector of each vertex in the second frame is decoded regardless of whether a vertex in the second frame is a duplicate of a vertex in the first frame.
13. The method according to claim 8, wherein: Based on determining that the vertex in the second frame has the same coordinates as the vertex in the first frame, the vertex in the second frame is a duplicate of the vertex in the first frame.
14. The method according to claim 8, wherein: The encoded bitstream includes a flag indicating whether a vertex of the dynamic mesh sequence in the second frame is a duplicate of a vertex of the dynamic mesh sequence in the first frame.
15. A method for processing a dynamic grid sequence, the method comprising: reconstructing a dynamic grid sequence in a second frame based on an encoded bit stream comprising a first frame and a second frame, the second frame occurring after the first frame, wherein the first frame is reconstructed, wherein the encoded video bitstream includes an indication of whether a duplicate vertex removal mode is enabled, in which the motion vectors of the vertices in the second dynamic mesh are duplicates of the vertices in the dynamic mesh sequence in the first frame, wherein, based on determining that the duplicate vertex removal mode is enabled, a motion vector of each vertex in the second frame that is not a duplicate of a vertex in the reconstructed first frame is decoded, and The reconstructed first frame and each decoded motion vector are used to reconstruct the dynamic grid sequence in the second frame.
16. The method according to claim 15, wherein: Determining whether to enable the duplicate vertex removal mode is based on a statistical calculation performed to determine a percentage of vertices on the reconstructed first frame.
17. The method according to claim 16, wherein: The duplicate vertex removal mode is enabled based on determining that a percentage of duplicate vertices in the first reference frame is greater than or equal to a threshold.
18. The method according to claim 15, wherein: Determining whether to enable the duplicate vertex removal mode is based on determining that a flag in the encoded bitstream indicates that the duplicate vertex removal mode is enabled.
19. The method according to claim 15, wherein: Based on determining that the duplicate vertex removal mode is not enabled, a motion vector of each vertex in the second frame is decoded regardless of whether a vertex in the second frame is a duplicate of a vertex in the first frame.
20. The method according to claim 1, wherein: Based on determining that the vertex in the second frame has the same coordinates as the vertex in the first frame, the vertex in the second frame is a duplicate of the vertex in the first frame.