Grid encoding and decoding method and device and grid data generation method

By receiving the displacement between the vertices of the polygon mesh and the reference vertices for encoding and decoding, a bit stream is generated, which solves the problem of low efficiency of basic level mesh data encoding in the existing technology and realizes more efficient mesh data encoding and decoding.

CN120751126APending Publication Date: 2025-10-03TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202510166542.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2025-02-07
Filing Date
2025-02-14
Publication Date
2025-10-03

AI Technical Summary

Technical Problem

The existing technology lacks a solution for efficiently encoding grid data, especially the data of the base-level grid.

Method used

By receiving the displacement between the vertices of the polygon mesh and the reference vertices, encoding and decoding are performed to generate a bit stream to improve the encoding and decoding efficiency.

Benefits of technology

Improved the encoding and decoding efficiency of grid data, especially the data encoding efficiency of base-level grids.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120751126A_ABST
    Figure CN120751126A_ABST
Patent Text Reader

Abstract

The embodiment of the invention provides a grid coding method and device, a grid decoding method and device and a grid data generation method. Mesh encoding includes: receiving a polygonal mesh including a plurality of vertices; determining, for a vertex of the plurality of vertices at a base level of the polygon mesh, one or more displacements between the vertex and one or more reference vertices of the plurality of vertices; encoding the one or more shifts; and generating a bitstream including at least one of the one or more encoded shifts and the one or more reference vertices.
Need to check novelty before this filing date? Find Prior Art

Description

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application claims priority to U.S. Provisional Application No. 63 / 554,415, filed on February 16, 2024, the disclosure of which is incorporated herein by reference in its entirety. Technical Field

[0002] The present application relates to video coding and decoding technology, and in particular to a grid coding method and device, a grid decoding method and device, and a grid data generation method. Background Art

[0003] Video-based dynamic mesh coding (V-DMC) is an existing MPEG standard for compressing dynamic meshes. The current V-DMC reference software compresses meshes based on an extracted base mesh, displacement vectors, and motion fields. Displacements are calculated by searching for the nearest point on the input mesh relative to each vertex of the subdivided base mesh. To encode the displacements, the displacement vectors are converted into wavelet coefficients by a linear lifting scheme, and the coefficients are then quantized and encoded by a video codec or an arithmetic codec. This process also refines the base mesh to minimize displacement. Texture transfer can be performed to match the texture to the re-parameterized geometry and UVs and optimized texture for image compression.

[0004] Currently, the existing technology lacks a solution for efficiently encoding grid data, especially data of base-level grids in grid data. Summary of the Invention

[0005] One aspect of the present disclosure provides a mesh encoding method, the method comprising: receiving a polygonal mesh comprising a plurality of vertices; determining, for a vertex among the plurality of vertices at a base level of the polygonal mesh, one or more displacements between the vertex and one or more reference vertices among the plurality of vertices; encoding the one or more displacements; and generating a bitstream comprising the one or more encoded displacements and at least one of the one or more reference vertices.

[0006] Another aspect of the present disclosure provides a mesh decoding method, the method comprising: receiving a bitstream, the bitstream comprising an encoded polygonal mesh, the encoded polygonal mesh comprising multiple vertices and one or more encoded displacements; determining an encoded displacement from the one or more encoded displacements; decoding the encoded displacement to generate a decoded displacement; and using the decoded displacement and one or more reference vertices from the multiple vertices to decode a vertex from the multiple vertices at a base level of the polygonal mesh.

[0007] Another aspect of the present disclosure provides a method for generating mesh data, the method comprising: generating a bitstream comprising a polygonal mesh, the polygonal mesh comprising a plurality of vertices; wherein, for a vertex among the plurality of vertices at a base level of the polygonal mesh, one or more displacements between the vertex and one or more reference vertices are determined; wherein the one or more displacements are encoded; and wherein the bitstream comprises the one or more encoded displacements and at least one of the one or more reference vertices.

[0008] One aspect of the present disclosure provides a mesh encoding device, comprising: a receiving module for receiving a polygonal mesh comprising a plurality of vertices; a determining module for determining, for a vertex among the plurality of vertices at a base level of the polygonal mesh, one or more displacements between the vertex and one or more reference vertices among the plurality of vertices; encoding the one or more displacements; and generating a bitstream comprising the one or more encoded displacements and at least one of the one or more reference vertices.

