Selection of polygon mesh compression pivot vertices

CN122514957APending Publication Date: 2026-08-04TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202480083884.3
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-10-21
Filing Date
2024-10-24
Publication Date
2026-08-04

AI Technical Summary

Benefits of technology

[0013] In some aspects of this application, a non-volatile computer-readable storage medium is provided, on which instructions are stored, which, when executed by a computer, cause the computer to implement the above-described grid processing method.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122514957A_ABST
    Figure CN122514957A_ABST
Patent Text Reader

Abstract

Various aspects of the present application include methods and apparatus for coding connectivity information of a polygon mesh. A method of decoding connectivity information includes selecting, from a plurality of active vertices of a plurality of vertices, an active vertex as a pivot vertex to be processed according to a priority of each active vertex, the priority of the active vertex being based on one of: (i) a number of processed faces that are adjacent to the active vertex; (ii) a sum of angles of each processed adjacent angle of the active vertex; (iii) a number of unprocessed faces that are adjacent to the active vertex; and (iv) a number of unprocessed face fans that are adjacent to the active vertex; and reconstructing the connectivity information of the polygon mesh using the active vertex as the pivot vertex.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] References merged

[0002] This application claims priority to U.S. Application No. 18 / 922,328, filed October 21, 2024, and U.S. Provisional Application No. 63 / 570,219, filed March 26, 2024, the entire contents of which are incorporated herein by reference. Technical Field

[0003] The embodiments of this application relate to grid processing. Background Technology

[0004] The background description provided herein is intended to present the overall context of this application. The extent of the work of the currently named inventors described in the background section and various aspects of this specification does not imply that it was prior art at the time of filing of this application, nor is it expressly or implied that it was acknowledged as prior art to this application.

[0005] Image / video compression helps transfer image / video files between different devices, storage systems, and networks with minimal quality degradation. In some examples, video codec techniques can compress video based on spatial and temporal redundancy. In one example, a video codec can use a technique called intra-frame prediction, which compresses images based on spatial redundancy. For example, intra-frame prediction can use reference data from the current image being reconstructed to make sample predictions. In another example, a video codec can use a technique called inter-frame prediction, which compresses images based on temporal redundancy. For example, inter-frame prediction can use motion compensation to predict multiple samples in the current image from a previously reconstructed image. Motion compensation is typically indicated by motion vectors (MV).

[0006] Advances in 3D capture, modeling, and rendering have enabled 3D content across a wide range of platforms and devices. For example, a baby's first steps in one area can be captured, which grandparents may see (and in some cases interact with) and enjoy a fully immersive experience with the child in another area. To achieve this realism, models have become increasingly complex, and vast amounts of data are associated with their creation and use. 3D meshes are widely used to represent this immersive content. Summary of the Invention

[0007] This application provides methods and apparatus for mesh processing, such as encoding and decoding connectivity information of polygonal meshes.

[0008] This application includes, in various aspects, a decoding method for decoding connectivity information of a polygonal mesh. The decoding method includes: receiving encoded information of a plurality of vertices in the polygonal mesh; selecting, from a plurality of active vertices among the plurality of vertices, an active vertex as a pivot vertex to be processed according to the priority of each active vertex, the priority of the active vertex being based on one of: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex, the active vertex being adjacent to at least one processed face and at least one unprocessed face, each face fan comprising one or more consecutive faces adjacent to the active vertex; and reconstructing the connectivity information of the polygonal mesh using the active vertex as the pivot vertex.

[0009] This application also provides an apparatus for mesh decoding. The apparatus for mesh decoding includes processing circuitry configured to implement any of the methods described, including a decoding method for mesh processing performed in a decoder.

[0010] On the one hand, a mesh encoding method, such as an encoding method for encoding connectivity information of a polygonal mesh, includes: selecting an active vertex as a pivot vertex to be processed from a plurality of active vertices in a polygonal mesh, based on the priority of each active vertex, wherein the priority of the active vertex is based on one of: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex, wherein the active vertex is adjacent to at least one processed face and at least one unprocessed face, each face fan including one or more consecutive faces adjacent to the active vertex; and using the active vertex as a pivot vertex to encode the connectivity information of the polygonal mesh.

[0011] This application also provides an apparatus for mesh encoding. The apparatus for mesh encoding includes processing circuitry configured to implement any of the methods described, including an encoding method for mesh processing performed in an encoder.

[0012] On one hand, the mesh data processing method includes processing a bitstream of mesh data according to format rules. The method of processing mesh data includes: processing a connectivity bitstream of the connectivity information of the polygonal mesh according to format rules, wherein: the connectivity bitstream includes syntax elements indicating multiple vertices in the polygonal mesh; the format rules specify: from multiple active vertices among the multiple vertices, an active vertex is selected as a pivot vertex to be processed according to the priority of each active vertex, the priority of the active vertex being based on one of the following: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex, the active vertex being adjacent to at least one processed face and at least one unprocessed face, each face fan including one or more consecutive faces adjacent to the active vertex; and reconstructing the connectivity information of the polygonal mesh using the active vertex as the pivot vertex.

[0013] In some aspects of this application, a non-volatile computer-readable storage medium is provided, on which instructions are stored, which, when executed by a computer, cause the computer to implement the above-described grid processing method.

[0014] The technical solutions of this application include various aspects aimed at reducing connectivity information signaling overhead, such as signaling transmission of split information, which includes, for example, the split vertex offset and split position associated with the split vertex when a vertex split occurs. The signaling for the split vertex offset and split position can occupy a large portion of the connectivity bitstream. This application describes various methods for reducing the number of splits, thereby reducing the signaling volume of split information and improving signaling efficiency. For example, the priority of an active vertex among a plurality of active vertices can be determined based on one or more of the following: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex. Subsequently, a pivot vertex can be selected from the plurality of active vertices based on the priority of each active vertex. When the priority is determined based on the above criteria, the convexity of the accessed region can be maintained, thereby reducing the number of splits. When the number of splits decreases, the amount of signaling for split information also decreases, thereby improving the efficiency of connectivity information signaling. Attached Figure Description

[0015] Other features, properties, and various advantages of the disclosed subject matter will become further apparent from the following detailed description and accompanying drawings, wherein:

[0016] Figure 1 This is an exemplary block diagram of a communication system (100) in some examples;

[0017] Figure 2 This is a schematic diagram of an exemplary block diagram of a decoder;

[0018] Figure 3 This is a schematic diagram of an exemplary block diagram of an encoder;

[0019] Figure 4 An example of the encoding process for mesh processing based on a related video codec according to an embodiment of this application is shown;

[0020] Figure 5 An example of a decoding process for mesh processing according to an embodiment of this application is shown;

[0021] Figure 6 An example of the vertex degree of the vertices (611) and the face degree of the faces (612) of a polygonal mesh (600) according to one aspect of this application is shown;

[0022] Figure 7 Examples of the original mesh and dual mesh according to one aspect of this application are shown;

[0023] Figure 8-9 An example of a traversal sequence of the dual-degree algorithm according to one aspect of this application is shown;

[0024] Figure 10 An example of a polygonal sector according to one aspect of this application is shown;

[0025] Figure 11 An example of a topology configuration C0-C8 for compressing triangular sector connectivity according to one aspect of this application is shown;

[0026] Figure 12 An example of a split vertex according to one aspect of this application is shown;

[0027] Figure 13 A method flowchart of the decoding process according to an embodiment of this application is shown;

[0028] Figure 14 A flowchart illustrating the encoding process according to an embodiment of this application is shown;

[0029] Figure 15 This is a schematic diagram of a computer system according to one embodiment. Detailed Implementation

[0030] Figure 1A block diagram of a video processing system (100) is shown in some examples. The video processing system (100) is an application example of the subject matter disclosed in this application, a video encoder and video decoder in a streaming environment. The subject matter disclosed in this application 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.

[0031] The video processing system (100) includes an acquisition subsystem (113) that may include a video source (101). The video source (101) may include one or more images captured by a camera and / or generated by a computer. For example, a digital camera may create an uncompressed video picture stream (102). In one example, the video picture stream (102) includes samples taken by a digital camera. The video picture stream (102) is depicted as a thick line to emphasize the high data volume of the video picture stream compared to encoded video data (104) (or encoded video bitstream). The video picture stream (102) may be processed by an electronic device (120) that includes a video encoder (103) coupled to the video source (101). The video encoder (103) may include hardware, software, or a combination of hardware and software to implement or carry out aspects of the disclosed subject matter as described in more detail below. Compared to the video image stream (102), the encoded video data (104) (or the encoded video bitstream (104)) is depicted as a thin line to emphasize the lower data volume of the encoded video data (104) (or the encoded video bitstream (104)), which can be stored on a streaming server (105) for future use. At least one streaming client subsystem, such as Figure 1 Client subsystems (106) and (108) in the application can access a streaming server (105) to retrieve copies (107) and (109) of encoded video data (104). Client subsystem (106) may include, for example, a video decoder (110) in an electronic device (130). The video decoder (110) decodes the incoming copy (107) of the encoded video data and produces an output video picture stream (411) that can be displayed on a display (112) (e.g., a screen) or another presentation device (not depicted). In some streaming systems, the encoded video data (104), (107), and (109) (e.g., video bitstreams) may be encoded according to certain video coding / compression standards. Examples of such standards include ITU-T H.265. In one example, the video coding standard under development is informally referred to as Versatile Video Coding (VVC), and this application can be used in the context of the VVC standard.

[0032] It should be noted that electronic devices (120) and (130) may include other components (not shown). For example, electronic device (120) may include a video decoder (not shown), and electronic device (130) may also include a video encoder (not shown).

[0033] Figure 2 An exemplary block diagram of a video decoder (210) is shown. The video decoder (210) may be disposed in an electronic device (230). The electronic device (230) may include a receiver (231) (e.g., receiving circuitry). The video decoder (210) may be used in place of... Figure 1 The video decoder (110) in the example.

