Method, apparatus, and computer readable medium for mesh compression and decoding

Through the mid-point segmentation scheme and vertex titer calculation, dynamic 3D grid content is compressed and decoded, which solves the problem that the existing technology is difficult to deal with the property map and connectivity information over time, and realizes efficient dynamic grid compression and decoding.

CN119854527APending Publication Date: 2025-04-18TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411440013.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-09-05
Filing Date
2024-10-15
Publication Date
2025-04-18

AI Technical Summary

Technical Problem

The prior art is difficult to efficiently compress and decode dynamic 3D grid content with time-varying attribute maps and connectivity information, especially under real-time constraints.

Method used

The dynamic input grid is segmented using the mid-point segmentation scheme, the valence of the vertices is determined, and a compressed code stream for the dynamic input grid is generated based on these valences.

Benefits of technology

It realizes efficient compression and decoding of dynamic grid content, supports real-time transmission and storage, and is suitable for various application scenarios such as real-time communication, storage, free viewpoint video, AR and VR.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119854527A_ABST
    Figure CN119854527A_ABST
Patent Text Reader

Abstract

A method and apparatus including computer code for mesh encoding, the computer code configured to cause one or more processors to: receive a dynamic input mesh of volumetric data representing at least one three-dimensional (3D) visual content; determining a plurality of first vertices for the mesh at the first tessellation level, where the plurality of first vertices are determined using a midpoint tessellation scheme and a plurality of previous vertices of the mesh at a previous tessellation level, where the mesh at the first level and the mesh at the previous level are generated from the dynamic input mesh; determining that the titer of a first vertex in the plurality of first vertexes is a first value based on whether the vertexes are the selected two vertexes of the grid at the first level; and generating a compressed code stream for the dynamic input grid based on the titer of the first vertex.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims priority to U.S. Provisional Application No. 63 / 544,501 filed on October 17, 2023 and U.S. Provisional Application No. 18 / 825,415 filed on September 5, 2024, the disclosures of which are incorporated herein in their entirety. Technical Field

[0003] Embodiments of the present disclosure are directed to video encoding and decoding. Specifically, embodiments of the present disclosure relate to encoding and decoding multiple sub-meshes, including encoding the valence of mesh vertices in motion vector encoding. Background Art

[0004] Advanced three-dimensional (3D) representations of the world enable more immersive forms of interaction and communication. To achieve realism in 3D representations, 3D models are becoming increasingly complex, and large amounts of data are associated with the creation and consumption of these 3D models. 3D meshes are widely used for 3D modeling of immersive content.

[0005] A 3D mesh may include several polygons describing the surface of a volumetric object. A dynamic mesh sequence may require a large amount of data because it may have a large amount of information that changes over time. Therefore, efficient compression techniques are required to store and transmit such content.

[0006] However, mesh compression standards IC, MESHGRID, FAMC were previously developed to handle dynamic meshes with constant connectivity and time-varying geometry attributes and vertex attributes. However, these standards do not consider time-varying attribute maps and connectivity information.

[0007] Furthermore, it is challenging for volume acquisition techniques to generate dynamic meshes with constant connectivity, especially under real-time constraints. Existing standards do not support this type of dynamic mesh content.

[0008] As another example, glTF (GL Transmission Format) is a standard developed by the Khronos Group for efficient transmission and loading of 3D scenes and models by applications. glTF is designed to minimize the size of 3D assets and minimize the runtime processing required for unpacking. A geometry compression extension to glTF 2.0 using Google's Draco technology is being developed to reduce the size of glTF models and scenes. Summary of the invention

[0009] According to an embodiment, a method for mesh compression is provided. The method can be executed by at least one processor and includes: receiving a dynamic input mesh representing volume data of at least one three-dimensional (3D) visual content; for a mesh at a first subdivision level, determining a plurality of first vertices, wherein the plurality of first vertices are determined using a midpoint subdivision scheme and a plurality of previous vertices of a mesh at a previous subdivision level, wherein the mesh at the first subdivision level and the mesh at the previous subdivision level are generated from the dynamic input mesh; based on whether two selected vertices are boundary vertices of the mesh at the first subdivision level, determining the valence of a first vertex among the plurality of first vertices to be a first value; and generating a compressed code stream for the dynamic input mesh based on the valence of the first vertex.