[0009] Another aspect of the present disclosure provides a mesh decoding device, the method including: a receiving module for receiving a bit stream, the bit stream including an encoded polygon mesh, the encoded polygon mesh including multiple vertices and one or more encoded displacements; a determination module for determining an encoded displacement from one or more encoded displacements; a first decoding module for decoding the encoded displacement to generate a decoded displacement; and a second decoding module for using the decoded displacement and one or more reference vertices among the multiple vertices to decode a vertex among the multiple vertices at a base level of the polygon mesh.

[0010] Another aspect of the present disclosure provides an electronic device including a memory and a processor, wherein the memory stores computer-readable instructions, and when the computer-readable instructions are executed by the processor, they are used to implement any of the aforementioned methods.

[0011] Another aspect of the present disclosure provides a computer-readable storage medium storing computer-readable instructions, which are used to implement any of the aforementioned methods when executed by a processor.

[0012] Another aspect of the present disclosure provides a method for storing a bitstream, where the bitstream is generated by the aforementioned encoding method or can be decoded by the aforementioned decoding method.

[0013] In summary, the embodiments of the present application provide a solution for encoding and predicting data of a base-level mesh using reference vertices, thereby improving the encoding and decoding efficiency of the mesh data. BRIEF DESCRIPTION OF THE DRAWINGS

[0014] 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:

[0015] Figure 1 is a schematic diagram of a block diagram of a communication system according to an embodiment of the present application.

[0016] Figure 2 is a schematic diagram of a block diagram of a streaming transmission system according to an embodiment of the present application.

[0017] Figure 3 is a schematic diagram of an example grid encoder according to an embodiment of the present application.

[0018] Figure 4 An example vertex position of a zero reference vertex (R0) according to an embodiment of the present application is shown.

[0019] Figure 5 An example vertex position of a reference vertex ( R1 ) according to an embodiment of the present application is shown.

[0020] Figure 6 illustratively shows example vertex positions of two reference vertices (R2) according to an embodiment of the present application.

[0021] Figure 7 Shown are example vertex positions of three reference vertices (R3) according to an embodiment of the present application.

[0022] Figure 8 Shown are example vertex positions of six reference vertices ( R6 ) according to an embodiment of the present application.

[0023] Figure 9 is a flowchart of an example process for determining the displacement of a vertex according to an embodiment of the present application.

[0024] Figure 10 is a schematic diagram of a computer system according to an embodiment of the present application. DETAILED DESCRIPTION

[0025] The following detailed description of example embodiments refers to the accompanying drawings, in which the same reference numbers in different drawings may identify the same or similar elements.

[0026] Foregoing disclosure provides explanation and description, but is not intended to be exhaustive or implementation is limited to disclosed exact form.According to above disclosure, can be modified and variant, or can obtain modification and variant from the practice of implementation.In addition, one or more features or parts of an embodiment can be incorporated into another embodiment or with another embodiment (or one or more features of another embodiment) combination.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.

[0027] 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 is understood that software and hardware can be designed to implement the systems and / or methods based on the description herein.

[0028] Even if 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 can be combined in ways not specifically recited in the claims and / or disclosed in the specification. Although each dependent claim listed below may directly refer to only one claim, the disclosure of possible implementations includes each dependent claim in combination with every other claim in the claim set.

[0029] 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" 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", "include", "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 on". In addition, expressions 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.

[0030] Throughout this specification, references to "one embodiment," "an embodiment," or similar language mean that a particular feature, structure, or characteristic described in connection with the indicated embodiment is included in at least one embodiment of the present solution. Thus, the phrases "in one embodiment," "in an embodiment," and similar language may, but do not necessarily, all refer to the same embodiment throughout this specification.

[0031] 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 may be recognized in certain embodiments that may not be present in all embodiments of the present disclosure.

[0032] Reference Figures 1 to 2 , describes one or more embodiments of the encoding structure and decoding structure of the present disclosure for implementing the present disclosure.

[0033] Figure 1 A simplified block diagram of a communication system 100 according to an embodiment of the present disclosure is shown. System 100 may include at least two terminals 110 and 120 interconnected via a network 150. For unidirectional data transmission, a first terminal 110 may encode video data, which may include mesh data, at a local location for transmission to another terminal 120 via network 150. A second terminal 120 may receive the encoded video data from the other terminal on network 150, decode the encoded data, and display the recovered video data. Unidirectional data transmission may be common in media service applications, etc.

