UV coordinate range and texture map size
By normalizing and expanding UV coordinates based on bit depth and texture map size, the method addresses the mismatch issues in MPEG V-Mesh™ v1.0, enhancing the efficiency of data storage and transmission for dynamic meshes.
Patent Information
- Application Number
- JP2024547908
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2023-06-09
- Filing Date
- 2023-06-13
- Publication Date
- 2026-01-13
- Estimated Expiration
- 2043-06-13
AI Technical Summary
Existing mesh compression standards, such as MPEG V-Mesh™ v1.0, do not effectively handle dynamic meshes with time-varying connectivity and attribute maps, leading to mismatches between decoded UV coordinate ranges and texture map sizes, which affects the efficiency of data storage and transmission.
The proposed method involves normalizing and expanding UV coordinates based on coefficients related to bit depth and texture map size to ensure alignment between decoded UV coordinate ranges and texture map sizes, using transformations like normalization and unfolding to adjust UV coordinates to match the texture map dimensions.
This approach ensures accurate reconstruction of meshes by aligning UV coordinate ranges with texture map sizes, improving the efficiency of data storage and transmission for dynamic meshes.
Smart Images

Figure 0007797676000001 
Figure 0007797676000002 
Figure 0007797676000003
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of priority to U.S. Patent Application No. 18 / 208,152, entitled "UV COORDINATE RANGES AND TEXTURE MAP SIZE," filed June 9, 2023, which in turn claims the benefit of priority to U.S. Provisional Application No. 63 / 400,361, entitled "On UV Coordinate Ranges and Texture Map Size," filed August 23, 2022. The disclosures of the prior applications are incorporated herein by reference in their entireties.
[0002] The present disclosure includes embodiments relating to mesh processing. [Background technology]
[0003] The background discussion provided herein is intended to generally present the context for the present disclosure. To the extent described in this background section, the inventors' work, as well as aspects of the description that may not be admitted as prior art at the time of filing, are not admitted expressly or implicitly as prior art to the present disclosure.
[0004] Advances in three-dimensional (3D) capture, modeling, and rendering are facilitating the ubiquitous presence of 3D content across various platforms and devices. Today, it is possible to film a baby's first steps on one continent, while the baby's grandparents on another continent watch (and potentially interact with) it, enjoying a fully immersive experience with the child. To achieve this sense of realism, models are becoming ever more sophisticated, and a significant amount of data is tied to the generation and consumption of these models. 3D meshes are widely used to represent such immersive content. Summary of the Invention [Means for solving the problem]
[0005] Aspects of the present disclosure provide methods and apparatus for mesh processing. In some examples, an apparatus for mesh processing includes a processing circuit.
[0006] According to one aspect of the present disclosure, a method of mesh processing implemented in a video decoder is provided. In the method, coding information for a mesh including a plurality of vertices is received. The coding information includes a plurality of first coordinates and a plurality of second coordinates corresponding to the plurality of vertices and a texture map associated with the mesh. The texture map indicates texture information for the mesh. Each vertex of the plurality of vertices includes a respective first coordinate and a respective second coordinate that, when combined, uniquely identify the position of each vertex. The respective first coordinates and respective second coordinates associated with each vertex are normalized by adjusting the respective first coordinates based on a first coefficient and adjusting the respective second coordinates based on a second coefficient. The first coefficient and the second coefficient are associated with at least one of (i) a bit depth value indicating a coded range of the first coordinates and second coordinates of the plurality of vertices and (ii) a size of the texture map. The respective normalized first coordinates and respective normalized second coordinates are expanded based on the first coefficient and the second coefficient, respectively. The mesh is reconstructed based on the normalized unfolded first coordinates and the normalized unfolded second coordinates of the vertices of the mesh.
[0007] In some embodiments, to normalize the respective first coordinates and the respective second coordinates, each of the first coordinates of the plurality of vertices is divided by a first divider included in the first coefficient. Each of the second coordinates of the plurality of vertices is divided by a second divisor included in the second coefficient. To expand the respective first coordinates and the respective second coordinates, each of the normalized first coordinates of the plurality of vertices is further multiplied by a first multiplier included in the first coefficient. Each of the normalized second coordinates of the plurality of vertices is further multiplied by a second multiplier included in the second coefficient.
[0008] In one embodiment, the first coefficient is (texwidth-1) / (2 tqp texwidth is the width of the texture map, and tqp is the bit depth value that indicates the coded range of the first and second coordinates of the vertices. The second coefficient is equal to (texheight-1) / (2 tqp -1), and texheight is the height of the texture map.
[0009] In one embodiment, the first coefficient is a first fraction, and each of the first coordinates is normalized by the denominator of the first fraction and expanded by the numerator of the first fraction, the second coefficient is a second fraction, and each of the second coordinates is normalized by the denominator of the second fraction and expanded by the numerator of the second fraction.
[0010] In one embodiment, based on the size of the unavailable texture map, both the first and second coefficients are (2 tdepth -1) / (2 tqp -1). tdepth is a bit depth value indicating the initial range of the first and second coordinates of the vertices. tqp is a bit depth value indicating the coded range of the first and second coordinates of the vertices.
[0011] In one embodiment, the first coefficient is (uMax / (2 tqp -1). uMax is a first constant, and tqp is a bit depth value that indicates the coded range of the first and second coordinates of the vertices. The second coefficient is (vMax / (2 tqp -1), and vMax is a second constant.
[0012] In one example, uMax is equal to the width of the texture map minus 1. vMax is equal to the height of the texture map minus 1.
[0013] In one example, based on the size of an unavailable texture map, both uMax and vMax are set to 2 tdepthis equal to minus 1. tdepth is a bit depth value that indicates the initial range of the first and second coordinates of the vertices.
[0014] In one example, both uMax and vMax are 2 tdepth is equal to minus 1. tdepth is a bit depth value that indicates the initial range of the first and second coordinates of the vertices.
[0015] According to another aspect of the present disclosure, there is provided an apparatus including a processing circuit, the processing circuit being configured to perform any of the described methods for mesh processing.
[0016] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer, cause the computer to perform any of the described methods for mesh processing.
[0017] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings. [Brief explanation of the drawings]
[0018] [Figure 1] FIG. 1 is a schematic diagram of an exemplary block diagram of a communication system (100). [Figure 2] FIG. 2 is a schematic diagram of an exemplary block diagram of a decoder. [Figure 3] FIG. 2 is a schematic diagram of an exemplary block diagram of an encoder. [Figure 4] 1A-1C are schematic diagrams of exemplary UV coordinate range operations according to some embodiments of the present disclosure. [Figure 5] 1 is a flowchart outlining a process according to some embodiments of the present disclosure. [Figure 6] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0019] 1 shows a block diagram of a video processing system (100) in some examples. The video processing system (100) is one example of an application for the disclosed subject matter, a video encoder and video decoder in a streaming environment. The disclosed subject matter may be equally applicable to other image and video-enabled applications, including, for example, video conferencing, digital TV, streaming services, and storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0020] The video processing system (100) includes a capture subsystem (113) that can include a video source (101). The video source (101) can include one or more images captured by a camera and / or generated by a computer. For example, a digital camera can create a stream of uncompressed video pictures (102). In one example, the stream of video pictures (102) includes samples taken by the digital camera. The stream of video pictures (102) is illustrated with a bold line to emphasize its large amount of data compared to the encoded video data (104) (or coded video bitstream), and can be processed by an electronic device (120) that includes a video encoder (103) coupled to the video source (101). The video encoder (103) can include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data (104) (or encoded video bitstream), shown with thin lines to emphasize its small amount of data compared to the stream of video pictures (102), may be stored on a streaming server (105) for future use. One or more streaming client subsystems, such as the client subsystems (106) and (108) of FIG. 1, can access the streaming server (105) to retrieve copies (107) and (109) of the encoded video data (104). The client subsystem (106) may include a video decoder (110), for example, within the electronic device (130). The video decoder (110) decodes the input copy of the encoded video data (107) and creates an output stream of video pictures (111), which can be rendered on a display (112) (e.g., a display screen) or other rendering device (not shown).In some streaming systems, the encoded video data (104), (107), and (109) (e.g., video bitstreams) may be encoded according to a particular video coding / compression standard. Examples of such standards include ITU-T Recommendation H.265. In one example, a video coding standard under development is informally known as Versatile Video Coding (VVC). The disclosed subject matter may be used in conjunction with VVC.
[0021] It should be noted that the electronic devices (120) and (130) may include other components (not shown). For example, the electronic device (120) may also include a video decoder (not shown), and the electronic device (130) may also include a video encoder (not shown).
[0022] 2 shows an example block diagram of a video decoder (210). The video decoder (210) may be included in an electronic device (230). The electronic device (230) may include a receiver (231). The receiver (231) may include receiving circuitry, such as a network interface circuit. The video decoder (210) may be used in place of the video decoder (110) in the example of FIG. 1.
[0023] The receiver (231) may receive one or more coded video sequences to be decoded by the video decoder (210). In one embodiment, one coded video sequence is received at a time, and the decoding of each coded video sequence is independent of the decoding of the other coded video sequences. The coded video sequences may be received from a channel (201), which may be a hardware / software link to a storage device that stores the encoded video data. The receiver (231) may also receive the encoded video data along with other data, such as coded audio data and / or auxiliary data streams, which may be forwarded to their respective using entities (not shown). The receiver (231) may separate the coded video sequences from the other data. To combat network jitter, a buffer memory (215) may be coupled between the receiver (231) and the entropy decoder / parser (220) (hereinafter, "parser (220)"). In certain applications, the buffer memory (215) is part of the video decoder (210). In other cases, the buffer memory (215) may be external to the video decoder (210) (not shown). In still other cases, there may be a buffer memory (not shown) external to the video decoder (210), e.g., to combat network jitter, plus another buffer memory (215) internal to the video decoder (210), e.g., to handle playout timing. When the receiver (231) receives data from a store / forward device of sufficient bandwidth and controllability or from an asynchronous network, the buffer memory (215) may be unnecessary or may be small. For use with best-effort packet networks such as the Internet, the buffer memory (215) may be necessary, may be relatively large, may advantageously be adaptively sized, and may be implemented at least in part in an operating system or similar element (not shown) external to the video decoder (210).
[0024] The video decoder (210) may include a parser (220) for reconstructing symbols (221) from the coded video sequence. These symbol categories potentially include information used to manage the operation of the video decoder (210) and information for controlling a rendering device, such as a render device (212) (e.g., a display screen) that is not an integral part of the electronic device (230) but may be coupled to the electronic device (230), as shown in FIG. 2. The control information for the rendering device may be in the form of a Supplemental Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (220) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow various principles, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (220) may extract from the coded video sequence a set of subgroup parameters for at least one subgroup of pixels in the video decoder based on at least one parameter corresponding to the group. A subgroup may include a Group of Pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. The parser (220) may also extract information from the coded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.
[0025] The parser (220) may perform entropy decoding / parsing operations on the video sequence received from the buffer memory (215) to create symbols (221).
[0026] The reconstruction of the symbols (221) can involve several different units, depending on the type of video picture or portion thereof being coded (inter-picture and intra-picture, inter-block and intra-block, etc.), as well as other factors. Which units are involved and how may be controlled by subgroup control information parsed from the coded video sequence by the parser (220). The flow of such subgroup control information between the parser (220) and the following units is not shown for clarity.
[0027] In addition to the functional blocks already described, the video decoder (210) may be conceptually subdivided into several functional units, as described below. In an actual implementation operating under commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is appropriate.
[0028] The first unit is a scalar / inverse transform unit (251), which receives quantized transform coefficients from the parser (220) as well as control information including which transform to use, block size, quantization coefficients, quantization scaling matrices, etc. as symbols (221). The scalar / inverse transform unit (251) can output blocks containing sample values that can be input to an aggregator (255).
[0029] In some cases, the output samples of the scaler / inverse transform unit (251) may relate to intra-coded blocks. Intra-coded blocks are blocks that do not use prediction information from a previously reconstructed picture but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by the intra-picture prediction unit (252). In some cases, the intra-picture prediction unit (252) generates a block of the same size and shape as the block being reconstructed using surrounding, already reconstructed information fetched from the current picture buffer (258). The current picture buffer (258), for example, buffers a partially reconstructed and / or fully reconstructed current picture. The aggregator (255) may add, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (252) to the output sample information provided by the scaler / inverse transform unit (251).
[0030] In other cases, the output samples of the scalar / inverse transform unit (251) may relate to an inter-coded, potentially motion-compensated block. In such cases, the motion-compensated prediction unit (253) may access a reference picture memory (257) to fetch samples used for prediction. After motion-compensating the fetched samples according to the symbols (221) associated with the block, these samples may be added by the aggregator (255) to the output of the scalar / inverse transform unit (251) (in this case, referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (257) from which the motion-compensated prediction unit (253) fetches prediction samples may be controlled by motion vectors available to the motion-compensated prediction unit (253) in the form of symbols (221), which may have, for example, X, Y, and reference picture components. Motion compensation may also include interpolation of sample values fetched from the reference picture memory (257) when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, and the like.
[0031] The output samples of the aggregator (255) can be subjected to various loop filtering techniques in a loop filter unit (256). Video compression techniques can include in-loop filtering techniques controlled by parameters contained in the coded video sequence (also called a coded video bitstream) and available to the loop filter unit (256) as symbols (221) from the parser (220). Video compression can also be responsive to meta-information obtained during decoding of a coded picture or previous portion (in decoding order) of the coded video sequence, and to previously reconstructed, loop-filtered sample values.
[0032] The output of the loop filter unit (256) may be a sample stream that may be output to a render device (212) and stored in a reference picture memory (257) for use in future inter-picture prediction.
[0033] Once a particular coded picture is fully reconstructed, it can be used as a reference picture for future prediction. For example, once a coded picture corresponding to a current picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (220)), the current picture buffer (258) can become part of the reference picture memory (257), and a new current picture buffer can be reallocated before beginning reconstruction of a subsequent coded picture.
[0034] The video decoder (210) can perform decoding operations according to a given video compression technology or standard, such as ITU-T Recommendation H.265. A coded video sequence may conform to the syntax specified by the video compression technology or standard being used, in the sense that the coded video sequence adheres to both the syntax of the video compression technology or standard and the profile documented in the video compression technology or standard. Specifically, a profile may select certain tools from among all tools available in the video compression technology or standard as the only tools available under that profile. Compliance may also require that the complexity of the coded video sequence be within a range defined by the level of the video compression technology or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level may, in some cases, be further constrained by the specification of a hypothetical reference decoder (HRD) and metadata for HRD buffer management signaled within the coded video sequence.
[0035] In one embodiment, the receiver (231) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder (210) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0036] 3 shows an example block diagram of a video encoder (303). The video encoder (303) is included in an electronic device (320). The electronic device (320) includes a transmitter (340) (e.g., a transmitting circuit). The video encoder (303) may be used in place of the video encoder (103) in the example of FIG. 1.
[0037] The video encoder (303) may receive video samples from a video source (301) (which is not part of the electronic device (320) in the example of FIG. 3) that may capture video images to be coded by the video encoder (303). In another example, the video source (301) is part of the electronic device (320).
[0038] The video source (301) may provide a source video sequence to be coded by the video encoder (303) in the form of a digital video sample stream, which may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCB, RGB, ...), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source (301) may be a storage device that stores previously prepared video. In a video conferencing system, the video source (301) may be a camera that captures local image information as a video sequence. The video data may be provided as multiple individual pictures that convey motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, each of which may contain one or more samples, depending on the sampling structure, color space, etc., in use. The following discussion focuses on samples.
[0039] According to one embodiment, the video encoder (303) may code and compress pictures of a source video sequence into a coded video sequence (343) in real time or under any other required time constraints. Enforcing an appropriate coding rate is one function of the controller (350). In some embodiments, the controller (350) controls and is operatively coupled to other functional units described below. Coupling is not shown for clarity. Parameters set by the controller (350) may include rate control-related parameters (picture skip, quantizer, lambda value for rate-distortion optimization techniques, ...), picture size, Group of Pictures (GOP) layout, maximum motion vector search range, etc. The controller (350) may be configured with other appropriate functions associated with the video encoder (303) optimized for a particular system design.
[0040] In some embodiments, the video encoder (303) is configured to operate in a coding loop. As an overly simplified explanation, in one example, the coding loop can include a source coder (330) (e.g., responsible for creating symbols, such as a symbol stream, based on an input picture to be coded and a reference picture) and a (local) decoder (333) embedded in the video encoder (303). The decoder (333) reconstructs the symbols to create sample data in a manner similar to that used by a (remote) decoder. The reconstructed sample stream (sample data) is input to a reference picture memory (334). Because decoding of the symbol stream produces bit-exact results regardless of the location of the decoder (local or remote), the contents of the reference picture memory (334) are also bit-exact between the local and remote encoders. In other words, the predictive portion of the encoder "sees" the exact same sample values as the decoder would "see" when using prediction during decoding. This basic principle of reference picture synchronization (the resulting drift when synchronization cannot be maintained due to, for example, channel errors) is also used in several related technologies.
[0041] The operation of the "local" decoder (333) may be the same as the operation of a "remote" decoder, such as the video decoder (210), already described in detail above in conjunction with Figure 2. However, with brief reference also to Figure 2, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder (345) and parser (220) may be lossless, the entropy decoding portion of the video decoder (210), including the buffer memory (215) and parser (220), may not be fully implemented in the local decoder (333).
[0042] In one embodiment, decoder technology, excluding analysis / entropy decoding, present in a decoder is present in the corresponding encoder in the same or substantially the same functional form. Therefore, the disclosed subject matter focuses on decoder operation. Descriptions of encoder technology may be omitted, as they are the reverse of the decoder technology described generically. In certain areas, more detailed descriptions are provided below.
[0043] In operation, in some examples, the source coder (330) may perform motion-compensated predictive coding, which predictively codes an input picture with reference to one or more previously coded pictures from a video sequence designated as “reference pictures.” In this manner, the coding engine (332) codes differences between pixel blocks of the input picture and pixel blocks of reference pictures that may be selected as predictive references for the input picture.
[0044] The local video decoder (333) may decode the coded video data of pictures that may be designated as reference pictures based on symbols created by the source coder (330). The operation of the coding engine (332) may advantageously be a lossy process. When the coded video data is decoded by a video decoder (not shown in FIG. 3), the reconstructed video sequence may typically be a copy of the source video sequence, with some errors. The local video decoder (333) may replicate the decoding process that may be performed by the video decoder on the reference pictures and store the reconstructed reference pictures in the reference picture memory (334). In this way, the video encoder (303) can locally store copies of reconstructed reference pictures that have common content with reconstructed reference pictures obtained by the far-end video decoder (without transmission errors).
[0045] The predictor (335) may perform a predictive search for the coding engine (332). That is, for a new picture to be coded, the predictor (335) may search the reference picture memory (334) for sample data (as candidate reference pixel blocks) or specific metadata, such as reference picture motion vectors, block shapes, etc., which may serve as appropriate prediction references for the new picture. The predictor (335) may operate on sample blocks, pixel block by pixel block, to find appropriate prediction references. In some cases, as determined by search results obtained by the predictor (335), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (334).
[0046] The controller (350) may manage the coding operations of the source coder (330), including, for example, setting the parameters and subgroup parameters used to encode the video data.
[0047] The output of all the aforementioned functional units may be entropy coded by an entropy coder (345), which converts the symbols produced by the various functional units into a coded video sequence by applying lossless compression to the symbols according to techniques such as Huffman coding, variable length coding, or arithmetic coding.
[0048] The transmitter (340) may buffer the coded video sequence created by the entropy coder (345) and prepare it for transmission over a communication channel (360), which may be a hardware / software link to a storage device that stores the encoded video data. The transmitter (340) may merge the coded video data from the video encoder (303) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0049] The controller (350) may manage the operation of the video encoder (303). During coding, the controller (350) may assign a particular coded picture type to each coded picture, which may affect the coding technique that may be applied to the respective picture. For example, pictures may often be assigned as one of the following picture types:
[0050] An intra-picture (I-picture) may be one that can be coded and decoded without using any other picture in a sequence as a source of prediction. Some video codecs allow different types of intra-pictures, including, for example, independent decoder refresh ("IDR") pictures. Those skilled in the art are aware of these variations of I-pictures and their respective uses and characteristics.
[0051] A predictive picture (P picture) may be coded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict the sample values of each block.
[0052] Bidirectionally predicted pictures (B pictures) may be coded and decoded using intra- or inter-prediction, which uses up to two motion vectors and reference indices to predict the sample values of each block. Similarly, multi-predicted pictures can use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0053] A source picture is generally spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and may be coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks determined by the coding assignment applied to the block's respective picture. For example, blocks of an I-picture may be non-predictively coded or predictively coded with reference to already coded blocks of the same picture (spatial prediction or intra-prediction). Pixel blocks of a P-picture may be predictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Blocks of a B-picture may be predictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.
[0054] The video encoder (303) may perform coding operations in accordance with a predetermined video coding technique or standard, such as ITU-T Recommendation H.265. In doing so, the video encoder (303) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard being used.
[0055] In one embodiment, the transmitter (340) may transmit additional data along with the encoded video. The source coder (330) may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.
[0056] Video may be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlation within a given picture, while inter-picture prediction exploits correlation (temporal or other) between pictures. In one example, a particular picture being encoded / decoded, called the current picture, is divided into blocks. If a block in the current picture is similar to a reference block in a previously coded and still buffered reference picture in the video, the block in the current picture may be coded by a vector called a motion vector. The motion vector points to a reference block within the reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.
[0057] In some embodiments, a bi-prediction technique may be used in inter-picture prediction. According to the bi-prediction technique, two reference pictures, such as a first reference picture and a second reference picture, are used, both of which are before the decoding order of the current picture in the video (but the display order may be past and future, respectively). A block in the current picture may be coded by a first motion vector pointing to a first reference block in the first reference picture and a second motion vector pointing to a second reference block in the second reference picture. A block may be predicted by a combination of the first reference block and the second reference block.
[0058] Furthermore, merge mode techniques may be used in inter-picture prediction to improve coding efficiency.
[0059] According to some embodiments of the present disclosure, predictions such as inter-picture prediction and intra-picture prediction are performed in units of blocks, such as polygonal or triangular blocks. For example, according to the HEVC standard, pictures in a sequence of video pictures are divided into coding tree units (CTUs) for compression, and the CTUs within a picture have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Generally, a CTU includes three coding tree blocks (CTBs), one luma CTB and two chroma CTBs. Each CTU may be recursively quadtree-decomposed into one or more coding units (CUs). For example, a 64x64 pixel CTU can be divided into one CU of 64x64 pixels, four CUs of 32x32 pixels, or 16 CUs of 16x16 pixels. In one example, each CU is analyzed to determine a prediction type for the CU, such as an inter-prediction type or an intra-prediction type. A CU is divided into one or more prediction units (PUs) according to temporal predictability and / or spatial predictability. Generally, each PU includes one luma prediction block (PB) and two chroma PBs. In one embodiment, prediction operations in coding (encoding / decoding) are performed in units of prediction blocks. Using a luma prediction block as an example of a prediction block, the prediction block includes a matrix of values (e.g., luma values) for pixels of 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.
[0060] It should be noted that the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using any suitable technique. In one embodiment, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more integrated circuits. In another embodiment, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more processors executing software instructions.
[0061] This disclosure includes embodiments related to methods and systems for manipulating UV coordinate ranges and texture map sizes.
[0062] A mesh can include several polygons that describe the surface of a volumetric object. Each polygon of a mesh can be defined by the vertices of the corresponding polygon in three-dimensional (3D) space and information about how the vertices are connected, sometimes referred to as connectivity information. In some embodiments, vertex attributes such as color, normals, etc. can be associated with mesh vertices. Attributes (or vertex attributes) can also be associated with the surface of a mesh by utilizing mapping information that parameterizes the mesh with a two-dimensional (2D) attribute map. Such mapping can typically be described by a set of parametric coordinates, called UV coordinates or texture coordinates, associated with the mesh vertices. 2D attribute maps can be used to store high-resolution attribute information such as texture, normals, and displacement. Such information can be used for various purposes, such as texture mapping and shading.
[0063] Dynamic meshes can contain a significant amount of information that changes over time, so dynamic mesh sequences can require large amounts of data. Therefore, efficient compression techniques are needed to store and transmit such content. Mesh compression standards, such as IC, MESHGRID, and FAMC, were previously developed by MPEG to address dynamic meshes with constant connectivity, time-varying geometry, and vertex attributes. However, these standards may not consider time-varying attribute maps and connectivity information. Digital content generation (DCC) tools typically generate such dynamic meshes. However, volumetric acquisition techniques can have difficulty generating constant connectivity dynamic meshes, especially under real-time constraints. This type of content (e.g., constant connectivity dynamic meshes) may not be supported by existing standards. MPEG plans to develop a new mesh compression standard to directly handle dynamic meshes with time-varying connectivity information and, optionally, time-varying attribute maps. The new mesh compression standard targets lossy and lossless compression for various applications, such as real-time communication, storage, free-viewpoint video, augmented reality (AR), and virtual reality (VR). Features such as random access and scalable / progressive coding can also be considered.
[0064] In UV mapping, each 3D surface can be mapped to a 2D texture: the UV coordinates (e.g., a pair of U and V coordinates) give the location of the 3D point within the 2D texture map.
[0065] In related video codecs such as MPEG V-Mesh™ v1.0, a source mesh (e.g., an input mesh or original mesh) can include a source position, source UV coordinates, source connectivity, and a source texture map. The source UV coordinates (or source U and V coordinates) can include multiple UV coordinates. Each of the multiple UV coordinates can include a respective pair of U and V coordinates. The range of the source U and V coordinates can be specified by the value tdepth, which is the bit depth of the source U and V coordinates. For example, if tdepth=13, then both the source U and V coordinates are in the range [0,2 13 The source texture map can have a size of swidth and sheight, where swidth is the width of the source texture map and sheight is the height of the source texture map. For example, if swidth=8192, sheight=8192, the source texture map can have a size of 8192x8192.
[0066] In an encoding process based on a video codec such as MPEG V-Mesh™ v1.0, the U and V coordinates may be encoded using a bit depth value of tqp. Thus, tqp may indicate the encoded range of the U and V coordinates, and tdepth may indicate the original (or initial) range of the U and V coordinates. tqp may be the same as or different from tdepth. In one example, when tqp=10, both the U and V coordinates are in the range [0,2 10 The texture map can be encoded in the range [texwidth - 1], which is [0, 1023]. The texture map can be encoded to the size of texwidth and texheight. For example, if texwidth = 2048 and texheight = 1536, the texture map can be encoded to the size of 2048 x 1536.
[0067] In a decoding process based on a video codec such as MPEG V-Mesh™ v1.0, the decoded texture map may have a size of texwidth and texheight. For U and V coordinates, if the U and V coordinates are in the range [0,2 tqp After being decoded into the range [0, 2 -1], the U and V coordinates can undergo two transformations, which can be shown in Figure 4. As shown in Figure 4, the encoded U and V coordinates are decoded into the range [0, 2 -1] in step (S402). tqp In step (S404), a first transformation, such as a normalization process, can be applied to the decoded U and V coordinates. In the normalization process, both the U and V coordinates are normalized to a range of (2 tqp After the first transformation, both the U and V coordinates can have a range of [0, 1]. In step (S406), a second transformation, such as an unfolding process, can be applied to the U and V coordinates. In the unfolding process, the U and V coordinates can be divided by a first factor, such as (2 tdepth After the second transformation, both the U and V coordinates are in the range [0,2 - 1], which matches the range of the source U and V coordinates. tdepth The range can be [-1].
[0068] In related video codecs, such as MPEG V-Mesh™ v1.0, the decoded UV coordinate range and the decoded texture map size may not match. In the example above, when tqp=10, texwdith=2048, and texheight=1536, the decoded texture map may have a size of 2048×1536, and the decoded UV coordinates may have a range of 1024×1024. Therefore, the size of the decoded texture map may differ from the range of the decoded UV coordinates. Additionally, two transformations (e.g., normalization and expansion shown in FIG. 4) applied to the UV coordinates at the decoder side may be unified into one transformation.
[0069] This disclosure provides methods and systems for manipulating (or adjusting) the range of UV coordinates and the size of texture maps. The proposed methods can be used separately or combined in any order. Furthermore, each of the methods (or embodiments), encoders, and decoders 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 on a non-transitory computer-readable medium.
[0070] The UV coordinates may include a pair of U and V coordinates. The UV coordinates may indicate the location of a 3D position (e.g., a vertex) within a 2D texture map. In the present disclosure, the UV coordinates may be manipulated (or adjusted) at the decoder side to match the texture map size. For example, each of the U coordinates may be adjusted based on a first coefficient, and each of the V coordinates may be adjusted based on a second coefficient. The first and second coefficients may be predetermined based on at least one of: (i) a bit depth value (e.g., tqp) indicating a coded range of the first and second coordinates of the plurality of vertices; or (ii) a size of the texture map (e.g., texwidth and / or texheight).
[0071] In one embodiment, the UV coordinates, including the U and V coordinates, can be expanded based on the decoded texture map size. For example, after the UV coordinates are decoded, both the U and V coordinates are in the range [0,2 tqp -1], and tqp is the bit depth of the UV coordinates during encoding. UV coordinates can undergo two further transformations: (1) Normalization: The first transformation can be a normalization process. Based on the normalization process, both the U coordinate and the V coordinate are normalized by (2 tqp -1). Therefore, each of the U coordinates can be divided by (2 tqp-1), and each of the V coordinates can be divided by (2 tqp After the normalization process is performed, the range of the U coordinate and the range of the V coordinate can be adjusted as [0,1]. (2) Unfolding: The second transformation can be an unfolding process. For example, each U coordinate can be multiplied by (texwidth-1), and each V coordinate can be multiplied by (texheight-1), respectively, where texwidth is the width of the decoded texture map, and texheight is the height of the decoded texture map. In one example, texwidth=2048 and texheight=1536. This allows each U coordinate to be multiplied by 2047, and each V coordinate to be multiplied by 1535. Therefore, the range of the U coordinate is [0, 2047], the range of the V coordinate is [0, 1535], and the range of the UV coordinate is 2048x1536, which matches the decoded texture map size of 2048x1536.
[0072] In one embodiment, two transformations, such as normalization and unfolding, can be combined into a unified transformation. For example, after the UV coordinates are decoded, both the U and V coordinates are in the range [0,2 tqp -1], and tqp is the bit depth of the UV coordinates during encoding. A unified transformation can be applied to the UV coordinates as follows: Transformation: Each U coordinate is (texwidth-1) / (2 tqp -1), each of the V coordinates can be multiplied by a scalar of (texheight-1) / (2 tqp The texwidth and texheight are the width and height of the decoded texture map, respectively. After conversion, the size of the decoded texture map size can match the range of the decoded UV coordinates.
[0073] In one embodiment, if the texture map size is not available at the decoder side, a unified transformation can be applied. For example, the texture map size may not be available for texture replacement applications. In one example, after the UV coordinates are decoded, both the U and V coordinates are in the range [0,2 tqp -1], and tqp is the bit depth of the UV coordinates during encoding. The unification transformation can be applied as follows: Transformation: Each of the U coordinates is (2 tdepth -1) / (2 tqp -1), each of the V coordinates can be multiplied by a scalar (2 tdepth -1) / (2 tqp -1), where tdepth is the bit depth of the source U and V coordinates. After the transformation, both the range of the U coordinates and the range of the V coordinates are in the range [0,2 tdepth -1].
[0074] In one embodiment, a uniform transformation can be applied to expand (or adjust) the range of the UV coordinates. In one example, after the UV coordinates are decoded, both the U and V coordinates are in the range [0,2 tqp -1], and tqp is the bit depth of the UV coordinates during encoding. The range of UV coordinates can be adjusted based on the unification transformation as follows: Transformation: Each of the U coordinates is (uMax / (2 tqp Each V coordinate can be multiplied by a scalar (vMax / (2 -1)). tqp -1), and uMax and vMax are two values that define the range of the UV coordinates. After the transformation, U coordinates can be in the range [0,uMax] and V coordinates can be in the range [0,vMax].
[0075] In one embodiment, the values of uMax and vMax may be set adaptively, for example, the values of uMax and vMax may be predetermined constants.
[0076] In one embodiment, the values of uMax and vMax can be set based on the texture map size if the texture map size is available on the decoder side. If the width and height of the texture map are represented as texwidth and texheight, respectively, the values of uMax and vMax can be set as uMax=texwidth-1 and vMax=texheight-1.
[0077] In one embodiment, the values of uMax and vMax can be set based on the source UV coordinate bit depth (e.g., tdepth) if the texture map size is not available on the decoder side. If the bit depth of the source U and V coordinates is expressed as Tdepth, the values of uMax and vMax are: uMax=2 tdepth -1, and vMax=2 tdepth Can be set as -1.
[0078] In one embodiment, the values of uMax and vMax can be set based on the source UV coordinate bit depth (e.g., tdepth), regardless of whether the texture map size is available. For example, the values of uMax and vMax can be set as follows: uMax=2 tdepth -1, and vMax=2 tdepth It can be set as -1, and tdepth indicates the bit depth of the source U and V coordinates.
[0079] 5 shows a flowchart outlining a process (500) according to one embodiment of the present disclosure. The process (500) can be used in a decoder, such as a video decoder. In various embodiments, the process (500) is performed by a processing circuit, such as a processing circuit that performs the functions of the video decoder (110), a processing circuit that performs the functions of the video decoder (210), or the like. In some embodiments, the process (500) is implemented by software instructions, such that the processing circuit performs the process (500) when it executes the software instructions. The process begins at (S501) and proceeds to (S510).
[0080] At (S510), coding information for a mesh including a plurality of vertices is received. The coding information includes a plurality of first coordinates and a plurality of second coordinates corresponding to the plurality of vertices and a texture map associated with the mesh. The texture map indicates texture information for the mesh. Each vertex of the plurality of vertices includes a respective first coordinate and a respective second coordinate that, in combination, uniquely identify a position of each vertex.
[0081] At (S520), each first coordinate and each second coordinate associated with each vertex is normalized by adjusting each first coordinate based on a first coefficient and adjusting each second coordinate based on a second coefficient, the first coefficient and the second coefficient being associated with at least one of (i) a bit depth value indicating a coded range of the first coordinates and the second coordinates of the plurality of vertices, and (ii) a size of a texture map.
[0082] In (S720), each of the normalized first coordinates and each of the normalized second coordinates are expanded based on the first coefficient and the second coefficient, respectively.
[0083] At (S730), the mesh is reconstructed based on the normalized unfolded first coordinates and the normalized unfolded second coordinates of the vertices of the mesh.
[0084] In some embodiments, to normalize the respective first coordinates and the respective second coordinates, each of the first coordinates of the plurality of vertices is divided by a first divisor included in the first coefficient. Each of the second coordinates of the plurality of vertices is divided by a second divisor included in the second coefficient. To expand the respective first coordinates and the respective second coordinates, each of the normalized first coordinates of the plurality of vertices is further multiplied by a first multiplier included in the first coefficient. Each of the normalized second coordinates of the plurality of vertices is further multiplied by a second multiplier included in the second coefficient.
[0085] In one embodiment, the first coefficient is (texwidth-1) / (2 tqp texwidth is the width of the texture map, and tqp is the bit depth value that indicates the coded range of the first and second coordinates of the vertices. The second coefficient is equal to (texheight-1) / (2 tqp -1), and texheight is the height of the texture map.
[0086] In one embodiment, the first coefficient is a first fraction, and each of the first coordinates is normalized by the denominator of the first fraction and expanded by the numerator of the first fraction, the second coefficient is a second fraction, and each of the second coordinates is normalized by the denominator of the second fraction and expanded by the numerator of the second fraction.
[0087] In one embodiment, based on the size of the unavailable texture map, both the first and second coefficients are (2 tdepth -1) / (2 tqp -1). tdepth is a bit depth value indicating the initial range of the first and second coordinates of the vertices. tqp is a bit depth value indicating the coded range of the first and second coordinates of the vertices.
[0088] In one embodiment, the first coefficient is (uMax / (2 tqp -1). uMax is a first constant, and tqp is a bit depth value that indicates the coded range of the first and second coordinates of the vertices. The second coefficient is (vMax / (2 tqp -1), and vMax is a second constant.
[0089] In one example, uMax is equal to the width of the texture map minus 1. vMax is equal to the height of the texture map minus 1.
[0090] In one example, based on the size of an unavailable texture map, both uMax and vMax are set to 2tdepth is equal to minus 1. tdepth is a bit depth value that indicates the initial range of the first and second coordinates of the vertices.
[0091] In one example, both uMax and vMax are 2 tdepth is equal to minus 1. tdepth is a bit depth value that indicates the initial range of the first and second coordinates of the vertices.
[0092] The process then proceeds to (S599) and ends.
[0093] The process (500) may be adapted as appropriate. Steps of the process (500) may be modified and / or omitted. Additional steps may be added. Any suitable order of performance may be used.
[0094] The techniques described above can be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, Figure 6 illustrates a computer system (600) suitable for implementing certain embodiments of the disclosed subject matter.
[0095] Computer software may be coded using any suitable machine code or computer language that can undergo mechanisms such as assembly, compilation, linking, etc. to produce code containing instructions that can be executed directly by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or that can be executed via interpretation, microcode execution, etc.
[0096] The instructions may be executed on various types of computers or computer components including, for example, personal computers, tablet computers, servers, smartphones, gaming consoles, Internet of Things devices, and the like.
[0097] 6 for computer system (600) are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure. The arrangement of components should not be construed as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system (600).
[0098] The computer system (600) may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users via, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), or olfactory input (not shown). The human interface devices may also be used to capture certain media not necessarily directly associated with conscious human input, such as audio (e.g., voice, music, ambient sounds), images (e.g., scanned images, photographic images, still image captured from a camera), and video (e.g., two-dimensional video, three-dimensional video, including stereoscopic video).
[0099] The input human interface devices may include one or more (only one of each is shown) of a keyboard (601), a mouse (602), a trackpad (603), a touchscreen (610), a data glove (not shown), a joystick (605), a microphone (606), a scanner (607), and a camera (608).
[0100] The computer system (600) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen (610), data gloves (not shown), or joystick (605), although some haptic feedback devices may not function as input devices), audio output devices (such as speakers (609), headphones (not shown)), visual output devices (such as screens (610) including CRT screens, LCD screens, plasma screens, and OLED screens (each with or without touchscreen input capability, each with or without haptic feedback capability, some of which may be capable of outputting two-dimensional visual output or output in more than three dimensions by means of stereographic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0101] The computer system (600) may also include human-accessible storage devices and associated media, such as optical media including CD / DVD ROM / RW (620) along with CD / DVD or similar media (621), thumb drives (622), removable hard drives or solid state drives (623), legacy magnetic media such as tape and floppy disks (not shown), and dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown).
[0102] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter of this disclosure does not encompass transmission media, carrier waves, or other transitory signals.
[0103] The computer system (600) also includes an interface (654) to one or more communication networks (655). The networks can be, for example, wireless, wired, or optical. The networks can further be local, wide-area, metropolitan, vehicular, industrial, real-time, delay-tolerant, and the like. Examples of networks include local area networks such as Ethernet and wireless LAN; cellular networks including GSM, 3G, 4G, 5G, LTE, and the like; TV wired or wireless wide-area digital networks including cable TV, satellite TV, and terrestrial broadcast TV; and vehicular and industrial networks including CAN Bus. Certain networks generally require an external network interface adapter attached to a particular general-purpose data port or peripheral bus (649) (e.g., a USB port on the computer system (600)); others are generally integrated into the core of the computer system (600) by attachment to a system bus, as described below (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (600) can communicate with other entities. Such communications may be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., CANbus to a particular CANbus device), or two-way, for example, to other computer systems using local or wide area digital networks. Specific protocols and protocol stacks may be used with each of these networks and network interfaces, as described above.
[0104] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be connected to the core (640) of the computer system (600).
[0105] The core (640) may include one or more central processing units (CPUs) (641), graphics processing units (GPUs) (642), dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) (643), task-specific hardware accelerators (644), graphics adapters (650), etc. These devices may be connected via a system bus (648), along with read-only memory (ROM) (645), random access memory (646), and internal mass storage (647) such as a non-user-accessible internal hard drive or SSD. In some computer systems, the system bus (648) may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus (648) or via a peripheral bus (649). In one example, a screen (610) may be connected to the graphics adapter (650). Architectures for peripheral buses include PCI, USB, etc.
[0106] The CPU (641), GPU (642), FPGA (643), and accelerator (644) can execute specific instructions that, in combination, can constitute the aforementioned computer code. The computer code can be stored in ROM (645) or RAM (646). Temporary data can also be stored in RAM (646), while persistent data can be stored, for example, in internal mass storage (647). Rapid storage and retrieval from any of the memory devices can be enabled through the use of cache memory, which can be closely associated with one or more of the CPU (641), GPU (642), mass storage (647), ROM (645), RAM (646), etc.
[0107] The computer-readable medium may bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.
[0108] By way of example and not limitation, a computer system (600) having the architecture, and specifically the core (640), can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be the user-accessible mass storage introduced above, as well as media associated with specific storage of the core (640) that is non-transitory in nature, such as the core's internal mass storage (647) or ROM (645). Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (640). The computer-readable media can include one or more memory devices or chips, depending on particular needs. The software can cause the core (640), and specifically the processor (including a CPU, GPU, FPGA, etc.) therein, to perform particular processes or particular portions of particular processes described herein, including defining data structures stored in RAM (646) and modifying such data structures according to the software-defined processes. Additionally or alternatively, the computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator (644)), which may operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. References to software may, where appropriate, encompass logic, and vice versa. References to computer-readable media may, where appropriate, encompass circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both. The present disclosure encompasses any suitable combination of hardware and software.
[0109] The use of "at least one of" or "one of" in this disclosure is intended to include any one or combination of the listed elements. For example, reference to at least one of A, B, or C, i.e., at least one of A, B, and C, at least one of A, B, and / or C, and at least one of A through C, is intended to include A only, B only, C only, or any combination thereof. Reference to one of A or B and one of A and B is intended to include A or B or (A and B). The use of "one of" does not exclude any combination of the listed elements where applicable, such as when the elements are not mutually exclusive.
[0110] While this disclosure describes several exemplary embodiments, there are alterations, permutations, and various substitute equivalents that fall within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within the spirit and scope of the present disclosure. [Explanation of symbols]
[0111] 100 Communication system, video processing system, 101 Video source, 102 Stream of video pictures, 103 Video encoder, 104 Encoded video data, 105 Streaming server, 106 Client subsystem, 107 Copy of encoded video data, Encoded video data, 108 Client subsystem, 109 Copy of encoded video data, Encoded video data, 110 Video decoder, 111 Output stream of video pictures, 112 Display, 113 Capture subsystem, 120 Electronic device, 130 Electronic device, 201 Channel, 210 Video decoder, 212 Render device, 215 Buffer memory, 220 Parser, 221 Symbol, 230 Electronic device, 231 Receiver, 251 Scaler / inverse transform unit, 252 Intra-picture prediction unit, 253 Motion compensation prediction unit, 255 Aggregator, 256 Loop filter unit, 257 Reference picture memory, 258 Current picture buffer, 301 Video source, 303 Video encoder, 320 Electronic device, 330 Source coder, 332 Coding engine, 333 Local video decoder, 334 Reference picture memory, 335 Predictor, 340 Transmitter, 343 Video sequence, 345 Entropy coder, 350 Controller, 360 Communication channel, 500 Process, 600 Computer system, 601 Keyboard, 602 Mouse, 603 Trackpad, 605 Joystick, 606 Microphone, 607 Scanner, 608 Camera, 609 Speaker, 610 Touchscreen, 620 CD / DVD ROM / RW, 621 CD / DVD or similar medium, 622 Thumb drive, 623 Removable hard drive or solid state drive, 640 Core, 641 Central processing unit (CPU), 642 Graphics Processing Unit (GPU), 643 Field Programmable Gate Array (FPGA), 644 Hardware Accelerator, 645 Read-Only Memory (ROM), 646 Random Access Memory (RAM), 647 Internal Mass Storage, 648System bus, 649 Peripheral bus, 650 Graphics adapter, 654 Interface, 655 Communication network
Claims
1. A method of mesh processing performed by a decoder, comprising: receiving coding information for a mesh including a plurality of vertices, the coding information including a plurality of first coordinates and a plurality of second coordinates corresponding to the plurality of vertices and a texture map associated with the mesh, the texture map indicating texture information for the mesh, each vertex of the plurality of vertices including a respective first coordinate and a respective second coordinate that, in combination, uniquely identify a position of each vertex; normalizing each first coordinate and each second coordinate associated with each vertex by adjusting the respective first coordinate based on a first coefficient and adjusting the respective second coordinate based on a second coefficient, the first coefficient and the second coefficient being associated with (i) a bit depth value indicating a coded range of the first coordinates and the second coordinates of the vertices and (ii) a size of the texture map, the first coefficient being equal to (texwidth-1) / (2tqp-1), where texwidth is the width of the texture map, tqp is the bit depth value indicating the coded range of the first coordinates and the second coordinates of the vertices, and the second coefficient being equal to (texheight-1) / (2tqp-1), where texheight is the height of the texture map; expanding the respective normalized first coordinates and the respective normalized second coordinates based on the first coefficients and the second coefficients, respectively; reconstructing the mesh based on the normalized unfolded first coordinates and the normalized unfolded second coordinates of the plurality of vertices of the mesh; A method comprising:
2. The normalizing step comprises: normalizing each of the first coordinates of the plurality of vertices by a first divisor included in the first coefficient; normalizing each of the second coordinates of the plurality of vertices by a second divisor included in the second coefficient; further comprising The step of expanding comprises: multiplying each of the normalized first coordinates of the plurality of vertices by a first multiplier included in the first coefficient to expand the normalized first coordinates; multiplying each of the normalized second coordinates of the plurality of vertices by a second multiplier included in the second coefficient to expand the normalized second coordinates; further comprising: The method of claim 1.
3. the first coefficient is a first fraction, and each of the first coordinates is normalized by the denominator of the first fraction and expanded by the numerator of the first fraction; the second coefficient is a second fraction, and each of the second coordinates is normalized by the denominator of the second fraction and expanded by the numerator of the second fraction; The method of claim 1.
4. based on the size of the unavailable texture map; Both the first coefficient and the second coefficient are (2 tdepth -1) / (2 tqp −1), where tdepth is a bit depth value indicating an initial range of the first coordinates and the second coordinates of the plurality of vertices, and tqp is the bit depth value indicating the coded range of the first coordinates and the second coordinates of the plurality of vertices. The method of claim 1.
5. The first coefficient is (uMax / (2 tqp −1), wherein uMax is a first constant, and tqp is the bit depth value indicating the coded range of the first coordinate and the second coordinate of the plurality of vertices; The second coefficient is (vMax / (2 tqp −1), wherein vMax is a second constant. The method of claim 1.
6. said uMax is equal to the width of said texture map minus one; said vMax being equal to the height of said texture map minus one; The method of claim 5.
7. based on the size of the unavailable texture map; Both the uMax and the vMax are 2 tdepth minus 1, wherein tdepth is a bit depth value indicating an initial range of the first coordinate and the second coordinate of the plurality of vertices. The method of claim 5.
8. Both the uMax and the vMax are 2 tdepth 6. The method of claim 5, wherein tdepth is equal to minus 1, where tdepth is a bit depth value indicating an initial range of the first coordinates and the second coordinates of the plurality of vertices.
9. Apparatus configured to perform the method according to any one of claims 1 to 8.
10. A computer program product for causing at least one processor to carry out the method according to any one of claims 1 to 8.
Citation Information
Patent Citations
Generating device and method of scene description, object extracting method and recording medium
JP2000358192A
Recirculating shade tree blender for graphics system
JP2002063590A
Compression of time-dependent geometry
JP2002517851A
Texture Coordinate Encoding and Decoding Method of 3D Mesh Information for Effective Texture Mapping
JP2008527787A
A decoder-centric UV codec for free-viewpoint video streaming
JP2020513703A