[0034] The receiver (231) may receive at least one encoded video sequence to be decoded by the video decoder (210); in the same embodiment or another embodiment, one encoded video sequence is received at a time, wherein the decoding of each encoded video sequence is independent of the other encoded video sequences. The encoded video sequences may be received from a channel (201), which may be a hardware / software link to a storage device storing the encoded video data. The receiver (231) may receive the encoded video data as well as other data, such as encoded audio data and / or auxiliary data streams that may be forwarded to their respective user entities (not indicated). The receiver (231) may separate the encoded video sequences from other data. To prevent network jitter, a buffer memory (215) may be coupled between the receiver (231) and the entropy decoder / parser (220) (hereinafter referred to as "parser (220)"). In some applications, the buffer memory (215) is part of the video decoder (210). In other cases, the buffer memory (215) may be located external to the video decoder (210) (not indicated). In other cases, an external buffer (not shown) may be provided for the video decoder (210) to prevent network jitter, for example, and another buffer (215) may be configured internally for, for example, handling broadcast timing. When the receiver (231) receives data from a store / forward device with sufficient bandwidth and controllability or from an isochronous synchronization network, the buffer (215) may not be necessary, or it may be made smaller. Of course, for use on packet networks such as the Internet, a buffer (215) may also be required; this buffer may be relatively large and adaptive in size, and may be at least partially implemented in the operating system or a similar component (not shown) external to the video decoder (210).

[0035] The video decoder (210) may include a parser (220) to reconstruct symbols (221) from the encoded video sequence. These symbols may include information for managing the operation of the video decoder (210) and potential information for controlling display devices (212), such as displays that are not part of the electronic device (230) but may be coupled to it. Figure 2 As shown in the figure. The control information for the display device may be a parameter set segment (not shown) of Supplemental Enhancement Information (SEI message) or Video Usability Information (VUI). The parser (220) may parse / entropy decode the received encoded video sequence. The encoding of the encoded video sequence may be based on video coding techniques or standards and may follow various principles, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (220) may extract a subgroup parameter set from the encoded video sequence for at least one subgroup of pixel subgroups in the video decoder based on at least one parameter corresponding to a group. Subgroups may include Group of Pictures (GOP), pictures, tiles, slices, macroblocks, coding units (CU), blocks, transform units (TU), prediction units (PU), etc. The parser (220) can also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.

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

[0037] Depending on the type of encoded video frames or a subset of encoded video frames (e.g., inter-frame and intra-frame frames, inter-frame and intra-frame blocks) and other factors, the reconstruction of the symbol (221) may involve multiple different units. Which units are involved and how they are involved can be controlled by the subgroup control information parsed from the encoded video sequence by the parser (220). For brevity, the flow of such subgroup control information between the parser (220) and the various units described below is not described.

[0038] In addition to the functional blocks already mentioned, the video decoder (210) can be conceptually subdivided into several functional units as described below. In practical embodiments operating under commercial constraints, many of these units interact closely with each other and can be integrated with one another. However, for the purposes of describing the disclosed subject matter, it is appropriate to conceptually subdivide it into the functional units described below.

[0039] The first unit is the scaler / inverse transform unit (251). The scaler / inverse transform unit (251) receives quantization transform coefficients as symbols (221) and control information from the parser (220), including the transform method used, block size, quantization factor, quantization scaling matrix, etc. The scaler / inverse transform unit (251) can output a block containing sample values, which can be input into the aggregator (255).

[0040] In some cases, the output samples of the scaler / inverse transform unit (251) may belong to intra-coded blocks; that is, blocks that do not use predictive information from previously reconstructed images but can use predictive information from previously reconstructed portions of the current image. Such predictive information may be provided by the intra-picture prediction unit (252). In some cases, the intra-picture prediction unit (252) uses reconstructed information extracted from the current picture buffer (258) to generate surrounding blocks of the same size and shape as the block being reconstructed. For example, the current picture buffer (258) buffers partially reconstructed and / or fully reconstructed current images. In some cases, the aggregator (255) adds the predictive information generated by the intra-picture prediction unit (252) to the output sample information provided by the scaler / inverse transform unit (251) based on each sample.

[0041] In other cases, the output samples of the scaler / inverse transform unit (251) may belong to inter-frame coding and latent motion compensation blocks. In this case, the motion compensation prediction unit (253) may access the reference image memory (257) to extract samples for prediction. After motion compensation of the extracted samples according to the symbols (221), these samples may be added by the aggregator (255) to the output of the scaler / inverse transform unit (251) (in this case referred to as residual value samples or residual value signals) to generate output sample information. The motion compensation prediction unit (253) may obtain the predicted samples from the address in the reference image memory (257) under motion vector control, and the motion vector is available to the motion compensation prediction unit (253) in the form of the symbols (221), which may include, for example, X, Y and reference image components. Motion compensation may also include interpolation of sample values ​​extracted from the reference image memory (257) when using subsample precise motion vectors, motion vector prediction mechanisms, etc.

[0042] The output samples of the aggregator (255) can be employed by various loop filtering techniques in the loop filter unit (256). Video compression techniques may include in-loop filtering techniques controlled by parameters included in the encoded video sequence (also referred to as the encoded video bitstream), and these parameters can be used as symbols (221) from the parser (220) in the loop filter unit (256). However, in other embodiments, the video compression techniques may also respond to metadata obtained during decoding of a previous (in decoding order) portion of the encoded picture or encoded video sequence, and to previously reconstructed and loop-filtered sample values.

[0043] The output of the loop filter unit (256) can be a sample stream, which can be output to a display device (212) and stored in a reference image memory (257) for subsequent inter-frame image prediction.

[0044] Once fully reconstructed, some of the encoded images can be used as reference images for future predictions. For example, once the encoded images corresponding to the current image have been fully reconstructed and the encoded images (by, for example, the parser (220)) are identified as reference images, the current image buffer (258) can become part of the reference image memory (257), and a new current image buffer can be reallocated before the reconstruction of subsequent encoded images begins.

[0045] The video decoder (210) can perform decoding operations according to a predetermined video compression technique, such as that specified in the ITU-T H.265 standard. The encoded video sequence may conform to the syntax specified by the video compression technique or standard in the sense that the encoded video sequence follows the syntax of the video compression technique or standard and the configuration file recorded in the video compression technique or standard. Specifically, the configuration file may select certain tools from all available tools in the video compression technique or standard as the only tools available under said configuration file. For compliance, the complexity of the encoded video sequence is also required to be within the range defined by the hierarchy of the video compression technique or standard. In some cases, the hierarchy limits the maximum image size, maximum frame rate, maximum reconstruction sampling rate (measured in megasamples per second, for example), maximum reference image size, etc. In some cases, the limitations set by the hierarchy can be further limited by the Hypothetical Reference Decoder (HRD) specification and the metadata managed by the HRD buffer, which is represented by signals in the encoded video sequence.

[0046] In one example, the receiver (231) may receive additional (redundant) data along with the encoded video. The additional data may be a portion of the encoded video sequence. The additional data may be used by the video decoder (210) to properly decode the data and / or more accurately reconstruct the original video data. The additional data may take the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant images, positive error correction codes, etc.

[0047] Figure 3 An exemplary block diagram of a video encoder (303) is shown. The video encoder (303) is disposed in an electronic device (320). The electronic device (320) includes a transmitter (340) (e.g., transmission circuitry). The video encoder (303) can be used in place of... Figure 1 The video encoder (103) in the embodiment.

[0048] The video encoder (303) can be obtained from the video source (301) (not Figure 3 In one embodiment, a portion of the electronic device (320) receives video samples, the video source being capable of capturing video images to be encoded by a video encoder (303). In another embodiment, the video source (301) is a portion of the electronic device (320).

[0049] A video source (301) can provide a sequence of source videos in the form of a digital video sample stream, which will be encoded by a video encoder (303). This digital video sample stream can have any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit…), any color space (e.g., BT.301 YCrCb, RGB…), and any suitable sampling structure (e.g., YCrCb 4:2:0, YCrCb 4:4:4). In a media service system, the video source (301) can be a storage device storing previously prepared video. In a video conferencing system, the video source (301) can be a camera that captures local image information as a video sequence. Video data can be provided as multiple individual pictures, which are given motion when viewed sequentially. The pictures themselves can be constructed as spatial pixel arrays, where each pixel can include at least one sample, depending on the sampling structure, color space, etc., used. Those skilled in the art can easily understand the relationship between pixels and samples. The following focuses on describing samples.

[0050] According to an embodiment, the video encoder (303) can encode and compress images of a source video sequence into an encoded video sequence (343) in real time or under any other time constraints required by the application. Implementing an appropriate encoding rate is a function of the controller (350). In some embodiments, the controller (350) controls and is functionally coupled to other functional units described below. For simplicity, coupling is not shown in the figures. Parameters set by the controller (350) may include rate control related parameters (image skipping, quantizer, λ value of rate-distortion optimization techniques, etc.), image size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (350) may be used with other suitable functions related to the video encoder (303) optimized for a particular system design.

[0051] In some embodiments, the video encoder (303) operates within an encoding loop. As a simplified description, in one example, the encoding loop may include a source encoder (330) (e.g., responsible for creating symbols, such as a symbol stream, based on the input image to be encoded and a reference image) and a (local) decoder (333) embedded within the video encoder (303). The decoder (333) reconstructs the symbols to create sample data in a manner similar to how the (remote) decoder creates sample data (because in the video compression techniques considered in this application, any compression between the symbols and the encoded video bitstream is lossless). The reconstructed sample stream (sample data) is input to a reference image memory (334). Since decoding of the symbol stream produces bit-accurate results regardless of the decoder's location (local or remote), the contents of the reference image memory (334) also correspond bit-accurately between the local encoder and the remote encoder. In other words, the reference image samples "seen" by the encoder's prediction section are exactly the same sample values ​​that the decoder will "see" when using the prediction during decoding. This fundamental principle of reference image synchronization (and the drift that occurs when synchronization cannot be maintained, for example, due to channel error values) is also used in some related technologies.

[0052] The operation of the “local” decoder (333) can be combined with, for example, the above-mentioned... Figure 5 The video decoder (210) is described in detail as the same as the "remote" decoder. However, a further brief reference is provided. Figure 5 When symbols are available and the entropy encoder (345) and parser (220) are able to encode / decode the symbols into an encoded video sequence without loss, the entropy decoding portion of the video decoder (210), including the buffer (215) and parser (220), may not be fully implemented in the local decoder (333).

[0053] In one embodiment, any decoder technique other than parsing / entropy decoding present in the decoder exists in the corresponding encoder in the same or substantially the same functional form. For this reason, this application focuses on decoder operation. The description of encoder techniques can be simplified because encoder techniques are the inverse of the fully described decoder techniques. More detailed descriptions are only required in certain areas, and are provided below.