[0034] Figure 1 A 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 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 on a local display device.

[0035] exist Figure 1In the embodiment of the present invention, terminals 110 to 140 can be, for example, servers, personal computers, and smart phones, and / or any other type of terminals. For example, 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 telecommunications networks, local area networks, wide area networks, and / or the Internet. For the purposes of this discussion, unless otherwise specified below, the architecture and topology of network 150 may be irrelevant to the operation of the present disclosure.

[0036] 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, and storing compressed video on digital media including CDs (Compact Discs), DVDs (Digital Versatile Discs), memory sticks, and the like.

[0037] like Figure 2 As shown, the streaming system 200 may include a capture subsystem 213 including 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.

[0038] 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 3D imaging technology (e.g., a digital camera) and a computing device configured to generate the 3D mesh using data received from the 3D sensor or 3D imaging technology. Sample stream 202, which can have a high data volume compared to an encoded video bitstream, can be processed by encoder 203 coupled to video source 201. Encoder 203 can include hardware, software, or a combination thereof to implement or embody various aspects of the disclosed subject matter as described in more detail below. Encoder 203 can also generate an encoded video bitstream 204. Encoded video bitstream 204, which can have a lower data volume when compared to an uncompressed stream 202, can be stored on a streaming server 205 for future use. One or more streaming clients 206 and 207 may access streaming server 205 to retrieve video bitstreams 208 and 209 , respectively, which may be copies of encoded video bitstream 204 .

[0039] Streaming client 207 may include a video decoder 210 and a display 212. Video decoder 210 may, for example, decode an incoming video bitstream 209, which is a copy of an encoded video bitstream 204, and create an outgoing video sample stream 211 that may be presented on display 212 or another presentation device (not depicted). In some streaming systems, video bitstreams 204, 208, and 209 may be encoded according to some video encoding / compression standard.

[0040] Embodiments of the present disclosure relate to methods of encoding displacements in a lossy trellis codec via a lossless trellis codec.

[0041] V-DMC is the current MPEG standard for compressing dynamic meshes. The current VMesh reference software compresses meshes based on an extracted base mesh (via draco encoding), displacement vectors, and motion fields (where applicable). Displacements are calculated by searching the input mesh for the closest point to each vertex of the subdivided base mesh. To encode the displacements, the displacement vectors are converted into wavelet coefficients via a linear lifting scheme, and the coefficients are then quantized and encoded by a video codec or an arithmetic codec. This process also refines the base mesh to minimize the displacements. Texture transfer is performed to match the texture to the reparameterized geometry and UVs, and the texture is optimized for image compression.

[0042] Figure 3 An example trellis encoder 300 is shown. The encoder 300 may perform a V-DMC process for performing decimation and reparameterization before encoding the bitstream. Figure 3 As shown, the input mesh can undergo decimation 302 and UV reparameterization 304. Then geometric reparameterization 306 is performed, which includes base mesh refinement and displacement generation. The output of the base mesh refinement is provided to the Draco encoder / decoder 308 to generate a base mesh binary. The output of the displacement generation is provided to the displacement codec 310 to generate a displacement binary. The output of the displacement codec 310 is provided to the texture transfer 312 and the image encoder 314 to generate a texture binary. The base mesh binary, texture binary, and displacement binary can be included in the bitstream 316. In one or more examples, texture coordinates or UV coordinates (often referred to as UVs) are used to map vertices to positions on the texture through a process known as "UV mapping." The UV defines a 2D position in texture space for each vertex in the mesh.

[0043] In one or more examples, the displacement is the residual vector between the interpolated midpoint and the corresponding location on the surface mesh, such as: Equation (1): d0 = pos - pos0, where pos0 is the approximate position in the surface of the original mesh, and pos is the predicted position, typically a midpoint.

[0044] In one or more examples, the displacement is further processed by lifting the transform. The prediction process can be defined as follows: Equation (2): where (i) v is the vertex introduced in the middle of edge (v1, v2), and (ii) Signal(v), Signal(v1), and Signal(v2) are the values ​​of the geometry / vertex attribute signals at vertices v, v1, and v2, respectively.

[0045] In one or more examples, the update process may be defined as follows: Equation (3): Among them, v * is the set of adjacent vertices of vertex v.

[0046] This scheme allows skipping the update process.The wavelet coefficients can be quantized by using a uniform quantizer with a dead zone.