[0010] According to an embodiment, a device for mesh compression may be provided. The device may include: at least one memory configured to store program code; and at least one processor configured to read the program code and operate according to the instructions of the program code. The program code may include: a first receiving code configured to cause at least one processor to receive a dynamic input mesh representing volume data of at least one three-dimensional (3D) visual content; a first determining code configured to cause at least one processor to determine a plurality of first vertices for a mesh at a first subdivision level, wherein the plurality of first vertices are determined using a midpoint subdivision scheme and a plurality of previous vertices of a mesh at a previous subdivision level, wherein the mesh at the first subdivision level and the mesh at the previous subdivision level are generated from the dynamic input mesh; a second determining code configured to cause at least one processor to determine the valence of a first vertex among the plurality of first vertices as a first value based on whether two selected vertices are boundary vertices of the mesh at the first subdivision level; and a generating code configured to cause at least one processor to generate a compressed code stream for the dynamic input mesh based on the valence of the first vertex.

[0011] According to an embodiment, a non-transitory computer-readable medium may be provided, which stores instructions. The instructions may include one or more instructions, and when the one or more instructions are executed by one or more processors of a device for mesh encoding, the one or more instructions cause the one or more processors to: receive a dynamic input mesh representing volume data of at least one three-dimensional (3D) visual content; for a mesh at a first subdivision level, determine a plurality of first vertices, wherein the plurality of first vertices are determined using a midpoint subdivision scheme and a plurality of previous vertices of a mesh at a previous subdivision level, wherein the mesh at the first subdivision level and the mesh at the previous subdivision level are generated from the dynamic input mesh; based on whether two selected vertices are boundary vertices of the mesh at the first subdivision level, determine the valence of a first vertex among the plurality of first vertices as a first value; and based on the valence of the first vertex, generate a compressed code stream for the dynamic input mesh. BRIEF DESCRIPTION OF THE DRAWINGS

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

[0013] Figure 1 is a schematic illustration of a simplified block diagram of a communication system according to an embodiment of the present disclosure.

[0014] Figure 2 is a schematic illustration of a simplified block diagram of a streaming system according to an embodiment of the present disclosure.

[0015] Figure 3 is a schematic illustration of a simplified block diagram of a video encoder and a video decoder according to an embodiment of the present disclosure.

[0016] Figure 4 is a schematic illustration of a simplified block diagram of pre-processing performed on an input grid according to an embodiment of the present disclosure.

[0017] Figure 5 is a schematic illustration of a midpoint subdivision scheme according to an embodiment of the present disclosure.

[0018] Figure 6 is a schematic illustration of vertices in a mesh according to an embodiment of the present disclosure, wherein the vertices are labeled by the valence of the vertices.

[0019] Figure 7 is a flow chart of a process for mesh compression according to an embodiment of the present disclosure.

[0020] Figure 8 is an exemplary diagram of a computer system suitable for implementing an embodiment. DETAILED DESCRIPTION