[0054] During operation, in some embodiments, the source encoder (330) may perform motion-compensated predictive coding. The motion-compensated predictive coding predictively encodes the input image with reference to at least one previously encoded image from the video sequence designated as a "reference image." In this manner, the encoding engine (332) encodes the differences between pixel blocks of the input image and pixel blocks of the reference image, which may be selected as a predictive reference for the input image.

[0055] The local video decoder (333) can decode encoded video data that can be designated as a reference picture, based on symbols created by the source encoder (330). The operation of the encoding engine (332) can be a lossy process. When the encoded video data can be decoded by the video decoder (333), Figure 3 When the source video sequence (not shown) is decoded, the reconstructed video sequence can typically be a copy of the source video sequence with some error values. The local video decoder (333) replicates the decoding process, which can be performed by the video decoder on the reference image, and allows the reconstructed reference image to be stored in a reference image cache (334). In this way, the video encoder (303) can locally store a copy of the reconstructed reference image that shares common content (no transmission error values) with the reconstructed reference image to be obtained by the remote video decoder.

[0056] The predictor (335) can perform a prediction search against the encoding engine (332). That is, for a new image to be encoded, the predictor (335) can search in the reference image memory (334) for sample data (as candidate reference pixel blocks) or certain metadata, such as reference image motion vectors, block shapes, etc., that can serve as appropriate prediction references for the new image. The predictor (335) can perform the operation on a sample block-by-pixel basis to find suitable prediction references. In some cases, based on the search results obtained by the predictor (335), it can be determined that the input image may have prediction references obtained from multiple reference images stored in the reference image memory (334).

[0057] The controller (350) can manage the encoding operations of the source encoder (330), including, for example, setting parameters and subgroup parameters for encoding video data.

[0058] The outputs of all the above-mentioned functional units can be entropy encoded in the entropy encoder (345). The entropy encoder (345) performs lossless compression on the symbols generated by the various functional units according to techniques such as Huffman coding, variable length coding, arithmetic coding, etc., thereby converting the symbols into an encoded video sequence.

[0059] The transmitter (340) can buffer the encoded video sequence created by the entropy encoder (345) in preparation for transmission via a communication channel (660), which may be a hardware / software link to a storage device that will store the encoded video data. The transmitter (340) can combine the encoded video data from the video encoder (303) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (source not shown).

[0060] The controller (350) manages the operation of the video encoder (303). During encoding, the controller (350) can assign a specific encoded image type to each encoded image, but this may affect the encoding techniques applicable to the corresponding images. For example, images can typically be assigned to any of the following image types:

[0061] An intra-frame picture (I-picture) is a picture that can be encoded and decoded without using any other pictures in the sequence as a prediction source. Some video codecs allow different types of intra-frame pictures, including, for example, Independent Decoder Refresh (IDR) pictures. Those skilled in the art are familiar with variations of I-pictures and their corresponding applications and characteristics.

[0062] A predictive image (P-image) can be an image that can be encoded and decoded using intra-frame prediction or inter-frame prediction, which uses at most one motion vector and reference index to predict sample values ​​for each block.

[0063] A bidirectional predictive image (B-image) can be an image that can be encoded and decoded using intra-frame prediction or inter-frame prediction, which uses at most two motion vectors and a reference index to predict sample values ​​for each block. Similarly, multiple predictive images can use more than two reference images and associated metadata to reconstruct a single block.

[0064] Source images are typically spatially subdivided into multiple sample blocks (e.g., 4×4, 8×8, 4×8, or 16×16 sample blocks) and encoded block-wise. These blocks can be predictively encoded with reference to other (already encoded) blocks, which are determined based on the encoding assignment of the corresponding images applied to the blocks. For example, blocks of an I-image can be non-predictively encoded, or the blocks can be predictively encoded (spatial or intra-frame prediction) with reference to already encoded blocks of the same image. Pixel blocks of a P-image can be predictively encoded with reference to a previously encoded reference image via spatial or temporal prediction. Blocks of a B-image can be predictively encoded with reference to one or two previously encoded reference images via spatial or temporal prediction.

[0065] The video encoder (303) can perform encoding operations according to a predetermined video coding technique or standard, such as ITU-T H.265 Recommendation. In operation, the video encoder (303) can perform various compression operations, including predictive coding operations utilizing temporal and spatial redundancy in the input video sequence. Therefore, the encoded video data can conform to the syntax specified by the video coding technique or standard used.

[0066] In one example, the transmitter (340) may transmit additional data while transmitting encoded video. The source encoder (330) may include such data as part of the encoded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, redundant images and slices, other forms of redundant data, SEI messages, VUI parameter set segments, etc.

[0067] The captured video can be presented as multiple source images (video images) in a time-series format. Intra-frame image prediction (often simplified to intra-frame prediction) utilizes spatial correlations within a given image, while inter-frame image prediction utilizes (temporal or other) correlations between images. In one example, a specific image being encoded / decoded is segmented into blocks; this specific image being encoded / decoded is called the current image. When a block in the current image resembles a reference block in a previously encoded and still buffered reference image in the video, the block in the current image can be encoded using a vector called a motion vector. This motion vector points to the reference block in the reference image, and when using multiple reference images, the motion vector may have a third dimension that identifies the reference image.

[0068] In some embodiments, bidirectional prediction techniques can be used in inter-frame image prediction. According to bidirectional prediction, two reference images are used, such as a first reference image and a second reference image, both preceding the current image in the video in decoding order (but possibly past and future in display order). A block in the current image can be encoded using a first motion vector pointing to a first reference block in the first reference image and a second motion vector pointing to a second reference block in the second reference image. Specifically, the block can be predicted using a combination of the first and second reference blocks.

[0069] In addition, merging mode technology can be used in inter-frame image prediction to improve encoding and decoding efficiency.

[0070] According to some embodiments disclosed in this application, predictions such as inter-frame image prediction and intra-frame image prediction are performed on a block-by-block basis. For example, according to the HEVC standard, images in a video image sequence are segmented into coding tree units (CTUs) for compression. The CTUs in the images have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. Generally, a CTU includes three coding tree blocks (CTBs): one luma CTB and two chroma CTBs. Furthermore, each CTU can be split into at least one coding unit (CU) using a quadtree. For example, a 64×64 pixel CTU can be split into one 64×64 pixel CU, or four 32×32 pixel CUs, or sixteen 16×16 pixel CUs. In one example, each CU is analyzed to determine the prediction type used for the CU, such as inter-frame prediction or intra-frame prediction. Furthermore, depending on temporal and / or spatial predictability, the CU is split into at least one prediction unit (PU). Typically, each PU includes a luma prediction block (PB) and two chroma PBs. In one example, prediction operations in encoding (encoding / decoding) are performed on a block-by-block basis. Taking a luma prediction block as an example, a prediction block consists of a matrix of pixel values ​​(e.g., luma values), such as 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, etc.

[0071] It should be noted that any suitable technology can be used to implement the video encoder (103), (303) and the video decoder (110), (210). In one example, at least one integrated circuit can be used to implement the video encoder (103), (303) and the video decoder (110), (210). In another embodiment, at least one processor that executes software instructions can be used to implement the video encoder (103), (303) and the video decoder (110), (210).

[0072] This application includes aspects related to methods and apparatus for selecting pivot vertices for polygon mesh compression.

[0073] A mesh can include multiple polygons (such as multiple polygon faces) that can describe the surface of a volumetric object. For example, a mesh can be used to approximate the surface of a volumetric object. Each polygon of the mesh can be defined by the vertices of the corresponding polygon in three-dimensional (3D) space and information about how the vertices are connected (which can be called connectivity information). In some aspects, vertex attributes (such as color, normals, displacement, etc.) can be associated with vertices (also called mesh vertices). Attributes (also called vertex attributes) can also be associated with the surface of the mesh by utilizing mapping information of the mesh parameterized with a two-dimensional (2D) attribute graph. This mapping can be described by a set of parametric coordinates called UV coordinates or texture coordinates associated with the mesh vertices. 2D attribute graphs can be used to store high-resolution attribute information, such as textures, normals, displacements, etc. High-resolution attribute information can be used for various purposes, such as texture mapping, shading, and mesh reconstruction.

[0074] Figure 4 An example of an encoding process (400) for mesh processing based on a relevant video codec according to one aspect of this application is shown. Figure 4As shown, the encoding process (400) may include a preprocessing step (400A) and an encoding step (400B). The preprocessing step (400A) may be configured to generate a base grid m(i) of the current frame and a displacement field d(i) of the current frame, including displacement vectors, based on the input grid M(i) of the current frame. The encoding step (400B) may be configured to encode the base grid m(i), the displacement field d(i), and the texture information of the base grid m(i). The displacement field d(i) of the current frame may include displacement vectors. Index i may refer to the current frame. In one aspect, a mode decision method may be performed in the encoding process (400) to determine whether to apply inter-frame coding (also known as inter-frame prediction or inter-frame mode), intra-frame coding (also known as intra-frame prediction or intra-frame mode), etc., to the current frame. For example, the mode decision method may compare the cost of the intra-frame mode and the cost of the inter-frame mode, and determine the encoding mode of the base grid m(i) of the current frame based on which of the costs is smaller. In some examples, skip mode is used to encode or decode the underlying grid m(i). In these examples, skip mode is a special mode of inter-frame mode. For example, the underlying grid m(i) can be intra-frame coded, inter-frame coded, or coded using skip mode.

[0075] Still referencing Figure 4 The preprocessing step (400A) may include a mesh extraction process (402), a parameterization process such as a map parameterization process (404), and a subdivision surface fitting process (406). The mesh extraction process (402) is configured to downsample the vertices of the input mesh M(i) to generate an extracted mesh dm(i), which may include multiple extracted (or downsampled) vertices. The number of multiple extracted vertices is less than the number of vertices in the input mesh M(i). The parameterization process, such as the map parameterization process (404), is configured to map the extracted mesh dm(i) onto a planar domain, such as a UV map (or UV graph), to generate a reparameterized mesh pm(i). In the example, map parameterization may be performed based on a video processing tool such as the UVAtlas tool. The subdivision surface fitting process (406) is configured to take the reparameterized mesh pm(i) and the input mesh M(i) as inputs and produce a base mesh m(i) and a displacement field d(i) including displacement vectors or sets of displacements. In the example of the subdivision surface fitting process (406), pm(i) is subdivided to obtain a subdivided mesh by using a subdivision scheme such as iterative interpolation. Iterative interpolation involves inserting a new point at the midpoint of each edge of the reparameterized mesh pm(i) at each iteration. Any suitable subdivision scheme can be applied to subdivide pm(i). The displacement field d(i) is computed by determining the nearest point on the surface of the input mesh M(i) for each vertex of the subdivided mesh.