[0047] In one or more examples, the best prediction mode from the prediction set is signaled. The vertices can be processed per connected component, then in Morton vertex order. Therefore, the hypothesis of the initial encoded vertex may be similar to the initial vertex of the previously encoded connected component.

[0048] Therefore, the prediction set is adaptively selected corresponding to the number of coding references, as depicted in Table 1 for a given grid with the kth current connected component. first (k) represents the index of the first vertex in the k-th connected component. Details are as follows: - For zero reference, there are at most four candidates, where Pred0 is always P(0). - For one reference and two references, there is only one candidate. - For three references and six references, multiple prediction modes for unidirectional and multi-directional prediction are considered and signaled.

[0049] In one or more examples, a set of previously encoded initial vertices are placed into a cache C for future predictions, e.g.: Equation (4): C = [σ first (0), σ first (1), ..., σ first (M-1)], Where M represents the cache size. Table 1

[0050] Figure 4 Example vertex positions are shown for the zero reference vertex (R0). Figure 5 Example vertex positions of one reference vertex (R1) are shown. Figure 6 Example vertex positions of two reference vertices (R2) are shown. Figure 7 Example vertex positions of three reference vertices (R3) are shown. Figure 8 Example vertex positions of six reference vertices ( R6 ) are shown in accordance with an embodiment of the present disclosure.

[0051] After the best prediction mode is selected via the rate estimation process, the predicted value index and the residual between the predicted position and the original position are signaled. In practice, only 8 previously encoded initial vertex positions are stored. For a larger number of references, such as 3 or 6, unidirectional and multidirectional prediction are introduced, where the adaptive selection set of 4 prediction modes is: One-way prediction Mode 0 = {SPred0, SPred4, SPred5, SPred6} Mode 1 = {SPred1, SPred4, SPred5, SPred6} Mode 2 = {SPred2, SPred4, SPred5, SPred6} Mode 3 = {SPred3, SPred4, SPred5, SPred6} Multi-directional prediction Mode 0 = {MPred0, SPred8, SPred9, SPRed10} Mode 1 = {MPred1, SPred8, SPred9, SPred10} Mode 2 = {MPred2, SPred8, SPred9, SPRed10} οMode 3={MPred3,SPred8,SPred9,SPred10} οMode 4={MPred4,SPred8,SPred9,SPred10} Mode 5 = {MPred5, SPred8, SPRed9, SPred10} Mode 6 = {MPred6, SPred8, SPred9, SPred10} Mode 7 = {MPred7, SPred8, SPred9, SPRed10}

[0052] The lifting transformation can effectively reduce the residual information of displacements at higher levels of detail (i.e., greater than 0) through mid-point prediction. At level 0 or the base mesh level, there is no prediction to reduce the redundancy between adjacent displacements.

[0053] The embodiments of the present disclosure may be applied to any detailed information and may be used alone or in any combination.

[0054] According to one or more embodiments, displacements at level of detail 0 are encoded differently than conventional methods. Displacements at level of detail 0 may be predicted and encoded by using neighbor information.

[0055] According to one or more embodiments, a similar prediction architecture is used for position prediction in positional codecs. The encoding order can follow the vertex positioning order, where various predictors are used to predict displacements based on previously encoded data. The predictor candidates can be similar to the predictors used in vertex prediction codecs.

[0056] According to one or more embodiments, different sets of prediction values ​​are proposed to predict displacement under different reference conditions: D(x) represents the displacement at position x, and D(0) represents zero displacement. Table 2

[0057] Indicate the best prediction mode within the bitstream to optimize the coding process based on the context, where unidirectional and multidirectional prediction are as follows: One-way prediction Mode 0 = {SPred0, SPred4, SPred5, SPred6} Mode 1 = {SPred1, SPred4, SPred5, SPred6} Mode 2 = {SPred2, SPred4, SPred5, SPred6} Mode 3 = {SPred3, SPred4, SPred5, SPred6} Multi-directional prediction Mode 0 = {MPred0, MPred7, MPred8, MPred9} Mode 1 = {MPred1, MPred7, MPred8, MPred9} Mode 2 = {MPred2, MPred7, MPred8, MPred9} Mode 3 = {MPred3, MPred7, MPred8, MPred9} Mode 4 = {MPred4, MPred7, MPred8, MPred9} Mode 5 = {MPred5, MPred7, MPred8, MPred9} Mode 6 = {MPred6, MPred7, MPred8, MPred9}