[0021] The proposed features discussed below may be used alone or in any order. In addition, the embodiments may be implemented by processing circuits (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.

[0022] Figure 1A simplified block diagram of a communication system 100 according to an embodiment of the present disclosure is shown. The communication system 100 may include at least two terminals 102 and 103, which are interconnected via a network 105. For unidirectional data transmission, a first terminal 103 may encode video data at a local location for transmission to another terminal 102 via the network 105. The second terminal 102 may receive the encoded video data of the other terminal from the network 105, decode the encoded data, and display the recovered video data. Unidirectional data transmission may be common in applications such as media services.

[0023] Figure 1 A second pair of terminals 101 and 104 are shown, which are provided to support bidirectional transmission of encoded video, which may occur, for example, during a video conference. For bidirectional data transmission, each terminal 101 and 104 may encode video data collected at a local location for transmission to another terminal via a network 105. Each terminal 101 and 104 may also receive encoded video data transmitted by another terminal, may decode the encoded data, and may display the recovered video data at a local display device.

[0024] exist Figure 1 In the embodiment, terminal 101, terminal 102, terminal 103 and terminal 104 can be shown as servers, personal computers and smart phones, but the principles of the present disclosure are not limited thereto. Embodiments of the present disclosure find application in laptop computers, tablet computers, media players and / or dedicated video conferencing devices. Network 105 represents any number of networks that transmit encoded video data between terminal 101, terminal 102, terminal 103 and terminal 104, including, for example, wired and / or wireless communication networks. Communication network 105 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 described below, the architecture and topology of network 105 may be irrelevant to the operation of the present disclosure.

[0025] Figure 2 As an example of application of the disclosed subject matter, a video encoder and a video decoder are placed in a streaming environment. The disclosed subject matter is equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, storing compressed video on digital media including CDs, DVDs, memory sticks, etc., and the like.

[0026] The streaming system may include a capture subsystem 203, which may include a video source 201, such as a digital camera that creates, for example, an uncompressed video sample stream 213. The sample stream 213 may be emphasized as a high data volume when compared to an encoded video stream, and may be processed by an encoder 202, which is coupled to the video source 201, which may be, for example, a camera as discussed above. The encoder 202 may include hardware, software, or a combination of hardware and software to implement or implement various aspects of the disclosed subject matter as described in more detail below. The encoded video stream 204, which may be emphasized as a lower data volume when compared to the sample stream, may be stored on a streaming server 205 for future use. One or more streaming clients 212 and 207 may access the streaming server 205 to retrieve a copy 208 and a copy 206 of the encoded video stream 204. Client 212 may include a video decoder 211 that decodes an incoming copy 208 of the encoded video stream and creates an output video sample stream 210 that may be presented on a display 209 or other presentation device (not depicted). In some streaming systems, video stream 204, video stream 206, and video stream 208 may be encoded according to certain video encoding / compression standards. Examples of these standards have been noted above and are also described herein.

[0027] According to an exemplary embodiment further described below, the term "mesh" indicates a composition of one or more 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 (referred to as connectivity information). Optionally, vertex attributes (e.g., color, normal, etc.) may be associated with mesh vertices. Attributes may also be associated with the surface of a mesh by utilizing mapping information that uses a 2D attribute map to parameterize the mesh. Such a mapping may be described by a set of parameter coordinates (referred to as UV coordinates or texture coordinates) associated with mesh vertices. The 2D attribute map is used to store high-resolution attribute information, such as textures, normals, displacements, etc. According to an exemplary embodiment, such information may be used for various purposes, such as texture mapping and shading.

[0028] However, dynamic mesh sequences may require a large amount of data because they may include a large amount of information that changes over time. For example, in contrast to a "static mesh" or "static mesh sequence" (in which the information of the mesh cannot change from one frame to another), a "dynamic mesh" or "dynamic mesh sequence" indicates the following motion: one of the vertices represented by the mesh changes from one frame to another. Therefore, efficient compression techniques are required to store and transmit such content. The mesh compression standards IC, MESHGRID, and FAMC were previously developed by MPEG to handle dynamic meshes with constant connectivity and time-varying geometry attributes and vertex attributes. However, these standards do not take into account attribute maps and connectivity information that change over time. DCC (digital content creation) tools typically generate such dynamic meshes. Accordingly, it is challenging for volume acquisition techniques to generate dynamic meshes with constant connectivity, especially to generate dynamic meshes with constant connectivity under real-time constraints. Existing standards do not support this type of content. According to exemplary embodiments herein, aspects of a new mesh compression standard are described to directly handle dynamic meshes with time-varying connectivity information and optional time-varying property maps, the standard targeting lossy and lossless compression for various applications (e.g., real-time communications, storage, free viewpoint video, AR and VR). Features such as random access and scalable / progressive coding are also considered.

[0029] Figure 3An exemplary framework 300 for dynamic mesh compression, for example, for a method based on 2D atlas sampling is shown. Each frame of the input mesh 301 can be pre-processed by a series of operations (e.g., tracking, re-meshing, parameterization, voxelization). It should be noted that these operations may be used only for the encoder, which means that these operations may not be part of the decoding process. This possibility can be indicated by a flag in the metadata, for example, the flag indicates 0 for encoder only and the flag indicates 1 for other cases. Afterwards, a mesh 302 with a 2D UV atlas can be obtained, where each vertex of the mesh has one or more associated UV coordinates on the 2D atlas. Then, by sampling on the 2D atlas, the mesh can be converted into multiple maps, including geometry maps and attribute maps. These 2D maps can then be encoded by a video / image codec (e.g., HEVC, VVC, AV1, AVS3, etc.). At the decoder 303 side, the mesh can be reconstructed from the decoded 2D map. Any post-processing and filtering can also be applied to the reconstructed mesh 304. It should be noted that for the purpose of 3D mesh reconstruction, other metadata can be signaled to the decoder side. It should be noted that the graph boundary information (including uv coordinates and xyz coordinates) of the boundary vertices can be predicted, quantized and entropy encoded in the bitstream. The quantization step size can be configured at the encoder side to trade off between quality and bitrate.

[0030] In some implementations, a 3D mesh may be partitioned into segments (or patches / graphs), and according to exemplary embodiments, one or more 3D mesh segments may be considered a "3D mesh." Each segment consists of a set of connected vertices, geometry associated therewith, attributes, and connectivity information.

[0031] Dual-degree mesh coding is a specialized technique designed to efficiently encode and decode the connectivity of polygonal meshes. Through the principle of dualization, dual-degree mesh coding is able to encode and decode the connectivity data of a sub-mesh by constructing two independent sequences: one sequence characterizing the valence of vertices and the other describing the facet degree. The valence of a vertex refers to how the vertex is connected and the range of influence in the mesh. The valence of a vertex directly affects the geometry and properties of the mesh. The higher the valence, the greater the number of edges directly connected to the vertex, and the greater the influence of the vertex on the surrounding vertices and faces.

[0032] Figure 4 There is shown trellis encoding pre-processing 400. The trellis encoding process starts with pre-processing.

[0033] The preprocessing converts the input dynamic mesh represented as M(i) into a base mesh m(i) and a set of displacements d(i). The encoder compresses this new representation and generates a compressed code stream b(i).

[0034] like Figure 4 As shown, preprocessing includes mesh extraction, followed by atlas parameterization, and then subdivision surface fitting. Mesh extraction 401 uses simplification techniques to extract the input mesh M(i) and produce an extracted mesh dm(i). At mesh extraction 401, the mesh topology is reduced to a base mesh. The base mesh is encoded using an existing encoding scheme (e.g., draco or other Edgebreaker implementations).

[0035] The extracted mesh dm(i) is then re-parameterized using atlas parameterization 402. Through atlas parameterization 402, the attribute map of the original mesh frame is re-parameterized according to the extracted base mesh. The attribute map is encoded using an existing video coding scheme. The re-parameterization is applied to the input mesh so that a smaller number of facets can be generated. This reduces the discontinuity of the parameterization and can achieve better RD performance. The generated mesh is a parameterized extracted mesh, denoted as pm(i).

[0036] Subdivision surface fitting 403 takes as input the parameterized extracted mesh pm(i) and the input mesh M(i), and produces a base mesh m(i) and a set of displacements d(i). First, pm(i) is subdivided by applying a subdivision scheme (e.g., a midpoint subdivision scheme). The displacement field d(i) is calculated by determining the closest point on the surface of the original mesh M(i) for each vertex of the subdivided mesh.

[0037] Therefore, in the subdivision stage, a predetermined algorithm is used to subdivide the base mesh. Subsequently, the subdivided mesh is fitted to the original input mesh surface, and the corresponding displacement vectors form displacement components, which are further transformed using wavelet transform, and the transform coefficients can be further quantized.

[0038] Figure 5 The application of the midpoint subdivision scheme on the mesh is shown. As previously explained, pm(i) is subdivided by applying the midpoint subdivision scheme, which subdivides each triangle into 4 subtriangles in each subdivision iteration, such as Figure 5 During each midpoint subdivision, the midpoint subdivision level is increased by 1. The displacement field d(i) is calculated by determining the closest point on the surface of the original mesh M(i) for each vertex of the subdivided mesh.

[0039] The encoder may encode a set of displacement vectors associated with the subdivided mesh vertices, referred to as the displacement field d(i). First, the reconstructed quantized base mesh m'(i) may be used to update the displacement field d(i) to generate an updated displacement field d'(i). Then, a wavelet transform may be applied to d'(i), and a set of wavelet coefficients may be generated. The wavelet coefficients may then be quantized and may be compressed using arithmetic coding, a conventional image / video encoder, or some other encoder.

[0040] The valence of a vertex is used in wavelet transform. The valence of a vertex is the number of edges connected to the vertex. Figure 6 An example is given where vertices are labeled by the valence of the vertex.

[0041] The valence of a vertex may be calculated by counting the number of edges connected to the vertex.For meshes subdivided by a midpoint subdivision scheme, an embodiment proposes a faster method to calculate the valence.

[0042] It should be understood that the proposed methods can be used alone or in any order. In addition, each of the method (or embodiment), encoder and decoder can be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute a program stored in a non-transitory computer-readable medium.

[0043] According to embodiments, a plurality of methods and systems for calculating the valence of vertices in a mesh may be proposed. It should be understood that the plurality of methods and systems may be applied individually or in any combination. In addition, it should be understood that the disclosed methods and systems are not limited to mesh compression. The disclosed methods and systems may also be generally applicable to, for example, audio processing, image processing, video processing, or signal processing.

[0044] In a mesh that is subdivided by midpoint subdivision, at the first iteration of subdivision, the input is called a level 0 mesh. Figure 5 In the example, grid 510 may be a level 0 grid; grid 520 may be a level 1 grid; and grid 530 may be a level 2 grid.

[0045] For a level 0 mesh or any mesh at the previous level of the current mesh, the valence of each vertex can be determined by counting the number of edges connected to the vertex. In addition, for each vertex at level 0, it can be classified as a boundary vertex or a non-boundary vertex. If the vertex is the endpoint of an edge located on the boundary of the mesh, the vertex is a boundary vertex; otherwise, the vertex is a non-boundary vertex.

[0046] During the i-th (where i is a positive integer) subdivision iteration, a level i mesh is generated, where additional vertices are generated from level i-1 by adding midpoints at the edges of the level i mesh, and by Figure 5 The midpoint subdivision scheme shown uses mesh 530 and mesh 520 to connect these additional vertices.

[0047] For a vertex v generated at level i of the grid, assuming that vertex v is located at the midpoint of edge (v1, v2), the valence of v can be determined as follows:

[0048] If both v1 and v2 are non-boundary vertices, then the valence of v must be 6. Furthermore, v can be classified as a non-boundary vertex.

[0049] If one of v1 and v2 is a boundary vertex, or both v1 and v2 are boundary vertices, the valence of v can be calculated by counting the number of edges connected to the vertex. In addition, v can be classified as a boundary vertex or a non-boundary vertex by checking whether the edge (v1, v2) is a boundary of the mesh.

[0050] Figure 7 A process 700 is shown for mesh compression based on determining valences of mesh vertices.

[0051] like Figure 7 As shown, at operation 705, a dynamic input mesh of volumetric data representing at least one three-dimensional (3D) visual content may be received. As an example, mesh 510 may be received.

[0052] Operation 710 may include determining, for a mesh at a first subdivision level, a plurality of first vertices, wherein the plurality of first vertices are determined using a midpoint subdivision scheme and a plurality of previous vertices of a mesh at a previous subdivision level. The mesh at the first subdivision level and the mesh at the previous subdivision level are generated from the dynamic input mesh using iterations of the midpoint subdivision scheme. As an example, vertices of mesh 530 may be determined using the midpoint subdivision scheme applied to a plurality of previous vertices of mesh 520, which is a mesh at the previous subdivision level.

[0053] At operation 715 , the valence of a first vertex among the plurality of first vertices may be determined to be a first value based on whether the two selected vertices are boundary vertices of the mesh at the first subdivision level.

[0054] In an embodiment, the first vertex is a midpoint of an edge of the mesh at the previous subdivision level, and the edge of the mesh at the previous subdivision level includes a first edge vertex and a second edge vertex.

[0055] Then, the first edge vertex and the second edge vertex may be selected as the two selected vertices. Then, determining the valence of the first vertex may include: determining whether the two selected vertices are non-boundary vertices; and determining the valence of the first vertex to be a predetermined value based on determining that the two selected vertices are non-boundary vertices. The first vertex may also be determined to be a non-boundary vertex.

[0056] In the same or other embodiments, determining the valence of the first vertex may include: determining at least one of the selected two vertices to be a boundary vertex; and determining the valence of the first vertex to be equal to the number of edges connected to the first vertex based on determining at least one of the selected two vertices to be a boundary vertex. The first vertex may also be determined to be a boundary vertex in response to the first edge vertex and the second edge vertex forming a boundary edge of the mesh at the first subdivision level.

[0057] Then, for each vertex in the mesh at the previous subdivision level, it may be determined whether the corresponding vertex is a boundary vertex or a non-boundary vertex.

[0058] At operation 720 , a compressed code stream for the dynamic input mesh may be generated based on the valence of the first vertex.

[0059] It will be appreciated that process 700 may describe an encoding process, but those skilled in the art will appreciate that similar operations may be performed in a modified order for a decoding process.

[0060] The proposed methods can be used alone or in any order. The proposed methods can be used for any polygonal mesh, but even if there are only triangle meshes, it can still be used to demonstrate various embodiments. As mentioned above, it will be assumed that the input mesh can contain one or more instances, a sub-mesh is a part of the input mesh with one or more instances, and multiple instances can be grouped to form a sub-mesh.

[0061] The above techniques may be implemented as computer software using computer-readable instructions and physically stored in one or more computer-readable media, or the above techniques may be implemented by one or more specially configured hardware processors. Figure 8 A computer system 800 suitable for implementing certain embodiments of the disclosed subject matter is shown.

[0062] Computer software may be encoded using any suitable machine code or computer language, which may be subjected to assembly, compilation, linking or similar mechanisms 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.

[0063] 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, and the like.

[0064] Figure 8The components of the computer system 800 shown are exemplary in nature and are not intended to suggest any limitation on the scope of use or functionality of computer software implementing embodiments of the present disclosure. The configuration of components should also not be interpreted as having any dependency or requirement related to any one or combination of components shown in the exemplary embodiment of the computer system 800.

[0065] Computer system 800 may include certain human interface input devices. Such human interface input devices may be responsive 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, clapping), visual input (e.g., gestures), 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, captured images obtained from a still image camera), and videos (e.g., two-dimensional video, three-dimensional video including stereoscopic video).