[0076] The advantages of subdivided meshes include their subdivision structure, which allows for efficient compression, while providing a faithful approximation of the input mesh. Compression efficiency is achieved due to the following properties: the extracted mesh dm(i) can have a small number of vertices and can be encoded and transmitted using fewer bits than the input mesh M(i) or the subdivided mesh. (Reference) Figure 4 The base mesh m(i) can be generated from the extracted mesh dm(i). In the example, the base mesh m(i) is the extracted mesh dm(i). Since the subdivided mesh can be generated based on the subdivision method, the decoder can automatically generate the subdivided mesh when decoding the base mesh or the extracted mesh (e.g., without needing any information other than the subdivision scheme and subdivision iteration count). On the decoder side, the displacement field d(i) can be generated by decoding the displacement vectors associated with the vertices of the subdivided mesh. In addition to allowing spatial / mass scalability, the subdivision structure also allows for efficient transformations, such as wavelet decomposition, which can provide high compression performance.

[0077] The encoding steps (400B) may include base mesh encoding (408), displacement encoding (410), texture encoding (412), etc. Base mesh encoding (408) is configured to encode the base mesh associated with the current frame. The geometric information is encoded. In intra-frame coding, the base mesh... It can first be quantized (e.g., using uniform quantization), and then encoded, for example, using a coding mode determined by a mode decision method. The coding mode can be inter-frame mode, intra-frame mode, skip mode, etc. The encoder used for intra-frame coding of the basic grid m(i) can be called a static grid encoder. In inter-frame coding, the grid is determined by the index... The reference base grid associated with the indicated reference frame (e.g., the reconstructed quantized reference base grid) ) can be used for prediction and indexing The base grid associated with the current frame indicated The displacement encoding (410) is configured to encode the displacement field generated in the preprocessing step (400A). Encode the displacement field. This may include a set of displacement vectors (or displacements) associated with the vertices of the subdivided mesh. Texture encoding (412) is configured to encode attribute information of the underlying mesh m(i). Attribute information may include texture, normals, color, etc. The attribute information may be encoded based on a suitable codec, such as High Efficiency Video Coding (HEVC) or Universal Video Coding (VVC).

[0078] In one respect, reference Figure 4Mesh encoding processes, such as encoding process (400), begin with preprocessing (e.g., preprocessing step (400A)). Preprocessing can transform the input mesh M(i) into a base mesh m(i) and a displacement field including a set of displacements (or a set of displacement vectors). The encoding step (400B) can compress the output from the preprocessing (e.g., m(i), d(i), etc.) and generate a compressed bitstream b(i). The compressed bitstream b(i) can include a compressed base grid bitstream, a compressed displacement field bitstream (also known as a compressed displacement bitstream), a compressed attribute bitstream, etc.

[0079] Figure 5 An example of a decoding process (500) for mesh processing according to one aspect of this application is shown. The decoding process (500) may include a decoding step (505) and a post-processing step (510). A compressed bitstream b(i) may be fed to the decoding step (505). In the example, for lossless transmission, the compressed bitstream b(i) is the output b(i) from the encoding process (400). The decoding step (505) may extract various sub-bitstreams, such as a compressed base mesh sub-stream, a compressed displacement field sub-stream, a compressed attribute sub-stream, etc. The decoding step (505) may decompress the sub-bitstreams to generate the following components: tile metadata indicated by metadata(i), the decoded base mesh, etc. Decoded displacement field (including displacement) Decoded attribute graph wait.

[0080] In one aspect, the base grid substream can be fed into the grid decoder to generate the reconstructed quantized base grid. This can be achieved by applying inverse quantization. To obtain the decoded base mesh The displacement field substream, including the encoded packed and quantized wavelet coefficients, can be decoded by a video and / or image decoder. Image unpacking and inverse quantization can be applied to the packed and quantized wavelet coefficients, which are then reconstructed to obtain unpacked and dequantized transform coefficients (e.g., wavelet coefficients). Inverse wavelet transform can be applied to the unpacked and dequantized wavelet coefficients to generate the decoded displacement field. .

[0081] Decoded components (e.g., including metadata(i)) , , The mesh (also known as the decoded mesh) M''(i) can be fed to the post-processing step (510). The mesh (also known as the decoded mesh) M''(i) can be generated by the post-processing step (510) based on... and Generation. In the example, this can be achieved by using a subdivision scheme. Subdivision and reconstruction of displacement The vertices of the subdivided mesh are used to obtain the reconstructed deformable mesh. In the examples, when the encoding process (400), decoding process (500), and transmission are lossless, the mesh M''(i) can be the same as the input mesh M(i). When one of the encoding process (400), decoding process (500), and transmission is lossy, M''(i) is different from M(i). In various examples, the difference (if any) between M''(i) and M(i) is relatively small. In the examples, the attribute graph A''(i) is also generated by the post-processing step (510).

[0082] A polygon mesh (or polygonal mesh) can include topological quantities (such as vertices, edges, and faces) and geometric quantities (such as attributes including vertex positions, face colors, etc.). The connectivity information of a polygon mesh can describe the relationships between elements and can be implicitly derived from the topology. For example, when an edge is associated with two vertices, those two vertices are adjacent. Similarly, when an edge is associated with two faces, those two faces are adjacent.

[0083] Figure 6 An example of the vertex degree of a vertex (611) and the face degree of a face (612) in a polygonal mesh (600) according to one aspect of this application is shown. The polygonal mesh (600) may include a plurality of faces containing faces (612). The polygonal mesh (600) may include a plurality of vertices containing vertices (611). In one aspect, the vertex degree of a vertex may be interchangeably referred to as the vertex valence. The vertex degree of a vertex may specify the number of edges associated with that vertex. Reference Figure 6 The vertex degree of vertex (611) can specify the number of edges (641) to (644) connected to vertex (611), and the vertex degree of vertex (611) is 4. The face degree can specify the number of edges connected to the face. (See reference) Figure 6 The face degree of face (612) can specify the number of associated edges (631) to (635) of face (612), and the face degree of face (612) is 5. A ring of a vertex can refer to a list, such as an ordered list of all adjacent faces of that vertex. See also Figure 6 The ring of vertex (611) can refer to an ordered list of all adjacent faces (621)-(624) of vertex (611).

[0084] There are several methods that can be used to encode the connectivity of polygonal meshes. In some examples, the connectivity of polygonal meshes can be encoded using duality-based methods (also known as duality-based polygonal mesh compression or duality methods) and polygonal fan-based methods (also known as polygonal fan-based polygonal mesh compression or polygonal fan methods), for example, by encoding the connectivity around each pivot vertex as the polygonal mesh is traversed.

[0085] In one aspect, the duality-based approach can efficiently encode the connectivity of polygonal meshes with arbitrary face or vertex degrees. This method leverages the duality between the primal and dual meshes, encoding connectivity by generating two sequence of symbols—a sequence of vertex degrees and a sequence of face degrees. Figure 7 Examples of a primary mesh (701) and a dual mesh (702) according to one aspect of this application are shown. The dual mesh (702) can be constructed through a dualization process (703), for example, by placing a node within each primary face of the primary mesh (701) and connecting these nodes through each edge of the two adjacent primary faces in the primary mesh (701). In one aspect, a primary face with a face degree of N1 in the primary mesh (701) corresponds to a vertex with a vertex degree of N1 in the dual mesh (702), which is a node located inside the primary face. Reference Figure 7 In the original mesh (701), the original face (711) with a face degree of 3 corresponds to the vertex (721) with a vertex degree of 3 in the dual mesh (702). (See reference) Figure 7 The original face (712) with a face degree of 5 in the original mesh (701) corresponds to the vertex (722) with a vertex degree of 5 in the dual mesh (702).

[0086] Dual-degree-based methods can encode the two symbol sequences separately. In one example, the method uses a sequence of vertex degrees and a sequence of face degrees. In some examples, the encoding performance of dual-degree-based methods depends heavily on the regularity of the mesh. Mesh regularity can be represented (e.g., measured) by the variance of vertex degrees and / or face degrees of a polygonal mesh. In one respect, the smaller the variance of vertex degrees, the more regular the polygonal mesh, and the higher the efficiency of connectivity encoding. Similarly, the smaller the variance of face degrees, the more regular the mesh, and the higher the encoding efficiency. In some related techniques, dual-degree-based methods are close to optimal under worst-case mesh conditions, where the entropy of the two symbol sequences can reach the Tutte entropy bound of a planar graph, i.e., 2 bits per side.

[0087] In one aspect, data structures for vertices and faces can be explicitly maintained. For vertices, the data structure can store the vertex degree (VD) and references to all adjacent faces in a certain order (e.g., counter-clockwise). For faces, it stores the face degree (FD) and references to all adjacent vertices in a certain order (e.g., counter-clockwise). Vertices and faces go through a series of states, such as empty, active pose, and completed state. In one example, at any given time, at most one face is in an active pose, while multiple vertices can be in active poses. Multiple active vertices can be maintained in an active vertex queue. When a face is processed, for example, from an empty state (e.g., the face has not yet been processed), to an active pose (e.g., the face is being processed), and then to a completed state (e.g., the face has been processed), all vertices on that face that are not yet in an active pose are activated and inserted into the active vertex queue. Therefore, each active vertex has at least one completed adjacent face. When a vertex has no adjacent faces processed, it is not an active vertex and is in an empty state, i.e., unvisited. When all of a vertex's adjacent faces have been processed (e.g., all have been processed), the vertex's state becomes complete (e.g., the vertex has been processed) and it can be removed from the active vertex queue.

[0088] In some examples, the active vertex queue is an active vertex priority queue, where the highest priority active index is traversed before other active indices in the queue. For example, the highest priority active index is set as the current vertex (such as a pivot vertex), processed, and then removed from the active vertex queue. In one example, the active vertex queue represents the boundary between the traversed and unvisited portions of a polygon mesh.