[0058] Figure 9 is a flow chart of an example process 900 for determining the displacement of vertices in a polygonal mesh. The process 900 may be performed by the encoder 203 ( Figure 2 )implement.

[0059] Processing may begin at operation S902 where a polygon mesh including a plurality of vertices is retrieved.

[0060] The process proceeds to operation S904, in which one or more displacements of the vertex are determined. The number of displacements of the vertex may be based on the number of reference vertices, such as R0 ( Figure 4 )、R1( Figure 5 )、R2( Figure 6 )、R3( Figure 7 ) and R6( Figure 8 )Sure.

[0061] The process proceeds to operation S906, in which one or more displacements are encoded. The process proceeds to operation S908, in which a bitstream is generated. When the number of reference vertices is 3 or more (e.g., R3 or R6), the bitstream may include a first indicator indicating a mode to be selected and a second indicator indicating a displacement from the mode to be used. For example, when the number of reference vertices is 3, the first indicator may indicate mode 0, and the second indicator may indicate the use of a second displacement in mode 0 (e.g., SPred4).

[0062] The decoding process may be performed by a decoder 210. The decoder 210 may receive a bitstream including an encoded polygon mesh including a plurality of vertices and one or more encoded displacements. The decoder 210 may determine an encoded displacement from the one or more encoded displacements. The decoder 210 may decode the encoded displacement to generate a decoded displacement. The decoder 210 may use the decoded displacement and one or more reference vertices from the plurality of vertices to decode a vertex from the plurality of vertices at a base level of the polygon mesh. The bitstream may include a first indicator and a second indicator for selecting a mode and a specific displacement in the mode.

[0063] 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 10 A computer system 1000 suitable for implementing certain embodiments of the present disclosure is shown.

[0064] 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 executed directly by a computer central processing unit (CPU), graphics processing unit (GPU), etc., or through interpretation, microcode execution, etc.

[0065] 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, IoT devices, and the like.

[0066] Figure 10 The components shown for computer system 1000 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. Neither should the configuration of components be interpreted as having any dependency or requirement relating to any one or combination of components shown in the non-limiting embodiments of computer system 1000.

[0067] 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 through, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, taps), visual input (e.g., gestures), or olfactory input (not depicted). Human 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 video (e.g., two-dimensional video, three-dimensional video including stereoscopic video).

[0068] Input human interface devices may include one or more of the following (only one of each depicted): keyboard 1001 , mouse 1002 , trackpad 1003 , touch screen 1010 , data glove, joystick 1005 , microphone 1006 , scanner 1007 , camera 1008 .

[0069] The computer system 1000 may also include certain human-computer interface output devices. Such human-computer interface output devices can stimulate one or more human user senses through, for example, tactile output, sound, light, and smell / taste. Such human-computer interface output devices may include tactile output devices (e.g., tactile feedback via a touch screen 1010, a data glove, or a joystick 1005, although tactile feedback devices that do not function as input devices may also exist). For example, such devices may be audio output devices (e.g., speakers 1009, headphones (not depicted)), visual output devices (e.g., screens 1010 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 output or output more than three-dimensional output by means such as stereographic output; virtual reality glasses (not depicted), holographic displays, and smoke boxes (not depicted)), and printers (not depicted).

[0070] The computer system 1000 may also include storage devices and associated media accessible to humans, such as optical media including CD / DVD ROM (Read Only Memory, ROM) / RW 1020 including CD / DVD and other media 1021, a thumb drive 1022, a removable hard disk drive or solid-state drive 1023, 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.

[0071] Those skilled in the art will 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.

[0072] Computer system 1000 may also include interfaces to one or more communication networks. The networks may be wireless, wired, or optical. The networks may also be local, wide, metropolitan, vehicular and industrial, real-time, delay-tolerant, and the like. Examples of networks include: local area networks such as Ethernet; wireless LANs (Local Area Networks); cellular networks including GSM (Global System for Mobile Communications), 3G (the Third Generation), 4G (the Fourth Generation), 5G (the Fifth Generation), and LTE (Long Term Evolution); wired or wireless wide-area digital TV networks including cable TV, satellite TV, and terrestrial broadcast TV; and vehicle and industrial networks including CANBus. Some networks typically require external network interface adapters attached to certain general-purpose data ports or peripheral buses 1049 (such as, for example, a USB port of the computer system 1000); other networks are typically integrated into the core of the computer system 1000 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 smartphone computer system). Using any of these networks, the computer system 1000 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 can include communications to a cloud computing environment 1055. Certain protocols and protocol stacks can be used on each of these networks and network interfaces as described above.