[0066] The human interface input device may include one or more of the following (only one of each is shown): keyboard 801 , mouse 802 , touch pad 803 , touch screen 810 , joystick 805 , microphone 806 , scanner 808 , camera 807 .

[0067] The computer system 800 may also include certain human-machine interface output devices. Such human-machine interface output devices may stimulate one or more human user senses through, for example, tactile output, sound, light, and smell / taste. Such human-machine interface output devices may include tactile output devices (e.g., tactile feedback of a touch screen 810, or joystick 805, but may also be a tactile feedback device that is not an input device), 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 are capable of outputting two-dimensional visual outputs or outputs exceeding three dimensions through devices such as stereoscopic image output, virtual reality glasses (not depicted), holographic displays and smoke boxes (not depicted), and printers (not depicted).

[0068] The computer system 800 may also include human-machine accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW 820 with CD / DVD etc. media 811, thumb drive 822, removable hard disk drive or solid state drive 823, traditional magnetic media such as tapes and floppy disks (not depicted), dedicated ROM / ASIC / PLD based devices such as security software dogs (not depicted), etc.

[0069] 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 encompass transmission media, carrier waves, or other transitory signals.

[0070] The computer system 800 may also include an interface 899 to one or more communication networks 898. The network 898 may be, for example, a wireless network, a wired network, an optical network. The network 898 may further be a local network, a wide area network, a metropolitan area network, a vehicle and industrial network, a real-time network, a delay-tolerant network, etc. Examples of the network 898 include a local area network such as Ethernet, a wireless LAN, a cellular network including GSM, 3G, 4G, 5G, LTE, etc., a television wired or wireless wide area digital network including cable television, satellite television, and terrestrial broadcast television, a vehicle and industrial network including CANBus, etc. Some networks 898 typically require an external network interface adapter (e.g., a USB port of the computer system 800) attached to some general data ports or peripheral buses (850 and 851); as described below, other network interfaces are typically integrated into the kernel of the computer system 800 by attaching to the system bus (e.g., connected to an Ethernet interface in a PC computer system or connected to a cellular network interface in a smartphone computer system). The computer system 800 can communicate with other entities using any of these networks 898. Such communications may be one-way receive only (e.g., broadcast television), one-way send only (e.g., CANBus connected to certain CANBus devices), or bidirectional, for example, using a LAN or WAN digital network to connect to other computer systems. As described above, certain protocols and protocol stacks may be used on each of those networks and network interfaces.