[0089] Figure 8-9 An example of a duality algorithm traversal sequence (800) according to one aspect of this application is shown. In one example, the traversal sequence (800) may begin with the seed face (801) of a polygon mesh (850). At the beginning (e.g., in step (870)), the face degree (FD) of the seed face (e.g., FD6 as shown in the figure, indicating a face degree of 6) and the vertex degrees of all vertices of the seed face (801) may be output. Figure 8 In the example shown, the seed face (801) has 6 vertices V1–V6, and the vertex degree (VD) of each vertex is 4 (represented as VD4).

[0090] In step (871), the first vertex (e.g., V1) of the seed face (801) can be activated, and the next face is traversed in counterclockwise order (802), thereby outputting a face degree and two vertex degrees, such as FD4, VD4 and VD4.

[0091] The traversal continues until all faces and vertices in the polygon mesh (850) have been visited.

[0092] In one example, the seed face (801) is selected, and all its adjacent faces are recursively traversed until all faces in the corresponding connected component have been visited. (See reference) Figure 8-9 In steps (872)–(881), a portion of the adjacent faces of the seed face (801) are traversed. Then, a new seed face is selected for the next connected component, and the traversal sequence (800) can continue. Each time the encoder traverses the next element of the polygon mesh (850), it outputs a symbol that uniquely identifies the new state. The decoder can reconstruct the polygon mesh (850) from this symbol stream. In one example, two sets of symbols can be used to encode vertex degrees and face degrees respectively. At any given time, both the encoder and decoder know which type of symbol (face or vertex) is being processed.

[0093] In one aspect, mesh traversal (such as the traversal sequence (800)) can be initiated by selecting a seed face (801). The encoder first outputs the face degree of the seed face (801), and then outputs the vertex degrees of all its adjacent vertices V1–V6 in counterclockwise order, for example, outputting FD6-VD4-VD4-VD4-VD4-VD4-VD4 in step (870). These vertices (such as the six vertices V1–V6) are added to the active vertex queue. The decoder receives the seed face degree (such as FD6) and creates the corresponding face, then fills the slots of all adjacent vertices of that face, transitioning these vertices from an empty state to an active state, for example, by adding them to the decoder's active vertex queue. Thus, the encoder and decoder can maintain state consistency.

[0094] Traversal (such as traversal sequence (800)) can continue by removing the highest-priority active vertex from the active vertex queue and setting it as the current vertex. The algorithm continues around the active vertex (e.g., counterclockwise), skipping all completed faces. In one example, for an active vertex, at least one adjacent face has been completed, and at least one adjacent face is still empty; otherwise, the vertex should not be in the active vertex queue.

[0095] When the encoder detects an empty face (e.g., an empty slot in the adjacent face data structure associated with the current vertex), the encoder may proceed as follows: (i) activate the face, making it the "current" face, and output the face degree of the current face; (ii) add the current face to the appropriate slot in the adjacent face data structure associated with the current vertex and all other active vertices adjacent to the face; (iii) activate the remaining empty vertices in the current face and output their respective vertex degrees in a certain order (e.g., counterclockwise); (iv) the current face is processed and removed from the processing.

[0096] In one respect, reference Figure 8-9 The active vertex and the subsequently selected active face can be regarded as a continuous pivot, which can be called the pivot vertex and the current face, respectively.

[0097] The decoder can employ a symmetrical processing procedure to ensure that it performs the same traversal as the encoder. When the decoder finds the first empty face slot in the currently active vertex, it can process it as follows: (i) read the face degree and create the face, changing the face from an "empty" state to an "active" state, and call it the "current" face; (ii) add the current face to the appropriate slots of the active vertex and all other active vertices adjacent to it; (iii) read the vertex degree of the remaining empty vertices adjacent to the current face and activate these empty vertices by inserting them into the active vertex queue; (iv) move the current face to the completed state.

[0098] In one example, vertices completed during the current face traversal are removed from the active vertex queue. These vertices no longer belong to the boundaries of the traversed region. Once the previous processing is complete, the algorithm continues processing the next face of the currently active vertex until that active vertex is completed. Subsequently, a new active vertex is removed from the queue, and this process is repeated until the active vertex queue is empty. If there are still unprocessed connected components, a new seed face is selected on it, and traversal of another connected component begins.

[0099] In one respect, the vertices of a polygon can be traversed by the encoder in a deterministic order, which can be reproduced at the decoder. In one example, at each step, the faces adjacent to the current vertex can be decomposed into a set of polygonal sectors sharing that current vertex as a pivot, such as... Figure 10 As shown. Figure 10 An example of a polygonal fan (1000) according to one aspect of this application is shown. The polygonal fan (1000) comprises three adjacent faces (1011)–(1012) sharing a pivot (or pivot vertex) (1001). In one aspect, all faces within the polygonal fan are adjacent to the pivot vertex, and the polygonal fan consists of continuous faces. Two continuous faces may share an edge.

[0100] In one example, the connectivity and geometry information of the polygonal sector are encoded in an interleaved manner. For each polygonal sector, its connectivity information is encoded separately.

[0101] Various vertex traversal methods can be used. These methods can include valence-based traversal, geometry-based traversal, and so on. Both valence-based and geometry-based traversal methods maintain a list of active vertices, corresponding to the vertices that need to be visited and compressed next. The vertices in the list can be stored in a priority queue, such as the active vertex priority queue described in this application, and visited according to priority (e.g., the highest priority vertex is visited first). Valence-based and geometry-based traversal can define two different priority metrics. In one example, valence-based traversal uses connectivity information to measure the priority of an active vertex by counting the number of encoded polygons (e.g., triangles) adjacent to it. Geometry-based traversal can utilize both connectivity and geometry information to measure priority by calculating the "conquered valence," for example, defined as the sum of the angles (e.g., rhombus angles) of the encoded polygons (e.g., triangles) adjacent to the active vertex.

[0102] In some examples, polygonal fans are triangulated, and the number of triangles per face is compressed using context-adaptive binary arithmetic. In one example, the connectivity of the resulting triangular fans is utilized... Figure 11 The nine topology configurations C0–C8 shown are compressed. Figure 11 Examples of topological configurations C0–C8 for compressing triangular sector connectivity according to one aspect of this application are shown. Reference Figure 11 Each polygonal sector in each topology configuration contains one or more shaded faces. For example, a polygonal sector of C0 contains three shaded faces F1–F3, a polygonal sector of C1 contains two shaded faces F2–F3, and a polygonal sector of C4 contains one shaded face.

[0103] In one aspect, the polygonal fan method can be used to encode (e.g., encode and / or decode) the connectivity of polygonal meshes. To encode (e.g., encode and / or decode) connectivity at pivot vertices, the polygonal fan method determines several polygonal fans. For each polygonal fan, an entropy coding method can be used to encode the number of faces in that polygonal fan and the face degree of each face. In some examples, polygonal fans can be triangulated into triangular fans, whose connectivity is utilized... Figure 11 The multiple topology configurations shown are encoded (e.g., encoded and / or decoded).

[0104] The genus of a connected orientable surface is an integer representing the maximum number of cuts along disjoint simple closed curves without breaking the resulting manifold. The genus of a connected orientable surface is equal to the number of "handles" on that surface. In one example, the genus represents the number of "holes" an object has. For example, a sphere has a genus of 0, and a torus has a genus of 1.

[0105] In some examples, when the decoder creates a current face, those vertices obtainable from adjacent faces (e.g., all vertices) are already in an active pose. In some examples, the current face is adjacent to an active vertex, but this adjacency cannot be derived from existing information; this situation is called a "split," and the active vertex is called a "split vertex." In some examples, the split vertex is a visited active index that is adjacent to the current face, but this adjacency cannot be inferred from visited vertices and / or faces. In some examples, such as in duality-based or polygonal mesh compression algorithms, splits may occur, leading to the encounter of split vertices.

[0106] Figure 12 An example of a split vertex (1202) according to one aspect of this application is shown. A polygonal mesh (1200) is being encoded (e.g., encoded or decoded). The polygonal mesh (1200) contains multiple faces. These faces include a first set of visited or processed faces (marked in gray) and a second set of unvisited or unprocessed faces (marked in white). In one aspect, for a visited or processed face, face degree information indicating the face degree of that face has been encoded (e.g., encoded or decoded), and vertex degree information indicating the vertex degree of each adjacent vertex of that face has also been encoded. For a processed face, face information indicating that face is added to the face data structure associated with each of its adjacent vertices. A processed face may also be referred to as a “completed face”, and its status is “completed”. For example, the first set of processed faces includes faces (1215)–(1223), and the second set of unvisited faces includes faces (1211)–(1214).

[0107] refer to Figure 12 Vertex (1201) is the pivot vertex adjacent to the current face (1211) while the previous face (1211) is being processed. Vertex (1202) adjacent to the current face (1211) is a split vertex because it is impossible to associate the split vertex (1202) with the current face (1211) based on the relationship between the current face (1211) and visited faces and / or vertices.

[0108] In one respect, splitting can occur when encoding non-zero genus models (e.g., polygonal meshes with a genus greater than 0). In some examples, split vertices are unavoidable, such as when encoding non-zero genus polygonal meshes using a duality-based algorithm, because the traversed regions are homeomorphic to disks in the absence of a splitting operation in the duality algorithm. In some examples, splitting can even occur in zero-genus models, such as when encoding zero-genus polygonal meshes.

[0109] When the encoder detects a split (e.g., the encoder is about to activate a vertex that is already in an active pose), the encoder designates that vertex as a split vertex. In some examples, the split index is an active index among multiple active vertices. In one example, multiple active vertices are contained in an active vertex queue (e.g., an active vertex priority queue), and the split vertex can be identified by sending the offset of the split vertex (also called the split vertex offset or split offset), indicating, for example, which active vertex in the active vertex priority queue is the split vertex. In one example, the split vertex offset is represented by a split vertex index (also called the split index), which indicates which active vertex in the active vertex priority queue is the split vertex.