[0073] The above-mentioned human interface devices, human-accessible storage devices, and network interface 1054 may be attached to the core 1040 of the computer system 1000 .

[0074] Core 1040 may include one or more central processing units (CPUs) 1041, graphics processing units (GPUs) 1042, specialized programmable processing units in the form of field programmable gate areas (FPGAs) 1043, hardware accelerators 1044 for certain tasks, and the like. These devices, along with read-only memory (ROM) 1045, random access memory 1046, and internal mass storage devices 1047, such as internal non-user-accessible hard drives or solid state drives (SSDs), may be connected via a system bus 1048. In some computer systems, system bus 1048 may be accessible in the form of one or more physical plugs to enable expansion with additional CPUs, GPUs, and the like. Peripheral devices may be attached to the core's system bus 1048 directly or via a peripheral bus 1049. Peripheral bus architectures include PCI (Peripheral Component Interconnect / Interface) and USB (Universal Serial Bus). A graphics adapter 1050 may be included in core 1040.

[0075] The CPU 1041, GPU 1042, FPGA 1043, and accelerator 1044 can execute certain instructions, which, when combined, can constitute the computer code mentioned above. This computer code can be stored in ROM 1045 or RAM (Random Access Memory, RAM) 1046. Transient data can also be stored in RAM 1046, while permanent data can be stored, for example, in internal mass storage device 1047. Fast storage and retrieval of any of the memory devices can be achieved by using cache memory, which can be closely associated with one or more of the CPU 1041, GPU 1042, mass storage device 1047, ROM 1045, RAM 1046, etc.

[0076] 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 they may be of a type well known and available to those skilled in the computer software arts.

[0077] As an example and not limitation, a computer system 1000 having an architecture and in particular core 1040 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 computer-readable media can be a medium associated with a user-accessible mass storage device as described above, and certain storage devices of the core 1040 with non-transitory properties, for example, a core internal mass storage device 1047 or ROM 1045. Software implementing various embodiments of the present disclosure can be stored in such a device and executed by the core 1040. Depending on specific needs, the computer-readable medium may include one or more memory devices or chips. The software can enable the core 1040 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 RAM 1046 and modifying such a data structure according to a process defined by the software. Additionally or alternatively, the computer system may provide functionality as a result of hard-wiring logic or otherwise embodied in circuitry (e.g., accelerator 1044), 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 circuitry (e.g., an integrated circuit (IC)) storing software for execution, circuitry implementing logic for execution, or both. The present disclosure encompasses any suitable combination of hardware and software.

[0078] 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 devise 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.

[0079] The above disclosure also covers the following embodiments:

[0080] (1) A method performed by at least one processor of an encoder, the method comprising: receiving a polygonal mesh comprising a plurality of vertices; determining, for a vertex in the plurality of vertices at a base level of the polygonal mesh, one or more displacements between the vertex and one or more reference vertices in the plurality of vertices; encoding the one or more displacements; and generating a bitstream comprising the one or more encoded displacements and at least one of the one or more reference vertices.

[0081] (2) A method according to feature (1), wherein the one or more reference vertices include a plurality of reference vertices that are not connected to the vertex, and wherein the one or more displacements include displacements between the vertex and respective reference vertices of the plurality of reference vertices.

[0082] (3) A method according to feature (1), wherein the one or more reference vertices include at least one reference vertex connected to the vertex, and the one or more displacements include a displacement between the vertex and the at least one reference vertex and a zero displacement.

[0083] (4) A method according to feature (1), wherein the one or more reference vertices include a first reference vertex and a second reference vertex, wherein the first reference vertex and the second reference vertex are connected to the vertex, and wherein the one or more displacements include a displacement between the first reference vertex and the vertex, a displacement between the second reference vertex and the vertex, a displacement between an interpolated vertex between the first reference vertex and the second reference vertex and the vertex, and a zero displacement.

[0084] (5) A method according to feature (1), wherein the one or more reference vertices include at least a first reference vertex, a second reference vertex, and a third reference vertex, wherein the first reference vertex, the second reference vertex, and the third reference vertex are connected to the vertex.