[0071] The above-mentioned human interface devices, human-accessible storage devices, and network interfaces may be attached to the kernel 840 of the computer system 800 .

[0072] The core 840 may include one or more central processing units (CPUs) 841, graphics processing units (GPUs) 842, graphics adapters 817, dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) 883, hardware accelerators 844 for certain tasks, and the like. These devices, as well as read-only memory (ROM) 845, random access memory 846, internal mass storage 847 such as internal non-user accessible hard 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 directly to the core's system bus 848 or to the core's system bus 848 via a peripheral bus 849. The architecture of the peripheral bus includes PCI, USB, and the like.

[0073] The CPU 841, GPU 842, FPGA 883, and accelerator 844 may execute certain instructions, which may be combined to form the above-mentioned computer code. The computer code may be stored in ROM 845 or RAM 846. Transitional data may also be stored in RAM 846, while permanent data may be stored, for example, in internal mass storage 847. Fast storage and retrieval to any storage device may be performed by using a cache, which may be closely associated with one or more CPUs 841, GPUs 842, mass storage 847, ROM 845, RAM 846, etc.

[0074] The computer readable medium may have thereon computer codes for performing various computer-implemented operations. The medium and computer codes may be those specially designed and constructed for the purposes of the present disclosure, or the medium and computer codes may be of a type well known and available to those skilled in the art of computer software.