[0110] The data structure associated with the split vertex (1202) can indicate the faces adjacent to that split vertex (1202). This data structure can also indicate the vertex degree of the split vertex (1202), for example... Figure 12 The data structure is displayed as 4, and includes references to its adjacent faces (e.g., face (1223) and face (1211) – (1213)) in a certain order (e.g., counterclockwise). This data structure can indicate that face (1223) is adjacent to the split vertex (1202). In one example, when the active vertex (1202) adjacent to the current face (1211) is determined to be a split vertex, the position of the current face (1211) in the data structure associated with the split vertex (1202) can be indicated. In some examples, a second syntax element can be encoded and sent to indicate the position of the current face (1211) in the data structure associated with the split vertex (1202). In one example, this position can represent the spatial relationship between the current face (1211) and other faces adjacent to the split vertex (1202).

[0111] In one example, references to the adjacent faces (1223) and (1211)–(1213) of the split vertex (1202) are arranged in counter-clockwise order. The position of face (1223) in the data structure associated with the split vertex (1202) (also known as the split position) is the first position, while the position of the current face (1211) is the second position, for example, indicating that in counter-clockwise order, face (1211) immediately follows face (1223). In this case, for the split vertex (1202), the split position of face (1223) is 1, and the split position of face (1211) is 2.

[0112] Duality-based and polygonal fan-based methods can efficiently compress the connectivity of polygonal meshes. In various examples, information used for signaling split vertex offsets and / or the split positions of each split vertex constitutes a large portion of the connectivity bitstream; therefore, a significant amount of bitstream is used to transmit split offset and position information. In some examples, to reduce the number of splits, visited regions are kept as convex as possible, and pivot vertex selection criteria are designed to maintain the convexity of these regions.

[0113] According to one aspect of this application, certain methods can be applied to select pivot vertices for polygon mesh compression. These pivot vertex selection methods can be used individually or in any combination.

[0114] In one aspect, a polygonal mesh may include multiple vertices and multiple faces. When encoding (e.g., encoding or decoding) the connectivity information of the polygonal mesh, these vertices may include multiple active vertices. In some examples, the active index with the highest priority among the multiple active vertices is traversed before other active indices. Therefore, the traversal order of multiple active vertices depends on how the priority of the active vertices is calculated. Accordingly, certain methods for determining the priority of active vertices can be employed to reduce the number of splits or the number of split vertices, thereby improving the efficiency of connectivity encoding.

[0115] As mentioned above, in one aspect, the active vertex queue contains multiple active vertices. In some examples, this active vertex queue is an active vertex priority queue, where the highest priority active index is traversed before other indices in the queue. For example, the highest priority active vertex is selected as the current vertex to be processed (e.g., a pivot vertex), processed, and then removed from the active vertex queue.

[0116] As mentioned above, various vertex traversal methods can define different priority metrics. According to one aspect of this application, an active vertex can be selected as the pivot vertex to be processed from multiple vertices of a polygon mesh based on its priority. For example, the pivot vertex can be selected from an active vertex queue (e.g., an active vertex priority queue) containing multiple active vertices based on its priority. Alternatively, the pivot vertex can be selected from multiple active vertices based on the priority of each active vertex.

[0117] The criteria used to determine the priority of each active vertex should, as far as possible, maintain the convexity of the visited region. The priority of an active vertex can be based on any of the following factors: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles (also known as corner angles) of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex. In one aspect, the priority of an active vertex can be determined by combining the above four factors (i), (ii), (iii), and (iv).

[0118] An active vertex should be adjacent to at least one processed face and one unprocessed face. Each face fan may include one face adjacent to the active vertex, or consist of multiple consecutive adjacent faces. In one aspect, the selected active vertex can be used as a pivot vertex to encode (e.g., reconstruct or encode) the connectivity information of the polygon mesh.

[0119] refer to Figure 12In one example, the active vertices of the polygon mesh (1200) include vertex (1203) and other vertices. The active vertex (1203) is adjacent to faces (1211), (1212), (1217), (1216), and (1215). Faces (1211) and (1212) are unprocessed faces, and faces (1217), (1216), and (1215) are processed faces. Therefore, for the active vertex (1203), it has 3 adjacent processed faces and 2 unprocessed faces. The first face fan includes the unprocessed faces (1211) and (1212); the second face fan includes the processed faces (1217), (1216), and (1215). The active vertex (1203) has 1 adjacent unprocessed face fan. The adjacent angles of the active vertex (1203) correspond to faces (1211), (1212), (1217), (1216), and (1215), respectively. The adjacent angles of faces (1211) and (1212) are unprocessed angles with angles θ1 and θ2, respectively; the adjacent angles of faces (1217), (1216), and (1215) are processed angles with angles θ3, θ4, and θ5, respectively. The sum of the angles of each processed adjacent angle of the active vertex (1203) is (θ3 + θ4 + θ5). The active vertex (1203) is adjacent to at least one processed face (including (1215)–(1217)) and at least one unprocessed face (including (1211) and (1212)).

[0120] In one aspect, the priority of an active vertex can be based on the number of processed faces adjacent to that active vertex. In one example, the priority of an active vertex increases with the number of processed faces adjacent to it. For example, for an active vertex (e.g., (1203)), if the vertex is a visited vertex but all of its adjacent faces have not yet been processed, the number of its processed adjacent faces (e.g., processed adjacent faces (1217), (1216), and (1215)) can be used as the priority of the active index in order to select it as a pivot vertex (e.g., the next pivot vertex). This criterion of determining the priority of an active index based on the number of processed adjacent faces can be applied to various polygon mesh compression methods, such as duality-based methods, polygon fan-based methods, etc.

[0121] In one aspect, the priority of an active vertex can be based on the sum of the angles of each of its processed adjacent angles. In one example, the priority of an active vertex increases as the sum of these angles increases. For example, for an active vertex (e.g., (1203)), the sum of the angles of all its processed adjacent angles can be calculated, and this sum can be used as the priority of that vertex. To speed up angle calculations, diamond angles (e.g., θ1 to θ5) can be used to approximate adjacent angles. In one example, if the degree of an active vertex (i.e., the number of its adjacent faces) is known, its adjacent angles can be efficiently approximated by dividing the degree of that vertex by a constant. Using diamond angles is one approximation method for representing adjacent angles. For example, when using diamond angles, angles between 0° and 360° can be represented by one of 64 different values, or angles between 0° and 180° can be represented by one of 32 different values. Any method that can represent angles can also be used when calculating adjacent angles.

[0122] In one respect, the priority of an active vertex can be based on the sum of the angles of its processed adjacent angles minus a constant (or a fixed value). For example, the angle-based priority described above can be adjusted by subtracting a constant. Specifically, for an active vertex, whenever one of its adjacent angles is visited and its angle is calculated, that angle can be added to the priority (i.e., the sum of angles), and then the constant can be subtracted from the priority. For example, the priority of the active vertex (1203) can be expressed as (θ3 + θ4 + θ5 – C), where C is a constant.

[0123] Angle-based priority can be applied to various polygon mesh compression methods, such as duality-based methods and polygon fan-based methods.

[0124] In one respect, the priority of an active vertex can be based on the number of its adjacent unprocessed faces. For example, the priority of an active vertex can decrease as the number of its unprocessed adjacent faces increases. In one example, for an active vertex, if the number of its unprocessed adjacent faces is known to be N1, then a negative number of that number (e.g., -N1) can be used as the priority of the active vertex, or the number can be subtracted from a constant to obtain the priority. This priority determined based on the number of unprocessed faces can be applied to various polygon mesh compression methods, such as duality-based methods.

[0125] In one aspect, the priority of an active vertex can be based on the number of its adjacent unprocessed face fans. For example, the priority of an active vertex can decrease as the number of its unprocessed adjacent face fans increases. In one example, for an active vertex, if the number of its unprocessed adjacent face fans is known, the priority of the active vertex can be a negative of that number, or the number can be subtracted from a constant to obtain the priority. This priority determined based on the number of unprocessed face fans is applicable to various polygon mesh compression methods, such as duality-based methods.

[0126] In one example, the priority of an active vertex can be based on the number of its adjacent processed face fans. For instance, the priority of an active vertex can increase as the number of its processed adjacent face fans increases.