[0085] (6) The method of feature (5), wherein the bitstream includes a first indicator indicating one of a plurality of patterns, each pattern including a plurality of displacements of the determined one or more displacements.

[0086] (7) The method of feature (6), wherein the bitstream includes a second indicator indicating a displacement of a plurality of displacements of the one of the plurality of patterns.

[0087] (8) A method according to feature (7), wherein the multiple displacements of each mode include at least: (i) a zero displacement, (ii) a displacement between one of the first reference vertex, the second reference vertex, and the third reference vertex and the vertex, and (iii) a displacement between an interpolated vertex located between the first reference vertex, the second reference vertex, and the third reference vertex and the vertex.

[0088] (9) A method performed by at least one decoder, the method comprising: receiving a bitstream, the bitstream comprising an encoded polygonal mesh, the encoded polygonal mesh comprising a plurality of vertices and one or more encoded displacements; determining an encoded displacement from the one or more encoded displacements; decoding the encoded displacement to generate a decoded displacement; and using the decoded displacement and one or more reference vertices from the plurality of vertices to decode a vertex from the plurality of vertices at a base level of the polygonal mesh.

[0089] (10) A method according to feature (9), wherein the one or more reference vertices include multiple reference vertices that are not connected to the vertex, and wherein the one or more encoded displacements include displacements between the vertex and each of the multiple reference vertices.

[0090] (11) A method according to feature (9), wherein the one or more reference vertices include at least one reference vertex connected to the vertex, and the one or more encoded displacements include a displacement between the vertex and the at least one reference vertex and a zero displacement.

[0091] (12) A method according to feature (9), wherein the one or more reference vertices include a first reference vertex and a second reference vertex, wherein the first reference vertex and the second reference vertex are connected to the vertex, and wherein the one or more encoded displacements include a displacement between the first reference vertex and the vertex, a displacement between the second reference vertex and the vertex, a displacement between an interpolated vertex between the first reference vertex and the second reference vertex and the vertex, and a zero displacement.

[0092] (13) A method according to feature (9), wherein the one or more reference vertices include at least a first reference vertex, a second reference vertex, and a third reference vertex, wherein the first reference vertex, the second reference vertex, and the third reference vertex are connected to the vertex.

[0093] (14) A method according to feature (13), wherein the bitstream includes a first indicator, the first indicator indicating a mode among a plurality of modes, each mode including a plurality of coded displacements among the one or more coded displacements.

[0094] (15) The method of feature (14), wherein the bitstream includes a second indicator indicating a coding displacement of a plurality of coding displacements of the one of the plurality of modes.

[0095] (16) A method according to feature (15), wherein the multiple encoded displacements for each pattern include at least: (i) a zero displacement, (ii) a displacement between one of the first reference vertex, the second reference vertex, and the third reference vertex and the vertex, and (iii) a displacement between an interpolated vertex located between the first reference vertex, the second reference vertex, and the third reference vertex and the vertex.

[0096] (17) A method performed by at least one processor of an encoder, the method comprising: generating a bitstream comprising a polygonal mesh, the polygonal mesh comprising a plurality of vertices; wherein, for a vertex in the plurality of vertices at a base level of the polygonal mesh, one or more displacements between the vertex and one or more reference vertices are determined; wherein the one or more displacements are encoded; and wherein the bitstream comprises the one or more encoded displacements and at least one of the one or more reference vertices.

[0097] (18) A method according to feature (17), wherein the one or more reference vertices include multiple reference vertices that are not connected to the vertex, and wherein the one or more displacements include displacements between the vertex and each of the multiple reference vertices.

[0098] (19) A method according to feature (17), wherein the one or more reference vertices include at least one reference vertex connected to the vertex, and the one or more displacements include a displacement between the vertex and the at least one reference vertex and a zero displacement.

[0099] (20) A method according to feature (17), wherein the one or more reference vertices include a first reference vertex and a second reference vertex, wherein the first reference vertex and the second reference vertex are connected to the vertex, and wherein the one or more displacements include a displacement between the first reference vertex and the vertex, a displacement between the second reference vertex and the vertex, a displacement between an interpolated vertex between the first reference vertex and the second reference vertex and the vertex, and a zero displacement.

Claims