[0075] As an example, and not by way of limitation, a computer system 800 having an architecture, particularly a kernel 840, may provide functionality due to one or more processors (including CPUs, GPUs, FPGAs, accelerators, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be media associated with user-accessible mass storage as described above, as well as certain non-transitory kernel 840 memories, such as kernel internal mass storage 847 or ROM 845. Software implementing various embodiments of the present disclosure may be stored in such devices and executed by the kernel 840. Depending on specific needs, the computer-readable medium may include one or more storage devices or chips. The software may enable the kernel 840, particularly the processors therein (including CPUs, GPUs, FPGAs, etc.) to perform specific processes or specific parts of specific processes described herein, including defining data structures stored in RAM 846 and modifying such data structures according to processes defined by the software. Additionally or alternatively, the computer system may provide functionality due to logic hardwired or otherwise embodied in circuitry (e.g., accelerator 844) that may replace software or operate in conjunction with software to perform specific processes or specific portions of specific processes described herein. Where appropriate, references to portions of software may include logic and vice versa. Where appropriate, references to portions of computer-readable media may include circuits (e.g., integrated circuits (ICs)) storing software for execution, circuits embodying logic for execution, or both. The present disclosure includes any suitable combination of hardware and software.

[0076] Although the present disclosure has described multiple exemplary embodiments, there are modifications, permutations, and various replacement equivalents that fall within the scope of the present disclosure. Therefore, it should be appreciated that those skilled in the art will be able to design many systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and therefore fall within the spirit and scope of the present disclosure.

Claims

1. A method for mesh compression, characterized in that: The method comprises: receiving a dynamic input grid of volumetric data representing at least one three-dimensional 3D visual content; determining, for a mesh at a first subdivision level, a plurality of first vertices, wherein the plurality of first vertices are determined using a midpoint subdivision scheme and a plurality of previous vertices of a mesh at a previous subdivision level, wherein the mesh at the first subdivision level and the mesh at the previous subdivision level are generated from the dynamic input mesh; determining a valence of a first vertex among the plurality of first vertices to be a first value based on whether the two selected vertices are boundary vertices of the mesh at the first subdivision level; and Based on the valence of the first vertex, a compressed code stream for the dynamic input mesh is generated.

2. The method according to claim 1, characterized in that: The first vertex is a midpoint of an edge of the mesh at the previous subdivision level, wherein the edge of the mesh at the previous subdivision level comprises a first edge vertex and a second edge vertex; and Wherein, the method further comprises: The first side vertex and the second side vertex are selected as the selected two vertices.

3. The method according to claim 2, characterized in that Determining the valence of the first vertex includes: determining whether the two selected vertices are non-boundary vertices; and Based on determining that the two selected vertices are non-boundary vertices, the valence of the first vertex is determined to be a predetermined value.

4. The method according to claim 3, characterized in that The method further comprises: The first vertex is determined to be a non-boundary vertex.

5. The method according to claim 2, characterized in that: Determining the valence of the first vertex includes: determining at least one of the two selected vertices to be a boundary vertex; and On the basis of determining that at least one of the two selected vertices is a boundary vertex, determining that the valence value of the first vertex is equal to the number of edges connected to the first vertex.

6. The method according to claim 5, characterized in that The method further comprises: In response to the first edge vertex and the second edge vertex forming a boundary edge of the mesh at the first subdivision level, the first vertex is determined to be a boundary vertex.

7. The method according to claim 1, characterized in that The method further comprises: For each vertex in the mesh at the previous subdivision level, it is determined whether the corresponding vertex is a boundary vertex or a non-boundary vertex.

8. A device for grid compression, characterized in that: The device comprises: a memory configured to store program code; and A processor configured to call the program code stored in the memory to implement the method according to any one of claims 1 to 7.

9. A non-temporary computer-readable medium storing instructions, the instructions comprising one or more instructions which, when executed by one or more processors of a device for grid coding, cause the one or more processors to perform a method according to any one of claims 1 to 7.

10. A method for grid decoding, characterized in that: The method comprises: receiving a compressed code stream for a dynamic input mesh, the compressed code stream comprising valences of a plurality of first vertices; decompressing the compressed code stream to obtain valences of a plurality of first vertices, wherein the plurality of first vertices are determined for a mesh at a first subdivision level, the plurality of first vertices are determined using a midpoint subdivision scheme and a plurality of previous vertices of a mesh at a previous subdivision level, wherein the mesh at the first subdivision level and the mesh at the previous subdivision level are generated from a dynamic input mesh, and the valence of a first vertex among the plurality of first vertices is determined based on whether two selected vertices are boundary vertices of the mesh at the first subdivision level; and Based on the valences of the first vertices, volumetric data of at least one three-dimensional 3D visual content represented by the dynamic input mesh is reconstructed.

11. A device for grid decoding, characterized in that: The device comprises: a memory configured to store program code; and The processor is configured to call the program code stored in the memory to implement the method according to claim 10.