[0127] [ Figure 13 A flowchart according to one aspect of this application outlines a process (1300). This process (1300) can be executed in an apparatus. The apparatus may include a mesh decoder, such as a video decoder. The video decoder is configured to decode connectivity information of a mesh (e.g., a polygonal mesh). In various aspects, the process (1300) is executed by processing circuitry, such as processing circuitry that performs functions of a video decoder (110), a video decoder (210), a mesh decoder, and / or similar functions. In some aspects, the process (1300) is implemented via software instructions, and thus the process (1300) is executed when the processing circuitry executes these software instructions. The process begins at (S1301) and proceeds to (S1310).

[0128] In (S1310), process (1300) includes receiving encoded information of multiple vertices in a polygonal mesh.

[0129] In (S1320), process (1300) includes selecting an active vertex as a pivot vertex to be processed from a plurality of active vertices, based on the priority of each active vertex. The priority of the active vertex may be based on one of the following: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex. The active vertex is adjacent to at least one processed face and at least one unprocessed face. Each face fan includes one or more consecutive faces adjacent to the active vertex.

[0130] In (S1330), the process (1300) includes reconstructing the connectivity information of the polygon mesh using the selected active vertices as pivot vertices.

[0131] The process then proceeds to (S1399) and terminates.

[0132] The process (1300) can be adapted as appropriate. Steps may be modified and / or omitted, or additional steps may be added. Any suitable execution order may be used.

[0133] In one aspect, reconstructing the connectivity information of a polygon mesh involves using a dual-degree-based polygon mesh compression method to reconstruct the connectivity information, which utilizes vertex degree sequences and face degree sequences. In one example, the priority of an active vertex is based on the number of its adjacent processed faces. In another example, the priority is based on the sum of the angles of each processed adjacent angle of the active vertex. In yet another example, the priority is based on the sum of those angles minus a constant. In one example, the priority is based on the number of its adjacent unprocessed faces. In yet another example, the priority is based on the number of its adjacent unprocessed face fans.

[0134] In one aspect, reconstructing the connectivity information of a polygonal mesh involves using a polygonal fan-based polygonal mesh compression method that reconstructs the connectivity information using a sequence of face degrees. In one example, the priority of an active vertex is based on the number of its adjacent processed faces. In another example, the priority is based on the sum of the angles of each processed adjacent angle of that active vertex. In yet another example, the priority is based on that sum of angles minus a constant.

[0135] Figure 14 A flowchart according to one aspect of this application outlines a process (1400). This process (1400) can be performed in an apparatus. The apparatus may include a mesh encoder, such as a video encoder. The video encoder is configured to encode connectivity information of a mesh (e.g., a polygonal mesh). In various aspects, the process (1400) is performed by processing circuitry, such as processing circuitry performing functions of a video encoder (103), a video encoder (303), a mesh encoder, and / or similar functions. In some aspects, the process (1400) is implemented via software instructions, and thus the process (1400) is executed when the processing circuitry executes these software instructions. The process begins at (S1401) and proceeds to (S1410).

[0136] In (S1410), process (1400) includes selecting an active vertex as a pivot vertex to be processed from a plurality of active vertices in a polygonal mesh, based on the priority of each active vertex. The priority of the active vertex may be based on one of the following: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex. The active vertex is adjacent to at least one processed face and at least one unprocessed face. Each face fan includes one or more consecutive faces adjacent to the active vertex.

[0137] In (S1420), the process (1400) includes encoding the connectivity information of the polygon mesh using the selected active vertex as the pivot vertex.

[0138] The process then proceeds to (S1499) and terminates.

[0139] The process (1400) can be adapted as appropriate. Steps may be modified and / or omitted, or additional steps may be added. Any suitable execution order may be used.

[0140] In one aspect, encoding connectivity information of a polygonal mesh includes: encoding connectivity information using a dual-degree-based polygonal mesh compression method that utilizes vertex degree sequences and face degree sequences. In one example, the priority of an active vertex is based on the number of its adjacent processed faces. In another example, the priority is based on the sum of the angles of each of the active vertex's processed adjacent angles. In yet another example, the priority is based on the number of its adjacent unprocessed faces. In yet another example, the priority is based on the number of its adjacent unprocessed face fans.

[0141] In one aspect, encoding connectivity information for polygonal meshes includes encoding the connectivity information using a polygonal fan-based polygonal mesh compression method that utilizes a sequence of face degrees. In one example, the priority of active vertices is based on the number of their adjacent processed faces or the sum of the angles of each processed adjacent angle.

[0142] In one aspect, a method for processing polygon mesh connectivity information includes processing a connectivity bitstream of the polygon mesh connectivity information according to format rules. For example, the bitstream is a bitstream decoded / encoded using any decoding and / or encoding method described herein. The format rules may specify one or more constraints on the bitstream, and / or one or more processing steps to be performed by the decoder and / or encoder.

[0143] In one aspect, a method for processing mesh data includes processing connectivity information of a polygonal mesh, and the bitstream contains a connectivity bitstream, including the connectivity information of the polygonal mesh. The connectivity bitstream may include syntax elements indicating multiple vertices in the polygonal mesh. A format rule specifies that, from multiple active vertices among the multiple vertices, an active vertex is selected as a pivot vertex to be processed, based on the priority of each active vertex. This priority may be based on one of the following: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex. The active vertex is adjacent to at least one processed face and at least one unprocessed face. Each face fan includes one or more consecutive faces adjacent to the active vertex. The format rule also specifies that, using the selected active vertex as the pivot vertex, the connectivity information of the polygonal mesh is reconstructed.

[0144] The methods, aspects, and examples in this application can be used individually or in any combination in any order. For example, certain aspects and / or examples executed by the decoder can also be executed by the encoder, and vice versa. Each method (or aspect), encoder, and decoder can be implemented by processing circuitry (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored in a non-transitory computer-readable medium.

[0145] The above-described technology can be implemented as computer software using computer-readable instructions and physically stored in at least one computer-readable storage medium. For example, Figure 15 A computer system (1500) is shown, which is adapted to implement certain embodiments of the disclosed subject matter.

[0146] The computer software can be encoded using any suitable machine code or computer language, and code including instructions can be created through mechanisms such as assembly, compilation, and linking. These instructions can be executed directly by at least one computer central processing unit (CPU), graphics processing unit (GPU), or through decoding, microcode, or other means.

[0147] The instructions can be executed on various types of computers or their components, including, for example, personal computers, tablets, servers, smartphones, gaming devices, Internet of Things devices, etc.

[0148] Figure 15The components shown for the computer system (1500) are exemplary in nature and are not intended to limit the scope or functionality of the computer software used to implement the embodiments of this application. Nor should the configuration of the components be construed as having any dependency or requirement on any component or combination thereof shown in the exemplary embodiments of the computer system (1500).

[0149] The computer system (1500) may include certain human-machine interface input devices. Such human-machine interface input devices may respond to input from at least one human user through tactile input (e.g., keyboard input, swiping, data glove movement), audio input (e.g., sound, applause), visual input (e.g., gestures), and olfactory input (not shown). The human-machine interface device may also be used to capture certain media, which need not be directly related to conscious human input, such as audio (e.g., speech, music, ambient sound), images (e.g., scanned images, photographic images obtained from still cameras), and video (e.g., two-dimensional video, three-dimensional video including stereoscopic video).

[0150] Human-machine interface input devices may include at least one of the following (only one is shown): keyboard (1501), mouse (1502), touchpad (1503), touch screen (1510), data glove (not shown), joystick (1505), microphone (1506), scanner (1507), and camera (1508).

[0151] The computer system (1500) may also include certain human-machine interface output devices. Such human-machine interface output devices may stimulate the senses of at least one human user 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 via a touchscreen (1510), data gloves (not shown), or joystick (1505), but may also include tactile feedback devices that are not used as input devices), audio output devices (e.g., speakers (1509), headphones (not shown)), visual output devices (e.g., screens (1510) including cathode ray tube screens, liquid crystal screens, plasma screens, organic light-emitting diode screens, each of which may or may not have touchscreen input functionality, each of which may or may not have tactile feedback functionality—some of which may output two-dimensional or more three-dimensional visual outputs by means such as stereoscopic image output; virtual reality glasses (not shown), holographic displays, and smoke boxes (not shown)), and printers (not shown).

[0152] The computer system (1500) may also include human-accessible storage devices and their associated media, such as optical media including high-density read-only / rewritable optical discs (CD / DVD ROM / RW) (1520) or similar media (1521) with CD / DVD, thumb drives (1522), removable hard disk drives or solid-state drives (1523), conventional magnetic media such as magnetic tapes and floppy disks (not shown), dedicated devices based on ROM / ASIC / PLD such as security software protectors (not shown), and so on.

[0153] Those skilled in the art should also understand that the term "computer-readable storage medium" as used in connection with the disclosed subject matter does not include transmission media, carrier waves, or other transient signals.

[0154] The computer system (1500) may also include an interface (1554) to at least one communication network (1555). For example, the network may be wireless, wired, or optical. The network may also be a local area network (LAN), wide area network (WAN), metropolitan area network (MAN), vehicular and industrial network, real-time network, latency-tolerant network, etc. Networks also include Ethernet, wireless LANs, cellular networks (GSM, 3G, 4G, 5G, LTE, etc.), cable or wireless wide area digital networks (including cable television, satellite television, and terrestrial broadcast television), vehicular and industrial networks (including CANBus), etc. Some networks typically require external network interface adapters for connection to certain general-purpose data ports or peripheral buses (1549) (e.g., a USB port on the computer system (1500); other systems are typically integrated into the core of the computer system (1500) via a system bus as described below (e.g., an Ethernet interface integrated into a PC computer system or a cellular network interface integrated into a smartphone computer system). By using any of these networks, the computer system (1500) can communicate with other entities. The communication can be unidirectional, used only for receiving (e.g., wireless television), unidirectional, used only for sending (e.g., CAN bus to certain CAN bus devices), or bidirectional, such as through a local area or wide area digital network to other computer systems. Each of the above networks and network interfaces can use certain protocols and protocol stacks.

[0155] The aforementioned human-computer interface device, human-accessible storage device, and network interface can be connected to the core (1540) of the computer system (1500).

[0156] The core (1540) may include at least one central processing unit (CPU) (1541), a graphics processing unit (GPU) (1542), a dedicated programmable processing unit in the form of a field-programmable gate array (FPGA) (1543), a task-specific hardware accelerator (1544), a graphics adapter (1550), etc. These devices, along with read-only memory (ROM) (1545), random access memory (1546), internal mass storage (e.g., internal non-user-accessible hard disk drives, solid-state drives, etc.) (1547), etc., may be connected via a system bus (1548). In some computer systems, the system bus (1548) may be accessed in the form of at least one physical connector to allow for expansion with additional CPUs, GPUs, etc. Peripheral devices may be directly attached to the core's system bus (1548) or connected via a peripheral bus (1549). In one example, a screen (1510) may be connected to the graphics adapter (1550). Peripheral bus architectures include external controller interfaces (PCI), universal serial buses (USB), etc.

[0157] The CPU (1541), GPU (1542), FPGA (1543), and accelerator (1544) can execute certain instructions, which, when combined, constitute the aforementioned computer code. This computer code can be stored in ROM (1545) or RAM (1546). Transient data can also be stored in RAM (1546), while permanent data can be stored, for example, in internal mass storage (1547). Fast storage and retrieval of any memory device can be achieved by using a cache memory, which can be closely associated with at least one CPU (1541), GPU (1542), mass storage (1547), ROM (1545), RAM (1546), etc.

[0158] The computer-readable storage medium may contain computer code for performing various computer-implemented operations. The medium and computer code may be specifically designed and constructed for the purposes of this application, or they may be media and code well-known and usable by those skilled in the art of computer software.

[0159] By way of example and not limitation, a computer system having an architecture (1500), particularly a core (1540), can provide, as a processor (including a CPU, GPU, FPGA, accelerator, etc.), the ability to execute software contained in at least one tangible computer-readable storage medium. Such a computer-readable storage medium can be a medium associated with the aforementioned user-accessible mass storage, as well as a specific memory of the non-volatile core (1540), such as an internal mass storage (1547) or ROM (1545). Software implementing various embodiments of this application can be stored in such a device and executed by the core (1540). Depending on specific needs, the computer-readable storage medium may include one or more storage devices or chips. The software can cause the core (1540), particularly the processor therein (including a CPU, GPU, FPGA, etc.), to execute a specific process or a specific portion of a specific process described herein, including defining data structures stored in RAM (1546) and modifying such data structures according to a software-defined process. Alternatively or as an alternative, the computer system may provide logic hardwired or otherwise incorporated into circuitry (e.g., an accelerator (1544)) that may replace or operate with the software to perform the specific process or a specific portion of the specific process described herein. Where appropriate, references to software may include logic, and vice versa. Where appropriate, references to computer-readable storage media may include circuitry storing software (such as an integrated circuit (IC)), circuitry containing execution logic, or both. This application includes any suitable combination of hardware and software.

[0160] The use of "at least one" in this application is intended to include any one or a combination of the elements. For example, a reference to at least one of A, B, or C; at least one of A, B, and C; at least one of A, B, and / or C; and at least one of A to C is intended to include only A, only B, only C, or any combination thereof.

[0161] While this application has described several exemplary embodiments, various modifications, arrangements, and equivalent substitutions of the embodiments are all within the scope of this application. Therefore, it should be understood that those skilled in the art can design various systems and methods that, although not explicitly shown or described herein, embody the principles of this application and are thus within its spirit and scope.

[0162] This application also includes the features described below. These features can be combined in various ways, and are not limited to the combinations mentioned below.

[0163] (1) A method for decoding connectivity information of a polygonal mesh, comprising: receiving encoded information of a plurality of vertices in the polygonal mesh; selecting an active vertex as a pivot vertex to be processed from a plurality of active vertices among the plurality of vertices, according to the priority of each active vertex, wherein the priority of the active vertex is based on one of the following: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex, wherein the active vertex is adjacent to at least one processed face and at least one unprocessed face, and each face fan includes one or more consecutive faces adjacent to the active vertex; and reconstructing the connectivity information of the polygonal mesh using the active vertex as the pivot vertex.

[0164] (2) The method according to feature (1), wherein the reconstruction of the connectivity information of the polygon mesh includes: reconstructing the connectivity information of the polygon mesh using a dual-degree-based polygon mesh compression method, wherein the dual-degree-based polygon mesh compression method uses a vertex degree sequence and a face degree sequence.

[0165] (3) The method according to feature (1) or (2), wherein the priority of the active vertex is based on the number of processed faces adjacent to the active vertex.

[0166] (4) The method according to feature (1) or (2), wherein the priority of the active vertex is based on the sum of the angles of each processed adjacent angle of the active vertex.

[0167] (5) The method according to feature (4), wherein the priority of the active vertex is based on the sum of the angles of each processed adjacent angle of the active vertex minus a constant.

[0168] (6) The method according to feature (1) or (2), wherein the priority of the active vertex is based on the number of unprocessed faces adjacent to the active vertex.

[0169] (7) The method according to feature (1) or (2), wherein the priority of the active vertex is based on the number of unprocessed face fans adjacent to the active vertex.

[0170] (8) The method according to feature (1), wherein the reconstruction of the connectivity information of the polygon mesh includes: reconstructing the connectivity information of the polygon mesh using a polygon fan-based polygon mesh compression method, wherein the polygon fan-based polygon mesh compression method uses a face degree sequence.

[0171] (9) The method according to feature (8), wherein the priority of the active vertex is based on the number of processed faces adjacent to the active vertex.

[0172] (10) The method according to feature (8), wherein the priority of the active vertex is based on the sum of the angles of each processed adjacent angle of the active vertex.

[0173] (11) The method according to feature (10), wherein the priority of the active vertex is based on the sum of the angles of each processed adjacent angle of the active vertex minus a constant.

[0174] (12) A method for encoding connectivity information of a polygonal mesh, comprising: selecting an active vertex as a pivot vertex to be processed from a plurality of active vertices among a plurality of vertices, according to the priority of each active vertex, the plurality of vertices being located in a polygonal mesh, the priority of the active vertex being based on one of the following: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex, the active vertex being adjacent to at least one processed face and at least one unprocessed face, each face fan comprising one or more consecutive faces adjacent to the active vertex; and encoding the connectivity information of the polygonal mesh using the active vertex as a pivot vertex.

[0175] (13) The method according to feature (12), wherein encoding the connectivity information of the polygonal mesh includes: encoding the connectivity information of the polygonal mesh using a dual-degree-based polygonal mesh compression method, wherein the dual-degree-based polygonal mesh compression method uses a vertex degree sequence and a face degree sequence.

[0176] (14) The method according to feature (12) or (13), wherein the priority of the active vertex is based on the number of processed faces adjacent to the active vertex.

[0177] (15) The method according to feature (12) or (13), wherein the priority of the active vertex is based on the sum of the angles of each processed adjacent angle of the active vertex.

[0178] (16) The method according to feature (12) or (13), wherein the priority of the active vertex is based on the number of unprocessed faces adjacent to the active vertex.

[0179] (17) The method according to feature (12) or (13), wherein the priority of the active vertex is based on the number of unprocessed face fans adjacent to the active vertex.

[0180] (18) The method according to feature (12), wherein encoding the connectivity information of the polygonal mesh includes: encoding the connectivity information of the polygonal mesh using a polygonal fan-based polygonal mesh compression method, wherein the polygonal fan-based polygonal mesh compression method uses a face degree sequence.

[0181] (19) The method according to feature (18), wherein the priority of the active vertex is based on the number of processed faces adjacent to the active vertex, or on the sum of the angles of each processed adjacent angle of the active vertex.

[0182] (20) A method for processing connectivity information of a polygonal mesh, comprising: processing a connectivity bitstream of the connectivity information of the polygonal mesh according to a format rule, wherein: the connectivity bitstream includes syntax elements indicating a plurality of vertices in the polygonal mesh; the format rule specifies that: from a plurality of active vertices among the plurality of vertices, an active vertex is selected as a pivot vertex to be processed according to the priority of each active vertex, the priority of the active vertex being based on one of the following: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex, the active vertex being adjacent to at least one processed face and at least one unprocessed face, each face fan including one or more consecutive faces adjacent to the active vertex; and reconstructing the connectivity information of the polygonal mesh using the active vertex as a pivot vertex.

[0183] (21) A video decoding apparatus comprising a processing circuit configured to perform a method of any one of features (1) to (11).

[0184] (22) A video encoding apparatus comprising a processing circuit configured to perform a method of any one of features (12) to (19).

[0185] (23) A non-volatile computer-readable storage medium storing instructions, which, when executed by at least one processor, cause the at least one processor to perform the method of any one of features (1) to (19).

Claims

1. A method for decoding connectivity information of a polygonal mesh, characterized in that, The method includes: Receive encoded information of multiple vertices in the polygonal mesh; From a plurality of active vertices among the plurality of vertices, an active vertex is selected as the pivot vertex to be processed according to the priority of each active vertex, the priority of the active vertex being based on one of the following: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex, the active vertex being adjacent to at least one processed face and at least one unprocessed face, each face fan comprising one or more consecutive faces adjacent to the active vertex; and, The connectivity information of the polygonal mesh is reconstructed using the active vertices as pivot vertices.

2. The method according to claim 1, characterized in that, The connectivity information of the reconstructed polygonal mesh includes: The connectivity information of the polygon mesh is reconstructed using a dual-degree-based polygon mesh compression method, which uses a sequence of vertex degree and a sequence of face degree.

3. The method according to claim 2, characterized in that, The priority of the active vertex is based on the number of processed faces adjacent to the active vertex.

4. The method according to claim 2, characterized in that, The priority of the active vertex is based on the sum of the angles of each processed adjacent angle of the active vertex.

5. The method according to claim 4, characterized in that, The priority of the active vertex is based on the sum of the angles of each processed adjacent angle of the active vertex minus a constant.

6. The method according to claim 2, characterized in that, The priority of the active vertex is based on the number of unprocessed faces adjacent to the active vertex.

7. The method according to claim 2, characterized in that, The priority of the active vertex is based on the number of unprocessed face fans adjacent to the active vertex.

8. The method according to claim 1, characterized in that, The connectivity information of the reconstructed polygonal mesh includes: The connectivity information of the polygon mesh is reconstructed using a polygon fan-based polygon mesh compression method that uses a sequence of face degree numbers.

9. The method according to claim 8, characterized in that, The priority of the active vertex is based on the number of processed faces adjacent to the active vertex.

10. The method according to claim 8, characterized in that, The priority of the active vertex is based on the sum of the angles of each processed adjacent angle of the active vertex.

11. The method according to claim 10, characterized in that, The priority of the active vertex is based on the sum of the angles of each processed adjacent angle of the active vertex minus a constant.

12. A method for encoding connectivity information of a polygonal mesh, characterized in that, The method includes: From a plurality of active vertices in a polygonal mesh, one active vertex is selected as the pivot vertex to be processed, based on the priority of each active vertex. The priority of the active vertex is based on one of the following: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex, wherein the active vertex is adjacent to at least one processed face and at least one unprocessed face, and each face fan includes one or more consecutive faces adjacent to the active vertex; and, The connectivity information of the polygonal mesh is encoded using the active vertices as pivot vertices.

13. The method according to claim 12, characterized in that, Encoding the connectivity information of the polygonal mesh includes: The connectivity information of the polygon mesh is encoded using a dual-degree-based polygon mesh compression method, which uses a vertex degree sequence and a face degree sequence.

14. The method according to claim 12, characterized in that, Encoding the connectivity information of the polygonal mesh includes: The connectivity information of the polygon mesh is encoded using a polygon fan-based polygon mesh compression method that uses a face degree sequence.

15. A method for processing connectivity information of a polygonal mesh, characterized in that, include: According to the format rules, the connectivity bitstream of the connectivity information of the polygonal mesh is processed, wherein: The connectivity bitstream includes syntax elements that indicate multiple vertices in the polygonal mesh; The formatting rules specify: From a plurality of active vertices among the plurality of vertices, an active vertex is selected as the pivot vertex to be processed according to the priority of each active vertex, the priority of the active vertex being based on one of the following: (i) the number of processed faces adjacent to the active vertex; (ii) the sum of the angles of each processed adjacent angle of the active vertex; (iii) the number of unprocessed faces adjacent to the active vertex; and (iv) the number of unprocessed face fans adjacent to the active vertex, the active vertex being adjacent to at least one processed face and at least one unprocessed face, each face fan comprising one or more consecutive faces adjacent to the active vertex; and, The connectivity information of the polygonal mesh is reconstructed using the active vertices as pivot vertices.