1. A grid coding method, characterized in that: include: receiving a polygonal mesh comprising a plurality of vertices; determining, for a vertex in the plurality of vertices at a base level of the polygonal mesh, one or more displacements between the vertex and one or more reference vertices in the plurality of vertices; encoding the one or more displacements; as well as A bitstream is generated that includes the one or more encoded displacements and at least one of the one or more reference vertices.

2. The method according to claim 1, characterized in that The one or more reference vertices include a plurality of reference vertices that are not connected to the vertex, and the one or more displacements include a displacement between the vertex and respective reference vertices of the plurality of reference vertices.

3. The method according to claim 1, characterized in that The one or more reference vertices include at least one reference vertex connected to the vertex, and the one or more displacements include a displacement between the vertex and the at least one reference vertex and a zero displacement.

4. The method according to claim 1, wherein The one or more reference vertices include a first reference vertex and a second reference vertex, wherein the first reference vertex and the second reference vertex are connected to the vertex, and the one or more displacements include a displacement between the first reference vertex and the vertex, a displacement between the second reference vertex and the vertex, a displacement between an interpolated vertex between the first reference vertex and the second reference vertex and the vertex, and a zero displacement.

5. The method according to claim 1, wherein The one or more reference vertices include at least a first reference vertex, a second reference vertex, and a third reference vertex, wherein the first reference vertex, the second reference vertex, and the third reference vertex are connected to the vertex.

6. The method according to claim 5, characterized in that The bitstream includes a first indicator indicating a mode of a plurality of modes, each mode including a plurality of displacements of the determined one or more displacements.

7. The method according to claim 6, characterized in that The bitstream includes a second indicator indicating a displacement in the plurality of displacements of the pattern in the plurality of patterns.

8. The method according to claim 7, characterized in that The multiple displacements of each mode include at least: (i) zero displacement, (ii) a displacement between one of the first reference vertex, the second reference vertex, and the third reference vertex and the vertex, and (iii) a displacement between an interpolated vertex located between the first reference vertex, the second reference vertex, and the third reference vertex and the vertex.

9. A grid decoding method, characterized in that: include receiving a bitstream, the bitstream comprising an encoded polygon mesh, the encoded polygon mesh comprising a plurality of vertices and one or more encoded displacements; determining a code shift from the one or more code shifts; decoding the encoded displacement to generate a decoded displacement; as well as Vertices in the plurality of vertices at a base level of the polygonal mesh are decoded using the decoded displacement and one or more reference vertices in the plurality of vertices.

10. A method for generating grid data, characterized in that: include: generating a bitstream comprising a polygonal mesh, the polygonal mesh comprising a plurality of vertices; wherein, for a vertex in the plurality of vertices at a base level of the polygonal mesh, one or more displacements between the vertex and one or more reference vertices are determined; wherein the one or more displacements are encoded; and The bitstream includes at least one of the one or more encoded displacements and the one or more reference vertices.

11. A grid coding device, characterized in that: include: A receiving module, configured to receive a polygonal mesh comprising a plurality of vertices; a determining module for determining, for a vertex in the plurality of vertices at a base level of the polygonal mesh, one or more displacements between the vertex and one or more reference vertices in the plurality of vertices; an encoding module for encoding the one or more displacements; as well as A generating module is configured to generate a bitstream comprising the one or more encoded displacements and at least one of the one or more reference vertices.

12. A trellis decoding device, characterized in that: include a receiving module configured to receive a bitstream, the bitstream comprising an encoded polygonal mesh, the encoded polygonal mesh comprising a plurality of vertices and one or more encoded displacements; a determining module for determining a code shift from the one or more code shifts; a first decoding module, configured to decode the encoded displacement to generate a decoded displacement; as well as A second decoding module is configured to decode vertices from among the plurality of vertices at a base level of the polygonal mesh using the decoded displacement and one or more reference vertices from among the plurality of vertices.

13. An electronic device comprising a memory and a processor, characterized in that: The memory stores computer-readable instructions, When the computer-readable instructions are executed by the processor, the computer-readable instructions are used to implement the method according to any one of claims 1 to 10.

14. A computer-readable storage medium storing computer-readable instructions, characterized in that: When the computer-readable instructions are executed by a processor, the computer-readable instructions are used to implement the method according to any one of claims 1 to 10.

15. A method for storing a bit stream, characterized in that: The bit stream is generated according to the encoding method according to any one of claims 1 to 8, or the bit stream is decoded according to the decoding method according to claim 9.